{"id":6374,"date":"2026-07-10T15:46:00","date_gmt":"2026-07-10T15:46:00","guid":{"rendered":"https:\/\/allenglish4u.com\/celpip-set-8-test-2-speaking\/"},"modified":"2026-07-12T03:16:21","modified_gmt":"2026-07-12T03:16:21","slug":"celpip-set-8-test-2-speaking","status":"publish","type":"page","link":"https:\/\/allenglish4u.com\/vi\/celpip-set-8-test-2-speaking\/","title":{"rendered":"CELPIP Speaking \u2014 Set 8 \u00b7 Practice Test 2"},"content":{"rendered":"<div id=\"clp-spk-root\" style=\"min-height:300px\">\n<p style=\"text-align:center;padding:40px 0;color:#888\">Loading CELPIP Speaking\u2026<\/p>\n<\/div>\n<p><script>eval(atob(\"d2luZG93LkNMUFNQS19EQVRBPXsic2V0Ijo4LCJ0ZXN0IjoyLCJ0aXRsZSI6IkNFTFBJUCBTcGVha2luZyBcdTIwMTQgU2V0IDggXHUwMGI3IFByYWN0aWNlIFRlc3QgMiIsImhlYWRlciI6IlByYWN0aWNlIFRlc3QgMiIsImltZ3MiOnsic2NlbmUiOiJodHRwczovL2FsbGVuZ2xpc2g0dS5jb20vd3AtY29udGVudC91cGxvYWRzLzIwMjYvMDcvczh0Mi1zY2VuZS5qcGciLCJvcHRBIjoiaHR0cHM6Ly9hbGxlbmdsaXNoNHUuY29tL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDI2LzA3L3M4dDItb3B0LWEuanBnIiwib3B0QiI6Imh0dHBzOi8vYWxsZW5nbGlzaDR1LmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAyNi8wNy9zOHQyLW9wdC1iLmpwZyIsIm9wdE90aGVyIjoiaHR0cHM6Ly9hbGxlbmdsaXNoNHUuY29tL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDI2LzA3L3M4dDItb3B0LW90aGVyLmpwZyIsInVudXN1YWwiOiJodHRwczovL2FsbGVuZ2xpc2g0dS5jb20vd3AtY29udGVudC91cGxvYWRzLzIwMjYvMDcvczh0Mi11bnVzdWFsLmpwZyJ9LCJvdGhlclVybCI6Ii9jZWxwaXAtc2V0LTgtdGVzdC0xLXNwZWFraW5nLyIsInRhc2tzIjpbeyJrIjoidyIsIm51bSI6MCwidHlwZUVuIjoiU3BlYWtpbmcgUHJhY3RpY2UgVGFzayIsInByZXAiOjMwLCJyZWMiOjYwLCJ3YXJtdXAiOnRydWUsInByb21wdCI6IlRhbGsgYWJvdXQgb25lIG9mIHlvdXIgYmVzdCBmcmllbmRzLiIsImltZyI6bnVsbCwidGlwcyI6eyJidWxsZXRzIjpbIlRoZSBQcmFjdGljZSBUYXNrICh3YXJtLXVwKSBpcyBOT1Qgc2NvcmVkIFx1MjAxNCBpdCBpcyBoZXJlIHRvIGhlbHAgeW91IGdldCB1c2VkIHRvIHRoZSBjb250cm9scyBhbmQgd2FybSB1cCB5b3VyIHZvaWNlLiIsIlNwZWFrIG5hdHVyYWxseSBhYm91dCBhIGJlc3QgZnJpZW5kOiB0aGVpciBuYW1lLCBob3cgeW91IG1ldCwgdGhlaXIgcGVyc29uYWxpdHksIGEgbWVtb3J5IHlvdSBzaGFyZS4iLCJVc2UgaXQgdG8gYWRqdXN0IHlvdXIgcG9zdHVyZSwgbWljcm9waG9uZSBkaXN0YW5jZSwgYW5kIHNwZWFraW5nIHBhY2UuIl0sInBocmFzZXMiOlsiTXkgYmVzdCBmcmllbmQncyBuYW1lIGlzXHUyMDI2IiwiV2UgbWV0IHdoZW5cdTIwMjYiLCJXaGF0IEkgbGlrZSBtb3N0IGFib3V0IGhpbS9oZXIgaXNcdTIwMjYiXX0sInM2IjpudWxsLCJzOSI6bnVsbH0seyJrIjoidDEiLCJudW0iOjEsInR5cGVFbiI6IkdpdmluZyBBZHZpY2UiLCJwcmVwIjozMCwicmVjIjo5MCwicHJvbXB0IjoiWW91ciBmcmllbmQgZG9lcyBub3QgbGlrZSB0byBzdHVkeSBpbiBoZXIgcm9vbSBiZWNhdXNlIHNoZSBzYXlzIGl0IGlzIG5vdCBjb21mb3J0YWJsZS4gU2hlIHdhbnRzIHRvIHJlYXJyYW5nZSB0aGUgcm9vbSBzbyB0aGF0IHNoZSBjYW4gc3R1ZHkgYmV0dGVyLiBHaXZlIGhlciBzb21lIGFkdmljZSBvbiBob3cgdG8gY3JlYXRlIGEgZ29vZCBzdHVkeSBzcGFjZS4iLCJpbWciOm51bGwsInRpcHMiOnsiYnVsbGV0cyI6WyJPcGVuaW5nOiBncmVldCB5b3VyIGZyaWVuZCBhbmQgcmVzdGF0ZSB0aGUgc2l0dWF0aW9uIGluIG9uZSBzZW50ZW5jZS4iLCJCb2R5OiBnaXZlIDJcdTIwMTMzIHBpZWNlcyBvZiBhZHZpY2UsIGVhY2ggd2l0aCBhIHJlYXNvbiBvciBleGFtcGxlIChGaXJzdFx1MjAyNiwgYmVjYXVzZVx1MjAyNjsgQW5vdGhlciBpZGVhIGlzXHUyMDI2KS4iLCJDbG9zaW5nOiBlbmNvdXJhZ2UgdGhlbSBhbmQgd2lzaCB0aGVtIGx1Y2suIiwiQ29uY3JldGUgcm9vbSBhZHZpY2U6IG1vdmUgdGhlIGRlc2sgdG8gdGhlIHdpbmRvdyBmb3IgbmF0dXJhbCBsaWdodCwgZ2V0IGEgcHJvcGVyIGNoYWlyIGFuZCBhIGRlc2sgbGFtcCwga2VlcCB0aGUgZGVzayBjbGVhciBvZiBjbHV0dGVyIHdpdGggc2hlbHZlcyBvciBvcmdhbml6ZXJzLCBwdXQgdGhlIHBob25lIG91dCBvZiByZWFjaCwgYW5kIHNlcGFyYXRlIHRoZSBzdHVkeSBjb3JuZXIgZnJvbSB0aGUgYmVkLiBXaXRoIDkwIHNlY29uZHMsIGFkZCBhIHBsYW50IGFuZCBhIHN0dWR5LWhvdXJzIHJvdXRpbmUuIl0sInBocmFzZXMiOlsiSWYgSSB3ZXJlIHlvdSwgSSdkXHUyMDI2IiwiWW91IHNob3VsZCBkZWZpbml0ZWx5XHUyMDI2IiwiQW5vdGhlciBvcHRpb24gaXMgdG9cdTIwMjYiLCJUcnVzdCBtZSwgeW91IHdvbid0IHJlZ3JldCBpdC4iXX0sInM2IjoiTmluYSwgSSBjYW4gZGVmaW5pdGVseSBoZWxwIFx1MjAxNCBJIGZpeGVkIG15IG93biByb29tIGxhc3QgeWVhciwgYW5kIG5vdyBJIGxvdmUgc3R1ZHlpbmcgdGhlcmUuIEhlcmUgaXMgbXkgYWR2aWNlLiBGaXJzdCwgbW92ZSB5b3VyIGRlc2sgbmV4dCB0byB0aGUgd2luZG93LiBOYXR1cmFsIGxpZ2h0IGlzIHRoZSBiZXN0IGxpZ2h0IGZvciBzdHVkeWluZywgYW5kIHlvdXIgZXllcyB3aWxsIG5vdCBnZXQgdGlyZWQgc28gZmFzdC4gU2Vjb25kLCBpbnZlc3QgaW4gYSBnb29kIGNoYWlyLiBJZiB5b3VyIGJhY2sgaHVydHMgYWZ0ZXIgdGhpcnR5IG1pbnV0ZXMsIHlvdSB3aWxsIGFsd2F5cyBtb3ZlIHRvIHRoZSBiZWQsIGFuZCB3ZSBib3RoIGtub3cgd2hhdCBoYXBwZW5zIG9uIHRoZSBiZWQgXHUyMDE0IHNsZWVwLCBub3Qgc3R1ZHlpbmchIEFsc28gYnV5IGEgc21hbGwgZGVzayBsYW1wIGZvciB0aGUgZXZlbmluZ3MuIFRoaXJkLCBjbGVhbiB5b3VyIGRlc2sgY29tcGxldGVseS4gS2VlcCBvbmx5IHlvdXIgbGFwdG9wLCB5b3VyIG5vdGVib29rLCBhbmQgb25lIHBlbiBvbiBpdC4gUHV0IGV2ZXJ5dGhpbmcgZWxzZSBvbiBhIHNoZWxmIG9yIGluIGEgZHJhd2VyLiBBIG1lc3N5IGRlc2sgbWFrZXMgYSBtZXNzeSBtaW5kLiBGb3VydGgsIGFuZCB0aGlzIGlzIHRoZSBtb3N0IGltcG9ydGFudDogcHV0IHlvdXIgcGhvbmUgZmFyIGF3YXksIG9uIHRoZSBvdGhlciBzaWRlIG9mIHRoZSByb29tLCBvciBnaXZlIGl0IHRvIHlvdXIgbW9tIHdoaWxlIHlvdSBzdHVkeS4gVGhlIHBob25lIGlzIHRoZSBiaWdnZXN0IGVuZW15IG9mIHN0dWR5aW5nISBBbmQgZmluYWxseSwgYWRkIHNvbWV0aGluZyBuaWNlIFx1MjAxNCBhIHNtYWxsIHBsYW50IG9yIGEgcGhvdG8gXHUyMDE0IHNvIHRoZSBjb3JuZXIgZmVlbHMgZnJpZW5kbHkuIFRyeSB0byBzdHVkeSBhdCB0aGUgc2FtZSBob3VycyBldmVyeSBkYXksIGFuZCB5b3VyIGJyYWluIHdpbGwgbGVhcm46IHRoaXMgZGVzayBtZWFucyB3b3JrLiBHb29kIGx1Y2ssIE5pbmEhIiwiczkiOiJOaW5hLCB5b3UncmUgYXNraW5nIHRoZSByaWdodCBxdWVzdGlvbiBcdTIwMTQgdGhlIHJvb20gZ2VudWluZWx5IHNoYXBlcyB0aGUgc3R1ZHlpbmcsIHNvIGxldCBtZSBnaXZlIHlvdSBhIHByb3BlciByZW5vdmF0aW9uIHBsYW4uIFByaW9yaXR5IG9uZTogbGlnaHQuIERyYWcgeW91ciBkZXNrIG92ZXIgdG8gdGhlIHdpbmRvdyBzbyB5b3Ugc3R1ZHkgaW4gbmF0dXJhbCBkYXlsaWdodCBcdTIwMTQgaXQga2VlcHMgeW91IG1vcmUgYWxlcnQgYW5kIGlzIGZhciBlYXNpZXIgb24gdGhlIGV5ZXMgdGhhbiBhIGRpbSBjb3JuZXIuIEZvciBldmVuaW5ncywgYWRkIGEgZGVjZW50IGRlc2sgbGFtcCB3aXRoIHdhcm0gbGlnaHQsIHBvc2l0aW9uZWQgc28geW91ciB3cml0aW5nIGhhbmQgZG9lc24ndCBjYXN0IGEgc2hhZG93LiBQcmlvcml0eSB0d286IHRoZSBjaGFpci4gVGhpcyBpcyB3aGVyZSBwZW9wbGUgZ28gd3JvbmcgXHUyMDE0IHRoZXkgc3BlbmQgbW9uZXkgb24gYSBiZWF1dGlmdWwgZGVzayBhbmQgc2l0IG9uIGEgc3Rvb2wuIEEgc3VwcG9ydGl2ZSBjaGFpciBhdCB0aGUgcmlnaHQgaGVpZ2h0IGlzIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gbmluZXR5IGZvY3VzZWQgbWludXRlcyBhbmQgYSBzb3JlIGJhY2sgdGhhdCBzZW5kcyB5b3UgbWlncmF0aW5nIHRvIHRoZSBiZWQsIHdoZXJlIHN0dWR5aW5nIGdvZXMgdG8gZGllLiBXaGljaCBicmluZ3MgbWUgdG8gcHJpb3JpdHkgdGhyZWU6IHNlcGFyYXRpb24uIEtlZXAgYSBoYXJkIGxpbmUgYmV0d2VlbiB5b3VyIHN0dWR5IGNvcm5lciBhbmQgeW91ciBzbGVlcCB6b25lLiBUaGUgZGVzayBmYWNlcyBhd2F5IGZyb20gdGhlIGJlZCBpZiBwb3NzaWJsZTsgdGhlIGJlZCBpcyBmb3IgcmVzdCwgdGhlIGRlc2sgaXMgZm9yIHdvcmssIGFuZCB5b3VyIGJyYWluIHdpbGwgbGVhcm4gdGhlIGRpZmZlcmVuY2Ugd2l0aGluIHdlZWtzLiBQcmlvcml0eSBmb3VyOiBydXRobGVzcyBkZWNsdXR0ZXJpbmcuIE9uIHRoZSBkZXNrOiBsYXB0b3AsIG5vdGVib29rLCBvbmUgcGVuLCBhIGdsYXNzIG9mIHdhdGVyLiBFdmVyeXRoaW5nIGVsc2UgbGl2ZXMgb24gYSBzaGVsZiBvciBpbiBkcmF3ZXJzLiBBbmQgdGhlIHNpbmdsZSBtb3N0IHBvd2VyZnVsIGNoYW5nZSBvZiBhbGw6IGV4aWxlIHlvdXIgcGhvbmUgXHUyMDE0IGFjcm9zcyB0aGUgcm9vbSwgaW4gYSBkcmF3ZXIsIG9yIG91dHNpZGUgdGhlIGRvb3IuIEV2ZXJ5IGdsYW5jZSBhdCBpdCBjb3N0cyB5b3UgdHdlbnR5IG1pbnV0ZXMgb2YgcmVmb2N1c2luZy4gVGhlbiB0aGUgZmluaXNoaW5nIHRvdWNoZXM6IGEgc21hbGwgcGxhbnQsIG9uZSBtb3RpdmF0aW5nIHBpY3R1cmUsIG1heWJlIHNvZnQgaW5zdHJ1bWVudGFsIG11c2ljLCBhbmQgYSBjb25zaXN0ZW50IGRhaWx5IHN0dWR5IHNsb3Qgc28gdGhlIGhhYml0IGFuY2hvcnMgaXRzZWxmLiBEbyB0aGUgbGlnaHQsIHRoZSBjaGFpciwgYW5kIHRoZSBwaG9uZSBleGlsZSB0aGlzIHdlZWtlbmQgXHUyMDE0IHRob3NlIHRocmVlIGFsb25lIHdpbGwgdHJhbnNmb3JtIHRoZSByb29tLiBTZW5kIG1lIGEgcGhvdG8gd2hlbiBpdCdzIGRvbmUhIn0seyJrIjoidDIiLCJudW0iOjIsInR5cGVFbiI6IlRhbGtpbmcgYWJvdXQgYSBQZXJzb25hbCBFeHBlcmllbmNlIiwicHJlcCI6MzAsInJlYyI6NjAsInByb21wdCI6IlRhbGsgYWJvdXQgYSB0aW1lIHdoZW4gc29tZXRoaW5nIG1hZGUgeW91IGxhdWdoLiBNYXliZSB5b3UgY291bGQgdGFsayBhYm91dCBhIGZ1bm55IHN0b3J5IHRoYXQgc29tZW9uZSB0b2xkIHlvdSwgYSBwaWN0dXJlIG9yIGEgbW92aWUgdGhhdCB5b3Ugc2F3LCBvciBzb21ldGhpbmcgdGhhdCBoYXBwZW5lZCB0byB5b3Ugb3IgYSBmcmllbmQuIFdoYXQgbWFkZSB5b3UgbGF1Z2gsIHdoeSBkaWQgeW91IGxhdWdoLCBhbmQgd2h5IGlzIGl0IG1lbW9yYWJsZT8iLCJpbWciOm51bGwsInRpcHMiOnsiYnVsbGV0cyI6WyJBbnN3ZXIgZXZlcnkgcGFydCBvZiB0aGUgcXVlc3Rpb24gKHdoYXQgaGFwcGVuZWQgXHUyMDEzIGhvdyBpdCB1bmZvbGRlZCBcdTIwMTMgdGhlIG91dGNvbWUgLyB3aHkgaXQgaXMgbWVtb3JhYmxlKS4iLCJVc2UgcGFzdCB0ZW5zZXMgYW5kIHRlbGwgaXQgaW4gb3JkZXI6IFRoaXMgaGFwcGVuZWRcdTIwMjYgXHUyMTkyIFRoZW5cdTIwMjYgXHUyMTkyIEluIHRoZSBlbmRcdTIwMjYiLCJGaW5pc2ggd2l0aCBhIGZlZWxpbmcgb3IgYSBsZXNzb24gbGVhcm5lZC4iLCJBbnN3ZXIgdGhlIHRocmVlIHBhcnRzOiB3aGF0IG1hZGUgeW91IGxhdWdoIC0gd2h5IGl0IHdhcyBmdW5ueSAtIHdoeSB5b3Ugc3RpbGwgcmVtZW1iZXIgaXQuIFRlbGwgaXQgbGlrZSBhIHN0b3J5IHdpdGggYSBidWlsZC11cCBhbmQgdGhlIGZ1bm55IG1vbWVudCBhcyB0aGUgcHVuY2hsaW5lLiJdLCJwaHJhc2VzIjpbIlRoaXMgaGFwcGVuZWQgYWJvdXQgdHdvIHllYXJzIGFnb1x1MjAyNiIsIkF0IGZpcnN0XHUyMDI2LCBidXQgdGhlblx1MjAyNiIsIldoYXQgbWFkZSBpdCB1bmZvcmdldHRhYmxlIHdhc1x1MjAyNiIsIkxvb2tpbmcgYmFjaywgXHUyMDI2Il19LCJzNiI6Ikkgd2FudCB0byB0ZWxsIHlvdSBhYm91dCBteSBncmFuZG1vdGhlcidzIGZpcnN0IHZpZGVvIGNhbGwsIGJlY2F1c2UgSSBoYXZlIG5ldmVyIGxhdWdoZWQgc28gaGFyZCBpbiBteSBsaWZlLiBUd28geWVhcnMgYWdvLCBteSBmYW1pbHkgYm91Z2h0IGhlciBhIHRhYmxldCBzbyBzaGUgY291bGQgc2VlIHVzIGR1cmluZyB0aGUgaG9saWRheXMuIE15IHVuY2xlIGluc3RhbGxlZCBldmVyeXRoaW5nIGFuZCBjYWxsZWQgaGVyIGZvciBhIHRlc3QuIEJ1dCBteSBncmFuZG1vdGhlciBkaWQgbm90IHVuZGVyc3RhbmQgdGhlIGNhbWVyYS4gT24gdGhlIHNjcmVlbiwgc2hlIHNhdyB0d28gcGljdHVyZXM6IG15IHVuY2xlJ3MgZmFjZSwgYmlnLCBhbmQgaGVyIG93biBmYWNlLCBzbWFsbCwgaW4gdGhlIGNvcm5lci4gQW5kIHNoZSB0aG91Z2h0IHRoZSBzbWFsbCBwaWN0dXJlIHdhcyBhbm90aGVyIGNhbGxlciEgU28gZm9yIGZpdmUgd2hvbGUgbWludXRlcywgc2hlIHRhbGtlZCB0byBoZXIgb3duIHBpY3R1cmUuIFNoZSBzYWlkOiBIZWxsbz8gV2hvIGFyZSB5b3U\/IExhZHksIHBsZWFzZSBsZWF2ZSB0aGUgY2FsbCwgSSBhbSB0YWxraW5nIHRvIG15IHNvbiEgQW5kIHRoZSBzbWFsbCBwaWN0dXJlLCBvZiBjb3Vyc2UsIG1vdmVkIGl0cyBtb3V0aCBldmVyeSB0aW1lIHNoZSB0YWxrZWQsIHNvIHNoZSB3YXMgc3VyZSB0aGUgbGFkeSB3YXMgYW5zd2VyaW5nIGhlci4gTXkgdW5jbGUgd2FzIGxhdWdoaW5nIHNvIGhhcmQgdGhhdCBoZSBjb3VsZCBub3QgZXhwbGFpbiBhbnl0aGluZy4gRmluYWxseSBoZSBzaG91dGVkOiBNb20sIHRoYXQgbGFkeSBpcyBZT1UhIEhlciBmYWNlIGluIHRoYXQgbW9tZW50IFx1MjAxNCBzdXJwcmlzZSwgdGhlbiBlbWJhcnJhc3NtZW50LCB0aGVuIGxhdWdoaW5nIFx1MjAxNCBJIHdpbGwgcmVtZW1iZXIgaXQgZm9yZXZlci4gTm93LCBldmVyeSBmYW1pbHkgZGlubmVyLCBzb21lb25lIHNheXMgTGFkeSwgcGxlYXNlIGxlYXZlIHRoZSBjYWxsLCBhbmQgdGhlIHdob2xlIGZhbWlseSBsYXVnaHMgYWdhaW4sIGFuZCBncmFuZG1hIGxhdWdocyB0aGUgbG91ZGVzdC4iLCJzOSI6IkxldCBtZSB0ZWxsIHlvdSBhYm91dCBteSBncmFuZG1vdGhlcidzIGZpcnN0IHZpZGVvIGNhbGwgXHUyMDE0IGEgc3RvcnkgdGhhdCBoYXMgYmVjb21lIG9mZmljaWFsIGZhbWlseSBsZWdlbmQsIGFuZCBzdGlsbCBtYWtlcyBtZSBsYXVnaCBldmVyeSB0aW1lIEkgcmV0ZWxsIGl0LiBUd28geWVhcnMgYWdvIHdlIGJvdWdodCBoZXIgYSB0YWJsZXQgc28gc2hlIGNvdWxkIGpvaW4gb3VyIGhvbGlkYXkgY2FsbHMsIGFuZCBteSB1bmNsZSBzZXQgaXQgdXAgYW5kIG1hZGUgYSB0ZXN0IGNhbGwuIE5vdywgcGljdHVyZSB0aGUgc2NyZWVuIGZyb20gaGVyIHNpZGU6IG15IHVuY2xlJ3MgZmFjZSBmaWxsaW5nIHRoZSBkaXNwbGF5LCBhbmQgaW4gdGhlIGNvcm5lciwgdGhlIGxpdHRsZSBzZWxmLXZpZXcgd2luZG93IHNob3dpbmcgaGVyIG93biBmYWNlIFx1MjAxNCBhIGZlYXR1cmUgbm9ib2R5IGhhZCB0aG91Z2h0IHRvIGV4cGxhaW4uIFNoZSBpbW1lZGlhdGVseSBjb25jbHVkZWQgdGhhdCB0aGlzIHNtYWxsIGVsZGVybHkgbGFkeSBpbiB0aGUgY29ybmVyIHdhcyBhIHN0cmFuZ2VyIHdobyBoYWQgam9pbmVkIHRoZSBjYWxsLiBXaGF0IGZvbGxvd2VkIHdhcyBmaXZlIG1pbnV0ZXMgb2YgZXNjYWxhdGluZyBjb21lZHkuIFNoZSBzdGFydGVkIHBvbGl0ZWx5IFx1MjAxNCBIZWxsbz8gV2hvIGFyZSB5b3UsIGRlYXI\/IFx1MjAxNCB0aGVuIGdyZXcgc3Rlcm46IE1hZGFtLCB0aGlzIGlzIGEgcHJpdmF0ZSBjYWxsIHdpdGggbXkgc29uLiBQbGVhc2UgaGFuZyB1cC4gQW5kIG9mIGNvdXJzZSwgZXZlcnkgdGltZSBzaGUgc3Bva2UsIHRoZSBsYWR5IGluIHRoZSBjb3JuZXIgc3Bva2UgdG9vLCB3aGljaCBteSBncmFuZG1vdGhlciB0b29rIGFzIG91dHJhZ2VvdXMgbW9ja2VyeS4gVGhlIGxhZHkgaXMgY29weWluZyBtZSEgc2hlIGNyaWVkLiBCeSB0aGlzIHBvaW50IG15IHVuY2xlIHdhcyBsYXVnaGluZyB0b28gaGFyZCB0byBwcm9kdWNlIHdvcmRzIFx1MjAxNCB3aGljaCBtZWFudCBoaXMgZmFjZSB3YXMgZnJvemVuIG1pZC1sYXVnaCBvbiBoZXIgc2NyZWVuLCBpbmZ1cmlhdGluZyBoZXIgZnVydGhlci4gV2hlbiBoZSBmaW5hbGx5IG1hbmFnZWQgdG8gZ2FzcCBvdXQgTW9tLCB0aGF0IGxhZHkgaXMgWU9VLCBpdCdzIGEgbWlycm9yISBcdTIwMTQgdGhlcmUgd2VyZSB0aHJlZSBmdWxsIHNlY29uZHMgb2Ygc2lsZW5jZSwgYW5kIHRoZW4gc2hlIGxhdWdoZWQgaGFyZGVyIHRoYW4gYW55IG9mIHVzLCB1bnRpbCBzaGUgd2FzIHdpcGluZyB0ZWFycyB3aXRoIGhlciBhcHJvbi4gSXQncyBtZW1vcmFibGUgcGFydGx5IGJlY2F1c2UgdGhlIG1pc3VuZGVyc3RhbmRpbmcgd2FzIHNvIHBlcmZlY3RseSBsb2dpY2FsIGZyb20gaGVyIHNpZGUsIGFuZCBwYXJ0bHkgYmVjYXVzZSBvZiB3aGF0IGl0IGJlY2FtZTogdG8gdGhpcyBkYXksIHdoZW5ldmVyIGFueSBmYW1pbHkgbWVtYmVyIGpvaW5zIGEgY2FsbCwgc29tZW9uZSB3aGlzcGVycyBNYWRhbSwgcGxlYXNlIGhhbmcgdXAsIGFuZCB0aGUgd2hvbGUgc2NyZWVuIGRpc3NvbHZlcyBpbnRvIGxhdWdodGVyIFx1MjAxNCBncmFuZG1hIGxvdWRlc3Qgb2YgYWxsLiBMYXVnaGluZyBhdCB5b3Vyc2VsZiwgc2hlIHRhdWdodCB1cywgaXMgdGhlIGJlc3QgZmFtaWx5IHRyYWRpdGlvbi4ifSx7ImsiOiJ0MyIsIm51bSI6MywidHlwZUVuIjoiRGVzY3JpYmluZyBhIFNjZW5lIiwicHJlcCI6MzAsInJlYyI6NjAsInByb21wdCI6IkRlc2NyaWJlIHNvbWUgdGhpbmdzIHRoYXQgYXJlIGhhcHBlbmluZyBpbiB0aGUgcGljdHVyZSBiZWxvdyBhcyB3ZWxsIGFzIHlvdSBjYW4uIFRoZSBwZXJzb24gd2l0aCB3aG9tIHlvdSBhcmUgc3BlYWtpbmcgY2Fubm90IHNlZSB0aGUgcGljdHVyZS4iLCJpbWciOiJzY2VuZSIsInRpcHMiOnsiYnVsbGV0cyI6WyJGaXJzdCBzZW50ZW5jZTogZ2l2ZSB0aGUgb3ZlcnZpZXcgKHdoZXJlIGl0IGlzLCB3aGF0IHRoZSBhdG1vc3BoZXJlIGlzIGxpa2UpLiIsIkRlc2NyaWJlIDRcdTIwMTM2IGRldGFpbHMgYnkgbG9jYXRpb246IGluIHRoZSBmb3JlZ3JvdW5kIC8gb24gdGhlIGxlZnQgLyBhdCB0aGUgYmFja1x1MjAyNjsgdXNlIHRoZSBwcmVzZW50IGNvbnRpbnVvdXMuIiwiVGhlIGxpc3RlbmVyIENBTk5PVCBzZWUgdGhlIHBpY3R1cmUgXHUyMDE0IGJlIHNwZWNpZmljOyB3aGVuIHVuc3VyZSwgdXNlIHNlZW1zIC8gYXBwZWFycyAvIGxvb2tzIGxpa2UuIiwiTW92aW5nIGRheSBhdCBhIGJsdWUgaG91c2U6IGdvIGluIG9yZGVyIC0gdGhlIHllbGxvdyBtb3ZpbmcgdHJ1Y2sgd2l0aCBhIHN1bnJpc2UgbG9nbyBhbmQgaXRzIHJhbXAgLT4gdGhlIG1hbiBpbiBwdXJwbGUgaW5zaWRlIHRoZSB0cnVjayBhbmQgdGhlIGJveSBjYXJyeWluZyBhIHRlYWwgY291Y2ggZG93biB0aGUgcmFtcCAtPiB0aGUgd29tYW4gaW4gYmx1ZSBrbmVlbGluZyBhbmQgdGFwaW5nIGNhcmRib2FyZCBib3hlcyAoYW5vdGhlciBoZWxwZXIgYmVuZGluZyBvdmVyIGJveGVzKSAtPiB0aGUgYmVhcmRlZCBtYW4gaW4gb3JhbmdlIHNpdHRpbmcgYnkgdGhlIHJlZCBzaWRlIHRhYmxlIC0+IHRoZSB0d28gd29tZW4gY2hhdHRpbmcgYnkgdGhlIHRydWNrIChvbmUgaG9sZGluZyBjbG90aGVzLCBvbmUgaG9sZGluZyBhIGdyZWVuIGJhbGwpIC0+IHRoZSBib3kgY2FycnlpbmcgYSBib3ggdG93YXJkIHRoZSByZWQgZnJvbnQgZG9vciBhbmQgdGhlIGtpZHMgc2l0dGluZyBvbiB0aGUgc3RvbmUgd2FsbCAtPiB0aGUgYmlnIGJsdWUgaG91c2Ugd2l0aCBldmVyZ3JlZW4gdHJlZXMgYmVoaW5kLiJdLCJwaHJhc2VzIjpbIkluIHRoZSBmb3JlZ3JvdW5kLCBcdTIwMjYiLCJPbiB0aGUgcmlnaHQtaGFuZCBzaWRlLCBcdTIwMjYiLCJJdCBsb29rcyBsaWtlXHUyMDI2IiwiVGhlIHdob2xlIHBsYWNlIGZlZWxzXHUyMDI2Il19LCJzNiI6IlRoaXMgcGljdHVyZSBzaG93cyBhIGZhbWlseSBvbiBtb3ZpbmcgZGF5LCBpbiBmcm9udCBvZiBhIGJpZyBibHVlIHR3by1zdG9yZXkgaG91c2Ugc3Vycm91bmRlZCBieSB0YWxsIGdyZWVuIHRyZWVzLiBPbiB0aGUgcmlnaHQsIHRoZXJlIGlzIGEgbGFyZ2UgeWVsbG93IG1vdmluZyB0cnVjayB3aXRoIGEgc3VucmlzZSBwaWN0dXJlIHBhaW50ZWQgb24gaXRzIHNpZGUsIGFuZCBpdHMgYmFjayBkb29yIGlzIG9wZW4gd2l0aCBhIHJhbXAgZ29pbmcgZG93bi4gQSBtYW4gaW4gYSBwdXJwbGUgc2hpcnQgaXMgc3RhbmRpbmcgaW5zaWRlIHRoZSB0cnVjaywgYW5kIGhlIGFuZCBhIGJveSBhcmUgY2FycnlpbmcgYSBsb25nIHRlYWwtZ3JlZW4gc29mYSBkb3duIHRoZSByYW1wIHRvZ2V0aGVyLiBJbiB0aGUgbWlkZGxlLCBhIHdvbWFuIGluIGEgYmx1ZSBzaGlydCBhbmQgeWVsbG93IHBhbnRzIGlzIGtuZWVsaW5nIG9uIHRoZSBncm91bmQgYW5kIHRhcGluZyBhIGNhcmRib2FyZCBib3ggY2xvc2VkLiBBbm90aGVyIHBlcnNvbiBpbiBhIGdyZWVuIGhvb2RpZSBpcyBhbHNvIGJlbmRpbmcgb3ZlciBzb21lIGJveGVzIG5leHQgdG8gaGVyLiBPbiB0aGUgcmlnaHQgc2lkZSwgYSBtYW4gd2l0aCBhIGJlYXJkLCBpbiBhbiBvcmFuZ2Ugc2hpcnQsIGlzIHNpdHRpbmcgb24gdGhlIGdyb3VuZCBuZXh0IHRvIGEgc21hbGwgcmVkIHRhYmxlLiBUd28gd29tZW4gYXJlIHN0YW5kaW5nIG5lYXIgdGhlIHRydWNrIGFuZCB0YWxraW5nIFx1MjAxNCBvbmUgaXMgaG9sZGluZyBzb21lIGNsb3RoZXMgb24gYSBoYW5nZXIsIGFuZCB0aGUgb3RoZXIgaXMgaG9sZGluZyBhIGdyZWVuIGJhbGwuIEluIHRoZSBiYWNrZ3JvdW5kLCBhIGJveSBpbiBhIGJsdWUgc2hpcnQgaXMgY2FycnlpbmcgYSBib3ggdXAgdGhlIHN0YWlycyB0byB0aGUgcmVkIGZyb250IGRvb3IsIHdoZXJlIGFub3RoZXIgY2hpbGQgaXMgc3RhbmRpbmcuIFR3byBtb3JlIGtpZHMgYXJlIHNpdHRpbmcgb24gdGhlIHN0b25lIHdhbGwsIHdhdGNoaW5nIGV2ZXJ5dGhpbmcuIEl0IGlzIGEgdmVyeSBidXN5IGJ1dCBoYXBweSBkYXkuIiwiczkiOiJUaGlzIGlzIGEgY2xhc3NpYyBtb3ZpbmctZGF5IHNjZW5lIGluIGZyb250IG9mIGEgaGFuZHNvbWUgYmx1ZSB0d28tc3RvcmV5IGhvdXNlIHR1Y2tlZCBhbW9uZyBldmVyZ3JlZW4gdHJlZXMgXHUyMDE0IGFuZCB0aGUgd2hvbGUgZmFtaWx5IGhhcyBiZWVuIG1vYmlsaXplZC4gVGhlIHN0YXIgb2YgdGhlIHBpY3R1cmUgaXMgYSBiaWcgeWVsbG93IG1vdmluZyB0cnVjayBvbiB0aGUgcmlnaHQsIGRlY29yYXRlZCB3aXRoIGEgY2hlZXJmdWwgc3VucmlzZSBsb2dvLCBpdHMgcmVhciBkb29yIHJvbGxlZCB1cCBhbmQgYSByYW1wIGV4dGVuZGVkLiBDb21pbmcgZG93biB0aGF0IHJhbXAgaXMgdGhlIGhlYXZpZXN0IGpvYiBvZiB0aGUgZGF5OiBhIG1hbiBpbiBwdXJwbGUgaW5zaWRlIHRoZSB0cnVjayBhbmQgYSBib3kgaW4gYSBydXN0LWNvbG91cmVkIHNoaXJ0IGFyZSB3cmVzdGxpbmcgYSBsb25nIHRlYWwgY291Y2ggYmV0d2VlbiB0aGVtLCBhbmQgeW91IGNhbiBhbG1vc3QgaGVhciB0aGUgcGl2b3QhIGluc3RydWN0aW9ucy4gSW4gdGhlIGNlbnRyZSBmb3JlZ3JvdW5kLCB0aGUgcGFja2luZyBkZXBhcnRtZW50IGlzIGF0IHdvcms6IGEgd29tYW4gaW4gYSBibHVlIHRvcCBhbmQgeWVsbG93IHRyb3VzZXJzIGtuZWVscyBvdmVyIGEgY2FyZGJvYXJkIGJveCwgc2VhbGluZyBpdCB3aXRoIHRhcGUsIHdoaWxlIGFub3RoZXIgaGVscGVyIGluIGEgZ3JlZW4gaG9vZGllIGJlbmRzIG92ZXIgdGhlIG5leHQgYm94IGluIGxpbmUgXHUyMDE0IHRoZXJlJ3MgYSBzbWFsbCBweXJhbWlkIG9mIHRoZW0gYWxyZWFkeSBzZWFsZWQuIE9mZiB0byB0aGUgcmlnaHQsIGEgYmVhcmRlZCBtYW4gaW4gb3JhbmdlIGhhcyBwbGFudGVkIGhpbXNlbGYgb24gdGhlIGdyb3VuZCBiZXNpZGUgYSBsaXR0bGUgcmVkIGVuZCB0YWJsZSwgdGFraW5nIHdoYXQgbG9va3MgbGlrZSBhIHZlcnkgd2VsbC1lYXJuZWQgYnJlYWsuIE5lYXIgdGhlIHRydWNrLCB0d28gd29tZW4gYXJlIGhhdmluZyBhIGNvb3JkaW5hdGlvbiBtZWV0aW5nIFx1MjAxNCBvbmUgaG9sZHMgY2xvdGhlcyBvbiBoYW5nZXJzLCB0aGUgb3RoZXIgY3JhZGxlcyBhIGdyZWVuIGJhbGwgYW5kIHdoYXQgbWlnaHQgYmUgYSBiYWcgXHUyMDE0IGNsZWFybHkgZGViYXRpbmcgd2hpY2ggcm9vbSB0aGluZ3MgZ28gdG8uIE1lYW53aGlsZSwgdGhlIGp1bmlvciBtb3ZlcnMgYXJlIGNvbnRyaWJ1dGluZyBhdCB0aGVpciBvd24gcGFjZTogYSBib3kgaW4gYmx1ZSBpcyBoYXVsaW5nIGEgYm94IHVwIHRoZSBmcm9udCBzdGVwcyB0b3dhcmQgdGhlIHJlZCBkb29yIHdoZXJlIGEgc2libGluZyB3YWl0cywgYW5kIHR3byBtb3JlIGtpZHMgaGF2ZSBjbGFpbWVkIHRoZSBzdG9uZSByZXRhaW5pbmcgd2FsbCBhcyB0aGVpciBzbmFjay1icmVhayBoZWFkcXVhcnRlcnMuIEJldHdlZW4gdGhlIHN1bnNoaW5lLCB0aGUgdGVhbXdvcmsgYW5kIHRoZSBoYWxmLWVtcHR5IHRydWNrLCB5b3UgY2FuIHRlbGwgdGhpcyBmYW1pbHkncyBuZXcgY2hhcHRlciBpcyBvbmx5IGEgZmV3IGJveGVzIGF3YXkgZnJvbSBiZWdpbm5pbmcuIn0seyJrIjoidDQiLCJudW0iOjQsInR5cGVFbiI6Ik1ha2luZyBQcmVkaWN0aW9ucyIsInByZXAiOjMwLCJyZWMiOjYwLCJwcm9tcHQiOiJJbiB0aGlzIHBpY3R1cmUsIHdoYXQgZG8geW91IHRoaW5rIHdpbGwgbW9zdCBwcm9iYWJseSBoYXBwZW4gbmV4dD8iLCJpbWciOiJzY2VuZSIsInRpcHMiOnsiYnVsbGV0cyI6WyJFYWNoIHByZWRpY3Rpb24gPSB3aWxsIC8gYmUgZ29pbmcgdG8gLyB3aWxsIHByb2JhYmx5ICsgYSBSRUFTT04gYmFzZWQgb24gYSBkZXRhaWwgaW4gdGhlIHBpY3R1cmUuIiwiTWFrZSAzXHUyMDEzNCBwcmVkaWN0aW9ucyBhYm91dCBkaWZmZXJlbnQgcGVvcGxlIFx1MjAxNCBkb24ndCBzdG9wIGF0IG9uZSBpZGVhLiIsIkZpbmlzaCB3aXRoIG9uZSBvdmVyYWxsIHByZWRpY3Rpb24gZm9yIHRoZSB3aG9sZSBzY2VuZS4iLCJTYW1lIG1vdmluZyBkYXkgYXMgVGFzayAzIC0gbm93IHByZWRpY3Q6IHRoZSBjb3VjaCB3aWxsIG1ha2UgaXQgZG93biB0aGUgcmFtcCAoYW5kIG1heWJlIGdldCBzdHVjayBpbiB0aGUgZnJvbnQgZG9vciksIHRoZSB0YXBlZCBib3hlcyB3aWxsIGJlIGNhcnJpZWQgaW5zaWRlIG9uZSBieSBvbmUsIHRoZSByZXN0aW5nIG1hbiB3aWxsIGJlIGNhbGxlZCBiYWNrIHRvIHdvcmssIHRoZSBraWRzIHdpbGwgYmUgcmVjcnVpdGVkIHRvIGNhcnJ5IGxpZ2h0IHRoaW5ncywgYW5kIHRoZSBkYXkgd2lsbCBlbmQgd2l0aCBwaXp6YSBvbiBtb3ZpbmcgYm94ZXMgaW4gdGhlIG5ldyBsaXZpbmcgcm9vbS4iXSwicGhyYXNlcyI6WyJcdTIwMjZpcyBhYm91dCB0b1x1MjAyNiIsIkhlJ2xsIG1vc3QgbGlrZWx5XHUyMDI2IiwiSnVkZ2luZyBieVx1MjAyNiwgSSBleHBlY3RcdTIwMjYiLCJXaXRoaW4gbWludXRlcywgXHUyMDI2Il19LCJzNiI6IkkgdGhpbmsgdGhlIG5leHQgaG91cnMgb2YgdGhpcyBtb3ZpbmcgZGF5IHdpbGwgYmUgYnVzeSBidXQgaGFwcHkuIEZpcnN0LCB0aGUgbWFuIGluIHB1cnBsZSBhbmQgdGhlIGJveSB3aWxsIHNsb3dseSBicmluZyB0aGUgdGVhbCBzb2ZhIGRvd24gdGhlIHJhbXAuIFRoZW4gY29tZXMgdGhlIGNsYXNzaWMgbW92aW5nIHByb2JsZW06IHRoZSBzb2ZhIHdpbGwgcHJvYmFibHkgZ2V0IHN0dWNrIGluIHRoZSBmcm9udCBkb29yISBUaGV5IHdpbGwgdHVybiBpdCBsZWZ0LCB0dXJuIGl0IHJpZ2h0LCBhbmQgZmluYWxseSBzb21lb25lIHdpbGwgc2F5IGxpZnQgaXQgaGlnaGVyLCBhbmQgaXQgd2lsbCBnbyB0aHJvdWdoLiBTZWNvbmQsIHRoZSB3b21hbiBpbiBibHVlIHdpbGwgZmluaXNoIHRhcGluZyBoZXIgYm94LCBhbmQgYWxsIHRob3NlIGJveGVzIHdpbGwgdHJhdmVsIGluc2lkZSwgb25lIGJ5IG9uZSwgdXAgdGhlIHN0YWlycyBhbmQgdGhyb3VnaCB0aGUgcmVkIGRvb3IuIFRoZSBtYW4gaW4gb3JhbmdlIHdobyBpcyByZXN0aW5nIHdpbGwgaGVhciBoaXMgbmFtZSB2ZXJ5IHNvb24gXHUyMDE0IG5vIHJlc3Qgb24gbW92aW5nIGRheSEgVGhlIHR3byB3b21lbiB3aWxsIGZpbmlzaCB0YWxraW5nIGFuZCBjYXJyeSB0aGUgY2xvdGhlcyBhbmQgc21hbGwgdGhpbmdzIGluc2lkZS4gVGhlIGtpZHMgb24gdGhlIHN0b25lIHdhbGwgd2lsbCBiZSBhc2tlZCB0byBoZWxwIHdpdGggdGhlIGxpZ2h0IGJveGVzLCBsaWtlIHBpbGxvd3MgYW5kIHRveXMuIEJ5IHRoZSBldmVuaW5nLCB0aGUgdHJ1Y2sgd2lsbCBiZSBlbXB0eSwgYW5kIHRoZSBmYW1pbHkgd2lsbCBzaXQgaW4gdGhlIG5ldyBsaXZpbmcgcm9vbSBvbiB0aGUgZmxvb3Igb3Igb24gYm94ZXMsIGVhdCBwaXp6YSwgYW5kIGZlZWwgdmVyeSB0aXJlZCBidXQgdmVyeSBoYXBweS4gQW5kIHRvbW9ycm93LCB0aGUgZnVuIG9mIG9wZW5pbmcgb25lIGh1bmRyZWQgYm94ZXMgYmVnaW5zISIsInM5IjoiRXZlcnl0aGluZyBoZXJlIGZvbGxvd3MgdGhlIGV0ZXJuYWwgc2NyaXB0IG9mIG1vdmluZyBkYXksIHNvIHRoZSBwcmVkaWN0aW9ucyBhbG1vc3Qgd3JpdGUgdGhlbXNlbHZlcy4gRmlyc3QsIHRoZSBjb3VjaDogdGhlIG1hbiBpbiBwdXJwbGUgYW5kIHRoZSBib3kgd2lsbCBnZXQgaXQgZG93biB0aGUgcmFtcCBzdWNjZXNzZnVsbHkgXHUyMDE0IHJhbXBzIGFyZSB0aGUgZWFzeSBwYXJ0IFx1MjAxNCBhbmQgdGhlbiBoaXQgdGhlIHRydWUgZmluYWwgYm9zcyBvZiBldmVyeSBtb3ZlOiB0aGUgZnJvbnQgZG9vci4gVGhlcmUgd2lsbCBiZSBmaXZlIG1pbnV0ZXMgb2YgZ2VvbWV0cnkgXHUyMDE0IHRpbHQgaXQsIHJvdGF0ZSBpdCwgdGFrZSB0aGUgbGVncyBvZmY\/IFx1MjAxNCBiZWZvcmUgaXQgZmluYWxseSBzbGlkZXMgdGhyb3VnaCB3aXRoIHR3byBjZW50aW1ldHJlcyB0byBzcGFyZSwgYW5kIGV2ZXJ5b25lIHdpbGwgY2hlZXIuIFNlY29uZCwgdGhlIGJveCBwaXBlbGluZSB3aWxsIGtpY2sgaW50byBnZWFyOiB0aGUgd29tYW4gaW4gYmx1ZSB3aWxsIGZpbmlzaCB0YXBpbmcsIGFuZCBhIGh1bWFuIGNoYWluIHdpbGwgZm9ybSBcdTIwMTQgYm94ZXMgZmxvd2luZyBmcm9tIHRydWNrIHRvIHJhbXAgdG8gc3RhaXJzIHRvIHRoZSByZWQgZG9vciwgd2l0aCB0aGUgYm95IGluIGJsdWUgcHJvdWRseSBydW5uaW5nIHRoZSBsaWdodCBvbmVzLiBUaGUgYmVhcmRlZCBtYW4gaW4gb3JhbmdlLCBjdXJyZW50bHkgZW5qb3lpbmcgaGlzIHRhY3RpY2FsIHJlc3QgYmVzaWRlIHRoZSByZWQgdGFibGUsIGhhcyBhYm91dCBuaW5ldHkgc2Vjb25kcyBiZWZvcmUgc29tZW9uZSBjYWxscyBoaXMgbmFtZTsgb24gbW92aW5nIGRheSwgc2l0dGluZyBkb3duIGlzIGEgcHJvdm9jYXRpb24uIFRoZSB0d28gd29tZW4gYnkgdGhlIHRydWNrIHdpbGwgY29uY2x1ZGUgdGhlaXIgbmVnb3RpYXRpb24gYWJvdXQgd2hhdCBnb2VzIHdoZXJlLCBhbmQgdGhlIGtpZHMgb24gdGhlIHN0b25lIHdhbGwgd2lsbCBiZSBkcmFmdGVkIGludG8gc2VydmljZSBjYXJyeWluZyBwaWxsb3dzLCBsYW1wcyBhbmQgdGhlIGZhbWlseSdzIG1vc3QgdW5icmVha2FibGUgcG9zc2Vzc2lvbnMuIFRoZSBncmVlbiBiYWxsIHdpbGwgYmUgdGhyb3duIGF0IGxlYXN0IG9uY2UuIEJ5IHN1bnNldCwgSSBwcmVkaWN0IGFuIGVtcHR5IHRydWNrLCBhIGxpdmluZyByb29tIGZ1bGwgb2YgYm94IHRvd2VycywgYW5kIHRoZSBmYW1pbHkgY29sbGFwc2VkIG9uIHRoYXQgaGFyZC13b24gdGVhbCBjb3VjaCwgZWF0aW5nIHBpenphIHN0cmFpZ2h0IGZyb20gdGhlIGJveCBiZWNhdXNlIHRoZSBwbGF0ZXMgYXJlIGluIGEgY2FydG9uIGxhYmVsbGVkIGtpdGNoZW4gXHUyMDE0IG1heWJlLiBBbmQgdG9tb3Jyb3cgbW9ybmluZyBiZWdpbnMgdGhlIHJlYWwgYWR2ZW50dXJlOiBmaW5kaW5nIHRoZSBjb2ZmZWUgbWFrZXIuIEl0J3MgY2hhb3MsIGJ1dCBpdCdzIHRoZSBnb29kIGtpbmQgXHUyMDE0IHRoZSBmaXJzdCBkYXkgb2YgYSBuZXcgaG9tZS4ifSx7ImsiOiJ0NSIsIm51bSI6NSwidHlwZUVuIjoiQ29tcGFyaW5nIGFuZCBQZXJzdWFkaW5nIiwicGhhc2VkIjp0cnVlLCJjaG9vc2UiOnsicHJlcCI6NjAsInNpdHVhdGlvbiI6IlRoZSBwZW9wbGUgaW4geW91ciBhcGFydG1lbnQgYnVpbGRpbmcgYXJlIHVwc2V0IHdpdGggdGhlIHRyYWZmaWMgbm9pc2UgZnJvbSB0aGUgc3RyZWV0LCBhbmQgYXMgYSBtZW1iZXIgb2YgeW91ciBhcGFydG1lbnQncyBjb3VuY2lsLCB5b3UgbmVlZCB0byBzb2x2ZSB0aGUgcHJvYmxlbS4gWW91IGZvdW5kIHR3byBzdWl0YWJsZSBvcHRpb25zLiBVc2luZyB0aGUgcGljdHVyZXMgYW5kIGluZm9ybWF0aW9uIGJlbG93LCBjaG9vc2UgdGhlIG9wdGlvbiB0aGF0IHlvdSBwcmVmZXIuIEluIHRoZSBuZXh0IHNlY3Rpb24sIHlvdSB3aWxsIG5lZWQgdG8gcGVyc3VhZGUgeW91ciBjb2xsZWFndWUgdGhhdCB5b3VyIGNob2ljZSBpcyB0aGUgYmV0dGVyIGNob2ljZS4iLCJub3RlIjoiSWYgeW91IGRvIG5vdCBjaG9vc2UgYW4gb3B0aW9uLCB0aGUgY29tcHV0ZXIgd2lsbCBjaG9vc2Ugb25lIGZvciB5b3UuIFlvdSBkbyBub3QgbmVlZCB0byBzcGVhayBmb3IgdGhpcyBwYXJ0LiIsIm9wdGlvbnMiOlt7InRpdGxlIjoiUGxhbnRpbmcgYSBIZWRnZSIsImltZyI6Im9wdEEiLCJidWxsZXRzIjpbImVudmlyb25tZW50YWxseSBmcmllbmRseSIsImxvb2tzIGdyZWVuIGFuZCBhcHBlYWxpbmciLCJjb3N0cyBhcHByb3hpbWF0ZWx5ICQzLDAwMCIsInRha2VzIDUgeWVhcnMgdG8gZ3JvdyBoaWdoIGVub3VnaCB0byBibG9jayBub2lzZSJdfSx7InRpdGxlIjoiQnVpbGRpbmcgYSBCcmljayBXYWxsIiwiaW1nIjoib3B0QiIsImJ1bGxldHMiOlsidGFrZXMgNiBtb250aHMgdG8gYnVpbGQiLCJjb3N0cyBhcHByb3hpbWF0ZWx5ICQ2LDAwMCIsIndpbGwgYmxvY2sgbm9pc2UgaW1tZWRpYXRlbHkiLCJnaXZlcyBhcGFydG1lbnQgcmVzaWRlbnRzIG1vcmUgcHJpdmFjeSJdfV19LCJzcGVhayI6eyJwcmVwIjo2MCwicmVjIjo2MCwicHJvbXB0IjoiWW91ciBjb2xsZWFndWUgaXMgc3VnZ2VzdGluZyBhIGRpZmZlcmVudCBzb2x1dGlvbiAoc2hvd24gYmVsb3cpLiBQZXJzdWFkZSB5b3VyIGNvbGxlYWd1ZSB0aGF0IHRoZSBzb2x1dGlvbiB5b3UgY2hvc2UgaXMgdGhlIGJldHRlciBjaG9pY2UgYnkgY29tcGFyaW5nIHRoZSB0d28uIiwib3RoZXJMYWJlbCI6IllvdXIgQ29sbGVhZ3VlJ3MgQ2hvaWNlIiwib3RoZXIiOnsidGl0bGUiOiJCdXlpbmcgRXZlcnlvbmUgRWFycGx1Z3MiLCJpbWciOiJvcHRPdGhlciIsImJ1bGxldHMiOlsic29mdGVucyB0cmFmZmljIG5vaXNlIiwiY29tZXMgaW4gbWFueSBjb2xvdXJzIiwiY29zdHMgJDIwIGZvciBhIHBhY2sgb2YgMjAwIiwicG9ydGFibGUsIGVhc3kgdG8gdXNlIGFuZCByZXBsYWNlIl19fSwidGlwcyI6eyJidWxsZXRzIjpbIlN0cnVjdHVyZTogYWNrbm93bGVkZ2UgdGhlIG90aGVyIHBlcnNvbidzIGNob2ljZSBcdTIxOTIgZ2l2ZSAyXHUyMDEzMyBhZHZhbnRhZ2VzIG9mIHlvdXJzIChkaXJlY3QgY29tcGFyaXNvbikgXHUyMTkyIHdyYXAgdXAuIiwiQ29tcGFyZSB1c2luZyB0aGUgbnVtYmVycyBvbiB0aGUgY2FyZHM6IHByaWNlLCBkdXJhdGlvbiwgY2FwYWNpdHksIGV4cGVyaWVuY2UuIiwiWW91IGRvIE5PVCBuZWVkIHRvIHNwZWFrIGR1cmluZyB0aGUgY2hvb3Npbmcgc3RlcCBcdTIwMTQganVzdCBjbGljayBhbiBvcHRpb24uIiwiVGhlIHNhbXBsZXMgYmVsb3cgY2hvb3NlIHRoZSBCcmljayBXYWxsIChibG9ja3Mgbm9pc2UgaW1tZWRpYXRlbHkgb25jZSBidWlsdCwgcGVybWFuZW50LCBhZGRzIHByaXZhY3kgLSBhIHJlYWwgZml4KS4gVGhlIGNvbGxlYWd1ZSdzIGVhcnBsdWdzIGFyZSBjaGVhcCAoJDIwKSBidXQgdGhleSBhcmUgYSBiYW5kLWFpZDogcmVzaWRlbnRzIGNhbm5vdCB3ZWFyIGVhcnBsdWdzIGFsbCBkYXksIHRoZXkgYmxvY2sgZG9vcmJlbGxzIGFuZCBhbGFybXMgdG9vLCBhbmQgdGhlIG5vaXNlIGl0c2VsZiBuZXZlciBnb2VzIGF3YXkuIFRoZSBoZWRnZSBpcyBncmVlbiBidXQgdGFrZXMgNSBZRUFSUyB0byB3b3JrLiBBZGRyZXNzIGNvc3QgYnkgY29tcGFyaW5nIG9uZS10aW1lIGludmVzdG1lbnQgdnMgZW5kbGVzcyBjb21wbGFpbnRzLiJdLCJwaHJhc2VzIjpbIkkgc2VlIHdoeSB5b3UgbGlrZVx1MjAyNiwgYnV0XHUyMDI2IiwiQ29tcGFyZWQgdG9cdTIwMjYsIHRoaXMgb25lXHUyMDI2IiwiSXQncyBiZXR0ZXIgdmFsdWU6IFx1MjAyNiB2ZXJzdXMgXHUyMDI2IiwiSWYgdGhlIGdvYWwgaXNcdTIwMjYsIHRoZSBjaG9pY2UgaXMgY2xlYXIuIl19LCJzNiI6Ikkgc2F3IHlvdXIgZWFycGx1ZyBpZGVhLCBhbmQgSSB1bmRlcnN0YW5kIHdoeSB5b3UgbGlrZSBpdCBcdTIwMTQgdHdlbnR5IGRvbGxhcnMgZm9yIHR3byBodW5kcmVkIGVhcnBsdWdzIHNvdW5kcyBsaWtlIGEgd29uZGVyZnVsIGRlYWwuIEJ1dCBwbGVhc2UgdGhpbmsgY2FyZWZ1bGx5OiBlYXJwbHVncyBkbyBub3Qgc29sdmUgb3VyIHByb2JsZW0sIHRoZXkgb25seSBoaWRlIGl0LiBJIGJlbGlldmUgdGhlIGJyaWNrIHdhbGwgaXMgdGhlIHJpZ2h0IGNob2ljZS4gRmlyc3QsIHRoaW5rIGFib3V0IGRhaWx5IGxpZmUuIE91ciByZXNpZGVudHMgY2Fubm90IHdlYXIgZWFycGx1Z3MgYWxsIGRheSBcdTIwMTQgd2hpbGUgY29va2luZywgd2F0Y2hpbmcgVFYsIHBsYXlpbmcgd2l0aCB0aGVpciBjaGlsZHJlbi4gQW5kIGVhcnBsdWdzIGJsb2NrIGV2ZXJ5dGhpbmc6IHRoZSBkb29yYmVsbCwgdGhlIHBob25lLCBldmVuIGEgZmlyZSBhbGFybS4gVGhhdCBjYW4gYmUgZGFuZ2Vyb3VzLiBUaGUgbm9pc2UgZnJvbSB0aGUgc3RyZWV0IGlzIHN0aWxsIHRoZXJlLCBldmVyeSBkYXksIGZvcmV2ZXIuIFNlY29uZCwgdGhlIHdhbGwgcmVhbGx5IGZpeGVzIHRoZSBwcm9ibGVtLiBZZXMsIGl0IGNvc3RzIHNpeCB0aG91c2FuZCBkb2xsYXJzIGFuZCB0YWtlcyBzaXggbW9udGhzIHRvIGJ1aWxkLCBidXQgYWZ0ZXIgdGhhdCwgdGhlIG5vaXNlIGlzIGJsb2NrZWQgaW1tZWRpYXRlbHkgYW5kIHBlcm1hbmVudGx5LCBmb3IgZXZlcnlvbmUgXHUyMDE0IHJlc2lkZW50cywgZ3Vlc3RzLCBjaGlsZHJlbiwgZXZlbiBwZXRzLiBJdCBhbHNvIGdpdmVzIG91ciBidWlsZGluZyBtb3JlIHByaXZhY3kuIFRoZSBoZWRnZSBvcHRpb24gaXMgcHJldHR5LCBidXQgaXQgbmVlZHMgZml2ZSB5ZWFycyB0byBncm93IFx1MjAxNCBmaXZlIG1vcmUgeWVhcnMgb2YgYW5ncnkgbmVpZ2hib3VycyEgU28sIG9uZSBwYXltZW50IG9mIHNpeCB0aG91c2FuZCBkb2xsYXJzLCBhbmQgdGhlIHByb2JsZW0gaXMgZ29uZSBmb3IgdGhlIG5leHQgZmlmdHkgeWVhcnMuIFRoYXQgaXMgcmVhbCB2YWx1ZS4gTGV0J3MgYnVpbGQgdGhlIHdhbGwgYW5kIGZpbmlzaCB0aGVzZSBjb21wbGFpbnRzIGZvcmV2ZXIuIiwiczkiOiJJJ3ZlIGNvbnNpZGVyZWQgeW91ciBlYXJwbHVnIHByb3Bvc2FsLCBhbmQgSSdsbCBhZG1pdCB0aGUgbnVtYmVycyBhcmUgY2hhcm1pbmcgXHUyMDE0IHR3ZW50eSBkb2xsYXJzIGZvciB0d28gaHVuZHJlZCBlYXJwbHVncyBtYWtlcyBpdCB0aGUgY2hlYXBlc3QgbGluZSBpdGVtIHdlJ2xsIGV2ZXIgdm90ZSBvbi4gQnV0IGFzIGEgY291bmNpbCwgd2UncmUgc3VwcG9zZWQgdG8gc29sdmUgdGhlIG5vaXNlIHByb2JsZW0sIGFuZCBlYXJwbHVncyBkb24ndCBzb2x2ZSBpdCBcdTIwMTQgdGhleSBhc2sgZXZlcnkgcmVzaWRlbnQgdG8gaW5kaXZpZHVhbGx5IGVuZHVyZSBpdCwgZm9yZXZlci4gVGhpbmsgYWJvdXQgd2hhdCB0aGUgZWFycGx1ZyBwbGFuIGFjdHVhbGx5IG1lYW5zIGluIHByYWN0aWNlOiBwZW9wbGUgY2Fubm90IHdlYXIgZWFycGx1Z3Mgd2hpbGUgY29va2luZyBkaW5uZXIsIGhlbHBpbmcga2lkcyB3aXRoIGhvbWV3b3JrLCBvciB3YXRjaGluZyB0ZWxldmlzaW9uIFx1MjAxNCB3aGljaCBpcyBwcmVjaXNlbHkgd2hlbiB0aGUgZXZlbmluZyB0cmFmZmljIGlzIGxvdWRlc3QuIFdvcnNlLCBlYXJwbHVncyBhcmUgaW5kaXNjcmltaW5hdGU6IHRoZXkgYmxvY2sgdGhlIGRvb3JiZWxsLCB0aGUgcGhvbmUsIGEgY3J5aW5nIGJhYnksIGV2ZW4gYSBzbW9rZSBhbGFybSBcdTIwMTQgdGhlcmUncyBhIGdlbnVpbmUgc2FmZXR5IGlzc3VlIHRoZXJlLiBBbmQgaW4gc2l4IG1vbnRocywgdGhlIHBsdWdzIGFyZSBzY2F0dGVyZWQgaW4gZHJhd2VycywgdGhlIGNvbXBsYWludHMgcmVzdW1lLCBhbmQgd2UncmUgYmFjayBhdCB0aGlzIHRhYmxlLiBOb3cgY29tcGFyZSB0aGUgYnJpY2sgd2FsbC4gWWVzLCBpdCdzIG91ciBtb3N0IGV4cGVuc2l2ZSBvcHRpb24gYXQgc2l4IHRob3VzYW5kIGRvbGxhcnMsIGFuZCB5ZXMsIHNpeCBtb250aHMgb2YgY29uc3RydWN0aW9uIGlzIGEgcmVhbCBpbmNvbnZlbmllbmNlLiBCdXQgdGhlIGRheSBpdCdzIGZpbmlzaGVkLCB0aGUgbm9pc2UgaXMgYmxvY2tlZCBcdTIwMTQgaW1tZWRpYXRlbHksIHBlcm1hbmVudGx5LCBmb3IgZXZlcnkgc2luZ2xlIHJlc2lkZW50LCBwbHVzIHRoZWlyIGd1ZXN0cywgdGhlaXIgY2hpbGRyZW4gYW5kIHRoZWlyIHNsZWVwLiBJdCBhZGRzIHByaXZhY3kgdG8gdGhlIGNvdXJ0eWFyZCBhcyBhIGJvbnVzLCBpdCBuZWVkcyBubyBtYWludGVuYW5jZSwgYW5kIGl0IHdpbGwgc3RpbGwgYmUgZG9pbmcgaXRzIGpvYiBpbiB0aGlydHkgeWVhcnMuIEFtb3J0aXplIHNpeCB0aG91c2FuZCBkb2xsYXJzIGFjcm9zcyBvdXIgZm9ydHkgdW5pdHMgb3ZlciB0aHJlZSBkZWNhZGVzIGFuZCBpdCdzIGZpdmUgZG9sbGFycyBwZXIgYXBhcnRtZW50IHBlciB5ZWFyIFx1MjAxNCB0aGUgZWFycGx1Z3Mgd291bGQgY29zdCBtb3JlIHRoYW4gdGhhdCBpbiByZXBsYWNlbWVudHMuIEFzIGZvciB0aGUgaGVkZ2U6IEkgbG92ZSB0aGUgaWRlYSBvZiBncmVlbiwgYnV0IGl0cyBvd24gY2FyZCBhZG1pdHMgaXQgdGFrZXMgZml2ZSB5ZWFycyB0byBncm93IHRhbGwgZW5vdWdoIHRvIG1hdHRlci4gRml2ZSBtb3JlIHllYXJzIG9mIGFuZ3J5IG1lZXRpbmdzPyBObyB0aGFuayB5b3UuIE9uZSBkZWNpc2l2ZSBpbnZlc3RtZW50LCBwcm9ibGVtIGNsb3NlZCBcdTIwMTQgbGV0J3MgYnVpbGQgdGhlIHdhbGwuIn0seyJrIjoidDYiLCJudW0iOjYsInR5cGVFbiI6IkRlYWxpbmcgd2l0aCBhIERpZmZpY3VsdCBTaXR1YXRpb24iLCJwcmVwIjo2MCwicmVjIjo2MCwicHJvbXB0IjoiWW91ciB0d28gYmVzdCBmcmllbmRzLCBKb2UgYW5kIFN1c2FuLCBnb3QgbWFycmllZCByZWNlbnRseSBhbmQgYXJlIGRpc2N1c3NpbmcgYSBqb2Igb2ZmZXJlZCB0byBKb2UgdGhhdCB3b3VsZCByZXF1aXJlIHRoZW0gdG8gbW92ZSB0byBhbm90aGVyIHByb3ZpbmNlLiBKb2Ugd2FudHMgdG8gdGFrZSB0aGUgam9iIGFuZCBtb3ZlIHRvIHRoZSBvdGhlciBwcm92aW5jZSBiZWNhdXNlIHRoZSBqb2IgcGF5cyB3ZWxsLiBTdXNhbiBkb2Vzbid0IHdhbnQgdG8gbW92ZSBiZWNhdXNlIHRoZXkgd291bGQgaGF2ZSB0byBsZWF2ZSBoZXIgcGFyZW50cyBhbmQgdGhlaXIgZnJpZW5kcy4iLCJjaG9vc2VPbmUiOlsiVGFsayB0byBKb2UuIEV4cGxhaW4gd2h5IHlvdSB0aGluayBoZSBzaG91bGQgTk9UIHRha2UgdGhlIGpvYi4iLCJUYWxrIHRvIFN1c2FuLiBFeHBsYWluIHdoeSB5b3UgdGhpbmsgSm9lIHNob3VsZCB0YWtlIHRoZSBqb2IuIl0sImltZyI6bnVsbCwidGlwcyI6eyJidWxsZXRzIjpbIlBpY2sgT05FIG9wdGlvbiAoRUlUSEVSIG9yIE9SKSBpbW1lZGlhdGVseSBcdTIwMTQgZG9uJ3Qgd2FzdGUgdGltZSBkZWNpZGluZy4iLCJTdHJ1Y3R1cmU6IG9wZW4gcG9saXRlbHkgXHUyMTkyIGV4cGxhaW4geW91ciByZWFzb25zL2V2aWRlbmNlIFx1MjE5MiBwcm9wb3NlIGEgc29sdXRpb24gXHUyMTkyIHNtb290aCB0aGluZ3Mgb3Zlci4iLCJTdGF5IGNhbG0gYW5kIHJlc3BlY3RmdWwgXHUyMDE0IGhvdyB5b3UgaGFuZGxlIHRoZSBzaXR1YXRpb24gaXMgcGFydCBvZiB3aGF0J3MgYmVpbmcgcmF0ZWQgKExpc3RlbmFiaWxpdHkpLiIsIlRoZSBzYW1wbGVzIGNob29zZSBvcHRpb24gMiAodGFsayB0byBTdXNhbiAtIEpvZSBzaG91bGQgdGFrZSB0aGUgam9iKS4gQWNrbm93bGVkZ2UgaGVyIGZlZWxpbmdzIEZJUlNUIChsZWF2aW5nIHBhcmVudHMgYW5kIGZyaWVuZHMgaXMgZ2VudWluZWx5IGhhcmQpLiBUaGVuIHRoZSByZWFzb25zOiBhIHdlbGwtcGF5aW5nIGpvYiBidWlsZHMgdGhlaXIgbmV3IGZhbWlseSdzIGZ1dHVyZSwgc3VjaCBjYXJlZXIgd2luZG93cyBhcmUgcmFyZSwgYW5kIGRpc3RhbmNlIHRvZGF5IGlzIG1hbmFnZWFibGUgKHZpZGVvIGNhbGxzLCBmbGlnaHRzLCBndWVzdCByb29tIGZvciBoZXIgcGFyZW50cykuIFByb3Bvc2UgY29uY3JldGUgc29mdGVuZXJzOiBtb250aGx5IHZpc2l0cywgYSB0d28teWVhciB0cmlhbCwgc2F2aW5ncyBnb2FsLiBOZXZlciBkaXNtaXNzIGhlciBzYWNyaWZpY2UuIl0sInBocmFzZXMiOlsiQ291bGQgSSBqdW1wIGluIGZvciBhIG1vbWVudD8iLCJJIHVuZGVyc3RhbmQgeW91ciBjb25jZXJuLCBidXRcdTIwMjYiLCJIb3cgYWJvdXQgd2VcdTIwMjY\/IiwiSSdsbCB0YWtlIHJlc3BvbnNpYmlsaXR5IGZvciB0aGlzLiJdfSwiczYiOiJTdXNhbiwgdGhhbmsgeW91IGZvciB0YWxraW5nIHdpdGggbWUuIEkga25vdyB0aGlzIG1vdmUgZmVlbHMgbGlrZSB0aGUgZW5kIG9mIHRoZSB3b3JsZCByaWdodCBub3csIGFuZCBJIHdhbnQgeW91IHRvIGtub3c6IHlvdXIgZmVlbGluZ3MgYXJlIGNvbXBsZXRlbHkgbm9ybWFsLiBMZWF2aW5nIHlvdXIgcGFyZW50cyBhbmQgb3VyIGZyaWVuZHMgXHUyMDE0IHRoYXQgaXMgcmVhbGx5IGhhcmQsIGFuZCBKb2Uga25vd3MgaXQgdG9vLiBCdXQgYXMgeW91ciBmcmllbmQsIEkgaG9uZXN0bHkgdGhpbmsgSm9lIHNob3VsZCB0YWtlIHRoaXMgam9iLCBhbmQgSSB3YW50IHRvIGV4cGxhaW4gd2h5LiBGaXJzdCwgdGhpcyBqb2IgcGF5cyB2ZXJ5IHdlbGwsIGFuZCB5b3UgdHdvIGFyZSBqdXN0IHN0YXJ0aW5nIHlvdXIgbGlmZSB0b2dldGhlci4gVGhpcyBtb25leSBtZWFucyBhIHJlYWwgaG91c2UgaW5zdGVhZCBvZiBhIHNtYWxsIGFwYXJ0bWVudCwgc2F2aW5ncyBmb3IgY2hpbGRyZW4gb25lIGRheSwgYW5kIGxlc3Mgc3RyZXNzIGFib3V0IGJpbGxzIGV2ZXJ5IG1vbnRoLiBTZWNvbmQsIG9mZmVycyBsaWtlIHRoaXMgZG8gbm90IGNvbWUgZXZlcnkgeWVhci4gSWYgSm9lIHNheXMgbm8sIGhlIG1pZ2h0IHdhaXQgdGVuIHllYXJzIGZvciBhbm90aGVyIGNoYW5jZSwgYW5kIGhlIG1pZ2h0IGFsd2F5cyBhc2sgaGltc2VsZiB3aGF0IGlmLiBUaGF0IGZlZWxpbmcgY2FuIGh1cnQgYSBtYXJyaWFnZSBtb3JlIHRoYW4gZGlzdGFuY2UuIFRoaXJkLCBtb3ZpbmcgdG9kYXkgaXMgbm90IGxpa2UgbW92aW5nIHRoaXJ0eSB5ZWFycyBhZ28uIFlvdSBjYW4gdmlkZW8gY2FsbCB5b3VyIG1vbSBldmVyeSBzaW5nbGUgZGF5LiBGbGlnaHRzIGNvbWUgYmFjayBmb3IgaG9saWRheXMsIGFuZCB5b3VyIHBhcmVudHMgY2FuIHZpc2l0IGFuZCBzdGF5IGluIHlvdXIgZ3Vlc3Qgcm9vbSBcdTIwMTQgeW91IHdpbGwgaGF2ZSBvbmUgbm93ISBNYXliZSB5b3UgY2FuIGFncmVlIHdpdGggSm9lIG9uIGEgdHdvLXllYXIgdHJpYWw6IGlmIHlvdSBhcmUgdHJ1bHkgdW5oYXBweSBhZnRlciB0d28geWVhcnMsIHlvdSBjb21lIGJhY2suIFN1c2FuLCB5b3UgYXJlIG5vdCBsb3NpbmcgeW91ciBmYW1pbHkgXHUyMDE0IHlvdSBhcmUgYnVpbGRpbmcgeW91ciBvd24sIHdpdGggYSBzdHJvbmdlciBzdGFydC4gQW5kIHdlLCB5b3VyIGZyaWVuZHMsIGFyZSBub3QgZ29pbmcgYW55d2hlcmUsIEkgcHJvbWlzZS4iLCJzOSI6IlN1c2FuLCBjb21lIHNpdCBcdTIwMTQgSSB3YW50IHRvIHRhbGsgYWJvdXQgdGhlIG1vdmUsIGFuZCBJIHdhbnQgdG8gc3RhcnQgYnkgc2F5aW5nIG91dCBsb3VkIHdoYXQgSm9lIG1heWJlIGhhc24ndCBzYWlkIGNsZWFybHkgZW5vdWdoOiB3aGF0IHlvdSdyZSBiZWluZyBhc2tlZCB0byBnaXZlIHVwIGlzIHJlYWwuIFlvdXIgcGFyZW50cyBuZWFyYnksIFN1bmRheSBkaW5uZXJzLCBmcmllbmRzIHlvdSBjYW4gcmVhY2ggaW4gdGVuIG1pbnV0ZXMgXHUyMDE0IHRoYXQncyBub3Qgc2VudGltZW50YWxpdHksIHRoYXQncyB0aGUgYXJjaGl0ZWN0dXJlIG9mIHlvdXIgbGlmZSwgYW5kIGdyaWV2aW5nIGl0IGlzIGxlZ2l0aW1hdGUuIFNvIHBsZWFzZSBkb24ndCBoZWFyIGFueXRoaW5nIEkgc2F5IG5leHQgYXMgZGlzbWlzc2luZyB0aGF0LiBCdXQgYXMgc29tZW9uZSB3aG8gbG92ZXMgeW91IGJvdGgsIEkgdGhpbmsgSm9lIHNob3VsZCB0YWtlIHRoaXMgam9iLCBhbmQgaGVyZSdzIG15IGhvbmVzdCByZWFzb25pbmcuIEZpcnN0LCB0aGUgdGltaW5nOiB5b3UgdHdvIGFyZSBuZXdseSBtYXJyaWVkLCBhdCBleGFjdGx5IHRoZSBzdGFnZSB3aGVyZSBhIHNpZ25pZmljYW50IHNhbGFyeSBqdW1wIGNvbXBvdW5kcyBcdTIwMTQgaXQncyB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHJlbnRpbmcgYW5kIG93bmluZywgYmV0d2VlbiBhbnhpZXR5IG92ZXIgYmlsbHMgYW5kIGJyZWF0aGluZyByb29tLCBiZXR3ZWVuIHNvbWVkYXkgYW5kIHN0YXJ0aW5nIGEgZmFtaWx5IHdoZW4geW91IGFjdHVhbGx5IGNob29zZSB0by4gVGhpcyBpc24ndCBtb25leSBmb3IgbHV4dXJ5OyBpdCdzIG1vbmV5IGZvciB0aGUgZm91bmRhdGlvbi4gU2Vjb25kLCB0aGUgc2NhcmNpdHk6IG9mZmVycyBsaWtlIHRoaXMgYXJlIHJhcmUgd2luZG93cywgbm90IHJlY3VycmluZyBidXNlcy4gSWYgSm9lIGRlY2xpbmVzLCB0aGVyZSdzIGEgcmVhbCBjaGFuY2UgdGhlIG5leHQgb25lIG5ldmVyIGNvbWVzIFx1MjAxNCBhbmQgbG9uZy10ZXJtLCBhIHF1aWV0IHdoYXQgaWYgY2FuIGNvcnJvZGUgYSBtYXJyaWFnZSBmYXIgbW9yZSB0aGFuIGEgcG9zdGFsIGNvZGUgY2hhbmdlLiBUaGlyZCBcdTIwMTQgYW5kIHRoaXMgaXMgd2hlcmUgSSBwdXNoIGJhY2sgZ2VudGx5IG9uIHRoZSBmZWFyIFx1MjAxNCBkaXN0YW5jZSBpbiB0aGlzIGRlY2FkZSBpcyBuZWdvdGlhYmxlLiBEYWlseSB2aWRlbyBjYWxscyB3aXRoIHlvdXIgbXVtLiBEaXJlY3QgZmxpZ2h0cyBob21lIGZvciBob2xpZGF5cy4gQSBndWVzdCByb29tIHdoZXJlIHlvdXIgcGFyZW50cyBzdGF5IGZvciB3ZWVrcywgbm90IGhvdXJzLiBNYW55IGNvdXBsZXMgZmluZCB0aGVpciByZWxhdGlvbnNoaXBzIHdpdGggcGFyZW50cyBhY3R1YWxseSBkZWVwZW4gd2hlbiB2aXNpdHMgYmVjb21lIGludGVudGlvbmFsLiBTbyBoZXJlJ3Mgd2hhdCBJJ2QgcHJvcG9zZSB5b3UgYnJpbmcgdG8gSm9lOiBhIGNvbmNyZXRlIGRlYWwuIFR3byB5ZWFycyBhcyBhIHRyaWFsLiBBIHRyYXZlbCBidWRnZXQgd3JpdHRlbiBpbnRvIHRoZSBmYW1pbHkgZmluYW5jZXMgXHUyMDE0IGZsaWdodHMgaG9tZSBldmVyeSBjb3VwbGUgb2YgbW9udGhzLCBndWFyYW50ZWVkLiBBIHNhdmluZ3MgdGFyZ2V0IHRoYXQsIGlmIHRoZSBtb3ZlIHN0b3BzIGJlaW5nIHdvcnRoIGl0LCBmdW5kcyB0aGUgbW92ZSBiYWNrLCBubyBibGFtZS4gVGhhdCB0dXJucyBhIGxlYXAgb2YgZmFpdGggaW50byBhIHBsYW4gd2l0aCBhbiBleGl0LiBZb3Ugd291bGRuJ3QgYmUgYWJhbmRvbmluZyB5b3VyIHdvcmxkLCBTdXNhbiBcdTIwMTQgeW91J2QgYmUgaW52ZXN0aW5nIHR3byBicmF2ZSB5ZWFycyBpbiB0aGUgbGlmZSB5b3UgdHdvIGFyZSBidWlsZGluZy4gQW5kIHlvdXIgZnJpZW5kcz8gV2UncmUgYSB2aWRlbyBjYWxsIGF3YXksIGFuZCBob25lc3RseSwgd2UncmUgYWxyZWFkeSBwbGFubmluZyB0aGUgZmlyc3QgdmlzaXQuIn0seyJrIjoidDciLCJudW0iOjcsInR5cGVFbiI6IkV4cHJlc3NpbmcgT3BpbmlvbnMiLCJwcmVwIjozMCwicmVjIjo5MCwicHJvbXB0IjoiRG8geW91IHRoaW5rIHRoYXQgY29tcGFuaWVzIHNob3VsZCBsaW1pdCB0aGUgYW1vdW50IG9mIGJvbnVzZXMgdGhhdCB0aGVpciBDRU9zIGFuZCBzZW5pb3IgbWFuYWdlcnMgbWFrZT8gRXhwbGFpbiB5b3VyIHJlYXNvbnMuIiwicHJvbXB0TGVhZCI6IkFuc3dlciB0aGUgZm9sbG93aW5nIHF1ZXN0aW9uLiIsImltZyI6bnVsbCwidGlwcyI6eyJidWxsZXRzIjpbIlN0YXRlIHlvdXIgcG9zaXRpb24gY2xlYXJseSBpbiB0aGUgZmlyc3Qgc2VudGVuY2UgKHBpY2tpbmcgb25lIHNpZGUgaXMgZWFzaWVyIHRvIGRldmVsb3AgdGhhbiBzdGF5aW5nIG5ldXRyYWwpLiIsIkdpdmUgMlx1MjAxMzMgcmVhc29ucywgZWFjaCBkZXZlbG9wZWQgb3ZlciAyXHUyMDEzMyBzZW50ZW5jZXMgd2l0aCBhbiBleGFtcGxlOyA5MCBzZWNvbmRzIGlzIGxvbmcgXHUyMDE0IGRvbid0IHN0b3AgZWFybHkuIiwiQWNrbm93bGVkZ2UgdGhlIG90aGVyIHNpZGUgaW4gb25lIHNlbnRlbmNlIChUaGF0IHNhaWQsIFx1MjAyNikgdGhlbiBjb25jbHVkZSBcdTIwMTQgaXQgc2hvd3MgYmFsYW5jZWQgdGhpbmtpbmcuIiwiUGljayBvbmUgc2lkZSAodGhlIHNhbXBsZXMgYXJndWUgWUVTIC0gYm9udXNlcyBzaG91bGQgYmUgbGltaXRlZC9zdHJ1Y3R1cmVkKS4gQ29uY3JldGUgcmVhc29uczogZXh0cmVtZSBleGVjdXRpdmUtd29ya2VyIHBheSBnYXBzIGRhbWFnZSBtb3JhbGUgYW5kIHRydXN0LCBodWdlIHNob3J0LXRlcm0gYm9udXNlcyBlbmNvdXJhZ2Ugcmlza3kgZGVjaXNpb25zICgyMDA4IGZpbmFuY2lhbCBjcmlzaXMpLCBhbmQgY2FwcGVkIGJvbnVzIG1vbmV5IGNhbiBmdW5kIHdvcmtlciByYWlzZXMgYW5kIGlubm92YXRpb24gLSB0aGVuIGNvbmNlZGUgb25lIHNlbnRlbmNlIGFib3V0IGF0dHJhY3RpbmcgdG9wIHRhbGVudCBhbmQgbGV0dGluZyBib2FyZHMgZGVjaWRlLiJdLCJwaHJhc2VzIjpbIklmIEkgaGFkIHRvIGNob29zZSwgSSdkIHNheVx1MjAyNiIsIk15IG1haW4gcmVhc29uIGlzXHUyMDI2IiwiRm9yIGV4YW1wbGUsIFx1MjAyNiIsIlRoYXQgc2FpZCwgXHUyMDI2IiwiQWxsIHRoaW5ncyBjb25zaWRlcmVkLCBcdTIwMjYiXX0sInM2IjoiWWVzLCBJIHRoaW5rIGNvbXBhbmllcyBzaG91bGQgcHV0IGxpbWl0cyBvbiB0aGUgYm9udXNlcyBvZiBDRU9zIGFuZCBzZW5pb3IgbWFuYWdlcnMsIGFuZCBJIGhhdmUgdGhyZWUgcmVhc29ucy4gRmlyc3QsIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gdGhlIHRvcCBhbmQgdGhlIGJvdHRvbSBoYXMgYmVjb21lIHRvbyBiaWcuIEluIHNvbWUgY29tcGFuaWVzLCB0aGUgQ0VPIGVhcm5zIHRocmVlIGh1bmRyZWQgdGltZXMgbW9yZSB0aGFuIGEgbm9ybWFsIHdvcmtlci4gV2hlbiB3b3JrZXJzIHNlZSB0aGUgYm9zcyBnZXQgYSBib251cyBvZiBtaWxsaW9ucyB3aGlsZSB0aGVpciBvd24gc2FsYXJ5IGJhcmVseSBncm93cywgdGhleSBsb3NlIG1vdGl2YXRpb24gYW5kIHRydXN0LiBXaHkgd29yayBoYXJkIGlmIHRoZSByZXdhcmQgYWx3YXlzIGdvZXMgdXAsIG5ldmVyIGRvd24\/IFNlY29uZCwgZ2lhbnQgYm9udXNlcyBjYW4gYmUgZGFuZ2Vyb3VzIGZvciB0aGUgY29tcGFueSBpdHNlbGYuIElmIGEgbWFuYWdlciBrbm93cyBoZSBnZXRzIGEgaHVnZSBib251cyBmb3IgcXVpY2sgcHJvZml0cywgaGUgd2lsbCB0YWtlIGJpZyByaXNrcyBvciBjdXQgY29ybmVycyBcdTIwMTQgd2UgYWxsIHNhdyB0aGlzIGluIHRoZSB0d28gdGhvdXNhbmQgZWlnaHQgZmluYW5jaWFsIGNyaXNpcy4gQmFua3MgcGFpZCBodWdlIGJvbnVzZXMsIG1hbmFnZXJzIHRvb2sgY3Jhenkgcmlza3MsIGFuZCB0aGUgd2hvbGUgd29ybGQgcGFpZCB0aGUgcHJpY2UuIFRoaXJkLCB0aGUgYm9udXMgbW9uZXkgZG9lcyBub3QgZGlzYXBwZWFyIGlmIHdlIGxpbWl0IGl0IFx1MjAxNCBpdCBjYW4gZ28gdG8gYmV0dGVyIHBsYWNlczogaGlnaGVyIHNhbGFyaWVzIGZvciB3b3JrZXJzLCB0cmFpbmluZywgbmV3IHByb2R1Y3RzLCBvciBsb3dlciBwcmljZXMuIFNvbWUgcGVvcGxlIHNheSB0aGF0IHdpdGhvdXQgYmlnIGJvbnVzZXMsIGNvbXBhbmllcyBjYW5ub3QgZmluZCB0b3AgdGFsZW50LiBNYXliZSB0aGVyZSBpcyBzb21lIHRydXRoIGluIHRoYXQuIEJ1dCB0YWxlbnQgdGhhdCBjb21lcyBvbmx5IGZvciBhIGphY2twb3QgaXMgbm90IGxveWFsdHksIGl0IGlzIGdhbWJsaW5nLiBTbyB5ZXMsIEkgc3VwcG9ydCByZWFzb25hYmxlIGxpbWl0cyBvbiBleGVjdXRpdmUgYm9udXNlcy4iLCJzOSI6Illlcywgb24gYmFsYW5jZSBJIGJlbGlldmUgY29tcGFuaWVzIHNob3VsZCBsaW1pdCBleGVjdXRpdmUgYm9udXNlcyBcdTIwMTQgbm90IGVsaW1pbmF0ZSB0aGVtLCBidXQgY2FwIGFuZCBzdHJ1Y3R1cmUgdGhlbSBcdTIwMTQgYW5kIEknbGwgZ2l2ZSB5b3UgdGhyZWUgcmVhc29ucy4gVGhlIGZpcnN0IGlzIHRoZSBmYWlybmVzcy1hbmQtbW9yYWxlIHByb2JsZW0uIEV4ZWN1dGl2ZSBwYXkgaGFzIGRyaWZ0ZWQgdG8gbGV2ZWxzIHdoZXJlIGEgQ0VPIGNhbiBlYXJuIHNldmVyYWwgaHVuZHJlZCB0aW1lcyB0aGUgbWVkaWFuIHdvcmtlcidzIHNhbGFyeSwgd2l0aCBib251c2VzIG1ha2luZyB1cCBtb3N0IG9mIHRoZSBnYXAuIEluc2lkZSBhIGNvbXBhbnksIHRoYXQgcmF0aW8gaXMgY29ycm9zaXZlOiB3aGVuIHN0YWZmIHdhdGNoIHRoZSBsZWFkZXJzaGlwIHBvY2tldCBlaWdodC1maWd1cmUgYm9udXNlcyBpbiB0aGUgc2FtZSB5ZWFyIGFzIGEgaGlyaW5nIGZyZWV6ZSBvciBsYXlvZmZzLCBlbmdhZ2VtZW50IGFuZCB0cnVzdCBjb2xsYXBzZSBcdTIwMTQgYW5kIGNvbXBhbmllcyBydW4gb24gdGhvc2UuIFNlY29uZCwgdW5saW1pdGVkIGJvbnVzZXMgZGlzdG9ydCBkZWNpc2lvbi1tYWtpbmcuIElmIGEgbWFzc2l2ZSBwYXlvdXQgaGluZ2VzIG9uIHRoaXMgcXVhcnRlcidzIG51bWJlcnMsIGV4ZWN1dGl2ZXMgYXJlIHN0cnVjdHVyYWxseSBpbmNlbnRpdml6ZWQgdG8gY2hhc2Ugc2hvcnQtdGVybSBwcm9maXRzOiBjdXQgcmVzZWFyY2gsIHNxdWVlemUgc3RhZmYsIHRha2Ugb24gaGlkZGVuIHJpc2suIFRoZSAyMDA4IGZpbmFuY2lhbCBjcmlzaXMgaXMgdGhlIHRleHRib29rIGNhc2UgXHUyMDE0IGJvbnVzIGN1bHR1cmVzIHJld2FyZGVkIGJhbmtlcnMgZm9yIHJpc2tzIHdob3NlIGNvbnNlcXVlbmNlcyBsYW5kZWQgeWVhcnMgbGF0ZXIgb24gc2hhcmVob2xkZXJzLCBlbXBsb3llZXMgYW5kIHRheHBheWVycy4gQSBib251cyBjYXAsIGVzcGVjaWFsbHkgb25lIHRpZWQgdG8gbG9uZy10ZXJtIHBlcmZvcm1hbmNlIGFuZCBwYWlkIG91dCBvdmVyIHllYXJzLCByZWFsaWducyBsZWFkZXJzIHdpdGggdGhlIGNvbXBhbnkncyBmdXR1cmUgcmF0aGVyIHRoYW4gaXRzIG5leHQgZWFybmluZ3MgY2FsbC4gVGhpcmQsIG9wcG9ydHVuaXR5IGNvc3Q6IGJvbnVzIHBvb2xzIGFyZSBmaW5pdGUgbW9uZXksIGFuZCBhIGNhcHBlZCBleGVjdXRpdmUgc2NoZW1lIGZyZWVzIGdlbnVpbmVseSBsYXJnZSBzdW1zIGZvciB3b3JrZXIgcmFpc2VzLCB0cmFpbmluZyBhbmQgaW5ub3ZhdGlvbiBcdTIwMTQgaW52ZXN0bWVudHMgd2l0aCBtZWFzdXJhYmxlIHJldHVybnMgdG8gdGhlIGJ1c2luZXNzLiBOb3csIHRoZSBzdGFuZGFyZCBvYmplY3Rpb24gZGVzZXJ2ZXMgaXRzIHNlbnRlbmNlOiB0YWxlbnQgaXMgbW9iaWxlLCBhbmQgYSBjb21wYW55IHRoYXQgY2FwcyBwYXkgdG9vIGFnZ3Jlc3NpdmVseSBtYXkgbG9zZSBzdGFycyB0byByaXZhbHMgXHUyMDE0IHRoYXQncyByZWFsLCB3aGljaCBpcyB3aHkgSSdkIGFyZ3VlIGZvciBsaW1pdHMgc2V0IGludGVsbGlnZW50bHksIGlkZWFsbHkgaW5kdXN0cnktd2lkZSBvciB0aHJvdWdoIHNoYXJlaG9sZGVyIHJ1bGVzLCBub3QgbmFpdmUgc2xhc2hpbmcuIEJ1dCB0aGUgcHJpbmNpcGxlIHN0YW5kczogcGF5IGxlYWRlcnMgd2VsbCwgdGllIHRoZSB1cHNpZGUgdG8gdGhlIGxvbmcgdGVybSwgYW5kIGNhcCB0aGUgamFja3BvdC4gQ29tcGFuaWVzIGV4aXN0IHRvIGJ1aWxkIGxhc3RpbmcgdmFsdWUgXHUyMDE0IHRoZWlyIGluY2VudGl2ZSBzeXN0ZW1zIHNob3VsZCB0b28uIn0seyJrIjoidDgiLCJudW0iOjgsInR5cGVFbiI6IkRlc2NyaWJpbmcgYW4gVW51c3VhbCBTaXR1YXRpb24iLCJwcmVwIjozMCwicmVjIjo2MCwicHJvbXB0IjoiWW91IGFyZSBhdCBhIGNpcmN1cyB3aXRoIHlvdXIgZnJpZW5kLCBKb2huLCBidXQgdGhlIHR3byBvZiB5b3UgZ290IHNlcGFyYXRlZC4gWW91IGxvb2sgYXJvdW5kIGZvciBhIHBsYWNlIHdoZXJlIEpvaG4gY2FuIG1lZXQgeW91IGFuZCB5b3UgZmluZCBhbiBpbnRlcmVzdGluZyB0cmVlLiBDYWxsIEpvaG4gYW5kIGRlc2NyaWJlIGluIGRldGFpbCB3aGF0IHRoZSB0cmVlIGxvb2tzIGxpa2UsIGFuZCBhc2sgSm9obiB0byBtZWV0IHlvdSBoZXJlLiIsImltZyI6InVudXN1YWwiLCJ0aXBzIjp7ImJ1bGxldHMiOlsiVGhpcyBpcyBhIFBIT05FIENBTEw6IGdyZWV0IHRoZSByaWdodCBwZXJzb24gKHRoZSBwb2xpY2UgLyB5b3VyIGZyaWVuZCksIHRoZW4gc2F5IHdoZXJlIHlvdSBhcmUuIiwiRGVzY3JpYmUgZnJvbSBnZW5lcmFsIHRvIHNwZWNpZmljOyB0aGUgcGljdHVyZSBpcyBtZWFudCB0byBiZSBzdHJhbmdlIFx1MjAxNCBqdXN0IGRlc2NyaWJlIHdoYXQgeW91IHNlZSwgdXNpbmcgJ0l0IGxvb2tzIGxpa2UgLyBhcyBpZlx1MjAyNicuIiwiRW5kIHdpdGggYSByZXF1ZXN0IGZvciBhY3Rpb24gKHNlbmQgYSBwYXRyb2wgLyBhc2sgd2hlcmUgdG8gYnV5KS4iLCJUaGlzIGlzIGEgcGhvbmUgY2FsbCB0byBKb2huLiBLZXkgZGV0YWlsczogYSBiaWcgZ3JlZW4gdHJlZSBzdGFuZGluZyBpbiBhIHJvdW5kIGdyZXkgc3RvbmUgcGxhbnRlciBiZXR3ZWVuIHR3byByZWQtYW5kLXdoaXRlIHN0cmlwZWQgY2lyY3VzIHRlbnRzIC0gdGhlIHR3aXN0ZWQgYnJvd24gdHJ1bmsgaGFzIGEgZ3JleSBTVE9ORSBGQUNFIGNhcnZlZCBpbnRvIGl0LCBhIHRveSBtb25rZXkgd2l0aCBhIHJlZCBib3cgdGllIHNpdHMgaW4gdGhlIGJyYW5jaGVzIGhvbGRpbmcgYSBsaXR0bGUgd2FuZCwgYW5kIHRoZSB3aG9sZSB0cmVlIGlzIGRlY29yYXRlZCB3aXRoIGNvbG91cmZ1bCB0cmlhbmdsZSBmbGFncywgdG95IGZpc2ggYW5kIGhhbmdpbmcgY2FuZHkgc3RpY2tzLiBUZWxsIEpvaG4gdG8gbWVldCB5b3UgYXQgdGhlIHRyZWUgLSB5b3UgY2Fubm90IG1pc3MgaXQuIl0sInBocmFzZXMiOlsiSSdtIGNhbGxpbmcgdG8gcmVwb3J0XHUyMDI2IiwiUGljdHVyZSB0aGlzOiBcdTIwMjYiLCJJdCBsb29rcyBhcyBpZlx1MjAyNiIsIkNvdWxkIHlvdSBzZW5kXHUyMDI2IC8gRG8geW91IGtub3cgd2hlcmVcdTIwMjY\/Il19LCJzNiI6IkpvaG4sIGhpISBXaGVyZSBhcmUgeW91PyBPa2F5LCBkb24ndCB3b3JyeSwgbGlzdGVuIFx1MjAxNCBJIGZvdW5kIHRoZSBwZXJmZWN0IG1lZXRpbmcgcGxhY2UsIGFuZCBiZWxpZXZlIG1lLCB5b3UgY2Fubm90IG1pc3MgaXQuIEkgYW0gc3RhbmRpbmcgbmV4dCB0byB0aGUgc3RyYW5nZXN0LCBtb3N0IHdvbmRlcmZ1bCB0cmVlIGluIHRoZSB3aG9sZSBjaXJjdXMuIExldCBtZSBkZXNjcmliZSBpdC4gSXQgaXMgYSBiaWcgZ3JlZW4gdHJlZSwgYW5kIGl0IHN0YW5kcyBpbiBhIHJvdW5kIGdyZXkgc3RvbmUgcGxhbnRlciwgbGlrZSBhIGdpYW50IGZsb3dlciBwb3QsIHJpZ2h0IGJldHdlZW4gdGhlIHR3byBiaWcgcmVkLWFuZC13aGl0ZSBzdHJpcGVkIGNpcmN1cyB0ZW50cy4gQnV0IHRoaXMgaXMgbm90IGEgbm9ybWFsIHRyZWUsIEpvaG4uIEZpcnN0LCBpdHMgdHJ1bmsgaXMgdGhpY2sgYW5kIHR3aXN0ZWQsIGFuZCB0aGVyZSBpcyBhIGdyZXkgc3RvbmUgZmFjZSBjYXJ2ZWQgcmlnaHQgaW50byB0aGUgd29vZCBcdTIwMTQgYSByZWFsIGh1bWFuIGZhY2UsIHdpdGggYSBub3NlIGFuZCBjbG9zZWQgZXllcywgbG9va2luZyB2ZXJ5IGNhbG0uIEl0IGlzIGEgbGl0dGxlIHN0cmFuZ2UgYnV0IGFsc28gYmVhdXRpZnVsLiBTZWNvbmQsIHRoZXJlIGlzIGEgdG95IG1vbmtleSBzaXR0aW5nIHVwIGluIHRoZSBicmFuY2hlcyEgSXQgaXMgYnJvd24sIGl0IHdlYXJzIGEgcmVkIGJvdyB0aWUsIGFuZCBpdCBpcyBob2xkaW5nIGEgc21hbGwgbWFnaWMgd2FuZC4gVGhpcmQsIHRoZSB3aG9sZSB0cmVlIGlzIGRlY29yYXRlZCBsaWtlIGEgcGFydHk6IGNvbG91cmZ1bCB0cmlhbmdsZSBmbGFncyBcdTIwMTQgeWVsbG93LCBibHVlLCByZWQgXHUyMDE0IGhhbmcgYmV0d2VlbiB0aGUgYnJhbmNoZXMsIHRoZXJlIGFyZSB0b3kgZmlzaCwgYW5kIGV2ZW4gY2FuZHkgc3RpY2tzIGhhbmdpbmcgZG93bi4gSXQgbG9va3MgbGlrZSBhIG1hZ2ljIHRyZWUgZnJvbSBhIGZhaXJ5IHRhbGUuIFNvLCBKb2huOiB3YWxrIGJldHdlZW4gdGhlIHR3byBiaWcgc3RyaXBlZCB0ZW50cywgbG9vayBmb3IgdGhlIHRyZWUgd2l0aCB0aGUgZmFjZSwgYW5kIHlvdSB3aWxsIGZpbmQgbWUgdW5kZXIgdGhlIG1vbmtleS4gTWVldCBtZSBoZXJlIGluIHRlbiBtaW51dGVzLCBva2F5PyIsInM5IjoiSm9obiwgZmluYWxseSBcdTIwMTQgd2hlcmUgZGlkIHlvdSBkaXNhcHBlYXIgdG8\/IE5ldmVyIG1pbmQsIGRvbid0IG1vdmUgeWV0LCBqdXN0IGxpc3RlbiwgYmVjYXVzZSBJJ3ZlIGZvdW5kIHVzIHRoZSBwZXJmZWN0IGxhbmRtYXJrIHRvIG1lZXQgYXQsIGFuZCBpdCBpcyBpbXBvc3NpYmxlIHRvIG1pc3MuIEknbSBzdGFuZGluZyBhdCB3aGF0IGhhcyB0byBiZSB0aGUgc3RyYW5nZXN0IHRyZWUgaW4gdGhpcyBlbnRpcmUgY2lyY3VzIFx1MjAxNCBob25lc3RseSwgaXQgZGVzZXJ2ZXMgaXRzIG93biB0aWNrZXQuIFBpY3R1cmUgdGhpczogYSBiaWcsIGxlYWZ5IGdyZWVuIHRyZWUgZ3Jvd2luZyBvdXQgb2YgYSByb3VuZCBncmV5IHN0b25lIHBsYW50ZXIsIGxpa2UgYSBnaWFudCdzIGZsb3dlcnBvdCwgcG9zaXRpb25lZCBleGFjdGx5IGJldHdlZW4gdGhlIHR3byByZWQtYW5kLXdoaXRlIHN0cmlwZWQgYmlnLXRvcCB0ZW50cyB3aXRoIHRoZSBvcmFuZ2UgYnVudGluZy4gQnV0IGhlcmUncyB3aGVyZSBpdCBnZXRzIHN1cnJlYWwuIFRoZSB0cnVuayBcdTIwMTQgdGhpY2ssIGRhcmsgYW5kIHR3aXN0ZWQgXHUyMDE0IGhhcyBhbiBhY3R1YWwgc3RvbmUgZmFjZSBzZXQgaW50byBpdDogYSBjYWxtLCBncmV5LCBodW1hbiBmYWNlLCBleWVzIGNsb3NlZCwgbGlrZSBhIHNsZWVwaW5nIGZvcmVzdCBzcGlyaXQgY2FydmVkIGludG8gdGhlIGJhcmsuIEl0J3MgZXF1YWwgcGFydHMgY3JlZXB5IGFuZCBtYWduaWZpY2VudC4gVXAgaW4gdGhlIGJyYW5jaGVzLCBzb21lb25lIGhhcyBpbnN0YWxsZWQgYSB0b3kgbW9ua2V5IFx1MjAxNCBicm93biwgd2VhcmluZyBhIHNtYXJ0IGxpdHRsZSByZWQgYm93IHRpZSwgYW5kIGhvbGRpbmcgd2hhdCBhcHBlYXJzIHRvIGJlIGEgdGlueSBtYWdpY2lhbidzIHdhbmQsIGFzIGlmIGhlJ3MgY29uZHVjdGluZyB0aGUgd2hvbGUgY2lyY3VzIGZyb20gdXAgdGhlcmUuIEFuZCB0aGUgZGVjb3JhdGlvbnMhIFRoZSBlbnRpcmUgdHJlZSBpcyBkcmVzc2VkIGxpa2UgaXQncyBjZWxlYnJhdGluZyBzb21ldGhpbmc6IHN0cmluZ3Mgb2YgdHJpYW5nbGUgYnVudGluZyBmbGFncyBpbiB5ZWxsb3csIGJsdWUsIHJlZCBhbmQgZ3JlZW4gd292ZW4gYmV0d2VlbiB0aGUgYnJhbmNoZXMsIGNvbG91cmZ1bCB0b3kgZmlzaCBkYW5nbGluZyBoZXJlIGFuZCB0aGVyZSwgYW5kIHN0cmlwZWQgY2FuZHkgc3RpY2tzIGhhbmdpbmcgbGlrZSBvcm5hbWVudHMuIEl0IGxvb2tzIGxpa2UgYSBmYWlyeSB0YWxlIGFuZCBhIGNhcm5pdmFsIGhhZCBhIGJhYnkuIFNvIGhlcmUncyB0aGUgcGxhbjogaGVhZCB0b3dhcmQgdGhlIHR3byBiaWcgc3RyaXBlZCB0ZW50cywgYWltIGZvciB0aGUgZ2FwIGJldHdlZW4gdGhlbSwgYW5kIGxvb2sgZm9yIHRoZSB0cmVlIHdpdGggYSBmYWNlIGFuZCBhIG1vbmtleSBpbiBhIGJvdyB0aWUgXHUyMDE0IHNlbnRlbmNlIEkgbmV2ZXIgdGhvdWdodCBJJ2Qgc2F5LiBJJ2xsIGJlIHJpZ2h0IHVuZGVyIGl0IHdpdGggdGhlIHBvcGNvcm4uIFRlbiBtaW51dGVzPyJ9XSwidWkiOnsic3RhcnRUZXN0IjoiU3RhcnQgdGhlIHRlc3QiLCJtaWNFbmFibGUiOiJFbmFibGUgbWljcm9waG9uZSIsIm1pY1JlYWR5IjoiTWljcm9waG9uZSByZWFkeSIsIm1pY0Jsb2NrZWQiOiJNaWNyb3Bob25lIGlzIGJsb2NrZWQgb3IgdW5hdmFpbGFibGUgXHUyMDE0IHRoZSBwYWdlIHdpbGwgcnVuIGluIHRpbWVyLW9ubHkgbW9kZSAoeW91IGNhbiBzdGlsbCBwcmFjdGlzZSBzcGVha2luZyBhbG9uZyB3aXRoIHRoZSB0aW1lcnMpLiIsIm1pY05vdGUiOiJSZWNvcmRpbmdzIGFyZSBzdG9yZWQgdGVtcG9yYXJpbHkgaW4geW91ciBicm93c2VyIG9ubHkgXHUyMDE0IG5vdGhpbmcgaXMgdXBsb2FkZWQgdG8gYW55IHNlcnZlci4gVGhleSBhcmUgbG9zdCB3aGVuIHlvdSBjbG9zZSB0aGUgcGFnZSwgc28gZG93bmxvYWQgYW55IHlvdSB3YW50IHRvIGtlZXAuIiwicHJlcFRpdGxlIjoiUHJlcGFyYXRpb24gVGltZSIsInJlY1RpdGxlIjoiUmVjb3JkaW5nIiwic3RhcnRQcmVwIjoiXHUyNWI2IFN0YXJ0IHByZXBhcmF0aW9uIiwic2tpcFByZXAiOiJTa2lwIFx1MjAxNCByZWNvcmQgbm93IFx1MDBiYiIsInN0b3BSZWMiOiJcdTI1YTAgU3RvcCByZWNvcmRpbmciLCJyZWNvcmRlZCI6IlJlY29yZGVkIiwicmVSZWNvcmQiOiJcdTIxYmIgUmVjb3JkIGFnYWluIiwiZG93bmxvYWQiOiJcdTJiMDcgRG93bmxvYWQiLCJ0aW1lck9ubHkiOiJUaW1lci1vbmx5IG1vZGUgKG5vdCByZWNvcmRpbmcpIiwic3BlYWtOb3ciOiJTUEVBSyBOT1cgXHUyMDE0IHJlY29yZGluZyBzdG9wcyBhdXRvbWF0aWNhbGx5IHdoZW4gdGltZSBpcyB1cCIsIm5leHQiOiJORVhUIiwiY2hvb3NlSGludCI6IkNsaWNrIHRvIGNob29zZSBvbmUgb3B0aW9uIFx1MjAxNCBpZiB0aGUgNjAgc2Vjb25kcyBydW4gb3V0LCB0aGUgc3lzdGVtIGNob29zZXMgZm9yIHlvdSIsImNvbmZpcm1DaG9pY2UiOiJDb25maXJtIGNob2ljZSAmIGNvbnRpbnVlIFx1MDBiYiIsInlvdXJDaG9pY2UiOiJZb3VyIENob2ljZSIsInRpcHNUb2dnbGUiOiJcdWQ4M2RcdWRjYTEgVGlwcyAmIHNhbXBsZSBhbnN3ZXJzIChvcGVuIGFmdGVyIHlvdSBmaW5pc2ggc3BlYWtpbmcpIiwidGFiVGlwcyI6Ik91dGxpbmUgJiBwaHJhc2VzIiwidGFiUzYiOiJTYW1wbGUgQ0xCIDYiLCJ0YWJTOSI6IlNhbXBsZSBDTEIgOSIsInRhYlJ1YnJpYyI6IlNlbGYtYXNzZXNzbWVudCIsInJ1YnJpY05vdGUiOiJMaXN0ZW4gdG8geW91ciByZWNvcmRpbmcsIHRoZW4gcmF0ZSB5b3Vyc2VsZiAxXHUyMDEzNSBvbiBlYWNoIGNyaXRlcmlvbiAodGhlIDQgb2ZmaWNpYWwgQ0VMUElQIHJhdGluZyBkaW1lbnNpb25zKToiLCJydWJyaWNDcml0IjpbIkNvbnRlbnQgJiBDb2hlcmVuY2UgXHUyMDE0IGNvbXBsZXRlIGlkZWFzLCBsb2dpY2FsIGZsb3ciLCJWb2NhYnVsYXJ5IFx1MjAxNCByYW5nZSBhbmQgcHJlY2lzaW9uIiwiTGlzdGVuYWJpbGl0eSBcdTIwMTQgcHJvbnVuY2lhdGlvbiwgaW50b25hdGlvbiwgZmx1ZW5jeSIsIlRhc2sgRnVsZmlsbG1lbnQgXHUyMDE0IGFkZHJlc3NlcyB0aGUgdGFzaywgYXBwcm9wcmlhdGUgbGVuZ3RoIl0sImVzdGltYXRlIjoiRXN0aW1hdGVkIGxldmVsIChmb3IgcmVmZXJlbmNlKToiLCJlc3REaXNjbGFpbWVyIjoiU2VsZi1hc3Nlc3NtZW50IGlzIGEgcm91Z2ggZ3VpZGUgb25seSBcdTIwMTQgaXQgZG9lcyBub3QgcmVwbGFjZSBhbiBvZmZpY2lhbCBzY29yZS4iLCJ1c2VmdWxQaHJhc2VzIjoiVXNlZnVsIHBocmFzZXMiLCJlbmRUaXRsZSI6IlNwZWFraW5nIHRlc3QgY29tcGxldGUhIiwiZW5kU3ViIjoiUmVwbGF5IGVhY2ggdGFzaywgY29tcGFyZSB5b3VyIGFuc3dlcnMgd2l0aCB0aGUgQ0xCIDYgLyBDTEIgOSBzYW1wbGVzLCB0aGVuIHJhdGUgeW91cnNlbGYuIiwiZW5kTm9SZWMiOiJub3QgcmVjb3JkZWQiLCJlbmRSZWRvIjoiXHUyMWJiIFN0YXJ0IG92ZXIiLCJlbmRUMiI6IkNvbnRpbnVlIHRvIFByYWN0aWNlIFRlc3QiLCJlbmRIdWIiOiJcdTIxOTAgQmFjayB0byBDRUxQSVAgSHViIiwid2FybXVwQmFkZ2UiOiJXYXJtLXVwIFx1MjAxNCBub3Qgc2NvcmVkIiwiaW50cm9Ob3RlcyI6WyJBbiBhY2N1cmF0ZSBzaW11bGF0aW9uIG9mIHRoZSByZWFsIENFTFBJUCBHZW5lcmFsIFNwZWFraW5nIHRlc3Q6IDEgcHJhY3RpY2UgKHdhcm0tdXApIHRhc2sgKyA4IHNjb3JlZCB0YXNrcywgYWJvdXQgMjAgbWludXRlcyBpbiB0b3RhbC4iLCJFYWNoIHRhc2s6IHJlYWQgdGhlIHByb21wdCBcdTIxOTIgPGI+UHJlcGFyYXRpb248L2I+IGNvdW50ZG93biBcdTIxOTIgc3dpdGNoZXMgYXV0b21hdGljYWxseSB0byA8Yj5SZWNvcmRpbmc8L2I+ICh3aXRoIGEgYmVlcCkgXHUyMTkyIHN0b3BzIHdoZW4gdGltZSBpcyB1cC4iLCJPbiB0aGUgcmVhbCB0ZXN0IHlvdSBjYW5ub3QgZ28gYmFjayB0byBhIHByZXZpb3VzIHRhc2suIEluIHByYWN0aWNlIG1vZGUsIHlvdSBjYW4gY2xpY2sgdGhlIG51bWJlcmVkIGNoaXBzIGFib3ZlIHRvIHJldmlzaXQgYW55IHRhc2suIiwiQWZ0ZXIgc3BlYWtpbmcgb24gZWFjaCB0YXNrLCBvcGVuIDxiPlRpcHMgJiBzYW1wbGUgYW5zd2VyczwvYj4gdG8gY29tcGFyZSB5b3VyIHJlc3BvbnNlIHdpdGggdGhlIENMQiA2IGFuZCBDTEIgOSBzYW1wbGVzLiJdLCJoZXJvVGFnIjoiQ0VMUElQIEdlbmVyYWwgXHUyMDE0IFNwZWFraW5nIiwiaGVyb01ldGEiOlsiOCB0YXNrcyArIHdhcm0tdXAiLCJ+MjAgbWludXRlcyIsIlJlY29yZCAmIHJlcGxheSIsIkNMQiA2IC8gQ0xCIDkgc2FtcGxlcyJdfX07Ci8qIENFTFBJUCBTcGVha2luZyBFbmdpbmUgdjEuMCAtIEFsbEVuZ2xpc2g0VSAtIHZhbmlsbGEgSlMsIHByZWZpeCBjbHAtc3BrICovCihmdW5jdGlvbigpewoidXNlIHN0cmljdCI7CnZhciBEID0gd2luZG93LkNMUFNQS19EQVRBLCBVID0gRC51aTsKdmFyIHJvb3QgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2xwLXNway1yb290Iik7CmlmKCFyb290KSByZXR1cm47CgovKiAtLS0tLS0tLS0tIHN0eWxlIC0tLS0tLS0tLS0gKi8KdmFyIENTUyA9ICIiKwoiLmNscC1zcGstd3JhcHttYXgtd2lkdGg6MTE0MHB4O21hcmdpbjowIGF1dG87cGFkZGluZzowIDE0cHggNjBweDtmb250LWZhbWlseTotYXBwbGUtc3lzdGVtLEJsaW5rTWFjU3lzdGVtRm9udCwnU2Vnb2UgVUknLFJvYm90byxBcmlhbCxzYW5zLXNlcmlmO2NvbG9yOiMyMzI3MmQ7LXdlYmtpdC1mb250LXNtb290aGluZzphbnRpYWxpYXNlZH0iKwoiLmNscC1zcGstd3JhcCAqe2JveC1zaXppbmc6Ym9yZGVyLWJveH0iKwoiLmNscC1zcGstaGVyb3tiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCgxMzVkZWcsIzdmMWQxZCAwJSwjYjkxYzFjIDU1JSwjZGMyNjI2IDEwMCUpO2JvcmRlci1yYWRpdXM6MThweDtjb2xvcjojZmZmO3BhZGRpbmc6MzBweCAzMHB4IDI2cHg7bWFyZ2luOjE4cHggMCAyMHB4O3Bvc2l0aW9uOnJlbGF0aXZlO292ZXJmbG93OmhpZGRlbn0iKwoiLmNscC1zcGstaGVybzphZnRlcntjb250ZW50OicnO3Bvc2l0aW9uOmFic29sdXRlO3JpZ2h0Oi02MHB4O3RvcDotNjBweDt3aWR0aDoyMjBweDtoZWlnaHQ6MjIwcHg7Ym9yZGVyLXJhZGl1czo1MCU7YmFja2dyb3VuZDpyZ2JhKDI1NSwyNTUsMjU1LC4wOCl9IisKIi5jbHAtc3BrLWhlcm8gLnRhZ3tkaXNwbGF5OmlubGluZS1ibG9jaztiYWNrZ3JvdW5kOnJnYmEoMjU1LDI1NSwyNTUsLjE2KTtib3JkZXI6MXB4IHNvbGlkIHJnYmEoMjU1LDI1NSwyNTUsLjM1KTtwYWRkaW5nOjNweCAxMnB4O2JvcmRlci1yYWRpdXM6OTk5cHg7Zm9udC1zaXplOjEyLjVweDtsZXR0ZXItc3BhY2luZzouNnB4O2ZvbnQtd2VpZ2h0OjYwMH0iKwoiLmNscC1zcGstaGVybyBoMXttYXJnaW46MTBweCAwIDZweDtmb250LXNpemU6MjdweDtsaW5lLWhlaWdodDoxLjI1O2NvbG9yOiNmZmZ9IisKIi5jbHAtc3BrLWhlcm8gLm1ldGF7ZGlzcGxheTpmbGV4O2ZsZXgtd3JhcDp3cmFwO2dhcDo4cHg7bWFyZ2luLXRvcDoxMnB4fSIrCiIuY2xwLXNway1oZXJvIC5tZXRhIHNwYW57YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4yMik7cGFkZGluZzo0cHggMTJweDtib3JkZXItcmFkaXVzOjk5OXB4O2ZvbnQtc2l6ZToxMi41cHh9IisKIi5jbHAtc3BrLWNoaXBze2Rpc3BsYXk6ZmxleDtmbGV4LXdyYXA6d3JhcDtnYXA6N3B4O21hcmdpbjowIDAgMTRweH0iKwoiLmNscC1zcGstY2hpcHttaW4td2lkdGg6MzhweDtoZWlnaHQ6MzRweDtib3JkZXItcmFkaXVzOjlweDtib3JkZXI6MS41cHggc29saWQgI2QzZDhkZjtiYWNrZ3JvdW5kOiNmZmY7Zm9udC13ZWlnaHQ6NzAwO2ZvbnQtc2l6ZToxMy41cHg7Y29sb3I6IzViNjU3MjtjdXJzb3I6cG9pbnRlcjtwYWRkaW5nOjAgMTBweH0iKwoiLmNscC1zcGstY2hpcC5jdXJ7YmFja2dyb3VuZDojMGI1N2QwO2JvcmRlci1jb2xvcjojMGI1N2QwO2NvbG9yOiNmZmZ9IisKIi5jbHAtc3BrLWNoaXAuZG9uZXtiYWNrZ3JvdW5kOiNlNmY0ZWE7Ym9yZGVyLWNvbG9yOiM3YmMzOTQ7Y29sb3I6IzFlN2IzZX0iKwoiLmNscC1zcGstcGFuZWx7YmFja2dyb3VuZDojZmZmO2JvcmRlcjoxcHggc29saWQgI2Q5ZGRlMztib3JkZXItcmFkaXVzOjEycHg7b3ZlcmZsb3c6aGlkZGVuO2JveC1zaGFkb3c6MCAycHggMTBweCByZ2JhKDMwLDQwLDYwLC4wNil9IisKIi5jbHAtc3BrLWJhcntkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDoxMHB4O2JhY2tncm91bmQ6I2VjZWNlZTtib3JkZXItYm90dG9tOjFweCBzb2xpZCAjZDVkNWQ4O3BhZGRpbmc6OXB4IDE0cHg7ZmxleC13cmFwOndyYXB9IisKIi5jbHAtc3BrLWJhciAudHtmb250LXdlaWdodDo3MDA7Zm9udC1zaXplOjE0LjVweDtjb2xvcjojM2M0MDQ2fSIrCiIuY2xwLXNway1iYXIgLm17bWFyZ2luLWxlZnQ6YXV0bztmb250LXNpemU6MTIuNXB4O2NvbG9yOiM1NTU7d2hpdGUtc3BhY2U6bm93cmFwfSIrCiIuY2xwLXNway1iYXIgLm0gYntjb2xvcjojMjMyNzJkfSIrCiIuY2xwLXNway1uZXh0e2JhY2tncm91bmQ6IzE0NjdjNjtjb2xvcjojZmZmO2JvcmRlcjowO2JvcmRlci1yYWRpdXM6NHB4O2ZvbnQtd2VpZ2h0OjcwMDtmb250LXNpemU6MTIuNXB4O2xldHRlci1zcGFjaW5nOi44cHg7cGFkZGluZzo3cHggMThweDtjdXJzb3I6cG9pbnRlcn0iKwoiLmNscC1zcGstbmV4dDpob3ZlcntiYWNrZ3JvdW5kOiMwZjU3YWJ9IisKIi5jbHAtc3BrLWJvZHl7cGFkZGluZzoxOHB4IDIwcHggMjJweH0iKwoiLmNscC1zcGstcHJvbXB0e2Rpc3BsYXk6ZmxleDtnYXA6OXB4O2NvbG9yOiMwYjUzOTQ7Zm9udC13ZWlnaHQ6NjAwO2ZvbnQtc2l6ZToxNS41cHg7bGluZS1oZWlnaHQ6MS41fSIrCiIuY2xwLXNway1wcm9tcHQgLml7ZmxleDowIDAgYXV0bzt3aWR0aDoyMHB4O2hlaWdodDoyMHB4O2JvcmRlci1yYWRpdXM6NTAlO2JhY2tncm91bmQ6IzJjN2NiMDtjb2xvcjojZmZmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjgwMDtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpjZW50ZXI7bWFyZ2luLXRvcDoycHh9IisKIi5jbHAtc3BrLWxlYWR7Y29sb3I6IzBiNTM5NDtmb250LXdlaWdodDo3MDA7bWFyZ2luLWJvdHRvbTo0cHh9IisKIi5jbHAtc3BrLWNob29zZTF7bWFyZ2luOjE0cHggMCAwO3BhZGRpbmc6MTJweCAxNnB4O2JhY2tncm91bmQ6I2Y1ZjdmYTtib3JkZXI6MXB4IHNvbGlkICNkZmU0ZWE7Ym9yZGVyLXJhZGl1czo5cHg7Zm9udC1zaXplOjE0LjVweDtsaW5lLWhlaWdodDoxLjU1fSIrCiIuY2xwLXNway1jaG9vc2UxIC5le2ZvbnQtd2VpZ2h0OjgwMDtjb2xvcjojOGExZjFmO2xldHRlci1zcGFjaW5nOi40cHh9IisKIi5jbHAtc3BrLWltZ3tkaXNwbGF5OmJsb2NrO21heC13aWR0aDo1NDBweDt3aWR0aDoxMDAlO2JvcmRlcjoxcHggc29saWQgI2NmZDRkYTtib3JkZXItcmFkaXVzOjhweDttYXJnaW46MTZweCAwIDRweH0iKwoiLmNscC1zcGstbm90ZXtmb250LXNpemU6MTJweDtjb2xvcjojOGE5MjljO21hcmdpbi10b3A6NnB4fSIrCiIuY2xwLXNway10aW1lcnJvd3tkaXNwbGF5OmZsZXg7anVzdGlmeS1jb250ZW50OmNlbnRlcjttYXJnaW46MjBweCAwIDZweH0iKwoiLmNscC1zcGstdGltZXJ7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6MTZweDtiYWNrZ3JvdW5kOiNlOWVjZWY7Ym9yZGVyOjFweCBzb2xpZCAjZDZkYWRlO2JvcmRlci1yYWRpdXM6MTBweDtwYWRkaW5nOjE2cHggMjZweDttaW4td2lkdGg6MzAwcHg7anVzdGlmeS1jb250ZW50OmNlbnRlcn0iKwoiLmNscC1zcGstdGltZXIgLmlje3dpZHRoOjQ0cHg7aGVpZ2h0OjQ0cHg7Ym9yZGVyLXJhZGl1czo4cHg7YmFja2dyb3VuZDojZjhmOWZhO2JvcmRlcjoxcHggc29saWQgI2Q2ZGFkZTtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpjZW50ZXI7Zm9udC1zaXplOjIycHh9IisKIi5jbHAtc3BrLXRpbWVyIC5sYntmb250LXdlaWdodDo3MDA7Y29sb3I6IzMzMzgzZjtmb250LXNpemU6MTVweH0iKwoiLmNscC1zcGstdGltZXIgLm57Zm9udC1zaXplOjI2cHg7Zm9udC13ZWlnaHQ6ODAwO2NvbG9yOiMwYjU3ZDA7Zm9udC12YXJpYW50LW51bWVyaWM6dGFidWxhci1udW1zO21pbi13aWR0aDo1MnB4O3RleHQtYWxpZ246Y2VudGVyfSIrCiIuY2xwLXNway10aW1lci5yZWN7YmFja2dyb3VuZDojZmRlY2ViO2JvcmRlci1jb2xvcjojZjNiNmIzfSIrCiIuY2xwLXNway10aW1lci5yZWMgLm57Y29sb3I6I2M2MjgyOH0iKwoiLmNscC1zcGstdGltZXIucmVjIC5pY3tiYWNrZ3JvdW5kOiNmZmY7Ym9yZGVyLWNvbG9yOiNmM2I2YjN9IisKIi5jbHAtc3BrLWRvdHt3aWR0aDoxNHB4O2hlaWdodDoxNHB4O2JvcmRlci1yYWRpdXM6NTAlO2JhY2tncm91bmQ6I2U1MzkzNTtkaXNwbGF5OmlubGluZS1ibG9jazthbmltYXRpb246Y2xwYmxpbmsgMXMgaW5maW5pdGV9IisKIkBrZXlmcmFtZXMgY2xwYmxpbmt7MCUsMTAwJXtvcGFjaXR5OjF9NTAle29wYWNpdHk6LjI1fX0iKwoiLmNscC1zcGstY3Rye2Rpc3BsYXk6ZmxleDtnYXA6MTBweDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2ZsZXgtd3JhcDp3cmFwO21hcmdpbjoxNHB4IDAgMnB4fSIrCiIuY2xwLXNway1idG57Ym9yZGVyOjEuNXB4IHNvbGlkICNjOWNmZDY7YmFja2dyb3VuZDojZmZmO2NvbG9yOiMzMzM4M2Y7Ym9yZGVyLXJhZGl1czo5cHg7cGFkZGluZzo5cHggMThweDtmb250LXdlaWdodDo3MDA7Zm9udC1zaXplOjEzLjVweDtjdXJzb3I6cG9pbnRlcn0iKwoiLmNscC1zcGstYnRuOmhvdmVye2JvcmRlci1jb2xvcjojOWFhM2FkfSIrCiIuY2xwLXNway1idG4ucHJpe2JhY2tncm91bmQ6IzBiNTdkMDtib3JkZXItY29sb3I6IzBiNTdkMDtjb2xvcjojZmZmfSIrCiIuY2xwLXNway1idG4ucHJpOmhvdmVye2JhY2tncm91bmQ6IzBhNGNiNX0iKwoiLmNscC1zcGstYnRuLndhcm57YmFja2dyb3VuZDojYzYyODI4O2JvcmRlci1jb2xvcjojYzYyODI4O2NvbG9yOiNmZmZ9IisKIi5jbHAtc3BrLXNwZWFrbm93e3RleHQtYWxpZ246Y2VudGVyO2NvbG9yOiNjNjI4Mjg7Zm9udC13ZWlnaHQ6NzAwO2ZvbnQtc2l6ZToxM3B4O21hcmdpbi10b3A6OHB4O2xldHRlci1zcGFjaW5nOi4zcHh9IisKIi5jbHAtc3BrLXJldmlld3ttYXJnaW46MTZweCBhdXRvIDA7bWF4LXdpZHRoOjY0MHB4O2JhY2tncm91bmQ6I2YyZjlmMztib3JkZXI6MXB4IHNvbGlkICNiZmUzYzY7Ym9yZGVyLXJhZGl1czoxMHB4O3BhZGRpbmc6MTRweCAxOHB4fSIrCiIuY2xwLXNway1yZXZpZXcgLm9re2NvbG9yOiMxZTdiM2U7Zm9udC13ZWlnaHQ6ODAwO2ZvbnQtc2l6ZToxNC41cHh9IisKIi5jbHAtc3BrLXJldmlldyBhdWRpb3t3aWR0aDoxMDAlO21hcmdpbjoxMHB4IDAgOHB4fSIrCiIuY2xwLXNway1taWN7bWFyZ2luOjEycHggYXV0byAwO21heC13aWR0aDo2NDBweDtiYWNrZ3JvdW5kOiNmZmY4ZTY7Ym9yZGVyOjFweCBzb2xpZCAjZWNkOWEwO2JvcmRlci1yYWRpdXM6MTBweDtwYWRkaW5nOjEwcHggMTZweDtmb250LXNpemU6MTNweDtjb2xvcjojN2E1YjEyfSIrCiIuY2xwLXNway1vcHRze2Rpc3BsYXk6Z3JpZDtncmlkLXRlbXBsYXRlLWNvbHVtbnM6MWZyIDFmcjtnYXA6MTZweDttYXJnaW46MThweCAwIDRweH0iKwoiLmNscC1zcGstY2FyZHtib3JkZXI6MnB4IHNvbGlkICNkNWRhZTA7Ym9yZGVyLXJhZGl1czoxMXB4O3BhZGRpbmc6MTNweCAxNXB4IDE1cHg7Y3Vyc29yOnBvaW50ZXI7YmFja2dyb3VuZDojZmZmO3RyYW5zaXRpb246Ym9yZGVyLWNvbG9yIC4xNXN9IisKIi5jbHAtc3BrLWNhcmQ6aG92ZXJ7Ym9yZGVyLWNvbG9yOiM4ZmI0ZTh9IisKIi5jbHAtc3BrLWNhcmQuc2Vse2JvcmRlci1jb2xvcjojMmU5ZTRmO2JhY2tncm91bmQ6I2VlZjlmMH0iKwoiLmNscC1zcGstY2FyZC5wbGFpbntjdXJzb3I6ZGVmYXVsdH0iKwoiLmNscC1zcGstY2FyZCAuaGR7dGV4dC1hbGlnbjpjZW50ZXI7Zm9udC1zaXplOjEyLjVweDtmb250LXdlaWdodDo3MDA7Y29sb3I6IzZiNzQ4MDtsZXR0ZXItc3BhY2luZzouM3B4O21hcmdpbi1ib3R0b206OHB4fSIrCiIuY2xwLXNway1jYXJkIGltZ3t3aWR0aDoxMDAlO2JvcmRlci1yYWRpdXM6N3B4O2JvcmRlcjoxcHggc29saWQgI2UyZTZlYX0iKwoiLmNscC1zcGstY2FyZCAudHR7Zm9udC13ZWlnaHQ6ODAwO2ZvbnQtc2l6ZToxNXB4O21hcmdpbjoxMHB4IDAgNnB4O2NvbG9yOiMyMzI3MmR9IisKIi5jbHAtc3BrLWNhcmQgdWx7bWFyZ2luOjA7cGFkZGluZy1sZWZ0OjE4cHg7Zm9udC1zaXplOjEzLjVweDtsaW5lLWhlaWdodDoxLjU1O2NvbG9yOiMzYzQzNGJ9IisKIi5jbHAtc3BrLWNhcmQgLnBpY2t7bWFyZ2luLXRvcDoxMHB4O3RleHQtYWxpZ246Y2VudGVyO2ZvbnQtd2VpZ2h0OjgwMDtjb2xvcjojMmU5ZTRmO2ZvbnQtc2l6ZToxM3B4O21pbi1oZWlnaHQ6MThweH0iKwoiLmNscC1zcGstaGludHt0ZXh0LWFsaWduOmNlbnRlcjtjb2xvcjojNmI3NDgwO2ZvbnQtc2l6ZToxM3B4O21hcmdpbi10b3A6MTBweH0iKwoiLmNscC1zcGstYWNje21hcmdpbi10b3A6MjJweDtib3JkZXI6MXB4IHNvbGlkICNkOWRkZTM7Ym9yZGVyLXJhZGl1czoxMXB4O292ZXJmbG93OmhpZGRlbn0iKwoiLmNscC1zcGstYWNjPmJ1dHRvbnt3aWR0aDoxMDAlO3RleHQtYWxpZ246bGVmdDtiYWNrZ3JvdW5kOiNmNmY3Zjk7Ym9yZGVyOjA7cGFkZGluZzoxMnB4IDE2cHg7Zm9udC13ZWlnaHQ6ODAwO2ZvbnQtc2l6ZToxNHB4O2NvbG9yOiMzYzQwNDY7Y3Vyc29yOnBvaW50ZXJ9IisKIi5jbHAtc3BrLWFjY2JvZHl7ZGlzcGxheTpub25lO3BhZGRpbmc6MTRweCAxNnB4IDE4cHg7YmFja2dyb3VuZDojZmZmfSIrCiIuY2xwLXNway1hY2Mub3BlbiAuY2xwLXNway1hY2Nib2R5e2Rpc3BsYXk6YmxvY2t9IisKIi5jbHAtc3BrLXRhYnN7ZGlzcGxheTpmbGV4O2dhcDo2cHg7ZmxleC13cmFwOndyYXA7bWFyZ2luLWJvdHRvbToxMnB4fSIrCiIuY2xwLXNway10YWJ7Ym9yZGVyOjEuNXB4IHNvbGlkICNjOWNmZDY7YmFja2dyb3VuZDojZmZmO2JvcmRlci1yYWRpdXM6OTk5cHg7cGFkZGluZzo2cHggMTVweDtmb250LXdlaWdodDo3MDA7Zm9udC1zaXplOjEyLjVweDtjdXJzb3I6cG9pbnRlcjtjb2xvcjojNGE1MjVjfSIrCiIuY2xwLXNway10YWIub257YmFja2dyb3VuZDojMGI1N2QwO2JvcmRlci1jb2xvcjojMGI1N2QwO2NvbG9yOiNmZmZ9IisKIi5jbHAtc3BrLXRhYnBhbmV7ZGlzcGxheTpub25lO2ZvbnQtc2l6ZToxNC41cHg7bGluZS1oZWlnaHQ6MS42NX0iKwoiLmNscC1zcGstdGFicGFuZS5vbntkaXNwbGF5OmJsb2NrfSIrCiIuY2xwLXNway10YWJwYW5lIHVse3BhZGRpbmctbGVmdDoyMHB4O21hcmdpbjo4cHggMH0iKwoiLmNscC1zcGstdGFicGFuZSBsaXttYXJnaW46NXB4IDB9IisKIi5jbHAtc3BrLXNhbXBsZXtiYWNrZ3JvdW5kOiNmOGY5ZmI7Ym9yZGVyOjFweCBzb2xpZCAjZTNlN2VjO2JvcmRlci1sZWZ0OjRweCBzb2xpZCAjMGI1N2QwO2JvcmRlci1yYWRpdXM6OHB4O3BhZGRpbmc6MTNweCAxNnB4O3doaXRlLXNwYWNlOnByZS13cmFwfSIrCiIuY2xwLXNway1zYW1wbGUuczZ7Ym9yZGVyLWxlZnQtY29sb3I6I2U4YTEzY30iKwoiLmNscC1zcGstcGhye2Rpc3BsYXk6ZmxleDtmbGV4LXdyYXA6d3JhcDtnYXA6N3B4O21hcmdpbi10b3A6MTBweH0iKwoiLmNscC1zcGstcGhyIHNwYW57YmFja2dyb3VuZDojZWVmM2ZiO2JvcmRlcjoxcHggc29saWQgI2NkZGRmNTtjb2xvcjojMTc0YTljO2JvcmRlci1yYWRpdXM6OTk5cHg7cGFkZGluZzo0cHggMTJweDtmb250LXNpemU6MTIuNXB4O2ZvbnQtd2VpZ2h0OjYwMH0iKwoiLmNscC1zcGstcnVie2JvcmRlci1jb2xsYXBzZTpjb2xsYXBzZTt3aWR0aDoxMDAlO2ZvbnQtc2l6ZToxMy41cHh9IisKIi5jbHAtc3BrLXJ1YiB0ZHtwYWRkaW5nOjdweCA2cHg7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgI2VlZjBmM30iKwoiLmNscC1zcGstc3RhcntjdXJzb3I6cG9pbnRlcjtmb250LXNpemU6MTlweDtjb2xvcjojYzljZmQ2O3BhZGRpbmc6MCAxcHg7dXNlci1zZWxlY3Q6bm9uZX0iKwoiLmNscC1zcGstc3Rhci5vbntjb2xvcjojZjBhNzFifSIrCiIuY2xwLXNway1lc3R7bWFyZ2luLXRvcDoxMHB4O2ZvbnQtd2VpZ2h0OjcwMDtjb2xvcjojMWU3YjNlfSIrCiIuY2xwLXNway1iYWRnZXtkaXNwbGF5OmlubGluZS1ibG9jaztiYWNrZ3JvdW5kOiNmZmYzY2Q7Ym9yZGVyOjFweCBzb2xpZCAjZThkNDhiO2NvbG9yOiM3YTViMTI7Ym9yZGVyLXJhZGl1czo5OTlweDtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo3MDA7cGFkZGluZzozcHggMTJweDttYXJnaW4tYm90dG9tOjEwcHh9IisKIi5jbHAtc3BrLWludHJvIHVse2ZvbnQtc2l6ZToxNC41cHg7bGluZS1oZWlnaHQ6MS43O3BhZGRpbmctbGVmdDoyMHB4fSIrCiIuY2xwLXNway1pbnRybyBsaXttYXJnaW46N3B4IDB9IisKIi5jbHAtc3BrLW1pY3Jvd3tkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDoxMnB4O2ZsZXgtd3JhcDp3cmFwO2JhY2tncm91bmQ6I2Y2ZjdmOTtib3JkZXI6MXB4IHNvbGlkICNlMGU0ZTk7Ym9yZGVyLXJhZGl1czoxMHB4O3BhZGRpbmc6MTNweCAxNnB4O21hcmdpbjoxNnB4IDB9IisKIi5jbHAtc3BrLW1pY3N0e2ZvbnQtd2VpZ2h0OjcwMDtmb250LXNpemU6MTMuNXB4fSIrCiIuY2xwLXNway1taWNzdC5va3tjb2xvcjojMWU3YjNlfS5jbHAtc3BrLW1pY3N0LmJhZHtjb2xvcjojYzYyODI4fSIrCiIuY2xwLXNway1lbmQgdGFibGV7Ym9yZGVyLWNvbGxhcHNlOmNvbGxhcHNlO3dpZHRoOjEwMCU7Zm9udC1zaXplOjE0cHh9IisKIi5jbHAtc3BrLWVuZCB0ZCwuY2xwLXNway1lbmQgdGh7cGFkZGluZzo5cHggOHB4O2JvcmRlci1ib3R0b206MXB4IHNvbGlkICNlY2VmZjI7dGV4dC1hbGlnbjpsZWZ0fSIrCiIuY2xwLXNway1lbmQgYXVkaW97aGVpZ2h0OjM0cHg7bWF4LXdpZHRoOjIzMHB4fSIrCiJAbWVkaWEobWF4LXdpZHRoOjcwMHB4KXsuY2xwLXNway1vcHRze2dyaWQtdGVtcGxhdGUtY29sdW1uczoxZnJ9LmNscC1zcGstYmFyIC5te29yZGVyOjM7bWFyZ2luLWxlZnQ6MDt3aWR0aDoxMDAlfS5jbHAtc3BrLWhlcm8gaDF7Zm9udC1zaXplOjIycHh9LmNscC1zcGstYm9keXtwYWRkaW5nOjE0cHggMTJweCAxOHB4fX0iOwp2YXIgc3QgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzdHlsZSIpOyBzdC50ZXh0Q29udGVudCA9IENTUzsgZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChzdCk7CgovKiAtLS0tLS0tLS0tIHN0YXRlIC0tLS0tLS0tLS0gKi8KdmFyIFMgPSB7CiAgY3VyOiAtMSwgICAgICAgICAgICAvKiAtMSBpbnRybywgMC4uOCB0YXNrcywgOTkgZW5kICovCiAgbWljU3RhdGU6ICJpZGxlIiwgICAvKiBpZGxlfG9rfGJhZCAqLwogIHN0cmVhbTogbnVsbCwgcmVjb3JkZXI6IG51bGwsIGNodW5rczogW10sCiAgdGltZXI6IG51bGwsIHBoYXNlOiB7fSwgdDVjaG9pY2U6IHt9LCByZWNzOiB7fSwgcnVicmljOiB7fSwKICBtaW1lOiAiIiwgZXh0OiAid2VibSIKfTsKRC50YXNrcy5mb3JFYWNoKGZ1bmN0aW9uKHQpeyBTLnBoYXNlW3Qua10gPSB0LnBoYXNlZCA\/ICJjaG9vc2UtaWRsZSIgOiAiaWRsZSI7IH0pOwoKZnVuY3Rpb24gcGlja01pbWUoKXsKICBpZighd2luZG93Lk1lZGlhUmVjb3JkZXIpIHJldHVybiBudWxsOwogIHZhciBjYW5kcyA9IFtbImF1ZGlvL3dlYm07Y29kZWNzPW9wdXMiLCJ3ZWJtIl0sWyJhdWRpby93ZWJtIiwid2VibSJdLFsiYXVkaW8vbXA0IiwibTRhIl0sWyJhdWRpby9vZ2c7Y29kZWNzPW9wdXMiLCJvZ2ciXV07CiAgZm9yKHZhciBpPTA7aTxjYW5kcy5sZW5ndGg7aSsrKXsgdHJ5eyBpZihNZWRpYVJlY29yZGVyLmlzVHlwZVN1cHBvcnRlZChjYW5kc1tpXVswXSkpIHJldHVybiBjYW5kc1tpXTsgfWNhdGNoKGUpe30gfQogIHJldHVybiBbIiIsIndlYm0iXTsKfQpmdW5jdGlvbiBlbnN1cmVNaWMoY2IpewogIGlmKFMubWljU3RhdGU9PT0ib2siKSByZXR1cm4gY2IodHJ1ZSk7CiAgaWYoUy5taWNTdGF0ZT09PSJiYWQiKSByZXR1cm4gY2IoZmFsc2UpOwogIGlmKCFuYXZpZ2F0b3IubWVkaWFEZXZpY2VzIHx8ICFuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYSB8fCAhd2luZG93Lk1lZGlhUmVjb3JkZXIpeyBTLm1pY1N0YXRlPSJiYWQiOyByZXR1cm4gY2IoZmFsc2UpOyB9CiAgbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEoe2F1ZGlvOnRydWV9KS50aGVuKGZ1bmN0aW9uKHN0cmVhbSl7CiAgICBTLnN0cmVhbSA9IHN0cmVhbTsgdmFyIG0gPSBwaWNrTWltZSgpOyBTLm1pbWUgPSBtWzBdOyBTLmV4dCA9IG1bMV07IFMubWljU3RhdGU9Im9rIjsgY2IodHJ1ZSk7CiAgfSkuY2F0Y2goZnVuY3Rpb24oKXsgUy5taWNTdGF0ZT0iYmFkIjsgY2IoZmFsc2UpOyB9KTsKfQpmdW5jdGlvbiBiZWVwKG4pewogIHRyeXsKICAgIHZhciBjdHggPSB3aW5kb3cuX19jbHBBQyA9IHdpbmRvdy5fX2NscEFDIHx8IG5ldyAod2luZG93LkF1ZGlvQ29udGV4dHx8d2luZG93LndlYmtpdEF1ZGlvQ29udGV4dCkoKTsKICAgIHZhciB0MCA9IGN0eC5jdXJyZW50VGltZTsKICAgIGZvcih2YXIgaT0wO2k8bjtpKyspewogICAgICB2YXIgbyA9IGN0eC5jcmVhdGVPc2NpbGxhdG9yKCksIGcgPSBjdHguY3JlYXRlR2FpbigpOwogICAgICBvLmZyZXF1ZW5jeS52YWx1ZSA9IDg4MDsgby5jb25uZWN0KGcpOyBnLmNvbm5lY3QoY3R4LmRlc3RpbmF0aW9uKTsKICAgICAgZy5nYWluLnNldFZhbHVlQXRUaW1lKDAuMDAwMSx0MCtpKjAuMjUpOyBnLmdhaW4uZXhwb25lbnRpYWxSYW1wVG9WYWx1ZUF0VGltZSgwLjE4LHQwK2kqMC4yNSswLjAyKTsKICAgICAgZy5nYWluLmV4cG9uZW50aWFsUmFtcFRvVmFsdWVBdFRpbWUoMC4wMDAxLHQwK2kqMC4yNSswLjE4KTsKICAgICAgby5zdGFydCh0MCtpKjAuMjUpOyBvLnN0b3AodDAraSowLjI1KzAuMik7CiAgICB9CiAgfWNhdGNoKGUpe30KfQpmdW5jdGlvbiBzdG9wVGltZXIoKXsgaWYoUy50aW1lcil7IGNsZWFySW50ZXJ2YWwoUy50aW1lcik7IFMudGltZXI9bnVsbDsgfSB9CmZ1bmN0aW9uIGNvdW50ZG93bihzZWNzLCBvblRpY2ssIG9uRW5kKXsKICBzdG9wVGltZXIoKTsKICB2YXIgZW5kID0gRGF0ZS5ub3coKSArIHNlY3MqMTAwMDsKICBvblRpY2soc2Vjcyk7CiAgUy50aW1lciA9IHNldEludGVydmFsKGZ1bmN0aW9uKCl7CiAgICB2YXIgbGVmdCA9IE1hdGgubWF4KDAsIE1hdGgucm91bmQoKGVuZC1EYXRlLm5vdygpKS8xMDAwKSk7CiAgICBvblRpY2sobGVmdCk7CiAgICBpZihsZWZ0PD0wKXsgc3RvcFRpbWVyKCk7IG9uRW5kKCk7IH0KICB9LCAyNTApOwp9CmZ1bmN0aW9uIHN0b3BSZWNvcmRpbmcoKXsKICBpZihTLnJlY29yZGVyICYmIFMucmVjb3JkZXIuc3RhdGUhPT0iaW5hY3RpdmUiKXsgdHJ5eyBTLnJlY29yZGVyLnN0b3AoKTsgfWNhdGNoKGUpe30gfQogIFMucmVjb3JkZXIgPSBudWxsOwp9CmZ1bmN0aW9uIGxlYXZlQ2xlYW51cCgpeyBzdG9wVGltZXIoKTsgc3RvcFJlY29yZGluZygpOyB9CgovKiAtLS0tLS0tLS0tIGhlbHBlcnMgLS0tLS0tLS0tLSAqLwpmdW5jdGlvbiBlbCh0YWcsIGNscywgaHRtbCl7IHZhciBlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQodGFnKTsgaWYoY2xzKWUuY2xhc3NOYW1lPWNsczsgaWYoaHRtbCE9bnVsbCllLmlubmVySFRNTD1odG1sOyByZXR1cm4gZTsgfQpmdW5jdGlvbiBmbXRNZXRhKHQpewogIGlmKHQucGhhc2VkKSByZXR1cm4gIiI7CiAgcmV0dXJuICJQcmVwYXJhdGlvbjogPGI+Iit0LnByZXArIiBzZWNvbmRzPC9iPiAmbmJzcDtSZWNvcmRpbmc6IDxiPiIrdC5yZWMrIiBzZWNvbmRzPC9iPiI7Cn0KZnVuY3Rpb24gdGFza1RpdGxlKHQpewogIGlmKHQud2FybXVwKSByZXR1cm4gRC5oZWFkZXIrIiAtIFNwZWFraW5nIFByYWN0aWNlIFRhc2siOwogIHJldHVybiBELmhlYWRlcisiIC0gU3BlYWtpbmcgVGFzayAiK3QubnVtKyI6ICIrdC50eXBlRW47Cn0KZnVuY3Rpb24gZXN0VGV4dChhdmcpewogIGlmKGF2Zz49NC41KSByZXR1cm4gIkNMQiA5KyI7IGlmKGF2Zz49My41KSByZXR1cm4gIkNMQiA3XHUyMDEzOCI7IGlmKGF2Zz49Mi41KSByZXR1cm4gIkNMQiA1XHUyMDEzNiI7IHJldHVybiAiQ0xCIDQgb3IgYmVsb3ciOwp9CgovKiAtLS0tLS0tLS0tIHJlbmRlciAtLS0tLS0tLS0tICovCmZ1bmN0aW9uIHJlbmRlcigpewogIGxlYXZlQ2xlYW51cCgpOwogIHJvb3QuaW5uZXJIVE1MID0gIiI7CiAgdmFyIHdyYXAgPSBlbCgiZGl2IiwiY2xwLXNway13cmFwIik7CiAgd3JhcC5hcHBlbmRDaGlsZChoZXJvKCkpOwogIGlmKFMuY3VyPj0wICYmIFMuY3VyPEQudGFza3MubGVuZ3RoKSB3cmFwLmFwcGVuZENoaWxkKGNoaXBzKCkpOwogIGlmKFMuY3VyPT09LTEpIHdyYXAuYXBwZW5kQ2hpbGQoaW50cm8oKSk7CiAgZWxzZSBpZihTLmN1cj09PTk5KSB3cmFwLmFwcGVuZENoaWxkKGVuZFNjcmVlbigpKTsKICBlbHNlIHdyYXAuYXBwZW5kQ2hpbGQodGFza1BhbmVsKEQudGFza3NbUy5jdXJdKSk7CiAgcm9vdC5hcHBlbmRDaGlsZCh3cmFwKTsKICB0cnl7IHdpbmRvdy5zY3JvbGxUbyh7dG9wOiByb290Lm9mZnNldFRvcC0xMCwgYmVoYXZpb3I6InNtb290aCJ9KTsgfWNhdGNoKGUpe30KfQpmdW5jdGlvbiBoZXJvKCl7CiAgdmFyIGggPSBlbCgiZGl2IiwiY2xwLXNway1oZXJvIik7CiAgaC5hcHBlbmRDaGlsZChlbCgic3BhbiIsInRhZyIsVS5oZXJvVGFnKSk7CiAgaC5hcHBlbmRDaGlsZChlbCgiaDEiLG51bGwsRC50aXRsZS5zcGxpdCgiXHUyMDE0IilbMV0gPyAiU3BlYWtpbmcgXHUyMDE0IitELnRpdGxlLnNwbGl0KCJcdTIwMTQiKVsxXSA6IEQudGl0bGUpKTsKICB2YXIgbSA9IGVsKCJkaXYiLCJtZXRhIik7CiAgVS5oZXJvTWV0YS5mb3JFYWNoKGZ1bmN0aW9uKHgpeyBtLmFwcGVuZENoaWxkKGVsKCJzcGFuIixudWxsLHgpKTsgfSk7CiAgaC5hcHBlbmRDaGlsZChtKTsKICByZXR1cm4gaDsKfQpmdW5jdGlvbiBjaGlwcygpewogIHZhciBjID0gZWwoImRpdiIsImNscC1zcGstY2hpcHMiKTsKICBELnRhc2tzLmZvckVhY2goZnVuY3Rpb24odCxpKXsKICAgIHZhciBiID0gZWwoImJ1dHRvbiIsImNscC1zcGstY2hpcCIrKGk9PT1TLmN1cj8iIGN1ciI6KFMucmVjc1t0LmtdPyIgZG9uZSI6IiIpKSwgdC53YXJtdXA\/IlciOlN0cmluZyh0Lm51bSkpOwogICAgYi50aXRsZSA9IHQudHlwZUVuOwogICAgYi5vbmNsaWNrID0gZnVuY3Rpb24oKXsgUy5jdXI9aTsgcmVuZGVyKCk7IH07CiAgICBjLmFwcGVuZENoaWxkKGIpOwogIH0pOwogIHZhciBlID0gZWwoImJ1dHRvbiIsImNscC1zcGstY2hpcCIrKFMuY3VyPT09OTk\/IiBjdXIiOiIiKSwiXHVkODNjXHVkZmMxIik7CiAgZS50aXRsZSA9ICJGaW5pc2giOyBlLm9uY2xpY2sgPSBmdW5jdGlvbigpeyBTLmN1cj05OTsgcmVuZGVyKCk7IH07CiAgYy5hcHBlbmRDaGlsZChlKTsKICByZXR1cm4gYzsKfQpmdW5jdGlvbiBpbnRybygpewogIHZhciBwID0gZWwoImRpdiIsImNscC1zcGstcGFuZWwgY2xwLXNway1pbnRybyIpOwogIHZhciBiYXIgPSBlbCgiZGl2IiwiY2xwLXNway1iYXIiKTsKICBiYXIuYXBwZW5kQ2hpbGQoZWwoInNwYW4iLCJ0IixELmhlYWRlcisiIC0gU3BlYWtpbmciKSk7CiAgdmFyIG54ID0gZWwoImJ1dHRvbiIsImNscC1zcGstbmV4dCIsVS5uZXh0KTsgbnguc3R5bGUubWFyZ2luTGVmdD0iYXV0byI7CiAgbngub25jbGljayA9IGZ1bmN0aW9uKCl7IFMuY3VyPTA7IHJlbmRlcigpOyB9OwogIGJhci5hcHBlbmRDaGlsZChueCk7CiAgcC5hcHBlbmRDaGlsZChiYXIpOwogIHZhciBiID0gZWwoImRpdiIsImNscC1zcGstYm9keSIpOwogIHZhciBwciA9IGVsKCJkaXYiLCJjbHAtc3BrLXByb21wdCIpOwogIHByLmFwcGVuZENoaWxkKGVsKCJzcGFuIiwiaSIsImkiKSk7IHByLmFwcGVuZENoaWxkKGVsKCJzcGFuIixudWxsLCJTcGVha2luZyBUZXN0IEluc3RydWN0aW9ucyIpKTsKICBiLmFwcGVuZENoaWxkKHByKTsKICB2YXIgdWwgPSBlbCgidWwiKTsKICBVLmludHJvTm90ZXMuZm9yRWFjaChmdW5jdGlvbih4KXsgdWwuYXBwZW5kQ2hpbGQoZWwoImxpIixudWxsLHgpKTsgfSk7CiAgYi5hcHBlbmRDaGlsZCh1bCk7CiAgdmFyIG1pY3JvdyA9IGVsKCJkaXYiLCJjbHAtc3BrLW1pY3JvdyIpOwogIHZhciBtYnRuID0gZWwoImJ1dHRvbiIsImNscC1zcGstYnRuIHByaSIsVS5taWNFbmFibGUpOwogIHZhciBtc3QgPSBlbCgic3BhbiIsImNscC1zcGstbWljc3QiLCIiKTsKICBtYnRuLm9uY2xpY2sgPSBmdW5jdGlvbigpewogICAgbWJ0bi5kaXNhYmxlZCA9IHRydWU7CiAgICBlbnN1cmVNaWMoZnVuY3Rpb24ob2spewogICAgICBtc3QuY2xhc3NOYW1lID0gImNscC1zcGstbWljc3QgIisob2s\/Im9rIjoiYmFkIik7CiAgICAgIG1zdC5pbm5lckhUTUwgPSBvayA\/ICJcdTI3MTQgIitVLm1pY1JlYWR5IDogIlx1MjcxNiAiK1UubWljQmxvY2tlZDsKICAgICAgaWYoIW9rKSBtYnRuLmRpc2FibGVkID0gZmFsc2U7CiAgICB9KTsKICB9OwogIG1pY3Jvdy5hcHBlbmRDaGlsZChtYnRuKTsgbWljcm93LmFwcGVuZENoaWxkKG1zdCk7CiAgYi5hcHBlbmRDaGlsZChtaWNyb3cpOwogIGIuYXBwZW5kQ2hpbGQoZWwoImRpdiIsImNscC1zcGstbm90ZSIsVS5taWNOb3RlKSk7CiAgdmFyIGN0ciA9IGVsKCJkaXYiLCJjbHAtc3BrLWN0ciIpOwogIHZhciBnbyA9IGVsKCJidXR0b24iLCJjbHAtc3BrLWJ0biBwcmkiLFUuc3RhcnRUZXN0KyIgXHUyNWI2Iik7CiAgZ28uc3R5bGUuZm9udFNpemU9IjE1cHgiOyBnby5zdHlsZS5wYWRkaW5nPSIxMnB4IDI2cHgiOwogIGdvLm9uY2xpY2sgPSBmdW5jdGlvbigpeyBTLmN1cj0wOyByZW5kZXIoKTsgfTsKICBjdHIuYXBwZW5kQ2hpbGQoZ28pOwogIGIuYXBwZW5kQ2hpbGQoY3RyKTsKICBwLmFwcGVuZENoaWxkKGIpOwogIHJldHVybiBwOwp9CgovKiAtLS0tLS0tLS0tIHRhc2sgcGFuZWwgLS0tLS0tLS0tLSAqLwpmdW5jdGlvbiB0YXNrUGFuZWwodCl7CiAgdmFyIHAgPSBlbCgiZGl2IiwiY2xwLXNway1wYW5lbCIpOwogIHZhciBiYXIgPSBlbCgiZGl2IiwiY2xwLXNway1iYXIiKTsKICBiYXIuYXBwZW5kQ2hpbGQoZWwoInNwYW4iLCJ0Iix0YXNrVGl0bGUodCkpKTsKICB2YXIgbWV0YSA9IGVsKCJzcGFuIiwibSIsIHQucGhhc2VkID8gcGhhc2VkTWV0YSh0KSA6IGZtdE1ldGEodCkpOwogIGJhci5hcHBlbmRDaGlsZChtZXRhKTsKICB2YXIgbnggPSBlbCgiYnV0dG9uIiwiY2xwLXNway1uZXh0IixVLm5leHQpOwogIG54Lm9uY2xpY2sgPSBmdW5jdGlvbigpeyBTLmN1ciA9IChTLmN1cisxIDwgRC50YXNrcy5sZW5ndGgpID8gUy5jdXIrMSA6IDk5OyByZW5kZXIoKTsgfTsKICBiYXIuYXBwZW5kQ2hpbGQobngpOwogIHAuYXBwZW5kQ2hpbGQoYmFyKTsKICB2YXIgYiA9IGVsKCJkaXYiLCJjbHAtc3BrLWJvZHkiKTsKICBpZih0Lndhcm11cCkgYi5hcHBlbmRDaGlsZChlbCgiZGl2IiwiY2xwLXNway1iYWRnZSIsVS53YXJtdXBCYWRnZSkpOwogIGlmKHQucGhhc2VkKSByZW5kZXJUNSh0LGIsbWV0YSk7CiAgZWxzZSByZW5kZXJTdGQodCxiKTsKICBpZih0LnRpcHMpIGIuYXBwZW5kQ2hpbGQoYWNjb3JkaW9uKHQpKTsKICBwLmFwcGVuZENoaWxkKGIpOwogIHJldHVybiBwOwp9CmZ1bmN0aW9uIHBoYXNlZE1ldGEodCl7CiAgdmFyIHBoID0gUy5waGFzZVt0LmtdfHwiIjsKICBpZihwaC5pbmRleE9mKCJjaG9vc2UiKT09PTApIHJldHVybiAiUHJlcGFyYXRpb246IDxiPiIrdC5jaG9vc2UucHJlcCsiIHNlY29uZHM8L2I+IjsKICByZXR1cm4gIlByZXBhcmF0aW9uOiA8Yj4iK3Quc3BlYWsucHJlcCsiIHNlY29uZHM8L2I+ICZuYnNwO1JlY29yZGluZzogPGI+Iit0LnNwZWFrLnJlYysiIHNlY29uZHM8L2I+IjsKfQpmdW5jdGlvbiBwcm9tcHRSb3codGV4dCwgbGVhZCl7CiAgdmFyIGJveCA9IGVsKCJkaXYiKTsKICBpZihsZWFkKXsgYm94LmFwcGVuZENoaWxkKGVsKCJkaXYiLCJjbHAtc3BrLWxlYWQiLGxlYWQpKTsgfQogIHZhciBwciA9IGVsKCJkaXYiLCJjbHAtc3BrLXByb21wdCIpOwogIHByLmFwcGVuZENoaWxkKGVsKCJzcGFuIiwiaSIsImkiKSk7CiAgcHIuYXBwZW5kQ2hpbGQoZWwoInNwYW4iLG51bGwsdGV4dCkpOwogIGJveC5hcHBlbmRDaGlsZChwcik7CiAgcmV0dXJuIGJveDsKfQpmdW5jdGlvbiByZW5kZXJTdGQodCxiKXsKICBiLmFwcGVuZENoaWxkKHByb21wdFJvdyh0LnByb21wdCwgdC5wcm9tcHRMZWFkKSk7CiAgaWYodC5jaG9vc2VPbmUpewogICAgdmFyIGMgPSBlbCgiZGl2IiwiY2xwLXNway1jaG9vc2UxIiwiPGRpdiBjbGFzcz0nZSc+Q2hvb3NlIE9ORTo8L2Rpdj48ZGl2IGNsYXNzPSdlJyBzdHlsZT0nbWFyZ2luLXRvcDo2cHgnPkVJVEhFUjwvZGl2PjxkaXY+Iit0LmNob29zZU9uZVswXSsiPC9kaXY+PGRpdiBjbGFzcz0nZScgc3R5bGU9J21hcmdpbi10b3A6NnB4Jz5PUjwvZGl2PjxkaXY+Iit0LmNob29zZU9uZVsxXSsiPC9kaXY+Iik7CiAgICBiLmFwcGVuZENoaWxkKGMpOwogIH0KICBpZih0LmltZyAmJiBELmltZ3NbdC5pbWddKXsKICAgIHZhciBpbSA9IGVsKCJpbWciLCJjbHAtc3BrLWltZyIpOyBpbS5zcmMgPSBELmltZ3NbdC5pbWddOyBpbS5hbHQgPSB0LnR5cGVFbjsKICAgIGIuYXBwZW5kQ2hpbGQoaW0pOwogIH0KICBiLmFwcGVuZENoaWxkKHRpbWVyQmxvY2sodC5rLCB0LnByZXAsIHQucmVjLCAidCIpKTsKfQpmdW5jdGlvbiByZW5kZXJUNSh0LGIsbWV0YUVsKXsKICB2YXIgcGggPSBTLnBoYXNlW3Qua107CiAgaWYocGguaW5kZXhPZigiY2hvb3NlIik9PT0wKXsKICAgIGIuYXBwZW5kQ2hpbGQocHJvbXB0Um93KHQuY2hvb3NlLnNpdHVhdGlvbikpOwogICAgYi5hcHBlbmRDaGlsZChlbCgiZGl2IiwiY2xwLXNway1ub3RlIix0LmNob29zZS5ub3RlKSk7CiAgICB2YXIgZ3JpZCA9IGVsKCJkaXYiLCJjbHAtc3BrLW9wdHMiKTsKICAgIHQuY2hvb3NlLm9wdGlvbnMuZm9yRWFjaChmdW5jdGlvbihvLGlkeCl7CiAgICAgIHZhciBjYXJkID0gZWwoImRpdiIsImNscC1zcGstY2FyZCIrKFMudDVjaG9pY2VbdC5rXT09PWlkeD8iIHNlbCI6IiIpKTsKICAgICAgY2FyZC5hcHBlbmRDaGlsZChpbWdUaXRsZUJ1bGxldHMobykpOwogICAgICB2YXIgcGsgPSBlbCgiZGl2IiwicGljayIsIFMudDVjaG9pY2VbdC5rXT09PWlkeCA\/ICJcdTI3MTQgU2VsZWN0ZWQiIDogIiIpOwogICAgICBjYXJkLmFwcGVuZENoaWxkKHBrKTsKICAgICAgY2FyZC5vbmNsaWNrID0gZnVuY3Rpb24oKXsKICAgICAgICBTLnQ1Y2hvaWNlW3Qua10gPSBpZHg7CiAgICAgICAgZ3JpZC5xdWVyeVNlbGVjdG9yQWxsKCIuY2xwLXNway1jYXJkIikuZm9yRWFjaChmdW5jdGlvbihjZCxqKXsKICAgICAgICAgIGNkLmNsYXNzTmFtZSA9ICJjbHAtc3BrLWNhcmQiKyhqPT09aWR4PyIgc2VsIjoiIik7CiAgICAgICAgICBjZC5xdWVyeVNlbGVjdG9yKCIucGljayIpLnRleHRDb250ZW50ID0gKGo9PT1pZHgpPyJcdTI3MTQgU2VsZWN0ZWQiOiIiOwogICAgICAgIH0pOwogICAgICAgIGNidG4uc3R5bGUuZGlzcGxheSA9ICJpbmxpbmUtYmxvY2siOwogICAgICB9OwogICAgICBncmlkLmFwcGVuZENoaWxkKGNhcmQpOwogICAgfSk7CiAgICBiLmFwcGVuZENoaWxkKGdyaWQpOwogICAgYi5hcHBlbmRDaGlsZChlbCgiZGl2IiwiY2xwLXNway1oaW50IixVLmNob29zZUhpbnQpKTsKICAgIC8qIGNvdW50ZG93biBmb3IgY2hvb3NlIHBoYXNlICovCiAgICB2YXIgdHJvdyA9IGVsKCJkaXYiLCJjbHAtc3BrLXRpbWVycm93Iik7CiAgICB2YXIgdG0gPSBlbCgiZGl2IiwiY2xwLXNway10aW1lciIpOwogICAgdG0uYXBwZW5kQ2hpbGQoZWwoInNwYW4iLCJpYyIsIlx1ZDgzZFx1ZGQ1MiIpKTsKICAgIHZhciBsYiA9IGVsKCJkaXYiKTsgbGIuYXBwZW5kQ2hpbGQoZWwoImRpdiIsImxiIixVLnByZXBUaXRsZSkpOwogICAgdG0uYXBwZW5kQ2hpbGQobGIpOwogICAgdmFyIG4gPSBlbCgic3BhbiIsIm4iLFN0cmluZyh0LmNob29zZS5wcmVwKSk7CiAgICB0bS5hcHBlbmRDaGlsZChuKTsKICAgIHRyb3cuYXBwZW5kQ2hpbGQodG0pOwogICAgYi5hcHBlbmRDaGlsZCh0cm93KTsKICAgIHZhciBjdHIgPSBlbCgiZGl2IiwiY2xwLXNway1jdHIiKTsKICAgIHZhciBzdGFydCA9IGVsKCJidXR0b24iLCJjbHAtc3BrLWJ0biBwcmkiLFUuc3RhcnRQcmVwKTsKICAgIHZhciBjYnRuID0gZWwoImJ1dHRvbiIsImNscC1zcGstYnRuIixVLmNvbmZpcm1DaG9pY2UpOwogICAgY2J0bi5zdHlsZS5kaXNwbGF5ID0gKFMudDVjaG9pY2VbdC5rXSE9bnVsbCk\/ImlubGluZS1ibG9jayI6Im5vbmUiOwogICAgdmFyIGdvU3BlYWsgPSBmdW5jdGlvbigpewogICAgICBzdG9wVGltZXIoKTsKICAgICAgaWYoUy50NWNob2ljZVt0LmtdPT1udWxsKSBTLnQ1Y2hvaWNlW3Qua10gPSAwOwogICAgICBTLnBoYXNlW3Qua10gPSAic3BlYWsiOwogICAgICByZW5kZXIoKTsKICAgIH07CiAgICBzdGFydC5vbmNsaWNrID0gZnVuY3Rpb24oKXsKICAgICAgc3RhcnQuZGlzYWJsZWQgPSB0cnVlOwogICAgICBTLnBoYXNlW3Qua10gPSAiY2hvb3NlLXJ1biI7CiAgICAgIGNvdW50ZG93bih0LmNob29zZS5wcmVwLCBmdW5jdGlvbihsZWZ0KXsgbi50ZXh0Q29udGVudCA9IFN0cmluZyhsZWZ0KTsgfSwgZ29TcGVhayk7CiAgICB9OwogICAgY2J0bi5vbmNsaWNrID0gZ29TcGVhazsKICAgIGN0ci5hcHBlbmRDaGlsZChzdGFydCk7IGN0ci5hcHBlbmRDaGlsZChjYnRuKTsKICAgIGIuYXBwZW5kQ2hpbGQoY3RyKTsKICAgIGlmKFMucGhhc2VbdC5rXT09PSJjaG9vc2UtcnVuIil7CiAgICAgIHN0YXJ0LmRpc2FibGVkID0gdHJ1ZTsKICAgICAgY291bnRkb3duKHQuY2hvb3NlLnByZXAsIGZ1bmN0aW9uKGxlZnQpeyBuLnRleHRDb250ZW50PVN0cmluZyhsZWZ0KTsgfSwgZ29TcGVhayk7CiAgICB9CiAgfSBlbHNlIHsKICAgIG1ldGFFbC5pbm5lckhUTUwgPSBwaGFzZWRNZXRhKHQpOwogICAgYi5hcHBlbmRDaGlsZChwcm9tcHRSb3codC5zcGVhay5wcm9tcHQpKTsKICAgIHZhciBncmlkID0gZWwoImRpdiIsImNscC1zcGstb3B0cyIpOwogICAgdmFyIG90aGVyID0gZWwoImRpdiIsImNscC1zcGstY2FyZCBwbGFpbiIpOwogICAgb3RoZXIuYXBwZW5kQ2hpbGQoZWwoImRpdiIsImhkIix0LnNwZWFrLm90aGVyTGFiZWwpKTsKICAgIG90aGVyLmFwcGVuZENoaWxkKGltZ1RpdGxlQnVsbGV0cyh0LnNwZWFrLm90aGVyKSk7CiAgICBncmlkLmFwcGVuZENoaWxkKG90aGVyKTsKICAgIHZhciBjaG9zZW4gPSB0LmNob29zZS5vcHRpb25zW1MudDVjaG9pY2VbdC5rXSE9bnVsbCA\/IFMudDVjaG9pY2VbdC5rXSA6IDBdOwogICAgdmFyIG1pbmUgPSBlbCgiZGl2IiwiY2xwLXNway1jYXJkIHBsYWluIHNlbCIpOwogICAgbWluZS5hcHBlbmRDaGlsZChlbCgiZGl2IiwiaGQiLFUueW91ckNob2ljZSkpOwogICAgbWluZS5hcHBlbmRDaGlsZChpbWdUaXRsZUJ1bGxldHMoY2hvc2VuKSk7CiAgICBncmlkLmFwcGVuZENoaWxkKG1pbmUpOwogICAgYi5hcHBlbmRDaGlsZChncmlkKTsKICAgIGIuYXBwZW5kQ2hpbGQodGltZXJCbG9jayh0LmssIHQuc3BlYWsucHJlcCwgdC5zcGVhay5yZWMsICJ0NXMiKSk7CiAgfQp9CmZ1bmN0aW9uIGltZ1RpdGxlQnVsbGV0cyhvKXsKICB2YXIgYm94ID0gZWwoImRpdiIpOwogIGlmKG8uaW1nICYmIEQuaW1nc1tvLmltZ10peyB2YXIgaW0gPSBlbCgiaW1nIik7IGltLnNyYyA9IEQuaW1nc1tvLmltZ107IGltLmFsdCA9IG8udGl0bGU7IGJveC5hcHBlbmRDaGlsZChpbSk7IH0KICBib3guYXBwZW5kQ2hpbGQoZWwoImRpdiIsInR0IixvLnRpdGxlKSk7CiAgdmFyIHVsID0gZWwoInVsIik7CiAgby5idWxsZXRzLmZvckVhY2goZnVuY3Rpb24oeCl7IHVsLmFwcGVuZENoaWxkKGVsKCJsaSIsbnVsbCx4KSk7IH0pOwogIGJveC5hcHBlbmRDaGlsZCh1bCk7CiAgcmV0dXJuIGJveDsKfQoKLyogLS0tLS0tLS0tLSBwcmVwL3JlY29yZCBibG9jayAtLS0tLS0tLS0tICovCmZ1bmN0aW9uIHRpbWVyQmxvY2soa2V5LCBwcmVwU2VjcywgcmVjU2VjcywgbW9kZSl7CiAgdmFyIGJveCA9IGVsKCJkaXYiKTsKICB2YXIgdHJvdyA9IGVsKCJkaXYiLCJjbHAtc3BrLXRpbWVycm93Iik7CiAgdmFyIHRtID0gZWwoImRpdiIsImNscC1zcGstdGltZXIiKTsKICB2YXIgaWMgPSBlbCgic3BhbiIsImljIiwiXHVkODNkXHVkZDUyIik7CiAgdmFyIGxiID0gZWwoImRpdiIpOyB2YXIgbGJ0ID0gZWwoImRpdiIsImxiIixVLnByZXBUaXRsZSk7IGxiLmFwcGVuZENoaWxkKGxidCk7CiAgdmFyIG4gPSBlbCgic3BhbiIsIm4iLFN0cmluZyhwcmVwU2VjcykpOwogIHRtLmFwcGVuZENoaWxkKGljKTsgdG0uYXBwZW5kQ2hpbGQobGIpOyB0bS5hcHBlbmRDaGlsZChuKTsKICB0cm93LmFwcGVuZENoaWxkKHRtKTsgYm94LmFwcGVuZENoaWxkKHRyb3cpOwogIHZhciBzcGVha25vdyA9IGVsKCJkaXYiLCJjbHAtc3BrLXNwZWFrbm93IiwiIik7IGJveC5hcHBlbmRDaGlsZChzcGVha25vdyk7CiAgdmFyIGN0ciA9IGVsKCJkaXYiLCJjbHAtc3BrLWN0ciIpOyBib3guYXBwZW5kQ2hpbGQoY3RyKTsKICB2YXIgcmV2aWV3U2xvdCA9IGVsKCJkaXYiKTsgYm94LmFwcGVuZENoaWxkKHJldmlld1Nsb3QpOwogIHZhciBtaWNub3RlID0gZWwoImRpdiIpOyBib3guYXBwZW5kQ2hpbGQobWljbm90ZSk7CgogIGZ1bmN0aW9uIHNob3dJZGxlKCl7CiAgICBjdHIuaW5uZXJIVE1MID0gIiI7IHNwZWFrbm93LnRleHRDb250ZW50ID0gIiI7CiAgICB0bS5jbGFzc05hbWUgPSAiY2xwLXNway10aW1lciI7IGxidC50ZXh0Q29udGVudCA9IFUucHJlcFRpdGxlOyBpYy50ZXh0Q29udGVudCA9ICJcdWQ4M2RcdWRkNTIiOyBuLnRleHRDb250ZW50ID0gU3RyaW5nKHByZXBTZWNzKTsKICAgIHZhciBzdGFydCA9IGVsKCJidXR0b24iLCJjbHAtc3BrLWJ0biBwcmkiLFUuc3RhcnRQcmVwKTsKICAgIHN0YXJ0Lm9uY2xpY2sgPSBzdGFydFByZXA7CiAgICBjdHIuYXBwZW5kQ2hpbGQoc3RhcnQpOwogICAgaWYoUy5yZWNzW2tleV0pIHNob3dSZXZpZXcoZmFsc2UpOwogIH0KICBmdW5jdGlvbiBzdGFydFByZXAoKXsKICAgIGVuc3VyZU1pYyhmdW5jdGlvbigpewogICAgICBjdHIuaW5uZXJIVE1MID0gIiI7CiAgICAgIHZhciBza2lwID0gZWwoImJ1dHRvbiIsImNscC1zcGstYnRuIixVLnNraXBQcmVwKTsKICAgICAgc2tpcC5vbmNsaWNrID0gZnVuY3Rpb24oKXsgc3RvcFRpbWVyKCk7IHN0YXJ0UmVjKCk7IH07CiAgICAgIGN0ci5hcHBlbmRDaGlsZChza2lwKTsKICAgICAgY291bnRkb3duKHByZXBTZWNzLCBmdW5jdGlvbihsZWZ0KXsgbi50ZXh0Q29udGVudCA9IFN0cmluZyhsZWZ0KTsgfSwgZnVuY3Rpb24oKXsgc3RhcnRSZWMoKTsgfSk7CiAgICB9KTsKICB9CiAgZnVuY3Rpb24gc3RhcnRSZWMoKXsKICAgIGJlZXAoMik7CiAgICB0bS5jbGFzc05hbWUgPSAiY2xwLXNway10aW1lciByZWMiOwogICAgaWMuaW5uZXJIVE1MID0gIjxzcGFuIGNsYXNzPSdjbHAtc3BrLWRvdCc+PC9zcGFuPiI7CiAgICBuLnRleHRDb250ZW50ID0gU3RyaW5nKHJlY1NlY3MpOwogICAgY3RyLmlubmVySFRNTCA9ICIiOwogICAgdmFyIHN0b3BwZWQgPSBmYWxzZTsKICAgIHZhciBoYXZlTWljID0gKFMubWljU3RhdGU9PT0ib2siICYmIFMuc3RyZWFtKTsKICAgIGxidC50ZXh0Q29udGVudCA9IGhhdmVNaWMgPyBVLnJlY1RpdGxlIDogVS50aW1lck9ubHk7CiAgICBzcGVha25vdy50ZXh0Q29udGVudCA9IFUuc3BlYWtOb3c7CiAgICBtaWNub3RlLmlubmVySFRNTCA9IGhhdmVNaWMgPyAiIiA6ICI8ZGl2IGNsYXNzPSdjbHAtc3BrLW1pYyc+IitVLm1pY0Jsb2NrZWQrIjwvZGl2PiI7CiAgICB2YXIgdDAgPSBEYXRlLm5vdygpOwogICAgdmFyIGZpbmlzaCA9IGZ1bmN0aW9uKCl7CiAgICAgIGlmKHN0b3BwZWQpIHJldHVybjsgc3RvcHBlZCA9IHRydWU7CiAgICAgIHN0b3BUaW1lcigpOyBiZWVwKDEpOwogICAgICBzcGVha25vdy50ZXh0Q29udGVudCA9ICIiOwogICAgICB2YXIgc2VjcyA9IE1hdGgubWluKHJlY1NlY3MsIE1hdGgucm91bmQoKERhdGUubm93KCktdDApLzEwMDApKTsKICAgICAgaWYoaGF2ZU1pYyAmJiBTLnJlY29yZGVyKXsKICAgICAgICBTLnJlY29yZGVyLm9uc3RvcCA9IGZ1bmN0aW9uKCl7CiAgICAgICAgICB2YXIgYmxvYiA9IG5ldyBCbG9iKFMuY2h1bmtzLCBTLm1pbWU\/e3R5cGU6Uy5taW1lfTp1bmRlZmluZWQpOwogICAgICAgICAgaWYoUy5yZWNzW2tleV0gJiYgUy5yZWNzW2tleV0udXJsKXsgdHJ5eyBVUkwucmV2b2tlT2JqZWN0VVJMKFMucmVjc1trZXldLnVybCk7IH1jYXRjaChlKXt9IH0KICAgICAgICAgIFMucmVjc1trZXldID0geyBibG9iOiBibG9iLCB1cmw6IFVSTC5jcmVhdGVPYmplY3RVUkwoYmxvYiksIHNlY3M6IHNlY3MgfTsKICAgICAgICAgIFMucmVjb3JkZXIgPSBudWxsOwogICAgICAgICAgc2hvd0lkbGUoKTsgc2hvd1Jldmlldyh0cnVlKTsKICAgICAgICB9OwogICAgICAgIHRyeXsgUy5yZWNvcmRlci5zdG9wKCk7IH1jYXRjaChlKXsgUy5yZWNzW2tleV0gPSB7YmxvYjpudWxsLHVybDpudWxsLHNlY3M6c2Vjc307IHNob3dJZGxlKCk7IHNob3dSZXZpZXcodHJ1ZSk7IH0KICAgICAgfSBlbHNlIHsKICAgICAgICBTLnJlY3Nba2V5XSA9IHsgYmxvYjpudWxsLCB1cmw6bnVsbCwgc2Vjczogc2VjcyB9OwogICAgICAgIHNob3dJZGxlKCk7IHNob3dSZXZpZXcodHJ1ZSk7CiAgICAgIH0KICAgIH07CiAgICBpZihoYXZlTWljKXsKICAgICAgUy5jaHVua3MgPSBbXTsKICAgICAgdHJ5ewogICAgICAgIFMucmVjb3JkZXIgPSBTLm1pbWUgPyBuZXcgTWVkaWFSZWNvcmRlcihTLnN0cmVhbSx7bWltZVR5cGU6Uy5taW1lfSkgOiBuZXcgTWVkaWFSZWNvcmRlcihTLnN0cmVhbSk7CiAgICAgICAgUy5yZWNvcmRlci5vbmRhdGFhdmFpbGFibGUgPSBmdW5jdGlvbihldil7IGlmKGV2LmRhdGEgJiYgZXYuZGF0YS5zaXplKSBTLmNodW5rcy5wdXNoKGV2LmRhdGEpOyB9OwogICAgICAgIFMucmVjb3JkZXIuc3RhcnQoKTsKICAgICAgfWNhdGNoKGUpeyBTLnJlY29yZGVyID0gbnVsbDsgaGF2ZU1pYyA9IGZhbHNlOyBsYnQudGV4dENvbnRlbnQgPSBVLnRpbWVyT25seTsgfQogICAgfQogICAgdmFyIHN0b3AgPSBlbCgiYnV0dG9uIiwiY2xwLXNway1idG4gd2FybiIsVS5zdG9wUmVjKTsKICAgIHN0b3Aub25jbGljayA9IGZpbmlzaDsKICAgIGN0ci5hcHBlbmRDaGlsZChzdG9wKTsKICAgIGNvdW50ZG93bihyZWNTZWNzLCBmdW5jdGlvbihsZWZ0KXsgbi50ZXh0Q29udGVudCA9IFN0cmluZyhsZWZ0KTsgfSwgZmluaXNoKTsKICB9CiAgZnVuY3Rpb24gc2hvd1JldmlldyhzY3JvbGxUbyl7CiAgICB2YXIgciA9IFMucmVjc1trZXldOyBpZighcikgcmV0dXJuOwogICAgcmV2aWV3U2xvdC5pbm5lckhUTUwgPSAiIjsKICAgIHZhciBydiA9IGVsKCJkaXYiLCJjbHAtc3BrLXJldmlldyIpOwogICAgcnYuYXBwZW5kQ2hpbGQoZWwoImRpdiIsIm9rIiwiXHUyNzE0ICIrVS5yZWNvcmRlZCsiICgiK3Iuc2VjcysicykiKSk7CiAgICBpZihyLnVybCl7CiAgICAgIHZhciBhdSA9IGVsKCJhdWRpbyIpOyBhdS5jb250cm9scyA9IHRydWU7IGF1LnNyYyA9IHIudXJsOwogICAgICBydi5hcHBlbmRDaGlsZChhdSk7CiAgICAgIHZhciByb3cgPSBlbCgiZGl2IiwiY2xwLXNway1jdHIiKTsKICAgICAgdmFyIGRsID0gZWwoImEiLCJjbHAtc3BrLWJ0biIsVS5kb3dubG9hZCk7CiAgICAgIGRsLmhyZWYgPSByLnVybDsgZGwuZG93bmxvYWQgPSAiY2VscGlwLXMiK0Quc2V0KyJ0IitELnRlc3QrIi10YXNrIisoa2V5PT09InciPyIwIjprZXkucmVwbGFjZSgidCIsIiIpKSsiLiIrUy5leHQ7CiAgICAgIHJvdy5hcHBlbmRDaGlsZChkbCk7CiAgICAgIHJ2LmFwcGVuZENoaWxkKHJvdyk7CiAgICB9CiAgICByZXZpZXdTbG90LmFwcGVuZENoaWxkKHJ2KTsKICAgIGlmKHNjcm9sbFRvKXsgdHJ5eyBydi5zY3JvbGxJbnRvVmlldyh7YmVoYXZpb3I6InNtb290aCIsYmxvY2s6ImNlbnRlciJ9KTsgfWNhdGNoKGUpe30gfQogIH0KICBzaG93SWRsZSgpOwogIHJldHVybiBib3g7Cn0KCi8qIC0tLS0tLS0tLS0gdGlwcy9zYW1wbGVzIGFjY29yZGlvbiAtLS0tLS0tLS0tICovCmZ1bmN0aW9uIGFjY29yZGlvbih0KXsKICB2YXIgYWNjID0gZWwoImRpdiIsImNscC1zcGstYWNjIik7CiAgdmFyIGJ0biA9IGVsKCJidXR0b24iLG51bGwsVS50aXBzVG9nZ2xlKTsKICBidG4ub25jbGljayA9IGZ1bmN0aW9uKCl7IGFjYy5jbGFzc05hbWUgPSBhY2MuY2xhc3NOYW1lLmluZGV4T2YoIm9wZW4iKT4tMSA\/ICJjbHAtc3BrLWFjYyIgOiAiY2xwLXNway1hY2Mgb3BlbiI7IH07CiAgYWNjLmFwcGVuZENoaWxkKGJ0bik7CiAgdmFyIGJvZHkgPSBlbCgiZGl2IiwiY2xwLXNway1hY2Nib2R5Iik7CiAgdmFyIHRhYnMgPSBlbCgiZGl2IiwiY2xwLXNway10YWJzIik7CiAgdmFyIHBhbmVzID0gW107CiAgZnVuY3Rpb24gYWRkVGFiKGxhYmVsLCBwYW5lQnVpbGRlcil7CiAgICB2YXIgaSA9IHBhbmVzLmxlbmd0aDsKICAgIHZhciB0YiA9IGVsKCJidXR0b24iLCJjbHAtc3BrLXRhYiIrKGk9PT0wPyIgb24iOiIiKSxsYWJlbCk7CiAgICB2YXIgcG4gPSBlbCgiZGl2IiwiY2xwLXNway10YWJwYW5lIisoaT09PTA\/IiBvbiI6IiIpKTsKICAgIHBhbmVCdWlsZGVyKHBuKTsKICAgIHRiLm9uY2xpY2sgPSBmdW5jdGlvbigpewogICAgICB0YWJzLnF1ZXJ5U2VsZWN0b3JBbGwoIi5jbHAtc3BrLXRhYiIpLmZvckVhY2goZnVuY3Rpb24oeCxqKXsgeC5jbGFzc05hbWUgPSAiY2xwLXNway10YWIiKyhqPT09aT8iIG9uIjoiIik7IH0pOwogICAgICBib2R5LnF1ZXJ5U2VsZWN0b3JBbGwoIi5jbHAtc3BrLXRhYnBhbmUiKS5mb3JFYWNoKGZ1bmN0aW9uKHgsail7IHguY2xhc3NOYW1lID0gImNscC1zcGstdGFicGFuZSIrKGo9PT1pPyIgb24iOiIiKTsgfSk7CiAgICB9OwogICAgdGFicy5hcHBlbmRDaGlsZCh0Yik7IHBhbmVzLnB1c2gocG4pOwogIH0KICBhZGRUYWIoVS50YWJUaXBzLCBmdW5jdGlvbihwbil7CiAgICB2YXIgdWwgPSBlbCgidWwiKTsKICAgIHQudGlwcy5idWxsZXRzLmZvckVhY2goZnVuY3Rpb24oeCl7IHVsLmFwcGVuZENoaWxkKGVsKCJsaSIsbnVsbCx4KSk7IH0pOwogICAgcG4uYXBwZW5kQ2hpbGQodWwpOwogICAgcG4uYXBwZW5kQ2hpbGQoZWwoImRpdiIsbnVsbCwiPGI+IitVLnVzZWZ1bFBocmFzZXMrIjo8L2I+IikpOwogICAgdmFyIHBoID0gZWwoImRpdiIsImNscC1zcGstcGhyIik7CiAgICB0LnRpcHMucGhyYXNlcy5mb3JFYWNoKGZ1bmN0aW9uKHgpeyBwaC5hcHBlbmRDaGlsZChlbCgic3BhbiIsbnVsbCx4KSk7IH0pOwogICAgcG4uYXBwZW5kQ2hpbGQocGgpOwogIH0pOwogIGlmKHQuczYpIGFkZFRhYihVLnRhYlM2LCBmdW5jdGlvbihwbil7IHBuLmFwcGVuZENoaWxkKGVsKCJkaXYiLCJjbHAtc3BrLXNhbXBsZSBzNiIsdC5zNikpOyB9KTsKICBpZih0LnM5KSBhZGRUYWIoVS50YWJTOSwgZnVuY3Rpb24ocG4peyBwbi5hcHBlbmRDaGlsZChlbCgiZGl2IiwiY2xwLXNway1zYW1wbGUiLHQuczkpKTsgfSk7CiAgaWYoIXQud2FybXVwKSBhZGRUYWIoVS50YWJSdWJyaWMsIGZ1bmN0aW9uKHBuKXsKICAgIHBuLmFwcGVuZENoaWxkKGVsKCJkaXYiLG51bGwsVS5ydWJyaWNOb3RlKSk7CiAgICB2YXIgdGIgPSBlbCgidGFibGUiLCJjbHAtc3BrLXJ1YiIpOwogICAgaWYoIVMucnVicmljW3Qua10pIFMucnVicmljW3Qua10gPSBbMCwwLDAsMF07CiAgICB2YXIgZXN0RCA9IGVsKCJkaXYiLCJjbHAtc3BrLWVzdCIsIiIpOwogICAgVS5ydWJyaWNDcml0LmZvckVhY2goZnVuY3Rpb24oY3IsY2kpewogICAgICB2YXIgdHIgPSBlbCgidHIiKTsKICAgICAgdHIuYXBwZW5kQ2hpbGQoZWwoInRkIixudWxsLGNyKSk7CiAgICAgIHZhciB0ZCA9IGVsKCJ0ZCIpOyB0ZC5zdHlsZS53aGl0ZVNwYWNlID0gIm5vd3JhcCI7IHRkLnN0eWxlLnRleHRBbGlnbiA9ICJyaWdodCI7CiAgICAgIGZvcih2YXIgczI9MTtzMjw9NTtzMisrKXsKICAgICAgICAoZnVuY3Rpb24oc3YpewogICAgICAgICAgdmFyIHNwID0gZWwoInNwYW4iLCJjbHAtc3BrLXN0YXIiKyhTLnJ1YnJpY1t0LmtdW2NpXT49c3Y\/IiBvbiI6IiIpLCJcdTI2MDUiKTsKICAgICAgICAgIHNwLm9uY2xpY2sgPSBmdW5jdGlvbigpewogICAgICAgICAgICBTLnJ1YnJpY1t0LmtdW2NpXSA9IHN2OwogICAgICAgICAgICB0ZC5xdWVyeVNlbGVjdG9yQWxsKCIuY2xwLXNway1zdGFyIikuZm9yRWFjaChmdW5jdGlvbih4LGopeyB4LmNsYXNzTmFtZSA9ICJjbHAtc3BrLXN0YXIiKyhqPHN2PyIgb24iOiIiKTsgfSk7CiAgICAgICAgICAgIHVwZCgpOwogICAgICAgICAgfTsKICAgICAgICAgIHRkLmFwcGVuZENoaWxkKHNwKTsKICAgICAgICB9KShzMik7CiAgICAgIH0KICAgICAgdHIuYXBwZW5kQ2hpbGQodGQpOwogICAgICB0Yi5hcHBlbmRDaGlsZCh0cik7CiAgICB9KTsKICAgIHBuLmFwcGVuZENoaWxkKHRiKTsKICAgIHBuLmFwcGVuZENoaWxkKGVzdEQpOwogICAgcG4uYXBwZW5kQ2hpbGQoZWwoImRpdiIsImNscC1zcGstbm90ZSIsVS5lc3REaXNjbGFpbWVyKSk7CiAgICBmdW5jdGlvbiB1cGQoKXsKICAgICAgdmFyIGFyciA9IFMucnVicmljW3Qua107IHZhciBkb25lID0gYXJyLmV2ZXJ5KGZ1bmN0aW9uKHgpe3JldHVybiB4PjA7fSk7CiAgICAgIGVzdEQudGV4dENvbnRlbnQgPSBkb25lID8gKFUuZXN0aW1hdGUrIiAiK2VzdFRleHQoYXJyLnJlZHVjZShmdW5jdGlvbihhLGIpe3JldHVybiBhK2I7fSwwKS80KSkgOiAiIjsKICAgIH0KICAgIHVwZCgpOwogIH0pOwogIGJvZHkuaW5zZXJ0QmVmb3JlKHRhYnMsIGJvZHkuZmlyc3RDaGlsZCk7CiAgcGFuZXMuZm9yRWFjaChmdW5jdGlvbihwbil7IGJvZHkuYXBwZW5kQ2hpbGQocG4pOyB9KTsKICBhY2MuYXBwZW5kQ2hpbGQoYm9keSk7CiAgcmV0dXJuIGFjYzsKfQoKLyogLS0tLS0tLS0tLSBlbmQgc2NyZWVuIC0tLS0tLS0tLS0gKi8KZnVuY3Rpb24gZW5kU2NyZWVuKCl7CiAgdmFyIHAgPSBlbCgiZGl2IiwiY2xwLXNway1wYW5lbCBjbHAtc3BrLWVuZCIpOwogIHZhciBiYXIgPSBlbCgiZGl2IiwiY2xwLXNway1iYXIiKTsKICBiYXIuYXBwZW5kQ2hpbGQoZWwoInNwYW4iLCJ0IixELmhlYWRlcisiIC0gU3BlYWtpbmcgXHUyMDE0ICIrVS5lbmRUaXRsZSkpOwogIHAuYXBwZW5kQ2hpbGQoYmFyKTsKICB2YXIgYiA9IGVsKCJkaXYiLCJjbHAtc3BrLWJvZHkiKTsKICBiLmFwcGVuZENoaWxkKGVsKCJkaXYiLG51bGwsIjxiPiIrVS5lbmRUaXRsZSsiPC9iPiAiK1UuZW5kU3ViKSk7CiAgdmFyIHRiID0gZWwoInRhYmxlIik7CiAgdmFyIHRociA9IGVsKCJ0ciIpOyBbIlRhc2siLCJUeXBlIiwiUmVjb3JkaW5nIiwiIl0uZm9yRWFjaChmdW5jdGlvbihoKXsgdGhyLmFwcGVuZENoaWxkKGVsKCJ0aCIsbnVsbCxoKSk7IH0pOwogIHRiLmFwcGVuZENoaWxkKHRocik7CiAgdmFyIG5yZWMgPSAwOwogIEQudGFza3MuZm9yRWFjaChmdW5jdGlvbih0LGkpewogICAgdmFyIHRyID0gZWwoInRyIik7CiAgICB0ci5hcHBlbmRDaGlsZChlbCgidGQiLG51bGwsIjxiPiIrKHQud2FybXVwPyJXIjp0Lm51bSkrIjwvYj4iKSk7CiAgICB0ci5hcHBlbmRDaGlsZChlbCgidGQiLG51bGwsdC50eXBlRW4pKTsKICAgIHZhciByID0gUy5yZWNzW3Qua107CiAgICB2YXIgdGQgPSBlbCgidGQiKTsKICAgIGlmKHIgJiYgci51cmwpeyBucmVjKys7IHZhciBhdSA9IGVsKCJhdWRpbyIpOyBhdS5jb250cm9scyA9IHRydWU7IGF1LnNyYyA9IHIudXJsOyB0ZC5hcHBlbmRDaGlsZChhdSk7IH0KICAgIGVsc2UgaWYocil7IG5yZWMrKzsgdGQudGV4dENvbnRlbnQgPSByLnNlY3MrInMgKCIrVS50aW1lck9ubHkrIikiOyB9CiAgICBlbHNlIHRkLmlubmVySFRNTCA9ICI8c3BhbiBzdHlsZT0nY29sb3I6I2M2MjgyOCc+IitVLmVuZE5vUmVjKyI8L3NwYW4+IjsKICAgIHRyLmFwcGVuZENoaWxkKHRkKTsKICAgIHZhciB0ZDIgPSBlbCgidGQiKTsKICAgIHZhciBnbyA9IGVsKCJidXR0b24iLCJjbHAtc3BrLWJ0biIsIlx1MjE5MiIpOwogICAgZ28ub25jbGljayA9IGZ1bmN0aW9uKCl7IFMuY3VyPWk7IHJlbmRlcigpOyB9OwogICAgdGQyLmFwcGVuZENoaWxkKGdvKTsKICAgIHRyLmFwcGVuZENoaWxkKHRkMik7CiAgICB0Yi5hcHBlbmRDaGlsZCh0cik7CiAgfSk7CiAgYi5hcHBlbmRDaGlsZCh0Yik7CiAgLyogcnVicmljIGF2ZyAqLwogIHZhciB2YWxzID0gW107CiAgT2JqZWN0LmtleXMoUy5ydWJyaWMpLmZvckVhY2goZnVuY3Rpb24oayl7IHZhciBhPVMucnVicmljW2tdOyBpZihhICYmIGEuZXZlcnkoZnVuY3Rpb24oeCl7cmV0dXJuIHg+MDt9KSkgdmFscy5wdXNoKGEucmVkdWNlKGZ1bmN0aW9uKHgseSl7cmV0dXJuIHgreTt9LDApLzQpOyB9KTsKICBpZih2YWxzLmxlbmd0aCl7CiAgICB2YXIgYXZnID0gdmFscy5yZWR1Y2UoZnVuY3Rpb24oYSxjKXtyZXR1cm4gYStjO30sMCkvdmFscy5sZW5ndGg7CiAgICBiLmFwcGVuZENoaWxkKGVsKCJkaXYiLCJjbHAtc3BrLWVzdCIsVS5lc3RpbWF0ZSsiICIrZXN0VGV4dChhdmcpKyIgKCIrdmFscy5sZW5ndGgrIiB0YXNrKHMpIHNlbGYtcmF0ZWQpIikpOwogICAgYi5hcHBlbmRDaGlsZChlbCgiZGl2IiwiY2xwLXNway1ub3RlIixVLmVzdERpc2NsYWltZXIpKTsKICB9CiAgdmFyIGN0ciA9IGVsKCJkaXYiLCJjbHAtc3BrLWN0ciIpOwogIHZhciByZWRvID0gZWwoImJ1dHRvbiIsImNscC1zcGstYnRuIixVLmVuZFJlZG8pOwogIHJlZG8ub25jbGljayA9IGZ1bmN0aW9uKCl7CiAgICBPYmplY3Qua2V5cyhTLnJlY3MpLmZvckVhY2goZnVuY3Rpb24oayl7IGlmKFMucmVjc1trXSYmUy5yZWNzW2tdLnVybCl7IHRyeXtVUkwucmV2b2tlT2JqZWN0VVJMKFMucmVjc1trXS51cmwpO31jYXRjaChlKXt9IH0gfSk7CiAgICBTLnJlY3MgPSB7fTsgUy5ydWJyaWMgPSB7fTsgUy50NWNob2ljZSA9IHt9OwogICAgRC50YXNrcy5mb3JFYWNoKGZ1bmN0aW9uKHQpeyBTLnBoYXNlW3Qua10gPSB0LnBoYXNlZD8iY2hvb3NlLWlkbGUiOiJpZGxlIjsgfSk7CiAgICBTLmN1ciA9IC0xOyByZW5kZXIoKTsKICB9OwogIHZhciB0MiA9IGVsKCJhIiwiY2xwLXNway1idG4gcHJpIixVLmVuZFQyKyIgIisoRC50ZXN0PT09MT8yOjEpKyIgXHUyMTkyIik7IHQyLmhyZWYgPSBELm90aGVyVXJsOwogIHZhciBodWIgPSBlbCgiYSIsImNscC1zcGstYnRuIixVLmVuZEh1Yik7IGh1Yi5ocmVmID0gIi9jZWxwaXAvIjsKICBjdHIuYXBwZW5kQ2hpbGQocmVkbyk7IGN0ci5hcHBlbmRDaGlsZCh0Mik7IGN0ci5hcHBlbmRDaGlsZChodWIpOwogIGIuYXBwZW5kQ2hpbGQoY3RyKTsKICBiLmFwcGVuZENoaWxkKGVsKCJkaXYiLCJjbHAtc3BrLW1pYyIsVS5taWNOb3RlKSk7CiAgcC5hcHBlbmRDaGlsZChiKTsKICByZXR1cm4gcDsKfQoKLyogZXhwb3NlIGZvciB0ZXN0cyAqLwp3aW5kb3cuQ0xQU1BLID0geyBzdGF0ZTogUywgZGF0YTogRCwgZ290bzogZnVuY3Rpb24oaSl7IFMuY3VyPWk7IHJlbmRlcigpOyB9LCByZW5kZXI6IHJlbmRlciB9OwpyZW5kZXIoKTsKfSkoKTsK\"));<\/script><\/p>","protected":false},"excerpt":{"rendered":"<p>CELPIP Speaking Set 8 Practice Test 2: all 8 official-style tasks with on-screen prep and recording timers, sample responses and self-assessment tips. Free, no sign-up.<\/p>","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"page-with-title","meta":{"footnotes":""},"class_list":["post-6374","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/pages\/6374","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/comments?post=6374"}],"version-history":[{"count":1,"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/pages\/6374\/revisions"}],"predecessor-version":[{"id":6516,"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/pages\/6374\/revisions\/6516"}],"wp:attachment":[{"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/media?parent=6374"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}