Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 海阔视界规则分享,当前分享的是:网页插件¥js_url¥global_全网VIP视频破解去广告免费看+全网音乐下载+知乎增强+短视频无@base64://Ly8gPT1Vc2VyU2NyaXB0PT0KLy8gQG5hbWUgICAgICAgICDwn5KvIOaHkuS6uuS4k+eUqOezu+WIlyDigJTigJTigJQg566A5rSB5a6J5YWo55qE55yB6ZKx5Yqp5omLCi8vIEBuYW1lc3BhY2UgICAgbHItdG9vbGJveC1TUEhlbHBlcgovLyBAdmVyc2lvbiAgICAgIDEuMAovLyBAZGVzY3JpcHRpb24gIOKtleiHquWKqOaYvuekuua3mOWuneOAgeWkqeeMq+OAgeWkqeeMq+i2heW4guOAgeWkqeeMq+WbvemZheOAgeS6rOS4nOOAgeS6rOS4nOWbvemZheeahOmakOiXj+S8mOaDoOWIuOOAguKtlea3mOWunea3u+WKoOWLvumAieS7heaYvuekuua3mOWuneWVhuWTgeS4jeaYvuekuuWkqeeMq+WVhuWTgeetiei0reeJqeWinuW8uuWKn+iDveOAguKdjOaLkue7neS7u+S9leW5suaJsOOAguKdjOaLkue7neW8uuWItui3s+i9rOOAguKtleaMgee7reabtOaWsOOAggovLyBAYXV0aG9yICAgICAgIGxhbmhhaGEKLy8gQGljb24gICAgICAgICBkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUdRQUFBQmtDQVlBQUFCdzRwVlVBQUFROEVsRVFWUjRYdTFkQ1hRVVJScithcElRVDF3UXc2RVlCY1NFckNnS0NvUW93b29jTGlyS2VvQW9MRDV4MllEdStoVENQbmRkSmVDNUN0NmdJQnRkbFVNUXhBUEU5NWdNS2tiaG9XR0NLTWdwc1BqVW9Fc0lrTnIzVGFkaE11bWVxZTZ1bmdSSThTQkFWOWZ4Zi9XZjlWZVhnSWNpcGN6eThQcFIvYW9Rb3N6TkJJV1RsNlNVdlFBTUFIQUpnRmJZc1NzZEg1ZTB3aWNsd01wVndLN2RUcG83ZXVwbU5BTzZkUWE2ZERKK3RzallDR0FMZ0dJQTd3b2grRk9wS0FNaTkrMjdHWTBhRGNTVzdkM3h5dXN0RUNwSncyYjIyVkJxVVNDek5aQjN5VDZNdUdrcm1tY3NSMlhsSXBHZVBrK0ZVa3FBeUc4Mi9CbW50N3dXejg2OEFDKzkybFNsNFlZNkFOSWJBYmZjc0F0M0RpdkJ0dS9uaTNadHBpV2lTMXhBNUE4L2RNZTg5d2FnN1ZsOThlRGo1MkxucmhNVE5kanczSUlDelU4cngvMzNyTVdHRFlzeHNPOWljZHBwbjl2UnlSWVF1WHYzSUtTa0RNQ2txVDJ4OElQVElaRGVRR3dQRkpDeUFnT3YvQTczNVMvRmZyRlFOUC9OQjFhdFdRSWlmOTQ3QlBzckJtUFVYN3VqOU91bUVFanhNSlNHVjAwS1NIa0FPZTEzNHNVblBrSnF5bHpSdVBIOFdPTFVBa1R1MjNjakRzb2hHSkdmaXpYaEpnM1U5SUVDSFR2c3hLeW5QMFJhV3BFUTR0M29IbW9BSXFXOERNQkk1RS9vaDJYTFQvVmhLQTFObWhTNHV2OTJGSTUvQzhBTUljUWhuVklUa004K2Z3anJOOTJFQng4L0MwSUVHcWpuSXdVb3ZpWVdoSEZXNjVuaXdvNVBtRDBkQWtUdStya3ZVZy9laFQ2REw4WC85aDN2NDFBYW1qWXBjTUx4NVhqL3pTVVE4a25SdEduRWVUd015TUwzLzRIUFZ3L0ZHMiszZ1JCSy9rbFNLZHY1QXVEMEZzRHBMUTJQbU1YOGQreEFHRFZnS1ZzUGJQc2VLUHNHS0ZtZDFPRXFkU2JsUWR3dzhDdGNkTkUwOGZ2ZlBYTUlFTGxqeDNrUXFlTnc1Zlg5VUhtZ2ZpanlWaTJBWGoyQWl6c0J2UzlWbWwvQ1NnVHFzMVhBc3FBQlVuMG9qZEsreC90dnpFTktZSkpvMW14YmhCTms0V09ESUZQR29taE9Wd2pScU03R2VmSkpCZ2pEL2dCa25lUHZNTWc1czk0RWxoVUQyM2Y0MjFlODFpVit3WWliUDRLUWo0aDdSaGNiZ0hUclB4cFZ1QjNsUDU5WEo4cWMzSEJOUCtDV3dVRGprNU5QbkxjV0E4L09xQnRnSkE2Z1Zjc1NwTWlueFFkelhqVUE2WkJYZ0txcVlSQTRGOGxVSCtTSVB3MDNPS0krbExvQVJsWlZBU2hGVldDNldGYzh4UUFrSi9lZk9JZ2hFS0xOWVRYdk00V3U3Z3VNRytPY0l5aGV0dTB3ZElGWktINElyc2xkNURncWZ5cDkvdDFKS2Q4RC9IdTJ3VEhKS0ZJQ0V1c1FDTXdTYTRPRjFTS3IzMVQ4dUdjUWhHemxPNGVRUUJNTERHV3RVcWg4U1h4VEllLzVSZVd0dzNVSUZLMHk5c2VmV2UzVTNxZUZOcUhRZitVdnlSRnlBMUx3cWlnTjNXOEEwdSttSW16YTNBOFEvb2JXZStVQkU4Y241Z29TZmY2N3dQekYrZ25DQlRGNkJOQTd6K0NxUk9XMk1UVzVNVkY5cDg4SmlNQlduSERjSEZHeTlHNERrTHdCNzJEM2p6MGhBaWM0YlUrNS9uMzVpWFVGeGRFekx4dGcrRjBJQmtFaE9QSEVHa1ZZdC83K2prWmlONW8yV1NSQ0M0Y2JnSFM4L0VOVVZ1WWlJUHdKc1Q4MEhyZzJ6cVRJRVFTQ3Nyc3VDcTA3QW1QSE1UbDUvbzVLeWoxSVRWa212bHgralFGSWR2ZmxrWDF5RWREcmczQ0NVd3JqNndzNmFRV0ZnRlBkb0p0RTVKTHhZd0NLMWVoQ3JyMWlzTzdlYXJZbjVWNUFCa1Y0eFpYVmdQVDRHRUJuQ0tScTdYbkdGSHN3Q01Ea0tja1JUMDRtUlVBSURBSDZiRFZRTU5GLy8wUmlINEJQUkxpNHB3RklWdmVWZ0xnUUFhRnZJeXFlbUtMbE5HR2lmb1h0aFBEMXFhNlUrd0h4cVFnWDU1a2k2M01nY0w2Mm5VSDZGNVRMVm9WZzNKWmY5eUxLRFNBMG1lOGJZM0Q5aDh1QkNaUDB6SVBlT2xBaXdzWGRURUJXUWFJakFnSHZleUJrK2FtRlJ4OFluTkVIYnhvT3Axbm9xMXczd2cyME5kK3BrZ2NCK1lVb1czRnhkZWdrZHpVa3ZNZXhLSGZudm16dFp4ekpuRUh5a1R2bVduanY5T2hwSVhvcEVnUmt0UWlIT3BzY3NnWkFEb1JIRHJGVDRrYzZHQ1EyRjlzU0c3UDh1dUhlOUNIM1JTRFhpUENLQzZzQnlmM1NBTVJEWkpFNmc3b2p0dENhb3M2b0wvc1BYbGF5blc1a1dHZTR4ZHhWKzZxU1ZaQllJOWFGT2xWYldibGZRYUNEYTBEb2IxQytXb1hPR1E5S2h1ZXRPbmt2OVRqUGVUT3NQWHN2SVJZcEdmSDlTb1JENXg4R0JPaUFnRXNPWWJDUSt4bXhoVTVmZm9FWEV0Uy9kKzJNRmk5Y1VoMkNGK0VWSFUybFhncUpiRmNjWWlkYkthcm80ZGExQis0SHBET25BbDB1cU4yeVd5NlJVa0ppclNnTC9iWWFrQjVyd2JNZWJuU0lIWGZRQzYrcjJKUWZJRVMzeVREK3pDbjZKRUlWTjBXaUFjbktEVmZ2RmpyTE5ySFRIVHJpUDJ5Ym9Yb21PSEFEaXFibGd2ZjhKclY2KzFaY3dsQUxEUmluaFJ3aUVCWnJRem1tRGlsenRYMXJaMW5wVU9SV0pqUWRzY2xUL2QyZlVDV21sVi9pMWllSkFDTEt4TnJpRHQ0QW9STVlteDJpZ3p0SWxOS2dQV2tZdGlBd2Raa3R3dEZSd1ROc3o2MWlXcElVMDI2S0ZrRHNsRG4xaHR1QlJVOG1IaUJtUFhNUDVVZzNIQXlsdms2VWhiTGRjd2hYQmpOR1lvdFhyOVZzVHdVUTF1V09IaGRBZmRJdlRybWtPdEZCbElXeXFnSHBzUTVDdG5lVTRHQ2wxT2lORXhBZFJSVVFzeThxZmtaZm83TlJkSXdqR1cxb0FjU0tZTHJFVlNJZEVvOUlkTkJvVkNSYnZ6Q3Q2WnIrd0o0OVJncVJrMUJSTFVDeWUzd05JYytKeXIyT3Z5N3M3SEI2NWZUT2RSUXJ3R2xXcXVaYU1VMlVoRW1HZm9tMU5pbEdHWlpYWFJRUlFNVFhvcXo0WEhNTDF4a2dkdWF1em1RQUswQk1zNUw2aTJOSWxNWkR3bER4RjgzUnNVVHMyN0FTMzQ1TTRBZ2c2MFc0dUwwWjdWMFBvSjJ5RHJGUzZMck0zWGhLUFhxU0JJUFJWNnNZV2l6cC9OWXZWb0RRREtib1ZDcGVBZEhwcGRvTk9CNkhSTDlEQjIzY1dPdllVbXpiMUM4UFQzRW0zMVVJeWgzUzJHd1ZKMTU3SkhLQ2IwUTRkSTY1UWZVTklOb3FjNGhuRmxXWXBTb2dabFBVYTRVRmFybThUS3ArZUtvKy9XSWxNY2lWZlJTVHlEMERFcnUzVEtJNGtwaytBR0kybVNqcHpheW5NNm5hemlkVDFha1JRT1MzSXJ5aW5Uc09jYnA2RmVoZnE0cVhQcWhmVE1XZnFHK3VaSVpodkZpSDFHT01lc2VXT2dWRWQ3amRDeUFtWVJqZUtaeWdybC9HRkxnVFkzWnVRQU1nTnV5Z3FsL2M3dnBwQnlRcjkxdEhoM1Ywck41RW9zU1BQdXo4cCtpeHFLN3E2SGU4K21YVlowUkVXYWl0R1Z3OCtnRmhhQ01TS285S2RJdGRGUFRxdTFya0JpUmFQSjZWdW5Gb3h6MGdWbWF2empnV0NhQ0xReWhPR0pWV09iSGxkbVBOQ2hBbmdWWUxEdGtBZ2JNOStTRk9IS0ZFSzQ3UG1TVVllL3pNU1JJQkZUcUJpSGN1eFJ3SHh6NzVLZmNPb3c3SFVHS2pLQXUxTVVXV00wQzhPa0lxZ01TbTI2aXVPSnE4bE9rcVI2d1o3cGsweFp2SkcxazhGanVuVGtJblJyVFhBeUIyU296eVYyZDBsYXVjSzV5K2drcXlIVUVjbHg5ZlQ1Q0FIQ05GTENQQ09zWnJKVjRkdVFIVmdJUk5Ec25PTlRoRTlVeTBYZUt4enZDN0NoZVpkYUtQQ1NSNmo4QXlBcXdhR2svVW5wM0o2MFM4d2lzZ2RrcFhwMktuNk9GQlVSN01qQndHblZGYnRKaDFWUFVFZ2RDOW8ralZ3aUl0amRESmR5Szg0bXd6ZExJUkVQeEdWcUwxY1BpNWxTSnpFbEJMMUpOVllqTXpJYzJWVFlXdG9pZjhQanBucFQ5VTlaMUpBeTJBMk9rUlhVa09WZ0ZNeW1WK3hVRkZUM0N5REhqcTBoTldDOGd1ODhhUi9pQnpSTmhra3dpSHpuTFBJWFdSQnNRSXJjckhhUmdvcFBXa1MwL1ljYlBkOFFTbmk3STJJTG5mQVNKVFZhY2ZHcCtWcjBDaWNSL0FxL1hpTk91RWc2S280T3JVclNmc0FMSGlZamM3cDhaK3lHWVJEbVdhVzdqdUFMRUxPenRsV2FzSk93SEViejFoTlQ2ZGM5Y0dDSzBjSHZPS1RUYlF3U1dxZ05DeW8vWGtsU01UR1JteHo2MjR3KzBSREF0QU5nRTQwNUdWWlE3UXp1enp1b09ZQ0pCa0hlcTNBc3B1ems2ODgraDJ0UUlTajB1YzVDYkZUdHp1VUF4bE5EL0ZrU3c5RVR1dWVDZU5vODF5Snh5bkZSQjJiTGRpM0c3NHNNM1lXRlpkZjZER0pQQ1VpZFlmNWZRaUVReEF0b2h3NkV4VHFic1hXV3pLamt2NFRJZUNkN0xhL0t3Yjc2U3hsK043QmlEYlJEaDBoaDVBckZaME5HR2MydVYrRXRWdDIzYnhPMjJMVHU1QWFmSGwrZ0Rod096a3ZnNnJ5eTBoZGJ4SENjQVFpZFZ1bzg1OW9OSmc5ZGVBc25NM0EyanR5c3FLbm5BODBlVkZuK2dncXRzMk9DY2U4TFQ2ampEMTJxRGgraUlDcGNIclRRN1JBd2duYlJlTzVqTzNWb2hiWW5wOUx4NFliRnYzZGtOcGNLUUp5RlorU2Qwemg1Z0VzSXZ4SEVtQUpBTERpMVZsdDFCS2czZUx5RjJFT1QwK0FvVEREOXpHV1g2NllqeGVWN2piOTZuQWVRcllMcERwMWdGTU5KN1M0TDBFcEM5eTh2UjlCdFRPR2psU3pOK2gxd1BqeDlxVHppOHcyR05wOE84RTVEcms1T2s3MFhLa2lpdVZEeno3Q1lZQnlHUUNjaXR5OG1ZbTRpYmw1MWJpeW1vSExYb2YzTXhFWjZBdzJVRkNNMHVGMFlaNHhXOHdERUNlSUNDamtKUDNuRExCNDFWVUVWZnhDR0FDdzhuN3ZibmtKRjBvV2VLMk5QZzBBZmtMY3ZJZTF3SklJbkdsbXFiRHdmQnJEUVNHOTN2b0xMeWZoT05RU1l3Z3Q5SzBUVllnc3pUNEFnRVpoNXk4U1ZybWJDZXU4c2NiKytCdWJzb2gxM3pJRzNIV3U3dTZpTHFCbjFLaWY4UU1GcFV0WUJLakxqN3dYQnFjUVVEdXh3VzlIc0QrL2Q0d3NSTlhKQ1NKb2tvSWxWR3d6ZkpmakRQaFZ1ZkJTZnpHSjdtN3BVZFhOcVBLUEtMcnBLVUJxNWNWRVpDSGNPbkFDZmpoUjZkTjFLeHY5OTJzUksyU0FKVG5pWTQ0SjJySDYzTXptOUhyRjBiZGp1UFVKc0R5dC85RFFCN0dvTnZ1eGJwdjNUWmx2UGZ4WXVkY1lLYnA4SDJWbXdxOGpkRDZiUzRJNmlvLzA0VlV4bjF1VzJEZXpEa0U1RW5rangvclNYbkcrM2l5MVdEaWJiOUdGRzQvUStiN3lUWFVFZFJOS2puREtnVDFXcWR2TCtEeEIrWVRrS2N4cldnMG5uekJmWk9xNHNwcGRnakJJZWZ3YklmVHE0dGlaME5PTUcvcElSREo5bmNTVWRlNFgyVVJBWGtlSzFmZDRlbTdzeXJpeXZ6QWwxdENrRnNZQXFmeHdIMko2SEM0eVVuUmJWUHg4OThFZ1NtdWZ2czFpUWllNlBtY2w3NUhkdnQ3ak9CaVplVWlYRFcwYldUZ1RrdThjRHZiU25ieW10UHgxNGY2elRNcXNPVE5sU0kxOVRJai9DN2xYRHcxclRkZW5IV0s0L0hGKzB5c21UUGx1TkZqNkFWK1RXN1VyWnR4OGZtdmkyNlhqRE1BMmJ2M2p5amZNeEpYM3RBSmxmdWRYM3NVcTBPU2xWdDdOT0RXS08wWExKbTlEQUpQaVdiTmxoMDZmeUFYTFoySUwxYmZoTmZleWtTZzRlcnVwR0ROSzd5SERpNURwL05lRWYxN1A4WStEd05TWHA2SEEzSlU1SUxpWC9mV2p3dUtrMEtWT3V6a2xNWTc4VTdSQWh3NDhMekl5SWpjbEZuamhJNzg0c3RiOE4yV2tTaVkyQVVCMFhDbnVwOVk4V2EyU1g5Ympzek02YUpUaC9sbVY3V09UTWxuWGhxSHJkdUhZc0Y3N1FHUjV1ZVlqdG0ycStSZURMcHFGVnEzbUNudUhENHRtZzYxQWZuMTEwNFFhYmRoeE9oQldCTSs0NWdsbWw4VGw3SUNIYlBYNHRRbVJlTFpSLzhWMjQzbG9VTDVVMFVmeU1xaHVQMnVQbGo3ZFhPL3huYk10VXN3Y3JMS0lNUnJZdmIwUjYzbWIzdktVNWFYWDRQVXRNRzRmM0pQTEZyYVhPdVZlc2NjRWhGbmJ5LzZYMUdHbjhyZkVDODk4YkFkQ2VJZXU1VVZGUU9RbnQ0Znl6L3VpWDg4Y2laMi9QZEVWMWRhSElzQVJNODVvOWtlUEhEdmwxaS9jWTRZT2FTV21JcXJRMkpwSjZYc2pBMGJlcU5seTF3OE56TWIwNHN5QUhHaWNlZWhnMlBVeHlJb3ZBNXYxTEFmY01ld0VtemJ0VUMweTN3eEVSbVVLU3IzNysrRkpjRWV5TW5xaUZtdloyTEZ5aWJZdU9Wa0NCd1BpVVlJSUFESjMxSlVaMEJHdDIzOG5YOUdNdStqamJ6cS96QnIxM3B1MXEzeElORzg2dlo1Wm1zZ3Qwc0ZicjF4TTFxM0NxS3ljckZJVDUrbk1paGxRQTZSWmV2V3JwZyt1d015bW1SaVVMK1dDSDZhZ2M5V05jYktMNDdEenQxcGdFd0ZCTUZKUVFBQ1ZlQmxsUUpFaWI4Z3EzOFRuTWlYQ2c2REZlbUV6dzhCVmh0VWxWazVyK09ZRGpXNmFORWM2Tm9KNkhJaDBQVWlvR1h6Q2dDYlVGNGVST1BHaTRVUUphcEQ4allRMVY0YTZpbFQ0UCtHQzVPbCt4SUtud0FBQUFCSlJVNUVya0pnZ2c9PQovLyBAbWF0Y2ggICAgICAgICo6Ly9pdGVtLnRhb2Jhby5jb20vKgovLyBAbWF0Y2ggICAgICAgICo6Ly9jaGFvc2hpLmRldGFpbC50bWFsbC5jb20vKgovLyBAbWF0Y2ggICAgICAgICo6Ly9kZXRhaWwudG1hbGwuY29tLyoKLy8gQG1hdGNoICAgICAgICAqOi8vZGV0YWlsLnRtYWxsLmhrLyoKLy8gQG1hdGNoICAgICAgICAqOi8vcy50YW9iYW8uY29tLyoKLy8gQG1hdGNoICAgICAgICAqOi8vaXRlbS5qZC5jb20vKgovLyBAbWF0Y2ggICAgICAgICo6Ly8qLnlpeWFvamQuY29tLyoKLy8gQG1hdGNoICAgICAgICAqOi8vbnBjaXRlbS5qZC5oay8qCi8vIEBtYXRjaCAgICAgICAgKjovLyoubGlhbmd4aW55YW8uY29tLyoKLy8gQGFudGlmZWF0dXJlICByZWZlcnJhbC1saW5rIOatpOaPkOekuuS4ukdyZWFzeUZvcmvku6PnoIHop4TojIPopoHmsYLlkKvmnInmn6XliLjlip/og73nmoTohJrmnKzlv4Xpobvmt7vliqDvvIzlrp7pmYXkvb/nlKjml6Dku7vkvZXlvLrliLbot7PovazvvIzku6PnoIHlj6/mn6XvvIzor7fnn6XmgonjgIIKLy8gQHJlcXVpcmUgICAgICBodHRwczovL2xmOS1jZG4tdG9zLmJ5dGVjZG50cC5jb20vY2RuL2V4cGlyZS0xLU0vcXJjb2RlanMvMS4wLjAvcXJjb2RlLmpzCi8vIEBncmFudCAgICAgICAgR01fcmVnaXN0ZXJNZW51Q29tbWFuZAovLyBAZ3JhbnQgICAgICAgIEdNX3NldFZhbHVlCi8vIEBncmFudCAgICAgICAgR01fZ2V0VmFsdWUKLy8gQGdyYW50ICAgICAgICBHTV9kZWxldGVWYWx1ZQovLyBAZ3JhbnQgICAgICAgIEdNX2Rvd25sb2FkCi8vIEBncmFudCAgICAgICAgR01fc2V0Q2xpcGJvYXJkCi8vIEBncmFudCAgICAgICAgR01feG1saHR0cFJlcXVlc3QKLy8gPT0vVXNlclNjcmlwdD09CgovKgrlupRHcmVhc3lmb3JrLm9yZ+e9keermeinhOWImeimgeaxgu+8jOaHkuS6uuiEmuacrOWwhuWKn+iDveaLhuWIhuS4uuWkmuS4quiEmuacrOOAggrlnKhHcmVhc3lmb3JrLm9yZ+aQnOe0ouaHkuS6uuS4k+eUqO+8jOWNs+WPr+WIl+WHuuWvueW6lOiEmuacrOWuieijheOAggrlhbbku5bmi4bliIblip/og73lsIbpmYbnu63kuIrnur/vvIzmlazor7fmnJ/lvoXjgIIKKi8KCihmdW5jdGlvbigpIHsKICAgICd1c2Ugc3RyaWN0JzsKICAgIHZhciBDb25maWcgPXsKCiAgICAgICAgY291cG9uVXJsOndpbmRvdy5sb2NhdGlvbi5ocmVmLAoKICAgICAgICBjb3Vwb25Ib3N0OndpbmRvdy5sb2NhdGlvbi5ob3N0LAoKICAgICAgICBpc01vYmlsZTovQW5kcm9pZHx3ZWJPU3xpUGhvbmV8aVBvZHxCbGFja0JlcnJ5L2kudGVzdChuYXZpZ2F0b3IudXNlckFnZW50KSwKCiAgICAgICAgdGFvYmFvQ291cG9uOkdNX2dldFZhbHVlKCd0YW9iYW9Db3Vwb24nLDIyKSwKCiAgICAgICAgamluZ2RvbmdDb3Vwb246R01fZ2V0VmFsdWUoJ2ppbmdkb25nQ291cG9uJywyMiksCgogICAgICAgIHNob3dUYW90YW9Hb29kczpHTV9nZXRWYWx1ZSgnc2hvd1Rhb3Rhb0dvb2RzJywyMiksCgogICAgIH0KICAgIHZhciB7Y291cG9uVXJsLAogICAgICAgICBjb3Vwb25Ib3N0LAogICAgICAgICBpc01vYmlsZSwKICAgICAgICAgdGFvYmFvQ291cG9uLAogICAgICAgICBqaW5nZG9uZ0NvdXBvbiwKICAgICAgICAgc2hvd1Rhb3Rhb0dvb2RzCiAgICAgICAgfSA9IENvbmZpZzsKICAgIC8qLS1sYW5nLS0qLwogICAgdmFyIGxhbmcgPSB7CiAgICAgICAgY291cG9uOiforr7nva4nLAogICAgICAgIHRhb2Jhb0NvdXBvbjon5reY5a6d5p+l5Yi4JywKICAgICAgICBqaW5nZG9uZ0NvdXBvbjon5Lqs5Lic5p+l5Yi4JywKICAgICAgICBzaG93VGFvdGFvR29vZHM6J+S7heaYvuekuua3mOWuneWVhuWTgScsCgogICAgfTsKCiAgICBHTV9yZWdpc3Rlck1lbnVDb21tYW5kKCLorr7nva4iLCAoKSA9Pm1lbnVTZXQoKSk7CgogICAgZnVuY3Rpb24gbWVudVNldCgpewoKICAgICAgICB2YXIgX3RoaXMgPSB0aGlzOwoKICAgICAgICBsZXQgbWVudVNldFN0eWxlID0gYAogICAgICAgICAgICAgICAgLnpobU1hc2t7CiAgICAgICAgICAgICAgICAgICAgei1pbmRleDo5OTk5OTk5OTk7CiAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjojMDAwOwogICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBmaXhlZDt0b3A6IDA7cmlnaHQ6IDA7Ym90dG9tOiAwO2xlZnQ6IDA7CiAgICAgICAgICAgICAgICAgICAgb3BhY2l0eTowLjg7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAud3JhcC1ib3h7CiAgICAgICAgICAgICAgICAgICAgei1pbmRleDoxMDAwMDAwMDAwOwogICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOmZpeGVkOzt0b3A6IDUwJTtsZWZ0OiA1MCU7dHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTIwMHB4KTsKICAgICAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CiAgICAgICAgICAgICAgICAgICAgY29sb3I6ICM1NTU7CiAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsKICAgICAgICAgICAgICAgICAgICBib3JkZXItcmFkaXVzOiA1cHg7CiAgICAgICAgICAgICAgICAgICAgb3ZlcmZsb3c6aGlkZGVuOwogICAgICAgICAgICAgICAgICAgIGZvbnQ6MTZweCBudW1Gb250LFBpbmdGYW5nU0MtUmVndWxhcixUYWhvbWEsTWljcm9zb2Z0IFlhaGVpLHNhbnMtc2VyaWYgIWltcG9ydGFudDsKICAgICAgICAgICAgICAgICAgICBmb250LXdlaWdodDo0MDAgIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIC5zZXRXcmFwSGVhZHsKICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiNmMjQ0NDM7aGVpZ2h0OjQwcHg7Y29sb3I6I2ZmZjt0ZXh0LWFsaWduOmNlbnRlcjtsaW5lLWhlaWdodDo0MHB4OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgLnNldFdyYXBMaXsKICAgICAgICAgICAgICAgICAgICBtYXJnaW46MHB4O3BhZGRpbmc6MHB4OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgLnNldFdyYXBMaSBsaXsKICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOwogICAgICAgICAgICAgICAgICAgIGJvcmRlci1ib3R0b206MXB4IHNvbGlkICNlZWU7CiAgICAgICAgICAgICAgICAgICAgbWFyZ2luOjBweCAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6MTJweCAyMHB4OwogICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO2FsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgICAgICAgICAgICAgbGlzdC1zdHlsZTogbm9uZTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAuc2V0V3JhcExpQ29udGVudHsKICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBmbGV4O2p1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjthbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgLnNldFdyYXBTYXZlewogICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOmFic29sdXRlO3RvcDotMnB4O3JpZ2h0OjEwcHg7Zm9udC1zaXplOjI0cHg7Y3Vyc29yOnBvaW50ZXIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIC5pY29uU2V0Rm9vdHsKICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjphYnNvbHV0ZTtib3R0b206MHB4O3BhZGRpbmc6MTBweCAyMHB4O3dpZHRoOjEwMCU7CiAgICAgICAgICAgICAgICB6LWluZGV4OjEwMDAwMDAwMDk7YmFja2dyb3VuZDojZmVmOWVmOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgLmljb25TZXRGb290TGl7CiAgICAgICAgICAgICAgICAgICAgbWFyZ2luOjBweDtwYWRkaW5nOjBweDsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAuaWNvblNldEZvb3RMaSBsaXsKICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDsKICAgICAgICAgICAgICAgICAgICBwYWRkaW5nOjBweCAycHg7CiAgICAgICAgICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO2FsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgICAgICAgICAgICAgZm9udC1zaXplOiAxMnB4OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgLmljb25TZXRGb290TGkgbGkgYXsKICAgICAgICAgICAgICAgICAgICBjb2xvcjojNTU1OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgLmljb25TZXRGb290TGkgYTpob3ZlciB7CiAgICAgICAgICAgICAgICAgICAgY29sb3I6I2ZlNmQ3MzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIC5pY29uU2V0UGFnZXsKICAgICAgICAgICAgICAgICAgICB6LWluZGV4OjEwMDAwMDAwMDE7CiAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246YWJzb2x1dGU7dG9wOjBweDtsZWZ0OjMwMHB4OwogICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6I2ZmZjsKICAgICAgICAgICAgICAgICAgICB3aWR0aDozMDBweDsKICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6MTAwJTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIC5pY29uU2V0VWxIZWFkewogICAgICAgICAgICAgICAgcGFkZGluZzowcHg7CiAgICAgICAgICAgICAgICBtYXJnaW46MHB4OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgLmljb25TZXRQYWdlSGVhZHsKICAgICAgICAgICAgICAgICAgICBib3JkZXItYm90dG9tOjFweCBzb2xpZCAjY2NjOwogICAgICAgICAgICAgICAgICAgIGhlaWdodDo0MHB4OwogICAgICAgICAgICAgICAgICAgIGxpbmUtaGVpZ2h0OjQwcHg7CiAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICAgICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47CiAgICAgICAgICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiNmZTZkNzM7CiAgICAgICAgICAgICAgICAgICAgY29sb3I6I2ZmZjsKICAgICAgICAgICAgICAgICAgICBmb250LXNpemU6IDE1cHg7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAuaWNvblNldFBhZ2VMaXsKICAgICAgICAgICAgICAgICAgICBtYXJnaW46MHB4O3BhZGRpbmc6MHB4OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgLmljb25TZXRQYWdlTGkgbGl7CiAgICAgICAgICAgICAgICAgICAgbGlzdC1zdHlsZTogbm9uZTsKICAgICAgICAgICAgICAgICAgICBwYWRkaW5nOjhweCAyMHB4OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgLnpoaWh1U2V0UGFnZXsKICAgICAgICAgICAgICAgICAgICB6LWluZGV4OjEwMDAwMDAwMDI7cG9zaXRpb246YWJzb2x1dGU7dG9wOjBweDtsZWZ0OjMwMHB4O2JhY2tncm91bmQ6I2ZmZjt3aWR0aDozMDBweDtoZWlnaHQ6MTAwJTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIC5pY29uU2V0UGFnZUlucHV0ewogICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGZsZXggIWltcG9ydGFudDtqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47YWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIC56aGlodVNldFBhZ2VMaXsKICAgICAgICAgICAgICAgICAgICBtYXJnaW46MHB4O3BhZGRpbmc6MHB4OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgLnpoaWh1U2V0UGFnZUxpIGxpewogICAgICAgICAgICAgICAgICAgIGJvcmRlci1ib3R0b206MXB4IHNvbGlkICNlZWU7cGFkZGluZzoxMnB4IDIwcHg7ZGlzcGxheTpibG9jazsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIC56aGlodVNldFBhZ2VDb250ZW50ewogICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGZsZXggIWltcG9ydGFudDtqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47YWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGxpOmxhc3QtY2hpbGR7CiAgICAgICAgICAgICAgICAgICAgYm9yZGVyLWJvdHRvbTpub25lOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgLmNpcmN1bGFyewogICAgICAgICAgICAgICAgICAgIHdpZHRoOiA0MHB4O2hlaWdodDogMjBweDtib3JkZXItcmFkaXVzOiAxNnB4O3RyYW5zaXRpb246IC4zcztjdXJzb3I6IHBvaW50ZXI7Ym94LXNoYWRvdzogMCAwIDNweCAjOTk5IGluc2V0OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgLnJvdW5kLWJ1dHRvbnsKICAgICAgICAgICAgICAgICAgICB3aWR0aDogMjBweDtoZWlnaHQ6IDIwcHg7O2JvcmRlci1yYWRpdXM6IDUwJTtib3gtc2hhZG93OiAwIDFweCA1cHggcmdiYSgwLDAsMCwuNSk7dHJhbnNpdGlvbjogLjNzO3Bvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIC5iYWNrewogICAgICAgICAgICAgICAgICAgIGJvcmRlcjogc29saWQgI0ZGRjsgYm9yZGVyLXdpZHRoOiAwIDNweCAzcHggMDsgZGlzcGxheTogaW5saW5lLWJsb2NrOyBwYWRkaW5nOiAzcHg7dHJhbnNmb3JtOiByb3RhdGUoMTM1ZGVnKTsgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoMTM1ZGVnKTttYXJnaW4tbGVmdDoxMHB4O2N1cnNvcjpwb2ludGVyOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgLnRvLXJpZ2h0ewogICAgICAgICAgICAgICAgICAgIG1hcmdpbi1sZWZ0OjIwcHg7IGRpc3BsYXk6IGlubGluZS1ibG9jazsgcGFkZGluZzogM3B4O3RyYW5zZm9ybTogcm90YXRlKC00NWRlZyk7IC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoLTQ1ZGVnKTtjdXJzb3I6cG9pbnRlcjsKCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAuaWNvblNldFNhdmV7CiAgICAgICAgICAgICAgICAgICAgZm9udC1zaXplOjI0cHg7Y3Vyc29yOnBvaW50ZXI7bWFyZ2luLXJpZ2h0OjVweDttYXJnaW4tYm90dG9tOjRweDtjb2xvcjojRkZGOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgLnpobV9zZXRfcGFnZXsKICAgICAgICAgICAgICAgICAgICB6LWluZGV4OjEwMDAwMDAwMDM7CiAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246YWJzb2x1dGU7CiAgICAgICAgICAgICAgICAgICAgdG9wOjBweDtsZWZ0OjMwMHB4OwogICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6I2ZmZjsKICAgICAgICAgICAgICAgICAgICB3aWR0aDozMDBweDsKICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6MTAwJTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIC56aG1fc2V0X3BhZ2VfaGVhZGVyewogICAgICAgICAgICAgICAgICAgIGJvcmRlci1ib3R0b206MXB4IHNvbGlkICNjY2M7CiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OjQwcHg7CiAgICAgICAgICAgICAgICAgICAgbGluZS1oZWlnaHQ6NDBweDsKICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgICAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsKICAgICAgICAgICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6I2ZlNmQ3MzsKICAgICAgICAgICAgICAgICAgICBjb2xvcjojZmZmOwogICAgICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMTVweDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIC56aG1fc2V0X3BhZ2VfY29udGVudHsKICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBmbGV4ICFpbXBvcnRhbnQ7anVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO2FsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAuemhtX3NldF9wYWdlX2xpc3R7CiAgICAgICAgICAgICAgICAgICAgbWFyZ2luOjBweDtwYWRkaW5nOjBweDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIC56aG1fc2V0X3BhZ2VfbGlzdCBsaXsKICAgICAgICAgICAgICAgICAgICAvKmJvcmRlci1ib3R0b206MXB4IHNvbGlkICNjY2M7Ki8KICAgICAgICAgICAgICAgICAgICBwYWRkaW5nOjEycHggMjBweDsKICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OmJsb2NrOwogICAgICAgICAgICAgICAgICAgIGJvcmRlci1ib3R0b206MXB4IHNvbGlkICNlZWU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAvKi1mb3JtLSovCiAgICAgICAgICAgICAgICA6cm9vdCB7CiAgICAgICAgICAgICAgICAgICAgLS1iYXNlLWNvbG9yOiAjNDM0YTU2OwogICAgICAgICAgICAgICAgICAgIC0td2hpdGUtY29sb3ItcHJpbWFyeTogI2Y3ZjhmODsKICAgICAgICAgICAgICAgICAgICAtLXdoaXRlLWNvbG9yLXNlY29uZGFyeTogI2ZlZmVmZTsKICAgICAgICAgICAgICAgICAgICAtLWdyYXktY29sb3ItcHJpbWFyeTogI2MyYzJjMjsKICAgICAgICAgICAgICAgICAgICAtLWdyYXktY29sb3Itc2Vjb25kYXJ5OiAjYzJjMmMyOwogICAgICAgICAgICAgICAgICAgIC0tZ3JheS1jb2xvci10ZXJ0aWFyeTogIzY3NmY3OTsKICAgICAgICAgICAgICAgICAgICAtLWFjdGl2ZS1jb2xvcjogIzIyN2M5ZDsKICAgICAgICAgICAgICAgICAgICAtLXZhbGlkLWNvbG9yOiAjYzJjMmMyOwogICAgICAgICAgICAgICAgICAgIC0taW52YWxpZC1jb2xvcjogI2Y3MmY0NzsKICAgICAgICAgICAgICAgICAgICAtLWludmFsaWQtaWNvbjogdXJsKCJkYXRhOmltYWdlL3N2Zyt4bWw7Y2hhcnNldD11dGY4LCUzQ3N2ZyUyMHhtbG5zJTNEJTIyaHR0cCUzQSUyRiUyRnd3dy53My5vcmclMkYyMDAwJTJGc3ZnJTIyJTIwd2lkdGglM0QlMjIyNCUyMiUyMGhlaWdodCUzRCUyMjI0JTIyJTIwdmlld0JveCUzRCUyMjAlMjAwJTIwMjQlMjAyNCUyMiUzRSUyMCUzQ3BhdGglMjBkJTNEJTIyTTEzLjQxJTIwMTJsNC4zLTQuMjlhMSUyMDElMjAwJTIwMSUyMDAtMS40Mi0xLjQyTDEyJTIwMTAuNTlsLTQuMjktNC4zYTElMjAxJTIwMCUyMDAlMjAwLTEuNDIlMjAxLjQybDQuMyUyMDQuMjktNC4zJTIwNC4yOWExJTIwMSUyMDAlMjAwJTIwMCUyMDAlMjAxLjQyJTIwMSUyMDElMjAwJTIwMCUyMDAlMjAxLjQyJTIwMGw0LjI5LTQuMyUyMDQuMjklMjA0LjNhMSUyMDElMjAwJTIwMCUyMDAlMjAxLjQyJTIwMCUyMDElMjAxJTIwMCUyMDAlMjAwJTIwMC0xLjQyeiUyMiUyMGZpbGwlM0QlMjIlMjNmNzJmNDclMjIlMjAlMkYlM0UlM0MlMkZzdmclM0UiKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIC50ZXh0LWlucHV0IHsKICAgICAgICAgICAgICAgICAgICBmb250LXNpemU6IDE2cHg7CiAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgICAgICAgICAgICAgIHJpZ2h0OjBweDsKICAgICAgICAgICAgICAgICAgICB6LWluZGV4OiAwOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgLnRleHQtaW5wdXRfX2JvZHkgewogICAgICAgICAgICAgICAgICAgIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTsKICAgICAgICAgICAgICAgICAgICAtbW96LWFwcGVhcmFuY2U6IG5vbmU7CiAgICAgICAgICAgICAgICAgICAgYXBwZWFyYW5jZTogbm9uZTsKICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKICAgICAgICAgICAgICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1ncmF5LWNvbG9yLXByaW1hcnkpOwogICAgICAgICAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDNweDsKICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IDEuN2VtOwogICAgICAgICAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAxLjc7CiAgICAgICAgICAgICAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgICAgICAgICAgICAgICBwYWRkaW5nOiAycHggMWVtOwogICAgICAgICAgICAgICAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwogICAgICAgICAgICAgICAgICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMC4zczsKICAgICAgICAgICAgICAgICAgICB3aWR0aDo1NSU7CiAgICAgICAgICAgICAgICAgICAgZm9udC1zaXplOjE0cHg7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAudGV4dC1pbnB1dF9fYm9keTotbXMtaW5wdXQtcGxhY2Vob2xkZXIgewogICAgICAgICAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1ncmF5LWNvbG9yLXNlY29uZGFyeSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAudGV4dC1pbnB1dF9fYm9keTo6LW1vei1wbGFjZWhvbGRlciB7CiAgICAgICAgICAgICAgICAgICAgY29sb3I6IHZhcigtLWdyYXktY29sb3Itc2Vjb25kYXJ5KTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIC50ZXh0LWlucHV0X19ib2R5OjpwbGFjZWhvbGRlciB7CiAgICAgICAgICAgICAgICAgICAgY29sb3I6IHZhcigtLWdyYXktY29sb3Itc2Vjb25kYXJ5KTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICosIDo6YWZ0ZXIsIDo6YmVmb3JlIHsKICAgICAgICAgICAgICAgIGJveC1zaXppbmc6IGluaXRpYWwgIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIC50ZXh0LWlucHV0X19ib2R5W2RhdGEtaXMtdmFsaWRdIHsKICAgICAgICAgICAgICAgICAgICBwYWRkaW5nLXJpZ2h0OiAxZW07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAudGV4dC1pbnB1dF9fYm9keVtkYXRhLWlzLXZhbGlkPXRydWVdIHsKICAgICAgICAgICAgICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLXZhbGlkLWNvbG9yKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIC50ZXh0LWlucHV0X19ib2R5W2RhdGEtaXMtdmFsaWQ9ZmFsc2VdIHsKICAgICAgICAgICAgICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLWludmFsaWQtY29sb3IpOwogICAgICAgICAgICAgICAgICAgIGJveC1zaGFkb3c6IGluc2V0IDAgMCAwIDFweCB2YXIoLS1pbnZhbGlkLWNvbG9yKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIC50ZXh0LWlucHV0X19ib2R5OmZvY3VzIHsKICAgICAgICAgICAgICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLWFjdGl2ZS1jb2xvcik7CiAgICAgICAgICAgICAgICAgICAgYm94LXNoYWRvdzogaW5zZXQgMCAwIDAgMXB4IHZhcigtLWFjdGl2ZS1jb2xvcik7CiAgICAgICAgICAgICAgICAgICAgb3V0bGluZTogbm9uZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIC50ZXh0LWlucHV0X19ib2R5Oi13ZWJraXQtYXV0b2ZpbGwgewogICAgICAgICAgICAgICAgICAgIHRyYW5zaXRpb24tZGVsYXk6IDk5OTlzOwogICAgICAgICAgICAgICAgICAgIC13ZWJraXQtdHJhbnNpdGlvbi1wcm9wZXJ0eTogYmFja2dyb3VuZC1jb2xvcjsKICAgICAgICAgICAgICAgICAgICB0cmFuc2l0aW9uLXByb3BlcnR5OiBiYWNrZ3JvdW5kLWNvbG9yOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgLnRleHQtaW5wdXRfX3ZhbGlkYXRvciB7CiAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZC1wb3NpdGlvbjogcmlnaHQgMC41ZW0gY2VudGVyOwogICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7CiAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZC1zaXplOiAxLjVlbTsKICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICAgICAgICAgICAgICAgIGxlZnQ6IDA7CiAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgICAgICAgICAgICAgIHRvcDogMDsKICAgICAgICAgICAgICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICAgICAgICAgICAgICB6LWluZGV4OiAtMTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIC50ZXh0LWlucHV0X19ib2R5W2RhdGEtaXMtdmFsaWQ9ZmFsc2VdICsgLnRleHQtaW5wdXRfX3ZhbGlkYXRvciB7CiAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZC1pbWFnZTogdmFyKC0taW52YWxpZC1pY29uKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIC5zZWxlY3QtYm94IHsKICAgICAgICAgICAgICAgICAgICBib3gtc2l6aW5nOiBpbmhlcml0OwogICAgICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMTZweDsKICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgICAgICAgICAgICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAwLjVzIGVhc2Utb3V0OwogICAgICAgICAgICAgICAgICAgIHdpZHRoOjkwcHg7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAuc2VsZWN0LWJveDo6YWZ0ZXIgewogICAgICAgICAgICAgICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tZ3JheS1jb2xvci1zZWNvbmRhcnkpIHRyYW5zcGFyZW50IHRyYW5zcGFyZW50IHRyYW5zcGFyZW50OwogICAgICAgICAgICAgICAgICAgIGJvcmRlci1zdHlsZTogc29saWQ7CiAgICAgICAgICAgICAgICAgICAgYm9yZGVyLXdpZHRoOiA2cHggNHB4IDA7CiAgICAgICAgICAgICAgICAgICAgYm90dG9tOiAwOwogICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6ICIiOwogICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IDA7CiAgICAgICAgICAgICAgICAgICAgbWFyZ2luOiBhdXRvIDA7CiAgICAgICAgICAgICAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgICAgICAgICAgICAgIHJpZ2h0OiAtNzJweDsKICAgICAgICAgICAgICAgICAgICB0b3A6IDA7CiAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDA7CiAgICAgICAgICAgICAgICAgICAgei1pbmRleDogMTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIC5zZWxlY3QtYm94X19ib2R5IHsKICAgICAgICAgICAgICAgICAgICBib3gtc2l6aW5nOiBpbmhlcml0OwogICAgICAgICAgICAgICAgICAgIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTsKICAgICAgICAgICAgICAgICAgICAtbW96LWFwcGVhcmFuY2U6IG5vbmU7CiAgICAgICAgICAgICAgICAgICAgYXBwZWFyYW5jZTogbm9uZTsKICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKICAgICAgICAgICAgICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1ncmF5LWNvbG9yLXByaW1hcnkpOwogICAgICAgICAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDNweDsKICAgICAgICAgICAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAxLjdlbTsKICAgICAgICAgICAgICAgICAgICBsaW5lLWhlaWdodDogMS43OwogICAgICAgICAgICAgICAgICAgIHBhZGRpbmctbGVmdDogMWVtOwogICAgICAgICAgICAgICAgICAgIHBhZGRpbmctcmlnaHQ6IGNhbGMoMWVtICsgMTZweCk7CiAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDE0MCU7CiAgICAgICAgICAgICAgICAgICAgZm9udC1zaXplOjE0cHg7CiAgICAgICAgICAgICAgICAgICAgcGFkZGluZy10b3A6MnB4OwogICAgICAgICAgICAgICAgICAgIHBhZGRpbmctYm90dG9tOjJweDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIC5zZWxlY3QtYm94X19ib2R5W2RhdGEtaXMtdmFsaWQ9dHJ1ZV0gewogICAgICAgICAgICAgICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tdmFsaWQtY29sb3IpOwogICAgICAgICAgICAgICAgICAgIGJveC1zaGFkb3c6IGluc2V0IDAgMCAwIDFweCB2YXIoLS12YWxpZC1jb2xvcik7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAuc2VsZWN0LWJveF9fYm9keVtkYXRhLWlzLXZhbGlkPWZhbHNlXSB7CiAgICAgICAgICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1pbnZhbGlkLWNvbG9yKTsKICAgICAgICAgICAgICAgICAgICBib3gtc2hhZG93OiBpbnNldCAwIDAgMCAxcHggdmFyKC0taW52YWxpZC1jb2xvcik7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAuc2VsZWN0LWJveF9fYm9keS5mb2N1cy12aXNpYmxlIHsKICAgICAgICAgICAgICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLWFjdGl2ZS1jb2xvcik7CiAgICAgICAgICAgICAgICAgICAgYm94LXNoYWRvdzogaW5zZXQgMCAwIDAgMXB4IHZhcigtLWFjdGl2ZS1jb2xvcik7CiAgICAgICAgICAgICAgICAgICAgb3V0bGluZTogbm9uZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIC5zZWxlY3QtYm94X19ib2R5Oi13ZWJraXQtYXV0b2ZpbGwgewogICAgICAgICAgICAgICAgICAgIHRyYW5zaXRpb24tZGVsYXk6IDk5OTlzOwogICAgICAgICAgICAgICAgICAgIC13ZWJraXQtdHJhbnNpdGlvbi1wcm9wZXJ0eTogYmFja2dyb3VuZC1jb2xvcjsKICAgICAgICAgICAgICAgICAgICB0cmFuc2l0aW9uLXByb3BlcnR5OiBiYWNrZ3JvdW5kLWNvbG9yOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgLnRleHRhcmVhX19ib2R5IHsKICAgICAgICAgICAgICAgICAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7CiAgICAgICAgICAgICAgICAgICAgLW1vei1hcHBlYXJhbmNlOiBub25lOwogICAgICAgICAgICAgICAgICAgIGFwcGVhcmFuY2U6IG5vbmU7CiAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7CiAgICAgICAgICAgICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tZ3JheS1jb2xvci1wcmltYXJ5KTsKICAgICAgICAgICAgICAgICAgICBib3JkZXItcmFkaXVzOiAwOwogICAgICAgICAgICAgICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgICAgICAgICAgICAgICAgICAgZm9udDogaW5oZXJpdDsKICAgICAgICAgICAgICAgICAgICBsZWZ0OiAwOwogICAgICAgICAgICAgICAgICAgIGxldHRlci1zcGFjaW5nOiBpbmhlcml0OwogICAgICAgICAgICAgICAgICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICAgICAgICAgICAgICAgICAgcGFkZGluZzogMWVtOwogICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICAgICAgICAgICAgICByZXNpemU6IG5vbmU7CiAgICAgICAgICAgICAgICAgICAgdG9wOiAwOwogICAgICAgICAgICAgICAgICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMC41cyBlYXNlLW91dDsKICAgICAgICAgICAgICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAudGV4dGFyZWFfX2JvZHk6b25seS1jaGlsZCB7CiAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgICAgICAgICAgICAgIHJlc2l6ZTogdmVydGljYWw7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAudGV4dGFyZWFfX2JvZHk6Zm9jdXMgewogICAgICAgICAgICAgICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tYWN0aXZlLWNvbG9yKTsKICAgICAgICAgICAgICAgICAgICBib3gtc2hhZG93OiBpbnNldCAwIDAgMCAxcHggdmFyKC0tYWN0aXZlLWNvbG9yKTsKICAgICAgICAgICAgICAgICAgICBvdXRsaW5lOiBub25lOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgLnRleHRhcmVhX19ib2R5W2RhdGEtaXMtdmFsaWQ9dHJ1ZV0gewogICAgICAgICAgICAgICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tdmFsaWQtY29sb3IpOwogICAgICAgICAgICAgICAgICAgIGJveC1zaGFkb3c6IGluc2V0IDAgMCAwIDFweCB2YXIoLS12YWxpZC1jb2xvcik7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAudGV4dGFyZWFfX2JvZHlbZGF0YS1pcy12YWxpZD1mYWxzZV0gewogICAgICAgICAgICAgICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0taW52YWxpZC1jb2xvcik7CiAgICAgICAgICAgICAgICAgICAgYm94LXNoYWRvdzogaW5zZXQgMCAwIDAgMXB4IHZhcigtLWludmFsaWQtY29sb3IpOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIC50ZXh0YXJlYSAuX2R1bW15LWJveCB7CiAgICAgICAgICAgICAgICAgICAgYm9yZGVyOiAxcHggc29saWQ7CiAgICAgICAgICAgICAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgICAgICAgICAgICAgICAgICBtaW4taGVpZ2h0OiAyNDBweDsKICAgICAgICAgICAgICAgICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgICAgICAgICAgICAgICAgIG92ZXJmbG93LXdyYXA6IGJyZWFrLXdvcmQ7CiAgICAgICAgICAgICAgICAgICAgcGFkZGluZzogMWVtOwogICAgICAgICAgICAgICAgICAgIHZpc2liaWxpdHk6IGhpZGRlbjsKICAgICAgICAgICAgICAgICAgICB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7CiAgICAgICAgICAgICAgICAgICAgd29yZC13cmFwOiBicmVhay13b3JkOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgLnRvTGVmdE1vdmV7CiAgICAgICAgICAgICAgICAgICAgbmltYXRpb246bW92ZVRvTGVmdCAwLjVzIGluZmluaXRlOwogICAgICAgICAgICAgICAgICAgIC13ZWJraXQtYW5pbWF0aW9uOm1vdmVUb0xlZnQgMC41cyBpbmZpbml0ZTsgLypTYWZhcmkgYW5kIENocm9tZSovCiAgICAgICAgICAgICAgICAgICAgYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDoxOwogICAgICAgICAgICAgICAgICAgIGFuaW1hdGlvbi1maWxsLW1vZGU6IGZvcndhcmRzOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIEBrZXlmcmFtZXMgbW92ZVRvTGVmdHsKICAgICAgICAgICAgICAgICAgICBmcm9tIHtsZWZ0OjIwMHB4O30KICAgICAgICAgICAgICAgICAgICB0byB7bGVmdDowcHg7fQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIEAtd2Via2l0LWtleWZyYW1lcyBtb3ZlVG9MZWZ0IC8qU2FmYXJpIGFuZCBDaHJvbWUqL3sKICAgICAgICAgICAgICAgICAgICBmcm9tIHtsZWZ0OjIwMHB4O30KICAgICAgICAgICAgICAgICAgICB0byB7bGVmdDowcHg7fQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIC50b1JpZ2h0TW92ZXsKICAgICAgICAgICAgICAgICAgICBuaW1hdGlvbjptb3ZlVG9SaWdodCAycyBpbmZpbml0ZTsKICAgICAgICAgICAgICAgICAgICAtd2Via2l0LWFuaW1hdGlvbjptb3ZlVG9SaWdodCAycyBpbmZpbml0ZTsgLypTYWZhcmkgYW5kIENocm9tZSovCiAgICAgICAgICAgICAgICAgICAgYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDoxOwogICAgICAgICAgICAgICAgICAgIGFuaW1hdGlvbi1maWxsLW1vZGU6IGZvcndhcmRzOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgQGtleWZyYW1lcyBtb3ZlVG9SaWdodHsKICAgICAgICAgICAgICAgICAgICBmcm9tIHtsZWZ0OjBweDt9CiAgICAgICAgICAgICAgICAgICAgdG8ge2xlZnQ6MjAwMHB4O30KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBALXdlYmtpdC1rZXlmcmFtZXMgbW92ZVRvUmlnaHQgLypTYWZhcmkgYW5kIENocm9tZSovewogICAgICAgICAgICAgICAgICAgIGZyb20ge2xlZnQ6MHB4O30KICAgICAgICAgICAgICAgICAgICB0byB7bGVmdDoyMDBweDt9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIGA7CgogICAgICAgIGRvbVN0eWxlIC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShtZW51U2V0U3R5bGUpKTsKCiAgICAgICAgZG9tSGVhZC5hcHBlbmRDaGlsZChkb21TdHlsZSk7CgogICAgICAgIHZhciBzZXRMaXN0SnNvbiA9IFsKICAgICAgICAgICAgeydvcHRpb25OYW1lJzpsYW5nLnRhb2Jhb0NvdXBvbiwnb3B0aW9uSUQnOid0YW9iYW9Db3Vwb24nLCdkZWZhdWx0Jzp0YW9iYW9Db3Vwb259LAogICAgICAgICAgICB7J29wdGlvbk5hbWUnOmxhbmcuamluZ2RvbmdDb3Vwb24sJ29wdGlvbklEJzonamluZ2RvbmdDb3Vwb24nLCdkZWZhdWx0JzpqaW5nZG9uZ0NvdXBvbn0sCiAgICAgICAgICAgIHsnb3B0aW9uTmFtZSc6bGFuZy5zaG93VGFvdGFvR29vZHMsJ29wdGlvbklEJzonc2hvd1Rhb3Rhb0dvb2RzJywnZGVmYXVsdCc6c2hvd1Rhb3Rhb0dvb2RzfSwKICAgICAgICBdOwoKICAgICAgICB2YXIgc2V0SHRtbCA9ICI8ZGl2IGlkPSdzZXRNYXNrJyBjbGFzcz0nemhtTWFzayc+PC9kaXY+IjsKCiAgICAgICAgc2V0SHRtbCArPSI8ZGl2IGNsYXNzPSd3cmFwLWJveCcgaWQ9J3NldFdyYXAnPiI7CgogICAgICAgIHNldEh0bWwgKz0iPHVsIGNsYXNzPSdpY29uU2V0VWxIZWFkJz48bGkgY2xhc3M9J2ljb25TZXRQYWdlSGVhZCc+PHNwYW4+PC9zcGFuPjxzcGFuPiIrbGFuZy5jb3Vwb24rIjwvc3Bhbj48c3BhbiBjbGFzcz0naWNvblNldFNhdmUnPsOXPC9zcGFuPjwvbGk+PC91bD4iOwoKICAgICAgICBzZXRIdG1sICs9Ijx1bCBjbGFzcz0nc2V0V3JhcExpJz4iOwoKICAgICAgICBmb3IodmFyIHNldE49MDtzZXROPHNldExpc3RKc29uLmxlbmd0aDtzZXROKyspewoKICAgICAgICAgICAgdmFyIGxpc3RWYWx1ZSA9IEdNX2dldFZhbHVlKHNldExpc3RKc29uW3NldE5dLm9wdGlvbklELCcyMicpOwoKICAgICAgICAgICAgbGV0IGJhY2tDb2xvcixhcnJvd0NvbG9yLHN3aXRjaEJhY2tDb3Jsb3I7CgogICAgICAgICAgICBpZihsaXN0VmFsdWUgIT0gMjIpewogICAgICAgICAgICAgICAgYmFja0NvbG9yID0gJyNmZmYnOwogICAgICAgICAgICAgICAgYXJyb3dDb2xvcj0gJyNFRUUnOwogICAgICAgICAgICAgICAgc3dpdGNoQmFja0NvcmxvciA9ICcjRkZGJzsKCiAgICAgICAgICAgIH1lbHNlewogICAgICAgICAgICAgICAgYmFja0NvbG9yID0gJyNmZTZkNzMnOwogICAgICAgICAgICAgICAgYXJyb3dDb2xvciA9ICcjQ0NDJzsKICAgICAgICAgICAgICAgIHN3aXRjaEJhY2tDb3Jsb3IgPSAnI0ZGRTVFNSc7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmKHNldExpc3RKc29uW3NldE5dLm9wdGlvbklEID09ICcnKXsKICAgICAgICAgICAgICAgIGFycm93Q29sb3IgPSAnI0VFRSc7CiAgICAgICAgICAgIH07CiAgICAgICAgICAgIHNldEh0bWwgKz0iPGxpPjxzcGFuPiIrc2V0TGlzdEpzb25bc2V0Tl0ub3B0aW9uTmFtZSsiPC9zcGFuPiI7CgogICAgICAgICAgICBzZXRIdG1sICs9IjxkaXYgY2xhc3M9J3NldFdyYXBMaUNvbnRlbnQnPiI7CgogICAgICAgICAgICBzZXRIdG1sICs9IjxkaXYgY2xhc3M9J2NpcmN1bGFyJyBpZD0nIitzZXRMaXN0SnNvbltzZXROXS5vcHRpb25JRCsiJyBzdHlsZT0nYmFja2dyb3VuZC1jb2xvcjogIitzd2l0Y2hCYWNrQ29ybG9yKyI7Jz48ZGl2IGNsYXNzPSdyb3VuZC1idXR0b24nIHN0eWxlPSdiYWNrZ3JvdW5kOiAiK2JhY2tDb2xvcisiO2xlZnQ6ICIrbGlzdFZhbHVlKyJweCc+PC9kaXY+PC9kaXY+IjsKCiAgICAgICAgICAgIC8vc2V0SHRtbCArPSI8c3BhbiBjbGFzcz0ndG8tcmlnaHQnIGRhdGE9JyIrc2V0TGlzdEpzb25bc2V0Tl0ub3B0aW9uSUQrIicgc3R5bGU9J2JvcmRlcjogc29saWQgIithcnJvd0NvbG9yKyI7IGJvcmRlci13aWR0aDogMCAzcHggM3B4IDA7Jz48L3NwYW4+PC9kaXY+PC9saT4iOwoKICAgICAgICAgICAgc2V0SHRtbCArPSI8L2Rpdj48L2xpPiI7CiAgICAgICAgfQoKICAgICAgICBzZXRIdG1sICs9IjwvdWw+IjsKCiAgICAgICAgc2V0SHRtbCArPSI8ZGl2IHN0eWxlPSdoZWlnaHQ6NDBweDsnPjwvZGl2PiI7CgogICAgICAgIHNldEh0bWwgKz0iPGRpdiBjbGFzcz0naWNvblNldEZvb3QnIHN0eWxlPScnPiI7CgogICAgICAgIHNldEh0bWwgKz0iPHVsIGNsYXNzPSdpY29uU2V0Rm9vdExpJz4iOwoKICAgICAgICBzZXRIdG1sICs9IjxsaT48L2xpPiI7CgogICAgICAgIHNldEh0bWwgKz0nPC91bD4nOwoKICAgICAgICBzZXRIdG1sICs9JzwvZGl2Pic7CgogICAgICAgIHNldEh0bWwgKz0gIjwvZGl2PiI7CgogICAgICAgIGlmKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNzZXRNYXNrJykpIHJldHVybjsKCiAgICAgICAgY3JlYXRlRWxlbWVudCgnZGl2JywnemhtTWVudScpOwoKICAgICAgICBsZXQgemhtTWVudSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd6aG1NZW51Jyk7CgogICAgICAgIHpobU1lbnUuaW5uZXJIVE1MID0gc2V0SHRtbDsKCiAgICAgICAgbGV0IHRpbWVyWmhtSWNvbiA9IHNldEludGVydmFsKGZ1bmN0aW9uKCl7CgogICAgICAgICAgICBpZiAoZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI3pobU1lbnUnKSl7CgogICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbCh0aW1lclpobUljb24pOyAvLyDlj5bmtojlrprml7blmagKCiAgICAgICAgICAgICAgICBsZXQgY2lyY3VsYXIgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuY2lyY3VsYXInKTsKCiAgICAgICAgICAgICAgICBjaXJjdWxhci5mb3JFYWNoKGZ1bmN0aW9uKGl0ZW0pewoKICAgICAgICAgICAgICAgICAgICBpdGVtLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24oZSl7CgogICAgICAgICAgICAgICAgICAgICAgICBsZXQgYnV0dG9uU3R5bGUgPSBpdGVtLmNoaWxkcmVuWzBdLnN0eWxlOwoKICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGxlZnQgPSBidXR0b25TdHlsZS5sZWZ0OwoKICAgICAgICAgICAgICAgICAgICAgICAgbGVmdCA9IHBhcnNlSW50KGxlZnQpOwoKICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGxpc3RMZWZ0VmFsdWU7CgogICAgICAgICAgICAgICAgICAgICAgICBpZihsZWZ0PT0wKXsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBidXR0b25TdHlsZS5sZWZ0ID0gJzIycHgnOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvblN0eWxlLmJhY2tncm91bmQgPSAnI2ZlNmQ3Myc7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5zdHlsZS5iYWNrZ3JvdW5kPScjZmZFNUU1JzsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihpdGVtLm5leHRTaWJsaW5nICYmIGl0ZW0ubmV4dFNpYmxpbmcuZ2V0QXR0cmlidXRlKCdkYXRhJykpewoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtLm5leHRTaWJsaW5nLnNldEF0dHJpYnV0ZSgnc3R5bGUnLCdib3JkZXI6IHNvbGlkICNjY2M7Ym9yZGVyLXdpZHRoOiAwIDNweCAzcHggMDsnKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3RMZWZ0VmFsdWUgPSAyMjsKCiAgICAgICAgICAgICAgICAgICAgICAgIH1lbHNlewoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvblN0eWxlLmxlZnQgPSAnMHB4JzsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBidXR0b25TdHlsZS5iYWNrZ3JvdW5kID0gJyNmZmYnOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0uc3R5bGUuYmFja2dyb3VuZD0nI2ZmZic7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoaXRlbS5uZXh0U2libGluZyl7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0ubmV4dFNpYmxpbmcuc2V0QXR0cmlidXRlKCdzdHlsZScsJ2JvcmRlcjogc29saWQgI0VFRTtib3JkZXItd2lkdGg6IDAgM3B4IDNweCAwOycpCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3RMZWZ0VmFsdWUgPSAwOwogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICBsZXQgc2V0TGlzdElEID0gaXRlbS5pZDsKCgogICAgICAgICAgICAgICAgICAgICAgICBHTV9zZXRWYWx1ZShzZXRMaXN0SUQsbGlzdExlZnRWYWx1ZSk7CgogICAgICAgICAgICAgICAgICAgIH0pCgogICAgICAgICAgICAgICAgfSk7CgogICAgICAgICAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmljb25TZXRTYXZlJykuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCgpPT57CgogICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uLnJlbG9hZCgpOwoKICAgICAgICAgICAgICAgIH0pCgogICAgICAgICAgICB9CgogICAgICAgIH0pCgogICAgICAgIH0KCiAgICB2YXIgZG9tSGVhZCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdoZWFkJylbMF07CgogICAgdmFyIGRvbVN0eWxlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3R5bGUnKTsKCiAgICBkb21TdHlsZS50eXBlID0gJ3RleHQvY3NzJzsKCiAgICBkb21TdHlsZS5yZWwgPSAnc3R5bGVzaGVldCc7CgogICAgZnVuY3Rpb24gZ2V0UXVlcnlTdHJpbmcoZSkgewogICAgICAgIHZhciB0ID0gbmV3IFJlZ0V4cCgiKF58JikiICsgZSArICI9KFteJl0qKSgmfCQpIik7CiAgICAgICAgdmFyIGEgPSB3aW5kb3cubG9jYXRpb24uc2VhcmNoLnN1YnN0cigxKS5tYXRjaCh0KTsKICAgICAgICBpZiAoYSAhPSBudWxsKSByZXR1cm4gYVsyXTsKICAgICAgICByZXR1cm4gIiI7CiAgICB9CgogICAgZnVuY3Rpb24gcmVxdWVzdChtZXRob2QsdXJsLGRhdGEsaXNDb29raWU9JycpewoKICAgICAgICBsZXQgcmVxdWVzdCA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpOwoKICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUscmVqZWN0KT0+ewoKICAgICAgICAgICAgcmVxdWVzdC5vbnJlYWR5c3RhdGVjaGFuZ2U9ZnVuY3Rpb24oKXsKCiAgICAgICAgICAgICAgICBpZihyZXF1ZXN0LnJlYWR5U3RhdGU9PTQpewoKICAgICAgICAgICAgICAgICAgICBpZihyZXF1ZXN0LnN0YXR1cz09MjAwKXsKCiAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUocmVxdWVzdC5yZXNwb25zZVRleHQpOwoKICAgICAgICAgICAgICAgICAgICB9ZWxzZXsKCiAgICAgICAgICAgICAgICAgICAgICAgIHJlamVjdChyZXF1ZXN0LnN0YXR1cyk7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgcmVxdWVzdC5vcGVuKG1ldGhvZCx1cmwpOwogICAgICAgICAgICAvL3JlcXVlc3Qud2l0aENyZWRlbnRpYWxzID0gdHJ1ZTsKICAgICAgICAgICAgaWYoaXNDb29raWUpewogICAgICAgICAgICAgICAgcmVxdWVzdC53aXRoQ3JlZGVudGlhbHMgPSB0cnVlOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJlcXVlc3Quc2V0UmVxdWVzdEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCcpOwogICAgICAgICAgICByZXF1ZXN0LnNlbmQoZGF0YSk7CgogICAgICAgIH0pCgogICAgfQoKICAgIGZ1bmN0aW9uIGNyZWF0ZUVsZW1lbnQoZG9tLGRvbUlkKXsKCiAgICAgICAgdmFyIHJvb3RFbGVtZW50ID0gZG9jdW1lbnQuYm9keTsKCiAgICAgICAgdmFyIG5ld0VsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KGRvbSk7CgogICAgICAgIG5ld0VsZW1lbnQuaWQgPSBkb21JZDsKCiAgICAgICAgdmFyIG5ld0VsZW1lbnRIdG1sQ29udGVudCA9IGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCcnKTsKCiAgICAgICAgcm9vdEVsZW1lbnQuYXBwZW5kQ2hpbGQobmV3RWxlbWVudCk7CgogICAgICAgIG5ld0VsZW1lbnQuYXBwZW5kQ2hpbGQobmV3RWxlbWVudEh0bWxDb250ZW50KTsKCiAgICB9CgogICAgZnVuY3Rpb24gZ2V0RWxlbWVudChjc3MsYWxsPScnKXsKCiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLHJlamVjdCk9PnsKCiAgICAgICAgICAgIGxldCBudW0gPSAwOwoKICAgICAgICAgICAgbGV0IHRpbWVyID0gc2V0SW50ZXJ2YWwoZnVuY3Rpb24oKXsKCiAgICAgICAgICAgICAgICBudW0rKwoKICAgICAgICAgICAgICAgIGxldCBkb207CgogICAgICAgICAgICAgICAgaWYoYWxsID09IGZhbHNlKXsKCiAgICAgICAgICAgICAgICAgICAgZG9tID0gZG9jdW1lbnQucXVlcnlTZWxlY3Rvcihjc3MpOwoKICAgICAgICAgICAgICAgICAgICBpZihkb20pewoKICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbCh0aW1lcik7CgogICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKGRvbSk7CgogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICB9ZWxzZXsKCiAgICAgICAgICAgICAgICAgICAgZG9tID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChjc3MpOwoKICAgICAgICAgICAgICAgICAgICBpZihkb20ubGVuZ3RoPjApewoKICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbCh0aW1lcik7CgogICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKGRvbSk7CgogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBpZihudW09PTIwKXsKICAgICAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKHRpbWVyKTsKICAgICAgICAgICAgICAgICAgICByZXNvbHZlKGZhbHNlKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgIH0sMzAwKQoKICAgICAgICB9KQogICAgfQoKICAgIGZ1bmN0aW9uIGdldENvdXBvblN0eWxlKCl7CgogICAgICAgIHZhciBjb3Vwb25TdHlsZSA9YAogICAgICAgICAgICAgICAgICAgIGh0bWx7CiAgICAgICAgICAgICAgICAgICAgLS1yaWdodDoxMDAlOwogICAgICAgICAgICAgICAgICAgIC0tbGVmdDoxMDAlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgLnpobV9jb3Vwb257CiAgICAgICAgICAgICAgICAgICAgd2lkdGg6Zml0LWNvbnRlbnQ7CiAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICAgICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjpyb3c7CiAgICAgICAgICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOwogICAgICAgICAgICAgICAgICAgIGFsaWduLWl0ZW1zOmZsZXgtc3RhcnQ7CiAgICAgICAgICAgICAgICAgICAgZm9udC1zaXplOjE0cHg7CiAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgICAgICAgICAgICAgIG1hcmdpbjoxNXB4IDBweCAxNXB4IDBweDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIC56aG1fbGVmdHsKICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgICAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOnJvdzsKICAgICAgICAgICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1zdGFydDsKICAgICAgICAgICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgICAgICAgICAgICAgIGZvbnQtc2l6ZToxNHB4OwogICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6IHJhZGlhbC1ncmFkaWVudChjaXJjbGUgYXQgcmlnaHQgdG9wLCB0cmFuc3BhcmVudCA4cHgsI2ZmZiAwKSB0b3AgbGVmdCAvdmFyKC0tcmlnaHQpIDUxJSBuby1yZXBlYXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCByaWdodCBib3R0b20sIHRyYW5zcGFyZW50IDhweCwgI2ZmZiAwKSBib3R0b20gbGVmdCAvdmFyKC0tcmlnaHQpIDUxJSBuby1yZXBlYXQ7CiAgICAgICAgICAgICAgICAgICAgZmlsdGVyOiBkcm9wLXNoYWRvdygycHggMnB4IDNweCAjODg4KTsKICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6ODRweDsKICAgICAgICAgICAgICAgICAgICB3aWR0aDoxMDAlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgLnpobV9pbWdfaWNvbnsKICAgICAgICAgICAgICAgICAgICBwYWRkaW5nOjRweCAwcHggMHB4IDVweDsKICAgICAgICAgICAgICAgICAgICBtYXJnaW4tcmlnaHQ6NXB4OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgLnpobV9pbWdfaWNvbiBpbWd7CiAgICAgICAgICAgICAgICAgICAgd2lkdGg6NDdweDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIC56aG1fY29udGVudHsKICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgICAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOmNvbHVtbjsKICAgICAgICAgICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IDE4cHg7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAuemhtX21vbmV5ewogICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgICAgICAgICAgICAgZmxleC1kaXJlY3Rpb246cm93OwogICAgICAgICAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDsKICAgICAgICAgICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgLnpobV9hbW91bnRfbW9uZXl7CiAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICAgICAgICAgICAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIC56aG1fbW9uZXlfc2lnbnsKICAgICAgICAgICAgICAgICAgICBjb2xvcjojZjIzMDMwOwogICAgICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMjBweDsKICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseTogQXJpYWw7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAuemhtX21vbmV5X251bXsKICAgICAgICAgICAgICAgICAgICBjb2xvcjojZjIzMDMwOwogICAgICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTozNnB4OwogICAgICAgICAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAycHg7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAuemhtX2NvbmRpdGlvbnsKICAgICAgICAgICAgICAgICAgICBjb2xvcjojZmIwZjNhOwogICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmY0ZWM7CiAgICAgICAgICAgICAgICAgICAgbWFyZ2luLXRvcDo1cHg7CiAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IDVweDsKICAgICAgICAgICAgICAgICAgICBwYWRkaW5nOjJweCA1cHg7CiAgICAgICAgICAgICAgICAgICAgZm9udC1zaXplOjEycHg7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAuemhtX3RpbWV7CiAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICAgICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjpyb3c7CiAgICAgICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogLTVweDsKICAgICAgICAgICAgICAgICAgICBwYWRkaW5nOjJweCA0cHg7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAuemhtX3Rlcm17CiAgICAgICAgICAgICAgICAgICAgY29sb3I6I2ZiMGYzYTsKICAgICAgICAgICAgICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAjZmIwZjNhOwogICAgICAgICAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6MnB4OwogICAgICAgICAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgICAgICAgICAgICAgcGFkZGluZzowcHggNHB4OwogICAgICAgICAgICAgICAgICAgIGZvbnQtc2l6ZToxMnB4OwogICAgICAgICAgICAgICAgICAgIGhlaWdodDogMThweDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIC56aG1fZGF0ZXsKICAgICAgICAgICAgICAgICAgICBmb250LXNpemU6IDE0cHg7CiAgICAgICAgICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgICAgICAgICAgICAgICAgICBwYWRkaW5nLWxlZnQ6OHB4OwoKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIC56aG1fY2lyY2xlewogICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6ICNmYjBmM2EgdXJsKGRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQWdBQUFBSUNBWUFBQURFRDc2TEFBQUFDWEJJV1hNQUFBc1NBQUFMRWdIUzNYNzhBQUFBelVsRVFWUVlsUzNOTVVvRFFSaUc0WGNtdTlsQVhCUWJxKzFDQ3F1Y3dzYk9PM2dBUzI5aDRRbThnUmRJTUtWZ2xRVkJGaVNGallLQnFXWjJkLzdQSXZZUFBFNlNNQ0h2Y0Q4SHVMekJVc0lLRHlZOEFONFJVK0o5LzhuSDhvTFlKM3dXY2h4QmpKSHRaa04xZnNicDlvbXZoenY2Y2NEalFKTGF0bFhYZFpJazVhd2tLVnpkS2s5VzhnQkZVVkRYTlFBMmpKVEE3R1NPbVIyTHBta0lJV0E1NDZzcHZPNXdMMjlRejNHU0JCQ0hubndJek80ZjBmTWFZb0t5L0FjbThBNitmeGtYMTVBTnFpbVk4UWVtQ205MjByMWFVQUFBQUFCSlJVNUVya0pnZ2c9PSkgcmVwZWF0LXk7CiAgICAgICAgICAgICAgICAgICAgbWFyZ2luLXRvcDoxMHB4OwogICAgICAgICAgICAgICAgICAgIHdpZHRoOiAxMHB4OwogICAgICAgICAgICAgICAgICAgIGhlaWdodDo2NnB4OwogICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICAgICAgICAgICAgICByaWdodDo5N3B4OwogICAgICAgICAgICAgICAgICAgIHotaW5kZXg6MjsKICAgICAgICAgICAgICAgICAgICBmaWx0ZXI6bm9uZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIC56aG1fbGlua19jb3Vwb257CiAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICAgICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjpyb3c7CiAgICAgICAgICAgICAgICAgICAgYWxpZ24taXRlbXM6Y2VudGVyOwogICAgICAgICAgICAgICAgICAgIGZpbHRlcjogZHJvcC1zaGFkb3coMnB4IDJweCAzcHggIzg4OCk7CiAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZDogcmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCBsZWZ0IHRvcCwgdHJhbnNwYXJlbnQgOHB4LCAjZmIwNTNhIDApIHRvcCByaWdodCAvdmFyKC0tbGVmdCkgNTAlIG5vLXJlcGVhdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IGxlZnQgYm90dG9tLCB0cmFuc3BhcmVudCA4cHgsICNmYjA1M2EgMCkgYm90dG9tIHJpZ2h0IC92YXIoLS1sZWZ0KSA1MCUgbm8tcmVwZWF0OwogICAgICAgICAgICAgICAgICAgIGhlaWdodDogODRweDsKICAgICAgICAgICAgICAgICAgICBwYWRkaW5nOjBweCA2cHggMHB4IDRweDsKCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAuemhtX2dldF9saW5rX3RleHR7CiAgICAgICAgICAgICAgICAgICAgY3Vyc29yOnBvaW50ZXI7CiAgICAgICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogMHB4OwogICAgICAgICAgICAgICAgICAgIHdyaXRpbmctbW9kZTp2ZXJ0aWNhbC1scjsKICAgICAgICAgICAgICAgICAgICBsZXR0ZXItc3BhY2luZzowcHg7CiAgICAgICAgICAgICAgICAgICAgY29sb3I6ICNmZmYgIWltcG9ydGFudDsKICAgICAgICAgICAgICAgICAgICBmb250LXNpemU6MTRweDsKICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseToiTWljcm9zb2Z0IFlhSGVpIjsKICAgICAgICAgICAgICAgICAgICB0ZXh0LWRlY29yYXRpb246bm9uZTsKICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IGxlZnQgdG9wLCB0cmFuc3BhcmVudCA4cHgsICNmYjA1M2EgMCkgdG9wIHJpZ2h0IC92YXIoLS1sZWZ0KSA1MCUgbm8tcmVwZWF0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChjaXJjbGUgYXQgbGVmdCBib3R0b20sIHRyYW5zcGFyZW50IDhweCwgI2ZiMDUzYSAwKSBib3R0b20gcmlnaHQgL3ZhcigtLWxlZnQpIDUwJSBuby1yZXBlYXQ7CgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgLnpobV9nZXRfbGlua190ZXh0OmhvdmVyewogICAgICAgICAgICAgICAgdGV4dC1kZWNvcmF0aW9uOm5vbmU7CiAgICAgICAgICAgICAgICBmb250LXdlaWdodDo4MDA7CiAgICAgICAgICAgICAgICBmb250LWZhbWlseToiTWljcm9zb2Z0IFlhSGVpIjsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgLnpobV9xcmNvZGV7CiAgICAgICAgICAgICAgIGJvcmRlcjozcHggc29saWQgI2ZmZjsKICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgYDsKCiAgICAgICAgICAgIGRvbVN0eWxlIC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShjb3Vwb25TdHlsZSkpOwoKICAgICAgICAgICAgZG9tSGVhZC5hcHBlbmRDaGlsZChkb21TdHlsZSk7CiAgICB9CgogICAgLy9ydW4gY291cG9uCiAgICBsZXQgY291cG9uV2ViID1bCiAgICAgICAge2Z1bmNOYW1lOiJ0YW9iYW8iLG5vZGU6IiNKX2p1VmFsaWQiLG1hdGNoOi9pdGVtXC50YW9iYW9cLmNvbS8saXNPcGVuOnRhb2Jhb0NvdXBvbn0sCiAgICAgICAge2Z1bmNOYW1lOiJ0bWFsbENhb3NoaSIsbm9kZToiI0pfTGlua0J1eSIsbWF0Y2g6L15odHRwcz86XC9cL2NoYW9zaGkuZGV0YWlsLnRtYWxsLmNvbVwvLyxpc09wZW46dGFvYmFvQ291cG9ufSwKICAgICAgICB7ZnVuY05hbWU6InRtYWxsQ2Fvc2hpIixub2RlOiIuQWN0aW9ucy0tbGVmdEJ1dHRvbnMtLTFNM0trRjciLG1hdGNoOi9eaHR0cHM/OlwvXC9jaGFvc2hpLmRldGFpbC50bWFsbC5jb21cLy8saXNPcGVuOnRhb2Jhb0NvdXBvbn0sCiAgICAgICAge2Z1bmNOYW1lOiJ0bWFsbCIsbm9kZToiLkJhc2ljQ29udGVudC0tYWN0aW9ucy0tMWNvOHN4OCIsbWF0Y2g6L15odHRwcz86XC9cL2RldGFpbFwudG1hbGxcLmNvbS8saXNPcGVuOnRhb2Jhb0NvdXBvbn0sCiAgICAgICAge2Z1bmNOYW1lOiJ0bWFsbCIsbm9kZToiI0pfTGlua0J1eSIsbWF0Y2g6L15odHRwcz86XC9cL2RldGFpbFwudG1hbGxcLmNvbS8saXNPcGVuOnRhb2Jhb0NvdXBvbn0sCiAgICAgICAge2Z1bmNOYW1lOiJ0bWFsbE90aGVyIixub2RlOiIudG0tbXNnLWJveCIsbWF0Y2g6L15odHRwcz86XC9cL2RldGFpbFwudG1hbGxcLmNvbS8saXNPcGVuOnRhb2Jhb0NvdXBvbn0sCiAgICAgICAge2Z1bmNOYW1lOiJ0bWFsbCIsbm9kZToiLkJhc2ljQ29udGVudC0tYWN0aW9ucy0tMWNvOHN4OCIsbWF0Y2g6L15odHRwcz86XC9cL2RldGFpbFwudG1hbGxcLmhrLyxpc09wZW46dGFvYmFvQ291cG9ufSwKICAgICAgICB7ZnVuY05hbWU6ImpkIixub2RlOiIjY2hvb3NlLWJ0bnMiLG1hdGNoOi9pdGVtXC5qZFwuY29tLyxpc09wZW46amluZ2RvbmdDb3Vwb259LAogICAgICAgIHtmdW5jTmFtZToiamQiLG5vZGU6IiNjaG9vc2UtYnRucyIsbWF0Y2g6L1wueWl5YW9qZFwuY29tLyxpc09wZW46amluZ2RvbmdDb3Vwb259LAogICAgICAgIHtmdW5jTmFtZToiamQiLG5vZGU6IiNjaG9vc2UtYnRucyIsbWF0Y2g6L25wY2l0ZW1cLmpkXC5oay8saXNPcGVuOmppbmdkb25nQ291cG9ufSwKICAgICAgICB7ZnVuY05hbWU6InNob3dUYW90YW9Hb29kcyIsbm9kZToiI3BhZ2UiLG1hdGNoOi9eaHR0cHM/OlwvXC9zXC50YW9iYW9cLmNvbVwvc2VhcmNoXD8uKi8saXNPcGVuOnNob3dUYW90YW9Hb29kc30sCiAgICBdOwoKICAgIHZhciBub3dXZWI9W107CgogICAgY291cG9uV2ViLmZvckVhY2goZnVuY3Rpb24oaXRlbSl7CiAKICAgICAgICBsZXQgcmVzdWx0ID0gbG9jYXRpb24uaHJlZi5tYXRjaChpdGVtLm1hdGNoKTsKCiAgICAgICAgaWYocmVzdWx0ICYmIGl0ZW0uaXNPcGVuPT0yMil7CgogICAgICAgICAgICBub3dXZWIucHVzaChpdGVtKTsKCiAgICAgICAgfQogICAgICAgCiAgICB9KQoKICAgIGxldCB3ZWIgPSB7fTsKCiAgICBpZihub3dXZWIubGVuZ3RoPT0wKXsKCiAgICAgICAgY29uc29sZS5sb2coJ+ayoeacieWMuemFjeivpee9keermeaIluivpeaooeWdl+W3suWFs+mXrScpO3JldHVybjsKCiAgICB9ZWxzZXsKCiAgICAgICBmb3IobGV0IGk9MDtpPG5vd1dlYi5sZW5ndGg7aSsrKXsKCiAgICAgICAgICAgaWYoZG9jdW1lbnQucXVlcnlTZWxlY3Rvcihub3dXZWJbaV0ubm9kZSkpewoKICAgICAgICAgICAgICAgd2ViID0gbm93V2ViW2ldO2JyZWFrOwoKICAgICAgICAgICB9CiAgICAgICB9CgogICAgfQoKICAgIGlmKCF3ZWIubm9kZSl7Y29uc29sZS5sb2coJ+acquiOt+WPluiKgueCuScpO3JldHVybjt9CgogICAgc3dpdGNoKHdlYi5mdW5jTmFtZSl7CiAgICAgICAgY2FzZSAndG1hbGwnOgogICAgICAgICAgICBnZXRUbWFsbENvdXBvbih3ZWIubm9kZSk7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIGNhc2UgJ3RtYWxsQ2Fvc2hpJzoKICAgICAgICAgICAgZ2V0VG1hbGxDYW9zaGlDb3Vwb24od2ViLm5vZGUpOwogICAgICAgICAgICBicmVhazsKICAgICAgICBjYXNlICd0YW9iYW8nOgogICAgICAgICAgICBnZXRUYW9iYW9Db3Vwb24od2ViLm5vZGUpOwogICAgICAgICAgICBicmVhazsKICAgICAgICBjYXNlICdqZCc6CiAgICAgICAgICAgIGdldEpkQ291cG9uKHdlYi5ub2RlKTsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSAnc2hvd1Rhb3Rhb0dvb2RzJzoKICAgICAgICAgICAgdGFvYmFvU2VhcmNoKCk7CiAgICAgICAgICAgIGJyZWFrOwoKICAgIH0KCiAgICBmdW5jdGlvbiBnZXRUYW9iYW9Db3Vwb24obm9kZUNzcyl7CgogICAgICAgIGdldENvdXBvblN0eWxlKCk7CgogICAgICAgIGxldCBub2RlID0gZG9jdW1lbnQucXVlcnlTZWxlY3Rvcihub2RlQ3NzKTsKCiAgICAgICAgbm9kZS5zdHlsZT0nb3ZlcmZsb3c6aW5oZXJpdDsnCgogICAgICAgIGxldCBjbGFzc05hbWUgPSAnemhtX3RhYl90YW9iYW8nOwoKICAgICAgICBnZXRUaXRsZVNob3AoJy50Yi1tYWluLXRpdGxlJywnLnRiLXNob3AtbmFtZSA+IGRsID4gZGQgPiBzdHJvbmcgPiBhJykudGhlbihmdW5jdGlvbihyZXNwKXsKCiAgICAgICAgICAgIGdldENvdXBvbkluZm8obm9kZSxjbGFzc05hbWUscmVzcC5nb29kc1RpdGxlLHJlc3Auc2hvcE5hbWUpOwoKICAgICAgICB9KTsKCiAgICB9CgogICAgZnVuY3Rpb24gZ2V0VG1hbGxDb3Vwb24obm9kZUNzcyl7CgogICAgICAgIGdldENvdXBvblN0eWxlKCk7CgogICAgICAgIGxldCBub2RlID0gZG9jdW1lbnQucXVlcnlTZWxlY3Rvcihub2RlQ3NzKTsKCiAgICAgICAgbGV0IGNsYXNzTmFtZSA9ICd6aG1fdGFiX3RtYWxsJzsKCiAgICAgICAgZ2V0VGl0bGVTaG9wKCcuSXRlbUhlYWRlci0tbWFpblRpdGxlLS0zQ0lqcVc1JywnLlNob3BIZWFkZXItLXRpdGxlLS0ycXNCRTFBJykudGhlbihmdW5jdGlvbihyZXNwKXsKCiAgICAgICAgICAgZ2V0Q291cG9uSW5mbyhub2RlLGNsYXNzTmFtZSxyZXNwLmdvb2RzVGl0bGUscmVzcC5zaG9wTmFtZSk7CgogICAgICAgIH0pOwoKICAgIH0KCiAgICBmdW5jdGlvbiBnZXRUbWFsbENhb3NoaUNvdXBvbihub2RlQ3NzKXsKCiAgICAgICAgZ2V0Q291cG9uU3R5bGUoKTsKCiAgICAgICAgbGV0IG5vZGUgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKG5vZGVDc3MpOwoKICAgICAgICBsZXQgY2xhc3NOYW1lID0gJ3pobV90YWJfdG1hbGwnOwoKICAgICAgICBnZXRUaXRsZVNob3AoJy5JdGVtSGVhZGVyLS1tYWluVGl0bGUtLTNDSWpxVzUnLCcuU2hvcEhlYWRlci0tdGl0bGUtLTJxc0JFMUEnKS50aGVuKGZ1bmN0aW9uKHJlc3ApewoKICAgICAgICAgICAgZ2V0Q291cG9uSW5mbyhub2RlLGNsYXNzTmFtZSxyZXNwLmdvb2RzVGl0bGUscmVzcC5zaG9wTmFtZSk7CgogICAgICAgIH0pOwoKCgogICAgfQoKICAgIGZ1bmN0aW9uIHRtYWxsT3RoZXIobm9kZUNzcyl7CgogICAgICAgIGxldCBub2RlID0gZG9jdW1lbnQucXVlcnlTZWxlY3Rvcihub2RlQ3NzKTsKCiAgICAgICAgbGV0IGNsYXNzTmFtZSA9ICd6aG1fdGFiX3RtYWxsJzsKCiAgICAgICAgZ2V0VGl0bGVTaG9wKCcuSXRlbUhlYWRlci0tbWFpblRpdGxlLS0zQ0lqcVc1JywnLlNob3BIZWFkZXItLXRpdGxlLS0ycXNCRTFBJykudGhlbihmdW5jdGlvbihyZXNwKXsKCiAgICAgICAgICAgIGdldENvdXBvbkluZm8obm9kZSxjbGFzc05hbWUscmVzcC5nb29kc1RpdGxlLHJlc3Auc2hvcE5hbWUpOwoKICAgICAgICB9KTsKCiAgICAgICAgLy90aGlzLmdldENvdXBvbkluZm8obm9kZSxjbGFzc05hbWUpOwogICAgfQoKICAgIGZ1bmN0aW9uIGdldFRpdGxlU2hvcCh0aXRsZSxzaG9wKXsKCiAgICAgICAgYXN5bmMgZnVuY3Rpb24gcmVzcCgpewoKICAgICAgICAgICAgbGV0IGdvb2RzVGl0bGVEb20gPSBhd2FpdCBnZXRFbGVtZW50KHRpdGxlKTsKCiAgICAgICAgICAgIGxldCBzaG9wTmFtZURvbSA9IGF3YWl0IGdldEVsZW1lbnQoc2hvcCk7CgogICAgICAgICAgICAvL2NvbnNvbGUubG9nKGdvb2RzVGl0bGVEb20sc2hvcE5hbWVEb20pOwoKICAgICAgICAgICAgbGV0IGdvb2RzVGl0bGU9Z29vZHNUaXRsZURvbT9nb29kc1RpdGxlRG9tLmlubmVyVGV4dDonJzsKCiAgICAgICAgICAgIGxldCBzaG9wTmFtZSA9IHNob3BOYW1lRG9tP3Nob3BOYW1lRG9tLmlubmVyVGV4dDonJzsKCiAgICAgICAgICAgIHZhciBkYXRhID0ge307CgogICAgICAgICAgICBkYXRhLmdvb2RzVGl0bGUgPSBnb29kc1RpdGxlOwoKICAgICAgICAgICAgZGF0YS5zaG9wTmFtZSA9IHNob3BOYW1lOwoKICAgICAgICAgICAgcmV0dXJuIGRhdGE7CgogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHJlc3AoKTsKCiAgICB9CgogICAgZnVuY3Rpb24gZ2V0Q291cG9uSW5mbyhub2RlLGNsYXNzTmFtZSxnb29kc1RpdGxlLHNob3BOYW1lKXsKCiAgICAgICAgc2V0VGltZW91dCgoKT0+ewoKICAgICAgICAgICAgbGV0IGdvb2RzX2lkID0gZ2V0UXVlcnlTdHJpbmcoJ2lkJyk7CgogICAgICAgICAgICBpZighZ29vZHNfaWQpe2NvbnNvbGUubG9nKCdnb29kc19pZCcpO3JldHVybn07CgogICAgICAgICAgICBsZXQgZGl2RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwoKICAgICAgICAgICAgZGl2RWxlbWVudC5pZD0nemhtX2Rpdl9zJzsKCiAgICAgICAgICAgIG5vZGUuYmVmb3JlKGRpdkVsZW1lbnQpOwoKICAgICAgICAgICAgbGV0IHVybCA9IGBodHRwczovL2FwaS50eXBlY2hyb21lLmNvbS9nZXRjb3Vwb24ucGhwP2dvb2RzX2lkPSR7Z29vZHNfaWR9Jmdvb2RzX3RpdGxlPSR7ZW5jb2RlVVJJQ29tcG9uZW50KGdvb2RzVGl0bGUpfSZzaG9wX25hbWU9JHtlbmNvZGVVUklDb21wb25lbnQoc2hvcE5hbWUpfWA7CmNvbnNvbGUubG9nKHVybCk7CiAgICAgICAgICAgIHJlcXVlc3QoJ2dldCcsdXJsKS50aGVuKChyZXN1bHQpPT57CgogICAgICAgICAgICAgICAgbGV0IHJlc3A9IEpTT04ucGFyc2UocmVzdWx0KTsKCiAgICAgICAgICAgICAgICBpZihyZXNwLmNvZGU9PTIwMCl7CgogICAgICAgICAgICAgICAgICAgIGxldCBodG1sID0KICAgICAgICAgICAgICAgICAgICAgICAgYAogICAgICAgIDxkaXYgY2xhc3M9InpobV9jb3Vwb24iPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJ6aG1fbGVmdCI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ6aG1faW1nX2ljb24iPgogICAgICAgIDxpbWcgc3JjPSJkYXRhOmltYWdlL2dpZjtiYXNlNjQsUjBsR09EbGhaQUJrQUhqL0FDSC9DMDVGVkZORFFWQkZNaTR3QXdFQUFBQWgrUVFKTEFIL0FDd0FBQUFBWkFCa0FLZjZCRG42QkRuNkJEbjZCRG42QkRuNkJEbjZCRG42QkRuNkJEbjZCRG42QkRyNkJUcjZCVHI2QlRyNkJUcjZCVHI2QlRyNkJqcjZCanI2Qmp2NkJqdjZCanY2Qmp2NkJ6djZCenY2Q0R6NkNEejZDVDM2Q1QzNkNUMzZDajc2Q3o3NkN6LzZDei82REQvNkRFRDZEVUQ2RFVENkRrSDZEa0g2RGtINkQwTDZFRUw2RVVQNkVVVDZFa1Q3RTBYN0ZFWDdGRWI3RkViN0ZVYjdGVWY3RlVmN0ZrZjdGa2Y3RjBqN0YwajdGMGo3RjBqN0dFajdHRW43R1VyN0drdjdHMHY3SEV6N0hVMzdIMC83SVZEN0kxSDdKRkw3SmxUN0oxVDdLRmI3S1ZiN0tsZjdLMWo3TGxyN01GejdNbDM3TkYvOE5tRDhPR0w4T21UOFBHWDhQMmY4UVduOFEycjhSR3Y4Um0zOFJtMzhSMjc4U0cvOFNYRDhTbkQ4VEhMOFRuUDhUM1Q4VUhYOFVuZjhWSGo4VjN2OFczNzhZSUw4WklYOGFvbjhiNDM4Y1kvN2NJNzZiWXY0YTRuMWFZZnVaNFRqWkgvVVpIekhabnU4YVhxdGJIcWliM3FXYzNxSWQzdUFlSHA1ZVhsNmVucDdlM3Q4Zkh4OWZYMStmbjUvZjMrQWdJQ0JnWUdDZ29LRGc0T0VoSVNGaFlXR2hvYUhoNGVJaUlpSmlZbUtpb3FMaTR1TWpJeU5qWTJPam82UGo0K1FrSkNSa1pHU2twS1RrNU9VbEpTVmxaV1dscGFYbDVlWW1KaVptWm1hbXBxYm01dWNuSnlkbloyZW5wNmZuNStnb0tDaG9hR2lvcUtqbzZPa3BLU2xwYVdycHFlMnFLdkFxYTdKcXJIUXE3UFhyTFhkckxmaXJiam9yTG51cXJueXFMajFwN2ozcGJmNXBMYjZvcmI3b3JYOG9iWDhvTFQ5b0xUOW9MVDlvYlg5b3JiOW83ZjlwYmo5cHJuOXA3bjlxTHI5cUx2OXFidjlxYnY5cXJ6OXFyejlxcno5cTd6OXE3MzlxNzM5cmI3OXJyLzlzTUg4c3NMOHRNVDh0c1g4dU1mN3VzbjZ2Y3I2d016NXdzNzR3OC80eGREM3g5SDN5TkwyeXRUMXk5WDB6ZGJ6ME5meTB0bngxTnJ4MU52eDFkdngxdHp4MTkzdzJOM3gyZC93MjkvdjNPSHYzdUx2NE9QdjR1WHU1ZWZ1NStudTZ1dnQ3ZTN1N3U3djcrL3c4UER4OGZIeTh2THo4L1AwOVBUMTlmWDI5dmI0K1BqNStmbjcrL3Y4L1B6OS9mMysvdjcrL3Y3Ky92NHl6VElJL2dEL0NSeElzS0RCZ3dnVEtseklzS0hEaHhBWnFsdlNKS0xGaXhnei9pdEQ1TVFKSTJvMGloeEpNZ2tIQndvOFBDSEpzdVZEWWtJY3lKUlF4Si9MbXpnTDRvbzVrNGpObkVCZDRob2kwNEVFbjBHVEdqUUhSVW1TTHc2SEZqMzZrMkdYSlVtZ1ZGVUtzVWtLQ2hoNmpHa290ZWZXaEdKOGFLQ1F3Z25YaUdWNkZNVlFrMkZabzBnWCtqdWlRYWFDSHJqZVBxVGlvcWlERkZjWWJpTXFrd0tTaGxaV0tKQlpJRWRJd1EyM0VhRlFsSUlRWnd5anFLQkFRY1VVdTBJNE54NXlGblBDS2lzTWc0akNzQnNVSWtXa05JUlN3ckNLTGE0ZCtqT0N3WENQeXl6Ui9EQ000VWp3aDF3S0Z4MVJ4ZVdZRmdXS3dpanovS0dTa3c0Sy9zQXc0NUlNak93cEszWjNTQ2JJMmhUcVcvcGJVb0tDaHlISTF6TXNVMlNJVnB5L05ERkVFbW5vaHhNdVZFQ1JSUlpZWENFRUZyNFk2Sm9hVWhqaHd3d3NlQUJDQ1NXSW9JRUxMZ2lSeEJTOFNBaVVQMU1RTWNNSUdraGcySXNPVUtCQkNUd2tFWWFKQlpIVDJrTlNDSkZDY1RBR2FSZ0hMUmdoUmtiK3hKT2NFalBZd0VSZ0VIVXh4RmRDVnZraUJpNHNrVjlEYUN5Umd3MUxRS25SRWlESUJNSVBWT3hva0Q5UTJBQmtrQkp3QmxhTUxnckpnUStKTldUTkV6eDRJSk1JOFdHa25HRVVuRUNFRnd1cGNVUnZRYzdZUWc5R25GQ0NDakFnMFFNTUovUUZJd1V0UEtIbVFGVUVNY0tMT2NDajBhQlh1cUFiUW1jUTRlZUwvaFNNME1NUlUydzVrQnBVR0pIRENLb1pkc0lTbnpiQlFxOUY4ZkNwUTB5VUNlTnhCNTBoaEthR2xTQkVGTXBFQlVVUWpCb213aEhtSEZSR0RrR2VRSnRJYWlUUndwdG1qa3NRR3MrK3FFRU9VaHlMa0Q5UjhBQ3RUQjhBYTVBWEttUlhsQVl3T0tFTlMxb01jWUpxQ3JoQVJrSGdIQUZlVVNJVWNZWkdaaGlSclV6aUd2VHRaREdxWU1SWU4wa0J4QWtnc0xCU1FVMk02bXNUOGpia2oxY3Z1b0JvUVU2b0FNSUpRbFFIVkRCVVBNR0ZRVjNBOEdJS1VMajBSR3lkQWJIbE9sVTRrV1ozdHd5QnJnaHUzZFRFQ1VNeWdTTkJ2Qm1tZ1JFdEM2U0dyUWtwOGFwTUxjeU1veHBCdlBnRDJRYVJRVVFPT1J3QmQwRnFwRGFYL2hGYi94UEZ4U2Zvdk5BeVJHaFFRRXBKT0pSRkMwVXB3TUtSSnBLeldXZDVMVFNHQy81V2RuZEJmUDJydFlsZHVNQ3hBeXAwNGRBWUxHUytuVU5lU0NjVEQ1c0w1c1RaRXJCMk9uYVV5Y0NkeThSTkovaDYvZ3pScXdmcU1uUmQ1aktRNTFBVldNdUV3UklTZnR1NEM3czNkSHp1eWpkMEJnK0crWkNPZ1dHd01Eb1EzOStPZlBZTStUTjVlRE93WWVBVDJUb0cwZlhoSmQvVnd5Tm9nWk1aVGluaHYxTkpRSjlBblBBd0Ruek9mTmlEQ1B5bWt3V0RmQ0VKLy9OZkVwb1FPN0VSZ1FPa3lTQUZPSUNmZ2tBQldpWFEzMFBvVndEN1BRUU1xWk9KQVFzeUJ2ZG9rRFFnTUVJMkdKS0VFb3l1S0FXZ0RzcEFDSlVSNHE1Ky9nSmNDQmwrS0FFZ2VQQnNML0pBRHhoaWczdkpabFVEV2NLYlN0QkRCQUlSSWtQMFZ4RUw4b1NId1lvRERBa0R1QlJBeGpJcW9BVWdHOGdUUUtnMjYvMndoRUZVaUJkV29FVWpFb1FLTFRCakdSMlFneW9xUkFvL0FKRWdYWkNEazNFTldpQ0FvaHZQQjVGa0ZXV0ZCSGtaRHdZSkloOVE0U0ZxMkFJV05va0ZMWkROSkh1YjN4dkgweFZvalFBTEIxRURnempaQlRHNWhBb3A0QmdGaWlCS1JncG5mUTRRQVNyMUF3YlJGY1VHRlJ5SWVUSUh1NGVnUVM2NVE0T0IyT2Fybnpua0cwaDRsUWVnOTVBcXhMSW9Qd2hiVXBEd0pnMVEweUZtT0FJTVpvQUVWeklFQ2RCNm5vbWtjREhMUkdRYjVSdWhEYUlsUWdPZEFaa3kvbEVKVjVpQVJCK1ljejFMdUJjUDNPY3lLQmpCQ0lxMEhMZzh0N1hRZVMxeDZmTUtXRlJRdFBRWjRWN1U2MXZuaXBLQ1N5NEVET2Z4aXczaVdKQW9ORThtR2xCQzMvN3hoWGthaDZRRFFjSUhERE9DTmg0a0N6TjQwUXhncWhSL0VPTWdUbENXODRnZ0RZVkE0UVFjVTBBS3dLQVFOQVNCV0NDb2FFR0NvVTJNVkNNS1A3REJFQlpHRURWSXpUQWZDSlJCMkNBRURKQVJBME9vMXJ4QVNUbG1GTVFMUThnQkVPS1ZFeW9Jb1RjS3dJQVF6QmtHbHhZbGJRcnBnaEJVb0FJaFFBNGhVMUFCcWJoNnE3SXFnQUxTc29KTHZFQUVLdm1sQk1BcGlCUlNRQ2doSEVNaDZKREMweEppQmg4TTdUUUZDWisvT2xhRTZtbWtDamxBL2hkS1RwRFpTSnBOTmxMTnlCSzg2SUVERWtRTVAveFhEdzZMa1YwSUQwWWFLTUpQRFpLR3B4ckdCaFBMaUVNN3M5ZFVGZzVHR0NDQ1NPSnlRN1pJN0RWSVErazNMZUtQSXFETEJjUXRDQm1NTUpxWXpUQWp2TkNibWRERWtPOFl4Z1ZwakVoa1JnZEpoVmhCQ0NxTGtSQ3FpaEFwMkVBRUk4aUJFN3JSa0RKdzcxOHFKYTk1RGZPMmhrempDVGtRZ1FoNllGT01qRUVLVWdqbVFKb2dWQWZBUUprUjZVSWVJWmJRaFp3QnhLNTlUaHBNK3k4YnZQREdOdzdMdllEUWpKVSt4QWt6dFpLUVlTU0NGdnVZdEFzZHNwSWQ0TThqUHdTZFN4NHlCOFRxWklWVVFRVTNqUEtMenNqWUtpK0V1M1A1QUFqR1RPWXlsOWtEYnlwQS9nK0E0ZVdHbEhaOFRsaUNuT2RNWnpwREFaOEY0TUZ5MjZ5UU44K0VsZzdwQm1QQzA0TTk4eGtoZnNhTE51K2laa01mMmlDSnBrcFVCdDNvUjVQV0J4eVRORmtvWFdoTEk1ckdlSG1JTXpqdGFFOExwTFNHRVVJWXJvQ0ZCUzJJazV5OHdoWEUwRGJLNk5uVWtBYTFBemhnNWw2WDJVTTR2RFd1Q1lKcUxRc3B6NlUyOVJrd2Jld2dLY0FHYmgzMlFIYlM3Q0I1aHNCT2hrSUw2bFJ0QjJqQUJ2V1V0a0JROUlQaHpVQUNHRWkzdXRNdGdSelFEZ2d4RnZjQW9jV0IzQm9rb0VYeGdMM2xMWkMvR1NZSDBUWElHUHlxVkQveVd5RDNaTTRRQ2xTUU1wVFZNRUNJOXNFSndnUXZhb0FIVG5DZlA4N1FoTmlDZGQ4VGp3dU1TVURnQWc5NHdBVkJub3JTSm42UUtZUlh5UzZvTGN0UmRsSWhxOERJTS8vSHkxcEFnU3d6QndiRnk3bEJyREFsMlhwYkJVTmdxdEFWNGc4cUZLSG1MVGpDTHBkTzlhb25KQ0FBSWZrRUNUSUEvd0FzQmdBQkFGZ0FZUUNuQUFBQUFRRUJBZ0lDQXdNREJBUUVCUVVGQmdZR0J3Y0hDQWdJQ1FrSkNnb0tDd3NMREF3TURRME5EZzRPRHc4UEVCQVFFUkVSRWhJU0V4TVRGQlFVRlJVVkZoWVdGeGNYR0JnWUdSa1pHaG9hR3hzYkhCd2NIUjBkSGg0ZUh4OGZJQ0FnSVNFaElpSWlJeU1qSkNRa0pTVWxKaVltSnljbktDZ29LU2twS2lvcUt5c3JMQ3dzTFMwdExpNHVMeTh2TURBd01URXhNakl5TXpNek5EUTBOVFUxTmpZMk56YzNPRGc0T1RrNU9qbzZPenM3UER3OFBUMDlQajQrUHo4L1FFQkFRVUZCUWtKQ1EwTkRSRVJFUlVWRlJrWkdSMGRIU0VoSVNVbEpTa3BLUzB0TFRFeE1UVTFOVGs1T1QwOVBVRkJRVVZGUlVsSlNVMU5UVkZSVVZWVlZWbFpXVjFkWFdGaFlXVmxaV2xwYVcxdGJYRnhjWFYxZFhsNWVYMTlmWUdCZ1lXRmhZbUppWTJOalpHUmtaV1ZsWm1abVoyZG5hR2hvYVdscGFtcHFhMnRyYkd4c2JXMXRibTV1YjI5dmNIQndjWEZ4Y25KeWMzTnpkSFIwZFhWMWRuWjJkM2QzZUhoNGVYbDVlbnA2ZTN0N2ZIeDhmWDE5Zm41K2YzOS9nSUNBZ1lHQmdvS0NnNE9EaElTRWhZV0Zob2FHaDRlSGlJaUlpWW1KaW9xS2k0dUxqSXlNalkyTmpvNk9qNCtQa0pDUWtaR1JrcEtTazVPVGxKU1VsWldWbHBhV2w1ZVhtSmlZbjUyVHFxU0t1SzErekxwcjNzVlk2Y3hON3M5SDhOQkY4TkJGOE5CRThOQkU4TkJFOE5CRThOQkU4TkJFOE5CRThOQkU4TkJFOE5CRThOQkU4TkZFOE5GRThORkU4TkZFOE5GRThORkY4TkZGOE5GRjhORkY4TkZGOE5GRjhORkY4TkZGOE5GRjhORkY4TkZHOGRGRzhkRkc4ZEZHOGRGSDhkRkg4ZEZIOGRGSThkRkk4ZEZKOGRKSjhkSko4ZEpLOGRKSzhkSkw4ZEpMOGRKTThkSk04ZE5OOGROTzhkTlA4ZE5QOGROUThkTlE4ZE5SOHRSUzh0UlM4dFJUOHRSVjh0Vlc4dFZZOHRaWjh0WmI4dGRlODlkZzg5aGk4OWhqODloajg5aGs4OWxtODlsbzlOcHE5TnByOU5wczlOdHQ5TnR3OU54eTlOeHo5TjExOU4xMjlOMTM5TjE1OWQ1NzlkOSs5ZCtBOWVDRDllR0c5dUtLOXVPTjl1T1E5K1dYK09paytPdXUrZTI0K3UvQyt2SEordkhJTXMweUNQNEEvd2tjU0xDZ3dZTUlEZllMTnk2aHc0Y1FJMHFjV0kvYk1tZmQ4azNjeUxIalJtL0hjdVU2VnM2anlaTW4rVzBUS2JKYlA1UXdZejdjeDQxbExtNHZaZXJjK1krbVRaYzhneExzWis3YnQzZ1NmYkxFS1JIZU4yL2xjZ3AxT001WkwyRFo1a1ZVS3BJcFJIblpnUFZ5Vm5KcVFuclpXUFlDT3JQbVVxa0orM2tEeGpLYlByTUkxVVd6NmF3ZHhINXVjL1h5RnBIZE01YXhybW5FcTVCYkw3WGI0Q0kwWjNWc09vajZ0ajBXMmNzcjQ0THFEck5NaHU1dk9XN2RTa01zcDR3dnZNOEgrM1dqVzNleFRueHBXUUxyQmhzaFBHczJrNm5qT2U5WkxKYlc2UFZHK0Mxa3JsakplZEt6ZG54a3crVUg2V2tUTnZiNnpuN2ZsUDcxT3NiTk52YUM5THB4aXlxVTN6aHUzL0NkaDdsUEhUcDQ3dHExNCthTzMzeTgrS0RUVFRiV1BITk1Nc29vazR3dzBWaXp6VGZwK1BkZlRQMmswNDAxeXRCbTA0YmpMWlBOTi9MTTE0OWtHNkd6alZVYnBxamlNZEYwRTZKSkkwcDB6emZXV0RQT1hSdkJ3dzJLS3ZhWW9qRFdoR05lUlBqUWFNMDMrMEFVVGpJaUhaT05PaVRHVm80MUdxcjRXQzlYK2poU051eEkxRTg1MXppWGpIY0kzWk1iU3hpOTVsQSszclNtb2pES1JKTk5OODQ0ODR3MTNoQzRUSlZxUmNPZVErdHN3NlJOMTBRNWtKa3A5bUtOYWdmWnc0MXpOdldpVERiZW9DUGZRZm1vMDgwMXlXekdWemlHL2pQT001N1dGYXBBUzZxWXpaQUMyYk9OTVA0cEtyTU5PaEppWnM0Mnk2U1lqRGRSVHFlaU0rWkFsTTgzMFpTYWkzQUczY01OckRZQmN3MDZweUxVRHpyWE1NdlNNZCtRQ0k4ejFZa0VqRFYvUXFRamo3bEVOeFJJR3liVGpUMG8xZE9ObTJnR2l4NXduR0drRlVmb1pMUE1NYytVUmRBNDhJcmt6RGpSUnRSUFZSdGFvK2Evemh5enpEWmRtc1NQT3VRc1BOQnZHd0xMVXptaWNiYk5rUDJzTXc2VVUrbmpXSEJrNm9Ud3RlSE1aMDdBd3JBRkVUNnNTdHVjVGRFZ3RSdysybXlZemFVUHpjUE5OZGQ0VTdOQitHaW1GbS9Mb1JPd004TkI1TSt5VFg0amtUdDdzZlRNaTU4QjV1bGFCZjh6RDNVaUpRYjBRM1BwMWpKczhHUXRzTVVPeVdNY2NzcEZoREZMaXNGR0R2NmtONFg5anp6UmRHdnVYOTE0bWt6RWVIbDlMYU5mQlU3M1JPbzRvNXZWak5WRHIwalcxRE1SNElMWEhWRTkxOWlVamQ4bXlTMDY2WncvN3VYSnoxbHp0bENzcVVYWTVuTmo3bmxFNDBDYUROeWZHK1c3Nyt3V3RQZTFLVDhrZCtjYnhTNVNNbjRWRk0vdnZwT2pFVDZQWW1uOWVPVVZWQTZreXZBZXQrTzJieFJQeDhlSVU5QThyMTZQNVRHOGh0ZWpNdXNVTkk2MTNXODBEL2psM2c0UlBSM25zbzMyZkxQSk1iUmhEV3R0NkJpTSs4YzNOS1FNblVua2ZzaWJDQVJab2cwQTltZzg4YmpjaHFKeHI0R1VnMzdlUzhnRXd6Y1JlUFN2Z2dUUlM0K3NnWlI4MWVpRjFyaUd2enlvdTh0SUVIK0RpNGc0QmpVUzh3MWxIUDdYc0VhRG90R2dKdzBrSC9uUlR6dmM4VHFCM0l3enM1Tkk2a2dva2ZtTnhoMEh3VWNTOVFPUEpIVWtIWkxqRE5NZVdMdjhUVVJ4eXd1aFR1TGh0bkxoS0NKanEwNHNWalVSUkNHbmlUekp4MHJRcEVhRm9Hc2tsSlBJT3NJb2t0RjlKbTNlQ3VUbnZGRWpiN3d4SW9qTUJURFd4aGluRVFxUERvbVIvVFM0akQ3cXhCNW5Hc2tNelNJT3Z0bWxOOTh3NE0rOFpBNXZwRWFDR2hTR0Q5bldSbUVvTWk1VndaSXpFaWl0MmRna2g0ZXNFdFFna2tIQkJjOGg2Q0NrSkcvNW1RejZUSE1PK2FOSTZ1Y1FkMml3WE5BVVNqOXE5UzhlU2xKbUJ5bEhydERrd0lQY1EybWpHYVZBK0VHNjJKaURRTnpvb0VEeXdib21GWThnU2Y3YlRHZTRXUkR3OEswei9uQWVONnlSRFdoNVJCM2JjQk13dHZISXYxMHpadzZCeDRtY0VVK0hnREZoK2tzYVhYcnhNTVRaYlVlbDZxUkJraGtwYnZDem4ra2dXVUpBbVRFYkVtUjgzUnBMTi9TSGtIVlFLVVhPNEowL2c2UE9qanl4U2JOOEtmNUVJb3lzdE1WWXVZalpTZi9CczFKWjR4NG91WnZIdkZnUWVocFFqQTlCQzRjd2trMkRoTVltd3FCa1IyUlRKUmFlaFU3R3NzYXA5b0hPWXhueElUODFvMGNNSThDZzFsUlFhdkVNUXRCaGpXUWtRNFpoQXgxWW1XbXd3b251YVAwRWsxK3o0VW1CekFNZGx0cEk3bjZKeVlqMmp6UWJ1UWRrdXlvVTNJRDFHbGdDaG1oSFM5clNZcVZLMmdqb2hCNHlXUzI1VmxjdVhmNXRRZ1Q3MnRvV3NxR3lQVWdrYmV1alk5d3p0d1VaSkc5ZHkwSGdaalYwdWptR2NwZkwzT1lldzFOelhLcHhCOExTdXBEakcrSElybmEzbTkxdmxDT1UyWkR1ZFA5UjNhNmNNVEM1Q085NEVWTGV2aVVGdmVwZHIwSGFxMWVIY0NXOTRwMHVmZjEyMy9qS2x5RDBQYS9vOG12YzltNURIa3QwaDRJWHpPRDh5S05uZUNNd2NOdDdJTDlhK01JWVhoQ2hKSnpiZW9SeXVDbnk3MzliOVdFUS8xSzFJeFpJWmt4c3BjaWttQ0RsYUNPTHY0WEZGdytrUXRudzFER3VZVnJTaHNrbTJxQ3BqY2xocldQSWl6bEZQcktOQ2ZJeVFrSDFJR1BqU3ptWFRPSm1jYU9KOWRnR2FsRk01WUdVRXF6WktBYytSblFQY3ZCWWdEMmxzamxXMDJVTjViWTV4SWhkTWpyNjk5cG8xTGpMQnhHSE1yVzBTenpqc2xoYVVoUXYvVndRZG9BMFJjQ2c2SlFKSFJ0TktiTkZIdjFNUUFBQUlmNFZUV0ZrWlNCM2FYUm9JRk5qY21WbGJsUnZSMmxtQURzPSIgPiAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ6aG1fY29udGVudCI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iemhtX21vbmV5Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iemhtX2Ftb3VudF9tb25leSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ6aG1fbW9uZXlfc2lnbiI+wqU8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InpobV9tb25leV9udW0iPiR7cmVzcC5kYXRhLnlvdWh1aXF1YW59PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ6aG1fY29uZGl0aW9uIj4ke3Jlc3AuZGF0YS5jb3Vwb25faW5mb308L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ6aG1fdGltZSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InpobV90ZXJtIj7mnInmlYjmnJ88L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iemhtX2RhdGUiPiR7cmVzcC5kYXRhLmNvdXBvbl9lbmRfdGltZX08L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iemhtX2NpcmNsZSI+PC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InpobV9saW5rX2NvdXBvbiIgc3R5bGU9Im1hcmdpbi1yaWdodDoiPgogICAgICAgICAgICAgICAgPGEgY2xhc3M9InpobV9nZXRfbGlua190ZXh0IiBvbmNsaWNrPSJ3aW5kb3cub3BlbignaHR0cHM6Ly9hcGkudHlwZWNocm9tZS5jb20vY29kZS5waHA/bGluaz0ke3Jlc3AuZGF0YS5jb2RlX3VybH0nKSI+54K55Ye76aKG5Y+WPC9hPgogICAgICAgICAgICAgICAgPGRpdiBpZD0idGJxcmNvZGUiIGNsYXNzPSJ6aG1fcXJjb2RlIj48L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgICAgYDsKICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnemhtX2Rpdl9zJykuaW5uZXJIVE1MPWh0bWw7CgogICAgICAgICAgICAgICAgICAgIHZhciBxcmNvZGUgPSBuZXcgUVJDb2RlKCJ0YnFyY29kZSIsIHsKICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDY3LAogICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IDY3LAogICAgICAgICAgICAgICAgICAgICAgICBjb2xvckRhcmsgOiAiIzEyMTIxMiIsCiAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yTGlnaHQgOiAiI2ZmZmZmZiIsCiAgICAgICAgICAgICAgICAgICAgICAgIGNvcnJlY3RMZXZlbCA6IFFSQ29kZS5Db3JyZWN0TGV2ZWwuTQogICAgICAgICAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgICAgICAgICBxcmNvZGUubWFrZUNvZGUocmVzcC5kYXRhLmNvZGVfdXJsKTsKCiAgICAgICAgICAgICAgICAgICAgaWYoZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLkFjdGlvbnMtLXJvb3QtLWh3RXVqZ2MnKSl7CgogICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuQWN0aW9ucy0tcm9vdC0taHdFdWpnYycpLnN0eWxlPSJwb3NpdGlvbjp1bnNldCI7CgogICAgICAgICAgICAgICAgICAgIH0KCgogICAgICAgICAgICAgICAgICAgIC8vbmV3IFFSQ29kZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGJxcmNvZGUiKSwgcmVzcC5jb2RlX3VybCk7CgogICAgICAgICAgICAgICAgfWVsc2V7CgogICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKHJlc3AubWVzc2FnZSk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICB9KQoKICAgICAgICB9LDMwMCk7CiAgICB9CgogICAgZnVuY3Rpb24gZ2V0SmRDb3Vwb24obm9kZUNzcyl7CgogICAgICAgIGdldENvdXBvblN0eWxlKCk7CgogICAgICAgIHNldFRpbWVvdXQoKCk9PnsKCiAgICAgICAgICAgIGxldCBqZEdvb2RzSWQgPSBsb2NhdGlvbi5ocmVmLm1hdGNoKC9qZFwuKGhrfGNvbSlcLyhcUyopLmh0bWwvKTsKCiAgICAgICAgICAgIGxldCBkaXZFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CgogICAgICAgICAgICBkaXZFbGVtZW50LmlkPSd6aG1fZGl2X3MnOwoKICAgICAgICAgICAgbGV0IG5vZGU9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3Iobm9kZUNzcyk7CgogICAgICAgICAgICBub2RlLmJlZm9yZShkaXZFbGVtZW50KTsKCiAgICAgICAgICAgIHJlcXVlc3QoJ2dldCcsYGh0dHBzOi8vYXBpLnR5cGVjaHJvbWUuY29tL2luZGV4X2pkX25ldy5waHA/Z29vZHNfaWQ9JHtqZEdvb2RzSWRbMl19YCkudGhlbigocmVzdWx0KT0+ewoKICAgICAgICAgICAgICAgIGxldCByZXNwPSBKU09OLnBhcnNlKHJlc3VsdCk7CgogICAgICAgICAgICAgICAgbGV0IGh0bWw9Jyc7CgogICAgICAgICAgICAgICAgcmVzcC5mb3JFYWNoKGZ1bmN0aW9uKGl0ZW0pewoKICAgICAgICAgICAgICAgICAgICBodG1sICs9CiAgICAgICAgICAgICAgICAgICAgICAgIGAKICAgICAgICA8ZGl2IGNsYXNzPSJ6aG1fY291cG9uIiBzdHlsZT0ibWFyZ2luLWxlZnQ6MTBweDsiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJ6aG1fbGVmdCI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ6aG1faW1nX2ljb24iPgogICAgICAgIDxpbWcgc3JjPSJkYXRhOmltYWdlL2dpZjtiYXNlNjQsUjBsR09EbGhaQUJrQUhqL0FDSC9DMDVGVkZORFFWQkZNaTR3QXdFQUFBQWgrUVFKTEFIL0FDd0FBQUFBWkFCa0FLZjZCRG42QkRuNkJEbjZCRG42QkRuNkJEbjZCRG42QkRuNkJEbjZCRG42QkRyNkJUcjZCVHI2QlRyNkJUcjZCVHI2QlRyNkJqcjZCanI2Qmp2NkJqdjZCanY2Qmp2NkJ6djZCenY2Q0R6NkNEejZDVDM2Q1QzNkNUMzZDajc2Q3o3NkN6LzZDei82REQvNkRFRDZEVUQ2RFVENkRrSDZEa0g2RGtINkQwTDZFRUw2RVVQNkVVVDZFa1Q3RTBYN0ZFWDdGRWI3RkViN0ZVYjdGVWY3RlVmN0ZrZjdGa2Y3RjBqN0YwajdGMGo3RjBqN0dFajdHRW43R1VyN0drdjdHMHY3SEV6N0hVMzdIMC83SVZEN0kxSDdKRkw3SmxUN0oxVDdLRmI3S1ZiN0tsZjdLMWo3TGxyN01GejdNbDM3TkYvOE5tRDhPR0w4T21UOFBHWDhQMmY4UVduOFEycjhSR3Y4Um0zOFJtMzhSMjc4U0cvOFNYRDhTbkQ4VEhMOFRuUDhUM1Q4VUhYOFVuZjhWSGo4VjN2OFczNzhZSUw4WklYOGFvbjhiNDM4Y1kvN2NJNzZiWXY0YTRuMWFZZnVaNFRqWkgvVVpIekhabnU4YVhxdGJIcWliM3FXYzNxSWQzdUFlSHA1ZVhsNmVucDdlM3Q4Zkh4OWZYMStmbjUvZjMrQWdJQ0JnWUdDZ29LRGc0T0VoSVNGaFlXR2hvYUhoNGVJaUlpSmlZbUtpb3FMaTR1TWpJeU5qWTJPam82UGo0K1FrSkNSa1pHU2twS1RrNU9VbEpTVmxaV1dscGFYbDVlWW1KaVptWm1hbXBxYm01dWNuSnlkbloyZW5wNmZuNStnb0tDaG9hR2lvcUtqbzZPa3BLU2xwYVdycHFlMnFLdkFxYTdKcXJIUXE3UFhyTFhkckxmaXJiam9yTG51cXJueXFMajFwN2ozcGJmNXBMYjZvcmI3b3JYOG9iWDhvTFQ5b0xUOW9MVDlvYlg5b3JiOW83ZjlwYmo5cHJuOXA3bjlxTHI5cUx2OXFidjlxYnY5cXJ6OXFyejlxcno5cTd6OXE3MzlxNzM5cmI3OXJyLzlzTUg4c3NMOHRNVDh0c1g4dU1mN3VzbjZ2Y3I2d016NXdzNzR3OC80eGREM3g5SDN5TkwyeXRUMXk5WDB6ZGJ6ME5meTB0bngxTnJ4MU52eDFkdngxdHp4MTkzdzJOM3gyZC93MjkvdjNPSHYzdUx2NE9QdjR1WHU1ZWZ1NStudTZ1dnQ3ZTN1N3U3djcrL3c4UER4OGZIeTh2THo4L1AwOVBUMTlmWDI5dmI0K1BqNStmbjcrL3Y4L1B6OS9mMysvdjcrL3Y3Ky92NHl6VElJL2dEL0NSeElzS0RCZ3dnVEtseklzS0hEaHhBWnFsdlNKS0xGaXhnei9pdEQ1TVFKSTJvMGloeEpNZ2tIQndvOFBDSEpzdVZEWWtJY3lKUlF4Si9MbXpnTDRvbzVrNGpObkVCZDRob2kwNEVFbjBHVEdqUUhSVW1TTHc2SEZqMzZrMkdYSlVtZ1ZGVUtzVWtLQ2hoNmpHa290ZWZXaEdKOGFLQ1F3Z25YaUdWNkZNVlFrMkZabzBnWCtqdWlRYWFDSHJqZVBxVGlvcWlERkZjWWJpTXFrd0tTaGxaV0tKQlpJRWRJd1EyM0VhRlFsSUlRWnd5anFLQkFRY1VVdTBJNE54NXlGblBDS2lzTWc0akNzQnNVSWtXa05JUlN3ckNLTGE0ZCtqT0N3WENQeXl6Ui9EQ000VWp3aDF3S0Z4MVJ4ZVdZRmdXS3dpanovS0dTa3c0Sy9zQXc0NUlNak93cEszWjNTQ2JJMmhUcVcvcGJVb0tDaHlISTF6TXNVMlNJVnB5L05ERkVFbW5vaHhNdVZFQ1JSUlpZWENFRUZyNFk2Sm9hVWhqaHd3d3NlQUJDQ1NXSW9JRUxMZ2lSeEJTOFNBaVVQMU1RTWNNSUdraGcySXNPVUtCQkNUd2tFWWFKQlpIVDJrTlNDSkZDY1RBR2FSZ0hMUmdoUmtiK3hKT2NFalBZd0VSZ0VIVXh4RmRDVnZraUJpNHNrVjlEYUN5Umd3MUxRS25SRWlESUJNSVBWT3hva0Q5UTJBQmtrQkp3QmxhTUxnckpnUStKTldUTkV6eDRJSk1JOFdHa25HRVVuRUNFRnd1cGNVUnZRYzdZUWc5R25GQ0NDakFnMFFNTUovUUZJd1V0UEtIbVFGVUVNY0tMT2NDajBhQlh1cUFiUW1jUTRlZUwvaFNNME1NUlUydzVrQnBVR0pIRENLb1pkc0lTbnpiQlFxOUY4ZkNwUTB5VUNlTnhCNTBoaEthR2xTQkVGTXBFQlVVUWpCb213aEhtSEZSR0RrR2VRSnRJYWlUUndwdG1qa3NRR3MrK3FFRU9VaHlMa0Q5UjhBQ3RUQjhBYTVBWEttUlhsQVl3T0tFTlMxb01jWUpxQ3JoQVJrSGdIQUZlVVNJVWNZWkdaaGlSclV6aUd2VHRaREdxWU1SWU4wa0J4QWtnc0xCU1FVMk02bXNUOGpia2oxY3Z1b0JvUVU2b0FNSUpRbFFIVkRCVVBNR0ZRVjNBOEdJS1VMajBSR3lkQWJIbE9sVTRrV1ozdHd5QnJnaHUzZFRFQ1VNeWdTTkJ2Qm1tZ1JFdEM2U0dyUWtwOGFwTUxjeU1veHBCdlBnRDJRYVJRVVFPT1J3QmQwRnFwRGFYL2hGYi94UEZ4U2Zvdk5BeVJHaFFRRXBKT0pSRkMwVXB3TUtSSnBLeldXZDVMVFNHQy81V2RuZEJmUDJydFlsZHVNQ3hBeXAwNGRBWUxHUytuVU5lU0NjVEQ1c0w1c1RaRXJCMk9uYVV5Y0NkeThSTkovaDYvZ3pScXdmcU1uUmQ1aktRNTFBVldNdUV3UklTZnR1NEM3czNkSHp1eWpkMEJnK0crWkNPZ1dHd01Eb1EzOStPZlBZTStUTjVlRE93WWVBVDJUb0cwZlhoSmQvVnd5Tm9nWk1aVGluaHYxTkpRSjlBblBBd0Ruek9mTmlEQ1B5bWt3V0RmQ0VKLy9OZkVwb1FPN0VSZ1FPa3lTQUZPSUNmZ2tBQldpWFEzMFBvVndEN1BRUU1xWk9KQVFzeUJ2ZG9rRFFnTUVJMkdKS0VFb3l1S0FXZ0RzcEFDSlVSNHE1Ky9nSmNDQmwrS0FFZ2VQQnNML0pBRHhoaWczdkpabFVEV2NLYlN0QkRCQUlSSWtQMFZ4RUw4b1NId1lvRERBa0R1QlJBeGpJcW9BVWdHOGdUUUtnMjYvMndoRUZVaUJkV29FVWpFb1FLTFRCakdSMlFneW9xUkFvL0FKRWdYWkNEazNFTldpQ0FvaHZQQjVGa0ZXV0ZCSGtaRHdZSkloOVE0U0ZxMkFJV05va0ZMWkROSkh1YjN4dkgweFZvalFBTEIxRURnempaQlRHNWhBb3A0QmdGaWlCS1JncG5mUTRRQVNyMUF3YlJGY1VHRlJ5SWVUSUh1NGVnUVM2NVE0T0IyT2Fybnpua0cwaDRsUWVnOTVBcXhMSW9Qd2hiVXBEd0pnMVEweUZtT0FJTVpvQUVWeklFQ2RCNm5vbWtjREhMUkdRYjVSdWhEYUlsUWdPZEFaa3kvbEVKVjVpQVJCK1ljejFMdUJjUDNPY3lLQmpCQ0lxMEhMZzh0N1hRZVMxeDZmTUtXRlJRdFBRWjRWN1U2MXZuaXBLQ1N5NEVET2Z4aXczaVdKQW9ORThtR2xCQzMvN3hoWGthaDZRRFFjSUhERE9DTmg0a0N6TjQwUXhncWhSL0VPTWdUbENXODRnZ0RZVkE0UVFjVTBBS3dLQVFOQVNCV0NDb2FFR0NvVTJNVkNNS1A3REJFQlpHRURWSXpUQWZDSlJCMkNBRURKQVJBME9vMXJ4QVNUbG1GTVFMUThnQkVPS1ZFeW9Jb1RjS3dJQVF6QmtHbHhZbGJRcnBnaEJVb0FJaFFBNGhVMUFCcWJoNnE3SXFnQUxTc29KTHZFQUVLdm1sQk1BcGlCUlNRQ2doSEVNaDZKREMweEppQmg4TTdUUUZDWisvT2xhRTZtbWtDamxBL2hkS1RwRFpTSnBOTmxMTnlCSzg2SUVERWtRTVAveFhEdzZMa1YwSUQwWWFLTUpQRFpLR3B4ckdCaFBMaUVNN3M5ZFVGZzVHR0NDQ1NPSnlRN1pJN0RWSVErazNMZUtQSXFETEJjUXRDQm1NTUpxWXpUQWp2TkNibWRERWtPOFl4Z1ZwakVoa1JnZEpoVmhCQ0NxTGtSQ3FpaEFwMkVBRUk4aUJFN3JSa0RKdzcxOHFKYTk1RGZPMmhrempDVGtRZ1FoNllGT01qRUVLVWdqbVFKb2dWQWZBUUprUjZVSWVJWmJRaFp3QnhLNTlUaHBNK3k4YnZQREdOdzdMdllEUWpKVSt4QWt6dFpLUVlTU0NGdnVZdEFzZHNwSWQ0TThqUHdTZFN4NHlCOFRxWklWVVFRVTNqUEtMenNqWUtpK0V1M1A1QUFqR1RPWXlsOWtEYnlwQS9nK0E0ZVdHbEhaOFRsaUNuT2RNWnpwREFaOEY0TUZ5MjZ5UU44K0VsZzdwQm1QQzA0TTk4eGtoZnNhTE51K2laa01mMmlDSnBrcFVCdDNvUjVQV0J4eVRORmtvWFdoTEk1ckdlSG1JTXpqdGFFOExwTFNHRVVJWXJvQ0ZCUzJJazV5OHdoWEUwRGJLNk5uVWtBYTFBemhnNWw2WDJVTTR2RFd1Q1lKcUxRc3B6NlUyOVJrd2Jld2dLY0FHYmgzMlFIYlM3Q0I1aHNCT2hrSUw2bFJ0QjJqQUJ2V1V0a0JROUlQaHpVQUNHRWkzdXRNdGdSelFEZ2d4RnZjQW9jV0IzQm9rb0VYeGdMM2xMWkMvR1NZSDBUWElHUHlxVkQveVd5RDNaTTRRQ2xTUU1wVFZNRUNJOXNFSndnUXZhb0FIVG5DZlA4N1FoTmlDZGQ4VGp3dU1TVURnQWc5NHdBVkJub3JTSm42UUtZUlh5UzZvTGN0UmRsSWhxOERJTS8vSHkxcEFnU3d6QndiRnk3bEJyREFsMlhwYkJVTmdxdEFWNGc4cUZLSG1MVGpDTHBkTzlhb25KQ0FBSWZrRUNUSUEvd0FzQmdBQkFGZ0FZUUNuQUFBQUFRRUJBZ0lDQXdNREJBUUVCUVVGQmdZR0J3Y0hDQWdJQ1FrSkNnb0tDd3NMREF3TURRME5EZzRPRHc4UEVCQVFFUkVSRWhJU0V4TVRGQlFVRlJVVkZoWVdGeGNYR0JnWUdSa1pHaG9hR3hzYkhCd2NIUjBkSGg0ZUh4OGZJQ0FnSVNFaElpSWlJeU1qSkNRa0pTVWxKaVltSnljbktDZ29LU2twS2lvcUt5c3JMQ3dzTFMwdExpNHVMeTh2TURBd01URXhNakl5TXpNek5EUTBOVFUxTmpZMk56YzNPRGc0T1RrNU9qbzZPenM3UER3OFBUMDlQajQrUHo4L1FFQkFRVUZCUWtKQ1EwTkRSRVJFUlVWRlJrWkdSMGRIU0VoSVNVbEpTa3BLUzB0TFRFeE1UVTFOVGs1T1QwOVBVRkJRVVZGUlVsSlNVMU5UVkZSVVZWVlZWbFpXVjFkWFdGaFlXVmxaV2xwYVcxdGJYRnhjWFYxZFhsNWVYMTlmWUdCZ1lXRmhZbUppWTJOalpHUmtaV1ZsWm1abVoyZG5hR2hvYVdscGFtcHFhMnRyYkd4c2JXMXRibTV1YjI5dmNIQndjWEZ4Y25KeWMzTnpkSFIwZFhWMWRuWjJkM2QzZUhoNGVYbDVlbnA2ZTN0N2ZIeDhmWDE5Zm41K2YzOS9nSUNBZ1lHQmdvS0NnNE9EaElTRWhZV0Zob2FHaDRlSGlJaUlpWW1KaW9xS2k0dUxqSXlNalkyTmpvNk9qNCtQa0pDUWtaR1JrcEtTazVPVGxKU1VsWldWbHBhV2w1ZVhtSmlZbjUyVHFxU0t1SzErekxwcjNzVlk2Y3hON3M5SDhOQkY4TkJGOE5CRThOQkU4TkJFOE5CRThOQkU4TkJFOE5CRThOQkU4TkJFOE5CRThOQkU4TkZFOE5GRThORkU4TkZFOE5GRThORkY4TkZGOE5GRjhORkY4TkZGOE5GRjhORkY4TkZGOE5GRjhORkY4TkZHOGRGRzhkRkc4ZEZHOGRGSDhkRkg4ZEZIOGRGSThkRkk4ZEZKOGRKSjhkSko4ZEpLOGRKSzhkSkw4ZEpMOGRKTThkSk04ZE5OOGROTzhkTlA4ZE5QOGROUThkTlE4ZE5SOHRSUzh0UlM4dFJUOHRSVjh0Vlc4dFZZOHRaWjh0WmI4dGRlODlkZzg5aGk4OWhqODloajg5aGs4OWxtODlsbzlOcHE5TnByOU5wczlOdHQ5TnR3OU54eTlOeHo5TjExOU4xMjlOMTM5TjE1OWQ1NzlkOSs5ZCtBOWVDRDllR0c5dUtLOXVPTjl1T1E5K1dYK09paytPdXUrZTI0K3UvQyt2SEordkhJTXMweUNQNEEvd2tjU0xDZ3dZTUlEZllMTnk2aHc0Y1FJMHFjV0kvYk1tZmQ4azNjeUxIalJtL0hjdVU2VnM2anlaTW4rVzBUS2JKYlA1UXdZejdjeDQxbExtNHZaZXJjK1krbVRaYzhneExzWis3YnQzZ1NmYkxFS1JIZU4yL2xjZ3AxT001WkwyRFo1a1ZVS3BJcFJIblpnUFZ5Vm5KcVFuclpXUFlDT3JQbVVxa0orM2tEeGpLYlByTUkxVVd6NmF3ZHhINXVjL1h5RnBIZE01YXhybW5FcTVCYkw3WGI0Q0kwWjNWc09vajZ0ajBXMmNzcjQ0THFEck5NaHU1dk9XN2RTa01zcDR3dnZNOEgrM1dqVzNleFRueHBXUUxyQmhzaFBHczJrNm5qT2U5WkxKYlc2UFZHK0Mxa3JsakplZEt6ZG54a3crVUg2V2tUTnZiNnpuN2ZsUDcxT3NiTk52YUM5THB4aXlxVTN6aHUzL0NkaDdsUEhUcDQ3dHExNCthTzMzeTgrS0RUVFRiV1BITk1Nc29vazR3dzBWaXp6VGZwK1BkZlRQMmswNDAxeXRCbTA0YmpMWlBOTi9MTTE0OWtHNkd6alZVYnBxamlNZEYwRTZKSkkwcDB6emZXV0RQT1hSdkJ3dzJLS3ZhWW9qRFdoR05lUlBqUWFNMDMrMEFVVGpJaUhaT05PaVRHVm80MUdxcjRXQzlYK2poU051eEkxRTg1MXppWGpIY0kzWk1iU3hpOTVsQSszclNtb2pES1JKTk5OODQ0ODR3MTNoQzRUSlZxUmNPZVErdHN3NlJOMTBRNWtKa3A5bUtOYWdmWnc0MXpOdldpVERiZW9DUGZRZm1vMDgwMXlXekdWemlHL2pQT001N1dGYXBBUzZxWXpaQUMyYk9OTVA0cEtyTU5PaEppWnM0Mnk2U1lqRGRSVHFlaU0rWkFsTTgzMFpTYWkzQUczY01OckRZQmN3MDZweUxVRHpyWE1NdlNNZCtRQ0k4ejFZa0VqRFYvUXFRamo3bEVOeFJJR3liVGpUMG8xZE9ObTJnR2l4NXduR0drRlVmb1pMUE1NYytVUmRBNDhJcmt6RGpSUnRSUFZSdGFvK2Evemh5enpEWmRtc1NQT3VRc1BOQnZHd0xMVXptaWNiYk5rUDJzTXc2VVUrbmpXSEJrNm9Ud3RlSE1aMDdBd3JBRkVUNnNTdHVjVGRFZ3RSdysybXlZemFVUHpjUE5OZGQ0VTdOQitHaW1GbS9Mb1JPd004TkI1TSt5VFg0amtUdDdzZlRNaTU4QjV1bGFCZjh6RDNVaUpRYjBRM1BwMWpKczhHUXRzTVVPeVdNY2NzcEZoREZMaXNGR0R2NmtONFg5anp6UmRHdnVYOTE0bWt6RWVIbDlMYU5mQlU3M1JPbzRvNXZWak5WRHIwalcxRE1SNElMWEhWRTkxOWlVamQ4bXlTMDY2WncvN3VYSnoxbHp0bENzcVVYWTVuTmo3bmxFNDBDYUROeWZHK1c3Nyt3V3RQZTFLVDhrZCtjYnhTNVNNbjRWRk0vdnZwT2pFVDZQWW1uOWVPVVZWQTZreXZBZXQrTzJieFJQeDhlSVU5QThyMTZQNVRHOGh0ZWpNdXNVTkk2MTNXODBEL2psM2c0UlBSM25zbzMyZkxQSk1iUmhEV3R0NkJpTSs4YzNOS1FNblVua2ZzaWJDQVJab2cwQTltZzg4YmpjaHFKeHI0R1VnMzdlUzhnRXd6Y1JlUFN2Z2dUUlM0K3NnWlI4MWVpRjFyaUd2enlvdTh0SUVIK0RpNGc0QmpVUzh3MWxIUDdYc0VhRG90R2dKdzBrSC9uUlR6dmM4VHFCM0l3enM1Tkk2a2dva2ZtTnhoMEh3VWNTOVFPUEpIVWtIWkxqRE5NZVdMdjhUVVJ4eXd1aFR1TGh0bkxoS0NKanEwNHNWalVSUkNHbmlUekp4MHJRcEVhRm9Hc2tsSlBJT3NJb2t0RjlKbTNlQ3VUbnZGRWpiN3d4SW9qTUJURFd4aGluRVFxUERvbVIvVFM0akQ3cXhCNW5Hc2tNelNJT3Z0bWxOOTh3NE0rOFpBNXZwRWFDR2hTR0Q5bldSbUVvTWk1VndaSXpFaWl0MmRna2g0ZXNFdFFna2tIQkJjOGg2Q0NrSkcvNW1RejZUSE1PK2FOSTZ1Y1FkMml3WE5BVVNqOXE5UzhlU2xKbUJ5bEhydERrd0lQY1EybWpHYVZBK0VHNjJKaURRTnpvb0VEeXdib21GWThnU2Y3YlRHZTRXUkR3OEswei9uQWVONnlSRFdoNVJCM2JjQk13dHZISXYxMHpadzZCeDRtY0VVK0hnREZoK2tzYVhYcnhNTVRaYlVlbDZxUkJraGtwYnZDem4ra2dXVUpBbVRFYkVtUjgzUnBMTi9TSGtIVlFLVVhPNEowL2c2UE9qanl4U2JOOEtmNUVJb3lzdE1WWXVZalpTZi9CczFKWjR4NG91WnZIdkZnUWVocFFqQTlCQzRjd2trMkRoTVltd3FCa1IyUlRKUmFlaFU3R3NzYXA5b0hPWXhueElUODFvMGNNSThDZzFsUlFhdkVNUXRCaGpXUWtRNFpoQXgxWW1XbXd3b251YVAwRWsxK3o0VW1CekFNZGx0cEk3bjZKeVlqMmp6UWJ1UWRrdXlvVTNJRDFHbGdDaG1oSFM5clNZcVZLMmdqb2hCNHlXUzI1VmxjdVhmNXRRZ1Q3MnRvV3NxR3lQVWdrYmV1alk5d3p0d1VaSkc5ZHkwSGdaalYwdWptR2NwZkwzT1lldzFOelhLcHhCOExTdXBEakcrSElybmEzbTkxdmxDT1UyWkR1ZFA5UjNhNmNNVEM1Q085NEVWTGV2aVVGdmVwZHIwSGFxMWVIY0NXOTRwMHVmZjEyMy9qS2x5RDBQYS9vOG12YzltNURIa3QwaDRJWHpPRDh5S05uZUNNd2NOdDdJTDlhK01JWVhoQ2hKSnpiZW9SeXVDbnk3MzliOVdFUS8xSzFJeFpJWmt4c3BjaWttQ0RsYUNPTHY0WEZGdytrUXRudzFER3VZVnJTaHNrbTJxQ3BqY2xocldQSWl6bEZQcktOQ2ZJeVFrSDFJR1BqU3ptWFRPSm1jYU9KOWRnR2FsRk01WUdVRXF6WktBYytSblFQY3ZCWWdEMmxzamxXMDJVTjViWTV4SWhkTWpyNjk5cG8xTGpMQnhHSE1yVzBTenpqc2xoYVVoUXYvVndRZG9BMFJjQ2c2SlFKSFJ0TktiTkZIdjFNUUFBQUlmNFZUV0ZrWlNCM2FYUm9JRk5qY21WbGJsUnZSMmxtQURzPSIgPiAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ6aG1fY29udGVudCI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iemhtX21vbmV5IiBzdHlsZT0nbWFyZ2luLXRvcDo3cHg7Jz4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iemhtX2Ftb3VudF9tb25leSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ6aG1fbW9uZXlfc2lnbiIgc3R5bGU9J21hcmdpbi10b3A6LTEwcHg7Jz7CpTwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iemhtX21vbmV5X251bSI+JHtpdGVtLmRpc2NvdW50fTwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iemhtX2NvbmRpdGlvbiI+5ruhJHtpdGVtLnF1b3RhfeWFg+WPr+eUqDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InpobV90aW1lIiBzdHlsZT0nbWFyZ2luLXRvcDoxMHB4Oyc+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InpobV90ZXJtIj7mnInmlYjmnJ88L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iemhtX2RhdGUiPiR7aXRlbS5lbmRUaW1lfTwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJ6aG1fY2lyY2xlIiBzdHlsZT0icmlnaHQ6NDRweDsiPjwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJ6aG1fbGlua19jb3Vwb24iIHN0eWxlPSJwYWRkaW5nOjBweCAxNnB4IDBweCAxNnB4OyI+CiAgICAgICAgICAgICAgICA8YSBjbGFzcz0iemhtX2dldF9saW5rX3RleHQiIHN0eWxlPSJsZXR0ZXItc3BhY2luZzogMTBweDtmb250LXNpemU6MTZweDttYXJnaW4tdG9wOjEwcHg7IiBocmVmPSIke2l0ZW0uY291cG9uX2xpbmt9IiB0YXJnZXQ9J19ibGFuaycgcmVsPSdub29wZW5lciBub3JlZmVycmVyIG5vZm9sbG93JyBzdHlsZT0ibWFyZ2luLWxlZnQ6MTZweDt3aWR0aDozNHB4OyI+6aKG5Y+WPC9hPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgICBgCiAgICAgICAgICAgICAgICB9KTsKCiAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnemhtX2Rpdl9zJykuaW5uZXJIVE1MID0gaHRtbDsKCiAgICAgICAgICAgIH0pCgogICAgICAgIH0sMzAwKQogICAgfQoKICAgIGZ1bmN0aW9uIHRhb2Jhb1NlYXJjaChpdGVtKXsKCiAgICAgICAgbGV0IHRpbWVyID0gc2V0SW50ZXJ2YWwoZnVuY3Rpb24oKXsKCiAgICAgICAgICAgIGxldCBkb20gPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjc2VsZWN0VGInKTsKCiAgICAgICAgICAgIGlmKCFkb20pewoKICAgICAgICAgICAgICAgIGxldCBzZWxlY3RzRG9tID1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuZmlsdGVycycpOwoKICAgICAgICAgICAgICAgIGlmKHNlbGVjdHNEb20pewoKICAgICAgICAgICAgICAgICAgICBsZXQgbGFiZWxzID0gc2VsZWN0c0RvbS5xdWVyeVNlbGVjdG9yQWxsKCdhJyk7CgogICAgICAgICAgICAgICAgICAgIGxhYmVscy5mb3JFYWNoKGZ1bmN0aW9uKGl0ZW0pewoKICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGl0ZW1UZXh0ID0gaXRlbS5xdWVyeVNlbGVjdG9yKCdzcGFuOmxhc3QtY2hpbGQnKS5pbm5lclRleHQ7CgogICAgICAgICAgICAgICAgICAgICAgICBpZihpdGVtVGV4dD09J+WkqeeMqycpewoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCB0YkxhYmVscyA9IGl0ZW0uY2xvbmVOb2RlKHRydWUpOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRiTGFiZWxzLnNldEF0dHJpYnV0ZSgnaWQnLCdzZWxlY3RUYicpOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKGdldFF1ZXJ5U3RyaW5nKCdmaWx0ZXJfdGlhbm1hbycpICE9ICd0YicpewoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YkxhYmVscy5jbGFzc05hbWUgPSAnZmlsdGVyIGljb24tdGFnIEpfQWpheCc7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgfWVsc2V7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRiTGFiZWxzLmNsYXNzTmFtZSA9ICdmaWx0ZXIgaWNvbi10YWcgSl9BamF4IGljb24taG92ZXInOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vdGJMYWJlbHMuc2V0QXR0cmlidXRlKCd0cmFjZS1maWx0ZXJpZCcsJ2ZpbHRlcl90YW9iYW8nKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL3RiTGFiZWxzLnNldEF0dHJpYnV0ZSgnZGF0YS1rZXknLCdmaWx0ZXJfdGFvYmFvJyk7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGJMYWJlbHMuc2V0QXR0cmlidXRlKCdkYXRhLXZhbHVlJywndGInKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YkxhYmVscy5xdWVyeVNlbGVjdG9yKCcudGV4dCcpLmlubmVyVGV4dD0n5reY5a6dJzsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtLmJlZm9yZSh0YkxhYmVscyk7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGJMYWJlbHMuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLHNlbGVjdFRhb2Jhbyk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgfSkKCiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICB9CgogICAgICAgICAgICBpZihnZXRRdWVyeVN0cmluZygnZmlsdGVyX3RpYW5tYW8nKSA9PSAndGInKXsKCiAgICAgICAgICAgICAgICBsZXQgZ29vZHNMaXN0ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLml0ZW0gZGl2ID4gZGl2ID4gZGl2ID4gYScpOwoKICAgICAgICAgICAgICAgIGdvb2RzTGlzdC5mb3JFYWNoKGZ1bmN0aW9uKGl0ZW0pewoKICAgICAgICAgICAgICAgICAgICBpZighaXRlbS5ocmVmLm1hdGNoKC9eaHR0cHM6XC9cLy4qXC50YW9iYW9cLmNvbS8pKXsKCiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0ucGFyZW50Tm9kZS5wYXJlbnROb2RlLnBhcmVudE5vZGUucGFyZW50Tm9kZS5zdHlsZT0nZGlzcGxheTpub25lJzsKCiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICB9CgogICAgICAgICAgICAvL2NvbnNvbGUubG9nKGdvb2RzTGlzdCk7CgogICAgICAgICAgICAvL2NsZWFySW50ZXJ2YWwodGltZXIpOwoKICAgICAgICB9KQoKCiAgICAgICAgZnVuY3Rpb24gc2VsZWN0VGFvYmFvKGUpewoKICAgICAgICAgICAgbGV0IHBhcmVudERvbSA9IGUudGFyZ2V0LnBhcmVudE5vZGU7CgogICAgICAgICAgICBpZiggZS50YXJnZXQucGFyZW50Tm9kZS5jbGFzc05hbWUgPT0gJ2ZpbHRlciBpY29uLXRhZyBKX0FqYXggaWNvbi1ob3ZlcicpewoKICAgICAgICAgICAgICAgIC8vZS50YXJnZXQucGFyZW50Tm9kZS5jbGFzc05hbWUgPSAnZmlsdGVyIGljb24tdGFnIEpfQWpheCAnOwoKICAgICAgICAgICAgICAgIHBhcmVudERvbS5zZXRBdHRyaWJ1dGUoJ2NsYXNzJywnZmlsdGVyIGljb24tdGFnIEpfQWpheCAnKTsKCiAgICAgICAgICAgICAgICBwYXJlbnREb20uc2V0QXR0cmlidXRlKCdkYXRhLXZhbHVlJywnb3RoZXInKTsKCgogICAgICAgICAgICB9ZWxzZXsKCiAgICAgICAgICAgICAgICBlLnRhcmdldC5wYXJlbnROb2RlLmNsYXNzTmFtZSA9ICdmaWx0ZXIgaWNvbi10YWcgSl9BamF4IGljb24taG92ZXInOwoKICAgICAgICAgICAgICAgIHBhcmVudERvbS5zZXRBdHRyaWJ1dGUoJ2RhdGEtdmFsdWUnLCd0YicpOwoKCiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8vZS5jbGFzc05hbWU9J2ZpbHRlciBpY29uLXRhZyBKX0FqYXggaWNvbi1ob3Zlcic7CgogICAgICAgIH0KCgoKICAgIH0KCn0pKCk7
Add Comment
Please, Sign In to add comment