Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 海阔视界规则分享,当前分享的是:网页插件¥js_url¥global_百度网盘简易下载助手(直链下载复活版)@base64://Ly8gPT1Vc2VyU2NyaXB0PT0KLy8gQG5hbWUgICAgICAgICDnmb7luqbnvZHnm5jnroDmmJPkuIvovb3liqnmiYvvvIjnm7Tpk77kuIvovb3lpI3mtLvniYjvvIkKLy8gQG5hbWVzcGFjZSAgICBodHRwOi8vYmQuc29mdHhtLmNuL2JkLwovLyBAdmVyc2lvbiAgICAgIDEuNS42Ci8vIEBhbnRpZmVhdHVyZSAgbWVtYmVyc2hpcAovLyBAZGVzY3JpcHRpb24gIOS4gOS4que6r+WHgOWlveeUqOeahOebtOmTvuS4i+i9veWKqeaJi++8jOe7neaXoOWkmuS9memZhOWKoOWKn+iDveOAguWFjVNWSVDkvJrlkZjvvIzlhY3lronoo4XmtY/op4jlmajmianlsZXvvIzml6Dop4bpu5Hlj7fvvIzlj6ropoHkvaDmnInkuKpJRE3miJZBcmlhMu+8jOWwseiDveS6q+WPl+aegemAn+S4i+i9veeahOW/q+aEn++8gQovLyBAaWNvbiAgICAgICAgIGRhdGE6aW1hZ2UvanBlZztiYXNlNjQsLzlqLzRSYzBSWGhwWmdBQVRVMEFLZ0FBQUFnQUJ3RVNBQU1BQUFBQkFBRUFBQUVhQUFVQUFBQUJBQUFBWWdFYkFBVUFBQUFCQUFBQWFnRW9BQU1BQUFBQkFBSUFBQUV4QUFJQUFBQWlBQUFBY2dFeUFBSUFBQUFVQUFBQWxJZHBBQVFBQUFBQkFBQUFxQUFBQU5RQUFBQklBQUFBQVFBQUFFZ0FBQUFCUVdSdlltVWdVR2h2ZEc5emFHOXdJRU5ESURJd01Ua2dLRmRwYm1SdmQzTXBBREl3TWpBNk1EazZNRGtnTURBNk1qYzZOVFlBQUFPZ0FRQURBQUFBQWYvL0FBQ2dBZ0FFQUFBQUFRQUFBR1NnQXdBRUFBQUFBUUFBQUdRQUFBQUFBQUFBQmdFREFBTUFBQUFCQUFZQUFBRWFBQVVBQUFBQkFBQUJJZ0ViQUFVQUFBQUJBQUFCS2dFb0FBTUFBQUFCQUFJQUFBSUJBQVFBQUFBQkFBQUJNZ0lDQUFRQUFBQUJBQUFWK2dBQUFBQUFBQUJJQUFBQUFRQUFBRWdBQUFBQi85ai83UUFNUVdSdlltVmZRMDBBQXYvdUFBNUJaRzlpWlFCa2dBQUFBQUgvMndDRUFBd0lDQWdKQ0F3SkNRd1JDd29MRVJVUERBd1BGUmdURXhVVEV4Z1JEQXdNREF3TUVRd01EQXdNREF3TURBd01EQXdNREF3TURBd01EQXdNREF3TURBd0JEUXNMRFE0TkVBNE9FQlFPRGc0VUZBNE9EZzRVRVF3TURBd01FUkVNREF3TURBd1JEQXdNREF3TURBd01EQXdNREF3TURBd01EQXdNREF3TURBd01EUC9BQUJFSUFLQUFvQU1CSWdBQ0VRRURFUUgvM1FBRUFBci94QUUvQUFBQkJRRUJBUUVCQVFBQUFBQUFBQUFEQUFFQ0JBVUdCd2dKQ2dzQkFBRUZBUUVCQVFFQkFBQUFBQUFBQUFFQUFnTUVCUVlIQ0FrS0N4QUFBUVFCQXdJRUFnVUhCZ2dGQXd3ekFRQUNFUU1FSVJJeEJVRlJZUk1pY1lFeUJoU1JvYkZDSXlRVlVzRmlNelJ5Z3RGREJ5V1NVL0RoOFdOek5SYWlzb01tUkpOVVpFWENvM1EyRjlKVjRtWHlzNFREMDNYajgwWW5sS1NGdEpYRTFPVDBwYlhGMWVYMVZtWjJocGFtdHNiVzV2WTNSMWRuZDRlWHA3ZkgxK2YzRVFBQ0FnRUNCQVFEQkFVR0J3Y0dCVFVCQUFJUkF5RXhFZ1JCVVdGeEloTUZNb0dSRktHeFFpUEJVdEh3TXlSaTRYS0Nra05URldOek5QRWxCaGFpc29NSEpqWEMwa1NUVktNWFpFVlZOblJsNHZLemhNUFRkZVB6UnBTa2hiU1Z4TlRrOUtXMXhkWGw5VlptZG9hV3ByYkcxdWIySnpkSFYyZDNoNWVudDhmLzJnQU1Bd0VBQWhFREVRQS9BT2xTU1NTYUNra2trbEtTU1NTVXBKSUFrd0JKUEFDeGVxZlczcEhUM09xYTQ1dVEzUjFXT1FXdFBoYmtPL1JOL3ExK3E5Sk1ZbVJvQzNhU1hDNVAxNjZ4WWYxYXFqRloyOXB0ZC9uMmxyUC9BQUpVM2ZXMzZ5T00vYlNQNnRWUUgvbnRKbEhMejhBK2pKTHprZld6Nnhnejl1SjhqWFVSL3dDZTFabyt2SFhhaVBXOURKYjNENjloL3dBL0hkWC9BTlFrbzh2UHVDOTZrdWU2ZDlkdWxaUkZlWTEzVDdUcHVlZDlKUDhBeDdSdXEvNjlYLzF4ZEQyQkJCYTRTMXdNZ2c4T2E0ZlNha3h5aktKcVFwU1NTU1MxU1NTU1NsSkpKSktmLzlEcFVra2ttZ3BKSkpKU2t0QUNTUTBBRXVjVEFBR3JuT2Nmb3Rha3VTK3ZIV0hOMjlHb2RBYzBXWnBIY0gzVVkzOXIrZnUvNnlrdWhBeWtBR2w5WS9yWFpubCtGMDU1cndCTGJMaExYMytQOHF2RS9jcituZjhBNGIvUkxuQUFCQUVBY0FKMGtHN0dJaUtDa2tra2x5a2tra2xLV3IwSDZ4NWZSbml2Vy9wNU0yWXZkczgyWXBQODFaL3dmOHpkL3dDQ0xLU1NRWWlRb2l3K3NZK1JqNVdQWGs0dGd1b3VHNnV4dkJIdy9OZTM2TDJmbUlpNFA2bmRaT0RuRHA5enYxVE9jQTJlSzd6N2E3UDZ0LzhBTTIvOWFzWGVJdExKRGdsWFRvcEpKSkpZcEpKSkpULy8wZWxTU1NTYUNra2trbExPZlhXeDF0cGl1dHBlOC95V2plLy9BS0xWNVJrNVZ1YmszWmwzODVrdmRhN3kzR1EzK3czMkwwYjZ5V0dyNnY4QVVYamswRmcvNjRXMC93RFV2WG1xVFo1WWFTUGpTa2tra0d3cEpKUmU0TVk1eDRhQ2Z1U1V1bld2OWFPbFhkSzZoalkxeldzZTdBeEh1YTBiUnZiVU1iSi9yUDhBdEZGajdQNjZ5RWxLU1NTU1VzUklJbUQySTdIeFhxWFNjNzlvOUx4YzAvVHVySHEvOFkzOUZmOEErQ3NldkxsM2YxR3NMdWh2WWY4QUJaTmdId2MydXovcW5Jc1BNQzRnOWorYjBLU1NTVFVVa2tra3AvL1M2VkpKSkpvS1NTU1NVMHV1WS8ycm91ZlFCTG40N3kwZnltRDFtZjhBU3JYbDRJSUJIQjFYcnpRMXpnMTMwWGUxM3dQdGN2SkxLWFk5dG1PNzZWRDNWSCt3NDEvOTlTYlBMSFNROGl4U1RTUEZQUTErVGFLY1Zyc2k1MzBhcVdteDUrRmRRZTVCc0tYUmZVZjZ1djZ6MWRsOXJmOEFKL1Qzc3R5SEhoOWdQcVkrSTM5N2U1dnEzL3VVZjhkV3JmUS84WEhXTTV6YmVxejB6RTBKWjdYWkx4b2RySy9mWGpibS9uMy9BS1JuL2NaZWs0SFQ4THB1SlhoWU5Rb3g2dm9NRW5VNnVlOTd2ZFpZL3dEUHNla2tDM24vQVBHQjlYYnVzOU1abDRqUy9QNmR2ZXl0b2syMVBnNUZEZjhBaFc3R1gwLzhYNlArR1hsRFhCd0RtbVFkUVY3K3VPK3RQK0wyanFkeitvZEplekV6YkNYWFV2a1VYUEo5MWtzbDJMZS8vQ1BZeDlWdjU5ZnFmcFVra2RuekpKWE9wOUY2djBoMjNxZUhiak43V2ticWpQN3VUVnZvL3dDbXFMWHNkOUZ3ZEhnUVVsckplZ2ZVdWowdnEvVStOY2kyMjAvRGQ2RFAralN2UG5IYTB1OEJQM0wxTHBHUDlsNlJnNHgwTldQV0hmMW5OOVIvL1RlaXdjd2ZTQjNMYlNTU1NhcWtra2tsUC8vVDZWSkpKSm9LU1NTU1VwY2E3NnI1M1Z2cmptMFlyV0RIcXVxeXNtMjMrYmF5M1prZWtXZ085V3kvOU0zMHY2L3FMUytzdjFvL1pidnNXQ0cyWjhBMnZlTnpLUVJ1WUN6L0FBbVE5dnUyZlFxWi9PTFYvd0FXL1U3T29kT3ozWlZ4dXptNVFkYzUwQSttNnF0bU1kakdzWXlyOUZkVXorbzlKczh2Q1FQRWRBUTd2L056NnRoMHQ2UmdpREkvVnFwSGgrWXFQMWs2MWI5VjhabVpqNHRObUZkdXBmVldCUy83UzRic1d4ejJleXpGZFhYYlhmOEFvL1hyL1JyZVdaOVkraDBkZTZWWjA2MjMwSEZ6YktidEhiTEdIMnVkWHVidlp0Yyt1eGlEYkkwMGVTNkIvakt6OG5xbEdIMWJIeHhqNVZncGJkamg3SFZ2c095bHoyMjJYTnRwOVQyUCtnOW44NHZRU0lNSGtMZ09nZjR0YzNFNnBSbWRWeWFMS01WN2JtVTQrOXhzZXc3NnZVZGF5cjA2bTJiYkhmem5xZnphNy9uVXBGVWJXWEUvV3Y4QXhnNVBTdXFXZE02WGoxVzJZc0RKdnlOem03M0FXZWpUVlUrditiWTVucVd2cytuL0FJTmRzdUkrdGY4QWkreStxZFVzNnAwdStsanNxSFpOR1FYTUFlME5yOWFtMnRsdjg0eHY2U3A3UCt1SkJVcjZPcDlVdnJYbS9XS1hESHJ4cXNWaGJuKzR1TDczL3dCR2JoamQ3TWYwbVcyWkgybG4wLzBGUCtFdFd2ZDBUb2VRV25JNmJpWEZ1alRaajFPZ2VEWllzejZvL1YvRytydlQ3S241TmQrWGxQRm1UYTF3REphTmxWTkljZDNwMWU3M3Yvbkh2VytoZlpRaWVvKzE4byt0ZjFOenVuOVROMVRhMzlNNmpsaXVnMGpaNlBydi9SNHRsSCtEYXhydlRwc3EvUSt6L0EvemE3WjhienQraURBK0E0UlByeG1Od3Zxdm1YZW9LN2lhbTRoMG4xeFpYYlI2WWY4QVNmVjZmci95R1Yrb3VUK3JuMXRmbTVET245VERSa1duYmo1TEJ0RDNmNkc2c2V4bHIvOEFCV1YreXorYjlOT0RXNW1CTkViUmVuU1NTU2Fpa2tra2xQOEEvOVRwVWtra21ncE8wZ0hjN1ZyZFNQSWU1TW5hWWNERWdjanhTVStTV1gyWk50bVRhZDF0NzNXdmNlN25uZVVicC9VYy9wbVczTTZmZTdHeVdndDlSc0dXdStsWFpXOE9ydHFkdCtoWTFUNnYwMnpwWFVyc0o0T3hwMzBPN1BwY1Q2TDIvd0RudC84QXdyRlVRZEFFRUFqYm85cDBuL0diMVJ2VWFUMWtVZnM4blpjNmlvc2N6ZEczSi9uTFhXTnAvd0FKVzMvQmVwL3dhNzV2VGVuV3RGdFkzc3RHOWoyUDNOYzEzdWErdHduY3gvNXE4TUpEUko0QzlIK3JWWFhlZzlMeG0xemx0Y0MvSjZWYThNTlllWE9hT25YdTlsTnpXdVo2K0pmK3JXMjcvVHN4N1VERVMzQVBtdUdjNC8wakhpMDBlM3JZeXV0dGJCREdDR2puUUt2alp6TDh6Tnc5aFpaZ3VyQmt6dnJ1cmJkVmtOMGJ0cmMvMXNmL0FJekhzUU9uZGY2VDFGL28wWGlyTEdqOEhJSG81TFRBZERzYTdhOS9QODVUNnRYL0FBaW4xRG90R2JkWGxiN3NMT3BhV1ZadU00VjJpc2tXT29mdmJaVGtZN250Mytqa1ZXcy8wYVZMaWIxQnUyWFUrb3M2ZGpzdWN6MWJMcjZzYWlrT0RYV1dYUGJXR01jNy9SczlTOS8vQUFWTml0dUFNdFB1YVpCOENEb3MvRTZGWFRtdHo4bkl5ZXBadGJYTW91eWkwaWxyeHR0K3k0K05YUmpVdnRiN0xML1M5ZlorajlYMDFMcVBXK2xkTmQ2ZVhrTkdRZm9ZbFlOdVE4a1MwVjRkRy9JZC9tYkVWWFdwMFMvczNwOGEwdGdEV1NZai9PWEJkZS94a1o5ZlZYVjlCZFE3QW9iNmUrMnYxRzNQa2JyNi9kVTlsVlczMGFQZnN0L1NXLzZGYTNXLzJ4OVlNSytqYzdwbU8rcDRvd3R6VGJjOC93QTMrMDdxeSt1bWgwYlBzT08vL0NmcmQvOEFnRjVpUTVyaXg3U3g3Q1d2WTRRV3VhZHIyT0g3ekhJQ0lHd0E4bHB6ZTVweEdYRDNOdDdySFhPcWRieVc1UFVydlZkVUMybXRyUXl1c09PNTRwcWIrLzhBbjJQMzNQOEE5SXFCTGdOelR0YzMzTmNPUVI3bXUvc3VUbzJIZzM5UXk2c0hHRTI1QjJnOW10L3d0ei8rRHBaNzNvbzIxTDZqaTN1eWNUSHlYQ0hYMVYydUhtOXJYdS82VGtWUlpXeXBqS3EvNXVwcldNbjkxZ0RHL3dEUmFwSXVjcEpKSkpUL0FQL1Y2VGMzeENXNXZpRnU3V2Z1Ti96Ui9jbHRaKzQzL05IOXlUQjkyUDczNE9GdWI0aExjM3hDM2RqUDNHLzVvV2JmOVkvcTVRekhzT1pqM056TGhqWTMyZmJlWDJraHV4cmFOLzBON1BVZi9Mci9BTkl4SlgzWS92Zmc1UFUrbDlPNnJRS00xbTdaSnF0YWR0bFpQMGpWWi9LL1ByZCtqZXVidCtvQjMvb09wTjlQL2hhZmNQOEF0cTNZNWVtV3RycGE1OXdaWFhXSE9lOTRBYTFyUnVlOXpqK1l4cXBkSTZ2MHJyZUljM3BqeGZqdHNkVVhtc3M5N05ybmUyMXJYZlJzWTVKZEhIT09nbitEeW5TUHFuMHZwbHJjbDd6bVpURE5kbGdEV01JL1Bxb2J1L1NmOEphK3hiZTRlSSs5YnUxbjdqZjgwZjNLc3pxUFNyT3BPNlN5K2gzVVdOM3V4QkJzRGY1V20zZHJ2OVBkNm16OUlraVdDVWpabmYwY1hMeGNITnJGZWJSVmxNYjlGdHpXdjJ6KzRYZTZ2K3dxN2VrNHRiZG1OazV1SXlaMlkrYmtNYlA5UjF0alZxWm4xcCtyK0owbS9xNHVabDRtUGI5bmQ5bWExN25YU1AwRlcvMDJQZHRkNm03ZjZmcExZZFd3R05qZjgwZjNKS0dHUTJuWGs4b2VsMFBhV1g1bWZrc0pCTExzN0ljMlJyOUN1MnBIeE1UQndXT1poVVZZelgvVDlKb2FYZjhBR1A4QTV5ei9BSzQ5ZEh0Wis0My9BRFIvY3FQVXVzOUo2WGtZT05tdUZkM1VyZlF4V2l2ZExwYTNjK0IranIzMlZNMy9BUENKS09HUjNtVDV0Q1crSVdSMWo2czlMNnRZY2g3blkyV2ZwWkZVSGZHZzllbC9zdGQvd242TzFkb1dNQmdzYkkva2orNUxhejl4dithUDdrbFJ3U2liRTYrajVrMzZnUDMrL3FUUFQvazBuZkg5cTdZdWg2UjBYcHZTS25OeEFYVzJDTGNpd2cyUEExMjZRMnVyL2dxMTBqTTNwMW1kYjA2dTJsMmRqc2JiZmpBQXZZeDJqWFA5djhwbnQrbitrci9mVTh2SXhNTEV1emNyYlhqNHpEYmMvYUREVzh3MW8zT2NrdWxqbklVWjZlVGo3bStJUzNOOFF0ZkR5Y1BPeEtjM0YyMlkrU3dXVlAyQUV0ZDR0Y1BhamJXZnVOL3pSL2Nrcys3SDk3OEhDM044UWx1YjRoYnUxbjdqZjgwZjNKYldmdU4velIvY2tyN3NmM3Z3Zi8vVzlDU1NTUVN1SkpnYWs2UjR5dkluZEM2RGQxNzZ4ZFlBdjZmMFBvVHdLdnNidzJ3NUljMm10dUxiYTI1ckcyWk5kdG4vQUFIcTQvOEFnMTY2MGtPQkdwQkJDOHQrczJCYjB5dks2Vmo5WndIOUk2djFSajhpdHptdXlzZXl4Mjk3NzJOT3o3UGorbCttM3Y4QThIL2d2VnNSVTNQcld5L3BuMWZ4T2o5TnlPb1puVXZyTDZSZFJtM20rNWxJRGJIWTdHczlObExyTHJXVTJlMzlLeXE1Wi8xZDYzOWRPbGRHdnF4S01UN0gwTzl1SmJpdllYMjM1Rjl6cTMwNDlsUHFldmtOc2Y3L0FFcmEvd0JINlhwK291a0daMFhGd3VwZld4blZIOWU2dDBySE9NTTZ4Z2JUWGRZUFRwWmhVVlZWME1iYmJiNzMxVzVINlAxUDBuNlZFK292UjhVL1Z6b3VTeDdiYVdPdXpuaU5YNXJpN0ZaYlp1RHY2QlQ2dFRQZDc3dlN1L3dTU25RK3VuMWh0K3J2MWZ0enEyN00yMHR4OFp1and5NTdYUGM5eFB0ZjltWXl4elBaK2t0OU5jSCt4TS82dmRDWmU5cnIvclY5YUhISHgyRXpaVlJZQS9LZnVmOEE5cThuMWE2N3JIL3pQci96bjg4dlNQckQwcXJxL1JNM0JmUXpJc2ZSYWNVV0NkdDRyZjhBWjdhL3ptV05lZnBNV1RaYjlaTHVrOUQ2cDBERDZmbldOd2FwKzFrL2FHT3NyWTI5dUprZXJSVXhqdG5wMi9wUFY5UkpUeCtiMGY2emRGd09rL1Z2SzZaaTVXS2VxVjVGTjJQY0FjcTJIQjJQYTYxMzZQZFUvd0JMMTdNZXIwNjJWTDB2cGVaMWJNcnN0NnAwMzlsV2g4TXErME15ZDdTTnpyTjFEVytsdGQ3ZGoxeGZXZXBmWFMvcVhRL3RmMWVycXVvekhXNHRUY2xoRjFqYTkzcDcvVWY2V3hqZlYzdmN1cTZKbS9XWExzdC9iWFNxZWwwdGFEU1dYaTZ4enAraTZ1czJOMmJOM3Y4QTBhU21mWC9ySDByNnU0YmN6cVZqZ0xIYkthYXdIVzJPL1A4QVNyYzZ2MlZOOTF0ajM3UCt1V1ZybS9ySlgrMFA4WVAxVXFFbXIweGxzYTZXd0d2c3k5em1PK2cvYmpzM3RSajlXdW85ZCt1TjNWdXZVK24wcnBqelYwdkVjUVJjSzNUWGtPWVBwWTlydjFtM2YvUGZvNlA1bXRXZXBVbTMvR1YwVzRrL29zREpmOFQrczE2Lzl2SktlaHhNL0V6aGU3RnM5WDdMZlppNUdoYnR1cWoxcXZlRy9SM2ZUV1o5YS9yTGI5V3NDdnFEY0IrZldiTmxwYTdZeW9SK2pmYzdaYi9PMmZvMmUzWi93bjBFUjJIbGRONnRsZFJ3cUhaZUwxSU1PYmkxRnJiV1pGUU5kZVpqdHZzb3g3SzhtaytubU0zMTIrcFg5by9TTE8veGt2dVo5U2M3WTJON3FHMnhydGFiV09kN2gvd2phNjBsUERmVlA2M1lmU1hQNmhrM01zNnIxYnFEUjFLMjJ0N3ZUd2dmV3lMYTNWTi9uc2k2eDN0cjlUK1ovbWx0Zlh5NzYzczZMbDJXWmVKbC9WL3FiNmppa005TEliWFk1dVRpMGlzc3BmOEFScjkrL3dCWit4VnFMZWlZZjFoK3FSeEsyM05yNllYNUF3bU50dWZrUHB1ajJVQXYrMS9hUG91dS9tYlAwbjZQOUloL1hIcG1YMDBZT05sL1dIT3VvdXlhYmI2c3BweURodGZ2OVBJeU1pdTZ4dGxyUDAzbzAxN1B0WG9aRmxTU0h1UHF0aS9XWER3VzRYVzY4S3FuRXFyb3cyWWhlYklyR3h6c2h6blBxOXpmN2ZxcmJXRjBQb1BWY1BLL2FHYjlZY25yRmRsZjZPdUF6R2MxNDlsMnoxY2hsbjc5VmxYcHJkU1NwSkpKQlQvLzEvUWtsbGZiOHo5OGY1cmYvSXBmYjh6OThmNXJmL0lwTVgzaUhhWDh2cTZvSkJrY2hjcjladnFUMDdOYlhuZEw2ZGpIcVZlWFRmWXh4OU91K3NQL0FGbW0rWGVpMWxtLzFiZjBlOSt4YXYyL00vZkgrYTMvQU1pbDl2elAzeC9tdC84QUlwSys4UTdTL2w5VnV1ZENxejhmcC9UTVd1dWpwZE9heS9Mb3JhMWpEUlVMTFcwTm9ic2E3MThqMDJ2L0FNOVRxd2MzcCtYazJkT1pYZGg1MWh5TE1XMncxR25JZkhyM1VXK25kdnhjbVBWdXgvNXltLzhBbVA1MVIrMzVuNzQvelcvK1JTKzM1bjc0L3dBMXYva1VsZmVJZHBmaC9GMWdkcnBiMk1nL0JVZWtkTy9aZUdjRmoydng2N2JYWWpRMGcxMDJPTjdNWjVjNS9xZWcreXhsYi84QVErbXEvd0J2elAzeC9tdC84aWw5dnpQM3gvbXQvd0RJcEsrOFE3Uy9sL2hNdXM0V1pmbWRIeThPdGxyOEROOVM1cjNiQUtiSzM0OTFvUDU3cWR6WCtrMzMyTFQwN2NkbGxmYjh6OThmNXJmL0FDS1gyL00vZkgrYTMveUtTdnZFTzB2dy9pNnF5TGVsZFJzK3RtTjFaOWxKNmZqWWx0TmJBMHR2Rmx1ME9yczFjMjJyL0RWMnQyYlA1cjAvOEpaTDdmbWZ2ai9OYi81Rkw3Zm1mdmovQURXLytSU1Y5NGgybC9MNnVxbzJWMVhWdnF1WTIycXdGdGxkalE1am1uNlRIc2ZMWHRXWjl2elAzeC9tdC84QUlwZmI4ejk4ZjVyZi9JcEsrOFE3Uy9EK0tBL1ZQcGxQVituOVM2YlRUMDl1R3pKcnlLOGRucHZ0YmZYNlZUbTIxbjIyWTltNTI5LzloVDZqMFF2ZjBtdkJxYUtjWHFWZWRtM1BzSnVkNmJMV2VyWSszZmJtV1diMnNlNTl2cWZ6ZGV6MHY1a24yL00vZkgrYTMveUtYMi9NL2ZIK2EzL3lLU3Z2RU8wdjVmVnRZblNlbllUZzdEcCt6dEJjVzAxdnNGRFMvd0RuSFZZZnFmWkt0LzhBd2RLdHJLKzM1bjc0L3dBMXYva1V2dCtaKytQODF2OEE1RkpYM2lIYVg0ZnhkVkpaWDIvTS9mSCthMy95S1gyL00vZkgrYTMvQU1pa3I3eER0TCtYMWYvUTZWSkpKSm9LU1NTU1VwSkpKSlNra2trbEtTU1NTVXBKSkpKU2tra2tsS1NTU1NVcEpKSkpTa2tra2xQLzJmL2hFdEZvZEhSd09pOHZibk11WVdSdlltVXVZMjl0TDNoaGNDOHhMakF2QUR3L2VIQmhZMnRsZENCaVpXZHBiajBpNzd1L0lpQnBaRDBpVnpWTk1FMXdRMlZvYVVoNmNtVlRlazVVWTNwcll6bGtJajgrSUR4NE9uaHRjRzFsZEdFZ2VHMXNibk02ZUQwaVlXUnZZbVU2Ym5NNmJXVjBZUzhpSUhnNmVHMXdkR3M5SWtGa2IySmxJRmhOVUNCRGIzSmxJRFV1Tmkxak1UUTFJRGM1TGpFMk16UTVPU3dnTWpBeE9DOHdPQzh4TXkweE5qbzBNRG95TWlBZ0lDQWdJQ0FnSWo0Z1BISmtaanBTUkVZZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklqNGdQSEprWmpwRVpYTmpjbWx3ZEdsdmJpQnlaR1k2WVdKdmRYUTlJaUlnZUcxc2JuTTZlRzF3UFNKb2RIUndPaTh2Ym5NdVlXUnZZbVV1WTI5dEwzaGhjQzh4TGpBdklpQjRiV3h1Y3pwa1l6MGlhSFIwY0RvdkwzQjFjbXd1YjNKbkwyUmpMMlZzWlcxbGJuUnpMekV1TVM4aUlIaHRiRzV6T25odGNFMU5QU0pvZEhSd09pOHZibk11WVdSdlltVXVZMjl0TDNoaGNDOHhMakF2YlcwdklpQjRiV3h1Y3pwemRFVjJkRDBpYUhSMGNEb3ZMMjV6TG1Ga2IySmxMbU52YlM5NFlYQXZNUzR3TDNOVWVYQmxMMUpsYzI5MWNtTmxSWFpsYm5RaklpQjRiV3h1Y3pwemRGSmxaajBpYUhSMGNEb3ZMMjV6TG1Ga2IySmxMbU52YlM5NFlYQXZNUzR3TDNOVWVYQmxMMUpsYzI5MWNtTmxVbVZtSXlJZ2VHMXNibk02Y0dodmRHOXphRzl3UFNKb2RIUndPaTh2Ym5NdVlXUnZZbVV1WTI5dEwzQm9iM1J2YzJodmNDOHhMakF2SWlCNGJYQTZRM0psWVhSdmNsUnZiMnc5SWtGa2IySmxJRkJvYjNSdmMyaHZjQ0JEUXlBeU1ERTVJQ2hYYVc1a2IzZHpLU0lnZUcxd09rTnlaV0YwWlVSaGRHVTlJakl3TWpBdE1Ea3RNRGhVTWpNNk1ESTZOVEVyTURnNk1EQWlJSGh0Y0RwTlpYUmhaR0YwWVVSaGRHVTlJakl3TWpBdE1Ea3RNRGxVTURBNk1qYzZOVFlyTURnNk1EQWlJSGh0Y0RwTmIyUnBabmxFWVhSbFBTSXlNREl3TFRBNUxUQTVWREF3T2pJM09qVTJLekE0T2pBd0lpQmtZenBtYjNKdFlYUTlJbWx0WVdkbEwycHdaV2NpSUhodGNFMU5Pa2x1YzNSaGJtTmxTVVE5SW5odGNDNXBhV1E2Tm1KbFl6UmtaVE10T0RWaFpDMDJOelF3TFdFMU9XVXRPVGsyWWprME9UUmpZVGt4SWlCNGJYQk5UVHBFYjJOMWJXVnVkRWxFUFNKaFpHOWlaVHBrYjJOcFpEcHdhRzkwYjNOb2IzQTZPREF6T1dWaE16TXRNVFEzTlMwMFlUUmlMV0l6T0RBdE9ETmxOamRsTmpZME5ERXdJaUI0YlhCTlRUcFBjbWxuYVc1aGJFUnZZM1Z0Wlc1MFNVUTlJbmh0Y0M1a2FXUTZZakk0WXprMFpHVXROakV5T1MwMllqUmlMVGcwWVdNdFltVXlOMlEzTWpGaE4yTTNJaUJ3YUc5MGIzTm9iM0E2UTI5c2IzSk5iMlJsUFNJeklqNGdQSGh0Y0UxTk9raHBjM1J2Y25rK0lEeHlaR1k2VTJWeFBpQThjbVJtT214cElITjBSWFowT21GamRHbHZiajBpWTNKbFlYUmxaQ0lnYzNSRmRuUTZhVzV6ZEdGdVkyVkpSRDBpZUcxd0xtbHBaRHBpTWpoak9UUmtaUzAyTVRJNUxUWmlOR0l0T0RSaFl5MWlaVEkzWkRjeU1XRTNZemNpSUhOMFJYWjBPbmRvWlc0OUlqSXdNakF0TURrdE1EaFVNak02TURJNk5URXJNRGc2TURBaUlITjBSWFowT25OdlpuUjNZWEpsUVdkbGJuUTlJa0ZrYjJKbElGQm9iM1J2YzJodmNDQkRReUF5TURFNUlDaFhhVzVrYjNkektTSXZQaUE4Y21SbU9teHBJSE4wUlhaME9tRmpkR2x2YmowaWMyRjJaV1FpSUhOMFJYWjBPbWx1YzNSaGJtTmxTVVE5SW5odGNDNXBhV1E2T1RKaU1UTXdPRFl0TlRBelpDMDNZalJtTFRnNU1ESXRNRGs0TXpWbFltRTRNVFU1SWlCemRFVjJkRHAzYUdWdVBTSXlNREl3TFRBNUxUQTRWREl6T2pVeE9qTTNLekE0T2pBd0lpQnpkRVYyZERwemIyWjBkMkZ5WlVGblpXNTBQU0pCWkc5aVpTQlFhRzkwYjNOb2IzQWdRME1nTWpBeE9TQW9WMmx1Wkc5M2N5a2lJSE4wUlhaME9tTm9ZVzVuWldROUlpOGlMejRnUEhKa1pqcHNhU0J6ZEVWMmREcGhZM1JwYjI0OUluTmhkbVZrSWlCemRFVjJkRHBwYm5OMFlXNWpaVWxFUFNKNGJYQXVhV2xrT2pabU1XRm1PRGN3TFRrMFlqa3RaalUwTVMwNU5UVTNMVFJqWTJWbVpXRTVaR0UxWXlJZ2MzUkZkblE2ZDJobGJqMGlNakF5TUMwd09TMHdPVlF3TURveU56bzFOaXN3T0Rvd01DSWdjM1JGZG5RNmMyOW1kSGRoY21WQloyVnVkRDBpUVdSdlltVWdVR2h2ZEc5emFHOXdJRU5ESURJd01Ua2dLRmRwYm1SdmQzTXBJaUJ6ZEVWMmREcGphR0Z1WjJWa1BTSXZJaTgrSUR4eVpHWTZiR2tnYzNSRmRuUTZZV04wYVc5dVBTSmpiMjUyWlhKMFpXUWlJSE4wUlhaME9uQmhjbUZ0WlhSbGNuTTlJbVp5YjIwZ1lYQndiR2xqWVhScGIyNHZkbTVrTG1Ga2IySmxMbkJvYjNSdmMyaHZjQ0IwYnlCcGJXRm5aUzlxY0dWbklpOCtJRHh5WkdZNmJHa2djM1JGZG5RNllXTjBhVzl1UFNKa1pYSnBkbVZrSWlCemRFVjJkRHB3WVhKaGJXVjBaWEp6UFNKamIyNTJaWEowWldRZ1puSnZiU0JoY0hCc2FXTmhkR2x2Ymk5MmJtUXVZV1J2WW1VdWNHaHZkRzl6YUc5d0lIUnZJR2x0WVdkbEwycHdaV2NpTHo0Z1BISmtaanBzYVNCemRFVjJkRHBoWTNScGIyNDlJbk5oZG1Wa0lpQnpkRVYyZERwcGJuTjBZVzVqWlVsRVBTSjRiWEF1YVdsa09qWmlaV00wWkdVekxUZzFZV1F0TmpjME1DMWhOVGxsTFRrNU5tSTVORGswWTJFNU1TSWdjM1JGZG5RNmQyaGxiajBpTWpBeU1DMHdPUzB3T1ZRd01Eb3lOem8xTmlzd09Eb3dNQ0lnYzNSRmRuUTZjMjltZEhkaGNtVkJaMlZ1ZEQwaVFXUnZZbVVnVUdodmRHOXphRzl3SUVORElESXdNVGtnS0ZkcGJtUnZkM01wSWlCemRFVjJkRHBqYUdGdVoyVmtQU0l2SWk4K0lEd3ZjbVJtT2xObGNUNGdQQzk0YlhCTlRUcElhWE4wYjNKNVBpQThlRzF3VFUwNlJHVnlhWFpsWkVaeWIyMGdjM1JTWldZNmFXNXpkR0Z1WTJWSlJEMGllRzF3TG1scFpEbzJaakZoWmpnM01DMDVOR0k1TFdZMU5ERXRPVFUxTnkwMFkyTmxabVZoT1dSaE5XTWlJSE4wVW1WbU9tUnZZM1Z0Wlc1MFNVUTlJbmh0Y0M1a2FXUTZZakk0WXprMFpHVXROakV5T1MwMllqUmlMVGcwWVdNdFltVXlOMlEzTWpGaE4yTTNJaUJ6ZEZKbFpqcHZjbWxuYVc1aGJFUnZZM1Z0Wlc1MFNVUTlJbmh0Y0M1a2FXUTZZakk0WXprMFpHVXROakV5T1MwMllqUmlMVGcwWVdNdFltVXlOMlEzTWpGaE4yTTNJaTgrSUR4d2FHOTBiM05vYjNBNlZHVjRkRXhoZVdWeWN6NGdQSEprWmpwQ1lXYytJRHh5WkdZNmJHa2djR2h2ZEc5emFHOXdPa3hoZVdWeVRtRnRaVDBpNkwydjVMdTI1YkNQNWFhNUlpQndhRzkwYjNOb2IzQTZUR0Y1WlhKVVpYaDBQU0xvdmEva3U3YmxzSS9scHJraUx6NGdQQzl5WkdZNlFtRm5QaUE4TDNCb2IzUnZjMmh2Y0RwVVpYaDBUR0Y1WlhKelBpQThjR2h2ZEc5emFHOXdPa1J2WTNWdFpXNTBRVzVqWlhOMGIzSnpQaUE4Y21SbU9rSmhaejRnUEhKa1pqcHNhVDU0YlhBdVpHbGtPakJtWVdVek1EZzVMVGN5WVRJdE1UTTBNeTA1WVRWakxUUXlObVE1TldFeU56WTFNVHd2Y21SbU9teHBQaUE4Y21SbU9teHBQbmh0Y0M1a2FXUTZZbU5tTlRRNU9ESXRPVFZpTnkwMVpqUXdMVGcxTlRRdFkyRmxNVEU1WmpBeU9EVmtQQzl5WkdZNmJHaytJRHd2Y21SbU9rSmhaejRnUEM5d2FHOTBiM05vYjNBNlJHOWpkVzFsYm5SQmJtTmxjM1J2Y25NK0lEd3ZjbVJtT2tSbGMyTnlhWEIwYVc5dVBpQThMM0prWmpwU1JFWStJRHd2ZURwNGJYQnRaWFJoUGlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJRHcvZUhCaFkydGxkQ0JsYm1ROUluY2lQejcvN1I4c1VHaHZkRzl6YUc5d0lETXVNQUE0UWtsTkJDVUFBQUFBQUJBQUFBQUFBQUFBQUFBQUFBQUFBQUFBT0VKSlRRUTZBQUFBQUFEWEFBQUFFQUFBQUFFQUFBQUFBQXR3Y21sdWRFOTFkSEIxZEFBQUFBVUFBQUFBVUhOMFUySnZiMndCQUFBQUFFbHVkR1ZsYm5WdEFBQUFBRWx1ZEdVQUFBQUFTVzFuSUFBQUFBOXdjbWx1ZEZOcGVIUmxaVzVDYVhSaWIyOXNBQUFBQUF0d2NtbHVkR1Z5VG1GdFpWUkZXRlFBQUFBQkFBQUFBQUFQY0hKcGJuUlFjbTl2WmxObGRIVndUMkpxWXdBQUFBVm9JV2czaTc1L2JnQUFBQUFBQ25CeWIyOW1VMlYwZFhBQUFBQUJBQUFBQUVKc2RHNWxiblZ0QUFBQURHSjFhV3gwYVc1UWNtOXZaZ0FBQUFsd2NtOXZaa05OV1VzQU9FSkpUUVE3QUFBQUFBSXRBQUFBRUFBQUFBRUFBQUFBQUJKd2NtbHVkRTkxZEhCMWRFOXdkR2x2Ym5NQUFBQVhBQUFBQUVOd2RHNWliMjlzQUFBQUFBQkRiR0p5WW05dmJBQUFBQUFBVW1kelRXSnZiMndBQUFBQUFFTnlia05pYjI5c0FBQUFBQUJEYm5SRFltOXZiQUFBQUFBQVRHSnNjMkp2YjJ3QUFBQUFBRTVuZEhaaWIyOXNBQUFBQUFCRmJXeEVZbTl2YkFBQUFBQUFTVzUwY21KdmIyd0FBQUFBQUVKamEyZFBZbXBqQUFBQUFRQUFBQUFBQUZKSFFrTUFBQUFEQUFBQUFGSmtJQ0JrYjNWaVFHL2dBQUFBQUFBQUFBQUFSM0p1SUdSdmRXSkFiK0FBQUFBQUFBQUFBQUJDYkNBZ1pHOTFZa0J2NEFBQUFBQUFBQUFBQUVKeVpGUlZiblJHSTFKc2RBQUFBQUFBQUFBQUFBQUFBRUpzWkNCVmJuUkdJMUpzZEFBQUFBQUFBQUFBQUFBQUFGSnpiSFJWYm5SR0kxQjRiRUJTQUFBQUFBQUFBQUFBQ25abFkzUnZja1JoZEdGaWIyOXNBUUFBQUFCUVoxQnpaVzUxYlFBQUFBQlFaMUJ6QUFBQUFGQm5VRU1BQUFBQVRHVm1kRlZ1ZEVZalVteDBBQUFBQUFBQUFBQUFBQUFBVkc5d0lGVnVkRVlqVW14MEFBQUFBQUFBQUFBQUFBQUFVMk5zSUZWdWRFWWpVSEpqUUZrQUFBQUFBQUFBQUFBUVkzSnZjRmRvWlc1UWNtbHVkR2x1WjJKdmIyd0FBQUFBRG1OeWIzQlNaV04wUW05MGRHOXRiRzl1WndBQUFBQUFBQUFNWTNKdmNGSmxZM1JNWldaMGJHOXVad0FBQUFBQUFBQU5ZM0p2Y0ZKbFkzUlNhV2RvZEd4dmJtY0FBQUFBQUFBQUMyTnliM0JTWldOMFZHOXdiRzl1WndBQUFBQUFPRUpKVFFQdEFBQUFBQUFRQUVnQUFBQUJBQUVBU0FBQUFBRUFBVGhDU1UwRUpnQUFBQUFBRGdBQUFBQUFBQUFBQUFBL2dBQUFPRUpKVFFRTkFBQUFBQUFFQUFBQVdqaENTVTBFR1FBQUFBQUFCQUFBQUI0NFFrbE5BL01BQUFBQUFBa0FBQUFBQUFBQUFBRUFPRUpKVFNjUUFBQUFBQUFLQUFFQUFBQUFBQUFBQVRoQ1NVMEQ5UUFBQUFBQVNBQXZabVlBQVFCc1ptWUFCZ0FBQUFBQUFRQXZabVlBQVFDaG1ab0FCZ0FBQUFBQUFRQXlBQUFBQVFCYUFBQUFCZ0FBQUFBQUFRQTFBQUFBQVFBdEFBQUFCZ0FBQUFBQUFUaENTVTBEK0FBQUFBQUFjQUFBLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy93UG9BQUFBQVAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vOEQ2QUFBQUFELy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9BK2dBQUFBQS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vd1BvQUFBNFFrbE5CQUFBQUFBQUFBSUFBemhDU1UwRUFnQUFBQUFBQ0FBQUFBQUFBQUFBT0VKSlRRUXdBQUFBQUFBRUFRRUJBVGhDU1UwRUxRQUFBQUFBQmdBQkFBQUFEVGhDU1UwRUNBQUFBQUFBRUFBQUFBRUFBQUpBQUFBQ1FBQUFBQUE0UWtsTkJCNEFBQUFBQUFRQUFBQUFPRUpKVFFRYUFBQUFBQU05QUFBQUJnQUFBQUFBQUFBQUFBQUJMQUFBQVN3QUFBQUVqMjlPOWx3UFdia0FBQUFCQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFFQUFBQUFBQUFBQUFBQUFTd0FBQUVzQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRUFBQUFBRUFBQUFBQUFCdWRXeHNBQUFBQWdBQUFBWmliM1Z1WkhOUFltcGpBQUFBQVFBQUFBQUFBRkpqZERFQUFBQUVBQUFBQUZSdmNDQnNiMjVuQUFBQUFBQUFBQUJNWldaMGJHOXVad0FBQUFBQUFBQUFRblJ2Yld4dmJtY0FBQUVzQUFBQUFGSm5hSFJzYjI1bkFBQUJMQUFBQUFaemJHbGpaWE5XYkV4ekFBQUFBVTlpYW1NQUFBQUJBQUFBQUFBRmMyeHBZMlVBQUFBU0FBQUFCM05zYVdObFNVUnNiMjVuQUFBQUFBQUFBQWRuY205MWNFbEViRzl1WndBQUFBQUFBQUFHYjNKcFoybHVaVzUxYlFBQUFBeEZVMnhwWTJWUGNtbG5hVzRBQUFBTllYVjBiMGRsYm1WeVlYUmxaQUFBQUFCVWVYQmxaVzUxYlFBQUFBcEZVMnhwWTJWVWVYQmxBQUFBQUVsdFp5QUFBQUFHWW05MWJtUnpUMkpxWXdBQUFBRUFBQUFBQUFCU1kzUXhBQUFBQkFBQUFBQlViM0FnYkc5dVp3QUFBQUFBQUFBQVRHVm1kR3h2Ym1jQUFBQUFBQUFBQUVKMGIyMXNiMjVuQUFBQkxBQUFBQUJTWjJoMGJHOXVad0FBQVN3QUFBQURkWEpzVkVWWVZBQUFBQUVBQUFBQUFBQnVkV3hzVkVWWVZBQUFBQUVBQUFBQUFBQk5jMmRsVkVWWVZBQUFBQUVBQUFBQUFBWmhiSFJVWVdkVVJWaFVBQUFBQVFBQUFBQUFEbU5sYkd4VVpYaDBTWE5JVkUxTVltOXZiQUVBQUFBSVkyVnNiRlJsZUhSVVJWaFVBQUFBQVFBQUFBQUFDV2h2Y25wQmJHbG5ibVZ1ZFcwQUFBQVBSVk5zYVdObFNHOXlla0ZzYVdkdUFBQUFCMlJsWm1GMWJIUUFBQUFKZG1WeWRFRnNhV2R1Wlc1MWJRQUFBQTlGVTJ4cFkyVldaWEowUVd4cFoyNEFBQUFIWkdWbVlYVnNkQUFBQUF0aVowTnZiRzl5Vkhsd1pXVnVkVzBBQUFBUlJWTnNhV05sUWtkRGIyeHZjbFI1Y0dVQUFBQUFUbTl1WlFBQUFBbDBiM0JQZFhSelpYUnNiMjVuQUFBQUFBQUFBQXBzWldaMFQzVjBjMlYwYkc5dVp3QUFBQUFBQUFBTVltOTBkRzl0VDNWMGMyVjBiRzl1WndBQUFBQUFBQUFMY21sbmFIUlBkWFJ6WlhSc2IyNW5BQUFBQUFBNFFrbE5CQ2dBQUFBQUFBd0FBQUFDUC9BQUFBQUFBQUE0UWtsTkJCRUFBQUFBQUFFQkFEaENTVTBFRkFBQUFBQUFCQUFBQUEwNFFrbE5CQXdBQUFBQUZoWUFBQUFCQUFBQW9BQUFBS0FBQUFIZ0FBRXNBQUFBRmZvQUdBQUIvOWovN1FBTVFXUnZZbVZmUTAwQUF2L3VBQTVCWkc5aVpRQmtnQUFBQUFILzJ3Q0VBQXdJQ0FnSkNBd0pDUXdSQ3dvTEVSVVBEQXdQRlJnVEV4VVRFeGdSREF3TURBd01FUXdNREF3TURBd01EQXdNREF3TURBd01EQXdNREF3TURBd01EQXdCRFFzTERRNE5FQTRPRUJRT0RnNFVGQTRPRGc0VUVRd01EQXdNRVJFTURBd01EQXdSREF3TURBd01EQXdNREF3TURBd01EQXdNREF3TURBd01EQXdNRFAvQUFCRUlBS0FBb0FNQklnQUNFUUVERVFILzNRQUVBQXIveEFFL0FBQUJCUUVCQVFFQkFRQUFBQUFBQUFBREFBRUNCQVVHQndnSkNnc0JBQUVGQVFFQkFRRUJBQUFBQUFBQUFBRUFBZ01FQlFZSENBa0tDeEFBQVFRQkF3SUVBZ1VIQmdnRkF3d3pBUUFDRVFNRUlSSXhCVUZSWVJNaWNZRXlCaFNSb2JGQ0l5UVZVc0ZpTXpSeWd0RkRCeVdTVS9EaDhXTnpOUmFpc29NbVJKTlVaRVhDbzNRMkY5SlY0bVh5czRURDAzWGo4MFlubEtTRnRKWEUxT1QwcGJYRjFlWDFWbVoyaHBhbXRzYlc1dlkzUjFkbmQ0ZVhwN2ZIMStmM0VRQUNBZ0VDQkFRREJBVUdCd2NHQlRVQkFBSVJBeUV4RWdSQlVXRnhJaE1GTW9HUkZLR3hRaVBCVXRId015Umk0WEtDa2tOVEZXTnpOUEVsQmhhaXNvTUhKalhDMGtTVFZLTVhaRVZWTm5SbDR2S3poTVBUZGVQelJwU2toYlNWeE5UazlLVzF4ZFhsOVZabWRvYVdwcmJHMXViMkp6ZEhWMmQzaDVlbnQ4Zi8yZ0FNQXdFQUFoRURFUUEvQU9sU1NTU2FDa2tra2xLU1NTU1VwSklBa3dCSlBBQ3hlcWZXM3BIVDNPcWE0NXVRM1IxV09RV3RQaGJrTy9STi9xMStxOUpNWW1Sb0MzYVNYQzVQMTY2eFlmMWFxakZaMjlwdGQvbjJsclAvQUFKVTNmVzM2eU9NL2JTUDZ0VlFIL250SmxITHo4QStqSkx6a2ZXejZ4Z3o5dUo4alhVUi93Q2UxWm8rdkhYYWlQVzlESmIzRDY5aC93QS9IZFgvQU5Ra284dlB1Qzk2a3VlNmQ5ZHVsWlJGZVkxM1Q3VHB1ZWQ5SlA4QXg3UnVxLzY5WC8xeGREMkJCQmE0UzF3TWdnOE9hNGZTYWt4eWpLSnFRcFNTU1NTMVNTU1NTbEpKSkpLZi85RHBVa2trbWdwSkpKSlNrdEFDU1EwQUV1Y1RBQUdybk9jZm90YWt1Uyt2SFdITjI5R29kQWMwV1pwSGNIM1VZMzlyK2Z1LzZ5a3VoQXlrQUdsOVkvclhabmwrRjA1NXJ3QkxiTGhMWDMrUDhxdkUvY3IrbmY4QTRiL1JMbkFBQkFFQWNBSjBrRzdHSWlLQ2tra2tseWtra2tsS1dyMEg2eDVmUm5pdlcvcDVNMll2ZHM4MllwUDgxWi93Zjh6ZC93Q0NMS1NTUVlpUW9pdytzWStSajVXUFhrNHRndW91RzZ1eHZCSHcvTmUzNkwyZm1JaTRQNm5kWk9EbkRwOXp2MVRPY0EyZUs3ejdhN1A2dC84QU0yLzlhc1hlSXRMSkRnbFhUb3BKSkpKWXBKSkpKVC8vMGVsU1NTU2FDa2tra2xMT2ZYV3gxdHBpdXRwZTgveVdqZS8vQUtMVjVSazVWdWJrM1psMzg1a3ZkYTd5M0dRMyt3MzJMMGI2eVdHcjZ2OEFVWGprMEZnLzY0VzAvd0RVdlhtcVRaNVlhU1BqU2tra2tHd3BKSlJlNE1ZNXg0YUNmdVNVdW5XdjlhT2xYZEs2aGpZMXpXc2U3QXhIdWEwYlJ2YlVNYkovclA4QXRGRmo3UDY2eUVsS1NTU1NVc1JJSW1EMkk3SHhYcVhTYzc5bzlMeGMwL1R1ckhxLzhZMzlGZjhBK0NzZXZMbDNmMUdzTHVodllmOEFCWk5nSHdjMnV6L3FuSXNQTUM0ZzlqK2IwS1NTU1RVVWtra2twLy9TNlZKSkpKb0tTU1NTVTB1dVkvMnJvdWZRQkxuNDd5MGZ5bUQxbWY4QVNyWGw0SUlCSEIxWHJ6UTF6ZzEzMFhlMTN3UHRjdkpMS1hZOXRtTzc2VkQzVkgrdzQxLzk5U2JQTEhTUThpeFNUU1BGUFExK1RhS2NWcnNpNTMwYXFXbXg1K0ZkUWU1QnNLWFJmVWY2dXY2ejFkbDlyZjhBSi9UM3N0eUhIaDlnUHFZK0kzOTdlNXZxMy91VWY4ZFdyZlEvOFhIV001emJlcXowekUwSlo3WFpMeG9kcksvZlhqYm0vbjMvQUtSbi9jWmVrNEhUOExwdUpYaFlOUW94NnZvTUVuVTZ1ZTk3dmRaWS93RFBzZWtrQzNuL0FQR0I5WGJ1czlNWmw0alMvUDZkdmV5dG9rMjFQZzVGRGY4QWhXN0dYMC84WDZQK0dYbERYQndEbW1RZFFWNyt1Tyt0UCtMMmpxZHorb2RKZXpFemJDWFhVdmtVWFBKOTFrc2wyTGUvL0NQWXg5VnY1OWZxZnBVa2tkbnpKSlhPcDlGNnYwaDIzcWVIYmpON1drYnFqUDd1VFZ2by93Q21xTFhzZDlGd2RIZ1FVbHJKZWdmVXVqMHZxL1UrTmNpMjIwL0RkNkRQK2pTdlBuSGEwdThCUDNMMUxwR1A5bDZSZzR4ME5XUFdIZjFuTjlSLy9UZWl3Y3dmU0IzTGJTU1NTYXFra2trbFAvL1Q2VkpKSkpvS1NTU1NVcGNhNzZyNTNWdnJqbTBZcldESHF1cXlzbTIzK2JheTNaa2VrV2dPOVd5LzlNMzB2Ni9xTFMrc3Yxby9aYnZzV0NHMlo4QTJ2ZU56S1FSdVlDei9BQW1ROXZ1MmZRcVovT0xWL3dBVy9VN09vZE96M1pWeHV6bTVRZGM1MEErbTZxdG1NZGpHc1l5cjlGZFV6K285SnM4dkNRUEVkQVE3di9OejZ0aDB0NlJnaURJL1ZxcEhoK1lxUDFrNjFiOVY4Wm1aajR0Tm1GZHVwZlZXQlMvN1M0YnNXeHoyZXl6RmRYWGJYZjhBby9Yci9ScmVXWjlZK2gwZGU2VlowNjIzMEhGemJLYnRIYkxHSDJ1ZFh1YnZadGMrdXhpRGJJMDBlUzZCL2pLejhucWxHSDFiSHh4ajVWZ3BiZGpoN0hWdnNPeWx6MjIyWE50cDlUMlArZzluODR2UVNJTUhrTGdPZ2Y0dGMzRTZwUm1kVnlhTEtNVjdibVU0Kzl4c2V3NzZ2VWRheXIwNm0yYmJIZnpucWZ6YTcvblVwRlViV1hFL1d2OEF4ZzVQU3VxV2RNNlhqMVcyWXNESnZ5TnptNzNBV2VqVFZVK3YrYlk1bnFXdnMrbi9BSU5kc3VJK3RmOEFpK3krcWRVczZwMHUrbGpzcUhaTkdRWE1BZTBOcjlhbTJ0bHY4NHh2NlNwN1ArdUpCVXI2T3A5VXZyWG0vV0tYREhyeHFzVmhibis0dUw3My93QkdiaGpkN01mMG1XMlpIMmxuMC8wRlArRXRXdmQwVG9lUVduSTZiaVhGdWpUWmoxT2dlRFpZc3o2by9WL0crcnZUN0tuNU5kK1hsUEZtVGExd0RKYU5sVk5JY2QzcDFlNzN2L25IdlcraGZaUWllbysxOG8rdGYxTnp1bjlUTjFUYTM5TTZqbGl1ZzBqWjZQcnYvUjR0bEgrRGF4cnZUcHNxL1Erei9BL3phN1o4Ynp0K2lEQStBNFJQcnhtTnd2cXZtWGVvSzdpYW00aDBuMXhaWGJSNllmOEFTZlY2ZnIveUdWK291VCtybjF0Zm01RE9uOVREUmtXbmJqNUxCdEQzZjZHNnNleGxyLzhBQldWK3l6K2I5Tk9EVzVtQk5FYlJlblNTU1NhaWtra2tsUDhBLzlUcFVra2ttZ3BPMGdIYzdWcmRTUEllNU1uYVljREVnY2p4U1UrU1dYMlpOdG1UYWQxdDczV3ZjZTdubmVVYnAvVWMvcG1XM002ZmU3R3lXZ3Q5UnNHV3UrbFhaVzhPcnRxZHQraFkxVDZ2MDJ6cFhVcnNKNE94cDMwTzdQcGNUNkwyL3dEbnQvOEF3ckZVUWRBRUVBamJvOXAwbi9HYjFSdlVhVDFrVWZzOG5aYzZpb3NjemRHM0ovbkxYV05wL3dBSlczL0JlcC93YTc1dlRlbld0RnRZM3N0RzlqMlAzTmMxM3VhK3R3bmN4LzVxOE1KRFJKNEM5SCtyVlhYZWc5THhtMXpsdGNDL0o2VmE4TU5ZZVhPYU9uWHU5bE56V3VaNitKZityVzI3L1RzeDdVREVTM0FQbXVHYzQvMGpIaTAwZTNyWXl1dHRiQkRHQ0dqblFLdmpaekw4ek53OWhaWmd1ckJrenZydXJiZFZrTjBidHJjLzFzZi9BSXpIc1FPbmRmNlQxRi9vMFhpckxHajhISUhvNUxUQWREc2E3YTkvUDg1VDZ0WC9BQWluMURvdEdiZFhsYjdzTE9wYVdWWnVNNFYyaXNrV09vZnZiWlRrWTdudDMramtWV3MvMGFWTGliMUJ1MlhVK29zNmRqc3VjejFiTHI2c2Fpa09EWFdXWFBiV0dNYzcvUnM5UzkvL0FBVk5pdHVBTXRQdWFaQjhDRG9zL0U2RlhUbXR6OG5JeWVwWnRiWE1vdXlpMGlscnh0dCt5NCtOWFJqVXZ0YjdMTC9TOWZaK2o5WDAxTHFQVytsZE5kNmVYa05HUWZvWWxZTnVROGtTMFY0ZEcvSWQvbWJFVlhXcDBTL3MzcDhhMHRnRFdTWWovT1hCZGUveGtaOWZWWFY5QmRRN0FvYjZlKzJ2MUczUGticjYvZFU5bFZXMzBhUGZzdC9TVy82RmEzVy8yeDlZTUsramM3cG1PK3A0b3d0elRiYzgvd0EzKzA3cXkrdW1oMGJQc09PLy9DZnJkLzhBZ0Y1aVE1cml4N1N4N0NXdlk0UVd1YWRyMk9IN3pISUNJR3dBOGxwemU1cHhHWEQzTnQ3ckhYT3FkYnlXNVBVcnZWZFVDMm10clF5dXNPTzU0cHFiKy84QW4yUDMzUDhBOUlxQkxnTnpUdGMzM05jT1FSN211L3N1VG8ySGczOVF5NnNIR0UyNUIyZzltdC93dHovK0RwWjczb28yMUw2amkzdXljVEh5WENIWDFWMnVIbTlyWHUvNlRrVlJaV3lwaktxLzV1cHJXTW45MWdERy93RFJhcEl1Y3BKSkpKVC9BUC9WNlRjM3hDVzV2aUZ1N1dmdU4velIvY2x0Wis0My9OSDl5VEI5MlA3MzRPRnViNGhMYzN4QzNkalAzRy81b1diZjlZL3E1UXpIc09aajNOekxoalkzMmZiZVgya2h1eHJhTi8wTjdQVWYvTHIvQU5JeEpYM1kvdmZnNVBVK2w5TzZyUUtNMW03WkpxdGFkdGxaUDBqVlovSy9QcmQramV1YnQrb0IzL29PcE45UC9oYWZjUDhBdHEzWTVlbVd0cnBhNTl3WlhYV0hPZTk0QWExclJ1ZTl6aitZeHFwZEk2djBycmVJYzNwanhmanRzZFVYbXNzOTdOcm5lMjFyWGZSc1k1SmRISE9PZ24rRHluU1BxbjB2cGxyY2w3em1aVEROZGxnRFdNSS9QcW9idS9TZjhKYSt4YmU0ZUkrOWJ1MW43amY4MGYzS3N6cVBTck9wTzZTeStoM1VXTjN1eEJCc0RmNVdtM2RydjlQZDZtejlJa2lXQ1VqWm5mMGNYTHhjSE5yRmViUlZsTWI5RnR6V3Yyeis0WGU2dit3cTdlazR0YmRtTms1dUl5WjJZK2JrTWJQOVIxdGpWcVpuMXArcitKMG0vcTR1Wmw0bVBiOW5kOW1hMTduWFNQMEZXLzAyUGR0ZDZtN2Y2ZnBMWWRXd0dOamY4MGYzSktHR1EyblhrOG9lbDBQYVdYNW1ma3NKQkxMczdJYzJScjlDdTJwSHhNVEJ3V09aaFVWWXpYL1Q5Sm9hWGY4QUdQOEE1eXovQUs0OWRIdForNDMvQURSL2NxUFV1czlKNlhrWU9ObXVGZDNVcmZReFdpdmRMcGEzYytCK2pyMzJWTTMvQVBDSktPR1IzbVQ1dENXK0lXUjFqNnM5TDZ0WWNoN25ZMldmcFpGVUhmR2c5ZWwvc3RkL3duNk8xZG9XTUJnc2JJL2tqKzVMYXo5eHYrYVA3a2xSd1NpYkU2K2o1azM2Z1AzKy9xVFBUL2swbmZIOXE3WXVoNlIwWHB2U0tuTnhBWFcyQ0xjaXdnMlBBMTI2UTJ1ci9ncTEwak0zcDFtZGIwNnUybDJkanNiYmZqQUF2WXgyalhQOXY4cG50K24ra3IvZlU4dkl4TUxFdXpjcmJYajR6RGJjL2FERFc4dzFvM09ja3Vsam5JVVo2ZVRqN20rSVMzTjhRdGZEeWNQT3hLYzNGMjJZK1N3V1ZQMkFFdGQ0dGNQYWpiV2Z1Ti96Ui9ja3MrN0g5NzhIQzNOOFFsdWI0aGJ1MW43amY4MGYzSmJXZnVOL3pSL2NrcjdzZjN2d2YvL1c5Q1NTU1FTdUpKZ2FrNlI0eXZJbmRDNkRkMTc2eGRZQXY2ZjBQb1R3S3ZzYncydzVJYzJtdHVMYmEyNXJHMlpOZHRuL0FBSHE0LzhBZzE2NjBrT0JHcEJCQzh0K3MyQmIweXZLNlZqOVp3SDlJNnYxUmo4aXR6bXV5c2V5eDI5NzcyTk96N1BqK2wrbTN2OEE4SC9ndlZzUlUzUHJXeS9wbjFmeE9qOU55T29ablV2ckw2UmRSbTNtKzVsSURiSFk3R3M5TmxMckxyV1UyZTM5S3lxNVovMWQ2MzlkT2xkR3ZxeEtNVDdIME85dUpiaXZZWDIzNUY5enEzMDQ5bFBxZXZrTnNmNy9BRXJhL3dCSDZYcCtvdWtHWjBYRnd1cGZXeG5WSDllNnQwckhPTU02eGdiVFhkWVBUcFpoVVZWVjBNYmJiYjczMVc1SDZQMVAwbjZWRStvdlI4VS9Wem91U3g3YmFXT3V6bmlOWDVyaTdGWmJadUR2NkJUNnRUUGQ3N3ZTdS93U1NuUSt1bjFodCtydjFmdHpxMjdNMjB0eDhadWp3eTU3WFBjOXhQdGY5bVl5eHpQWitrdDlOY0greE0vNnZkQ1plOXJyL3JWOWFISEh4MkV6WlZSWUEvS2Z1ZjhBOXE4bjFhNjdySC96UHIvem44OHZTUHJEMHFycS9STTNCZlF6SXNmUmFjVVdDZHQ0cmY4QVo3YS96bVdOZWZwTVdUWmI5Wkx1azlENnAwREQ2Zm5XTndhcCsxay9hR09zclkyOXVKa2VyUlV4anRucDIvcFBWOVJKVHgrYjBmNnpkRndPay9Wdks2Wmk1V0tlcVY1Rk4yUGNBY3EySEIyUGE2MTM2UGRVL3dCTDE3TWVyMDYyVkwwdnBlWjFiTXJzdDZwMDM5bFdoOE1xKzBNeWQ3U056ck4xRFcrbHRkN2RqMXhmV2VwZlhTL3FYUS90ZjFlcnF1b3pIVzR0VGNsaEYxamE5M3A3L1VmNld4amZWM3ZjdXE2Sm0vV1hMc3QvYlhTcWVsMHRhRFNXWGk2eHpwK2k2dXMyTjJiTjN2OEEwYVNtZlgvckgwcjZ1NGJjenFWamdMSGJLYWF3SFcyTy9QOEFTcmM2djJWTjkxdGozN1ArdVdWcm0vckpYKzBQOFlQMVVxRW1yMHhsc2E2V3dHdnN5OXptTytnL2JqczN0Umo5V3VvOWQrdU4zVnV2VStuMHJwanpWMHZFY1FSY0szVFhrT1lQcFk5cnYxbTNmL1BmbzZQNW10V2VwVW0zL0dWMFc0ay9vc0RKZjhUK3MxNi85dkpLZWh4TS9FemhlN0ZzOVg3TGZaaTVHaGJ0dXFqMXF2ZUcvUjNmVFdaOWEvckxiOVdzQ3ZxRGNCK2ZXYk5scGE3WXlvUitqZmM3WmIvTzJmbzJlM1ovd24wRVIySGxkTjZ0bGRSd3FIWmVMMUlNT2JpMUZyYldaRlFOZGVaanR2c294N0s4bWsrbm1NMzEyK3BYOW8vU0xPL3hrdnVaOVNjN1kyTjdxRzJ4cnRhYldPZDdoL3dqYTYwbFBEZlZQNjNZZlNYUDZoazNNczZyMWJxRFIxSzIydDd2VHdnZld5TGEzVk4vbnNpNngzdHI5VCtaL21sdGZYeTc2M3M2TGwyV1plSmwvVi9xYjZqaWtNOUxJYlhZNXVUaTBpc3NwZjhBUnI5Ky93QloreFZxTGVpWWYxaCtxUnhLMjNOcjZZWDVBd21OdHVma1BwdWoyVUF2KzEvYVBvdXUvbWJQMG42UDlJaC9YSHBtWDAwWU9ObC9XSE91b3V5YWJiNnNwcHlEaHRmdjlQSXlNaXU2eHRsclAwM28wMTdQdFhvWkZsU1NIdVBxdGkvV1hEd1c0WFc2OEtxbkVxcm93MlloZWJJckd4enNoem5QcTl6ZjdmcXJiV0YwUG9QVmNQSy9hR2I5WWNuckZkbGY2T3VBekdjMTQ5bDJ6MWNobG43OVZsWHByZFNTcEpKSkJULy8xL1FrbGxmYjh6OThmNXJmL0lwZmI4ejk4ZjVyZi9JcE1YM2lIYVg4dnE2b0pCa2NoY3I5WnZxVDA3TmJYbmRMNmRqSHFWZVhUZll4eDlPdStzUC9BRm1tK1hlaTFsbS8xYmYwZTkreGF2Mi9NL2ZIK2EzL0FNaWw5dnpQM3gvbXQvOEFJcEsrOFE3Uy9sOVZ1dWRDcXo4ZnAvVE1XdXVqcGRPYXkvTG9yYTFqRFJVTExXME5vYnNhNzE4ajAydi9BTTlUcXdjM3ArWGsyZE9aWGRoNTFoeUxNVzJ3MUduSWZIcjNVVytuZHZ4Y21QVnV4LzV5bS84QW1QNTFSKzM1bjc0L3pXLytSUyszNW43NC93QTF2L2tVbGZlSWRwZmgvRjFnZHJwYjJNZy9CVWVrZE8vWmVHY0ZqMnZ4NjdiWFlqUTBnMTAyT043TVo1YzUvcWVnK3l4bGIvOEFRK21xL3dCdnpQM3gvbXQvOGlsOXZ6UDN4L210L3dESXBLKzhRN1MvbC9oTXVzNFdaZm1kSHk4T3RscjhETjlTNXIzYkFLYkszNDkxb1A1N3FkelgrazMzMkxUMDdjZGxsZmI4ejk4ZjVyZi9BQ0tYMi9NL2ZIK2EzL3lLU3Z2RU8wdncvaTZxeUxlbGRScyt0bU4xWjlsSjZmallsdE5iQTB0dkZsdTBPcnMxYzIyci9EVjJ0MmJQNXIwLzhKWkw3Zm1mdmovTmIvNUZMN2ZtZnZqL0FEVy8rUlNWOTRoMmwvTDZ1cW8yVjFYVnZxdVkyMnF3RnRsZGpRNWptbjZUSHNmTFh0V1o5dnpQM3gvbXQvOEFJcGZiOHo5OGY1cmYvSXBLKzhRN1MvRCtLQS9WUHBsUFYrbjlTNmJUVDA5dUd6SnJ5SzhkbnB2dGJmWDZWVG0yMW4yMlk5bTUyOS85aFQ2ajBRdmYwbXZCcWFLY1hxVmVkbTNQc0p1ZDZiTFdlclkrM2ZibVdXYjJzZTU5dnFmemRlejB2NWtuMi9NL2ZIK2EzL3lLWDIvTS9mSCthMy95S1N2dkVPMHY1ZlZ0WW5TZW5ZVGc3RHArenRCY1cwMXZzRkRTL3dEbkhWWWZxZlpLdC84QXdkS3RySyszNW43NC93QTF2L2tVdnQrWisrUDgxdjhBNUZKWDNpSGFYNGZ4ZFZKWlgyL00vZkgrYTMveUtYMi9NL2ZIK2EzL0FNaWtyN3hEdEwrWDFmL1E2VkpKSkpvS1NTU1NVcEpKSkpTa2tra2xLU1NTU1VwSkpKSlNra2trbEtTU1NTVXBKSkpKU2tra2tsUC8yVGhDU1UwRUlRQUFBQUFBWFFBQUFBRUJBQUFBRHdCQkFHUUFid0JpQUdVQUlBQlFBR2dBYndCMEFHOEFjd0JvQUc4QWNBQUFBQmNBUVFCa0FHOEFZZ0JsQUNBQVVBQm9BRzhBZEFCdkFITUFhQUJ2QUhBQUlBQkRBRU1BSUFBeUFEQUFNUUE1QUFBQUFRQTRRa2xOQkFZQUFBQUFBQWNBQ0FBQUFBRUJBUC9iQUVNQUFRRUJBUUVCQVFFQkFRRUJBUUVCQWdFQkFRRUJBZ0VCQVFJQ0FnSUNBZ0lDQWdNREJBTURBd01EQWdJREJBTURCQVFFQkFRQ0F3VUZCQVFGQkFRRUJQL2JBRU1CQVFFQkFRRUJBZ0VCQWdRREFnTUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQkFRRUJBUUVCQVFFQlAvQUFCRUlBR1FBWkFNQkVRQUNFUUVERVFIL3hBQWZBQUFCQkFJREFRRUFBQUFBQUFBQUFBQUFCd2dKQ2dJR0FRTUZCQXYveEFBOEVBQUFCZ0lCQXdJQ0J3WURDUUFBQUFBQkFnTUVCUVlIQ0FBUkVoTUpJUlJCRlJZWElqRldsU05SWVlIUjB3b3ljVE5UWW9LUmtxSEI0Zi9FQUJ3QkFRQUNBZ01CQUFBQUFBQUFBQUFBQUFBQkF3SUVCUWNJQnYvRUFEMFJBQUVEQVFZREFnb0pCQU1BQUFBQUFBRUFBaEVEQkFVR0VpRXhCMEZSa3RJVEZCVWlZWEdCa2FId0ZoY3lRbEpVVldKeUk4SFI0VE9Dc2YvYUFBd0RBUUFDRVFNUkFEOEFtNDRYajlIQ0k0Ukg0Y0lzREc2ZDM3aWtGUTQ5dnNRb2U0bUVma0FmTVI5ZzRTVTJ1N2JsYW80NWZMeGQyMk53M0F5all3a2N4YXQzYVNVazNNSFhxVlJCcVpVNVRldy9kTUFEN2NpUXVjc21HTVIyNW9xV1N3MVhOUFBJUVBlWUMwSkQxR05HbktwVVU5cE1TbE9jZWhUT0pSNDFTL21jN1lDaC9NZUpIVmJqc0VZdWFKTjNWUGNEL3dDRk9PeC9sN0ZlV0doMzJNTWxVUElqVklua1dVcGRxWldOUnVVUHhNcWtpcVpSTUEvZWNvY2xjSGJidXZHN1haYndzNzZSL2UwdDl4SWcrd3BSQ21BUTYvTDk0QjdjTFRXWENJNFJIQ0k0UkhDSTRSSENKR005WjR4eHJoakd3NVl5bE5mUkZZZ1V3U1JidHlGWG1yRTlWQTN3a1hHTnhNQXJ1M0JpaVVoT29GS0JUbk9ZcVpEbUFZQzVLNkxudDErM2d5N2J2Wm1xTzU4bWdidWNlVFIvb2FrS29YdHA2akd3TzFrdEt4N21ma01jNGxWY0dMRDRwcU1vb3lqMUVBTit6Tk52RSt4V1NjQ0hRVGlxSU55bUVRVFJLQWRScExpZGw2VnczZ2k1c08wMjFHTUZXMDg2amhKbjlnT2pCMGp6dXBUQmt5QW1BbFRBcVFDUFh0U0tCQS8xOWc1aXZzVEozWFoxTi92RlArOGVGR1VMMXE3WWJEVDV4alphak96TldzVWFzQzdDZnJrb3ZCelRJNVI2Z1pOMGdZaWhSRCtCdWcvTU9OZVNycjBLTnBwR2hhR0I3RHUxd0JCOWhrS3d4NmZIcTJ6RmhzRURoSGJDWlpMdTVsWk9IcE9iM0pVNDQ2enM1aXB0byt6Z1FDcGRWakNWTktUS0JQMmhpbGNGKzk1d3NZK2RDdWxNWjhOcWRDZys5c09OTU5rdm9qWFRtNm56MDNMTmRQczlGWWdBUkFSSVlCS1lvaUJpaUhRU2lBOUJBZVdMcFliYUxMaFNqaEVjSWpoRWNJc1RkZTBlZ0NJL0lBRHFJL3k0UXFvUDZ2V3k4am1qWnFXeGJFeUp6NDYxL1hWcDBheVFXNnNwT3dHS1FaK1NNQWV4amtVN1dDWmg5eXBzVDlPbmtOMXFlNlRDOUo4TmJoWmRkd050OVZ2OWUwdzhubUdmY2I3dk9QcFBvVVZBQjBEb0hNRjJLdWVFWEhVUDQvOEFRZUVYUENMclVJQmlpQWdCZ01IYVlwdjhvZ1BzSWY4QWtlRTlLdUxlbERzMUs3RTZ3czQyM3lLc3BrUEMwc1RHMWtrbmEzbWZ6akVyWWk4RElMbUg3eGxEdGU1c29jZmM2a2Vjd2lJbUhsekRJWG1QaUxjRk81TVFHcFpteFFyandqUU5nNlllMGVqTnFCeURvMlVuM01sOEdqaEVjSWpoRWNJc1JWRkZSTlVwQlVNa2NGZ1RLWHVNb0pCN2dLQWZNUjZkT244ZVRHa3JFaWRGK2VqY1pkOVlidGRKK1VNcWVUbmJoTFRVaVpjUkZZVjNVaTVYVzcrdnYxN2xEQVBYMzZoeldPcGxlMUxOU1pRc3RLalQreTFqUVBVR2dCYS93cmxpYjM2RkQ4VENBQUg4K0VUNjgvYWIzRERHbDJqdXo4dEFLTVl2Wmo2OEdkdmhSVUlzVUdjdWl0VnZpUkV3bEtMdUtUZXVrTzBwQU1pa0kvZUhxUE1BNEY1YU9TMktsQjFPejA2aCs5UCt2Z21LZ0lEK0grbk0xcnJuaEZPejZEVXZJbzVnMkZnRXhXR0hmNHNpSnAyVU80VzVIVFNiRkJ1YzN5QXdwdkhKUStZZ0J2M0R5eGs2cnFIakJTcG02N0RXUDJoVWNCNml5VDhRRlozNVl1aFVjSWpoRWNJamhFQWZ4SEl0MDZpaW9WVUE2ZGV2YVlEZit1RkJFaUZRMTNCb3llTE5xdGlhTUpTdEdkZnpCT0F3QlVRUlRLMWV2VHlMUG9JajA2Q2k4UzZjb2NJY1Y2OXcxYlBLR0hyRGJDWkxxVEo5WUdVL0VGTjlqVUhFMUlOSW1FUVdtcForcUNER0poa1RURXE5VU1QUXBFV3lJR1ZPWVJFQUFwQ2lJOWZ3NUM1d2FrQWJxd1Y2YlBvSTdBYkgyK3I1SjJ2cU5od1ByZ3dlb1RFalc3UWdhQnk1bDV1UXhWUWpZK0tOMGNSak55QUFSZVJlbFNVQkk1d2JJblVNQ3FkVDZyVzZOM1hJMlc3cTFad2RVRU4rUHVWeXJhZlMvQ2UyT3NWZzFYdk1BMmdNZk80Rm5HMFplck1FR3o3RTd5SVJCS0Frb0ZNd2VOSThjQkNKa1NIN2lyY3l5QitwRlREeldhOHRkbUM1MnRacWRhbDRFN0Q1K2Y4QUMvUHgzVTlKbmM3U0NkbTFicmpTWXlMaWRrNE1NUG5YRmNNNnMrUDVKc0poOFNrZ21rVTdxSVhFb2ZmYlNCQ0ZJYnFCRmxpOURqdHNxTmZxRjgxWHNkZXpuem02ZFZHYVYwMk1ic0s2YW5VQTNaNHlPVXpLZFEvRXZiM2RldjhBRDhlWnJXVmt2MEZxUUxlbmJIWkxXUkFCbHJWQlkvWUxpWDNNbkhzM1VvNktVZjNkOGkxNi93QVNoeXltTkNWMFp4Z3RlYTAyR3dmaGE5NS83RU5Id2FWWU41WXVta2NJamhFY0lqaEY4RWxJc1l0ZytrcE40MGpvMk9hS1A1R1FrSEpHVENQUVJJWlJaZGRZNGdSTk5NaFRHTWM0Z1VvRkVSRU9GTEd2cXZGT21DWEV3QU5TU2RnQU55ZVE1cG9laE9sT3MrNFc3R2IvQUZFbWR6cVdaOFlWWjJ6eEpXYUo5Vldsbm9GcnMvMVVic3JKSVN4WkpxWk55aXpRY3hnc3hiRTdUT0ZEcStZU3BGSWJTdEQ0ZGtidXZYZkMrNkx3c21HNk5DK0tScHZwdWVBMTBUbEp6TmtBbU55SU91bW9VcXU1OVltOVlkUnMwNWcwbXhUanFsNXF4UldWc2lWV0RvR0U0RllMY1Z0MnBTYkZ5d2F0VTNDeWZ3aXF6enRhbkl1S3NVMzZDb1FEb3FhNE9ZZ1BPaTdHdE5NMGFScVdkdm5lcjUrZmNvemZRSDN3M1ozSlYyS2p0bkpSM2t1ajBOdER2NmZseVFwaktwdlc4eStjdWszdGRNdXpib04zZ2ZESmtlZ1hzRlZyMmRwajlxeVpRenFzWTJJV3JkdHB0RllsdFRVQldRbGhVQXB4VFM4NmdKaUthQUtBaUs1Z0FSS24zajdGN2g2RjdoOWc3dW8vaHlsY3U0d0ZUMTBIOVQzMVJkbnZVb1BybGthU2MwK2lUTnVsMjJWS0JFWWRqbzEvcjFDd0N5NzVZaUR4ZEQ0aEF5Z3NtOE9xNWt6dWZPV1hPb2ttSzNnTVRZZXltMW1aY0ZRdFZzcldud1R0cDFFRFNOZm1WWlUyTTBnMW8yY3hsa1RIVi94VFJZbzJSNnE2cXp2SUZQb0ZkaXNuMWdqazRMZkZROHlvd1VWUWNKcUIzbFVIdTY5eHdOMTdqRHlwdFJ3MUJYSjFiSFFxdHl1SCtkby92NnA5UVVDK2xHS01aNmN2ODFhTUk1YnExMnpKaWZORmdzTmxpMGkvUWRvbEllUlRqWE5mbERSeC9ZUVVpalJwMXdhbldUYnFxbklZd2RBNjhoU2NITUJDOG5jV2J1dk9saVIxc3JVWEN6QnJHTWZ1MG1DU05KZ3k0NkdKNVNGSUdBOVFBZjhBNXkxZFZybmhFY0lqaEVjSW9NUFhMeTdiYWZoZkUrSzY4K2R4a0psMjJTYTkzVmFuTWlNd3hnbTdKVkNNVU9BKzZLcmg4bXVxbCtDbndhUUdBUzlRSENvZEYyendrdTJ6V205TFRlTllBdm90YUdUeUx5UVhlc0FRRHlrcU1iMDNQVmx6djZiaTEzZzZWVjZsbFRGZVJaQkdmc21OTHErZHdxTFdYYnR5dEU1ZUxrMm9HV2JMblFJa2dzbWROVkZaTkJMcVFwMHlxYzEzc0Q5OTE2SnN0cnFXWUVNMkt1YytuVjZpRlU5VFRGQ2RvcWw0UGhMTnREVFZaWmd3ZEJyczdBNWhoTTRQOERPeHF6eElITG1MY3BlTXBISlNoNFZpS29yQVE0RUZUZ2IwdTIzMm1xMTlrdHI2TFFDSWExaGs4aWN3TzJ5Ky93QU9ZaHVpejJkOUs4YnJwMm1vU0NDOTlScGFJaUJrY0FRZDlST3NiQlNOWkJ1MGJoTEdVeGQ1bGhKVE1GUzJyV1F0SzBHd2JvUEVHU2p4bzNscHRWc21VcWZqWm9yTHlUc0VpOS9nWkxpVXBqQUFEdlVhYjJVMjAzdUxuQUFGeGlYSHFRTkpKNmFManJYV29tcSt2U3BoakM0a05CSkRRVG9BVEpobzBrbVR6MVh5V25OVkdyMHBpMkJqcFdPdWs1bUMxTjRDa1JOT21tTTA2azJCa0Zuc2pZeTlpb2dhSWptaUJuTGg2UVJUNktJSmtNWlZkRWg3U0RxRHlXdWJRd1pjc25OdDErSzl1MDFQNlRYVW0yMXhuS0taTmdaU2JmUUo0K05MSUpvQjNndkl1bGtUR01WdVFwdWgxVGdSSWdHSDdvQUk4NG04THR0RnZlMTFHMTFhSUFJaW1Xd1o1bk0wNmhmUlhUZlZpdWlsVUZxdTZoYWN4Qm1xSGt0Z1JBeVBib2Q5aVoyVlhmYjMvRW5vNGZ5NWRNVDZyWXhvT3dGSXBjTWpXR09kTDNhNVJpenRGaFFCWk9SZnNtTEpJaWI2TVRQNFUwMVFPaDhVZEJkUWgvQ29pWWVYczFsZFNvTXAxSGx4QUFKTzUwM01RSk81MGowTDQ2OGI2OE5hNmxXelVtMDJ1Y1NHdG5LMlRNTm1UQTJFaytzN3FxaEw3UDVybWRqWDIyMDlkWkNWem5JWkJIS1V2YmdJUmdwSXlBcUZNcWlDQ1FBbW0wT2dtREw0VWdlTXJib2wwRW9jM1crYnN2bGJ3c2RudmF5MWJGYm1oMU9xMHRkN2VucEdoQjVFQ0ZmR2c1RVppSGlKajRZV1lURU8wbVBnemU1bWZ4YlpKejRSSC9nOG9rLzVlYkM4WlZLZmdxcjZVemxKRTlZTVQ3WVhyY0xGSENJNFJIQ0pqdSsrbnJEY3JDWTBadktNcTVmcXBNZlc3R3Rsa1VqcXhqSi80VE4zRE44QkFGUUdyeEUzaVVNbUJqSm5UUlVBcHZHSkRRNFNJWDFXRDhUUHd2ZTNqYm1sMUY0eTFHamN0bVFSeXpOT29uY1NPYXE5UzNwbDcyeEZtTlZSMXl1TW91TGtVVVoyQ2VSa3JUbkJlN3RCWWtzRGtyY3FZK3c5eW9rTUFEN2xBZmJsUlk3WmQvMDhlWVJxVVBHUEhtQWRIQndlUFJseXpQcWxUNytuZjZiN2pWNnB5VjJ5RllIY2ZzVFpIRFo3RlczR2RpVWlwckN5RFlxZ3BOWVdaSVg5bzRXTXNvTDRURVVadVNBUnVkRndpVTNrekRCRU8xWFZtSXVKdDRWcjJwV2pEajNVNk5HWXpEL2tKM3p0L0RBaHJUcU5Ub1RwTmZWZHNkb3FTaWpHMjJvWXV6L0d0d0tpblpveWVWd1BrbHltQTlCTzlZQzBld2JoWHRFZXAycG85TTRoL3NFZ0VRRFhkWlI5d3I3bTZPT1ZrZFNGTys3STVyL3hVNGMzMTVTUTRlcVN2RXAydzdmSHoyZGxzUStucGpuRjFuc1lBbk5UNldVS1RUR3N3VVZCVkg0MXhDUkRsNnFtQ25hcDRTcGRwakNKdWhUQUJoZzJkNTB6TGwzOFo4STBHNTZGS3E1M1FVOHMrMHZXbFpDc1dXODlOeGpzNjJhdk9hTW9xUlp4aERHMGE2aGNXU3drTjNwa3NMdDBvZVNuaUZFQ2o4TTZNMmp6R0tVeG1CeEtVUzNVNkxXR2R5dXNjVThYTDh2eWs2eDNZM3hhZ2RDUVpxRWZ5RUJ2cHlpZXBoVlFkdWZTTTJCeDVrS3lUbXZkS2ZaZHhKTlNpOHJYWSt1UEc2OTNweUs2Z3EvUmo2UFZVSW91VnVKaFRTZE52SUNpUlNkNVV6Z1lCbHpUT2krencxeEt1YTNXSmxLK3FvbzJsb0FjWEFoajQwek5JQkFuY3RNUVppUXZSMDI5STNPdDd5TFc3VHNmVEhtS2NUMXlXUW1aaXZXTnlnUzczMEd5aFZpUmpkZ2tjNW16ZFl4Q2xYY3VSSUlKQ2NxWkRtTUFsTllaa3F2RS9FbTZMSFlhbG51T3FLMXBlQ0E1b09Sa2lNeEppU09RRTZ3U1FGYTdJVUMvNVNFVEtBZENwcGw3RTB3RDJBcFMvSUFBQUFBK1FBSExlUzg3aFo4S1VjSXBLL3N2eDUrU0t4K2xKLzA1Uko2cjF0OUVjTGZwOUhzQmE3YnFoajJwMWV5MmNtS2kybzlicnoyd0ZyRk1xaWMvY0xJTEpzcTVDUGlXUGNUNGw2NDhYaGJ0Kzh2a1ZVVEwzQjNkZUpQVlFjSllXQW55ZlM3QVVTMnBIcTUrblB0N2srNll5ck5Rc3VMWDBET3hOV3FEck1tSkpTc3VjZ3lUaGc1ZDJGc1J1M2FPVVlzSzhzMkZvK1ZsSFNSTy92VUtJSWs4aHNpSEFUS29iaGpDam5SNVBwZGdKeDJpdTRtbzIvZEtzVjh4WFU2VkFScmZKMW1wVkJnck5ZNjZ2ZnNud2xiY0l0QnVUS3ZJT0JrR3NhOFdPdVZJanRFRkNnMU1ZdzlwaWp5RG1HNVZsUEN1RkttMTMwdXdGNSt3KzlXakd0T3lPTnRXTDVBaEtaUnU5TWxzcVhJS2pVVzB4WGNCVXlHakhzcTh0OTZlR1dKOUh4d29zSEJpQW1WWmM1UUtmeGRxaUlxaG1Ja0tINFd3cTEyWHlmUm4rQVd2YWw3djRCM095UmlHbzRpMXluNCtxWlUxS205dVZiYmQ0eU9qWk9wd3JUSUttUDY2MGR4alE3a3ZrbkZXRXZJb21NNElaRnF6UzcweE9vY3FVa09Ba2xZc3d2aFY3Z0JkMUxYOWdVbFpzWlk4QUJFS1BXUkg1RkNLU0VSNWptUFZYZlJIQzM2ZlM3QVRRZFhzNjROMnB1bTI5VHB1SDJzTXkxTTJVZmF5ekZtbEc3UjFHMzJXaW8xbTlrM2NlbVFvSFJUYnJPak5oU1ZFNWhBcWFuY0hrN0NTUzRjMVczQ21GbnVNWGZSZ2ZzQ1VQYVRJV3Rtb0d2bVZObU16MW1EaThaWWlyUnJEWUZvK0JRZFMwb3FkVk50SHhVY2tvWk5OVjgvZEx0bWpaSTV5Rk1xNEtKamtJQmpsQXVKZ0ZaUHduaFZqY3h1K2oyQWthemh0ZnFEci9yTlpOaThnUXRBZ1pPQzErY1ovYTREc05rcmRiemhNb3QyQ0xoU0JTaVZIUmpmU0tUeHdsRnVBU0txUnU3QlFweEh4bURnWmlZbFlPd3RoVnJjeHUralA4QW5SWXNaWW55cmpxajVFaUtMVW1yYTVWS01zeXNRUThkT09xMnUvWU5ucTBVN2N0VG5RRjB6TTRGdXVVaHVnS0ltOWc5dVJKNnF4bUU4TE9hRDVQcGRnSlFmc3Z4NStTS3grbEovMDRrOVZsOUVjTGZwOUhzQkgyWDQ4L0pGWS9Tay82Y1NlcWZSSEMzNmZSN0FXKzhoZlJMWHJXU1JVcmRqVGhwTnJDVENsYmtFNGVjZkg4YktFZUdaT0N0SHF4dmttM1dGSlk0L0lxUmg0NXFIYktsTnBZZkl0MFV2WHBkTTloOWZOYVRTdW9OVzArbDV1TDNPamM3dU1seTl5c3RudjJYOGkwS3RWMHJock95dGxqUU0wUEl5cnRvYUFiTlUwSFNoaFZUUUd3NmFsYURKUG1USExmM3A2dm9tK241cUZjd2hkNXNLNDJwTmZvY1B0bms2N1lKZHNGRkpUSWRaaWE0M1V4ZFJZQi9NTG5PL0VobzRiQmJaSkU2aFVIeit5eEJ4U0VqVXBTdzRuWXEyZ3hwT2NEbVZ1dWJkRG9RbVZmVmFaeldLODliVldYWTdOMkZjelhxT3dzOXE4QnNEYzhSU1JKR1RrOGJNWkNZZk5rQzExdE5VbE9PV1NqMUVueTdWbzBLSlRpa0JpQVRvc1N5WE9uV2VuUk5vd2JWTldhNTZrdVdyN1JmUTQzcG94b2ZET0xKU21ZbnBHR1k3SGltTHJPcFpMczZmVzZZamtMbzJpVUdFZ215aTAyaDFqck4xRDExMkl0MGpKaWRZWmlDVkF5K0VKeW41OXFteTJhaXQwTmdOMmRkY0c0aWxNazY4NmtZZUNKMlMyajJBcnJrdGVsTTRQaVNDb3dHSjY4OUFUR1VSVUZrbzRuQUlVVXdidWlFVVA5MUZOeGlJaVZlNFBkVURSb055ZjdKc21oRkd5OVVhM3NUbHpGanFTZE5rZlcwMkZ1V2NNWHdhU1NyckwxTWR5aDZnNlJicHFBQW5rb1JWdEhUVEJCTlF2bkNMWGJnWXgxaUU1a1kwQjZMQmpYQ1hEcVVpUHJ4NE54cnNsa2YwbjZ4a0xLZHcxeHEyVHRtWldwWFBNOHhiQXg5V2FIQVIwQ1Mya1JsWXlWT1NJVGxWWHJCdVppcEtwK1JKUkF5WWxNQW1UTExPYXh0SmtBaFFWMm11M2l6ZWpoaGkvWkhwR3R1eUZlei9rdU5zQnMvYlJURXZXTmpjSlhhNTVVR1h5Q2xVWFkxZ0d4NnM3U0JGV1lteVBseU5sN0U5TUt4MUN0bWZKSDJsVVJMQVQ4LzZWMW5SREhkMnhkaEFLamFkYjlTOVY0Uk96T3B6SG1LZE9MbTh2V01FNGlRU1FjL1NUbVJXaldLU3o1MHNaVXhsbWlhcUtxUkVEK1VSSHRMVWQ1VzVTQkRkWVQyZUZhamhFa24yNDR2OEF6WWwrbHZQN1hNc2psOFY5WW1EdnpnN0ZUdUxxV3pWaXB3bW9pdFoyeXlTeVprVlVWb2wycWlzUXdDVXhEa0ZFUU1Vd0dFQktJQ0FnSWdQc1BHUjNSUWVJZUR2em83RlR1cGlVSHE5cFhSN0p0Zlk4VE80RENodHQ4UE1zU1d5T3hEaXVGb1NGRU0zaUo2RWVXQ3VMTkl0TlpzL2tHODJRem9nbUZ1b3ZGdGxoU0ZVVG5HY3J0b1ZYMCt3WkpJdG9FL3NxZDFMVmllcjYyWUlldDA4TjJ4M2orb0tWcUJyazdqaUlpVEwwbXdHck1DMXJNTkppaXEwTXEwZmxqWStOYU9YTE5SUDQwa1d6ODVUSFM4aGhhNDhsazNpQmcxbjJiYUkvaFU3aVV4VzE0S1V5UzN5dVd6T2tMZ2xqOVhHVHBac0Q5R0xtSWcwbVNZYnBQbWZoN0YxR2p2NGxScXNZUU1pRWs5S0hVRnpBRVpYTEk4UXNHazV2SEJQOEtuZFdudzVzS3dtd04rMkVaNUpsUHBuSStJYXhpT3cxRlNFN3F3S2RUbHJGSnhjc2tyOEw4V0RydHN6OW9kUHkrQVV5cG04ZmtEdUJsZHRDZldGZzdObThkSFlxZDFMWDl0K0xnRXB2clNnZnRNQWlVOFc4RXB1ZzllZy9zdndINThaSEtUeEV3ZCtkSFlxZDFJUHIxRzRHMXhxRnRwOVd5WmJyV2hkY3lYSE9FL08zOVJlY3NyMll1czByTnlaVkhLYlJJcDBrbEZRU1JFeE8vd0FhUmU4eHppWTRzcmp5VU00ZzROWUlGdEhZcWQxS2hhN3hyeGZZb2tEZldsSHY5ZkkrUmt2cTdmS0NuYzY4ZGR1YnVRV014ZXRGVVJPUVJIdFAyOXhlNGVnaDFIZ05jTlFqdUlPRFhiMndkaXAzVTExcGdqVDZBd3ppN0JkSW5YdE1wZUtMWFNwMkVjTkkwMDVZNVNOb3R1UXVjUlducjUwME9jWXdYcmRJaGtrZkdZcVNTWUZIcVh1R2NycGxZSEgrRE11VVcwZGlwM0U2T3Izclh5a05ITWZTL3F4VVk5NDZGNjZqNnpWVllPUFZWRU8zdjhDS0JVeSszc0JTRkFwUTlnQU9Sa2NkMVlPSVdEQnRiQjJLbmRXMGZiamkvd0ROaVg2VzgvdGNaSEtmckV3ZCtjSFlxZHhIMjQ0di9OaVg2VzgvdGNaSEo5WW1EdnpnN0ZUdUtQTGx5OHVJNFJIQ0k0UkhDSTRSSENJNFJIQ0k0UkhDSTRSSENJNFJIQ0k0UkhDSTRSSENJNFJIQ0k0UkhDSTRSSENJNFJmLzJRPT0KLy8gQGF1dGhvciAgICAgICDova/ku7blsI/lprkKLy8gQG1hdGNoICAgICAgICAqOi8vcGFuLmJhaWR1LmNvbS8qCi8vIEBtYXRjaCAgICAgICAgKjovL3l1bi5iYWlkdS5jb20vKgovLyBAcmVxdWlyZSAgICAgIGh0dHBzOi8vbGliLmJhb21pdHUuY29tL2pxdWVyeS8zLjYuMC9qcXVlcnkuanMKLy8gQHJlcXVpcmUgICAgICBodHRwczovL2xpYi5iYW9taXR1LmNvbS9zd2VldGFsZXJ0LzIuMS4yL3N3ZWV0YWxlcnQubWluLmpzCi8vIEByZXF1aXJlICAgICAgaHR0cHM6Ly9saWIuYmFvbWl0dS5jb20vY2xpcGJvYXJkLmpzLzIuMC42L2NsaXBib2FyZC5taW4uanMKLy8gQHJ1bi1hdCAgICAgICBkb2N1bWVudC1pZGxlCi8vIEBncmFudCAgICAgICAgdW5zYWZlV2luZG93Ci8vIEBncmFudCAgICAgICAgR01fYWRkU3R5bGUKLy8gQGdyYW50ICAgICAgICBHTV9nZXRWYWx1ZQovLyBAZ3JhbnQgICAgICAgIEdNX3NldFZhbHVlCi8vIEBncmFudCAgICAgICAgR01fZGVsZXRlVmFsdWUKLy8gQGdyYW50ICAgICAgICBHTV9saXN0VmFsdWVzCi8vIEBncmFudCAgICAgICAgR01fb3BlbkluVGFiCi8vIEBncmFudCAgICAgICAgR01fbm90aWZpY2F0aW9uCi8vIEBncmFudCAgICAgICAgR01feG1saHR0cFJlcXVlc3QKLy8gQGNvbm5lY3QgICAgICBsb2NhbGhvc3QKLy8gQGNvbm5lY3QgICAgICAxMjcuMC4wLjEKLy8gQGNvbm5lY3QgICAgICB5eXh4cy5jbgovLyBAY29ubmVjdCAgICAgIHNvZnR4bS5jbgovLyBAY29ubmVjdCAgICAgIHNvZnR4bS52aXAKLy8gQGNvbm5lY3QgICAgICBzb2Z0eG0wMDEuY2x1YgovLyBAY29ubmVjdCAgICAgIHNvZnR4bTAwMi5jbHViCi8vIEBjb25uZWN0ICAgICAgc29mdHhtMDAzLmNsdWIKLy8gQGNvbm5lY3QgICAgICBzb2Z0eG0wMDQuY2x1YgovLyBAY29ubmVjdCAgICAgIHNvZnR4bTAwNS5jbHViCi8vIEBjb25uZWN0ICAgICAgc29mdHhtMDA2LmNsdWIKLy8gQGNvbm5lY3QgICAgICBzb2Z0eG0wMDcuY2x1YgovLyBAY29ubmVjdCAgICAgIHNvZnR4bTAwOC5jbHViCi8vIEBjb25uZWN0ICAgICAgc29mdHhtMDA5LmNsdWIKLy8gQGNvbm5lY3QgICAgICBiYWlkdS5jb20KLy8gPT0vVXNlclNjcmlwdD09CgooZnVuY3Rpb24gKCkgewogICAgJ3VzZSBzdHJpY3QnOwoKICAgIGxldCBnbG9iYWxEYXRhID0gewogICAgICAgIHNjcmlwdFZlcnNpb246ICcxLjUuNicsCiAgICAgICAgZG9tYWluOiAnaHR0cDovL3NvZnR4bS52aXAnLAogICAgICAgIGRvbWFpbkI6ICdodHRwOi8vYmQueXl4eHMuY24nLAogICAgICAgIHBhcmFtOiAnJywKICAgICAgICBkb3dubG9hZGluZzogMCwKICAgICAgICBzZW5kaW5nOiAwLAogICAgICAgIHN0b3JhZ2VOYW1lUHJlZml4OiAnc29mdHhtX3N0b3JhZ2VOYW1lJywgLy8g5pys5Zyw5YKo5a2Y5ZCN56ew5YmN57yACiAgICAgICAgcGFyYW1Eb21haW46IGBodHRwczovL3NvZnR4bS5sYW56b3VpLmNvbWAsIC8vIOaVmeeoi+i3s+i9rOWcsOWdgAogICAgICAgIHBhcmFtRG9tYWluMjogYGh0dHBzOi8vcGljLnJtYi5iZHN0YXRpYy5jb21gLCAvLyDmlZnnqIvot7PovazlnLDlnYAKICAgIH0KCiAgICBsZXQgZ2V0QXBwU2V0dGluZ0RhdGEgPSBmdW5jdGlvbiAoKSB7CiAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgc2NyaXB0VmVyc2lvbjogZ2xvYmFsRGF0YS5zY3JpcHRWZXJzaW9uLAogICAgICAgICAgICBwYXJhbTogZ2xvYmFsRGF0YS5wYXJhbSwKICAgICAgICAgICAgc3RvcmFnZU5hbWVQcmVmaXg6IGdsb2JhbERhdGEuc3RvcmFnZU5hbWVQcmVmaXgsCiAgICAgICAgICAgIGdldERvd25sb2FkVXJsOiBgL2JkL2dldERvd25sb2FkVXJsMi5waHBgLAogICAgICAgICAgICAvLyBwYXJhbVVybDogYCR7Z2xvYmFsRGF0YS5wYXJhbURvbWFpbn0vcGFyYW1zLmRhdGEubG9jYWxob3N0YCwgLy8g5pWZ56iL6Lez6L2s5Zyw5Z2ACiAgICAgICAgICAgIC8vIHBhcmFtVXJsOiBgJHtnbG9iYWxEYXRhLnBhcmFtRG9tYWlufS9iMDFucWM3eWpgLCAvLyDmlZnnqIvot7PovazlnLDlnYAKICAgICAgICAgICAgYXJpYTJEb3dubG9hZFVybDogYCR7Z2xvYmFsRGF0YS5wYXJhbURvbWFpbn0vYjAxbnFjN3lqYCwgLy8gQXJpYTLova/ku7bkuIvovb3lnLDlnYAKICAgICAgICAgICAgYXJpYTJDb3Vyc2VVcmw6IGBodHRwczovL3d3dy5jbmJsb2dzLmNvbS9zb2Z0eG1tL3AvMTM5NzI2NzguaHRtbCNhcmlhMmAsIC8vIEFyaWEy5pWZ56iL5Zyw5Z2ACiAgICAgICAgICAgIGlkbURvd25sb2FkVXJsOiBgaHR0cHM6Ly93d3cuY25ibG9ncy5jb20vc29mdHhtbS9wLzEzOTcyNjc4Lmh0bWwjaWRtYCwgLy8gaWRt5pWZ56iL5Zyw5Z2ACiAgICAgICAgfQogICAgfQoKICAgIGxldCB0bXBEYXRhID0gewogICAgICAgIHJlc3BvbnNlOiAnJywKICAgICAgICBwd2Q6ICcnLAogICAgICAgIGZzX2lkOiAnJywKICAgICAgICB0b2tlbjogJycsCiAgICB9CgogICAgbGV0IGNvbmZpZ0RlZmF1bHQgPSB7CiAgICAgICAgc2F2ZVBhdGg6ICdEOlxcX19lYXN5SGVscGVyX18nLAogICAgICAgIGpzb25ScGM6ICdodHRwOi8vbG9jYWxob3N0OjY4MDAvanNvbnJwYycsCiAgICAgICAgdG9rZW46ICcnLAogICAgICAgIG1pbmU6ICcnLAogICAgICAgIGNvZGU6ICcnLAogICAgfTsKICAgIGxldCBnZXRDb25maWcgPSBmdW5jdGlvbiAoKSB7CiAgICAgICAgLy8g5LiK5qyh5L2/55SoID4g5bqU55So6YWN572uID4g5Luj56CB6buY6K6kCiAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgc2F2ZVBhdGg6IGdldFN0b3JhZ2UuZ2V0TGFzdFVzZSgnc2F2ZVBhdGgnKSB8fCBnZXRTdG9yYWdlLmdldEFwcENvbmZpZygnc2F2ZVBhdGgnKSB8fCBjb25maWdEZWZhdWx0LnNhdmVQYXRoLAogICAgICAgICAgICBqc29uUnBjOiBnZXRTdG9yYWdlLmdldExhc3RVc2UoJ2pzb25ScGMnKSB8fCBnZXRTdG9yYWdlLmdldEFwcENvbmZpZygnanNvblJwYycpIHx8IGNvbmZpZ0RlZmF1bHQuanNvblJwYywKICAgICAgICAgICAgdG9rZW46IGdldFN0b3JhZ2UuZ2V0TGFzdFVzZSgndG9rZW4nKSB8fCBnZXRTdG9yYWdlLmdldEFwcENvbmZpZygndG9rZW4nKSB8fCBjb25maWdEZWZhdWx0LnRva2VuLAogICAgICAgICAgICBtaW5lOiBnZXRTdG9yYWdlLmdldExhc3RVc2UoJ21pbmUnKSB8fCBnZXRTdG9yYWdlLmdldEFwcENvbmZpZygnbWluZScpIHx8IGNvbmZpZ0RlZmF1bHQubWluZSwKICAgICAgICAgICAgY29kZTogZ2V0U3RvcmFnZS5nZXRMYXN0VXNlKCdjb2RlJykgfHwgY29uZmlnRGVmYXVsdC5jb2RlLAogICAgICAgIH0KICAgIH0KICAgIGxldCBnZXRTdG9yYWdlID0gewogICAgICAgIGdldEFwcENvbmZpZzogKGtleSkgPT4gewogICAgICAgICAgICByZXR1cm4gR01fZ2V0VmFsdWUoZ2V0QXBwU2V0dGluZ0RhdGEoKS5zdG9yYWdlTmFtZVByZWZpeCArICdfYXBwXycgKyBrZXkpIHx8ICcnOwogICAgICAgIH0sCiAgICAgICAgc2V0QXBwQ29uZmlnOiAoa2V5LCB2YWx1ZSkgPT4gewogICAgICAgICAgICBHTV9zZXRWYWx1ZShnZXRBcHBTZXR0aW5nRGF0YSgpLnN0b3JhZ2VOYW1lUHJlZml4ICsgJ19hcHBfJyArIGtleSwgdmFsdWUgfHwgJycpOwogICAgICAgIH0sCiAgICAgICAgZ2V0TGFzdFVzZTogKGtleSkgPT4gewogICAgICAgICAgICByZXR1cm4gR01fZ2V0VmFsdWUoZ2V0QXBwU2V0dGluZ0RhdGEoKS5zdG9yYWdlTmFtZVByZWZpeCArICdfbGFzdF8nICsga2V5KSB8fCAnJzsKICAgICAgICB9LAogICAgICAgIHNldExhc3RVc2U6IChrZXksIHZhbHVlKSA9PiB7CiAgICAgICAgICAgIEdNX3NldFZhbHVlKGdldEFwcFNldHRpbmdEYXRhKCkuc3RvcmFnZU5hbWVQcmVmaXggKyAnX2xhc3RfJyArIGtleSwgdmFsdWUgfHwgJycpOwogICAgICAgIH0sCiAgICAgICAgZ2V0Q29tbW9uVmFsdWU6IChrZXkpID0+IHsKICAgICAgICAgICAgcmV0dXJuIEdNX2dldFZhbHVlKGdldEFwcFNldHRpbmdEYXRhKCkuc3RvcmFnZU5hbWVQcmVmaXggKyAnX2NvbW1vbl8nICsga2V5KSB8fCAnJzsKICAgICAgICB9LAogICAgICAgIHNldENvbW1vblZhbHVlOiAoa2V5LCB2YWx1ZSkgPT4gewogICAgICAgICAgICBHTV9zZXRWYWx1ZShnZXRBcHBTZXR0aW5nRGF0YSgpLnN0b3JhZ2VOYW1lUHJlZml4ICsgJ19jb21tb25fJyArIGtleSwgdmFsdWUgfHwgJycpOwogICAgICAgIH0KICAgIH0KCiAgICBsZXQgdUluZm8gPSB7fTsKCiAgICBsZXQgaXNPbGRIb21lUGFnZSA9IGZ1bmN0aW9uICgpIHsKICAgICAgICBsZXQgdXJsID0gbG9jYXRpb24uaHJlZjsKICAgICAgICBpZiAodXJsLmluZGV4T2YoIi5iYWlkdS5jb20vZGlzay9ob21lIikgPiAwKSB7CiAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CiAgICB9OwoKICAgIGxldCBpc05ld0hvbWVQYWdlID0gZnVuY3Rpb24gKCkgewogICAgICAgIGxldCB1cmwgPSBsb2NhdGlvbi5ocmVmOwogICAgICAgIGlmICh1cmwuaW5kZXhPZigiLmJhaWR1LmNvbS9kaXNrL21haW4iKSA+IDApIHsKICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KICAgIH07CgogICAgbGV0IGlzU2hhcmVQYWdlID0gZnVuY3Rpb24gKCkgewogICAgICAgIGxldCBwYXRoID0gbG9jYXRpb24ucGF0aG5hbWUucmVwbGFjZSgnL2Rpc2svJywgJycpOwogICAgICAgIGlmICgvXlwvKHN8c2hhcmUpXC8vLnRlc3QocGF0aCkpIHsKICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KICAgIH0KCiAgICBsZXQgZ2V0U2VsZWN0ZWRGaWxlTGlzdCA9IGZ1bmN0aW9uICgpIHsKICAgICAgICBsZXQgcGFnZVR5cGUgPSBnZXRQYWdlVHlwZSgpOwogICAgICAgIGlmIChwYWdlVHlwZSA9PT0gJ29sZCcpIHsKICAgICAgICAgICAgcmV0dXJuIHJlcXVpcmUoJ3N5c3RlbS1jb3JlOmNvbnRleHQvY29udGV4dC5qcycpLmluc3RhbmNlRm9yU3lzdGVtLmxpc3QuZ2V0U2VsZWN0ZWQoKTsKICAgICAgICB9CiAgICAgICAgaWYgKHBhZ2VUeXBlID09PSAnbmV3JykgewogICAgICAgICAgICBsZXQgbWFpbkxpc3QgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcubmQtbWFpbi1saXN0Jyk7CiAgICAgICAgICAgIGlmICghbWFpbkxpc3QpIG1haW5MaXN0ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLm5kLW5ldy1tYWluLWxpc3QnKTsvLzIwMjIwNTI0IOaWsOeJiAogICAgICAgICAgICByZXR1cm4gbWFpbkxpc3QuX192dWVfXy5zZWxlY3RlZExpc3Q7CiAgICAgICAgfQogICAgfTsKCiAgICBsZXQgZ2V0RmlsZUxpc3RTdGF0ID0gZnVuY3Rpb24gKGZpbGVMaXN0KSB7CiAgICAgICAgbGV0IGZpbGVTdGF0ID0gewogICAgICAgICAgICBmaWxlX251bTogMCwKICAgICAgICAgICAgZGlyX251bTogMAogICAgICAgIH07CiAgICAgICAgZmlsZUxpc3QuZm9yRWFjaChmdW5jdGlvbiAoaXRlbSkgewogICAgICAgICAgICBpZiAoaXRlbS5pc2RpciA9PSAwKSB7CiAgICAgICAgICAgICAgICBmaWxlU3RhdC5maWxlX251bSsrOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgZmlsZVN0YXQuZGlyX251bSsrOwogICAgICAgICAgICB9CiAgICAgICAgfSk7CiAgICAgICAgcmV0dXJuIGZpbGVTdGF0OwogICAgfTsKCiAgICBsZXQgaW5pdEJ1dHRvbkV2ZW50ID0gZnVuY3Rpb24gKCkgewogICAgICAgIGNvbnNvbGUubG9nKCdpbml0QnV0dG9uRXZlbnTliJ3lp4vljJbmjInpkq7kuovku7YnKTsKICAgICAgICBsZXQgcGFnZVR5cGUgPSBnZXRQYWdlVHlwZSgpOwogICAgICAgIGxldCB5dW5EYXRhID0gZ2V0WXVuRGF0YSgpOwogICAgICAgIGlmICgheXVuRGF0YSAmJiBwYWdlVHlwZSAhPSAnbmV3JykgewogICAgICAgICAgICBzaG93TG9naW4oKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgICAgICAvL+aaguaXtumZkOWItuWPquiDveWcqOeuoeeQhumhtemdouS4reS9v+eUqAogICAgICAgIGlmIChwYWdlVHlwZSA9PT0gJ3NoYXJlJykgewogICAgICAgICAgICBzaG93VGlwRXJyb3JTd2FsKCflv4XpobvlhYjovazlrZjliLDoh6rlt7HnvZHnm5jkuK3vvIznhLblkI7ov5vlhaXnvZHnm5jov5vooYzkuIvovb3vvIEnKTsKICAgICAgICAgICAgY29uc29sZS5sb2coJ+W/hemhu+WFiOi9rOWtmOWIsOiHquW3see9keebmOS4rScpOwogICAgICAgICAgICBzaG93U2hhcmVTYXZlKCk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgbGV0IGZpbGVMaXN0ID0gZ2V0U2VsZWN0ZWRGaWxlTGlzdCgpOwogICAgICAgICAgICBsZXQgZmlsZVN0YXQgPSBnZXRGaWxlTGlzdFN0YXQoZmlsZUxpc3QpOwogICAgICAgICAgICBpZiAoZmlsZUxpc3QubGVuZ3RoKSB7CiAgICAgICAgICAgICAgICBpZiAoZmlsZVN0YXQuZmlsZV9udW0gPiAxIHx8IGZpbGVTdGF0LmRpcl9udW0gPiAwKSB7CiAgICAgICAgICAgICAgICAgICAgc2hvd1RpcEVycm9yKCfor7fpgInmi6nkuIDkuKrmlofku7bov5vooYzkuIvovb3vvIjmmoLml7bkuI3mlK/mjIHmlofku7blpLnlkozlpJrmlofku7bmibnph4/kuIvovb3vvIknKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKGZpbGVTdGF0LmRpcl9udW0gPT0gMCAmJiBmaWxlU3RhdC5maWxlX251bSA9PSAxKSB7CiAgICAgICAgICAgICAgICAgICAgc2hvd0Rvd25sb2FkRGlhbG9nKGZpbGVMaXN0LCBmaWxlU3RhdCk7CiAgICAgICAgICAgICAgICAgICAgc2V0U2hhcmVDb21wbGV0ZVN0YXRlKCk7CiAgICAgICAgICAgICAgICAgICAgLy/oh6rliqjkuIvovb0KICAgICAgICAgICAgICAgICAgICAvLyBnZXRKcXVlcnkoKSgiI2RpYWxvZ0J0bkdldFVybCIpLmNsaWNrKCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBzaG93VGlwRXJyb3JTd2FsKCfor7fpgInmi6nkuIDkuKrmlofku7bov5vooYzkuIvovb0nKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH07CgogICAgbGV0IGdldFl1bkRhdGEgPSBmdW5jdGlvbiAoKSB7CiAgICAgICAgcmV0dXJuIHVuc2FmZVdpbmRvdy55dW5EYXRhOwogICAgfTsKCiAgICBsZXQgc2hvd1RpcEVycm9yU3dhbCA9IGZ1bmN0aW9uIChlcnIpIHsKICAgICAgICBzaG93U3dhbChlcnIsIHtpY29uOiAnZXJyb3InfSk7CiAgICB9CiAgICBsZXQgc2hvd1RpcEVycm9yID0gZnVuY3Rpb24gKGVycikgewogICAgICAgIC8vIHNob3dTd2FsKGVycix7aWNvbjogJ2Vycm9yJ30pOwogICAgICAgIGFsZXJ0KGVycik7CiAgICB9CiAgICBsZXQgc2hvd1RpcEluZm8gPSBmdW5jdGlvbiAoaW5mbykgewogICAgICAgIGdldEpxdWVyeSgpKCIjZGlhbG9nT3BUaXBzIikuc2hvdygpLmh0bWwoaW5mbyk7CiAgICB9CiAgICBsZXQgc2hvd1RpcEluZm9BcmlhID0gZnVuY3Rpb24gKGluZm8pIHsKICAgICAgICBnZXRKcXVlcnkoKSgiI2RpYWxvZ09wVGlwc0FyaWEiKS5zaG93KCkuaHRtbChpbmZvKTsKICAgIH0KICAgIGxldCBzaG93VGlwSW5mb0lkbSA9IGZ1bmN0aW9uIChpbmZvKSB7CiAgICAgICAgZ2V0SnF1ZXJ5KCkoIiNkaWFsb2dPcFRpcHNJZG0iKS5zaG93KCkuaHRtbChpbmZvKTsKICAgIH0KCiAgICBsZXQgc2hvd1N3YWwgPSBmdW5jdGlvbiAoY29udGVudCwgb3B0aW9uKSB7CiAgICAgICAgZGl2VGlwcy5pbm5lckhUTUwgPSBjb250ZW50OwogICAgICAgIG9wdGlvbi5jb250ZW50ID0gZGl2VGlwczsKICAgICAgICBpZiAoIW9wdGlvbi5oYXNPd25Qcm9wZXJ0eSgnYnV0dG9uJykpIHsKICAgICAgICAgICAgb3B0aW9uLmJ1dHRvbiA9ICfmnJUg55+lIOmBkyDkuoYnCiAgICAgICAgfQogICAgICAgIHN3YWwob3B0aW9uKTsKICAgIH0KCiAgICBsZXQgZ2V0SnF1ZXJ5ID0gZnVuY3Rpb24gKCkgewogICAgICAgIC8vIHJldHVybiByZXF1aXJlKCJiYXNlOndpZGdldC9saWJzL2pxdWVyeXBhY2tldC5qcyIpOwogICAgICAgIHJldHVybiAkOwogICAgfTsKICAgIGxldCBzaG93TG9naW4gPSBmdW5jdGlvbiAoKSB7CiAgICAgICAgcmVxdWlyZSgiYmFzZTp3aWRnZXQvbGlicy9qcXVlcnlwYWNrZXQuanMiKSgiW25vZGUtdHlwZT0naGVhZGVyLWxvZ2luLWJ0biddIikuY2xpY2soKTsKICAgIH07CiAgICBsZXQgc2hvd1NoYXJlU2F2ZSA9IGZ1bmN0aW9uICgpIHsKICAgICAgICByZXF1aXJlKCJiYXNlOndpZGdldC9saWJzL2pxdWVyeXBhY2tldC5qcyIpKCJbbm9kZS10eXBlPSdzaGFyZVNhdmUnXSIpLmNsaWNrKCk7CiAgICB9OwoKICAgIC8v5LiL6L296Z2i5p2/CiAgICBsZXQgc2hvd0Rvd25sb2FkRGlhbG9nID0gZnVuY3Rpb24gKGZpbGVMaXN0LCBmaWxlU3RhdCkgewogICAgICAgIGxldCB0aGVGaWxlID0gZmlsZUxpc3RbMF07CiAgICAgICAgLy8gY29uc29sZS5sb2codGhlRmlsZSk7CiAgICAgICAgbGV0IGNvbnRlbnQgPSBgCiAgICAgICAgICAgIDxkaXYgaWQ9ImRvd25sb2FkRGlhbG9nIj4KICAgICAgICAgICAgICAgIDxkaXYgaWQ9ImRpYWxvZ1RvcCI+CiAgICAgICAgICAgICAgICAgICAg6K+354K55Ye75LiL5pa55oyJ6ZKu77yM5byA5aeL5LiL6L29IDxzcGFuIGlkPSJkaWFsb2dGaWxlTmFtZSI+JHtDdXRTdHJpbmcodGhlRmlsZS5zZXJ2ZXJfZmlsZW5hbWUsIDQwKX08L3NwYW4+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgaWQ9ImRpYWxvZ01pZGRsZSI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iZGlhbG9nTGVmdCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9ImRpYWxvZ0xlZnRUaXBzIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9ImRpYWxvZ0xlZnRUaXBzMSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN0cm9uZz7jgJDmlrnlvI8x44CRPC9zdHJvbmc+SURNIOW/hemhu+iuvue9rjTnur/nqIvlj4rkv67mlLlVQe+8iOS7peaVmeeoi+S4uuWHhu+8iTwvc3Ryb25nPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRpYWxvZ0xlZnRUaXBzTGluayI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiR7Z2V0QXBwU2V0dGluZ0RhdGEoKS5hcmlhMkRvd25sb2FkVXJsfSIgdGFyZ2V0PSJfYmxhbmsiPuOAkOeCueWHu+S4i+i9vUlETeOAkTwvYT4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDs8YSBocmVmPSIke2dldEFwcFNldHRpbmdEYXRhKCkuaWRtRG93bmxvYWRVcmx9IiB0YXJnZXQ9Il9ibGFuayI+44CQSURN6YWN572u5pWZ56iL44CRPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJkaWFsb2dMZWZ0VGlwczIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdHJvbmc+44CQ5pa55byPMuOAkTwvc3Ryb25nPkFyaWEyIOaXoOmcgOmFjee9ruWNs+WPr+S9v+eUqAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRpYWxvZ0xlZnRUaXBzTGluayI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiR7Z2V0QXBwU2V0dGluZ0RhdGEoKS5hcmlhMkRvd25sb2FkVXJsfSIgdGFyZ2V0PSJfYmxhbmsiPuOAkOeCueWHu+S4i+i9vUFyaWEy44CRPC9hPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOzxhIGhyZWY9IiR7Z2V0QXBwU2V0dGluZ0RhdGEoKS5hcmlhMkNvdXJzZVVybH0iIHRhcmdldD0iX2JsYW5rIj7jgJBBcmlhMuS9v+eUqOaVmeeoi+OAkTwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iZGlhbG9nUXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBpZD0iZGlhbG9nUXJJbWciIHNyYz0iaHR0cHM6Ly9waWMucm1iLmJkc3RhdGljLmNvbS9iamgvZmFhMTY2MWU1NGFiMWJmNDkxYmY2MzBmZTE2ZjI3N2IuZ2lmIiAvPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJkaWFsb2dSaWdodCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9ImRpYWxvZ0NvbnRlbnQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGlkPSJkaWFsb2dCdG5HZXRVcmwiIHR5cGU9ImJ1dHRvbiIgdmFsdWU9IueCueWHu+iOt+WPluebtOmTvuWcsOWdgCIgY2xhc3M9ImJ0bkludGVyZmFjZSIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9ImRpYWxvZ1JlbWFyayI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIOKWoCBJRE3kuIvovb3pgJ/luqY8c3Ryb25nPjZNL3M8L3N0cm9uZz7lt6blj7PvvIxBcmlhMuS4i+i9vemAn+W6puWPr+S7pTxzdHJvbmc+6LeR5ruh5bim5a69PC9zdHJvbmc+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJyIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg4pagIOS4i+i9vemAn+W6pjxzdHJvbmc+5Zug5Lq66ICM5byCPC9zdHJvbmc+77yM54m55Yir5piv5YWx5Lqr572R57uc77yI5L6L5aaCIOagoeWbree9ke+8iQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJkaWFsb2dPcFRpcHMiPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iZGlhbG9nVmFwdGNoYUNvZGUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9ImRpYWxvZ1ZhcHRjaGFDb2RlSW5wdXQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBpZD0iZGlhbG9nVmFwdGNoYUNvZGVUaXBzIj48L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBpZD0iZGlhbG9nQ29kZSIgdHlwZT0idGV4dCIgdmFsdWU9IiR7Z2V0Q29uZmlnKCkuY29kZX0iIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iZGlhbG9nQ29kZVJlbWFyayI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9ImRpYWxvZ09wQnV0dG9ucyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGlkPSJkaWFsb2dCdG5JZG0iIHR5cGU9ImJ1dHRvbiIgZGF0YS1jbGlwYm9hcmQtdGV4dD0iIiB2YWx1ZT0i5aSN5Yi255u06ZO+5Zyw5Z2AIiBjbGFzcz0iYnRuSW50ZXJmYWNlIGJ0bkdyZWVuIiAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9ImRpYWxvZ09wVGlwc0lkbSI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGlkPSJkaWFsb2dCdG5BcmlhIiB0eXBlPSJidXR0b24iIHZhbHVlPSLlj5HpgIHoh7NBcmlhMiIgY2xhc3M9ImJ0bkludGVyZmFjZSBidG5HcmVlbiIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJkaWFsb2dPcFRpcHNBcmlhIj48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJkaWFsb2dEaXZTYXZlUGF0aCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIOS/neWtmOi3r+W+hO+8mjxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0iZGlhbG9nVHh0U2F2ZVBhdGgiIHZhbHVlPSIke2dldENvbmZpZygpLnNhdmVQYXRofSIgc3R5bGU9IndpZHRoOiAxNzBweDsiIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGlkPSJkaWFsb2dBcmlhQ29uZmlnQ2xpY2siPumFjee9rkFyaWEyPj48L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9ImRpYWxvZ0FyaWFDb25maWciPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIGlkPSJkaWFsb2dBcmlhUlBDIiB2YWx1ZT0iJHtnZXRDb25maWcoKS5qc29uUnBjfSIgdGl0bGU9IlJQQ+WcsOWdgCIgcGxhY2Vob2xkZXI9IlJQQ+WcsOWdgCIgc3R5bGU9IndpZHRoOiAyNDBweDsiIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgaWQ9ImRpYWxvZ0FyaWFUb2tlbiIgdmFsdWU9IiR7Z2V0Q29uZmlnKCkudG9rZW59IiB0aXRsZT0idG9rZW4iIHBsYWNlaG9sZGVyPSJ0b2tlbiIgc3R5bGU9IndpZHRoOiA3N3B4OyIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxiciAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImNoZWNrYm94IiBpZD0iZGlhbG9nQXJpYU1pbmUiIHZhbHVlPSJjaGVja2VkIiAke2dldENvbmZpZygpLm1pbmV9PiDmiJHkvb/nlKjoh6rlt7HnmoRBcmlhMu+8iOWmguS4jeaHgu+8jOWLv+WLvumAie+8iQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBpZD0iZGlhbG9nQ2xlYXIiPjwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBpZD0iZGlhbG9nQm90dG9tIj7kvJfmiYDlkajnn6XnmoTljp/lm6DvvIzohJrmnKzkuI3lj6/og73luLjlnKjvvIzkvYbkvZzogIXluLjlnKjvvIzlhbPms6jmiY3og73kuI3ov7fot6/vvIHvvIHvvIE8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgYDsKICAgICAgICBzaG93U3dhbChjb250ZW50LCB7CiAgICAgICAgICAgIGJ1dHRvbjogJ+WFsyDpl60nLAogICAgICAgICAgICBjbG9zZU9uQ2xpY2tPdXRzaWRlOiBmYWxzZQogICAgICAgIH0pOwoKICAgICAgICAvL+WIhuS6q++8iOWFpeWPoyDvvIkKICAgICAgICBsZXQgZGlhbG9nQnRuQ2xpY2sgPSBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgIGlmIChnbG9iYWxEYXRhLmRvd25sb2FkaW5nID09PSAxKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgc2V0U2hhcmVTdGFydFN0YXRlKCk7CiAgICAgICAgICAgIC8v5Yik5pat5piv5ZCm5bey5YiG5Lqr6L+H6K+l5paH5Lu277yI5LiN6YeN5aSN5YiG5Lqr77yM5LuF6ZmQ5LqO5b2T5YmN56qX5Y+j55qE5LiK5LiA5qyh5YiG5Lqr77yJCiAgICAgICAgICAgIGxldCB0ID0gZ2V0VG1wRGF0YSgpOwogICAgICAgICAgICBpZiAodC5yZXNwb25zZSAmJiB0LmZzX2lkID09IHRoZUZpbGUuZnNfaWQpIHsKICAgICAgICAgICAgICAgIGNvbnNvbGUud2Fybign5bey5YiG5Lqr6L+H5q2k5paH5Lu277yM5LiN5YaN6YeN5aSN5YiG5LqrJyk7CiAgICAgICAgICAgICAgICBnZXREb3dubG9hZFVybCh0LnJlc3BvbnNlLCB0LnB3ZCwgdC5mc19pZCwgJycpOwogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgY29uc29sZS5pbmZvKCfmnKrliIbkuqvov4fmraTmlofku7bvvIzlvIDlp4vliIbkuqsnKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLy/ojrflj5bmlbDmja4KICAgICAgICAgICAgbGV0IGJkc3Rva2VuID0gJyc7Ly91bnNhZmVXaW5kb3cubG9jYWxzLmdldCgnYmRzdG9rZW4nKTsKICAgICAgICAgICAgbGV0IHB3ZCA9IGdldFJuZFB3ZCg0KTsKICAgICAgICAgICAgLy8rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgICAgICAgICAgLy/liIbkuqsKICAgICAgICAgICAgbGV0IGRldGFpbHMgPSB7CiAgICAgICAgICAgICAgICBtZXRob2Q6ICdQT1NUJywKICAgICAgICAgICAgICAgIHJlc3BvbnNlVHlwZTogJ2pzb24nLAogICAgICAgICAgICAgICAgdGltZW91dDogMTAwMDAsIC8vIDEw56eS6LaF5pe2CiAgICAgICAgICAgICAgICB1cmw6IGAvc2hhcmUvc2V0P2NoYW5uZWw9Y2h1bmxlaSZjbGllbnR0eXBlPTAmd2ViPTEmY2hhbm5lbD1jaHVubGVpJndlYj0xJmFwcF9pZD0yNTA1MjgmYmRzdG9rZW49JHtiZHN0b2tlbn0mY2xpZW50dHlwZT0wYCwKICAgICAgICAgICAgICAgIGRhdGE6IGBmaWRfbGlzdD1bJHt0aGVGaWxlLmZzX2lkfV0mc2NoYW5uZWw9NCZjaGFubmVsX2xpc3Q9W10mcGVyaW9kPTEmcHdkPSR7cHdkfWAsCiAgICAgICAgICAgICAgICBvbmxvYWQ6IGZ1bmN0aW9uIChyZXMpIHsKICAgICAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZygn5YiG5Lqr5paH5Lu25pe277yM55m+5bqm6L+U5Zue77yaJywgcmVzKTsKICAgICAgICAgICAgICAgICAgICBpZiAocmVzLnN0YXR1cyA9PT0gMjAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAocmVzLnJlc3BvbnNlLmVycm5vKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL1RPRE/vvJrnnIvnnIvnmb7luqblk6rph4zmnInov5nkupvnirbmgIHnoIHop6Pph4oKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMDogLy8g5q2j5bi46L+U5ZueCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy/miopyZXNwb25zZSwgcHdkLCBmc19pZOWtmOWIsOWFrOeUqOWPmOmHj++8jOeEtuWQjuWcqHBhc3Pkuovku7bkuK3lho3lj5blh7oKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRUbXBEYXRhKHJlcy5yZXNwb25zZSwgcHdkLCB0aGVGaWxlLmZzX2lkLCAnJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0RG93bmxvYWRVcmwocmVzLnJlc3BvbnNlLCBwd2QsIHRoZUZpbGUuZnNfaWQsICcnKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTEwOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3dUaXBJbmZvKCflj5HnlJ/plJnor6/vvIEnKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3dUaXBFcnJvcign55m+5bqm6K+077ya5oKo5LuK5aSp5YiG5Lqr5aSq5aSa5LqG77yMMjTlsI/ml7blkI7lho3or5XlkKfvvIFcbueZvuW6pui/lOWbnueKtuaAgeegge+8micgKyByZXMucmVzcG9uc2UuZXJybm8pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFNoYXJlQ29tcGxldGVTdGF0ZSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IocmVzKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTE1OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3dUaXBJbmZvKCflj5HnlJ/plJnor6/vvIEnKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3dUaXBFcnJvcign55m+5bqm6K+077ya6K+l5paH5Lu256aB5q2i5YiG5Lqr77yBXG7nmb7luqbov5Tlm57nirbmgIHnoIHvvJonICsgcmVzLnJlc3BvbnNlLmVycm5vKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRTaGFyZUNvbXBsZXRlU3RhdGUoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKHJlcyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIC02OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3dUaXBJbmZvKCflj5HnlJ/plJnor6/vvIEnKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3dUaXBFcnJvcign55m+5bqm6K+077ya6K+36YeN5paw55m75b2V77yBXG7nmb7luqbov5Tlm57nirbmgIHnoIHvvJonICsgcmVzLnJlc3BvbnNlLmVycm5vKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRTaGFyZUNvbXBsZXRlU3RhdGUoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKHJlcyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OiAvLyDlhbblroPplJnor68KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93VGlwSW5mbygn5Y+R55Sf6ZSZ6K+v77yBJykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93VGlwRXJyb3IoJ+WIhuS6q+aWh+S7tuWksei0pe+8jOivt+mHjeivle+8gVxu55m+5bqm6L+U5Zue54q25oCB56CB77yaJyArIHJlcy5yZXNwb25zZS5lcnJubyArICdcbuS9v+eUqOeZvuW6puWIhuS6q+aMiemSruivleivle+8jOWwseefpemBk+WFt+S9k+WOn+WboOS6huOAgicpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFNoYXJlQ29tcGxldGVTdGF0ZSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IocmVzKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHNob3dUaXBJbmZvKCflj5HnlJ/plJnor6/vvIEnKQogICAgICAgICAgICAgICAgICAgICAgICBzaG93VGlwRXJyb3IoJ+WIhuS6q+aWh+S7tuWksei0pe+8jOWvvOiHtOaXoOazleiOt+WPluebtOmTvuS4i+i9veWcsOWdgO+8gVxu55m+5bqm6L+U5Zue77yaJyArIHJlcy5yZXNwb25zZVRleHQpOwogICAgICAgICAgICAgICAgICAgICAgICBzZXRTaGFyZUNvbXBsZXRlU3RhdGUoKTsKICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihyZXMpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBvbnRpbWVvdXQ6IChyZXMpID0+IHsKICAgICAgICAgICAgICAgICAgICBzaG93VGlwSW5mbygn5Y+R55Sf6ZSZ6K+v77yBJykKICAgICAgICAgICAgICAgICAgICBzaG93VGlwRXJyb3IoJ+WIhuS6q+aWh+S7tuaXtui/nuaOpeeZvuW6puaOpeWPo+i2heaXtu+8jOivt+mHjeivle+8gScpOwogICAgICAgICAgICAgICAgICAgIHNldFNoYXJlQ29tcGxldGVTdGF0ZSgpOwogICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IocmVzKTsKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBvbmVycm9yOiAocmVzKSA9PiB7CiAgICAgICAgICAgICAgICAgICAgc2hvd1RpcEluZm8oJ+WPkeeUn+mUmeivr++8gScpCiAgICAgICAgICAgICAgICAgICAgc2hvd1RpcEVycm9yKCfliIbkuqvmlofku7bml7blj5HnlJ/plJnor6/vvIzor7fph43or5XvvIEnKTsKICAgICAgICAgICAgICAgICAgICBzZXRTaGFyZUNvbXBsZXRlU3RhdGUoKTsKICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKHJlcyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH07CiAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICBHTV94bWxodHRwUmVxdWVzdChkZXRhaWxzKTsKICAgICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHsKICAgICAgICAgICAgICAgIHNob3dUaXBJbmZvKCflj5HnlJ/plJnor6/vvIEnKQogICAgICAgICAgICAgICAgc2hvd1RpcEVycm9yKCfmnKrnn6XplJnor6/vvIzor7fph43or5XvvIEnKTsKICAgICAgICAgICAgICAgIHNldFNoYXJlQ29tcGxldGVTdGF0ZSgpOwogICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7CiAgICAgICAgICAgIH0KICAgICAgICB9OwoKICAgICAgICAvL+e7keWumuaMiemSrueCueWHu++8iOeCueWHu+iOt+WPluebtOmTvuWcsOWdgO+8iQogICAgICAgIGdldEpxdWVyeSgpKCIjZGlhbG9nQnRuR2V0VXJsIikuY2xpY2soZnVuY3Rpb24gKCkgewogICAgICAgICAgICBkaWFsb2dCdG5DbGljaygpCiAgICAgICAgfSk7CiAgICAgICAgLy/ngrnlh7vphY3nva5BcmlhMgogICAgICAgIGdldEpxdWVyeSgpKCIjZGlhbG9nQXJpYUNvbmZpZ0NsaWNrIikuY2xpY2soZnVuY3Rpb24gKCkgewogICAgICAgICAgICBzaG93QXJpYUNvbmZpZygpCiAgICAgICAgfSk7CiAgICAgICAgLy8g57uR5a6a54K55Ye75aSN5Yi25LqL5Lu2CiAgICAgICAgY29weVVybDJDbGlwYm9hcmQoKTsKICAgIH07CgogICAgLy/or7fmsYLlpIfnlKjlj4LmlbAKICAgIGxldCBnZXRQYXJhbXMgPSBmdW5jdGlvbiAoKSB7CiAgICAgICAgbGV0IGhrVXJsID0gImh0dHBzOi8vcGFuLmJhaWR1LmNvbS9wY2xvdWQvdXNlci9nZXRpbmZvP3F1ZXJ5X3VrPTI5NDI4NDQ3NDIiOwogICAgICAgIC8vIGxldCBoa1VybCA9ICJodHRwOi8vbG9jYWxob3N0OjQ4ODE4L2JkL2dldGluZm8ucGhwP3F1ZXJ5X3VrPTI5NDI4NDQ3NDIiOwogICAgICAgIGxldCBkZXRhaWxzID0gewogICAgICAgICAgICBtZXRob2Q6ICdHRVQnLAogICAgICAgICAgICB0aW1lb3V0OiAxMDAwMCwgLy8gMTDnp5LotoXml7YKICAgICAgICAgICAgdXJsOiBoa1VybCArICcmJyArIG5ldyBEYXRlKCkuZ2V0VGltZSgpLAogICAgICAgICAgICByZXNwb25zZVR5cGU6ICdqc29uJywKICAgICAgICAgICAgb25sb2FkOiBmdW5jdGlvbiAocmVzKSB7CiAgICAgICAgICAgICAgICBpZiAocmVzLnN0YXR1cyA9PT0gMjAwKSB7CiAgICAgICAgICAgICAgICAgICAgZ2xvYmFsRGF0YS5kb21haW5CID0gcmVzLnJlc3BvbnNlLnVzZXJfaW5mby5pbnRybzsKICAgICAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmluZm8oImRvbWFpbkLvvJoiICsgZ2xvYmFsRGF0YS5kb21haW5CKTsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihyZXMpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfTsKICAgICAgICB0cnkgewogICAgICAgICAgICBHTV94bWxodHRwUmVxdWVzdChkZXRhaWxzKTsKICAgICAgICB9IGNhdGNoIChlcnJvcikgewogICAgICAgICAgICBjb25zb2xlLmVycm9yKGVycm9yKTsKICAgICAgICB9CiAgICB9CgogICAgbGV0IGdldFVJbmZvID0gZnVuY3Rpb24gKCkgewogICAgICAgIGxldCB1cmwgPSAiaHR0cHM6Ly9wYW4uYmFpZHUuY29tL3Jlc3QvMi4wL3hwYW4vbmFzP21ldGhvZD11aW5mbyI7CiAgICAgICAgbGV0IGRldGFpbHMgPSB7CiAgICAgICAgICAgIG1ldGhvZDogJ0dFVCcsCiAgICAgICAgICAgIHRpbWVvdXQ6IDEwMDAwLCAvLyAxMOenkui2heaXtgogICAgICAgICAgICB1cmw6IHVybCArICcmJyArIG5ldyBEYXRlKCkuZ2V0VGltZSgpLAogICAgICAgICAgICByZXNwb25zZVR5cGU6ICdqc29uJywKICAgICAgICAgICAgb25sb2FkOiBmdW5jdGlvbiAocmVzKSB7CiAgICAgICAgICAgICAgICBpZiAocmVzLnN0YXR1cyA9PT0gMjAwKSB7CiAgICAgICAgICAgICAgICAgICAgdUluZm8gPSByZXMucmVzcG9uc2U7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IocmVzKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH07CiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgR01feG1saHR0cFJlcXVlc3QoZGV0YWlscyk7CiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHsKICAgICAgICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7CiAgICAgICAgfQogICAgfQogICAgbGV0IHNldFNoYXJlU3RhcnRTdGF0ZSA9IGZ1bmN0aW9uICgpIHsKICAgICAgICBnbG9iYWxEYXRhLmRvd25sb2FkaW5nID0gMTsKICAgICAgICBzaG93VGlwSW5mbygn5q2j5Zyo5YiG5Lqr5paH5Lu2Li4uJykKICAgICAgICAvL+S/neWtmOeUqOaIt+i+k+WFpeeahOaVsOaNrgogICAgICAgIHNhdmVMYXN0VXNlRGF0YSgpOwogICAgICAgIGdldEpxdWVyeSgpKCcjZGlhbG9nVmFwdGNoYUNvZGUnKS5oaWRlKCk7CiAgICB9CiAgICBsZXQgc2V0U2hhcmVDb21wbGV0ZVN0YXRlID0gZnVuY3Rpb24gKGlzU3VjY2VzcykgewogICAgICAgIGlzU3VjY2VzcyA9IGlzU3VjY2VzcyB8fCBmYWxzZTsKICAgICAgICBpZiAoIWlzU3VjY2VzcykgewogICAgICAgICAgICAvL+Wksei0peS5i+WQju+8jOWFgeiuuOmHjeWkjeeCueWHu+aMiemSrgogICAgICAgICAgICBnbG9iYWxEYXRhLmRvd25sb2FkaW5nID0gMDsKICAgICAgICB9CiAgICAgICAgLy/kv53lrZjnlKjmiLfovpPlhaXnmoTmlbDmja4KICAgICAgICBzYXZlTGFzdFVzZURhdGEoKTsKICAgICAgICAvL+mHjee9rnZhcHRjaGHpqozor4EKICAgICAgICB0cnkgewogICAgICAgICAgICAvL+mYsuatouafkOS6m+eUqOaIt+aXoOazleiuv+mXrnZhcHRjaGHlrpjnvZHogIzkuK3mlq0KICAgICAgICAgICAgaWYgKHZhcHRjaGFBbGwgIT09IG51bGwgJiYgdmFwdGNoYUFsbC5oYXNPd25Qcm9wZXJ0eSgicmVzZXQiKSkgewogICAgICAgICAgICAgICAgdmFwdGNoYUFsbC5yZXNldCgpOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgY29uc29sZS53YXJuKCJ2YXB0Y2hhQWxsIGlzIHVuZGVmaW5lZCIpOwogICAgICAgICAgICB9CiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHsKICAgICAgICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7CiAgICAgICAgfQogICAgfQogICAgLy/osIPnlKjlh73mlbDvvJphcmlhRG93bmxvYWQKICAgIGxldCBzZXRTZW5kQXJpYVN0YXJ0U3RhdGUgPSBmdW5jdGlvbiAoKSB7CiAgICAgICAgZ2xvYmFsRGF0YS5zZW5kaW5nID0gMTsKICAgICAgICBzaG93VGlwSW5mb0FyaWEoJ+ato+WcqOWPkemAgeiHs0FyaWEyLi4uJyk7CiAgICAgICAgLy8gZ2V0SnF1ZXJ5KCkoIiNkaWFsb2dCdG5BcmlhIikudmFsKCfmraPlnKjlj5HpgIHoh7NBcmlhMi4uLicpOwogICAgICAgIC8v5L+d5a2Y55So5oi36L6T5YWl55qE5pWw5o2uCiAgICAgICAgc2F2ZUxhc3RVc2VEYXRhKCk7CiAgICB9CiAgICBsZXQgc2V0U2VuZEFyaWFDb21wbGV0ZVN0YXRlID0gZnVuY3Rpb24gKGlzU3VjY2VzcykgewogICAgICAgIGdsb2JhbERhdGEuc2VuZGluZyA9IDA7CiAgICAgICAgaWYgKGlzU3VjY2VzcykgewogICAgICAgICAgICBnZXRKcXVlcnkoKSgiI2RpYWxvZ0J0bkFyaWEiKS52YWwoJ0FyaWEy5bey57uP5byA5aeL5LiL6L295LqGJyk7CiAgICAgICAgICAgIC8vIHNob3dUaXBJbmZvQXJpYSgnQXJpYTLlt7Lnu4/lvIDlp4vkuIvovb3kuoYnKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBnZXRKcXVlcnkoKSgiI2RpYWxvZ0J0bkFyaWEiKS52YWwoJ+WPkemAgeiHs0FyaWEyJyk7CiAgICAgICAgICAgIC8vIHNob3dUaXBJbmZvQXJpYSgnQXJpYTLlt7Lnu4/lvIDlp4vkuIvovb3kuobvvIzliIfmjaLov4fljrvnnIvnnIvlkKd+Jyk7CiAgICAgICAgfQogICAgICAgIC8v5L+d5a2Y55So5oi36L6T5YWl55qE5pWw5o2uCiAgICAgICAgc2F2ZUxhc3RVc2VEYXRhKCk7CiAgICB9CgogICAgbGV0IHNob3dBcmlhQ29uZmlnID0gZnVuY3Rpb24gKCkgewogICAgICAgIGxldCB0ID0gZ2V0SnF1ZXJ5KCkoIiNkaWFsb2dBcmlhQ29uZmlnIik7CiAgICAgICAgaWYgKHQuY3NzKCJkaXNwbGF5IikgPT0gIm5vbmUiKSB7CiAgICAgICAgICAgIHQuc2hvdygpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHQuaGlkZSgpOwogICAgICAgIH0KICAgIH0KCiAgICAvL+WIhuS6q+aIkOWKn+WQju+8jOW8gOWni+aJi+WKv+mqjOivgQogICAgbGV0IHZhcHRjaGFWYWxpZGF0ZSA9IGZ1bmN0aW9uICgpIHsKICAgICAgICBsb2FkVmFwdGNoYVNkayhmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgIHZhcHRjaGEoewogICAgICAgICAgICAgICAgdmlkOiAiNWZjNTI1MjY1NjE4MWVhODlmOWVhZDJlIiwgLy8g6aqM6K+B5Y2V5YWDaWQKICAgICAgICAgICAgICAgIHR5cGU6ICJpbnZpc2libGUiLCAvLyDmmL7npLrnsbvlnosg6ZqQ6JeP5byPCiAgICAgICAgICAgICAgICBzY2VuZTogMSwgLy8g5Zy65pmv5YC8IOm7mOiupDAKICAgICAgICAgICAgICAgIG9mZmxpbmVfc2VydmVyOiAiIiwgLy/nprvnur/mqKHlvI/mnI3liqHnq6/lnLDlnYDvvIzoi6XlsJrmnKrphY3nva7nprvnur/mqKHlvI/vvIzor7floavlhpnku7vmhI/lnLDlnYDljbPlj6/jgIIKICAgICAgICAgICAgfSkudGhlbihmdW5jdGlvbiAodmFwdGNoYU9iaikgewogICAgICAgICAgICAgICAgdmFwdGNoYUFsbCA9IHZhcHRjaGFPYmo7IC8v5bCGVkFQVENIQemqjOivgeWunuS+i+S/neWtmOWIsOWFqOWxgOWPmOmHj+S4rQogICAgICAgICAgICAgICAgY29uc29sZS5sb2codmFwdGNoYUFsbCk7CgogICAgICAgICAgICAgICAgLy/pqozor4HpgJrov4fml7bop6blj5EKICAgICAgICAgICAgICAgIHZhcHRjaGFBbGwubGlzdGVuKCJwYXNzIiwgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICAgIC8vIOmqjOivgeaIkOWKn+i/m+ihjOWQjue7reaTjeS9nAogICAgICAgICAgICAgICAgICAgIGxldCB0b2tlbiA9IHZhcHRjaGFBbGwuZ2V0VG9rZW4oKTsKICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyh0b2tlbik7CiAgICAgICAgICAgICAgICAgICAgbGV0IHQgPSBnZXRUbXBEYXRhKCk7CiAgICAgICAgICAgICAgICAgICAgZ2V0RG93bmxvYWRVcmwodC5yZXNwb25zZSwgdC5wd2QsIHQuZnNfaWQsIHRva2VuKTsKICAgICAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgICAgIC8v5YWz6Zet6aqM6K+B5by556qX5pe26Kem5Y+RCiAgICAgICAgICAgICAgICB2YXB0Y2hhQWxsLmxpc3RlbigiY2xvc2UiLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgICAgc2hvd1RpcEluZm8oJ+mAmui/h+mqjOivgeaJjeWPr+S7peWPluebtOmTvu+8geeCueWHu+S4iumdouaMiemSrumHjeaWsOW8gOWni+OAgicpOwogICAgICAgICAgICAgICAgICAgIHNldFNoYXJlQ29tcGxldGVTdGF0ZSgpCiAgICAgICAgICAgICAgICB9KTsKCiAgICAgICAgICAgICAgICAvL+W8gOWni+aJi+WKv+mqjOivgQogICAgICAgICAgICAgICAgdmFwdGNoYUFsbC52YWxpZGF0ZSgpOwogICAgICAgICAgICB9KTsKICAgICAgICB9KTsKICAgIH0KCiAgICBsZXQgc2V0VG1wRGF0YSA9IGZ1bmN0aW9uIChyZXNwb25zZSwgcHdkLCBmc19pZCwgdG9rZW4pIHsKICAgICAgICB0bXBEYXRhLnJlc3BvbnNlID0gcmVzcG9uc2U7CiAgICAgICAgdG1wRGF0YS5wd2QgPSBwd2Q7CiAgICAgICAgdG1wRGF0YS5mc19pZCA9IGZzX2lkOwogICAgICAgIHRtcERhdGEudG9rZW4gPSB0b2tlbjsKICAgIH0KICAgIGxldCBnZXRUbXBEYXRhID0gZnVuY3Rpb24gKCkgewogICAgICAgIHJldHVybiB0bXBEYXRhOwogICAgfQogICAgLy/miYvlir/pqozor4HmiJDlip/lkI7vvIzmnI3liqHlmajojrflj5bnm7Tpk77lnLDlnYAKICAgIGxldCBnZXREb3dubG9hZFVybFJlYWwgPSBmdW5jdGlvbiAoZG9tYWluLCByZXNwb25zZSwgcHdkLCBmc2lkLCB0b2tlbikgewogICAgICAgIC8vIGNvbnNvbGUubG9nKCfliIbkuqvmiJDlip/lkI7ov5Tlm57vvJonLCByZXNwb25zZSk7CiAgICAgICAgbGV0IGF1ID0gZ2V0SnF1ZXJ5KCkoJyNkaWFsb2dRckltZycpLmF0dHIoJ3NyYycpOwogICAgICAgIGxldCBzaG9ydHVybCA9IHJlc3BvbnNlLnNob3J0dXJsOwogICAgICAgIGxldCBzdXJsID0gc2hvcnR1cmwuc3Vic3RyaW5nKHNob3J0dXJsLmxhc3RJbmRleE9mKCcvJykgKyAxLCBzaG9ydHVybC5sZW5ndGgpOwogICAgICAgIGxldCBkb3dubG9hZFVybCA9IGAke2dldEFwcFNldHRpbmdEYXRhKCkuZ2V0RG93bmxvYWRVcmx9P3ZlcnNpb249JHtnZXRBcHBTZXR0aW5nRGF0YSgpLnNjcmlwdFZlcnNpb259JnQ9ODg4OGAgKyBuZXcgRGF0ZSgpLmdldFRpbWUoKTsKICAgICAgICBkb3dubG9hZFVybCA9IGRvbWFpbiArIGRvd25sb2FkVXJsICsgZ2V0QXBwU2V0dGluZ0RhdGEoKS5wYXJhbTsKCiAgICAgICAgbGV0IHBhcmFtcyA9IG5ldyBGb3JtRGF0YSgpOwogICAgICAgIHBhcmFtcy5hcHBlbmQoJ3N1cmwnLCBzdXJsKTsKICAgICAgICBwYXJhbXMuYXBwZW5kKCdwd2QnLCBwd2QpOwogICAgICAgIHBhcmFtcy5hcHBlbmQoJ3NoYXJlaWQnLCByZXNwb25zZS5zaGFyZWlkKTsKICAgICAgICBwYXJhbXMuYXBwZW5kKCdmcm9tJywgdUluZm8udWspOwogICAgICAgIHBhcmFtcy5hcHBlbmQoJ2ZzaWRsaXN0JywgYFske2ZzaWR9XWApOwogICAgICAgIHBhcmFtcy5hcHBlbmQoJ3N0YXJ0JywgZ2V0U3RvcmFnZS5nZXRDb21tb25WYWx1ZSgnc3RhcnQnKSk7CiAgICAgICAgcGFyYW1zLmFwcGVuZCgnY29kZScsIGdldEpxdWVyeSgpKCcjZGlhbG9nQ29kZScpLnZhbCgpLnRyaW0oKSk7CiAgICAgICAgcGFyYW1zLmFwcGVuZCgndScsIHVJbmZvLmJhaWR1X25hbWUpOwogICAgICAgIHBhcmFtcy5hcHBlbmQoJ2ZuJywgZ2V0U2VsZWN0ZWRGaWxlTGlzdCgpWzBdLnNlcnZlcl9maWxlbmFtZSk7CiAgICAgICAgcGFyYW1zLmFwcGVuZCgndG9rZW4nLCB0b2tlbik7CiAgICAgICAgcGFyYW1zLmFwcGVuZCgnYXUnLCBhdS5pbmRleE9mKGdsb2JhbERhdGEucGFyYW1Eb21haW4yKSA9PSAwID8gJycgOiBhdSk7CiAgICAgICAgLy/ov5znqIvor7fmsYLnm7Tpk77kuIvovb3lnLDlnYAKICAgICAgICBsZXQgZGV0YWlscyA9IHsKICAgICAgICAgICAgbWV0aG9kOiAnUE9TVCcsCiAgICAgICAgICAgIHJlc3BvbnNlVHlwZTogJ2pzb24nLAogICAgICAgICAgICB0aW1lb3V0OiAzMDAwMCwgLy8gMzDnp5LotoXml7YKICAgICAgICAgICAgdXJsOiBkb3dubG9hZFVybCwKICAgICAgICAgICAgLy8gZGF0YTogYHN1cmw9JHtzdXJsfSZwd2Q9JHtwd2R9YCwgLS1waHDnq6/mlLbkuI3liLDmlbDmja4KICAgICAgICAgICAgZGF0YTogcGFyYW1zLAogICAgICAgICAgICBvbmxvYWRzdGFydDogZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgbGV0IHRtcFRpcHMgPSAn5q2j5Zyo6L+c56iL6K+35rGC55u06ZO+5Zyw5Z2ALi4uJzsKICAgICAgICAgICAgICAgIGlmIChkb21haW4gPT0gZ2xvYmFsRGF0YS5kb21haW5CKSB0bXBUaXBzID0gJ+W/q+WlveS6hu+8jOWGjeiAkOW/g+etieS4gOS4i+S4iy4uLic7CiAgICAgICAgICAgICAgICBpZiAodG9rZW4pIHRtcFRpcHMgPSAn5Lq65py66aqM6K+B6YCa6L+HfiAnICsgdG1wVGlwczsKICAgICAgICAgICAgICAgIHNob3dUaXBJbmZvKHRtcFRpcHMpCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIG9ubG9hZDogZnVuY3Rpb24gKHJlcykgewogICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coJ+ivt+axguWPguaVsO+8micpOwogICAgICAgICAgICAgICAgLy8gcGFyYW1zLmZvckVhY2goKHZhbHVlLCBrZXkpID0+IHsKICAgICAgICAgICAgICAgIC8vICAgICAgY29uc29sZS5sb2coIiVzIC0tPiAlcyIsIGtleSwgdmFsdWUpOwogICAgICAgICAgICAgICAgLy8gfSkKICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCfov5znqIvor7fmsYLnm7Tpk77lnLDlnYDvvIzov5Tlm57vvJonLCByZXMpOwogICAgICAgICAgICAgICAgaWYgKHJlcy5zdGF0dXMgPT09IDIwMCkgewogICAgICAgICAgICAgICAgICAgIHN3aXRjaCAocmVzLnJlc3BvbnNlLmVycm5vKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMDogLy8g5q2j5bi46L+U5ZueCiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTAzOiAvLyBhcmlhMiBvbmx5CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRTaGFyZUNvbXBsZXRlU3RhdGUodHJ1ZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFuZ2VDbGlja0V2ZW50KHJlcy5yZXNwb25zZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYXZlU3RhcnRTdGF0ZSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvd1FyVGlwcyhyZXMucmVzcG9uc2UpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTAwOiAvLyDniYjmnKzlpKrml6cKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFNoYXJlQ29tcGxldGVTdGF0ZSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvd1RpcEVycm9yU3dhbChyZXMucmVzcG9uc2UuZXJyKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDEwMTogLy8gdmFwdGNoYemqjOivgeS4jeaIkOWKnwogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0U2hhcmVDb21wbGV0ZVN0YXRlKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93VGlwSW5mbyhyZXMucmVzcG9uc2UuZXJyKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldEpxdWVyeSgpKCcjZGlhbG9nVmFwdGNoYUNvZGUnKS5zaG93KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93UXJUaXBzKHJlcy5yZXNwb25zZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxMDI6IC8vIOaFoumAn+ebtOmTvgogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0U2hhcmVDb21wbGV0ZVN0YXRlKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93VGlwSW5mbyhyZXMucmVzcG9uc2UuZXJyKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDEwNDogLy8g6ZyA6KaB5omL5Yq/6aqM6K+BCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93VGlwSW5mbyhyZXMucmVzcG9uc2UuZXJyKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFNoYXJlQ29tcGxldGVTdGF0ZSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFwdGNoYVZhbGlkYXRlKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxMDAxOiAvLyDph43or5UKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IocmVzKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkb21haW4gPT0gZ2xvYmFsRGF0YS5kb21haW5CKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvd1RpcEluZm8oJ+WPkeeUn+mUmeivr++8gScpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvd1RpcEVycm9yKHJlcy5yZXNwb25zZS5lcnIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFNoYXJlQ29tcGxldGVTdGF0ZSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL+mdnuWkh+eUqOaOpeWPo+ivt+axguaXtu+8jOWwsee7p+e7reS9v+eUqOWkh+eUqOaOpeWPo+WGjeivt+axgjHmrKEKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXREb3dubG9hZFVybFJlYWwoZ2xvYmFsRGF0YS5kb21haW5CLCByZXNwb25zZSwgcHdkLCBmc2lkLCB0b2tlbik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDogLy8g5YW25a6D6ZSZ6K+vCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93VGlwSW5mbygn5Y+R55Sf6ZSZ6K+v77yBJykKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3dUaXBFcnJvcihyZXMucmVzcG9uc2UuZXJyKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFNoYXJlQ29tcGxldGVTdGF0ZSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKHJlcyk7CiAgICAgICAgICAgICAgICAgICAgaWYgKGRvbWFpbiA9PSBnbG9iYWxEYXRhLmRvbWFpbkIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgc2hvd1RpcEluZm8oJ+WPkeeUn+mUmeivr++8gScpCiAgICAgICAgICAgICAgICAgICAgICAgIHNob3dUaXBFcnJvcign6K+35rGC55u06ZO+5LiL6L295Zyw5Z2A5aSx6LSl77yB5pyN5Yqh5Zmo6L+U5Zue77yaJyArIHJlcy5zdGF0dXMpOwogICAgICAgICAgICAgICAgICAgICAgICBzZXRTaGFyZUNvbXBsZXRlU3RhdGUoKTsKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAvL+mdnuWkh+eUqOaOpeWPo+ivt+axguaXtu+8jOWwsee7p+e7reS9v+eUqOWkh+eUqOaOpeWPo+WGjeivt+axgjHmrKEKICAgICAgICAgICAgICAgICAgICAgICAgZ2V0RG93bmxvYWRVcmxSZWFsKGdsb2JhbERhdGEuZG9tYWluQiwgcmVzcG9uc2UsIHB3ZCwgZnNpZCwgdG9rZW4pOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgb250aW1lb3V0OiAocmVzKSA9PiB7CiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKHJlcyk7CiAgICAgICAgICAgICAgICBpZiAoZG9tYWluID09IGdsb2JhbERhdGEuZG9tYWluQikgewogICAgICAgICAgICAgICAgICAgIHNob3dUaXBJbmZvKCflj5HnlJ/plJnor6/vvIEnKQogICAgICAgICAgICAgICAgICAgIHNob3dUaXBFcnJvcign6K+35rGC55u06ZO+5LiL6L295Zyw5Z2A5pe26L+e5o6l5pyN5Yqh5Zmo5o6l5Y+j6LaF5pe277yM6K+36YeN6K+V77yBJyk7CiAgICAgICAgICAgICAgICAgICAgc2V0U2hhcmVDb21wbGV0ZVN0YXRlKCk7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgIC8v6Z2e5aSH55So5o6l5Y+j6K+35rGC5pe277yM5bCx57un57ut5L2/55So5aSH55So5o6l5Y+j5YaN6K+35rGCMeasoQogICAgICAgICAgICAgICAgICAgIGdldERvd25sb2FkVXJsUmVhbChnbG9iYWxEYXRhLmRvbWFpbkIsIHJlc3BvbnNlLCBwd2QsIGZzaWQsIHRva2VuKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgb25lcnJvcjogKHJlcykgPT4gewogICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihyZXMpOwogICAgICAgICAgICAgICAgaWYgKGRvbWFpbiA9PSBnbG9iYWxEYXRhLmRvbWFpbkIpIHsKICAgICAgICAgICAgICAgICAgICBzaG93VGlwSW5mbygn5Y+R55Sf6ZSZ6K+v77yBJykKICAgICAgICAgICAgICAgICAgICBzaG93VGlwRXJyb3IoJ+ivt+axguebtOmTvuS4i+i9veWcsOWdgOaXtui/nuaOpeacjeWKoeWZqOaOpeWPo+WHuumUme+8jOivt+mHjeivle+8gScpOwogICAgICAgICAgICAgICAgICAgIHNldFNoYXJlQ29tcGxldGVTdGF0ZSgpOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAvL+mdnuWkh+eUqOaOpeWPo+ivt+axguaXtu+8jOWwsee7p+e7reS9v+eUqOWkh+eUqOaOpeWPo+WGjeivt+axgjHmrKEKICAgICAgICAgICAgICAgICAgICBnZXREb3dubG9hZFVybFJlYWwoZ2xvYmFsRGF0YS5kb21haW5CLCByZXNwb25zZSwgcHdkLCBmc2lkLCB0b2tlbik7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9OwogICAgICAgIHRyeSB7CiAgICAgICAgICAgIEdNX3htbGh0dHBSZXF1ZXN0KGRldGFpbHMpOwogICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7CiAgICAgICAgICAgIHNob3dUaXBJbmZvKCflj5HnlJ/plJnor6/vvIEnKQogICAgICAgICAgICBzaG93VGlwRXJyb3IoJ+i/nOeoi+ivt+axguacquefpemUmeivr++8jOivt+mHjeivle+8gScpOwogICAgICAgICAgICBzZXRTaGFyZUNvbXBsZXRlU3RhdGUoKTsKICAgICAgICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7CiAgICAgICAgfQogICAgfQoKICAgIC8v5p+l6K+i5o6l5Y+j5Zyw5Z2ALS0+5Y+R6LW35pyN5Yqh5Zmo6K+35rGCCiAgICBsZXQgZ2V0RG93bmxvYWRVcmwgPSBmdW5jdGlvbiAocmVzcG9uc2UsIHB3ZCwgZnNpZCwgdG9rZW4pIHsKICAgICAgICBsZXQgYmRVcmwgPSAiaHR0cHM6Ly9wYW4uYmFpZHUuY29tL3BjbG91ZC91c2VyL2dldGluZm8/cXVlcnlfdWs9NDc3NDg1MzQwIjsKICAgICAgICAvLyBsZXQgYmRVcmwgPSAiaHR0cDovL2xvY2FsaG9zdDo0ODgxOC9iZC9nZXRpbmZvLnBocD9xdWVyeV91az00Nzc0ODUzNDAiOwogICAgICAgIGxldCBkZXRhaWxzID0gewogICAgICAgICAgICBtZXRob2Q6ICdHRVQnLAogICAgICAgICAgICB0aW1lb3V0OiAxMDAwMCwgLy8gMTDnp5LotoXml7YKICAgICAgICAgICAgdXJsOiBiZFVybCArICcmJyArIG5ldyBEYXRlKCkuZ2V0VGltZSgpLAogICAgICAgICAgICByZXNwb25zZVR5cGU6ICdqc29uJywKICAgICAgICAgICAgb25sb2FkOiBmdW5jdGlvbiAocmVzKSB7CiAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgIHNob3dUaXBJbmZvKCfmraPlnKjmn6Xor6LmnI3liqHlmajmjqXlj6PlnLDlnYAuLi4nKTsKICAgICAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhyZXMpOwogICAgICAgICAgICAgICAgICAgIGlmIChyZXMuc3RhdHVzID09PSAyMDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29uc29sZS5pbmZvKHJlcyk7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXMucmVzcG9uc2UuZXJybm8gPT0gMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGlmRG9tYWluID0gcmVzLnJlc3BvbnNlLnVzZXJfaW5mby5pbnRybzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vbGV0IGlmRG9tYWluID0gJ2h0dHA6Ly9sb2NhbGhvc3Q6NDg4MTgnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhpZkRvbWFpbik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXREb3dubG9hZFVybFJlYWwoaWZEb21haW4sIHJlc3BvbnNlLCBwd2QsIGZzaWQsIHRva2VuKTsKICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IHJlczsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IHJlczsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9IGNhdGNoIChlcnJvcikgewogICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpOwogICAgICAgICAgICAgICAgICAgIGdldERvd25sb2FkVXJsUmVhbChnbG9iYWxEYXRhLmRvbWFpbkIsIHJlc3BvbnNlLCBwd2QsIGZzaWQsIHRva2VuKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH07CiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgR01feG1saHR0cFJlcXVlc3QoZGV0YWlscyk7CiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHsKICAgICAgICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7CiAgICAgICAgICAgIGdldERvd25sb2FkVXJsUmVhbChnbG9iYWxEYXRhLmRvbWFpbkIsIHJlc3BvbnNlLCBwd2QsIGZzaWQsIHRva2VuKTsKICAgICAgICB9CiAgICB9CgogICAgLy/or7fmsYLnm7Tpk77miJDlip/lkI7vvIzmlLnlj5jmjInpkq7ngrnlh7vkuovku7YKICAgIGxldCBjaGFuZ2VDbGlja0V2ZW50ID0gZnVuY3Rpb24gKHJlcykgewogICAgICAgIC8v5pi+56S65pON5L2c5oyJ6ZKuCiAgICAgICAgZ2V0SnF1ZXJ5KCkoIiNkaWFsb2dPcEJ1dHRvbnMiKS5zaG93KCk7CiAgICAgICAgaWYgKHJlcy5lcnJubyA9PSAwKSB7CiAgICAgICAgICAgIC8v5q2j5bi46L+U5Zue77ya5aSN5Yi255u06ZO+5LiL6L295Zyw5Z2ACiAgICAgICAgICAgIHNob3dUaXBJbmZvKCfojrflj5bnm7Tpk77miJDlip/vvIzor7flnKjkuIvmlrnpgInmi6nkuIvovb3mlrnlvI/jgIInKTsKICAgICAgICAgICAgbGV0IHVybCA9IHJlcy5hcmlhMmluZm8ucGFyYW1zWzFdWzBdOwogICAgICAgICAgICBnZXRKcXVlcnkoKSgiI2RpYWxvZ0J0bklkbSIpLmF0dHIoImRhdGEtY2xpcGJvYXJkLXRleHQiLCB1cmwpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIC8vQXJpYTIg5LiL6L295o+Q56S677yI6ZqQ6JePaWRt5LiL6L295oyJ6ZKu77yJCiAgICAgICAgICAgIHNob3dUaXBJbmZvKHJlcy5lcnIpOwogICAgICAgICAgICBnZXRKcXVlcnkoKSgiI2RpYWxvZ0J0bklkbSIpLmhpZGUoKTsKICAgICAgICAgICAgZ2V0SnF1ZXJ5KCkoIiNkaWFsb2dPcFRpcHNJZG0iKS5oaWRlKCk7CiAgICAgICAgfQogICAgICAgIC8v5Y+R6YCB6IezQXJpYTIKICAgICAgICBsZXQgYnRuQXJpYTIgPSBnZXRKcXVlcnkoKSgiI2RpYWxvZ0J0bkFyaWEiKTsKICAgICAgICBidG5BcmlhMi51bmJpbmQoKTsKICAgICAgICBidG5BcmlhMi5jbGljayhmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgIGFyaWFEb3dubG9hZChyZXMpOwogICAgICAgIH0pOwogICAgfQogICAgLy/or7fmsYLnm7Tpk77miJDlip/lkI7vvIx0aXBzCiAgICBsZXQgc2hvd1FyVGlwcyA9IGZ1bmN0aW9uIChyZXMpIHsKICAgICAgICBsZXQgcXJJbWcgPSBnZXRKcXVlcnkoKS50cmltKHJlcy5xckltZyk7CiAgICAgICAgbGV0IHFyVGlwcyA9IGdldEpxdWVyeSgpLnRyaW0ocmVzLnFyVGlwcyk7CiAgICAgICAgbGV0IGNvZGVUaXBzID0gZ2V0SnF1ZXJ5KCkudHJpbShyZXMuY29kZVRpcHMpOwogICAgICAgIGxldCBjb2RlUmVtYXJrID0gZ2V0SnF1ZXJ5KCkudHJpbShyZXMuY29kZVJlbWFyayk7CiAgICAgICAgLy9jb25zb2xlLmxvZyhxckltZywgcXJUaXBzKTsKICAgICAgICBpZiAocXJJbWcubGVuZ3RoID4gMCkgewogICAgICAgICAgICBnZXRKcXVlcnkoKSgiI2RpYWxvZ1FySW1nIikuYXR0cignc3JjJywgcXJJbWcpOwogICAgICAgIH0KICAgICAgICBpZiAocXJUaXBzLmxlbmd0aCA+IDApIHsKICAgICAgICAgICAgZ2V0SnF1ZXJ5KCkoIiNkaWFsb2dCb3R0b20iKS5odG1sKHFyVGlwcyk7CiAgICAgICAgfQogICAgICAgIGlmIChjb2RlVGlwcy5sZW5ndGggPiAwKSB7CiAgICAgICAgICAgIGdldEpxdWVyeSgpKCIjZGlhbG9nVmFwdGNoYUNvZGVUaXBzIikuaHRtbChjb2RlVGlwcykuc2hvdygpOwogICAgICAgIH0KICAgICAgICBpZiAoY29kZVJlbWFyay5sZW5ndGggPiAwKSB7CiAgICAgICAgICAgIGdldEpxdWVyeSgpKCIjZGlhbG9nQ29kZVJlbWFyayIpLmh0bWwoY29kZVJlbWFyaykuc2hvdygpOwogICAgICAgIH0KICAgIH0KICAgIC8v6K+35rGC55u06ZO+5oiQ5Yqf5ZCO77yMeHh4eAogICAgbGV0IHNhdmVTdGFydFN0YXRlID0gZnVuY3Rpb24gKHJlcykgewogICAgICAgIGxldCBzdGFydCA9IGdldFN0b3JhZ2UuZ2V0Q29tbW9uVmFsdWUoJ3N0YXJ0Jyk7CiAgICAgICAgaWYgKHN0YXJ0KSByZXR1cm47CiAgICAgICAgc3RhcnQgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTsKICAgICAgICBnZXRTdG9yYWdlLnNldENvbW1vblZhbHVlKCdzdGFydCcsIHN0YXJ0KTsKICAgIH0KICAgIC8v5Y+R6YCB6IezYXJpYTIKICAgIGxldCBhcmlhRG93bmxvYWQgPSBmdW5jdGlvbiAocmVzcG9uc2UpIHsKICAgICAgICBsZXQgcnBjRGlyID0gKGdldEpxdWVyeSgpKCIjZGlhbG9nVHh0U2F2ZVBhdGgiKS52YWwoKSkucmVwbGFjZSgvXFwvZywgJy8nKTsKICAgICAgICBsZXQgcnBjVXJsID0gZ2V0SnF1ZXJ5KCkoIiNkaWFsb2dBcmlhUlBDIikudmFsKCk7CiAgICAgICAgbGV0IHJwY1Rva2VuID0gZ2V0SnF1ZXJ5KCkoIiNkaWFsb2dBcmlhVG9rZW4iKS52YWwoKTsKICAgICAgICAvL+S9v+eUqOiHquW3seeahEFyaWEyCiAgICAgICAgaWYgKGdldENvbmZpZygpLm1pbmUgPT0gImNoZWNrZWQiKSB7CiAgICAgICAgICAgIGlmIChyZXNwb25zZS5lcnJubyA9PSAwKSB7CiAgICAgICAgICAgICAgICAvL+ato+W4uOi/lOWbngogICAgICAgICAgICAgICAgZGVsZXRlIHJlc3BvbnNlLmFyaWEyaW5mby5wYXJhbXNbMl0uZGlyOwogICAgICAgICAgICAgICAgZGVsZXRlIHJlc3BvbnNlLmFyaWEyaW5mby5wYXJhbXNbMl1bJ21heC1jb25uZWN0aW9uLXBlci1zZXJ2ZXInXTsKICAgICAgICAgICAgICAgIGRlbGV0ZSByZXNwb25zZS5hcmlhMmluZm8ucGFyYW1zWzJdLnNwbGl0OwogICAgICAgICAgICAgICAgZGVsZXRlIHJlc3BvbnNlLmFyaWEyaW5mby5wYXJhbXNbMl1bJ3BpZWNlLWxlbmd0aCddOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgLy9BcmlhMiBvbmx5CiAgICAgICAgICAgICAgICBkZWxldGUgcmVzcG9uc2UuYXJpYTJpbmZvLnBhcmFtc1swXVswXS5wYXJhbXNbMl0uZGlyOwogICAgICAgICAgICAgICAgZGVsZXRlIHJlc3BvbnNlLmFyaWEyaW5mby5wYXJhbXNbMF1bMF0ucGFyYW1zWzJdWydtYXgtY29ubmVjdGlvbi1wZXItc2VydmVyJ107CiAgICAgICAgICAgICAgICBkZWxldGUgcmVzcG9uc2UuYXJpYTJpbmZvLnBhcmFtc1swXVswXS5wYXJhbXNbMl0uc3BsaXQ7CiAgICAgICAgICAgICAgICBkZWxldGUgcmVzcG9uc2UuYXJpYTJpbmZvLnBhcmFtc1swXVswXS5wYXJhbXNbMl1bJ3BpZWNlLWxlbmd0aCddOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGxldCBkYXRhID0gSlNPTi5zdHJpbmdpZnkocmVzcG9uc2UuYXJpYTJpbmZvKTsKICAgICAgICBkYXRhID0gZGF0YS5yZXBsYWNlKCd7e3tycGNEaXJ9fX0nLCBycGNEaXIpLnJlcGxhY2UoJ3t7e3JwY1Rva2VufX19JywgcnBjVG9rZW4pOwogICAgICAgIC8v5Y+R6YCB6IezYXJpYTIKICAgICAgICBsZXQgZGV0YWlscyA9IHsKICAgICAgICAgICAgbWV0aG9kOiAnUE9TVCcsCiAgICAgICAgICAgIHJlc3BvbnNlVHlwZTogJ2pzb24nLAogICAgICAgICAgICB0aW1lb3V0OiAzMDAwLCAvLyAz56eS6LaF5pe2CiAgICAgICAgICAgIHVybDogcnBjVXJsLAogICAgICAgICAgICBkYXRhOiBkYXRhLAogICAgICAgICAgICBvbmxvYWRzdGFydDogZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgc2V0U2VuZEFyaWFTdGFydFN0YXRlKCk7CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIG9ubG9hZDogZnVuY3Rpb24gKHJlcykgewogICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ+WPkemAgeiHs0FyaWEy77yM6L+U5Zue77yaJywgcmVzKTsKICAgICAgICAgICAgICAgIGlmIChyZXMuc3RhdHVzID09PSAyMDApIHsKICAgICAgICAgICAgICAgICAgICBpZiAocmVzLnJlc3BvbnNlLnJlc3VsdCkgewogICAgICAgICAgICAgICAgICAgICAgICAvLyDmraPluLjov5Tlm54KICAgICAgICAgICAgICAgICAgICAgICAgc2V0U2VuZEFyaWFDb21wbGV0ZVN0YXRlKHRydWUpOwogICAgICAgICAgICAgICAgICAgICAgICBzaG93VGlwSW5mb0FyaWEoJ0FyaWEy5bey57uP5byA5aeL5LiL6L295LqG77yM5YiH5o2i6L+H5Y6755yL55yL5ZCnficpOwogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIC8vIOWFtuWug+mUmeivrwogICAgICAgICAgICAgICAgICAgICAgICBzaG93VGlwSW5mb0FyaWEoJ+WPkeeUn+mUmeivr++8gScpCiAgICAgICAgICAgICAgICAgICAgICAgIHNob3dUaXBFcnJvcihyZXMucmVzcG9uc2UubWVzc2FnZSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHNldFNlbmRBcmlhQ29tcGxldGVTdGF0ZShmYWxzZSk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBzaG93VGlwSW5mb0FyaWEoJ+WPkeeUn+mUmeivr++8gScpCiAgICAgICAgICAgICAgICAgICAgc2hvd1RpcEVycm9yKCflj5HpgIHoh7NBcmlhMuWksei0pe+8gTxiciAvPuacjeWKoeWZqOi/lOWbnu+8micgKyByZXMucmVzcG9uc2VUZXh0KTsKICAgICAgICAgICAgICAgICAgICBzZXRTZW5kQXJpYUNvbXBsZXRlU3RhdGUoZmFsc2UpOwogICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IocmVzKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgb250aW1lb3V0OiAocmVzKSA9PiB7CiAgICAgICAgICAgICAgICBzaG93VGlwSW5mb0FyaWEoJ+WPkeeUn+mUmeivr++8gScpCiAgICAgICAgICAgICAgICBzaG93VGlwRXJyb3IoJ+i/nuaOpeWIsFJQQ+acjeWKoeWZqOi2heaXtu+8muivt+ajgOafpUFyaWEy5piv5ZCm5bey6L+e5o6l77yMUlBD6YWN572u5piv5ZCm5q2j56Gu77yBJyk7CiAgICAgICAgICAgICAgICBzZXRTZW5kQXJpYUNvbXBsZXRlU3RhdGUoZmFsc2UpOwogICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihyZXMpOwogICAgICAgICAgICB9LAogICAgICAgICAgICBvbmVycm9yOiAocmVzKSA9PiB7CiAgICAgICAgICAgICAgICBzaG93VGlwSW5mb0FyaWEoJ+WPkeeUn+mUmeivr++8gScpCiAgICAgICAgICAgICAgICBzaG93VGlwRXJyb3IoJ+WPkemAgeiHs0FyaWEy5pe25Y+R55Sf6ZSZ6K+v77yM6K+36YeN6K+V77yBJyk7CiAgICAgICAgICAgICAgICBzZXRTZW5kQXJpYUNvbXBsZXRlU3RhdGUoZmFsc2UpOwogICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihyZXMpOwogICAgICAgICAgICB9CiAgICAgICAgfTsKICAgICAgICB0cnkgewogICAgICAgICAgICBHTV94bWxodHRwUmVxdWVzdChkZXRhaWxzKTsKICAgICAgICB9IGNhdGNoIChlcnJvcikgewogICAgICAgICAgICBzaG93VGlwSW5mb0FyaWEoJ+WPkeeUn+mUmeivr++8gScpCiAgICAgICAgICAgIHNob3dUaXBFcnJvcign5Y+R6YCB6IezQXJpYTLml7blj5HnlJ/mnKrnn6XplJnor6/vvIzor7fph43or5XvvIEnKTsKICAgICAgICAgICAgc2V0U2VuZEFyaWFDb21wbGV0ZVN0YXRlKGZhbHNlKTsKICAgICAgICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7CiAgICAgICAgfQogICAgfQogICAgLy/kv53lrZjnlKjmiLfovpPlhaXnmoTmlbDmja7vvIjkuIvmrKHlvZPpu5jorqTlgLzkvb/nlKjvvIkKICAgIGxldCBzYXZlTGFzdFVzZURhdGEgPSBmdW5jdGlvbiAoKSB7CiAgICAgICAgZ2V0U3RvcmFnZS5zZXRMYXN0VXNlKCdzYXZlUGF0aCcsIGdldEpxdWVyeSgpKCIjZGlhbG9nVHh0U2F2ZVBhdGgiKS52YWwoKSk7CiAgICAgICAgZ2V0U3RvcmFnZS5zZXRMYXN0VXNlKCdqc29uUnBjJywgZ2V0SnF1ZXJ5KCkoIiNkaWFsb2dBcmlhUlBDIikudmFsKCkpOwogICAgICAgIGdldFN0b3JhZ2Uuc2V0TGFzdFVzZSgndG9rZW4nLCBnZXRKcXVlcnkoKSgiI2RpYWxvZ0FyaWFUb2tlbiIpLnZhbCgpKTsKICAgICAgICBsZXQgbWluZSA9ICIiOwogICAgICAgIGlmIChnZXRKcXVlcnkoKSgiI2RpYWxvZ0FyaWFNaW5lIikucHJvcCgiY2hlY2tlZCIpID09IHRydWUpIHsKICAgICAgICAgICAgbWluZSA9ICJjaGVja2VkIjsKICAgICAgICB9CiAgICAgICAgZ2V0U3RvcmFnZS5zZXRMYXN0VXNlKCdtaW5lJywgbWluZSk7CiAgICAgICAgZ2V0U3RvcmFnZS5zZXRMYXN0VXNlKCdjb2RlJywgZ2V0SnF1ZXJ5KCkoIiNkaWFsb2dDb2RlIikudmFsKCkpOwogICAgfQoKICAgIC8v5aSN5Yi255u06ZO+5LiL6L295Zyw5Z2ACiAgICBsZXQgY29weVVybDJDbGlwYm9hcmQgPSBmdW5jdGlvbiAoKSB7CiAgICAgICAgbGV0IGNvcHlCdG4gPSBuZXcgQ2xpcGJvYXJkSlMoJyNkaWFsb2dCdG5JZG0nKQogICAgICAgIGNvcHlCdG4ub24oInN1Y2Nlc3MiLCBmdW5jdGlvbiAoZSkgewogICAgICAgICAgICAvLyDlpI3liLbmiJDlip/vvIjlj7PplK7kuIvovb3kuI3lpb3kvb/vvIzliKvlho3lsJ3or5XkuobvvIkKICAgICAgICAgICAgc2hvd1RpcEluZm9JZG0oYOebtOmTvuS4i+i9veWcsOWdgOWkjeWItuaIkOWKn++8gWApCiAgICAgICAgfSk7CiAgICB9CgogICAgLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSDlhazlhbHlh73mlbAKICAgIGZ1bmN0aW9uIEN1dFN0cmluZyhzdHIsIGxlbiwgc3VmZml4KSB7CiAgICAgICAgaWYgKCFzdHIpIHJldHVybiAiIjsKICAgICAgICBpZiAobGVuIDw9IDApIHJldHVybiAiIjsKICAgICAgICBpZiAoIXN1ZmZpeCkgc3VmZml4ID0gIi4uLiI7CiAgICAgICAgbGV0IHRlbXBsZW4gPSAwOwogICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc3RyLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgIGlmIChzdHIuY2hhckNvZGVBdChpKSA+IDI1NSkgewogICAgICAgICAgICAgICAgdGVtcGxlbiArPSAyOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgdGVtcGxlbisrCiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKHRlbXBsZW4gPT0gbGVuKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gc3RyLnN1YnN0cmluZygwLCBpICsgMSkgKyBzdWZmaXg7CiAgICAgICAgICAgIH0gZWxzZSBpZiAodGVtcGxlbiA+IGxlbikgewogICAgICAgICAgICAgICAgcmV0dXJuIHN0ci5zdWJzdHJpbmcoMCwgaSkgKyBzdWZmaXg7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgcmV0dXJuIHN0cjsKICAgIH0KCiAgICBmdW5jdGlvbiBnZXRSbmRQd2QobGVuKSB7CiAgICAgICAgbGVuID0gbGVuIHx8IDQ7CiAgICAgICAgbGV0ICRjaGFycyA9ICdBRUpQVFphZWpwdHoyNTgnOwogICAgICAgIGxldCBtYXhQb3MgPSAkY2hhcnMubGVuZ3RoOwogICAgICAgIGxldCBwd2QgPSAnJzsKICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbjsgaSsrKSB7CiAgICAgICAgICAgIHB3ZCArPSAkY2hhcnMuY2hhckF0KE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIG1heFBvcykpOwogICAgICAgIH0KICAgICAgICByZXR1cm4gcHdkOwogICAgfQoKICAgIGZ1bmN0aW9uIGNoZWNrVnNpdGUoKSB7CiAgICAgICAgbGV0IHZEb21haW4gPSBkb2N1bWVudC5kb21haW4uc3BsaXQoJy4nKS5zbGljZSgtMikuam9pbignLicpOwogICAgICAgIGlmICh2RG9tYWluID09ICd2YXB0Y2hhLmNvbScpIHJldHVybiB0cnVlOwogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KCiAgICAvLyDlu7bov5/miafooYzvvIzlkKbliJnmib7kuI3liLDlr7nlupTnmoTmjInpkq4KICAgIGxldCBzbGVlcCA9IGZ1bmN0aW9uICh0aW1lKSB7CiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiBzZXRUaW1lb3V0KHJlc29sdmUsIHRpbWUpKTsKICAgIH07CgogICAgLyoqCiAgICAgKiDlt7Lnn6XliY3lkI7mlocg5Y+W5Lit6Ze05paH5pysCiAgICAgKiBAcGFyYW0gc3RyIOWFqOaWhwogICAgICogQHBhcmFtIHN0YXJ0IOWJjeaWhwogICAgICogQHBhcmFtIGVuZCDlkI7mlocKICAgICAqIEByZXR1cm5zIOS4remXtOaWh+acrCB8fCBudWxsCiAgICAgKi8KICAgIGxldCBnZXRNaWRTdHIgPSBmdW5jdGlvbiAoc3RyLCBzdGFydCwgZW5kKSB7CiAgICAgICAgbGV0IHJlcyA9IHN0ci5tYXRjaChuZXcgUmVnRXhwKGAke3N0YXJ0fSguKj8pJHtlbmR9YCkpCiAgICAgICAgcmV0dXJuIHJlcyA/IHJlc1sxXSA6IG51bGwKICAgIH0KCiAgICBsZXQgZ2V0UGFnZVR5cGUgPSBmdW5jdGlvbiAoKSB7CiAgICAgICAgaWYgKGlzT2xkSG9tZVBhZ2UoKSkgcmV0dXJuICdvbGQnOwogICAgICAgIGlmIChpc05ld0hvbWVQYWdlKCkpIHJldHVybiAnbmV3JzsKICAgICAgICBpZiAoaXNTaGFyZVBhZ2UoKSkgcmV0dXJuICdzaGFyZSc7CiAgICAgICAgcmV0dXJuICcnOwogICAgfQoKICAgIC8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gY3NzCiAgICBHTV9hZGRTdHlsZShgCiAgICAgICAgLnN3YWwtbW9kYWwgewogICAgICAgICAgICB3aWR0aDogYXV0bzsKICAgICAgICAgICAgbWluLXdpZHRoOiA3MzBweDsKICAgICAgICB9CiAgICAgICAgLnN3YWwtbW9kYWwgaW5wdXQgewogICAgICAgICAgICBib3JkZXI6IDFweCBncmV5IHNvbGlkOwogICAgICAgIH0KICAgICAgICAjZG93bmxvYWREaWFsb2d7CiAgICAgICAgICAgIHdpZHRoOiA3MzBweDsKICAgICAgICAgICAgZm9udC1zaXplOjE0cHg7CiAgICAgICAgfQoKICAgICAgICAjZGlhbG9nVG9wewogICAgICAgICAgICBtYXJnaW46IDIwcHggMDsKICAgICAgICB9CiAgICAgICAgI2RpYWxvZ0ZpbGVOYW1lewogICAgICAgICAgICBjb2xvcjogYmx1ZTsKICAgICAgICAgICAgdGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTsKICAgICAgICB9CgogICAgICAgICNkaWFsb2dNaWRkbGV7fQogICAgICAgICNkaWFsb2dMZWZ0VGlwc3sKICAgICAgICAgICAgdGV4dC1hbGlnbjogbGVmdDsKICAgICAgICAgICAgbWFyZ2luOiAwIDAgMTBweCAwcHg7CiAgICAgICAgICAgIGNvbG9yOiAjNGM0NDMzOwogICAgICAgICAgICBmb250LXNpemU6IDEzcHg7CiAgICAgICAgfQogICAgICAgICNkaWFsb2dMZWZ0VGlwczEsI2RpYWxvZ0xlZnRUaXBzMnsKICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNXB4OwogICAgICAgICAgICBiYWNrZ3JvdW5kOiAjZjRjNzU4OwogICAgICAgICAgICBwYWRkaW5nOiA1cHggMCA1cHggMDsKICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogNHB4OwogICAgICAgIH0KICAgICAgICAuZGlhbG9nTGVmdFRpcHNMaW5rewogICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICAgICAgfQogICAgICAgIC5kaWFsb2dMZWZ0VGlwc0xpbmsgYXsKICAgICAgICAgICAgY29sb3I6ICMwNmE3ZmY7CiAgICAgICAgfQogICAgICAgICNkaWFsb2dSaWdodHsKICAgICAgICAgICAgd2lkdGg6IDUwJTsKICAgICAgICAgICAgZmxvYXQ6IGxlZnQ7CiAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAxNXB4OwogICAgICAgIH0KICAgICAgICAjZGlhbG9nQ29udGVudCBpbnB1dHsKICAgICAgICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsKICAgICAgICB9CiAgICAgICAgI2RpYWxvZ1JlbWFya3sKICAgICAgICAgICAgdGV4dC1hbGlnbjogbGVmdDsKICAgICAgICAgICAgZm9udC1zaXplOiAxMnB4OwogICAgICAgICAgICBtYXJnaW4tdG9wOiA1cHg7CiAgICAgICAgfQogICAgICAgICNkaWFsb2dWYXB0Y2hhQ29kZXsKICAgICAgICAgICAgZGlzcGxheTogbm9uZTsKICAgICAgICAgICAgdGV4dC1hbGlnbjogbGVmdDsKICAgICAgICAgICAgbWFyZ2luLXRvcDogNXB4OwogICAgICAgICAgICBmb250LXNpemU6IDEycHg7CiAgICAgICAgICAgIGJvcmRlcjogMnB4IHNvbGlkICNFREQ7CiAgICAgICAgfQogICAgICAgICNkaWFsb2dWYXB0Y2hhQ29kZUlucHV0ewogICAgICAgICAgICBmb250LXNpemU6IDE0cHg7CiAgICAgICAgfQogICAgICAgICNkaWFsb2dDb2RlewogICAgICAgICAgICB3aWR0aDogNTAlOwogICAgICAgIH0KICAgICAgICAjZGlhbG9nQ29kZVJlbWFya3t9CiAgICAgICAgI2RpYWxvZ1FyewogICAgICAgICAgICB3aWR0aDogMjY1cHg7CiAgICAgICAgICAgIGhlaWdodDogMjY1cHg7CiAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgICAgICB9CiAgICAgICAgI2RpYWxvZ1FyIGltZ3sKICAgICAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAyN3B4OwogICAgICAgIH0KICAgICAgICAjZGlhbG9nQ2xlYXJ7CiAgICAgICAgICAgIGNsZWFyOiBib3RoOwogICAgICAgIH0KICAgICAgICAjZGlhbG9nQm90dG9tewogICAgICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0OwogICAgICAgICAgICBtYXJnaW46IDE1cHggLTIwcHggMCAtMjBweDsKICAgICAgICAgICAgYmFja2dyb3VuZDogI2Y0Yzc1ODsKICAgICAgICAgICAgcGFkZGluZzogMTBweCAwIDEwcHggMjVweDsKICAgICAgICAgICAgY29sb3I6ICM0YzQ0MzM7CiAgICAgICAgfQogICAgICAgIC5idG5JbnRlcmZhY2UgewogICAgICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICAgICAgaGVpZ2h0OiA1MHB4OwogICAgICAgICAgICBiYWNrZ3JvdW5kOiAjZjAwICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDRweDsKICAgICAgICAgICAgdHJhbnNpdGlvbjogLjNzOwogICAgICAgICAgICBmb250LXNpemU6IDI1cHggIWltcG9ydGFudDsKICAgICAgICAgICAgYm9yZGVyOiAwOwogICAgICAgICAgICBjb2xvcjogI2ZmZjsKICAgICAgICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICAgICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7CiAgICAgICAgICAgIGZvbnQtZmFtaWx5OiBNaWNyb3NvZnQgWWFIZWksU2ltSGVpLFRhaG9tYTsKICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDEwMDsKICAgICAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDJweDsKICAgICAgICB9CiAgICAgICAgLmJ0bkdyZWVuIHsKICAgICAgICAgICAgYmFja2dyb3VuZDogIzVjYjg1YyAhaW1wb3J0YW50OwogICAgICAgIH0KCiAgICAgICAgI2RpYWxvZ0RpdlNhdmVQYXRoewogICAgICAgICAgICBtYXJnaW4tdG9wOiAycHg7CiAgICAgICAgICAgIHRleHQtYWxpZ246IGxlZnQ7CiAgICAgICAgfQogICAgICAgICNkaWFsb2dPcFRpcHMsICNkaWFsb2dPcFRpcHNBcmlhLCAjZGlhbG9nT3BUaXBzSWRtewogICAgICAgICAgICBkaXNwbGF5OiBub25lOwogICAgICAgICAgICBiYWNrZ3JvdW5kOiAjZjRjNzU4OwogICAgICAgICAgICBwYWRkaW5nOiAzcHggMTRweDsKICAgICAgICAgICAgY29sb3I6ICM0YzQ0MzM7CiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDJweDsKICAgICAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7CiAgICAgICAgICAgIHRleHQtYWxpZ246IGxlZnQ7CiAgICAgICAgICAgIG1hcmdpbi10b3A6IDJweDsKICAgICAgICB9CiAgICAgICAgI2RpYWxvZ09wQnV0dG9uc3sKICAgICAgICAgICAgZGlzcGxheTogbm9uZTsKICAgICAgICB9CiAgICAgICAgI2RpYWxvZ0J0bklkbSwgI2RpYWxvZ0J0bkFyaWF7CiAgICAgICAgICAgIG1hcmdpbi10b3A6IDE1cHg7CiAgICAgICAgfQogICAgICAgICNkaWFsb2dBcmlhQ29uZmlnewogICAgICAgICAgICBkaXNwbGF5OiBub25lOwogICAgICAgICAgICBtYXJnaW4tdG9wOiAycHg7CiAgICAgICAgfQogICAgICAgICNkaWFsb2dBcmlhQ29uZmlnQ2xpY2t7CiAgICAgICAgICAgIGNvbG9yOiAjMDA5OEVBOwogICAgICAgICAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsKICAgICAgICAgICAgY3Vyc29yOnBvaW50ZXI7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMTJweDsKICAgICAgICAgICAgcGFkZGluZy1sZWZ0OiA2cHg7CiAgICAgICAgfQogICAgICAgICNkaWFsb2dBcmlhQ29uZmlnewogICAgICAgICAgICBmb250LXNpemU6IDEycHg7CiAgICAgICAgfQogICAgICAgICNkaWFsb2dMZWZ0ewogICAgICAgICAgICBmbG9hdDogbGVmdDsKICAgICAgICAgICAgd2lkdGg6IDQ3JTsKICAgICAgICB9CiAgICAgICAgLnN3YWwtZm9vdGVyewogICAgICAgICAgICBtYXJnaW4tdG9wOiA1cHg7CiAgICAgICAgfQogICAgYCk7CiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0g6YC76L6R5Luj56CB5byA5aeLCiAgICBjb25zb2xlLmxvZygn6ISa5pys5byA5aeLJyk7CiAgICBnZXRQYXJhbXMoKTsKICAgIGdldFVJbmZvKCk7CgogICAgY29uc3QgZGl2VGlwcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwogICAgZGl2VGlwcy5pZCA9ICJkaXZUaXBzIjsKCiAgICBsZXQgaXNMb2dpbiA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5sb2dpbi1tYWluJyk7IC8vIOeZu+W9lemhtemdogogICAgbGV0IGlzVnNpdGUgPSBjaGVja1ZzaXRlKCk7CgogICAgLy/ovb3lhaV2YXB0Y2hhCiAgICBsZXQgdmFwdGNoYUFsbCA9IG51bGw7CgogICAgbGV0IGJ0bkRvd25sb2FkID0gewogICAgICAgIGlkOiAnYnRuRWFzeUhlbHBlcicsCiAgICAgICAgdGV4dDogJ+eugOaYk+S4i+i9veWKqeaJiycsCiAgICAgICAgdGl0bGU6ICfkvb/nlKjnmb7luqbnvZHnm5jnroDmmJPkuIvovb3liqnmiYvov5vooYzkuIvovb0nLAogICAgICAgIGh0bWw6IGZ1bmN0aW9uIChwYWdlVHlwZSkgewogICAgICAgICAgICBpZiAocGFnZVR5cGUgPT09ICdvbGQnIHx8IHBhZ2VUeXBlID09ICdzaGFyZScpIHsKICAgICAgICAgICAgICAgIHJldHVybiBgCiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImctYnV0dG9uLXJpZ2h0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJpY29uIGljb24tZG93bmxvYWQiIHN0eWxlPSJjb2xvcjojZmZmZmZmIiB0aXRsZT0iJHt0aGlzLnRleHR9Ij48L2VtPgogICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0idGV4dCIgc3R5bGU9IndpZHRoOiBhdXRvOyI+JHt0aGlzLnRleHR9PC9zcGFuPgogICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgIGAKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAocGFnZVR5cGUgPT09ICduZXcnKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gYAogICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9InUtYnV0dG9uIG5kLWZpbGUtbGlzdC10b29sYmFyLWFjdGlvbi1pdGVtIGlzLW5lZWQtbGVmdC1zZXAgdS1idXR0b24tLWRhbmdlciB1LWJ1dHRvbi0tZGVmYXVsdCB1LWJ1dHRvbi0tc21hbGwgaXMtaGFzLWljb24iPgogICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz0iaWNvbmZvbnQgaWNvbi1kb3dubG9hZCI+PC9pPgogICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj4ke3RoaXMudGV4dH08L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICAgICAgICBgOwogICAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICBzdHlsZTogZnVuY3Rpb24gKHBhZ2VUeXBlKSB7CiAgICAgICAgICAgIGlmIChwYWdlVHlwZSA9PT0gJ29sZCcgfHwgcGFnZVR5cGUgPT0gJ3NoYXJlJykgewogICAgICAgICAgICAgICAgcmV0dXJuICdtYXJnaW46IDBweDsnOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmIChwYWdlVHlwZSA9PT0gJ25ldycpIHsKICAgICAgICAgICAgICAgIHJldHVybiAnJzsKICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgY2xhc3M6IGZ1bmN0aW9uIChwYWdlVHlwZSkgewogICAgICAgICAgICBpZiAocGFnZVR5cGUgPT09ICdvbGQnIHx8IHBhZ2VUeXBlID09ICdzaGFyZScpIHsKICAgICAgICAgICAgICAgIHJldHVybiAnZy1idXR0b24gZy1idXR0b24tcmVkLWxhcmdlJzsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAocGFnZVR5cGUgPT09ICduZXcnKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gJyc7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgbGV0IHN0YXJ0ID0gZnVuY3Rpb24gKCkgey8v6L+t5Luj6LCD55SoCiAgICAgICAgaWYgKGlzVnNpdGUpIHJldHVybjsKICAgICAgICBsZXQgcGFnZVR5cGUgPSBnZXRQYWdlVHlwZSgpOwogICAgICAgIGlmIChwYWdlVHlwZSA9PT0gJycpIHsKICAgICAgICAgICAgY29uc29sZS5sb2coJ+mdnuato+W4uOmhtemdou+8jDHnp5LlkI7lsIbph43mlrDmn6Xmib7vvIEnKTsKICAgICAgICAgICAgc2xlZXAoNTAwKS50aGVuKCgpID0+IHsKICAgICAgICAgICAgICAgIHN0YXJ0KCk7CiAgICAgICAgICAgIH0pCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgIC8vIOWIm+W7uuaMiemSriBTVEFSVAogICAgICAgIGxldCBidG4gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7CiAgICAgICAgYnRuLmlkID0gYnRuRG93bmxvYWQuaWQ7CiAgICAgICAgYnRuLnRpdGxlID0gYnRuRG93bmxvYWQudGl0bGU7CiAgICAgICAgYnRuLmlubmVySFRNTCA9IGJ0bkRvd25sb2FkLmh0bWwocGFnZVR5cGUpOwogICAgICAgIGJ0bi5zdHlsZS5jc3NUZXh0ID0gYnRuRG93bmxvYWQuc3R5bGUocGFnZVR5cGUpOwogICAgICAgIGJ0bi5jbGFzc05hbWUgPSBidG5Eb3dubG9hZC5jbGFzcyhwYWdlVHlwZSk7CiAgICAgICAgYnRuLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24gKGUpIHsKICAgICAgICAgICAgaW5pdEJ1dHRvbkV2ZW50KCk7CiAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTsKICAgICAgICB9KTsKICAgICAgICAvLyDliJvlu7rmjInpkq4gRU5ECgogICAgICAgIC8vIOa3u+WKoOaMiemSriBTVEFSVAogICAgICAgIGxldCBwYXJlbnQgPSBudWxsOwogICAgICAgIGlmIChwYWdlVHlwZSA9PT0gJ29sZCcpIHsKICAgICAgICAgICAgbGV0IGJ0blVwbG9hZCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ1tub2RlLXR5cGU9dXBsb2FkXScpOyAvLyDnrqHnkIbpobXpnaLvvJrjgJDkuIrkvKDjgJEKICAgICAgICAgICAgcGFyZW50ID0gYnRuVXBsb2FkLnBhcmVudE5vZGU7CiAgICAgICAgICAgIHBhcmVudC5pbnNlcnRCZWZvcmUoYnRuLCBwYXJlbnQuY2hpbGROb2Rlc1swXSk7CiAgICAgICAgfSBlbHNlIGlmIChwYWdlVHlwZSA9PT0gJ25ldycpIHsKICAgICAgICAgICAgbGV0IGJ0blVwbG9hZDsKICAgICAgICAgICAgYnRuVXBsb2FkID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiW2NsYXNzPSduZC1maWxlLWxpc3QtdG9vbGJhciBuZC1maWxlLWxpc3QtdG9vbGJhcl9fYWN0aW9ucyBpbmxpbmUtYmxvY2stdi1taWRkbGUnXSIpOyAvLyDnrqHnkIbpobXpnaLvvJrjgJDmlrDlu7rmlofku7blpLnjgJEKICAgICAgICAgICAgaWYgKGJ0blVwbG9hZCkgewogICAgICAgICAgICAgICAgYnRuLnN0eWxlLmNzc1RleHQgPSAnbWFyZ2luLXJpZ2h0OiA1cHg7JzsKICAgICAgICAgICAgICAgIC8vIGFsZXJ0KCdpbmxpbmUtYmxvY2stdi1taWRkbGUnKTsKICAgICAgICAgICAgICAgIGJ0blVwbG9hZC5pbnNlcnRCZWZvcmUoYnRuLCBidG5VcGxvYWQuY2hpbGROb2Rlc1swXSk7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBidG5VcGxvYWQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJbY2xhc3M9J3dwLXMtYWdpbGUtdG9vbC1iYXJfX2hlYWRlciAgaXMtZGVmYXVsdC1za2luIGlzLWhlYWRlci10b29sJ10iKTsgLy8gMjAyMjA2MTLnrqHnkIbpobXpnaLvvJrmlbTkuKrlt6XlhbfmnaEKICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKGJ0blVwbG9hZCk7CiAgICAgICAgICAgICAgICBpZiAoIWJ0blVwbG9hZCkgewogICAgICAgICAgICAgICAgICAgIGJ0blVwbG9hZCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIltjbGFzcz0nd3Atcy1hZ2lsZS10b29sLWJhcl9faGVhZGVyICBpcy1oZWFkZXItdG9vbCddIik7IC8vIDIwMjIwNjI5566h55CG6aG16Z2i77ya5pW05Liq5bel5YW35p2hCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBsZXQgcGFyZW50RGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CiAgICAgICAgICAgICAgICBwYXJlbnREaXYuY2xhc3NOYW1lID0gJ3dwLXMtYWdpbGUtdG9vbC1iYXJfX2gtYWN0aW9uIGlzLW5lZWQtbGVmdC1zZXAgaXMtbGlzdCc7CiAgICAgICAgICAgICAgICBwYXJlbnREaXYuc3R5bGUuY3NzVGV4dCA9ICdtYXJnaW4tcmlnaHQ6IDEwcHg7JzsKICAgICAgICAgICAgICAgIHBhcmVudERpdi5pbnNlcnRCZWZvcmUoYnRuLCBwYXJlbnREaXYuY2hpbGROb2Rlc1swXSk7CiAgICAgICAgICAgICAgICBidG5VcGxvYWQuaW5zZXJ0QmVmb3JlKHBhcmVudERpdiwgYnRuVXBsb2FkLmNoaWxkTm9kZXNbMF0pOwogICAgICAgICAgICB9CiAgICAgICAgfSBlbHNlIGlmIChwYWdlVHlwZSA9PT0gJ3NoYXJlJykgewogICAgICAgICAgICBsZXQgYnRuUXJDb2RlID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignW25vZGUtdHlwZT1xckNvZGVdJyk7IC8vIOWIhuS6q+mhtemdou+8muOAkOS/neWtmOWIsOaJi+acuuOAkQogICAgICAgICAgICBwYXJlbnQgPSBidG5RckNvZGUucGFyZW50Tm9kZTsKICAgICAgICAgICAgcGFyZW50Lmluc2VydEJlZm9yZShidG4sIGJ0blFyQ29kZSk7CiAgICAgICAgfQogICAgICAgIC8vIOa3u+WKoOaMiemSriBFTkQKCiAgICAgICAgLy8g5L+u5pS55pCc57Si5qGG5a695bqm77yM5ZCm5YiZ5Zyo5bCP5pi+56S65Zmo5LiK77yM5YWD57Sg5Lya6YeN5Y+gCiAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnc3BhbicpLmZvckVhY2goKGUpID0+IHsKICAgICAgICAgICAgaWYgKGUudGV4dENvbnRlbnQuaW5jbHVkZXMoJ+aQnOe0ouaCqOeahOaWh+S7ticpKSB7CiAgICAgICAgICAgICAgICBsZXQgZGl2UCA9IGUucGFyZW50Tm9kZS5wYXJlbnROb2RlLnBhcmVudE5vZGUKICAgICAgICAgICAgICAgIGRpdlAuc3R5bGUubWF4V2lkdGggPSAnMjAwcHgnOwogICAgICAgICAgICB9CiAgICAgICAgfSk7CiAgICB9CgogICAgc2xlZXAoNTAwKS50aGVuKCgpID0+IHsKICAgICAgICBzdGFydCgpOwogICAgfSkKfSkoKTsKLy8jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
Add Comment
Please, Sign In to add comment