{"id":6470,"date":"2026-07-11T11:39:37","date_gmt":"2026-07-11T11:39:37","guid":{"rendered":"https:\/\/allenglish4u.com\/celpip-set-12-test-1-speaking\/"},"modified":"2026-07-12T03:16:14","modified_gmt":"2026-07-12T03:16:14","slug":"celpip-set-12-test-1-speaking","status":"publish","type":"page","link":"https:\/\/allenglish4u.com\/vi\/celpip-set-12-test-1-speaking\/","title":{"rendered":"CELPIP Speaking \u2014 Set 12 \u00b7 Practice Test 1"},"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(\"d2luZG93LkNMUFNQS19EQVRBPXsic2V0IjoxMiwidGVzdCI6MSwidGl0bGUiOiJDRUxQSVAgU3BlYWtpbmcgXHUyMDE0IFNldCAxMiBcdTAwYjcgUHJhY3RpY2UgVGVzdCAxIiwiaGVhZGVyIjoiUHJhY3RpY2UgVGVzdCAxIiwiaW1ncyI6eyJzY2VuZSI6Imh0dHBzOi8vYWxsZW5nbGlzaDR1LmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAyNi8wNy9zMTJ0MS1zY2VuZS5qcGciLCJvcHRBIjoiaHR0cHM6Ly9hbGxlbmdsaXNoNHUuY29tL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDI2LzA3L3MxMnQxLW9wdC1hLmpwZyIsIm9wdEIiOiJodHRwczovL2FsbGVuZ2xpc2g0dS5jb20vd3AtY29udGVudC91cGxvYWRzLzIwMjYvMDcvczEydDEtb3B0LWIuanBnIiwib3B0T3RoZXIiOiJodHRwczovL2FsbGVuZ2xpc2g0dS5jb20vd3AtY29udGVudC91cGxvYWRzLzIwMjYvMDcvczEydDEtb3B0LW90aGVyLmpwZyIsInVudXN1YWwiOiJodHRwczovL2FsbGVuZ2xpc2g0dS5jb20vd3AtY29udGVudC91cGxvYWRzLzIwMjYvMDcvczEydDEtdW51c3VhbC5qcGcifSwib3RoZXJVcmwiOiIvY2VscGlwLXNldC0xMi10ZXN0LTItc3BlYWtpbmcvIiwidGFza3MiOlt7ImsiOiJ3IiwibnVtIjowLCJ0eXBlRW4iOiJTcGVha2luZyBQcmFjdGljZSBUYXNrIiwicHJlcCI6MzAsInJlYyI6NjAsIndhcm11cCI6dHJ1ZSwicHJvbXB0IjoiVGFsayBhYm91dCBvbmUgb2YgeW91ciBiZXN0IGZyaWVuZHMuIiwiaW1nIjpudWxsLCJ0aXBzIjp7ImJ1bGxldHMiOlsiVGhlIFByYWN0aWNlIFRhc2sgKHdhcm0tdXApIGlzIE5PVCBzY29yZWQgXHUyMDE0IGl0IGlzIGhlcmUgdG8gaGVscCB5b3UgZ2V0IHVzZWQgdG8gdGhlIGNvbnRyb2xzIGFuZCB3YXJtIHVwIHlvdXIgdm9pY2UuIiwiU3BlYWsgbmF0dXJhbGx5IGFib3V0IGEgYmVzdCBmcmllbmQ6IHRoZWlyIG5hbWUsIGhvdyB5b3UgbWV0LCB0aGVpciBwZXJzb25hbGl0eSwgYSBtZW1vcnkgeW91IHNoYXJlLiIsIlVzZSBpdCB0byBhZGp1c3QgeW91ciBwb3N0dXJlLCBtaWNyb3Bob25lIGRpc3RhbmNlLCBhbmQgc3BlYWtpbmcgcGFjZS4iXSwicGhyYXNlcyI6WyJNeSBiZXN0IGZyaWVuZCdzIG5hbWUgaXNcdTIwMjYiLCJXZSBtZXQgd2hlblx1MjAyNiIsIldoYXQgSSBsaWtlIG1vc3QgYWJvdXQgaGltL2hlciBpc1x1MjAyNiJdfSwiczYiOm51bGwsInM5IjpudWxsfSx7ImsiOiJ0MSIsIm51bSI6MSwidHlwZUVuIjoiR2l2aW5nIEFkdmljZSIsInByZXAiOjMwLCJyZWMiOjkwLCJwcm9tcHQiOiJZb3VyIGZyaWVuZCB3YW50cyB0byBoZWxwIHNvbWUgb2YgaGVyIGNsYXNzbWF0ZXMgaW1wcm92ZSB0aGVpciByZWFkaW5nIHNraWxscy4gR2l2ZSBoZXIgYWR2aWNlIG9uIHdoYXQgc2hlIHNob3VsZCBkbyB0byBoZWxwIHRoZW0uIiwiaW1nIjpudWxsLCJ0aXBzIjp7ImJ1bGxldHMiOlsiT3BlbmluZzogZ3JlZXQgeW91ciBmcmllbmQgYW5kIHJlc3RhdGUgdGhlIHNpdHVhdGlvbiBpbiBvbmUgc2VudGVuY2UuIiwiQm9keTogZ2l2ZSAyXHUyMDEzMyBwaWVjZXMgb2YgYWR2aWNlLCBlYWNoIHdpdGggYSByZWFzb24gb3IgZXhhbXBsZSAoRmlyc3RcdTIwMjYsIGJlY2F1c2VcdTIwMjY7IEFub3RoZXIgaWRlYSBpc1x1MjAyNikuIiwiQ2xvc2luZzogZW5jb3VyYWdlIHRoZW0gYW5kIHdpc2ggdGhlbSBsdWNrLiIsIkFkdmlzZSB5b3VyIGZyaWVuZCBvbiBob3cgdG8gaGVscCBoZXIgY2xhc3NtYXRlcyByZWFkIGJldHRlcjogZmlyc3QgZmluZCBvdXQgZWFjaCBwZXJzb24ncyBsZXZlbCBhbmQsIGp1c3QgYXMgaW1wb3J0YW50LCB3aGF0IHRvcGljcyB0aGV5IGVuam95LCB0aGVuIGNob29zZSBtYXRlcmlhbCBhdCB0aGUgcmlnaHQgbGV2ZWwgYW5kIG9uIHN1YmplY3RzIHRoZXkgbGlrZSBzbyB0aGV5IHN0YXkgbW90aXZhdGVkOyBtYWtlIGl0IHNvY2lhbCBieSByZWFkaW5nIHRvZ2V0aGVyIGFuZCB0YWtpbmcgdHVybnMgYWxvdWQsIHRoZW4gZGlzY3Vzc2luZyBpdDsgdGVhY2ggdGhlbSB0byBndWVzcyBhIG5ldyB3b3JkIGZyb20gdGhlIHNlbnRlbmNlIGluc3RlYWQgb2Ygc3RvcHBpbmcgYXQgZXZlcnkgd29yZDsgc2V0IHNob3J0LCByZWd1bGFyIGdvYWxzIChhYm91dCBmaWZ0ZWVuIG1pbnV0ZXMgYSBkYXkpOyBhbmQgYmUgcGF0aWVudCBhbmQgcHJhaXNlIGV2ZXJ5IHNtYWxsIGltcHJvdmVtZW50LiJdLCJwaHJhc2VzIjpbIklmIEkgd2VyZSB5b3UsIEknZFx1MjAyNiIsIllvdSBzaG91bGQgZGVmaW5pdGVseVx1MjAyNiIsIkFub3RoZXIgb3B0aW9uIGlzIHRvXHUyMDI2IiwiVHJ1c3QgbWUsIHlvdSB3b24ndCByZWdyZXQgaXQuIl19LCJzNiI6IkhleSBMaXNhLCBJIHRoaW5rIGl0IGlzIHNvIGtpbmQgb2YgeW91IHRvIGhlbHAgeW91ciBjbGFzc21hdGVzIHdpdGggdGhlaXIgcmVhZGluZy4gTGV0IG1lIGdpdmUgeW91IHNvbWUgYWR2aWNlLiBGaXJzdCwgYmVmb3JlIHlvdSBzdGFydCwgZmluZCBvdXQgdGhlaXIgbGV2ZWwgYW5kIHdoYXQgdGhleSBsaWtlLiBJZiBzb21lb25lIGxvdmVzIGZvb3RiYWxsLCBnaXZlIHRoZW0gYSBzaW1wbGUgYm9vayBvciBhcnRpY2xlIGFib3V0IGZvb3RiYWxsLiBXaGVuIHRoZSB0b3BpYyBpcyBpbnRlcmVzdGluZywgdGhleSB3aWxsIHdhbnQgdG8gcmVhZCBtb3JlLiBTZWNvbmQsIGRvIG5vdCBjaG9vc2UgYm9va3MgdGhhdCBhcmUgdG9vIGhhcmQuIElmIGV2ZXJ5IHdvcmQgaXMgZGlmZmljdWx0LCB0aGV5IHdpbGwgZmVlbCBzdHJlc3NlZCBhbmQgZ2l2ZSB1cC4gUGljayBzb21ldGhpbmcgYSBsaXR0bGUgYml0IGVhc3ksIHNvIHRoZXkgZmVlbCBzdWNjZXNzZnVsLiBUaGlyZCwgcmVhZCB0b2dldGhlci4gWW91IGNhbiB0YWtlIHR1cm5zIHJlYWRpbmcgYWxvdWQsIGFuZCB0aGVuIHRhbGsgYWJvdXQgdGhlIHN0b3J5LiBUaGlzIG1ha2VzIHJlYWRpbmcgZnVuLCBub3QgbGlrZSBob21ld29yay4gRm91cnRoLCB0ZWFjaCB0aGVtIGEgdHJpY2s6IHdoZW4gdGhleSBzZWUgYSBuZXcgd29yZCwgdGVsbCB0aGVtIHRvIGd1ZXNzIHRoZSBtZWFuaW5nIGZyb20gdGhlIHNlbnRlbmNlIGZpcnN0LCBhbmQgbm90IHN0b3AgZXZlcnkgdGltZSB0byBjaGVjayB0aGUgZGljdGlvbmFyeS4gRmlmdGgsIHN0YXJ0IHNtYWxsLiBGaWZ0ZWVuIG1pbnV0ZXMgb2YgcmVhZGluZyBldmVyeSBkYXkgaXMgYmV0dGVyIHRoYW4gdGhyZWUgaG91cnMgb25lIHRpbWUuIEFuZCBwbGVhc2UsIGJlIHBhdGllbnQgYW5kIHNheSAnd2VsbCBkb25lJyBhIGxvdC4gV2hlbiBwZW9wbGUgZmVlbCBwcm91ZCwgdGhleSBrZWVwIGdvaW5nLiBJZiB5b3UgZG8gdGhlc2UgdGhpbmdzLCB5b3VyIGNsYXNzbWF0ZXMgd2lsbCBpbXByb3ZlIHN0ZXAgYnkgc3RlcC4gR29vZCBsdWNrLCB5b3Ugd2lsbCBiZSBhIGdyZWF0IGhlbHBlciEiLCJzOSI6IkhpIExpc2EsIHdoYXQgYSBnZW5lcm91cyB0aGluZyB0byBkbywgb2ZmZXJpbmcgdG8gaGVscCB5b3VyIGNsYXNzbWF0ZXMgc3RyZW5ndGhlbiB0aGVpciByZWFkaW5nLiBMZXQgbWUgd2FsayB5b3UgdGhyb3VnaCBhIGZldyBzdHJhdGVnaWVzIHRoYXQgcmVhbGx5IHdvcmsuIFN0YXJ0IGJ5IGdldHRpbmcgdG8ga25vdyB0aGVtIGJlZm9yZSB5b3UgZGl2ZSBpbjogZmluZCBvdXQgcm91Z2hseSB3aGF0IGxldmVsIGVhY2ggcGVyc29uIGlzIGF0IGFuZCwganVzdCBhcyBpbXBvcnRhbnRseSwgd2hhdCB0aGV5IGFyZSBnZW51aW5lbHkgaW50ZXJlc3RlZCBpbi4gSWYgc29tZW9uZSBpcyBtYWQgYWJvdXQgY2FycyBvciBjb29raW5nLCBoYW5kIHRoZW0gc29tZXRoaW5nIG9uIHRoYXQgdG9waWMsIGJlY2F1c2UgbW90aXZhdGlvbiBpcyBoYWxmIHRoZSBiYXR0bGUgYW5kIG5vYm9keSBpbXByb3ZlcyBvbiBtYXRlcmlhbCB0aGV5IGZpbmQgYm9yaW5nLiBOZXh0LCBiZSBjYXJlZnVsIHdpdGggZGlmZmljdWx0eS4gSWYgYSB0ZXh0IGlzIHBhY2tlZCB3aXRoIHdvcmRzIHRoZXkgZG8gbm90IGtub3csIHRoZXkgd2lsbCBmZWVsIG92ZXJ3aGVsbWVkIGFuZCBxdWlldGx5IGdpdmUgdXAsIHNvIGFpbSBzbGlnaHRseSBiZWxvdyB0aGVpciBmcnVzdHJhdGlvbiBsZXZlbCwgd2hlcmUgdGhleSBjYW4gc3VjY2VlZCB3aXRoIGEgbGl0dGxlIGVmZm9ydC4gVGhhdCBzZW5zZSBvZiAnSSBjYW4gZG8gdGhpcycgaXMgd2hhdCBrZWVwcyBwZW9wbGUgY29taW5nIGJhY2suIEkgd291bGQgYWxzbyBtYWtlIGl0IHNvY2lhbCByYXRoZXIgdGhhbiBzb2xpdGFyeTogcmVhZCBhIHBhc3NhZ2UgdG9nZXRoZXIsIHRha2UgdHVybnMgYWxvdWQsIGFuZCB0aGVuIGNoYXQgYWJvdXQgd2hhdCBpdCBtZWFudCwgd2hpY2ggYnVpbGRzIGJvdGggY29uZmlkZW5jZSBhbmQgY29tcHJlaGVuc2lvbi4gVGVhY2ggdGhlbSBvbmUgY3J1Y2lhbCBoYWJpdCB0b28sIGd1ZXNzaW5nIGEgbmV3IHdvcmQgZnJvbSB0aGUgc3Vycm91bmRpbmcgc2VudGVuY2UgaW5zdGVhZCBvZiBzdG9wcGluZyBkZWFkIGF0IGV2ZXJ5IHVuZmFtaWxpYXIgdGVybSwgYmVjYXVzZSBjb25zdGFudCBkaWN0aW9uYXJ5IGNoZWNrcyBraWxsIHRoZSBmbG93IGFuZCB0aGUgZW5qb3ltZW50LiBGaW5hbGx5LCBrZWVwIHRoZSBzZXNzaW9ucyBzaG9ydCBhbmQgcmVndWxhciwgc2F5IGZpZnRlZW4gZm9jdXNlZCBtaW51dGVzIGEgZGF5IHJhdGhlciB0aGFuIG9uZSBleGhhdXN0aW5nIG1hcmF0aG9uLCBhbmQgYmUgbGF2aXNoIHdpdGggZW5jb3VyYWdlbWVudC4gUHJhaXNlIGV2ZXJ5IHNtYWxsIHdpbiwgaG93ZXZlciB0aW55LiBEbyBhbGwgdGhhdCBjb25zaXN0ZW50bHksIGFuZCBJIHByb21pc2UgeW91IHdpbGwgc2VlIHN0ZWFkeSwgcmVhbCBwcm9ncmVzcyBpbiB5b3VyIGNsYXNzbWF0ZXMgb3ZlciBhIGZldyB3ZWVrcy4ifSx7ImsiOiJ0MiIsIm51bSI6MiwidHlwZUVuIjoiVGFsa2luZyBhYm91dCBhIFBlcnNvbmFsIEV4cGVyaWVuY2UiLCJwcmVwIjozMCwicmVjIjo2MCwicHJvbXB0IjoiVGFsayBhYm91dCBhIHRpbWUgd2hlbiB5b3UgZmVsdCB2ZXJ5IGVuZXJnZXRpYy4gTWF5YmUgeW91IHdlcmUgc3RhcnRpbmcgc29tZXRoaW5nIG5ldywgZ29pbmcgc29tZXdoZXJlIGV4Y2l0aW5nLCBvciBtZWV0aW5nIHdpdGggcGVvcGxlIHdobyB3ZXJlIHZlcnkgZW5lcmdldGljLiBXaGF0IGhhcHBlbmVkLCB3aHkgZGlkIHlvdSBmZWVsIGVuZXJnZXRpYywgYW5kIHdoeSB3YXMgaXQgbWVtb3JhYmxlPyIsImltZyI6bnVsbCwidGlwcyI6eyJidWxsZXRzIjpbIkFuc3dlciBldmVyeSBwYXJ0IG9mIHRoZSBxdWVzdGlvbiAod2hhdCBoYXBwZW5lZCBcdTIwMTMgaG93IGl0IHVuZm9sZGVkIFx1MjAxMyB0aGUgb3V0Y29tZSAvIHdoeSBpdCBpcyBtZW1vcmFibGUpLiIsIlVzZSBwYXN0IHRlbnNlcyBhbmQgdGVsbCBpdCBpbiBvcmRlcjogVGhpcyBoYXBwZW5lZFx1MjAyNiBcdTIxOTIgVGhlblx1MjAyNiBcdTIxOTIgSW4gdGhlIGVuZFx1MjAyNiIsIkZpbmlzaCB3aXRoIGEgZmVlbGluZyBvciBhIGxlc3NvbiBsZWFybmVkLiIsIkFuc3dlciB0aGUgdGhyZWUgcGFydHM6IHdoYXQgaGFwcGVuZWQsIHdoeSB5b3UgZmVsdCBzbyBlbmVyZ2V0aWMsIGFuZCB3aHkgaXQgc3RheWVkIHdpdGggeW91LiBUaGUgc2FtcGxlcyBkZXNjcmliZSB3YWtpbmcgYXQgNCBhLm0uIGZvciBhIHN1bnJpc2UgbW91bnRhaW4gaGlrZSB3aXRoIGZyaWVuZHMgYW5kIGZlZWxpbmcgd2lkZSBhd2FrZSBkZXNwaXRlIHRoZSBlYXJseSBob3VyLiBQaWNrIG9uZSByZWFsIG1vbWVudCBhbmQgYWRkIGEgdml2aWQgZGV0YWlsLCB0aGUgY29sZCBmcmVzaCBhaXIsIHlvdXIgbGVncyB0aGF0IHdvdWxkIG5vdCB0aXJlLCB0aGUgcGluay1hbmQtZ29sZCBza3kgYXQgdGhlIHN1bW1pdC4iXSwicGhyYXNlcyI6WyJUaGlzIGhhcHBlbmVkIGFib3V0IHR3byB5ZWFycyBhZ29cdTIwMjYiLCJBdCBmaXJzdFx1MjAyNiwgYnV0IHRoZW5cdTIwMjYiLCJXaGF0IG1hZGUgaXQgdW5mb3JnZXR0YWJsZSB3YXNcdTIwMjYiLCJMb29raW5nIGJhY2ssIFx1MjAyNiJdfSwiczYiOiJJIHdhbnQgdG8gdGFsayBhYm91dCBhIG1vcm5pbmcgd2hlbiBJIGZlbHQgZnVsbCBvZiBlbmVyZ3ksIHRoZSBkYXkgbXkgZnJpZW5kcyBhbmQgSSBjbGltYmVkIGEgbW91bnRhaW4gdG8gd2F0Y2ggdGhlIHN1bnJpc2UuIEl0IHdhcyBhYm91dCB0d28geWVhcnMgYWdvLiBXZSB3b2tlIHVwIHZlcnkgZWFybHksIGF0IGZvdXIgbydjbG9jayBpbiB0aGUgbW9ybmluZywgd2hlbiBpdCB3YXMgc3RpbGwgZGFyayBhbmQgY29sZC4gTm9ybWFsbHksIGZvdXIgbydjbG9jayBpcyBwYWluZnVsIGZvciBtZSwgYnV0IHRoYXQgZGF5IEkganVtcGVkIG91dCBvZiBiZWQhIFdoeSBkaWQgSSBmZWVsIHNvIGVuZXJnZXRpYz8gSSB0aGluayBpdCB3YXMgdGhlIGV4Y2l0ZW1lbnQuIFdlIGhhZCBwbGFubmVkIHRoaXMgdHJpcCBmb3Igd2Vla3MsIGFuZCB0aGUgY29vbCwgZnJlc2ggbW91bnRhaW4gYWlyIHdva2UgbWUgdXAgY29tcGxldGVseS4gTXkgaGVhcnQgd2FzIGJlYXRpbmcgZmFzdCwgYW5kIEkgY291bGQgbm90IHN0b3Agc21pbGluZy4gV2Ugc3RhcnRlZCB3YWxraW5nIHVwIHRoZSB0cmFpbCB3aXRoIG91ciBmbGFzaGxpZ2h0cywgdGFsa2luZyBhbmQgbGF1Z2hpbmcgdGhlIHdob2xlIHdheS4gTXkgbGVncyBkaWQgbm90IGZlZWwgdGlyZWQgYXQgYWxsLiBXaGVuIHdlIHJlYWNoZWQgdGhlIHRvcCwgdGhlIHN1biB3YXMganVzdCBjb21pbmcgdXAsIGFuZCB0aGUgc2t5IHR1cm5lZCBwaW5rIGFuZCBvcmFuZ2UuIEl0IHdhcyBiZWF1dGlmdWwuIEV2ZXJ5Ym9keSBjaGVlcmVkIGFuZCB0b29rIHBob3Rvcy4gV2h5IGlzIGl0IG1lbW9yYWJsZT8gQmVjYXVzZSBJIHN1cnByaXNlZCBteXNlbGYuIEkgYW0gbm90IGEgbW9ybmluZyBwZXJzb24sIGJ1dCB0aGF0IGRheSBteSBlbmVyZ3kgY2FtZSBmcm9tIGluc2lkZSwgZnJvbSBoYXBwaW5lc3MgYW5kIGZyb20gYmVpbmcgd2l0aCBnb29kIGZyaWVuZHMuIEkgc3RpbGwgcmVtZW1iZXIgaG93IGFsaXZlIEkgZmVsdC4gSXQgdGF1Z2h0IG1lIHRoYXQgd2hlbiB5b3UgcmVhbGx5IGxvdmUgc29tZXRoaW5nLCB5b3UgZmluZCBlbmVyZ3kgeW91IGRpZCBub3Qga25vdyB5b3UgaGFkLiIsInM5IjoiVGhlIHRpbWUgSSBmZWx0IG1vc3QgZ2xvcmlvdXNseSBlbmVyZ2V0aWMgd2FzIHRoZSBtb3JuaW5nIG15IGZyaWVuZHMgYW5kIEkgaGlrZWQgdXAgYSBtb3VudGFpbiB0byBjYXRjaCB0aGUgc3VucmlzZSwgYW5kIEkgY2FuIHN0aWxsIGZlZWwgdGhhdCBidXp6IHRvZGF5LiBJdCB3YXMgYSBjb3VwbGUgb2YgeWVhcnMgYWdvLCBhbmQgdGhlIGFsYXJtIHdlbnQgb2ZmIGF0IGZvdXIgaW4gdGhlIG1vcm5pbmcsIGFuIGhvdXIgdGhhdCB1c3VhbGx5IHJlZHVjZXMgbWUgdG8gYSB6b21iaWUuIFlldCB0aGF0IGRheSBzb21ldGhpbmcgd2FzIGRpZmZlcmVudDogSSB3YXMgd2lkZSBhd2FrZSBiZWZvcmUgdGhlIGFsYXJtIGV2ZW4gZmluaXNoZWQsIHByYWN0aWNhbGx5IGJvdW5jaW5nLiBXaHkgc28gZW5lcmdldGljPyBQYXJ0bHkgaXQgd2FzIHB1cmUgYW50aWNpcGF0aW9uLCB3ZSBoYWQgYmVlbiBwbGFubmluZyB0aGUgdHJpcCBmb3Igd2Vla3MsIGFuZCBwYXJ0bHkgaXQgd2FzIHRoZSBzZXR0aW5nIGl0c2VsZiwgdGhhdCBjcmlzcCwgY29sZCBtb3VudGFpbiBhaXIgd2hpY2ggaGl0IG15IGx1bmdzIGxpa2UgYSBzaG90IG9mIGVzcHJlc3NvIGFuZCBzaGFycGVuZWQgZXZlcnkgc2Vuc2UuIFdlIHNldCBvZmYgdXAgdGhlIGRhcmsgdHJhaWwgYnkgdGhlIGxpZ2h0IG9mIG91ciBoZWFkLXRvcmNoZXMsIGNoYXR0aW5nIGFuZCBsYXVnaGluZywgYW5kIEkgcmVtZW1iZXIgYmVpbmcgYW1hemVkIHRoYXQgbXkgbGVncyBzaW1wbHkgd291bGQgbm90IHRpcmU7IHRoZSBleGNpdGVtZW50IHNlZW1lZCB0byBvdmVycmlkZSBhbnkgZmF0aWd1ZS4gV2hlbiB3ZSBmaW5hbGx5IHNjcmFtYmxlZCBvbnRvIHRoZSBzdW1taXQsIHRoZSBzdW4gd2FzIGJyZWFraW5nIG92ZXIgdGhlIGhvcml6b24sIHNwaWxsaW5nIHBpbmsgYW5kIGdvbGQgYWNyb3NzIHRoZSBza3ksIGFuZCB0aGUgd2hvbGUgZ3JvdXAgZXJ1cHRlZCBpbnRvIGNoZWVycy4gV2hhdCBtYWtlcyBpdCBzbyBtZW1vcmFibGUgaXMgdGhhdCBpdCBnZW51aW5lbHkgc3VycHJpc2VkIG1lLiBJIGFtIGVtcGhhdGljYWxseSBub3QgYSBtb3JuaW5nIHBlcnNvbiwgYnV0IG9uIHRoYXQgb2NjYXNpb24gbXkgZW5lcmd5IHdlbGxlZCB1cCBmcm9tIHNvbWV3aGVyZSBpbnNpZGUsIGZyb20gc2hlZXIgam95IGFuZCB0aGUgY29tcGFueSBvZiBwZW9wbGUgSSBsb3ZlLiBJdCB0YXVnaHQgbWUgYSBzbWFsbCBidXQgbGFzdGluZyBsZXNzb246IHdoZW4geW91IGFyZSBkb2luZyBzb21ldGhpbmcgeW91IGFyZSBwYXNzaW9uYXRlIGFib3V0LCB3aXRoIHRoZSByaWdodCBwZW9wbGUsIHlvdSBjYW4gc3VtbW9uIHJlc2VydmVzIG9mIGVuZXJneSB5b3UgbmV2ZXIga25ldyB5b3UgaGFkLiJ9LHsiayI6InQzIiwibnVtIjozLCJ0eXBlRW4iOiJEZXNjcmliaW5nIGEgU2NlbmUiLCJwcmVwIjozMCwicmVjIjo2MCwicHJvbXB0IjoiRGVzY3JpYmUgc29tZSB0aGluZ3MgdGhhdCBhcmUgaGFwcGVuaW5nIGluIHRoZSBwaWN0dXJlIGJlbG93IGFzIHdlbGwgYXMgeW91IGNhbi4gVGhlIHBlcnNvbiB3aXRoIHdob20geW91IGFyZSBzcGVha2luZyBjYW5ub3Qgc2VlIHRoZSBwaWN0dXJlLiIsImltZyI6InNjZW5lIiwidGlwcyI6eyJidWxsZXRzIjpbIkZpcnN0IHNlbnRlbmNlOiBnaXZlIHRoZSBvdmVydmlldyAod2hlcmUgaXQgaXMsIHdoYXQgdGhlIGF0bW9zcGhlcmUgaXMgbGlrZSkuIiwiRGVzY3JpYmUgNFx1MjAxMzYgZGV0YWlscyBieSBsb2NhdGlvbjogaW4gdGhlIGZvcmVncm91bmQgLyBvbiB0aGUgbGVmdCAvIGF0IHRoZSBiYWNrXHUyMDI2OyB1c2UgdGhlIHByZXNlbnQgY29udGludW91cy4iLCJUaGUgbGlzdGVuZXIgQ0FOTk9UIHNlZSB0aGUgcGljdHVyZSBcdTIwMTQgYmUgc3BlY2lmaWM7IHdoZW4gdW5zdXJlLCB1c2Ugc2VlbXMgLyBhcHBlYXJzIC8gbG9va3MgbGlrZS4iLCJBIGJ1c3kgYW11c2VtZW50IHBhcmsgb24gYSBzdW5ueSBkYXkuIEdvIGluIG9yZGVyOiBvbiB0aGUgbGVmdCBhIHRhbGwsIGNvbG91cmZ1bCBjbGltYmluZyB3YWxsIHdpdGggYSBjaGlsZCBpbiBhIGhhcm5lc3MgY2xpbWJpbmcgaXQsIGFuZCBhIGxhbXAgcG9zdCBkZWNvcmF0ZWQgd2l0aCBnaWFudCB5ZWxsb3ctYW5kLWJsYWNrIGJlZXMgLT4gc3RyaXBlZCBjYXJuaXZhbCB0ZW50cyB3aXRoIGxpdHRsZSBmbGFncyBpbiB0aGUgbWlkZGxlLCBhbmQgYmVoaW5kIHRoZW0gYSBncmV5IGNhc3RsZSBhbmQgYSBncmVlbiBoaWxsIHdpdGggYSByb2xsZXIgY29hc3RlciAtPiBvbiB0aGUgcmlnaHQgYSBzd2luZy9nb25kb2xhIHJpZGUgd2l0aCBibHVlIGFuZCByZWQgY2FycyBmdWxsIG9mIHJpZGVycyBhbmQgYSBtYW4gaW4gYSB5ZWxsb3cgc2hpcnQgb3BlcmF0aW5nIGl0IC0+IGluIHRoZSBmb3JlZ3JvdW5kIGEgcGVyc29uIGluIGEgZ3JleSByYWJiaXQgY29zdHVtZSBoYW5kaW5nIG91dCBwaW5rLCBncmVlbiBhbmQgcHVycGxlIGJhbGxvb25zIHRvIGNoaWxkcmVuLCBhIGJveSBpbiBhIHJlZCBjYXAgaG9sZGluZyBhIGJhZyBvZiBjaGlwcywgYW5kIHR3byBtZW4gKG9uZSBpbiBvcmFuZ2UsIG9uZSBpbiBwdXJwbGUpIGF0IGEgd2hpdGUgZmVuY2Ugd2F2aW5nIGF0IHRoZSByaWRlLiJdLCJwaHJhc2VzIjpbIkluIHRoZSBmb3JlZ3JvdW5kLCBcdTIwMjYiLCJPbiB0aGUgcmlnaHQtaGFuZCBzaWRlLCBcdTIwMjYiLCJJdCBsb29rcyBsaWtlXHUyMDI2IiwiVGhlIHdob2xlIHBsYWNlIGZlZWxzXHUyMDI2Il19LCJzNiI6IlRoaXMgcGljdHVyZSBzaG93cyBhIGJ1c3ksIGNvbG91cmZ1bCBhbXVzZW1lbnQgcGFyayBvbiBhIHN1bm55IGRheSwgYW5kIHRoZXJlIGlzIHNvIG11Y2ggaGFwcGVuaW5nISBPbiB0aGUgZmFyIGxlZnQsIHRoZXJlIGlzIGEgdGFsbCBjbGltYmluZyB3YWxsIHdpdGggbWFueSBicmlnaHQgY29sb3Vycywgb3JhbmdlLCBwdXJwbGUgYW5kIGJsdWUsIGFuZCBhIGNoaWxkIHdpdGggYSBoYXJuZXNzIGlzIGNsaW1iaW5nIHVwIGl0LiBOZXh0IHRvIGl0LCB0aGVyZSBpcyBhIHRhbGwgbGFtcCBkZWNvcmF0ZWQgd2l0aCBiaWcgeWVsbG93LWFuZC1ibGFjayBiZWVzLCB3aGljaCBpcyBmdW5ueS4gSW4gdGhlIG1pZGRsZSwgSSBjYW4gc2VlIHN0cmlwZWQgY2Fybml2YWwgdGVudHMsIHllbGxvdywgYmx1ZSBhbmQgcmVkLCB3aXRoIGxpdHRsZSBmbGFncyBvbiB0b3AuIEJlaGluZCB0aGVtLCB0aGVyZSBpcyBhIGdyZXkgY2FzdGxlIHdpdGggdG93ZXJzLCBhbmQgYSBncmVlbiBoaWxsIHdpdGggYSByb2xsZXIgY29hc3RlciBvbiBpdC4gVGhlIHNreSBpcyBibHVlIHdpdGggb25lIGNsb3VkLiBPbiB0aGUgcmlnaHQgc2lkZSwgdGhlcmUgaXMgYSBzd2luZyBvciBnb25kb2xhIHJpZGUsIHdpdGggYmx1ZSBhbmQgcmVkIGNhcnMsIGFuZCBwZW9wbGUgYXJlIHNpdHRpbmcgaW4gdGhlbSwgZ29pbmcgdXAgYW5kIGRvd24uIEEgbWFuIGluIGEgeWVsbG93IHNoaXJ0IGlzIHN0YW5kaW5nIG5lYXIgdGhlIHJpZGUsIG1heWJlIGhlIGlzIHRoZSBvcGVyYXRvci4gSW4gdGhlIGZyb250IG9mIHRoZSBwaWN0dXJlLCB0aGVyZSBpcyBhIHBlcnNvbiB3ZWFyaW5nIGEgZ3JleSByYWJiaXQgY29zdHVtZSwgYW5kIGhlIGlzIGdpdmluZyBiYWxsb29ucywgcGluaywgZ3JlZW4gYW5kIHB1cnBsZSwgdG8gc29tZSBoYXBweSBjaGlsZHJlbi4gT25lIGJveSBpbiBhIHJlZCBjYXAgaXMgaG9sZGluZyBhIGJhZyBvZiBjaGlwcy4gQW5kIG9uIHRoZSByaWdodCwgdHdvIG1lbiwgb25lIGluIG9yYW5nZSBhbmQgb25lIGluIHB1cnBsZSwgYXJlIHN0YW5kaW5nIGF0IGEgd2hpdGUgZmVuY2UgYW5kIHdhdmluZyBhdCB0aGUgcmlkZS4gRXZlcnlvbmUgbG9va3MgbGlrZSB0aGV5IGFyZSBoYXZpbmcgZnVuISIsInM5IjoiVGhpcyBpcyBhIHdvbmRlcmZ1bGx5IGJ1c3kgYW11c2VtZW50IHBhcmsgb24gYSBicmlnaHQsIHN1bm55IGRheSwgd2l0aCBzb21ldGhpbmcgZ29pbmcgb24gaW4gZXZlcnkgY29ybmVyLiBMZXQgbWUgc3RhcnQgb24gdGhlIGZhciBsZWZ0LCB3aGVyZSBhIHRhbGwsIG11bHRpLWNvbG91cmVkIGNsaW1iaW5nIHdhbGwsIHNwbGFzaGVkIHdpdGggb3JhbmdlLCBwdXJwbGUgYW5kIGJsdWUsIHJpc2VzIHVwLCBhbmQgYSBzbWFsbCBjaGlsZCBpbiBhIHNhZmV0eSBoYXJuZXNzIGlzIGdhbWVseSBjbGFtYmVyaW5nIHVwIHRoZSBob2xkcy4gUmlnaHQgYmVzaWRlIGl0IHN0YW5kcyBhIHF1aXJreSBsYW1wIHBvc3QgZGVjb3JhdGVkIHdpdGggZW5vcm1vdXMgeWVsbG93LWFuZC1ibGFjayBidW1ibGViZWVzLiBTd2VlcGluZyBpbnRvIHRoZSBjZW50cmUsIHRoZXJlIGFyZSBjbGFzc2ljIHN0cmlwZWQgY2Fybml2YWwgdGVudHMgaW4geWVsbG93LCBibHVlIGFuZCByZWQsIHRvcHBlZCB3aXRoIGxpdHRsZSBwZW5uYW50IGZsYWdzLCBhbmQgYmVoaW5kIHRoZW0gdGhlIGJhY2tkcm9wIGlzIHB1cmUgZmFpcnktdGFsZTogYSBncmV5IHN0b25lIGNhc3RsZSB3aXRoIGJhdHRsZW1lbnRzIGFuZCwgZnVydGhlciBiYWNrLCBhIGx1c2ggZ3JlZW4gaGlsbCB3aXRoIGEgcm9sbGVyIGNvYXN0ZXIgc25ha2luZyBvdmVyIGl0IGFnYWluc3QgYSBjbGVhciBibHVlIHNreS4gT3ZlciBvbiB0aGUgcmlnaHQgc2l0cyBhIGdlbnRsZSBzd2luZyBvciBnb25kb2xhIHJpZGUsIGl0cyBibHVlIGFuZCByZWQgY2FycyBsb2FkZWQgd2l0aCBncmlubmluZyBwYXNzZW5nZXJzLCB3aGlsZSBhIG1hbiBpbiBhIHllbGxvdyBzaGlydCwgcHJlc3VtYWJseSB0aGUgb3BlcmF0b3IsIGtlZXBzIGFuIGV5ZSBvbiB0aGluZ3MuIEJ1dCB0aGUgcmVhbCBjaGFybSBpcyBpbiB0aGUgZm9yZWdyb3VuZDogYSBwZXJzb24gZHJlc3NlZCBpbiBhIGJpZyBncmV5IHJhYmJpdCBjb3N0dW1lIGlzIGhhbmRpbmcgb3V0IGJhbGxvb25zLCBwaW5rLCBncmVlbiBhbmQgcHVycGxlLCB0byBhIGNsdXN0ZXIgb2YgZXhjaXRlZCBjaGlsZHJlbiwgb25lIG9mIHdob20sIGEgbGl0dGxlIGdpcmwsIGlzIHJlYWNoaW5nIHVwIGVhZ2VybHkuIE5lYXJieSBhIGJveSBpbiBhIHJlZCBjYXAgY2x1dGNoZXMgYSBiYWcgb2YgY2hpcHMsIGFuZCBvZmYgdG8gdGhlIHJpZ2h0IHR3byBtZW4sIG9uZSBpbiBhbiBvcmFuZ2Ugc2hpcnQgYW5kIG9uZSBpbiBwdXJwbGUsIGxlYW4gb24gYSB3aGl0ZSByYWlsaW5nLCB3YXZpbmcgY2hlZXJmdWxseSBhdCB0aGUgcmlkZXJzLiBUaGUgd2hvbGUgc2NlbmUgcmFkaWF0ZXMgZnVuIGFuZCBob2xpZGF5IGVuZXJneS4ifSx7ImsiOiJ0NCIsIm51bSI6NCwidHlwZUVuIjoiTWFraW5nIFByZWRpY3Rpb25zIiwicHJlcCI6MzAsInJlYyI6NjAsInByb21wdCI6IkluIHRoaXMgcGljdHVyZSwgd2hhdCBkbyB5b3UgdGhpbmsgd2lsbCBtb3N0IHByb2JhYmx5IGhhcHBlbiBuZXh0PyIsImltZyI6InNjZW5lIiwidGlwcyI6eyJidWxsZXRzIjpbIkVhY2ggcHJlZGljdGlvbiA9IHdpbGwgLyBiZSBnb2luZyB0byAvIHdpbGwgcHJvYmFibHkgKyBhIFJFQVNPTiBiYXNlZCBvbiBhIGRldGFpbCBpbiB0aGUgcGljdHVyZS4iLCJNYWtlIDNcdTIwMTM0IHByZWRpY3Rpb25zIGFib3V0IGRpZmZlcmVudCBwZW9wbGUgXHUyMDE0IGRvbid0IHN0b3AgYXQgb25lIGlkZWEuIiwiRmluaXNoIHdpdGggb25lIG92ZXJhbGwgcHJlZGljdGlvbiBmb3IgdGhlIHdob2xlIHNjZW5lLiIsIlNhbWUgYW11c2VtZW50IHBhcmsgYXMgVGFzayAzIC0gbm93IHByZWRpY3Q6IHRoZSBjaGlsZCBvbiB0aGUgY2xpbWJpbmcgd2FsbCB3aWxsIHJlYWNoIHRoZSB0b3AsIHJpbmcgdGhlIGJlbGwgYW5kIGNvbWUgYmFjayBkb3duIHByb3VkbHk7IHRoZSByYWJiaXQgbWFzY290IHdpbGwgcnVuIG91dCBvZiBiYWxsb29ucyBhcyBtb3JlIGNoaWxkcmVuIGNyb3dkIGFyb3VuZDsgdGhlIHN3aW5nL2dvbmRvbGEgcmlkZSB3aWxsIHN0b3AgYW5kIHRoZSByaWRlcnMgd2lsbCBnZXQgb2ZmIGxhdWdoaW5nIHdoaWxlIGEgbmV3IGdyb3VwIGNsaW1icyBvbjsgdGhlIHR3byBtZW4gYXQgdGhlIGZlbmNlIHdpbGwgam9pbiB0aGUgcXVldWUgZm9yIHRoZWlyIHR1cm47IHRoZSBib3kgd2lsbCBmaW5pc2ggaGlzIGNoaXBzOyBhbmQgdGhlIGZhbWlsaWVzIHdpbGwgbW92ZSBvbiB0byB0aGUgcm9sbGVyIGNvYXN0ZXIgb3IgdGhlIGNhcm5pdmFsIHRlbnRzLiJdLCJwaHJhc2VzIjpbIlx1MjAyNmlzIGFib3V0IHRvXHUyMDI2IiwiSGUnbGwgbW9zdCBsaWtlbHlcdTIwMjYiLCJKdWRnaW5nIGJ5XHUyMDI2LCBJIGV4cGVjdFx1MjAyNiIsIldpdGhpbiBtaW51dGVzLCBcdTIwMjYiXX0sInM2IjoiSSB0aGluayBpbiB0aGUgbmV4dCBmZXcgbWludXRlcyB0aGlzIGFtdXNlbWVudCBwYXJrIHdpbGwgc3RheSBidXN5IGFuZCBmdWxsIG9mIGZ1bi4gRmlyc3QsIHRoZSBjaGlsZCBjbGltYmluZyB0aGUgY29sb3VyZnVsIHdhbGwgd2lsbCBwcm9iYWJseSByZWFjaCB0aGUgdG9wLCByaW5nIGEgYmVsbCwgYW5kIHRoZW4gY29tZSBiYWNrIGRvd24gc2xvd2x5IG9uIHRoZSByb3BlLCBmZWVsaW5nIHZlcnkgcHJvdWQuIFRoZSBwZXJzb24gaW4gdGhlIHJhYmJpdCBjb3N0dW1lIGlzIGdpdmluZyBvdXQgYmFsbG9vbnMsIHNvIG1vcmUgYW5kIG1vcmUgY2hpbGRyZW4gd2lsbCBjb21lIGFuZCBhc2sgZm9yIG9uZSwgYW5kIHNvb24gaGUgd2lsbCBydW4gb3V0IG9mIGJhbGxvb25zISBUaGUgc3dpbmcgcmlkZSBvbiB0aGUgcmlnaHQgaXMgZ29pbmcgdXAgYW5kIGRvd24sIHNvIGluIGEgbWludXRlIGl0IHdpbGwgc3RvcCwgYW5kIHRoZSBwZW9wbGUgd2lsbCBnZXQgb2ZmLCBsYXVnaGluZyBhbmQgbWF5YmUgZmVlbGluZyBhIGxpdHRsZSBkaXp6eS4gVGhlbiBuZXcgcGVvcGxlIHdpbGwgZ2V0IG9uIGZvciB0aGVpciB0dXJuLiBUaGUgdHdvIG1lbiBhdCB0aGUgd2hpdGUgZmVuY2UgYXJlIHdhdmluZyBhbmQgd2F0Y2hpbmcsIHNvIEkgdGhpbmsgdGhleSBhcmUgd2FpdGluZywgYW5kIG5leHQgdGhleSB3aWxsIGdvIGFuZCBqb2luIHRoZSBsaW5lIGZvciB0aGUgcmlkZS4gVGhlIGJveSBpbiB0aGUgcmVkIGNhcCB3aWxsIGZpbmlzaCBoaXMgYmFnIG9mIGNoaXBzIGFuZCB0aHJvdyBpdCBpbiB0aGUgYmluLiBBZnRlciB0aGF0LCBJIHRoaW5rIHRoZSBmYW1pbGllcyB3aWxsIHdhbGsgdG8gdGhlIHJvbGxlciBjb2FzdGVyIG9uIHRoZSBoaWxsIG9yIGdvIGludG8gdGhlIHN0cmlwZWQgdGVudHMgdG8gcGxheSBnYW1lcy4gRXZlcnlvbmUgd2lsbCBrZWVwIG1vdmluZyBmcm9tIG9uZSBmdW4gdGhpbmcgdG8gdGhlIG5leHQuIEl0IGlzIGEgaGFwcHksIGJ1c3kgcGxhY2UsIHNvIHRoZSBmdW4gd2lsbCBub3Qgc3RvcCBzb29uISIsInM5IjoiR2l2ZSB0aGlzIGFtdXNlbWVudCBwYXJrIGEgZmV3IG1vcmUgbWludXRlcyBhbmQgdGhlIGNoZWVyZnVsIGNoYW9zIHdpbGwgc2ltcGx5IHJvbGwgb24uIFRoZSBjaGlsZCBzY2FsaW5nIHRoZSBjbGltYmluZyB3YWxsIGxvb2tzIGNsb3NlIHRvIHRoZSB0b3AsIHNvIEkgZXhwZWN0IHRoZW0gdG8gc2xhcCB0aGUgYmVsbCB0cml1bXBoYW50bHkgYW5kIHRoZW4gYmUgbG93ZXJlZCBnZW50bHkgYmFjayBkb3duIG9uIHRoZSBzYWZldHkgcm9wZSwgYmVhbWluZyB3aXRoIHByaWRlLiBUaGUgcG9vciByYWJiaXQgbWFzY290IGlzIGdvaW5nIHRvIGJlIG1vYmJlZDogd29yZCBzcHJlYWRzIGZhc3QgdGhhdCB0aGVyZSBhcmUgZnJlZSBiYWxsb29ucywgc28gbW9yZSBjaGlsZHJlbiB3aWxsIGNvbWUgcnVubmluZywgYW5kIGJlZm9yZSBsb25nIHRoZSBwaW5rLCBncmVlbiBhbmQgcHVycGxlIGJ1bmNoIHdpbGwgYmUgZ29uZSBhbmQgdGhlcmUgd2lsbCBiZSBhIGZldyBkaXNhcHBvaW50ZWQgbGl0dGxlIGZhY2VzLiBPdmVyIG9uIHRoZSByaWdodCwgdGhlIHN3aW5nIHJpZGUgaXMgbWlkLWN5Y2xlLCBzbyB3aXRoaW4gYSBtaW51dGUgaXQgd2lsbCBnbGlkZSB0byBhIGhhbHQgYW5kIHRoZSBwYXNzZW5nZXJzIHdpbGwgc3RhZ2dlciBvZmYsIGxhdWdoaW5nIGFuZCBzbGlnaHRseSBkaXp6eSwgd2hpbGUgdGhlIG1hbiBpbiB5ZWxsb3cgdXNoZXJzIHRoZSBuZXh0IGVhZ2VyIGJhdGNoIGludG8gdGhlIHNlYXRzLiBUaG9zZSB0d28gbWVuIGxlYW5pbmcgb24gdGhlIGZlbmNlLCB3YXZpbmcsIGFyZSBjbGVhcmx5IHNpemluZyB0aGUgcmlkZSB1cCwgYW5kIG15IGJldCBpcyB0aGV5IHdpbGwgaGVhZCBzdHJhaWdodCBmb3IgdGhlIHF1ZXVlIHRvIHRha2UgdGhlaXIgb3duIHR1cm4uIFRoZSBib3kgaW4gdGhlIHJlZCBjYXAgd2lsbCBwb2xpc2ggb2ZmIGhpcyBjaGlwcyBhbmQsIGhvcGVmdWxseSwgYmluIHRoZSBlbXB0eSBiYWcuIEFmdGVyIHRoYXQgdGhlIGZhbWlsaWVzIHdpbGwgZHJpZnQgb253YXJkLCBzb21lIHRvd2FyZHMgdGhlIHJvbGxlciBjb2FzdGVyIGN1cnZpbmcgb3ZlciB0aGUgZ3JlZW4gaGlsbCwgb3RoZXJzIGludG8gdGhlIHN0cmlwZWQgdGVudHMgdG8gdHJ5IHRoZSBjYXJuaXZhbCBnYW1lcy4gU3RlcCBiYWNrLCBhbmQgdGhlIG92ZXJhbGwgcHJlZGljdGlvbiBpcyBlYXN5OiB0aGlzIGlzIGEgcGxhY2UgYnVpbHQgZm9yIG5vbi1zdG9wIGZ1biwgc28gZXZlcnlvbmUgd2lsbCBrZWVwIGZsb3dpbmcgaGFwcGlseSBmcm9tIG9uZSBhdHRyYWN0aW9uIHRvIHRoZSBuZXh0IHVudGlsIGNsb3NpbmcgdGltZS4ifSx7ImsiOiJ0NSIsIm51bSI6NSwidHlwZUVuIjoiQ29tcGFyaW5nIGFuZCBQZXJzdWFkaW5nIiwicGhhc2VkIjp0cnVlLCJjaG9vc2UiOnsicHJlcCI6NjAsInNpdHVhdGlvbiI6IllvdXIgbmllY2UgaXMgdHVybmluZyA5IHllYXJzIG9sZCBhbmQgeW91ciBmYW1pbHkgaGFzIGFza2VkIHlvdSB0byBwbGFuIGhlciBiaXJ0aGRheSBwYXJ0eS4gWW91IGZpbmQgdHdvIHN1aXRhYmxlIG9wdGlvbnMuIFVzaW5nIHRoZSBwaWN0dXJlcyBhbmQgaW5mb3JtYXRpb24gYmVsb3csIGNob29zZSB0aGUgb3B0aW9uIHRoYXQgeW91IHByZWZlci4gSW4gdGhlIG5leHQgc2VjdGlvbiwgeW91IHdpbGwgbmVlZCB0byBwZXJzdWFkZSBhIGZhbWlseSBtZW1iZXIgdGhhdCB5b3VyIGNob2ljZSBpcyB0aGUgYmV0dGVyIGNob2ljZS4iLCJub3RlIjoiSWYgeW91IGRvIG5vdCBjaG9vc2UgYW4gb3B0aW9uLCB0aGUgY29tcHV0ZXIgd2lsbCBjaG9vc2Ugb25lIGZvciB5b3UuIFlvdSBkbyBub3QgbmVlZCB0byBzcGVhayBmb3IgdGhpcyBwYXJ0LiIsIm9wdGlvbnMiOlt7InRpdGxlIjoiQmlydGhkYXkgQ2xvd25zIiwiaW1nIjoib3B0QSIsImJ1bGxldHMiOlsiY29zdHMgJDEwMCBmb3IgMiBob3VycyIsImNoaWxkcmVuIGNhbiB3YXRjaCBjb21lZHkgc2hvd3MiLCJjaGlsZHJlbiBjYW4gYmUgaW52b2x2ZWQgaW4gdGhlIHNob3cgYW5kIGVhY2ggY2hpbGQgcmVjZWl2ZXMgYSBiYWxsb29uIHNoYXBlZCBsaWtlIGFuIGFuaW1hbCBvZiB0aGVpciBjaG9pY2UiXX0seyJ0aXRsZSI6IlBvdHRlcnkgTWFraW5nIiwiaW1nIjoib3B0QiIsImJ1bGxldHMiOlsiY29zdHMgJDEyMCBwZXIgZWlnaHQgY2hpbGRyZW4iLCJwYWludCBhbmQgZGVjb3JhdGUgdGhlIHBvdHRlcnkiLCJsZWFybiB0byBtYWtlIGJvd2xzLCBwbGF0ZXMsIG9yIG11Z3MsIGFuZCBjaGlsZHJlbiBjYW4gdGFrZSBob21lIHRoZWlyIG93biBjcmVhdGlvbnMiXX1dfSwic3BlYWsiOnsicHJlcCI6NjAsInJlYyI6NjAsInByb21wdCI6IkEgZmFtaWx5IG1lbWJlciBpcyBzdWdnZXN0aW5nIHRoYXQgeW91IGhvc3QgYW4gZWF0aW5nIGNvbXBldGl0aW9uIGZvciB0aGUgYmlydGhkYXkgcGFydHkuIFBlcnN1YWRlIHlvdXIgZmFtaWx5IG1lbWJlciB0aGF0IHRoZSBvcHRpb24geW91IGNob3NlIGlzIG1vcmUgc3VpdGFibGUgYnkgY29tcGFyaW5nIHRoZSB0d28uIiwib3RoZXJMYWJlbCI6IllvdXIgRmFtaWx5IE1lbWJlcidzIENob2ljZSIsIm90aGVyIjp7InRpdGxlIjoiRWF0aW5nIENvbXBldGl0aW9uIiwiaW1nIjoib3B0T3RoZXIiLCJidWxsZXRzIjpbImNvc3RzICQzMDAgZm9yIGEgdmFyaWV0eSBvZiBmb29kIiwiY2hpbGRyZW4gY2FuIHRha2UgbGVmdG92ZXJzIGhvbWUiLCJjaGlsZHJlbiBjYW4gZWF0IGFzIG11Y2ggYXMgdGhleSB3YW50IHdoaWNoIGluY2x1ZGVzIGhhbWJ1cmdlcnMsIGljZSBjcmVhbSwgb25pb25zLCBkb3VnaG51dHMsIGFuZCBzcGFnaGV0dGkiXX19LCJ0aXBzIjp7ImJ1bGxldHMiOlsiU3RydWN0dXJlOiBhY2tub3dsZWRnZSB0aGUgb3RoZXIgcGVyc29uJ3MgY2hvaWNlIFx1MjE5MiBnaXZlIDJcdTIwMTMzIGFkdmFudGFnZXMgb2YgeW91cnMgKGRpcmVjdCBjb21wYXJpc29uKSBcdTIxOTIgd3JhcCB1cC4iLCJDb21wYXJlIHVzaW5nIHRoZSBudW1iZXJzIG9uIHRoZSBjYXJkczogcHJpY2UsIGR1cmF0aW9uLCBjYXBhY2l0eSwgZXhwZXJpZW5jZS4iLCJZb3UgZG8gTk9UIG5lZWQgdG8gc3BlYWsgZHVyaW5nIHRoZSBjaG9vc2luZyBzdGVwIFx1MjAxNCBqdXN0IGNsaWNrIGFuIG9wdGlvbi4iLCJUaGUgc2FtcGxlcyBjaG9vc2UgdGhlIEJpcnRoZGF5IENsb3ducyAoJDEwMCBmb3IgMiBob3VycywgYSBjb21lZHkgc2hvdywgYW5kIGV2ZXJ5IGNoaWxkIGdldHMgYSBiYWxsb29uIGFuaW1hbCBvZiB0aGVpciBjaG9pY2UpLiBGb3IgYSBuaW5lLXllYXItb2xkJ3MgcGFydHkgaXQgaXMgdGhlIG1vc3QgZnVuIGFuZCBhZ2UtYXBwcm9wcmlhdGUsIGFuZCBhdCAkMTAwIGl0IGlzIGZhciBjaGVhcGVyIHRoYW4geW91ciBmYW1pbHkgbWVtYmVyJ3MgRWF0aW5nIENvbXBldGl0aW9uICgkMzAwIGZvciBoYW1idXJnZXJzLCBpY2UgY3JlYW0sIG9uaW9ucywgZG91Z2hudXRzIGFuZCBzcGFnaGV0dGkpLiBBbiBlYXRpbmcgY29udGVzdCBjb3VsZCBtYWtlIGNoaWxkcmVuIGZlZWwgc2ljayBvciBldmVuIGNob2tlLCBhbmQgaXQgaXMgbm90IHZlcnkgYWN0aXZlLiBQb3R0ZXJ5IE1ha2luZyAoJDEyMCkgd2FzIHRoZSBydW5uZXItdXA7IGlmIHlvdSBwcmVmZXIgaXQsIHN0cmVzcyB0aGUgdGFrZS1ob21lIGNyZWF0aW9ucy4iXSwicGhyYXNlcyI6WyJJIHNlZSB3aHkgeW91IGxpa2VcdTIwMjYsIGJ1dFx1MjAyNiIsIkNvbXBhcmVkIHRvXHUyMDI2LCB0aGlzIG9uZVx1MjAyNiIsIkl0J3MgYmV0dGVyIHZhbHVlOiBcdTIwMjYgdmVyc3VzIFx1MjAyNiIsIklmIHRoZSBnb2FsIGlzXHUyMDI2LCB0aGUgY2hvaWNlIGlzIGNsZWFyLiJdfSwiczYiOiJJIGtub3cgYW4gZWF0aW5nIGNvbXBldGl0aW9uIHNvdW5kcyBmdW4gYW5kIGRpZmZlcmVudCwgYnV0IHBsZWFzZSBsaXN0ZW4sIGJlY2F1c2UgSSByZWFsbHkgdGhpbmsgbXkgY2hvaWNlLCB0aGUgQmlydGhkYXkgQ2xvd25zLCBpcyBtdWNoIGJldHRlciBmb3IgYSBuaW5lLXllYXItb2xkJ3MgcGFydHkuIEZpcnN0LCB0aGluayBhYm91dCB0aGUgZnVuLiBBIGNsb3duIGRvZXMgYSBjb21lZHkgc2hvdywgc28gYWxsIHRoZSBjaGlsZHJlbiB3aWxsIGxhdWdoIGFuZCBlbmpveSBpdCB0b2dldGhlciwgYW5kIHRoZSBiZXN0IHBhcnQgaXMgdGhhdCBldmVyeSBjaGlsZCBnZXRzIGEgYmFsbG9vbiBzaGFwZWQgbGlrZSB0aGVpciBmYXZvdXJpdGUgYW5pbWFsIHRvIHRha2UgaG9tZS4gS2lkcyBsb3ZlIHRoYXQhIFNlY29uZCwgdGhlIHByaWNlLiBUaGUgY2xvd24gaXMgb25seSBvbmUgaHVuZHJlZCBkb2xsYXJzIGZvciB0d28gaG91cnMuIFlvdXIgZWF0aW5nIGNvbXBldGl0aW9uIGNvc3RzIHRocmVlIGh1bmRyZWQgZG9sbGFycywgdGhhdCBpcyB0aHJlZSB0aW1lcyBtb3JlIG1vbmV5IGZvciBiYXNpY2FsbHkgYSBsb3Qgb2YgZm9vZC4gVGhpcmQsIGFuZCB0aGlzIGlzIGltcG9ydGFudCwgc2FmZXR5LiBBbiBlYXRpbmcgY29tcGV0aXRpb24gd2l0aCBoYW1idXJnZXJzLCBpY2UgY3JlYW0sIG9uaW9ucywgYW5kIGRvdWdobnV0cyBjYW4gbWFrZSBsaXR0bGUgY2hpbGRyZW4gZmVlbCBzaWNrLCBvciBldmVuIGNob2tlIGlmIHRoZXkgZWF0IHRvbyBmYXN0LiBUaGF0IGlzIGRhbmdlcm91cywgYW5kIHNvbWUgcGFyZW50cyB3aWxsIG5vdCBiZSBoYXBweS4gVGhlIGNsb3duIGlzIHNhZmUsIGFjdGl2ZSwgYW5kIGV2ZXJ5Ym9keSBjYW4gam9pbiBpbi4gUG90dGVyeSBtYWtpbmcgd2FzIG15IHNlY29uZCBpZGVhLCBhbmQgaXQgaXMgbmljZSBiZWNhdXNlIHRoZXkga2VlcCB3aGF0IHRoZXkgbWFrZSwgYnV0IHRoZSBjbG93biBpcyBtb3JlIGV4Y2l0aW5nIGZvciB0aGlzIGFnZS4gU28gZm9yIGZ1biwgZm9yIHNhZmV0eSwgYW5kIGZvciBzYXZpbmcgbW9uZXksIGxldCdzIGJvb2sgdGhlIEJpcnRoZGF5IENsb3ducy4gVHJ1c3QgbWUsIHRoZSBraWRzIHdpbGwgcmVtZW1iZXIgaXQgZm9yIGEgbG9uZyB0aW1lLiBPa2F5PyIsInM5IjoiSSBjYW4gc2VlIHdoeSBhbiBlYXRpbmcgY29tcGV0aXRpb24gc291bmRzIG5vdmVsLCBidXQgbGV0IG1lIGxheSBpdCBuZXh0IHRvIG15IGNob2ljZSwgdGhlIEJpcnRoZGF5IENsb3ducywgYmVjYXVzZSBmb3IgYSBuaW5lLXllYXItb2xkJ3MgcGFydHkgSSBob25lc3RseSB0aGluayBpdCBpcyB0aGUgY2xlYXIgd2lubmVyLiBTdGFydCB3aXRoIHRoZSBlbnRlcnRhaW5tZW50LiBBIGNsb3duIHB1dHMgb24gYSBwcm9wZXIgY29tZWR5IHNob3csIHNvIHRoZSB3aG9sZSBncm91cCBvZiBjaGlsZHJlbiBsYXVnaHMgYW5kIHJlYWN0cyB0b2dldGhlciwgYW5kLCBjcnVjaWFsbHksIGV2ZXJ5IHNpbmdsZSBjaGlsZCB3YWxrcyBhd2F5IHdpdGggYSBiYWxsb29uIHR3aXN0ZWQgaW50byB0aGUgYW5pbWFsIG9mIHRoZWlyIGNob2ljZSwgdGhlIGtpbmQgb2YgbGl0dGxlIHNvdXZlbmlyIHRoYXQgbWFrZXMgYSBiaXJ0aGRheSBmZWVsIHNwZWNpYWwuIFRoYXQgc2hhcmVkLCBpbnRlcmFjdGl2ZSBmdW4gaXMgZXhhY3RseSB3aGF0IGEgbmluZS15ZWFyLW9sZCB3YW50cy4gVGhlbiB0aGVyZSBpcyB0aGUgY29zdCwgd2hpY2ggaXMgbm90IGV2ZW4gY2xvc2U6IHRoZSBjbG93biBpcyBhIGh1bmRyZWQgZG9sbGFycyBmb3IgdHdvIGZ1bGwgaG91cnMsIHdoZXJlYXMgdGhlIGVhdGluZyBjb21wZXRpdGlvbiBydW5zIHRvIHRocmVlIGh1bmRyZWQsIHRocmVlIHRpbWVzIHRoZSBwcmljZSwgZXNzZW50aWFsbHkganVzdCBmb3IgYSBtb3VudGFpbiBvZiBmb29kLiBPbiB0b3Agb2YgdGhhdCwgdGhpbmsgYWJvdXQgc2FmZXR5IGFuZCBjb21mb3J0LiBBbiBlYXRpbmcgY29udGVzdCBidWlsdCBhcm91bmQgaGFtYnVyZ2VycywgaWNlIGNyZWFtLCBvbmlvbnMsIGRvdWdobnV0cyBhbmQgc3BhZ2hldHRpIGlzIHByYWN0aWNhbGx5IGRlc2lnbmVkIHRvIGxlYXZlIHNtYWxsIGNoaWxkcmVuIHF1ZWFzeSwgYW5kIHJ1c2hpbmcgZm9vZCByYWlzZXMgYSByZWFsIGNob2tpbmcgcmlzaywgd2hpY2ggbm8gcGFyZW50IHdpbGwgdGhhbmsgdXMgZm9yLiBUaGUgY2xvd24sIGJ5IGNvbnRyYXN0LCBpcyBzYWZlLCBsaXZlbHkgYW5kIGluY2x1c2l2ZS4gRm9yIHRoZSByZWNvcmQsIFBvdHRlcnkgTWFraW5nIHdhcyBteSBiYWNrLXVwLCBhbmQgSSBkbyBsb3ZlIHRoYXQgdGhlIGNoaWxkcmVuIGtlZXAgdGhlaXIgb3duIGJvd2xzIG9yIG11Z3MsIGJ1dCBpdCBpcyBjYWxtZXIgYW5kIGxlc3MgdGhyaWxsaW5nIHRoYW4gYSBsaXZlIHNob3cuIFNvIG9uIGZ1biwgb24gcHJpY2UgYW5kIG9uIHNhZmV0eSwgdGhlIEJpcnRoZGF5IENsb3ducyB3aW4gaGFuZHMgZG93bi4gU2hhbGwgd2UgZ28gYWhlYWQgYW5kIGJvb2sgdGhlbT8ifSx7ImsiOiJ0NiIsIm51bSI6NiwidHlwZUVuIjoiRGVhbGluZyB3aXRoIGEgRGlmZmljdWx0IFNpdHVhdGlvbiIsInByZXAiOjYwLCJyZWMiOjYwLCJwcm9tcHQiOiJZb3Uga25vdyB0aGF0IG9uZSBvZiB5b3VyIGNvLXdvcmtlcnMsIHdobyBpcyBnb2luZyB0byByZXRpcmUgaW4gYSBmZXcgbW9udGhzLCBoYXMgYmVlbiBzdGVhbGluZyBmcm9tIHRoZSBjb21wYW55LiBZb3UgaGF2ZSBzZWVuIGhpbSBwdXR0aW5nIG9mZmljZSBzdXBwbGllcyBhbmQgY29tcHV0ZXIgcGFydHMgaW4gaGlzIGJhZyBvbiBzZXZlcmFsIG9jY2FzaW9ucywgYW5kIHlvdSBoYXZlIHRvbGQgc29tZSBvdGhlciBjby13b3JrZXJzIGFib3V0IGl0LiBZb3VyIGNvLXdvcmtlciBTYW0gdGhpbmtzIHRoYXQgeW91IHNob3VsZCBub3QgYm90aGVyIHJlcG9ydGluZyB0aGUgdGhlZnQsIHNpbmNlIHRoZSBtYW4gaXMgYWJvdXQgdG8gcmV0aXJlLiBBbm90aGVyIGNvLXdvcmtlciwgRXJpbiwgdGhpbmtzIHRoYXQgeW91IG5lZWQgdG8gcmVwb3J0IHRoZSB0aGVmdCB0byB5b3VyIGJvc3MgYXMgc29vbiBhcyBwb3NzaWJsZS4iLCJjaG9vc2VPbmUiOlsiVGFsayB0byBTYW0uIEV4cGxhaW4gd2h5IHlvdSB3YW50IHRvIHJlcG9ydCB0aGUgdGhlZnQuIiwiVGFsayB0byBFcmluLiBFeHBsYWluIHdoeSB5b3UgZG8gbm90IHdhbnQgdG8gcmVwb3J0IHRoZSB0aGVmdC4iXSwiaW1nIjpudWxsLCJ0aXBzIjp7ImJ1bGxldHMiOlsiUGljayBPTkUgb3B0aW9uIChFSVRIRVIgb3IgT1IpIGltbWVkaWF0ZWx5IFx1MjAxNCBkb24ndCB3YXN0ZSB0aW1lIGRlY2lkaW5nLiIsIlN0cnVjdHVyZTogb3BlbiBwb2xpdGVseSBcdTIxOTIgZXhwbGFpbiB5b3VyIHJlYXNvbnMvZXZpZGVuY2UgXHUyMTkyIHByb3Bvc2UgYSBzb2x1dGlvbiBcdTIxOTIgc21vb3RoIHRoaW5ncyBvdmVyLiIsIlN0YXkgY2FsbSBhbmQgcmVzcGVjdGZ1bCBcdTIwMTQgaG93IHlvdSBoYW5kbGUgdGhlIHNpdHVhdGlvbiBpcyBwYXJ0IG9mIHdoYXQncyBiZWluZyByYXRlZCAoTGlzdGVuYWJpbGl0eSkuIiwiVGhlIHNhbXBsZXMgcGljayBvcHRpb24gMSAtIHRhbGsgdG8gU2FtIGFuZCBleHBsYWluIHdoeSB5b3UgZmVlbCB5b3UgbXVzdCByZXBvcnQgdGhlIHRoZWZ0LiBSZWFzb25pbmc6IHN0ZWFsaW5nIGlzIHdyb25nIG5vIG1hdHRlciBob3cgc29vbiB0aGUgbWFuIHJldGlyZXM7IHRoZSBjb21wdXRlciBwYXJ0cyBhbmQgc3VwcGxpZXMgYmVsb25nIHRvIHRoZSBjb21wYW55IGFuZCB0aGUgbG9zcyBpcyB1bmZhaXIgdG8gZXZlcnlvbmUgd2hvIHdvcmtzIGhvbmVzdGx5OyBzdGF5aW5nIHNpbGVudCB3b3VsZCBtYWtlIHlvdSBjb21wbGljaXQgYW5kIHNldCBhIGJhZCBleGFtcGxlOyBhbmQgcmVwb3J0aW5nIGl0IHF1aWV0bHkgaXMgc2ltcGx5IHRoZSByZXNwb25zaWJsZSB0aGluZyB0byBkby4gQWNrbm93bGVkZ2UgU2FtJ3MgcG9pbnQgYW5kIHN0YXkgY2FsbSwgYnV0IGJlIGZpcm0uIl0sInBocmFzZXMiOlsiQ291bGQgSSBqdW1wIGluIGZvciBhIG1vbWVudD8iLCJJIHVuZGVyc3RhbmQgeW91ciBjb25jZXJuLCBidXRcdTIwMjYiLCJIb3cgYWJvdXQgd2VcdTIwMjY\/IiwiSSdsbCB0YWtlIHJlc3BvbnNpYmlsaXR5IGZvciB0aGlzLiJdfSwiczYiOiJIZXkgU2FtLCBJIGhhdmUgYmVlbiB0aGlua2luZyBhIGxvdCBhYm91dCB3aGF0IHdlIHRhbGtlZCBhYm91dCwgdGhlIG1hbiB3aG8gaXMgdGFraW5nIG9mZmljZSBzdXBwbGllcyBhbmQgY29tcHV0ZXIgcGFydHMuIEkgdW5kZXJzdGFuZCB5b3VyIHBvaW50LiBIZSBpcyByZXRpcmluZyBpbiBhIGZldyBtb250aHMsIHNvIHlvdSBmZWVsIGl0IGlzIG5vdCB3b3J0aCB0aGUgdHJvdWJsZSB0byByZXBvcnQgaGltLiBCdXQgSSBhbSBzb3JyeSwgSSByZWFsbHkgY2Fubm90IHN0YXkgcXVpZXQgYWJvdXQgdGhpcywgYW5kIGxldCBtZSBleHBsYWluIHdoeS4gRmlyc3QsIHN0ZWFsaW5nIGlzIHN0ZWFsaW5nLiBJdCBkb2VzIG5vdCBtYXR0ZXIgaWYgaGUgcmV0aXJlcyBuZXh0IG1vbnRoIG9yIG5leHQgeWVhciwgdGhvc2UgY29tcHV0ZXIgcGFydHMgYW5kIHN1cHBsaWVzIGJlbG9uZyB0byB0aGUgY29tcGFueSwgYW5kIHRha2luZyB0aGVtIGlzIHdyb25nLiBTZWNvbmQsIGl0IGlzIG5vdCBmYWlyLiBBbGwgb2YgdXMgY29tZSB0byB3b3JrIGFuZCBkbyBvdXIgam9icyBob25lc3RseS4gSWYgb25lIHBlcnNvbiBzdGVhbHMgYW5kIG5vYm9keSBzYXlzIGFueXRoaW5nLCB0aGF0IGlzIG5vdCBmYWlyIHRvIHRoZSByZXN0IG9mIHVzLiBUaGlyZCwgaWYgSSBrbm93IGFib3V0IGl0IGFuZCBJIHNheSBub3RoaW5nLCB0aGVuIGl0IGlzIGEgbGl0dGxlIGJpdCBteSBmYXVsdCB0b28uIEkgZG8gbm90IHdhbnQgdG8gYmUgcGFydCBvZiBpdC4gQW5kIGNvbXB1dGVyIHBhcnRzIGNhbiBiZSBleHBlbnNpdmUsIHRoaXMgaXMgbm90IGp1c3QgYSBmZXcgcGVucy4gSSBhbSBub3QgdHJ5aW5nIHRvIGh1cnQgaGltIG9yIGJlIG1lYW4uIEJ1dCBJIHRoaW5rIHRoZSBob25lc3QgdGhpbmcgdG8gZG8gaXMgdG8gdGVsbCB0aGUgYm9zcyBxdWlldGx5IGFuZCBsZXQgdGhlbSBoYW5kbGUgaXQgdGhlIHJpZ2h0IHdheS4gSSBob3BlIHlvdSBjYW4gdW5kZXJzdGFuZCBteSBkZWNpc2lvbiwgU2FtLiBGb3IgbWUsIGRvaW5nIHRoZSByaWdodCB0aGluZyBpcyBtb3JlIGltcG9ydGFudCBoZXJlLiIsInM5IjoiU2FtLCBJIGhhdmUgYmVlbiB0dXJuaW5nIG91ciBjb252ZXJzYXRpb24gb3ZlciBpbiBteSBoZWFkLCB0aGUgc2l0dWF0aW9uIHdpdGggb3VyIGNvbGxlYWd1ZSBzbGlwcGluZyBvZmZpY2Ugc3VwcGxpZXMgYW5kIGNvbXB1dGVyIHBhcnRzIGludG8gaGlzIGJhZywgYW5kIEkgd2FudGVkIHRvIGJlIHN0cmFpZ2h0IHdpdGggeW91IGFib3V0IHdoZXJlIEkgaGF2ZSBsYW5kZWQuIEkgZG8gdW5kZXJzdGFuZCB5b3VyIHJlYXNvbmluZzogdGhlIG1hbiBpcyBvbmx5IG1vbnRocyBmcm9tIHJldGlyZW1lbnQsIGFuZCB5b3UgZmVlbCB0aGF0IGRyYWdnaW5nIGl0IGFsbCB1cCBub3cgaXMgbW9yZSBoYXNzbGUgdGhhbiBpdCBpcyB3b3J0aC4gSG9uZXN0bHksIHBhcnQgb2YgbWUgd2lzaGVzIEkgY291bGQganVzdCBsZXQgaXQgc2xpZGUuIEJ1dCBJIGhhdmUgZGVjaWRlZCBJIGhhdmUgdG8gcmVwb3J0IGl0LCBhbmQgSSB3b3VsZCByYXRoZXIgZXhwbGFpbiB0aGF0IHRvIHlvdXIgZmFjZSB0aGFuIGdvIGJlaGluZCB5b3VyIGJhY2suIEhlcmUgaXMgbXkgdGhpbmtpbmcuIEZpcnN0LCB0aGVmdCBkb2VzIG5vdCBzdG9wIGJlaW5nIHRoZWZ0IHNpbXBseSBiZWNhdXNlIHNvbWVvbmUgaXMgYWJvdXQgdG8gbGVhdmU7IHRob3NlIHBhcnRzIGJlbG9uZyB0byB0aGUgY29tcGFueSwgYW5kIHRoZWlyIHZhbHVlIGRvZXMgbm90IHNocmluayBiZWNhdXNlIG9mIGhpcyByZXRpcmVtZW50IGRhdGUuIFNlY29uZCwgaXQgaXMgYSBxdWVzdGlvbiBvZiBmYWlybmVzcyB0byB0aGUgcmVzdCBvZiB1cywgZXZlcnlvbmUgZWxzZSB0dXJucyB1cCBhbmQgZG9lcyB0aGVpciBqb2IgaG9uZXN0bHksIGFuZCBxdWlldGx5IGV4Y3VzaW5nIG9uZSBwZXJzb24ncyBzdGVhbGluZyBpcyBhIHNsYXAgaW4gdGhlIGZhY2UgdG8gdGhhdC4gVGhpcmQsIGFuZCB0aGlzIGlzIHRoZSBvbmUgSSBjYW5ub3QgZ2V0IHBhc3QsIGlmIEkga25vdyB3aGF0IGlzIGhhcHBlbmluZyBhbmQgc2F5IG5vdGhpbmcsIEkgYmVjb21lIHBhcnQgb2YgaXQsIGFuZCB0aGF0IGlzIG5vdCB3aG8gSSB3YW50IHRvIGJlLiBUaGlzIGlzIG5vdCBhYm91dCBwdW5pc2hpbmcgaGltIG9yIGJlaW5nIHZpbmRpY3RpdmU7IEkgd291bGQgcmVwb3J0IGl0IGRpc2NyZWV0bHkgYW5kIGxldCBtYW5hZ2VtZW50IGRlY2lkZSBob3cgdG8gaGFuZGxlIGl0IGh1bWFuZWx5LiBJIHJlYWxseSBob3BlIHlvdSBjYW4gcmVzcGVjdCB0aGF0LCBTYW0sIGV2ZW4gaWYgeW91IHdvdWxkIGNob29zZSBkaWZmZXJlbnRseS4gRm9yIG1lLCBkb2luZyB0aGUgaG9uZXN0IHRoaW5nIGhlcmUgc2ltcGx5IG1hdHRlcnMgbW9yZS4ifSx7ImsiOiJ0NyIsIm51bSI6NywidHlwZUVuIjoiRXhwcmVzc2luZyBPcGluaW9ucyIsInByZXAiOjMwLCJyZWMiOjkwLCJwcm9tcHQiOiJEbyB5b3UgdGhpbmsgdGhhdCB0aGUgZ292ZXJubWVudCBzaG91bGQgY2FuY2VsIHRheGVzIG9uIGNlcnRhaW4ga2luZHMgb2YgcHJvZHVjdHMsIHN1Y2ggYXMgYm9va3MsIGNoaWxkcmVuJ3MgY2xvdGhlcywgZ3JvY2VyaWVzLCBhbmQgc2Nob29sIHN1cHBsaWVzPyBFeHBsYWluIHlvdXIgcmVhc29ucy4iLCJwcm9tcHRMZWFkIjoiQW5zd2VyIHRoZSBmb2xsb3dpbmcgcXVlc3Rpb24uIiwiaW1nIjpudWxsLCJ0aXBzIjp7ImJ1bGxldHMiOlsiU3RhdGUgeW91ciBwb3NpdGlvbiBjbGVhcmx5IGluIHRoZSBmaXJzdCBzZW50ZW5jZSAocGlja2luZyBvbmUgc2lkZSBpcyBlYXNpZXIgdG8gZGV2ZWxvcCB0aGFuIHN0YXlpbmcgbmV1dHJhbCkuIiwiR2l2ZSAyXHUyMDEzMyByZWFzb25zLCBlYWNoIGRldmVsb3BlZCBvdmVyIDJcdTIwMTMzIHNlbnRlbmNlcyB3aXRoIGFuIGV4YW1wbGU7IDkwIHNlY29uZHMgaXMgbG9uZyBcdTIwMTQgZG9uJ3Qgc3RvcCBlYXJseS4iLCJBY2tub3dsZWRnZSB0aGUgb3RoZXIgc2lkZSBpbiBvbmUgc2VudGVuY2UgKFRoYXQgc2FpZCwgXHUyMDI2KSB0aGVuIGNvbmNsdWRlIFx1MjAxNCBpdCBzaG93cyBiYWxhbmNlZCB0aGlua2luZy4iLCJUaGUgc2FtcGxlcyBhcmd1ZSBZRVMgLSB0aGUgZ292ZXJubWVudCBzaG91bGQgY2FuY2VsIHRheGVzIG9uIGVzc2VudGlhbHMgbGlrZSBib29rcywgY2hpbGRyZW4ncyBjbG90aGVzLCBncm9jZXJpZXMgYW5kIHNjaG9vbCBzdXBwbGllcy4gUmVhc29uczogdGhlc2UgYXJlIG5lY2Vzc2l0aWVzLCBub3QgbHV4dXJpZXMsIHNvIHRheGluZyB0aGVtIGlzIHVuZmFpcjsgdGhlIHRheCBoaXRzIGxvdy1pbmNvbWUgZmFtaWxpZXMgaGFyZGVzdCBiZWNhdXNlIGJhc2ljcyBlYXQgdXAgYSBiaWdnZXIgc2hhcmUgb2YgdGhlaXIgaW5jb21lOyBhbmQgY2hlYXBlciBib29rcyBhbmQgc2Nob29sIHN1cHBsaWVzIGVuY291cmFnZSByZWFkaW5nIGFuZCBlZHVjYXRpb24sIHdoaWNoIGJlbmVmaXRzIHRoZSB3aG9sZSBjb3VudHJ5LiBDb25jZWRlIHRoZSBsb3N0IHJldmVudWUgbXVzdCBiZSByZWNvdmVyZWQgZWxzZXdoZXJlIChmb3IgZXhhbXBsZSBmcm9tIGx1eHVyeSBnb29kcyksIHRoZW4gY29uY2x1ZGUgaXQgaXMgd29ydGggaXQuIl0sInBocmFzZXMiOlsiSWYgSSBoYWQgdG8gY2hvb3NlLCBJJ2Qgc2F5XHUyMDI2IiwiTXkgbWFpbiByZWFzb24gaXNcdTIwMjYiLCJGb3IgZXhhbXBsZSwgXHUyMDI2IiwiVGhhdCBzYWlkLCBcdTIwMjYiLCJBbGwgdGhpbmdzIGNvbnNpZGVyZWQsIFx1MjAyNiJdfSwiczYiOiJZZXMsIEkgZGVmaW5pdGVseSB0aGluayB0aGUgZ292ZXJubWVudCBzaG91bGQgY2FuY2VsIHRheGVzIG9uIGJhc2ljIHRoaW5ncyBsaWtlIGJvb2tzLCBjaGlsZHJlbidzIGNsb3RoZXMsIGdyb2NlcmllcywgYW5kIHNjaG9vbCBzdXBwbGllcy4gTGV0IG1lIGdpdmUgbXkgcmVhc29ucy4gTXkgZmlyc3QgcmVhc29uIGlzIHRoYXQgdGhlc2UgdGhpbmdzIGFyZSBuZWNlc3NpdGllcywgbm90IGx1eHVyaWVzLiBFdmVyeW9uZSBuZWVkcyBmb29kIHRvIGVhdCwgY2hpbGRyZW4gbmVlZCBjbG90aGVzIHRvIHdlYXIsIGFuZCBzdHVkZW50cyBuZWVkIGJvb2tzIGFuZCBzY2hvb2wgc3VwcGxpZXMgdG8gbGVhcm4uIFdoZW4gc29tZXRoaW5nIGlzIGEgYmFzaWMgbmVlZCwgSSBkbyBub3QgdGhpbmsgaXQgaXMgZmFpciB0byBwdXQgYSB0YXggb24gaXQuIE15IHNlY29uZCByZWFzb24gaXMgYWJvdXQgZmFpcm5lc3MgZm9yIHBvb3IgZmFtaWxpZXMuIFJpY2ggZmFtaWxpZXMgYW5kIHBvb3IgZmFtaWxpZXMgYm90aCBuZWVkIHRvIGJ1eSBmb29kIGFuZCBjbG90aGVzIGZvciB0aGVpciBraWRzLiBCdXQgZm9yIGEgcG9vciBmYW1pbHksIHRoaXMgbW9uZXkgaXMgYSBtdWNoIGJpZ2dlciBwYXJ0IG9mIHRoZWlyIGluY29tZS4gU28gYSB0YXggb24gZ3JvY2VyaWVzIGh1cnRzIHRoZW0gbXVjaCBtb3JlLiBDYW5jZWxsaW5nIHRoZSB0YXggaGVscHMgdGhlIGZhbWlsaWVzIHdobyBuZWVkIGhlbHAgdGhlIG1vc3QuIE15IHRoaXJkIHJlYXNvbiBpcyBlZHVjYXRpb24uIElmIGJvb2tzIGFuZCBzY2hvb2wgc3VwcGxpZXMgYXJlIGNoZWFwZXIsIG1vcmUgY2hpbGRyZW4gY2FuIHJlYWQgYW5kIHN0dWR5LCBhbmQgZWR1Y2F0aW9uIGlzIGdvb2QgZm9yIHRoZSB3aG9sZSBjb3VudHJ5IGluIHRoZSBmdXR1cmUuIE9mIGNvdXJzZSwgdGhlIGdvdmVybm1lbnQgc3RpbGwgbmVlZHMgbW9uZXksIHNvIG1heWJlIHRoZXkgY2FuIHB1dCBhIGhpZ2hlciB0YXggb24gbHV4dXJ5IHRoaW5ncywgbGlrZSBleHBlbnNpdmUgamV3ZWxsZXJ5IG9yIGZhbmN5IGNhcnMsIGluc3RlYWQuIFRoYXQgaXMgbW9yZSBmYWlyLiBTbyBpbiBjb25jbHVzaW9uLCB5ZXMsIGNhbmNlbCB0aGUgdGF4IG9uIGJhc2ljIG5lZWRzLiBJdCBoZWxwcyBub3JtYWwgZmFtaWxpZXMgYW5kIGl0IGhlbHBzIGVkdWNhdGlvbi4gSSBmdWxseSBzdXBwb3J0IHRoaXMgaWRlYS4iLCJzOSI6Ik15IGFuc3dlciBpcyBhIGNsZWFyIHllczogdGhlIGdvdmVybm1lbnQgc2hvdWxkIGFic29sdXRlbHkgc2NyYXAgdGF4ZXMgb24gZXNzZW50aWFscyBzdWNoIGFzIGJvb2tzLCBjaGlsZHJlbidzIGNsb3RoZXMsIGdyb2NlcmllcyBhbmQgc2Nob29sIHN1cHBsaWVzLCBhbmQgSSBmZWVsIHF1aXRlIHN0cm9uZ2x5IGFib3V0IGl0LiBNeSBmaXJzdCBhbmQgbW9zdCBiYXNpYyByZWFzb24gaXMgdGhhdCB0aGVzZSBhcmUgbmVjZXNzaXRpZXMsIG5vdCBsdXh1cmllcy4gTm9ib2R5IGJ1eXMgZ3JvY2VyaWVzIG9yIHRoZWlyIGNoaWxkJ3Mgd2ludGVyIGNvYXQgZm9yIGZ1biwgdGhleSBidXkgdGhlbSBiZWNhdXNlIHRoZXkgaGF2ZSBubyBjaG9pY2UsIGFuZCB0YXhpbmcgc29tZXRoaW5nIHBlb3BsZSBjYW5ub3QgYXZvaWQgYnV5aW5nIHN0cmlrZXMgbWUgYXMgZnVuZGFtZW50YWxseSB1bmZhaXIuIE15IHNlY29uZCByZWFzb24gaXMgYWJvdXQgZmFpcm5lc3MgYWNyb3NzIGluY29tZSBsZXZlbHMuIEEgd2VhbHRoeSBob3VzZWhvbGQgYW5kIGEgc3RydWdnbGluZyBvbmUgYm90aCBoYXZlIHRvIGZlZWQgYW5kIGNsb3RoZSB0aGVpciBjaGlsZHJlbiwgYnV0IGZvciB0aGUgbG93LWluY29tZSBmYW1pbHkgdGhvc2UgcHVyY2hhc2VzIHN3YWxsb3cgYSBmYXIgYmlnZ2VyIHNsaWNlIG9mIHRoZWlyIG1vbnRobHkgaW5jb21lLiBUaGF0IG1ha2VzIHRheGVzIG9uIGJhc2ljcyByZWdyZXNzaXZlLCB0aGV5IHF1aWV0bHkgcHVuaXNoIHRoZSBwZW9wbGUgd2hvIGNhbiBsZWFzdCBhZmZvcmQgaXQsIHNvIHJlbW92aW5nIHRoZW0gaXMgYSB0YXJnZXRlZCB3YXkgdG8gZWFzZSB0aGUgcHJlc3N1cmUgb24gZXhhY3RseSB0aGUgZmFtaWxpZXMgd2hvIG5lZWQgcmVsaWVmIG1vc3QuIE15IHRoaXJkIHJlYXNvbiBpcyB0aGUgbG9uZy10ZXJtIHBheW9mZiBvZiBjaGVhcGVyIGJvb2tzIGFuZCBzY2hvb2wgc3VwcGxpZXM6IGxvd2VyIHRoZSBjb3N0IG9mIHJlYWRpbmcgYW5kIGxlYXJuaW5nLCBhbmQgbW9yZSBjaGlsZHJlbiB3aWxsIHJlYWQgYW5kIHN0dWR5LCB3aGljaCBzdHJlbmd0aGVucyB0aGUgd2hvbGUgc29jaWV0eSBkb3duIHRoZSBsaW5lLiBOb3csIEkgd2lsbCBjb25jZWRlIHRoZSBvYnZpb3VzIG9iamVjdGlvbiwgZ292ZXJubWVudHMgcmVseSBvbiB0aGF0IHRheCByZXZlbnVlLCBhbmQgaXQgaGFzIHRvIGNvbWUgZnJvbSBzb21ld2hlcmUuIEJ1dCB0aGUgYW5zd2VyIGlzIHNpbXBseSB0byBzaGlmdCB0aGUgYnVyZGVuIG9udG8gZ2VudWluZSBsdXh1cmllcywgdGhpbmdzIGxpa2UgZGVzaWduZXIgZ29vZHMsIGV4cGVuc2l2ZSBqZXdlbGxlcnkgb3IgaGlnaC1lbmQgY2FycywgcmF0aGVyIHRoYW4gb250byBicmVhZCBhbmQgcGVuY2lscy4gT24gYmFsYW5jZSwgdGF4aW5nIG5lY2Vzc2l0aWVzIGlzIGhhcmQgdG8ganVzdGlmeSwgYW5kIGN1dHRpbmcgdGhvc2UgdGF4ZXMgaXMgYSBmYWlyLCBodW1hbmUgYW5kIGZvcndhcmQtdGhpbmtpbmcgcG9saWN5IHRoYXQgSSB3b3VsZCB3aG9sZWhlYXJ0ZWRseSBzdXBwb3J0LiJ9LHsiayI6InQ4IiwibnVtIjo4LCJ0eXBlRW4iOiJEZXNjcmliaW5nIGFuIFVudXN1YWwgU2l0dWF0aW9uIiwicHJlcCI6MzAsInJlYyI6NjAsInByb21wdCI6IllvdXIgZnJpZW5kLCBLYXRoeSwgaXMgbW92aW5nIHRvIENhbmFkYSB3aXRoIGhlciBmYW1pbHkgYW5kIGhhcyBhc2tlZCB5b3UgdG8gaGVscCBoZXIgZmluZCBhIHBsYWNlIHRvIGxpdmUuIFlvdSBzZWUgYW4gaW50ZXJlc3RpbmcgaG91c2UgdGhhdCBzaGUgYW5kIGhlciBmYW1pbHkgbWlnaHQgbGlrZSB0byBsaXZlIGluLiBDYWxsIEthdGh5IGFuZCBkZXNjcmliZSBpbiBkZXRhaWwgd2hhdCB0aGUgaG91c2UgbG9va3MgbGlrZSwgYW5kIGFzayBoZXIgaWYgc2hlJ2QgbGlrZSB0byBsaXZlIGluIHRoZSBob3VzZS4iLCJpbWciOiJ1bnVzdWFsIiwidGlwcyI6eyJidWxsZXRzIjpbIlRoaXMgaXMgYSBQSE9ORSBDQUxMOiBncmVldCB0aGUgcmlnaHQgcGVyc29uICh0aGUgcG9saWNlIC8geW91ciBmcmllbmQpLCB0aGVuIHNheSB3aGVyZSB5b3UgYXJlLiIsIkRlc2NyaWJlIGZyb20gZ2VuZXJhbCB0byBzcGVjaWZpYzsgdGhlIHBpY3R1cmUgaXMgbWVhbnQgdG8gYmUgc3RyYW5nZSBcdTIwMTQganVzdCBkZXNjcmliZSB3aGF0IHlvdSBzZWUsIHVzaW5nICdJdCBsb29rcyBsaWtlIC8gYXMgaWZcdTIwMjYnLiIsIkVuZCB3aXRoIGEgcmVxdWVzdCBmb3IgYWN0aW9uIChzZW5kIGEgcGF0cm9sIC8gYXNrIHdoZXJlIHRvIGJ1eSkuIiwiVGhpcyBpcyBhIHBob25lIGNhbGwgdG8geW91ciBmcmllbmQgS2F0aHkgYWJvdXQgYW4gdW51c3VhbCBob3VzZSB5b3UgaGF2ZSBmb3VuZC4gRGVzY3JpYmUgdGhlIGFjdHVhbCBwaWN0dXJlOiB0aGUgd2hvbGUgaG9tZSBpcyBidWlsdCBiZW5lYXRoIGEgZ2lhbnQgd2hpdGUgc2Vhc2hlbGwsIGEgc3Bpa3kgY29uY2ggd2l0aCB0d28gcm91bmQgd2luZG93cyBsaWtlIGV5ZXMgYW5kIGFuIG9wZW4gZG9vcndheSBsaWtlIGEgc3VycHJpc2VkIG1vdXRoLCBzbyB0aGUgZnJvbnQgbG9va3MgbGlrZSBhIGZhY2UuIFVuZGVybmVhdGggc2l0IHR3byBzbWFsbCBqb2luZWQgaG91c2VzLCBhIHBpbmsgb25lIG9uIHRoZSBsZWZ0IGFuZCBhIGJsdWUgb25lIG9uIHRoZSByaWdodCwgZWFjaCB3aXRoIGEgZG9vciwgYSB3aW5kb3cgYW5kIGEgZ3JlZW4gZ3Jhc3N5IHJvb2YsIHBsdXMgYSBncmV5IHNlY3Rpb24gaW4gdGhlIG1pZGRsZS4gVGhlcmUgYXJlIHBhbG0gdHJlZXMgb24gdGhlIGxlZnQsIGEgbmVhdCBncmVlbiBsYXduLCBhIGN1cnZpbmcgc3RvbmUgcGF0aCwgYW5kIGluIGZyb250IGEgcm91bmQgZm91bnRhaW4gc2hhcGVkIGxpa2UgYSB3aGFsZSdzIHRhaWwgc3BvdXRpbmcgd2F0ZXIuIEVuZCBieSBhc2tpbmcgaWYgc2hlIHdvdWxkIGxpa2UgdG8gbGl2ZSB0aGVyZS4iXSwicGhyYXNlcyI6WyJJJ20gY2FsbGluZyB0byByZXBvcnRcdTIwMjYiLCJQaWN0dXJlIHRoaXM6IFx1MjAyNiIsIkl0IGxvb2tzIGFzIGlmXHUyMDI2IiwiQ291bGQgeW91IHNlbmRcdTIwMjYgLyBEbyB5b3Uga25vdyB3aGVyZVx1MjAyNj8iXX0sInM2IjoiSGkgS2F0aHksIGl0J3MgbWUhIEkgYW0gc28gZXhjaXRlZCwgSSB0aGluayBJIGZvdW5kIHRoZSBwZXJmZWN0IGhvdXNlIGZvciB5b3UgYW5kIHlvdXIgZmFtaWx5IGluIENhbmFkYSwgYnV0IHdhaXQgdW50aWwgeW91IGhlYXIgdGhpcywgaXQgaXMgdmVyeSB1bnVzdWFsISBPa2F5LCBpbWFnaW5lIHRoaXMuIFRoZSB3aG9sZSBob3VzZSBpcyB1bmRlciBhIGdpYW50IHdoaXRlIHNlYXNoZWxsLCBsaWtlIGEgYmlnIGNvbmNoIHNoZWxsIGZyb20gdGhlIG9jZWFuLiBBbmQgdGhlIGZ1bm55IHRoaW5nIGlzLCB0aGUgc2hlbGwgaGFzIHR3byByb3VuZCB3aW5kb3dzIHRoYXQgbG9vayBsaWtlIHR3byBleWVzLCBhbmQgYW4gb3BlbiBkb29yIGluIHRoZSBtaWRkbGUgbGlrZSBhIG1vdXRoLCBzbyB0aGUgZnJvbnQgb2YgdGhlIGhvdXNlIGxvb2tzIGxpa2UgYSBiaWcgc3VycHJpc2VkIGZhY2UhIEl0IG1hZGUgbWUgbGF1Z2guIFVuZGVyIHRoZSBzaGVsbCwgdGhlcmUgYXJlIHR3byBzbWFsbCBob3VzZXMgam9pbmVkIHRvZ2V0aGVyLiBUaGUgb25lIG9uIHRoZSBsZWZ0IGlzIHBpbmssIHdpdGggYSBsaXR0bGUgZG9vciBhbmQgYSB3aW5kb3csIGFuZCB0aGUgb25lIG9uIHRoZSByaWdodCBpcyBibHVlLCBhbmQgYm90aCBvZiB0aGVtIGhhdmUgZ3JlZW4gZ3Jhc3MgZ3Jvd2luZyBvbiB0aGUgcm9vZiwgc28gY3V0ZS4gVGhlcmUgaXMgYWxzbyBhIGdyZXkgcGFydCBpbiB0aGUgbWlkZGxlLiBBcm91bmQgdGhlIGhvdXNlLCB0aGVyZSBhcmUgdGFsbCBwYWxtIHRyZWVzIG9uIHRoZSBsZWZ0LCBhIG5pY2UgZ3JlZW4gbGF3biwgYW5kIGEgc3RvbmUgcGF0aCB0aGF0IGN1cnZlcyB0byB0aGUgZG9vci4gQW5kIGluIHRoZSBmcm9udCwgdGhlcmUgaXMgYSByb3VuZCBmb3VudGFpbiBzaGFwZWQgbGlrZSBhIHdoYWxlJ3MgdGFpbCwgYW5kIHdhdGVyIGlzIHNwcmF5aW5nIG91dCBvZiBpdC4gSXQgaXMgdGhlIG1vc3QgaW50ZXJlc3RpbmcgaG91c2UgSSBoYXZlIGV2ZXIgc2VlbiEgU28sIHdoYXQgZG8geW91IHRoaW5rLCBLYXRoeT8gV291bGQgeW91IGxpa2UgdG8gbGl2ZSBoZXJlPyBUZWxsIG1lIHllcyEiLCJzOSI6IkthdGh5LCBpdCdzIG1lLCBhbmQgeW91IGhhdmUgdG8gaGVhciBhYm91dCB0aGlzIGhvdXNlIEkgaGF2ZSBqdXN0IGZvdW5kIGZvciB5b3UsIGJlY2F1c2UgaXQgbWlnaHQgYmUgdGhlIG1vc3QgZXh0cmFvcmRpbmFyeSBwbGFjZSBJIGhhdmUgZXZlciBsYWlkIGV5ZXMgb24uIFBpY3R1cmUgdGhpczogdGhlIGVudGlyZSBob21lIGlzIGJ1aWx0IGJlbmVhdGggYW4gZW5vcm1vdXMgd2hpdGUgc2Vhc2hlbGwsIGEgZ3JlYXQgc3Bpa3kgY29uY2ggbGlrZSBzb21ldGhpbmcgd2FzaGVkIHVwIGZyb20gdGhlIG9jZWFuIGFuZCBibG93biB1cCB0byB0aGUgc2l6ZSBvZiBhIGJ1aWxkaW5nLiBIZXJlIGlzIHRoZSBiZXN0IGJpdCwgdGhlIHNoZWxsIGhhcyB0d28gYmlnIHJvdW5kIHdpbmRvd3Mgc2V0IGludG8gaXQgbGlrZSBhIHBhaXIgb2YgZXllcywgYW5kIGFuIG9wZW4gZG9vcndheSB1bmRlcm5lYXRoIGxpa2UgYSBnYXBpbmcgbW91dGgsIHNvIHRoZSB3aG9sZSBmcm9udCBnZW51aW5lbHkgbG9va3MgbGlrZSBhIGZhY2UgY2F1Z2h0IGluIHN1cnByaXNlLiBJdCBpcyBjb21pY2FsIGFuZCByYXRoZXIgY2hhcm1pbmcgYXQgb25jZS4gVHVja2VkIHVuZGVyIHRoYXQgc2hlbGwgYXJlIHR3byBsaXR0bGUgaG91c2VzIGpvaW5lZCB0b2dldGhlcjogdGhlIG9uZSBvbiB0aGUgbGVmdCBpcyBwYWludGVkIHNvZnQgcGluaywgdGhlIG9uZSBvbiB0aGUgcmlnaHQgYSBjaGVlcmZ1bCBibHVlLCBlYWNoIHdpdGggaXRzIG93biBkb29yIGFuZCB3aW5kb3csIGFuZCwgd29uZGVyZnVsbHksIGJvdGggaGF2ZSBsaXZpbmcgZ3JlZW4gZ3Jhc3MgZ3Jvd2luZyByaWdodCBhY3Jvc3MgdGhlaXIgcm9vZnMsIHdpdGggYSBncmV5IHNlY3Rpb24gbGlua2luZyB0aGVtIGluIHRoZSBtaWRkbGUuIFRoZSBzZXR0aW5nIGlzIGxvdmVseSB0b28sIHRhbGwgcGFsbSB0cmVlcyBsZWFuIGluIG9uIHRoZSBsZWZ0LCB0aGVyZSBpcyBhIG5lYXQgZ3JlZW4gbGF3biwgYW5kIGEgc3RvbmUgcGF0aCBjdXJ2ZXMgZ2VudGx5IHVwIHRvIHRoZSBlbnRyYW5jZS4gQW5kIHJpZ2h0IG91dCBmcm9udCBzaXRzIGEgcm91bmQgZm91bnRhaW4gc2N1bHB0ZWQgbGlrZSBhIHdoYWxlJ3MgdGFpbCwgc3BvdXRpbmcgYXJjcyBvZiB3YXRlciBpbnRvIHRoZSBhaXIuIEl0IGlzIHF1aXJreSwgdHJvcGljYWwgYW5kIGZ1bGwgb2YgY2hhcmFjdGVyLCBleGFjdGx5IHRoZSBraW5kIG9mIG9uZS1vZi1hLWtpbmQgcGxhY2UgSSBjb3VsZCBpbWFnaW5lIHlvdXIgZmFtaWx5IGZhbGxpbmcgaW4gbG92ZSB3aXRoLiBTbywgdGVsbCBtZSBob25lc3RseSwgS2F0aHksIGNvdWxkIHlvdSBzZWUgeW91cnNlbGYgbGl2aW5nIGhlcmU\/IEkgcmVhbGx5IHRoaW5rIHlvdSBzaG91bGQgc2F5IHllcyEifV0sInVpIjp7InN0YXJ0VGVzdCI6IlN0YXJ0IHRoZSB0ZXN0IiwibWljRW5hYmxlIjoiRW5hYmxlIG1pY3JvcGhvbmUiLCJtaWNSZWFkeSI6Ik1pY3JvcGhvbmUgcmVhZHkiLCJtaWNCbG9ja2VkIjoiTWljcm9waG9uZSBpcyBibG9ja2VkIG9yIHVuYXZhaWxhYmxlIFx1MjAxNCB0aGUgcGFnZSB3aWxsIHJ1biBpbiB0aW1lci1vbmx5IG1vZGUgKHlvdSBjYW4gc3RpbGwgcHJhY3Rpc2Ugc3BlYWtpbmcgYWxvbmcgd2l0aCB0aGUgdGltZXJzKS4iLCJtaWNOb3RlIjoiUmVjb3JkaW5ncyBhcmUgc3RvcmVkIHRlbXBvcmFyaWx5IGluIHlvdXIgYnJvd3NlciBvbmx5IFx1MjAxNCBub3RoaW5nIGlzIHVwbG9hZGVkIHRvIGFueSBzZXJ2ZXIuIFRoZXkgYXJlIGxvc3Qgd2hlbiB5b3UgY2xvc2UgdGhlIHBhZ2UsIHNvIGRvd25sb2FkIGFueSB5b3Ugd2FudCB0byBrZWVwLiIsInByZXBUaXRsZSI6IlByZXBhcmF0aW9uIFRpbWUiLCJyZWNUaXRsZSI6IlJlY29yZGluZyIsInN0YXJ0UHJlcCI6Ilx1MjViNiBTdGFydCBwcmVwYXJhdGlvbiIsInNraXBQcmVwIjoiU2tpcCBcdTIwMTQgcmVjb3JkIG5vdyBcdTAwYmIiLCJzdG9wUmVjIjoiXHUyNWEwIFN0b3AgcmVjb3JkaW5nIiwicmVjb3JkZWQiOiJSZWNvcmRlZCIsInJlUmVjb3JkIjoiXHUyMWJiIFJlY29yZCBhZ2FpbiIsImRvd25sb2FkIjoiXHUyYjA3IERvd25sb2FkIiwidGltZXJPbmx5IjoiVGltZXItb25seSBtb2RlIChub3QgcmVjb3JkaW5nKSIsInNwZWFrTm93IjoiU1BFQUsgTk9XIFx1MjAxNCByZWNvcmRpbmcgc3RvcHMgYXV0b21hdGljYWxseSB3aGVuIHRpbWUgaXMgdXAiLCJuZXh0IjoiTkVYVCIsImNob29zZUhpbnQiOiJDbGljayB0byBjaG9vc2Ugb25lIG9wdGlvbiBcdTIwMTQgaWYgdGhlIDYwIHNlY29uZHMgcnVuIG91dCwgdGhlIHN5c3RlbSBjaG9vc2VzIGZvciB5b3UiLCJjb25maXJtQ2hvaWNlIjoiQ29uZmlybSBjaG9pY2UgJiBjb250aW51ZSBcdTAwYmIiLCJ5b3VyQ2hvaWNlIjoiWW91ciBDaG9pY2UiLCJ0aXBzVG9nZ2xlIjoiXHVkODNkXHVkY2ExIFRpcHMgJiBzYW1wbGUgYW5zd2VycyAob3BlbiBhZnRlciB5b3UgZmluaXNoIHNwZWFraW5nKSIsInRhYlRpcHMiOiJPdXRsaW5lICYgcGhyYXNlcyIsInRhYlM2IjoiU2FtcGxlIENMQiA2IiwidGFiUzkiOiJTYW1wbGUgQ0xCIDkiLCJ0YWJSdWJyaWMiOiJTZWxmLWFzc2Vzc21lbnQiLCJydWJyaWNOb3RlIjoiTGlzdGVuIHRvIHlvdXIgcmVjb3JkaW5nLCB0aGVuIHJhdGUgeW91cnNlbGYgMVx1MjAxMzUgb24gZWFjaCBjcml0ZXJpb24gKHRoZSA0IG9mZmljaWFsIENFTFBJUCByYXRpbmcgZGltZW5zaW9ucyk6IiwicnVicmljQ3JpdCI6WyJDb250ZW50ICYgQ29oZXJlbmNlIFx1MjAxNCBjb21wbGV0ZSBpZGVhcywgbG9naWNhbCBmbG93IiwiVm9jYWJ1bGFyeSBcdTIwMTQgcmFuZ2UgYW5kIHByZWNpc2lvbiIsIkxpc3RlbmFiaWxpdHkgXHUyMDE0IHByb251bmNpYXRpb24sIGludG9uYXRpb24sIGZsdWVuY3kiLCJUYXNrIEZ1bGZpbGxtZW50IFx1MjAxNCBhZGRyZXNzZXMgdGhlIHRhc2ssIGFwcHJvcHJpYXRlIGxlbmd0aCJdLCJlc3RpbWF0ZSI6IkVzdGltYXRlZCBsZXZlbCAoZm9yIHJlZmVyZW5jZSk6IiwiZXN0RGlzY2xhaW1lciI6IlNlbGYtYXNzZXNzbWVudCBpcyBhIHJvdWdoIGd1aWRlIG9ubHkgXHUyMDE0IGl0IGRvZXMgbm90IHJlcGxhY2UgYW4gb2ZmaWNpYWwgc2NvcmUuIiwidXNlZnVsUGhyYXNlcyI6IlVzZWZ1bCBwaHJhc2VzIiwiZW5kVGl0bGUiOiJTcGVha2luZyB0ZXN0IGNvbXBsZXRlISIsImVuZFN1YiI6IlJlcGxheSBlYWNoIHRhc2ssIGNvbXBhcmUgeW91ciBhbnN3ZXJzIHdpdGggdGhlIENMQiA2IC8gQ0xCIDkgc2FtcGxlcywgdGhlbiByYXRlIHlvdXJzZWxmLiIsImVuZE5vUmVjIjoibm90IHJlY29yZGVkIiwiZW5kUmVkbyI6Ilx1MjFiYiBTdGFydCBvdmVyIiwiZW5kVDIiOiJDb250aW51ZSB0byBQcmFjdGljZSBUZXN0IiwiZW5kSHViIjoiXHUyMTkwIEJhY2sgdG8gQ0VMUElQIEh1YiIsIndhcm11cEJhZGdlIjoiV2FybS11cCBcdTIwMTQgbm90IHNjb3JlZCIsImludHJvTm90ZXMiOlsiQW4gYWNjdXJhdGUgc2ltdWxhdGlvbiBvZiB0aGUgcmVhbCBDRUxQSVAgR2VuZXJhbCBTcGVha2luZyB0ZXN0OiAxIHByYWN0aWNlICh3YXJtLXVwKSB0YXNrICsgOCBzY29yZWQgdGFza3MsIGFib3V0IDIwIG1pbnV0ZXMgaW4gdG90YWwuIiwiRWFjaCB0YXNrOiByZWFkIHRoZSBwcm9tcHQgXHUyMTkyIDxiPlByZXBhcmF0aW9uPC9iPiBjb3VudGRvd24gXHUyMTkyIHN3aXRjaGVzIGF1dG9tYXRpY2FsbHkgdG8gPGI+UmVjb3JkaW5nPC9iPiAod2l0aCBhIGJlZXApIFx1MjE5MiBzdG9wcyB3aGVuIHRpbWUgaXMgdXAuIiwiT24gdGhlIHJlYWwgdGVzdCB5b3UgY2Fubm90IGdvIGJhY2sgdG8gYSBwcmV2aW91cyB0YXNrLiBJbiBwcmFjdGljZSBtb2RlLCB5b3UgY2FuIGNsaWNrIHRoZSBudW1iZXJlZCBjaGlwcyBhYm92ZSB0byByZXZpc2l0IGFueSB0YXNrLiIsIkFmdGVyIHNwZWFraW5nIG9uIGVhY2ggdGFzaywgb3BlbiA8Yj5UaXBzICYgc2FtcGxlIGFuc3dlcnM8L2I+IHRvIGNvbXBhcmUgeW91ciByZXNwb25zZSB3aXRoIHRoZSBDTEIgNiBhbmQgQ0xCIDkgc2FtcGxlcy4iXSwiaGVyb1RhZyI6IkNFTFBJUCBHZW5lcmFsIFx1MjAxNCBTcGVha2luZyIsImhlcm9NZXRhIjpbIjggdGFza3MgKyB3YXJtLXVwIiwifjIwIG1pbnV0ZXMiLCJSZWNvcmQgJiByZXBsYXkiLCJDTEIgNiAvIENMQiA5IHNhbXBsZXMiXX19OwovKiBDRUxQSVAgU3BlYWtpbmcgRW5naW5lIHYxLjAgLSBBbGxFbmdsaXNoNFUgLSB2YW5pbGxhIEpTLCBwcmVmaXggY2xwLXNwayAqLwooZnVuY3Rpb24oKXsKInVzZSBzdHJpY3QiOwp2YXIgRCA9IHdpbmRvdy5DTFBTUEtfREFUQSwgVSA9IEQudWk7CnZhciByb290ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNscC1zcGstcm9vdCIpOwppZighcm9vdCkgcmV0dXJuOwoKLyogLS0tLS0tLS0tLSBzdHlsZSAtLS0tLS0tLS0tICovCnZhciBDU1MgPSAiIisKIi5jbHAtc3BrLXdyYXB7bWF4LXdpZHRoOjExNDBweDttYXJnaW46MCBhdXRvO3BhZGRpbmc6MCAxNHB4IDYwcHg7Zm9udC1mYW1pbHk6LWFwcGxlLXN5c3RlbSxCbGlua01hY1N5c3RlbUZvbnQsJ1NlZ29lIFVJJyxSb2JvdG8sQXJpYWwsc2Fucy1zZXJpZjtjb2xvcjojMjMyNzJkOy13ZWJraXQtZm9udC1zbW9vdGhpbmc6YW50aWFsaWFzZWR9IisKIi5jbHAtc3BrLXdyYXAgKntib3gtc2l6aW5nOmJvcmRlci1ib3h9IisKIi5jbHAtc3BrLWhlcm97YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCM3ZjFkMWQgMCUsI2I5MWMxYyA1NSUsI2RjMjYyNiAxMDAlKTtib3JkZXItcmFkaXVzOjE4cHg7Y29sb3I6I2ZmZjtwYWRkaW5nOjMwcHggMzBweCAyNnB4O21hcmdpbjoxOHB4IDAgMjBweDtwb3NpdGlvbjpyZWxhdGl2ZTtvdmVyZmxvdzpoaWRkZW59IisKIi5jbHAtc3BrLWhlcm86YWZ0ZXJ7Y29udGVudDonJztwb3NpdGlvbjphYnNvbHV0ZTtyaWdodDotNjBweDt0b3A6LTYwcHg7d2lkdGg6MjIwcHg7aGVpZ2h0OjIyMHB4O2JvcmRlci1yYWRpdXM6NTAlO2JhY2tncm91bmQ6cmdiYSgyNTUsMjU1LDI1NSwuMDgpfSIrCiIuY2xwLXNway1oZXJvIC50YWd7ZGlzcGxheTppbmxpbmUtYmxvY2s7YmFja2dyb3VuZDpyZ2JhKDI1NSwyNTUsMjU1LC4xNik7Ym9yZGVyOjFweCBzb2xpZCByZ2JhKDI1NSwyNTUsMjU1LC4zNSk7cGFkZGluZzozcHggMTJweDtib3JkZXItcmFkaXVzOjk5OXB4O2ZvbnQtc2l6ZToxMi41cHg7bGV0dGVyLXNwYWNpbmc6LjZweDtmb250LXdlaWdodDo2MDB9IisKIi5jbHAtc3BrLWhlcm8gaDF7bWFyZ2luOjEwcHggMCA2cHg7Zm9udC1zaXplOjI3cHg7bGluZS1oZWlnaHQ6MS4yNTtjb2xvcjojZmZmfSIrCiIuY2xwLXNway1oZXJvIC5tZXRhe2Rpc3BsYXk6ZmxleDtmbGV4LXdyYXA6d3JhcDtnYXA6OHB4O21hcmdpbi10b3A6MTJweH0iKwoiLmNscC1zcGstaGVybyAubWV0YSBzcGFue2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMjIpO3BhZGRpbmc6NHB4IDEycHg7Ym9yZGVyLXJhZGl1czo5OTlweDtmb250LXNpemU6MTIuNXB4fSIrCiIuY2xwLXNway1jaGlwc3tkaXNwbGF5OmZsZXg7ZmxleC13cmFwOndyYXA7Z2FwOjdweDttYXJnaW46MCAwIDE0cHh9IisKIi5jbHAtc3BrLWNoaXB7bWluLXdpZHRoOjM4cHg7aGVpZ2h0OjM0cHg7Ym9yZGVyLXJhZGl1czo5cHg7Ym9yZGVyOjEuNXB4IHNvbGlkICNkM2Q4ZGY7YmFja2dyb3VuZDojZmZmO2ZvbnQtd2VpZ2h0OjcwMDtmb250LXNpemU6MTMuNXB4O2NvbG9yOiM1YjY1NzI7Y3Vyc29yOnBvaW50ZXI7cGFkZGluZzowIDEwcHh9IisKIi5jbHAtc3BrLWNoaXAuY3Vye2JhY2tncm91bmQ6IzBiNTdkMDtib3JkZXItY29sb3I6IzBiNTdkMDtjb2xvcjojZmZmfSIrCiIuY2xwLXNway1jaGlwLmRvbmV7YmFja2dyb3VuZDojZTZmNGVhO2JvcmRlci1jb2xvcjojN2JjMzk0O2NvbG9yOiMxZTdiM2V9IisKIi5jbHAtc3BrLXBhbmVse2JhY2tncm91bmQ6I2ZmZjtib3JkZXI6MXB4IHNvbGlkICNkOWRkZTM7Ym9yZGVyLXJhZGl1czoxMnB4O292ZXJmbG93OmhpZGRlbjtib3gtc2hhZG93OjAgMnB4IDEwcHggcmdiYSgzMCw0MCw2MCwuMDYpfSIrCiIuY2xwLXNway1iYXJ7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6MTBweDtiYWNrZ3JvdW5kOiNlY2VjZWU7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgI2Q1ZDVkODtwYWRkaW5nOjlweCAxNHB4O2ZsZXgtd3JhcDp3cmFwfSIrCiIuY2xwLXNway1iYXIgLnR7Zm9udC13ZWlnaHQ6NzAwO2ZvbnQtc2l6ZToxNC41cHg7Y29sb3I6IzNjNDA0Nn0iKwoiLmNscC1zcGstYmFyIC5te21hcmdpbi1sZWZ0OmF1dG87Zm9udC1zaXplOjEyLjVweDtjb2xvcjojNTU1O3doaXRlLXNwYWNlOm5vd3JhcH0iKwoiLmNscC1zcGstYmFyIC5tIGJ7Y29sb3I6IzIzMjcyZH0iKwoiLmNscC1zcGstbmV4dHtiYWNrZ3JvdW5kOiMxNDY3YzY7Y29sb3I6I2ZmZjtib3JkZXI6MDtib3JkZXItcmFkaXVzOjRweDtmb250LXdlaWdodDo3MDA7Zm9udC1zaXplOjEyLjVweDtsZXR0ZXItc3BhY2luZzouOHB4O3BhZGRpbmc6N3B4IDE4cHg7Y3Vyc29yOnBvaW50ZXJ9IisKIi5jbHAtc3BrLW5leHQ6aG92ZXJ7YmFja2dyb3VuZDojMGY1N2FifSIrCiIuY2xwLXNway1ib2R5e3BhZGRpbmc6MThweCAyMHB4IDIycHh9IisKIi5jbHAtc3BrLXByb21wdHtkaXNwbGF5OmZsZXg7Z2FwOjlweDtjb2xvcjojMGI1Mzk0O2ZvbnQtd2VpZ2h0OjYwMDtmb250LXNpemU6MTUuNXB4O2xpbmUtaGVpZ2h0OjEuNX0iKwoiLmNscC1zcGstcHJvbXB0IC5pe2ZsZXg6MCAwIGF1dG87d2lkdGg6MjBweDtoZWlnaHQ6MjBweDtib3JkZXItcmFkaXVzOjUwJTtiYWNrZ3JvdW5kOiMyYzdjYjA7Y29sb3I6I2ZmZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo4MDA7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO21hcmdpbi10b3A6MnB4fSIrCiIuY2xwLXNway1sZWFke2NvbG9yOiMwYjUzOTQ7Zm9udC13ZWlnaHQ6NzAwO21hcmdpbi1ib3R0b206NHB4fSIrCiIuY2xwLXNway1jaG9vc2Uxe21hcmdpbjoxNHB4IDAgMDtwYWRkaW5nOjEycHggMTZweDtiYWNrZ3JvdW5kOiNmNWY3ZmE7Ym9yZGVyOjFweCBzb2xpZCAjZGZlNGVhO2JvcmRlci1yYWRpdXM6OXB4O2ZvbnQtc2l6ZToxNC41cHg7bGluZS1oZWlnaHQ6MS41NX0iKwoiLmNscC1zcGstY2hvb3NlMSAuZXtmb250LXdlaWdodDo4MDA7Y29sb3I6IzhhMWYxZjtsZXR0ZXItc3BhY2luZzouNHB4fSIrCiIuY2xwLXNway1pbWd7ZGlzcGxheTpibG9jazttYXgtd2lkdGg6NTQwcHg7d2lkdGg6MTAwJTtib3JkZXI6MXB4IHNvbGlkICNjZmQ0ZGE7Ym9yZGVyLXJhZGl1czo4cHg7bWFyZ2luOjE2cHggMCA0cHh9IisKIi5jbHAtc3BrLW5vdGV7Zm9udC1zaXplOjEycHg7Y29sb3I6IzhhOTI5YzttYXJnaW4tdG9wOjZweH0iKwoiLmNscC1zcGstdGltZXJyb3d7ZGlzcGxheTpmbGV4O2p1c3RpZnktY29udGVudDpjZW50ZXI7bWFyZ2luOjIwcHggMCA2cHh9IisKIi5jbHAtc3BrLXRpbWVye2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjE2cHg7YmFja2dyb3VuZDojZTllY2VmO2JvcmRlcjoxcHggc29saWQgI2Q2ZGFkZTtib3JkZXItcmFkaXVzOjEwcHg7cGFkZGluZzoxNnB4IDI2cHg7bWluLXdpZHRoOjMwMHB4O2p1c3RpZnktY29udGVudDpjZW50ZXJ9IisKIi5jbHAtc3BrLXRpbWVyIC5pY3t3aWR0aDo0NHB4O2hlaWdodDo0NHB4O2JvcmRlci1yYWRpdXM6OHB4O2JhY2tncm91bmQ6I2Y4ZjlmYTtib3JkZXI6MXB4IHNvbGlkICNkNmRhZGU7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2ZvbnQtc2l6ZToyMnB4fSIrCiIuY2xwLXNway10aW1lciAubGJ7Zm9udC13ZWlnaHQ6NzAwO2NvbG9yOiMzMzM4M2Y7Zm9udC1zaXplOjE1cHh9IisKIi5jbHAtc3BrLXRpbWVyIC5ue2ZvbnQtc2l6ZToyNnB4O2ZvbnQtd2VpZ2h0OjgwMDtjb2xvcjojMGI1N2QwO2ZvbnQtdmFyaWFudC1udW1lcmljOnRhYnVsYXItbnVtczttaW4td2lkdGg6NTJweDt0ZXh0LWFsaWduOmNlbnRlcn0iKwoiLmNscC1zcGstdGltZXIucmVje2JhY2tncm91bmQ6I2ZkZWNlYjtib3JkZXItY29sb3I6I2YzYjZiM30iKwoiLmNscC1zcGstdGltZXIucmVjIC5ue2NvbG9yOiNjNjI4Mjh9IisKIi5jbHAtc3BrLXRpbWVyLnJlYyAuaWN7YmFja2dyb3VuZDojZmZmO2JvcmRlci1jb2xvcjojZjNiNmIzfSIrCiIuY2xwLXNway1kb3R7d2lkdGg6MTRweDtoZWlnaHQ6MTRweDtib3JkZXItcmFkaXVzOjUwJTtiYWNrZ3JvdW5kOiNlNTM5MzU7ZGlzcGxheTppbmxpbmUtYmxvY2s7YW5pbWF0aW9uOmNscGJsaW5rIDFzIGluZmluaXRlfSIrCiJAa2V5ZnJhbWVzIGNscGJsaW5rezAlLDEwMCV7b3BhY2l0eToxfTUwJXtvcGFjaXR5Oi4yNX19IisKIi5jbHAtc3BrLWN0cntkaXNwbGF5OmZsZXg7Z2FwOjEwcHg7anVzdGlmeS1jb250ZW50OmNlbnRlcjtmbGV4LXdyYXA6d3JhcDttYXJnaW46MTRweCAwIDJweH0iKwoiLmNscC1zcGstYnRue2JvcmRlcjoxLjVweCBzb2xpZCAjYzljZmQ2O2JhY2tncm91bmQ6I2ZmZjtjb2xvcjojMzMzODNmO2JvcmRlci1yYWRpdXM6OXB4O3BhZGRpbmc6OXB4IDE4cHg7Zm9udC13ZWlnaHQ6NzAwO2ZvbnQtc2l6ZToxMy41cHg7Y3Vyc29yOnBvaW50ZXJ9IisKIi5jbHAtc3BrLWJ0bjpob3Zlcntib3JkZXItY29sb3I6IzlhYTNhZH0iKwoiLmNscC1zcGstYnRuLnByaXtiYWNrZ3JvdW5kOiMwYjU3ZDA7Ym9yZGVyLWNvbG9yOiMwYjU3ZDA7Y29sb3I6I2ZmZn0iKwoiLmNscC1zcGstYnRuLnByaTpob3ZlcntiYWNrZ3JvdW5kOiMwYTRjYjV9IisKIi5jbHAtc3BrLWJ0bi53YXJue2JhY2tncm91bmQ6I2M2MjgyODtib3JkZXItY29sb3I6I2M2MjgyODtjb2xvcjojZmZmfSIrCiIuY2xwLXNway1zcGVha25vd3t0ZXh0LWFsaWduOmNlbnRlcjtjb2xvcjojYzYyODI4O2ZvbnQtd2VpZ2h0OjcwMDtmb250LXNpemU6MTNweDttYXJnaW4tdG9wOjhweDtsZXR0ZXItc3BhY2luZzouM3B4fSIrCiIuY2xwLXNway1yZXZpZXd7bWFyZ2luOjE2cHggYXV0byAwO21heC13aWR0aDo2NDBweDtiYWNrZ3JvdW5kOiNmMmY5ZjM7Ym9yZGVyOjFweCBzb2xpZCAjYmZlM2M2O2JvcmRlci1yYWRpdXM6MTBweDtwYWRkaW5nOjE0cHggMThweH0iKwoiLmNscC1zcGstcmV2aWV3IC5va3tjb2xvcjojMWU3YjNlO2ZvbnQtd2VpZ2h0OjgwMDtmb250LXNpemU6MTQuNXB4fSIrCiIuY2xwLXNway1yZXZpZXcgYXVkaW97d2lkdGg6MTAwJTttYXJnaW46MTBweCAwIDhweH0iKwoiLmNscC1zcGstbWlje21hcmdpbjoxMnB4IGF1dG8gMDttYXgtd2lkdGg6NjQwcHg7YmFja2dyb3VuZDojZmZmOGU2O2JvcmRlcjoxcHggc29saWQgI2VjZDlhMDtib3JkZXItcmFkaXVzOjEwcHg7cGFkZGluZzoxMHB4IDE2cHg7Zm9udC1zaXplOjEzcHg7Y29sb3I6IzdhNWIxMn0iKwoiLmNscC1zcGstb3B0c3tkaXNwbGF5OmdyaWQ7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOjFmciAxZnI7Z2FwOjE2cHg7bWFyZ2luOjE4cHggMCA0cHh9IisKIi5jbHAtc3BrLWNhcmR7Ym9yZGVyOjJweCBzb2xpZCAjZDVkYWUwO2JvcmRlci1yYWRpdXM6MTFweDtwYWRkaW5nOjEzcHggMTVweCAxNXB4O2N1cnNvcjpwb2ludGVyO2JhY2tncm91bmQ6I2ZmZjt0cmFuc2l0aW9uOmJvcmRlci1jb2xvciAuMTVzfSIrCiIuY2xwLXNway1jYXJkOmhvdmVye2JvcmRlci1jb2xvcjojOGZiNGU4fSIrCiIuY2xwLXNway1jYXJkLnNlbHtib3JkZXItY29sb3I6IzJlOWU0ZjtiYWNrZ3JvdW5kOiNlZWY5ZjB9IisKIi5jbHAtc3BrLWNhcmQucGxhaW57Y3Vyc29yOmRlZmF1bHR9IisKIi5jbHAtc3BrLWNhcmQgLmhke3RleHQtYWxpZ246Y2VudGVyO2ZvbnQtc2l6ZToxMi41cHg7Zm9udC13ZWlnaHQ6NzAwO2NvbG9yOiM2Yjc0ODA7bGV0dGVyLXNwYWNpbmc6LjNweDttYXJnaW4tYm90dG9tOjhweH0iKwoiLmNscC1zcGstY2FyZCBpbWd7d2lkdGg6MTAwJTtib3JkZXItcmFkaXVzOjdweDtib3JkZXI6MXB4IHNvbGlkICNlMmU2ZWF9IisKIi5jbHAtc3BrLWNhcmQgLnR0e2ZvbnQtd2VpZ2h0OjgwMDtmb250LXNpemU6MTVweDttYXJnaW46MTBweCAwIDZweDtjb2xvcjojMjMyNzJkfSIrCiIuY2xwLXNway1jYXJkIHVse21hcmdpbjowO3BhZGRpbmctbGVmdDoxOHB4O2ZvbnQtc2l6ZToxMy41cHg7bGluZS1oZWlnaHQ6MS41NTtjb2xvcjojM2M0MzRifSIrCiIuY2xwLXNway1jYXJkIC5waWNre21hcmdpbi10b3A6MTBweDt0ZXh0LWFsaWduOmNlbnRlcjtmb250LXdlaWdodDo4MDA7Y29sb3I6IzJlOWU0Zjtmb250LXNpemU6MTNweDttaW4taGVpZ2h0OjE4cHh9IisKIi5jbHAtc3BrLWhpbnR7dGV4dC1hbGlnbjpjZW50ZXI7Y29sb3I6IzZiNzQ4MDtmb250LXNpemU6MTNweDttYXJnaW4tdG9wOjEwcHh9IisKIi5jbHAtc3BrLWFjY3ttYXJnaW4tdG9wOjIycHg7Ym9yZGVyOjFweCBzb2xpZCAjZDlkZGUzO2JvcmRlci1yYWRpdXM6MTFweDtvdmVyZmxvdzpoaWRkZW59IisKIi5jbHAtc3BrLWFjYz5idXR0b257d2lkdGg6MTAwJTt0ZXh0LWFsaWduOmxlZnQ7YmFja2dyb3VuZDojZjZmN2Y5O2JvcmRlcjowO3BhZGRpbmc6MTJweCAxNnB4O2ZvbnQtd2VpZ2h0OjgwMDtmb250LXNpemU6MTRweDtjb2xvcjojM2M0MDQ2O2N1cnNvcjpwb2ludGVyfSIrCiIuY2xwLXNway1hY2Nib2R5e2Rpc3BsYXk6bm9uZTtwYWRkaW5nOjE0cHggMTZweCAxOHB4O2JhY2tncm91bmQ6I2ZmZn0iKwoiLmNscC1zcGstYWNjLm9wZW4gLmNscC1zcGstYWNjYm9keXtkaXNwbGF5OmJsb2NrfSIrCiIuY2xwLXNway10YWJze2Rpc3BsYXk6ZmxleDtnYXA6NnB4O2ZsZXgtd3JhcDp3cmFwO21hcmdpbi1ib3R0b206MTJweH0iKwoiLmNscC1zcGstdGFie2JvcmRlcjoxLjVweCBzb2xpZCAjYzljZmQ2O2JhY2tncm91bmQ6I2ZmZjtib3JkZXItcmFkaXVzOjk5OXB4O3BhZGRpbmc6NnB4IDE1cHg7Zm9udC13ZWlnaHQ6NzAwO2ZvbnQtc2l6ZToxMi41cHg7Y3Vyc29yOnBvaW50ZXI7Y29sb3I6IzRhNTI1Y30iKwoiLmNscC1zcGstdGFiLm9ue2JhY2tncm91bmQ6IzBiNTdkMDtib3JkZXItY29sb3I6IzBiNTdkMDtjb2xvcjojZmZmfSIrCiIuY2xwLXNway10YWJwYW5le2Rpc3BsYXk6bm9uZTtmb250LXNpemU6MTQuNXB4O2xpbmUtaGVpZ2h0OjEuNjV9IisKIi5jbHAtc3BrLXRhYnBhbmUub257ZGlzcGxheTpibG9ja30iKwoiLmNscC1zcGstdGFicGFuZSB1bHtwYWRkaW5nLWxlZnQ6MjBweDttYXJnaW46OHB4IDB9IisKIi5jbHAtc3BrLXRhYnBhbmUgbGl7bWFyZ2luOjVweCAwfSIrCiIuY2xwLXNway1zYW1wbGV7YmFja2dyb3VuZDojZjhmOWZiO2JvcmRlcjoxcHggc29saWQgI2UzZTdlYztib3JkZXItbGVmdDo0cHggc29saWQgIzBiNTdkMDtib3JkZXItcmFkaXVzOjhweDtwYWRkaW5nOjEzcHggMTZweDt3aGl0ZS1zcGFjZTpwcmUtd3JhcH0iKwoiLmNscC1zcGstc2FtcGxlLnM2e2JvcmRlci1sZWZ0LWNvbG9yOiNlOGExM2N9IisKIi5jbHAtc3BrLXBocntkaXNwbGF5OmZsZXg7ZmxleC13cmFwOndyYXA7Z2FwOjdweDttYXJnaW4tdG9wOjEwcHh9IisKIi5jbHAtc3BrLXBociBzcGFue2JhY2tncm91bmQ6I2VlZjNmYjtib3JkZXI6MXB4IHNvbGlkICNjZGRkZjU7Y29sb3I6IzE3NGE5Yztib3JkZXItcmFkaXVzOjk5OXB4O3BhZGRpbmc6NHB4IDEycHg7Zm9udC1zaXplOjEyLjVweDtmb250LXdlaWdodDo2MDB9IisKIi5jbHAtc3BrLXJ1Yntib3JkZXItY29sbGFwc2U6Y29sbGFwc2U7d2lkdGg6MTAwJTtmb250LXNpemU6MTMuNXB4fSIrCiIuY2xwLXNway1ydWIgdGR7cGFkZGluZzo3cHggNnB4O2JvcmRlci1ib3R0b206MXB4IHNvbGlkICNlZWYwZjN9IisKIi5jbHAtc3BrLXN0YXJ7Y3Vyc29yOnBvaW50ZXI7Zm9udC1zaXplOjE5cHg7Y29sb3I6I2M5Y2ZkNjtwYWRkaW5nOjAgMXB4O3VzZXItc2VsZWN0Om5vbmV9IisKIi5jbHAtc3BrLXN0YXIub257Y29sb3I6I2YwYTcxYn0iKwoiLmNscC1zcGstZXN0e21hcmdpbi10b3A6MTBweDtmb250LXdlaWdodDo3MDA7Y29sb3I6IzFlN2IzZX0iKwoiLmNscC1zcGstYmFkZ2V7ZGlzcGxheTppbmxpbmUtYmxvY2s7YmFja2dyb3VuZDojZmZmM2NkO2JvcmRlcjoxcHggc29saWQgI2U4ZDQ4Yjtjb2xvcjojN2E1YjEyO2JvcmRlci1yYWRpdXM6OTk5cHg7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NzAwO3BhZGRpbmc6M3B4IDEycHg7bWFyZ2luLWJvdHRvbToxMHB4fSIrCiIuY2xwLXNway1pbnRybyB1bHtmb250LXNpemU6MTQuNXB4O2xpbmUtaGVpZ2h0OjEuNztwYWRkaW5nLWxlZnQ6MjBweH0iKwoiLmNscC1zcGstaW50cm8gbGl7bWFyZ2luOjdweCAwfSIrCiIuY2xwLXNway1taWNyb3d7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6MTJweDtmbGV4LXdyYXA6d3JhcDtiYWNrZ3JvdW5kOiNmNmY3Zjk7Ym9yZGVyOjFweCBzb2xpZCAjZTBlNGU5O2JvcmRlci1yYWRpdXM6MTBweDtwYWRkaW5nOjEzcHggMTZweDttYXJnaW46MTZweCAwfSIrCiIuY2xwLXNway1taWNzdHtmb250LXdlaWdodDo3MDA7Zm9udC1zaXplOjEzLjVweH0iKwoiLmNscC1zcGstbWljc3Qub2t7Y29sb3I6IzFlN2IzZX0uY2xwLXNway1taWNzdC5iYWR7Y29sb3I6I2M2MjgyOH0iKwoiLmNscC1zcGstZW5kIHRhYmxle2JvcmRlci1jb2xsYXBzZTpjb2xsYXBzZTt3aWR0aDoxMDAlO2ZvbnQtc2l6ZToxNHB4fSIrCiIuY2xwLXNway1lbmQgdGQsLmNscC1zcGstZW5kIHRoe3BhZGRpbmc6OXB4IDhweDtib3JkZXItYm90dG9tOjFweCBzb2xpZCAjZWNlZmYyO3RleHQtYWxpZ246bGVmdH0iKwoiLmNscC1zcGstZW5kIGF1ZGlve2hlaWdodDozNHB4O21heC13aWR0aDoyMzBweH0iKwoiQG1lZGlhKG1heC13aWR0aDo3MDBweCl7LmNscC1zcGstb3B0c3tncmlkLXRlbXBsYXRlLWNvbHVtbnM6MWZyfS5jbHAtc3BrLWJhciAubXtvcmRlcjozO21hcmdpbi1sZWZ0OjA7d2lkdGg6MTAwJX0uY2xwLXNway1oZXJvIGgxe2ZvbnQtc2l6ZToyMnB4fS5jbHAtc3BrLWJvZHl7cGFkZGluZzoxNHB4IDEycHggMThweH19IjsKdmFyIHN0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3R5bGUiKTsgc3QudGV4dENvbnRlbnQgPSBDU1M7IGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQoc3QpOwoKLyogLS0tLS0tLS0tLSBzdGF0ZSAtLS0tLS0tLS0tICovCnZhciBTID0gewogIGN1cjogLTEsICAgICAgICAgICAgLyogLTEgaW50cm8sIDAuLjggdGFza3MsIDk5IGVuZCAqLwogIG1pY1N0YXRlOiAiaWRsZSIsICAgLyogaWRsZXxva3xiYWQgKi8KICBzdHJlYW06IG51bGwsIHJlY29yZGVyOiBudWxsLCBjaHVua3M6IFtdLAogIHRpbWVyOiBudWxsLCBwaGFzZToge30sIHQ1Y2hvaWNlOiB7fSwgcmVjczoge30sIHJ1YnJpYzoge30sCiAgbWltZTogIiIsIGV4dDogIndlYm0iCn07CkQudGFza3MuZm9yRWFjaChmdW5jdGlvbih0KXsgUy5waGFzZVt0LmtdID0gdC5waGFzZWQgPyAiY2hvb3NlLWlkbGUiIDogImlkbGUiOyB9KTsKCmZ1bmN0aW9uIHBpY2tNaW1lKCl7CiAgaWYoIXdpbmRvdy5NZWRpYVJlY29yZGVyKSByZXR1cm4gbnVsbDsKICB2YXIgY2FuZHMgPSBbWyJhdWRpby93ZWJtO2NvZGVjcz1vcHVzIiwid2VibSJdLFsiYXVkaW8vd2VibSIsIndlYm0iXSxbImF1ZGlvL21wNCIsIm00YSJdLFsiYXVkaW8vb2dnO2NvZGVjcz1vcHVzIiwib2dnIl1dOwogIGZvcih2YXIgaT0wO2k8Y2FuZHMubGVuZ3RoO2krKyl7IHRyeXsgaWYoTWVkaWFSZWNvcmRlci5pc1R5cGVTdXBwb3J0ZWQoY2FuZHNbaV1bMF0pKSByZXR1cm4gY2FuZHNbaV07IH1jYXRjaChlKXt9IH0KICByZXR1cm4gWyIiLCJ3ZWJtIl07Cn0KZnVuY3Rpb24gZW5zdXJlTWljKGNiKXsKICBpZihTLm1pY1N0YXRlPT09Im9rIikgcmV0dXJuIGNiKHRydWUpOwogIGlmKFMubWljU3RhdGU9PT0iYmFkIikgcmV0dXJuIGNiKGZhbHNlKTsKICBpZighbmF2aWdhdG9yLm1lZGlhRGV2aWNlcyB8fCAhbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEgfHwgIXdpbmRvdy5NZWRpYVJlY29yZGVyKXsgUy5taWNTdGF0ZT0iYmFkIjsgcmV0dXJuIGNiKGZhbHNlKTsgfQogIG5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlhKHthdWRpbzp0cnVlfSkudGhlbihmdW5jdGlvbihzdHJlYW0pewogICAgUy5zdHJlYW0gPSBzdHJlYW07IHZhciBtID0gcGlja01pbWUoKTsgUy5taW1lID0gbVswXTsgUy5leHQgPSBtWzFdOyBTLm1pY1N0YXRlPSJvayI7IGNiKHRydWUpOwogIH0pLmNhdGNoKGZ1bmN0aW9uKCl7IFMubWljU3RhdGU9ImJhZCI7IGNiKGZhbHNlKTsgfSk7Cn0KZnVuY3Rpb24gYmVlcChuKXsKICB0cnl7CiAgICB2YXIgY3R4ID0gd2luZG93Ll9fY2xwQUMgPSB3aW5kb3cuX19jbHBBQyB8fCBuZXcgKHdpbmRvdy5BdWRpb0NvbnRleHR8fHdpbmRvdy53ZWJraXRBdWRpb0NvbnRleHQpKCk7CiAgICB2YXIgdDAgPSBjdHguY3VycmVudFRpbWU7CiAgICBmb3IodmFyIGk9MDtpPG47aSsrKXsKICAgICAgdmFyIG8gPSBjdHguY3JlYXRlT3NjaWxsYXRvcigpLCBnID0gY3R4LmNyZWF0ZUdhaW4oKTsKICAgICAgby5mcmVxdWVuY3kudmFsdWUgPSA4ODA7IG8uY29ubmVjdChnKTsgZy5jb25uZWN0KGN0eC5kZXN0aW5hdGlvbik7CiAgICAgIGcuZ2Fpbi5zZXRWYWx1ZUF0VGltZSgwLjAwMDEsdDAraSowLjI1KTsgZy5nYWluLmV4cG9uZW50aWFsUmFtcFRvVmFsdWVBdFRpbWUoMC4xOCx0MCtpKjAuMjUrMC4wMik7CiAgICAgIGcuZ2Fpbi5leHBvbmVudGlhbFJhbXBUb1ZhbHVlQXRUaW1lKDAuMDAwMSx0MCtpKjAuMjUrMC4xOCk7CiAgICAgIG8uc3RhcnQodDAraSowLjI1KTsgby5zdG9wKHQwK2kqMC4yNSswLjIpOwogICAgfQogIH1jYXRjaChlKXt9Cn0KZnVuY3Rpb24gc3RvcFRpbWVyKCl7IGlmKFMudGltZXIpeyBjbGVhckludGVydmFsKFMudGltZXIpOyBTLnRpbWVyPW51bGw7IH0gfQpmdW5jdGlvbiBjb3VudGRvd24oc2Vjcywgb25UaWNrLCBvbkVuZCl7CiAgc3RvcFRpbWVyKCk7CiAgdmFyIGVuZCA9IERhdGUubm93KCkgKyBzZWNzKjEwMDA7CiAgb25UaWNrKHNlY3MpOwogIFMudGltZXIgPSBzZXRJbnRlcnZhbChmdW5jdGlvbigpewogICAgdmFyIGxlZnQgPSBNYXRoLm1heCgwLCBNYXRoLnJvdW5kKChlbmQtRGF0ZS5ub3coKSkvMTAwMCkpOwogICAgb25UaWNrKGxlZnQpOwogICAgaWYobGVmdDw9MCl7IHN0b3BUaW1lcigpOyBvbkVuZCgpOyB9CiAgfSwgMjUwKTsKfQpmdW5jdGlvbiBzdG9wUmVjb3JkaW5nKCl7CiAgaWYoUy5yZWNvcmRlciAmJiBTLnJlY29yZGVyLnN0YXRlIT09ImluYWN0aXZlIil7IHRyeXsgUy5yZWNvcmRlci5zdG9wKCk7IH1jYXRjaChlKXt9IH0KICBTLnJlY29yZGVyID0gbnVsbDsKfQpmdW5jdGlvbiBsZWF2ZUNsZWFudXAoKXsgc3RvcFRpbWVyKCk7IHN0b3BSZWNvcmRpbmcoKTsgfQoKLyogLS0tLS0tLS0tLSBoZWxwZXJzIC0tLS0tLS0tLS0gKi8KZnVuY3Rpb24gZWwodGFnLCBjbHMsIGh0bWwpeyB2YXIgZT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KHRhZyk7IGlmKGNscyllLmNsYXNzTmFtZT1jbHM7IGlmKGh0bWwhPW51bGwpZS5pbm5lckhUTUw9aHRtbDsgcmV0dXJuIGU7IH0KZnVuY3Rpb24gZm10TWV0YSh0KXsKICBpZih0LnBoYXNlZCkgcmV0dXJuICIiOwogIHJldHVybiAiUHJlcGFyYXRpb246IDxiPiIrdC5wcmVwKyIgc2Vjb25kczwvYj4gJm5ic3A7UmVjb3JkaW5nOiA8Yj4iK3QucmVjKyIgc2Vjb25kczwvYj4iOwp9CmZ1bmN0aW9uIHRhc2tUaXRsZSh0KXsKICBpZih0Lndhcm11cCkgcmV0dXJuIEQuaGVhZGVyKyIgLSBTcGVha2luZyBQcmFjdGljZSBUYXNrIjsKICByZXR1cm4gRC5oZWFkZXIrIiAtIFNwZWFraW5nIFRhc2sgIit0Lm51bSsiOiAiK3QudHlwZUVuOwp9CmZ1bmN0aW9uIGVzdFRleHQoYXZnKXsKICBpZihhdmc+PTQuNSkgcmV0dXJuICJDTEIgOSsiOyBpZihhdmc+PTMuNSkgcmV0dXJuICJDTEIgN1x1MjAxMzgiOyBpZihhdmc+PTIuNSkgcmV0dXJuICJDTEIgNVx1MjAxMzYiOyByZXR1cm4gIkNMQiA0IG9yIGJlbG93IjsKfQoKLyogLS0tLS0tLS0tLSByZW5kZXIgLS0tLS0tLS0tLSAqLwpmdW5jdGlvbiByZW5kZXIoKXsKICBsZWF2ZUNsZWFudXAoKTsKICByb290LmlubmVySFRNTCA9ICIiOwogIHZhciB3cmFwID0gZWwoImRpdiIsImNscC1zcGstd3JhcCIpOwogIHdyYXAuYXBwZW5kQ2hpbGQoaGVybygpKTsKICBpZihTLmN1cj49MCAmJiBTLmN1cjxELnRhc2tzLmxlbmd0aCkgd3JhcC5hcHBlbmRDaGlsZChjaGlwcygpKTsKICBpZihTLmN1cj09PS0xKSB3cmFwLmFwcGVuZENoaWxkKGludHJvKCkpOwogIGVsc2UgaWYoUy5jdXI9PT05OSkgd3JhcC5hcHBlbmRDaGlsZChlbmRTY3JlZW4oKSk7CiAgZWxzZSB3cmFwLmFwcGVuZENoaWxkKHRhc2tQYW5lbChELnRhc2tzW1MuY3VyXSkpOwogIHJvb3QuYXBwZW5kQ2hpbGQod3JhcCk7CiAgdHJ5eyB3aW5kb3cuc2Nyb2xsVG8oe3RvcDogcm9vdC5vZmZzZXRUb3AtMTAsIGJlaGF2aW9yOiJzbW9vdGgifSk7IH1jYXRjaChlKXt9Cn0KZnVuY3Rpb24gaGVybygpewogIHZhciBoID0gZWwoImRpdiIsImNscC1zcGstaGVybyIpOwogIGguYXBwZW5kQ2hpbGQoZWwoInNwYW4iLCJ0YWciLFUuaGVyb1RhZykpOwogIGguYXBwZW5kQ2hpbGQoZWwoImgxIixudWxsLEQudGl0bGUuc3BsaXQoIlx1MjAxNCIpWzFdID8gIlNwZWFraW5nIFx1MjAxNCIrRC50aXRsZS5zcGxpdCgiXHUyMDE0IilbMV0gOiBELnRpdGxlKSk7CiAgdmFyIG0gPSBlbCgiZGl2IiwibWV0YSIpOwogIFUuaGVyb01ldGEuZm9yRWFjaChmdW5jdGlvbih4KXsgbS5hcHBlbmRDaGlsZChlbCgic3BhbiIsbnVsbCx4KSk7IH0pOwogIGguYXBwZW5kQ2hpbGQobSk7CiAgcmV0dXJuIGg7Cn0KZnVuY3Rpb24gY2hpcHMoKXsKICB2YXIgYyA9IGVsKCJkaXYiLCJjbHAtc3BrLWNoaXBzIik7CiAgRC50YXNrcy5mb3JFYWNoKGZ1bmN0aW9uKHQsaSl7CiAgICB2YXIgYiA9IGVsKCJidXR0b24iLCJjbHAtc3BrLWNoaXAiKyhpPT09Uy5jdXI\/IiBjdXIiOihTLnJlY3NbdC5rXT8iIGRvbmUiOiIiKSksIHQud2FybXVwPyJXIjpTdHJpbmcodC5udW0pKTsKICAgIGIudGl0bGUgPSB0LnR5cGVFbjsKICAgIGIub25jbGljayA9IGZ1bmN0aW9uKCl7IFMuY3VyPWk7IHJlbmRlcigpOyB9OwogICAgYy5hcHBlbmRDaGlsZChiKTsKICB9KTsKICB2YXIgZSA9IGVsKCJidXR0b24iLCJjbHAtc3BrLWNoaXAiKyhTLmN1cj09PTk5PyIgY3VyIjoiIiksIlx1ZDgzY1x1ZGZjMSIpOwogIGUudGl0bGUgPSAiRmluaXNoIjsgZS5vbmNsaWNrID0gZnVuY3Rpb24oKXsgUy5jdXI9OTk7IHJlbmRlcigpOyB9OwogIGMuYXBwZW5kQ2hpbGQoZSk7CiAgcmV0dXJuIGM7Cn0KZnVuY3Rpb24gaW50cm8oKXsKICB2YXIgcCA9IGVsKCJkaXYiLCJjbHAtc3BrLXBhbmVsIGNscC1zcGstaW50cm8iKTsKICB2YXIgYmFyID0gZWwoImRpdiIsImNscC1zcGstYmFyIik7CiAgYmFyLmFwcGVuZENoaWxkKGVsKCJzcGFuIiwidCIsRC5oZWFkZXIrIiAtIFNwZWFraW5nIikpOwogIHZhciBueCA9IGVsKCJidXR0b24iLCJjbHAtc3BrLW5leHQiLFUubmV4dCk7IG54LnN0eWxlLm1hcmdpbkxlZnQ9ImF1dG8iOwogIG54Lm9uY2xpY2sgPSBmdW5jdGlvbigpeyBTLmN1cj0wOyByZW5kZXIoKTsgfTsKICBiYXIuYXBwZW5kQ2hpbGQobngpOwogIHAuYXBwZW5kQ2hpbGQoYmFyKTsKICB2YXIgYiA9IGVsKCJkaXYiLCJjbHAtc3BrLWJvZHkiKTsKICB2YXIgcHIgPSBlbCgiZGl2IiwiY2xwLXNway1wcm9tcHQiKTsKICBwci5hcHBlbmRDaGlsZChlbCgic3BhbiIsImkiLCJpIikpOyBwci5hcHBlbmRDaGlsZChlbCgic3BhbiIsbnVsbCwiU3BlYWtpbmcgVGVzdCBJbnN0cnVjdGlvbnMiKSk7CiAgYi5hcHBlbmRDaGlsZChwcik7CiAgdmFyIHVsID0gZWwoInVsIik7CiAgVS5pbnRyb05vdGVzLmZvckVhY2goZnVuY3Rpb24oeCl7IHVsLmFwcGVuZENoaWxkKGVsKCJsaSIsbnVsbCx4KSk7IH0pOwogIGIuYXBwZW5kQ2hpbGQodWwpOwogIHZhciBtaWNyb3cgPSBlbCgiZGl2IiwiY2xwLXNway1taWNyb3ciKTsKICB2YXIgbWJ0biA9IGVsKCJidXR0b24iLCJjbHAtc3BrLWJ0biBwcmkiLFUubWljRW5hYmxlKTsKICB2YXIgbXN0ID0gZWwoInNwYW4iLCJjbHAtc3BrLW1pY3N0IiwiIik7CiAgbWJ0bi5vbmNsaWNrID0gZnVuY3Rpb24oKXsKICAgIG1idG4uZGlzYWJsZWQgPSB0cnVlOwogICAgZW5zdXJlTWljKGZ1bmN0aW9uKG9rKXsKICAgICAgbXN0LmNsYXNzTmFtZSA9ICJjbHAtc3BrLW1pY3N0ICIrKG9rPyJvayI6ImJhZCIpOwogICAgICBtc3QuaW5uZXJIVE1MID0gb2sgPyAiXHUyNzE0ICIrVS5taWNSZWFkeSA6ICJcdTI3MTYgIitVLm1pY0Jsb2NrZWQ7CiAgICAgIGlmKCFvaykgbWJ0bi5kaXNhYmxlZCA9IGZhbHNlOwogICAgfSk7CiAgfTsKICBtaWNyb3cuYXBwZW5kQ2hpbGQobWJ0bik7IG1pY3Jvdy5hcHBlbmRDaGlsZChtc3QpOwogIGIuYXBwZW5kQ2hpbGQobWljcm93KTsKICBiLmFwcGVuZENoaWxkKGVsKCJkaXYiLCJjbHAtc3BrLW5vdGUiLFUubWljTm90ZSkpOwogIHZhciBjdHIgPSBlbCgiZGl2IiwiY2xwLXNway1jdHIiKTsKICB2YXIgZ28gPSBlbCgiYnV0dG9uIiwiY2xwLXNway1idG4gcHJpIixVLnN0YXJ0VGVzdCsiIFx1MjViNiIpOwogIGdvLnN0eWxlLmZvbnRTaXplPSIxNXB4IjsgZ28uc3R5bGUucGFkZGluZz0iMTJweCAyNnB4IjsKICBnby5vbmNsaWNrID0gZnVuY3Rpb24oKXsgUy5jdXI9MDsgcmVuZGVyKCk7IH07CiAgY3RyLmFwcGVuZENoaWxkKGdvKTsKICBiLmFwcGVuZENoaWxkKGN0cik7CiAgcC5hcHBlbmRDaGlsZChiKTsKICByZXR1cm4gcDsKfQoKLyogLS0tLS0tLS0tLSB0YXNrIHBhbmVsIC0tLS0tLS0tLS0gKi8KZnVuY3Rpb24gdGFza1BhbmVsKHQpewogIHZhciBwID0gZWwoImRpdiIsImNscC1zcGstcGFuZWwiKTsKICB2YXIgYmFyID0gZWwoImRpdiIsImNscC1zcGstYmFyIik7CiAgYmFyLmFwcGVuZENoaWxkKGVsKCJzcGFuIiwidCIsdGFza1RpdGxlKHQpKSk7CiAgdmFyIG1ldGEgPSBlbCgic3BhbiIsIm0iLCB0LnBoYXNlZCA\/IHBoYXNlZE1ldGEodCkgOiBmbXRNZXRhKHQpKTsKICBiYXIuYXBwZW5kQ2hpbGQobWV0YSk7CiAgdmFyIG54ID0gZWwoImJ1dHRvbiIsImNscC1zcGstbmV4dCIsVS5uZXh0KTsKICBueC5vbmNsaWNrID0gZnVuY3Rpb24oKXsgUy5jdXIgPSAoUy5jdXIrMSA8IEQudGFza3MubGVuZ3RoKSA\/IFMuY3VyKzEgOiA5OTsgcmVuZGVyKCk7IH07CiAgYmFyLmFwcGVuZENoaWxkKG54KTsKICBwLmFwcGVuZENoaWxkKGJhcik7CiAgdmFyIGIgPSBlbCgiZGl2IiwiY2xwLXNway1ib2R5Iik7CiAgaWYodC53YXJtdXApIGIuYXBwZW5kQ2hpbGQoZWwoImRpdiIsImNscC1zcGstYmFkZ2UiLFUud2FybXVwQmFkZ2UpKTsKICBpZih0LnBoYXNlZCkgcmVuZGVyVDUodCxiLG1ldGEpOwogIGVsc2UgcmVuZGVyU3RkKHQsYik7CiAgaWYodC50aXBzKSBiLmFwcGVuZENoaWxkKGFjY29yZGlvbih0KSk7CiAgcC5hcHBlbmRDaGlsZChiKTsKICByZXR1cm4gcDsKfQpmdW5jdGlvbiBwaGFzZWRNZXRhKHQpewogIHZhciBwaCA9IFMucGhhc2VbdC5rXXx8IiI7CiAgaWYocGguaW5kZXhPZigiY2hvb3NlIik9PT0wKSByZXR1cm4gIlByZXBhcmF0aW9uOiA8Yj4iK3QuY2hvb3NlLnByZXArIiBzZWNvbmRzPC9iPiI7CiAgcmV0dXJuICJQcmVwYXJhdGlvbjogPGI+Iit0LnNwZWFrLnByZXArIiBzZWNvbmRzPC9iPiAmbmJzcDtSZWNvcmRpbmc6IDxiPiIrdC5zcGVhay5yZWMrIiBzZWNvbmRzPC9iPiI7Cn0KZnVuY3Rpb24gcHJvbXB0Um93KHRleHQsIGxlYWQpewogIHZhciBib3ggPSBlbCgiZGl2Iik7CiAgaWYobGVhZCl7IGJveC5hcHBlbmRDaGlsZChlbCgiZGl2IiwiY2xwLXNway1sZWFkIixsZWFkKSk7IH0KICB2YXIgcHIgPSBlbCgiZGl2IiwiY2xwLXNway1wcm9tcHQiKTsKICBwci5hcHBlbmRDaGlsZChlbCgic3BhbiIsImkiLCJpIikpOwogIHByLmFwcGVuZENoaWxkKGVsKCJzcGFuIixudWxsLHRleHQpKTsKICBib3guYXBwZW5kQ2hpbGQocHIpOwogIHJldHVybiBib3g7Cn0KZnVuY3Rpb24gcmVuZGVyU3RkKHQsYil7CiAgYi5hcHBlbmRDaGlsZChwcm9tcHRSb3codC5wcm9tcHQsIHQucHJvbXB0TGVhZCkpOwogIGlmKHQuY2hvb3NlT25lKXsKICAgIHZhciBjID0gZWwoImRpdiIsImNscC1zcGstY2hvb3NlMSIsIjxkaXYgY2xhc3M9J2UnPkNob29zZSBPTkU6PC9kaXY+PGRpdiBjbGFzcz0nZScgc3R5bGU9J21hcmdpbi10b3A6NnB4Jz5FSVRIRVI8L2Rpdj48ZGl2PiIrdC5jaG9vc2VPbmVbMF0rIjwvZGl2PjxkaXYgY2xhc3M9J2UnIHN0eWxlPSdtYXJnaW4tdG9wOjZweCc+T1I8L2Rpdj48ZGl2PiIrdC5jaG9vc2VPbmVbMV0rIjwvZGl2PiIpOwogICAgYi5hcHBlbmRDaGlsZChjKTsKICB9CiAgaWYodC5pbWcgJiYgRC5pbWdzW3QuaW1nXSl7CiAgICB2YXIgaW0gPSBlbCgiaW1nIiwiY2xwLXNway1pbWciKTsgaW0uc3JjID0gRC5pbWdzW3QuaW1nXTsgaW0uYWx0ID0gdC50eXBlRW47CiAgICBiLmFwcGVuZENoaWxkKGltKTsKICB9CiAgYi5hcHBlbmRDaGlsZCh0aW1lckJsb2NrKHQuaywgdC5wcmVwLCB0LnJlYywgInQiKSk7Cn0KZnVuY3Rpb24gcmVuZGVyVDUodCxiLG1ldGFFbCl7CiAgdmFyIHBoID0gUy5waGFzZVt0LmtdOwogIGlmKHBoLmluZGV4T2YoImNob29zZSIpPT09MCl7CiAgICBiLmFwcGVuZENoaWxkKHByb21wdFJvdyh0LmNob29zZS5zaXR1YXRpb24pKTsKICAgIGIuYXBwZW5kQ2hpbGQoZWwoImRpdiIsImNscC1zcGstbm90ZSIsdC5jaG9vc2Uubm90ZSkpOwogICAgdmFyIGdyaWQgPSBlbCgiZGl2IiwiY2xwLXNway1vcHRzIik7CiAgICB0LmNob29zZS5vcHRpb25zLmZvckVhY2goZnVuY3Rpb24obyxpZHgpewogICAgICB2YXIgY2FyZCA9IGVsKCJkaXYiLCJjbHAtc3BrLWNhcmQiKyhTLnQ1Y2hvaWNlW3Qua109PT1pZHg\/IiBzZWwiOiIiKSk7CiAgICAgIGNhcmQuYXBwZW5kQ2hpbGQoaW1nVGl0bGVCdWxsZXRzKG8pKTsKICAgICAgdmFyIHBrID0gZWwoImRpdiIsInBpY2siLCBTLnQ1Y2hvaWNlW3Qua109PT1pZHggPyAiXHUyNzE0IFNlbGVjdGVkIiA6ICIiKTsKICAgICAgY2FyZC5hcHBlbmRDaGlsZChwayk7CiAgICAgIGNhcmQub25jbGljayA9IGZ1bmN0aW9uKCl7CiAgICAgICAgUy50NWNob2ljZVt0LmtdID0gaWR4OwogICAgICAgIGdyaWQucXVlcnlTZWxlY3RvckFsbCgiLmNscC1zcGstY2FyZCIpLmZvckVhY2goZnVuY3Rpb24oY2Qsail7CiAgICAgICAgICBjZC5jbGFzc05hbWUgPSAiY2xwLXNway1jYXJkIisoaj09PWlkeD8iIHNlbCI6IiIpOwogICAgICAgICAgY2QucXVlcnlTZWxlY3RvcigiLnBpY2siKS50ZXh0Q29udGVudCA9IChqPT09aWR4KT8iXHUyNzE0IFNlbGVjdGVkIjoiIjsKICAgICAgICB9KTsKICAgICAgICBjYnRuLnN0eWxlLmRpc3BsYXkgPSAiaW5saW5lLWJsb2NrIjsKICAgICAgfTsKICAgICAgZ3JpZC5hcHBlbmRDaGlsZChjYXJkKTsKICAgIH0pOwogICAgYi5hcHBlbmRDaGlsZChncmlkKTsKICAgIGIuYXBwZW5kQ2hpbGQoZWwoImRpdiIsImNscC1zcGstaGludCIsVS5jaG9vc2VIaW50KSk7CiAgICAvKiBjb3VudGRvd24gZm9yIGNob29zZSBwaGFzZSAqLwogICAgdmFyIHRyb3cgPSBlbCgiZGl2IiwiY2xwLXNway10aW1lcnJvdyIpOwogICAgdmFyIHRtID0gZWwoImRpdiIsImNscC1zcGstdGltZXIiKTsKICAgIHRtLmFwcGVuZENoaWxkKGVsKCJzcGFuIiwiaWMiLCJcdWQ4M2RcdWRkNTIiKSk7CiAgICB2YXIgbGIgPSBlbCgiZGl2Iik7IGxiLmFwcGVuZENoaWxkKGVsKCJkaXYiLCJsYiIsVS5wcmVwVGl0bGUpKTsKICAgIHRtLmFwcGVuZENoaWxkKGxiKTsKICAgIHZhciBuID0gZWwoInNwYW4iLCJuIixTdHJpbmcodC5jaG9vc2UucHJlcCkpOwogICAgdG0uYXBwZW5kQ2hpbGQobik7CiAgICB0cm93LmFwcGVuZENoaWxkKHRtKTsKICAgIGIuYXBwZW5kQ2hpbGQodHJvdyk7CiAgICB2YXIgY3RyID0gZWwoImRpdiIsImNscC1zcGstY3RyIik7CiAgICB2YXIgc3RhcnQgPSBlbCgiYnV0dG9uIiwiY2xwLXNway1idG4gcHJpIixVLnN0YXJ0UHJlcCk7CiAgICB2YXIgY2J0biA9IGVsKCJidXR0b24iLCJjbHAtc3BrLWJ0biIsVS5jb25maXJtQ2hvaWNlKTsKICAgIGNidG4uc3R5bGUuZGlzcGxheSA9IChTLnQ1Y2hvaWNlW3Qua10hPW51bGwpPyJpbmxpbmUtYmxvY2siOiJub25lIjsKICAgIHZhciBnb1NwZWFrID0gZnVuY3Rpb24oKXsKICAgICAgc3RvcFRpbWVyKCk7CiAgICAgIGlmKFMudDVjaG9pY2VbdC5rXT09bnVsbCkgUy50NWNob2ljZVt0LmtdID0gMDsKICAgICAgUy5waGFzZVt0LmtdID0gInNwZWFrIjsKICAgICAgcmVuZGVyKCk7CiAgICB9OwogICAgc3RhcnQub25jbGljayA9IGZ1bmN0aW9uKCl7CiAgICAgIHN0YXJ0LmRpc2FibGVkID0gdHJ1ZTsKICAgICAgUy5waGFzZVt0LmtdID0gImNob29zZS1ydW4iOwogICAgICBjb3VudGRvd24odC5jaG9vc2UucHJlcCwgZnVuY3Rpb24obGVmdCl7IG4udGV4dENvbnRlbnQgPSBTdHJpbmcobGVmdCk7IH0sIGdvU3BlYWspOwogICAgfTsKICAgIGNidG4ub25jbGljayA9IGdvU3BlYWs7CiAgICBjdHIuYXBwZW5kQ2hpbGQoc3RhcnQpOyBjdHIuYXBwZW5kQ2hpbGQoY2J0bik7CiAgICBiLmFwcGVuZENoaWxkKGN0cik7CiAgICBpZihTLnBoYXNlW3Qua109PT0iY2hvb3NlLXJ1biIpewogICAgICBzdGFydC5kaXNhYmxlZCA9IHRydWU7CiAgICAgIGNvdW50ZG93bih0LmNob29zZS5wcmVwLCBmdW5jdGlvbihsZWZ0KXsgbi50ZXh0Q29udGVudD1TdHJpbmcobGVmdCk7IH0sIGdvU3BlYWspOwogICAgfQogIH0gZWxzZSB7CiAgICBtZXRhRWwuaW5uZXJIVE1MID0gcGhhc2VkTWV0YSh0KTsKICAgIGIuYXBwZW5kQ2hpbGQocHJvbXB0Um93KHQuc3BlYWsucHJvbXB0KSk7CiAgICB2YXIgZ3JpZCA9IGVsKCJkaXYiLCJjbHAtc3BrLW9wdHMiKTsKICAgIHZhciBvdGhlciA9IGVsKCJkaXYiLCJjbHAtc3BrLWNhcmQgcGxhaW4iKTsKICAgIG90aGVyLmFwcGVuZENoaWxkKGVsKCJkaXYiLCJoZCIsdC5zcGVhay5vdGhlckxhYmVsKSk7CiAgICBvdGhlci5hcHBlbmRDaGlsZChpbWdUaXRsZUJ1bGxldHModC5zcGVhay5vdGhlcikpOwogICAgZ3JpZC5hcHBlbmRDaGlsZChvdGhlcik7CiAgICB2YXIgY2hvc2VuID0gdC5jaG9vc2Uub3B0aW9uc1tTLnQ1Y2hvaWNlW3Qua10hPW51bGwgPyBTLnQ1Y2hvaWNlW3Qua10gOiAwXTsKICAgIHZhciBtaW5lID0gZWwoImRpdiIsImNscC1zcGstY2FyZCBwbGFpbiBzZWwiKTsKICAgIG1pbmUuYXBwZW5kQ2hpbGQoZWwoImRpdiIsImhkIixVLnlvdXJDaG9pY2UpKTsKICAgIG1pbmUuYXBwZW5kQ2hpbGQoaW1nVGl0bGVCdWxsZXRzKGNob3NlbikpOwogICAgZ3JpZC5hcHBlbmRDaGlsZChtaW5lKTsKICAgIGIuYXBwZW5kQ2hpbGQoZ3JpZCk7CiAgICBiLmFwcGVuZENoaWxkKHRpbWVyQmxvY2sodC5rLCB0LnNwZWFrLnByZXAsIHQuc3BlYWsucmVjLCAidDVzIikpOwogIH0KfQpmdW5jdGlvbiBpbWdUaXRsZUJ1bGxldHMobyl7CiAgdmFyIGJveCA9IGVsKCJkaXYiKTsKICBpZihvLmltZyAmJiBELmltZ3Nbby5pbWddKXsgdmFyIGltID0gZWwoImltZyIpOyBpbS5zcmMgPSBELmltZ3Nbby5pbWddOyBpbS5hbHQgPSBvLnRpdGxlOyBib3guYXBwZW5kQ2hpbGQoaW0pOyB9CiAgYm94LmFwcGVuZENoaWxkKGVsKCJkaXYiLCJ0dCIsby50aXRsZSkpOwogIHZhciB1bCA9IGVsKCJ1bCIpOwogIG8uYnVsbGV0cy5mb3JFYWNoKGZ1bmN0aW9uKHgpeyB1bC5hcHBlbmRDaGlsZChlbCgibGkiLG51bGwseCkpOyB9KTsKICBib3guYXBwZW5kQ2hpbGQodWwpOwogIHJldHVybiBib3g7Cn0KCi8qIC0tLS0tLS0tLS0gcHJlcC9yZWNvcmQgYmxvY2sgLS0tLS0tLS0tLSAqLwpmdW5jdGlvbiB0aW1lckJsb2NrKGtleSwgcHJlcFNlY3MsIHJlY1NlY3MsIG1vZGUpewogIHZhciBib3ggPSBlbCgiZGl2Iik7CiAgdmFyIHRyb3cgPSBlbCgiZGl2IiwiY2xwLXNway10aW1lcnJvdyIpOwogIHZhciB0bSA9IGVsKCJkaXYiLCJjbHAtc3BrLXRpbWVyIik7CiAgdmFyIGljID0gZWwoInNwYW4iLCJpYyIsIlx1ZDgzZFx1ZGQ1MiIpOwogIHZhciBsYiA9IGVsKCJkaXYiKTsgdmFyIGxidCA9IGVsKCJkaXYiLCJsYiIsVS5wcmVwVGl0bGUpOyBsYi5hcHBlbmRDaGlsZChsYnQpOwogIHZhciBuID0gZWwoInNwYW4iLCJuIixTdHJpbmcocHJlcFNlY3MpKTsKICB0bS5hcHBlbmRDaGlsZChpYyk7IHRtLmFwcGVuZENoaWxkKGxiKTsgdG0uYXBwZW5kQ2hpbGQobik7CiAgdHJvdy5hcHBlbmRDaGlsZCh0bSk7IGJveC5hcHBlbmRDaGlsZCh0cm93KTsKICB2YXIgc3BlYWtub3cgPSBlbCgiZGl2IiwiY2xwLXNway1zcGVha25vdyIsIiIpOyBib3guYXBwZW5kQ2hpbGQoc3BlYWtub3cpOwogIHZhciBjdHIgPSBlbCgiZGl2IiwiY2xwLXNway1jdHIiKTsgYm94LmFwcGVuZENoaWxkKGN0cik7CiAgdmFyIHJldmlld1Nsb3QgPSBlbCgiZGl2Iik7IGJveC5hcHBlbmRDaGlsZChyZXZpZXdTbG90KTsKICB2YXIgbWljbm90ZSA9IGVsKCJkaXYiKTsgYm94LmFwcGVuZENoaWxkKG1pY25vdGUpOwoKICBmdW5jdGlvbiBzaG93SWRsZSgpewogICAgY3RyLmlubmVySFRNTCA9ICIiOyBzcGVha25vdy50ZXh0Q29udGVudCA9ICIiOwogICAgdG0uY2xhc3NOYW1lID0gImNscC1zcGstdGltZXIiOyBsYnQudGV4dENvbnRlbnQgPSBVLnByZXBUaXRsZTsgaWMudGV4dENvbnRlbnQgPSAiXHVkODNkXHVkZDUyIjsgbi50ZXh0Q29udGVudCA9IFN0cmluZyhwcmVwU2Vjcyk7CiAgICB2YXIgc3RhcnQgPSBlbCgiYnV0dG9uIiwiY2xwLXNway1idG4gcHJpIixVLnN0YXJ0UHJlcCk7CiAgICBzdGFydC5vbmNsaWNrID0gc3RhcnRQcmVwOwogICAgY3RyLmFwcGVuZENoaWxkKHN0YXJ0KTsKICAgIGlmKFMucmVjc1trZXldKSBzaG93UmV2aWV3KGZhbHNlKTsKICB9CiAgZnVuY3Rpb24gc3RhcnRQcmVwKCl7CiAgICBlbnN1cmVNaWMoZnVuY3Rpb24oKXsKICAgICAgY3RyLmlubmVySFRNTCA9ICIiOwogICAgICB2YXIgc2tpcCA9IGVsKCJidXR0b24iLCJjbHAtc3BrLWJ0biIsVS5za2lwUHJlcCk7CiAgICAgIHNraXAub25jbGljayA9IGZ1bmN0aW9uKCl7IHN0b3BUaW1lcigpOyBzdGFydFJlYygpOyB9OwogICAgICBjdHIuYXBwZW5kQ2hpbGQoc2tpcCk7CiAgICAgIGNvdW50ZG93bihwcmVwU2VjcywgZnVuY3Rpb24obGVmdCl7IG4udGV4dENvbnRlbnQgPSBTdHJpbmcobGVmdCk7IH0sIGZ1bmN0aW9uKCl7IHN0YXJ0UmVjKCk7IH0pOwogICAgfSk7CiAgfQogIGZ1bmN0aW9uIHN0YXJ0UmVjKCl7CiAgICBiZWVwKDIpOwogICAgdG0uY2xhc3NOYW1lID0gImNscC1zcGstdGltZXIgcmVjIjsKICAgIGljLmlubmVySFRNTCA9ICI8c3BhbiBjbGFzcz0nY2xwLXNway1kb3QnPjwvc3Bhbj4iOwogICAgbi50ZXh0Q29udGVudCA9IFN0cmluZyhyZWNTZWNzKTsKICAgIGN0ci5pbm5lckhUTUwgPSAiIjsKICAgIHZhciBzdG9wcGVkID0gZmFsc2U7CiAgICB2YXIgaGF2ZU1pYyA9IChTLm1pY1N0YXRlPT09Im9rIiAmJiBTLnN0cmVhbSk7CiAgICBsYnQudGV4dENvbnRlbnQgPSBoYXZlTWljID8gVS5yZWNUaXRsZSA6IFUudGltZXJPbmx5OwogICAgc3BlYWtub3cudGV4dENvbnRlbnQgPSBVLnNwZWFrTm93OwogICAgbWljbm90ZS5pbm5lckhUTUwgPSBoYXZlTWljID8gIiIgOiAiPGRpdiBjbGFzcz0nY2xwLXNway1taWMnPiIrVS5taWNCbG9ja2VkKyI8L2Rpdj4iOwogICAgdmFyIHQwID0gRGF0ZS5ub3coKTsKICAgIHZhciBmaW5pc2ggPSBmdW5jdGlvbigpewogICAgICBpZihzdG9wcGVkKSByZXR1cm47IHN0b3BwZWQgPSB0cnVlOwogICAgICBzdG9wVGltZXIoKTsgYmVlcCgxKTsKICAgICAgc3BlYWtub3cudGV4dENvbnRlbnQgPSAiIjsKICAgICAgdmFyIHNlY3MgPSBNYXRoLm1pbihyZWNTZWNzLCBNYXRoLnJvdW5kKChEYXRlLm5vdygpLXQwKS8xMDAwKSk7CiAgICAgIGlmKGhhdmVNaWMgJiYgUy5yZWNvcmRlcil7CiAgICAgICAgUy5yZWNvcmRlci5vbnN0b3AgPSBmdW5jdGlvbigpewogICAgICAgICAgdmFyIGJsb2IgPSBuZXcgQmxvYihTLmNodW5rcywgUy5taW1lP3t0eXBlOlMubWltZX06dW5kZWZpbmVkKTsKICAgICAgICAgIGlmKFMucmVjc1trZXldICYmIFMucmVjc1trZXldLnVybCl7IHRyeXsgVVJMLnJldm9rZU9iamVjdFVSTChTLnJlY3Nba2V5XS51cmwpOyB9Y2F0Y2goZSl7fSB9CiAgICAgICAgICBTLnJlY3Nba2V5XSA9IHsgYmxvYjogYmxvYiwgdXJsOiBVUkwuY3JlYXRlT2JqZWN0VVJMKGJsb2IpLCBzZWNzOiBzZWNzIH07CiAgICAgICAgICBTLnJlY29yZGVyID0gbnVsbDsKICAgICAgICAgIHNob3dJZGxlKCk7IHNob3dSZXZpZXcodHJ1ZSk7CiAgICAgICAgfTsKICAgICAgICB0cnl7IFMucmVjb3JkZXIuc3RvcCgpOyB9Y2F0Y2goZSl7IFMucmVjc1trZXldID0ge2Jsb2I6bnVsbCx1cmw6bnVsbCxzZWNzOnNlY3N9OyBzaG93SWRsZSgpOyBzaG93UmV2aWV3KHRydWUpOyB9CiAgICAgIH0gZWxzZSB7CiAgICAgICAgUy5yZWNzW2tleV0gPSB7IGJsb2I6bnVsbCwgdXJsOm51bGwsIHNlY3M6IHNlY3MgfTsKICAgICAgICBzaG93SWRsZSgpOyBzaG93UmV2aWV3KHRydWUpOwogICAgICB9CiAgICB9OwogICAgaWYoaGF2ZU1pYyl7CiAgICAgIFMuY2h1bmtzID0gW107CiAgICAgIHRyeXsKICAgICAgICBTLnJlY29yZGVyID0gUy5taW1lID8gbmV3IE1lZGlhUmVjb3JkZXIoUy5zdHJlYW0se21pbWVUeXBlOlMubWltZX0pIDogbmV3IE1lZGlhUmVjb3JkZXIoUy5zdHJlYW0pOwogICAgICAgIFMucmVjb3JkZXIub25kYXRhYXZhaWxhYmxlID0gZnVuY3Rpb24oZXYpeyBpZihldi5kYXRhICYmIGV2LmRhdGEuc2l6ZSkgUy5jaHVua3MucHVzaChldi5kYXRhKTsgfTsKICAgICAgICBTLnJlY29yZGVyLnN0YXJ0KCk7CiAgICAgIH1jYXRjaChlKXsgUy5yZWNvcmRlciA9IG51bGw7IGhhdmVNaWMgPSBmYWxzZTsgbGJ0LnRleHRDb250ZW50ID0gVS50aW1lck9ubHk7IH0KICAgIH0KICAgIHZhciBzdG9wID0gZWwoImJ1dHRvbiIsImNscC1zcGstYnRuIHdhcm4iLFUuc3RvcFJlYyk7CiAgICBzdG9wLm9uY2xpY2sgPSBmaW5pc2g7CiAgICBjdHIuYXBwZW5kQ2hpbGQoc3RvcCk7CiAgICBjb3VudGRvd24ocmVjU2VjcywgZnVuY3Rpb24obGVmdCl7IG4udGV4dENvbnRlbnQgPSBTdHJpbmcobGVmdCk7IH0sIGZpbmlzaCk7CiAgfQogIGZ1bmN0aW9uIHNob3dSZXZpZXcoc2Nyb2xsVG8pewogICAgdmFyIHIgPSBTLnJlY3Nba2V5XTsgaWYoIXIpIHJldHVybjsKICAgIHJldmlld1Nsb3QuaW5uZXJIVE1MID0gIiI7CiAgICB2YXIgcnYgPSBlbCgiZGl2IiwiY2xwLXNway1yZXZpZXciKTsKICAgIHJ2LmFwcGVuZENoaWxkKGVsKCJkaXYiLCJvayIsIlx1MjcxNCAiK1UucmVjb3JkZWQrIiAoIityLnNlY3MrInMpIikpOwogICAgaWYoci51cmwpewogICAgICB2YXIgYXUgPSBlbCgiYXVkaW8iKTsgYXUuY29udHJvbHMgPSB0cnVlOyBhdS5zcmMgPSByLnVybDsKICAgICAgcnYuYXBwZW5kQ2hpbGQoYXUpOwogICAgICB2YXIgcm93ID0gZWwoImRpdiIsImNscC1zcGstY3RyIik7CiAgICAgIHZhciBkbCA9IGVsKCJhIiwiY2xwLXNway1idG4iLFUuZG93bmxvYWQpOwogICAgICBkbC5ocmVmID0gci51cmw7IGRsLmRvd25sb2FkID0gImNlbHBpcC1zIitELnNldCsidCIrRC50ZXN0KyItdGFzayIrKGtleT09PSJ3Ij8iMCI6a2V5LnJlcGxhY2UoInQiLCIiKSkrIi4iK1MuZXh0OwogICAgICByb3cuYXBwZW5kQ2hpbGQoZGwpOwogICAgICBydi5hcHBlbmRDaGlsZChyb3cpOwogICAgfQogICAgcmV2aWV3U2xvdC5hcHBlbmRDaGlsZChydik7CiAgICBpZihzY3JvbGxUbyl7IHRyeXsgcnYuc2Nyb2xsSW50b1ZpZXcoe2JlaGF2aW9yOiJzbW9vdGgiLGJsb2NrOiJjZW50ZXIifSk7IH1jYXRjaChlKXt9IH0KICB9CiAgc2hvd0lkbGUoKTsKICByZXR1cm4gYm94Owp9CgovKiAtLS0tLS0tLS0tIHRpcHMvc2FtcGxlcyBhY2NvcmRpb24gLS0tLS0tLS0tLSAqLwpmdW5jdGlvbiBhY2NvcmRpb24odCl7CiAgdmFyIGFjYyA9IGVsKCJkaXYiLCJjbHAtc3BrLWFjYyIpOwogIHZhciBidG4gPSBlbCgiYnV0dG9uIixudWxsLFUudGlwc1RvZ2dsZSk7CiAgYnRuLm9uY2xpY2sgPSBmdW5jdGlvbigpeyBhY2MuY2xhc3NOYW1lID0gYWNjLmNsYXNzTmFtZS5pbmRleE9mKCJvcGVuIik+LTEgPyAiY2xwLXNway1hY2MiIDogImNscC1zcGstYWNjIG9wZW4iOyB9OwogIGFjYy5hcHBlbmRDaGlsZChidG4pOwogIHZhciBib2R5ID0gZWwoImRpdiIsImNscC1zcGstYWNjYm9keSIpOwogIHZhciB0YWJzID0gZWwoImRpdiIsImNscC1zcGstdGFicyIpOwogIHZhciBwYW5lcyA9IFtdOwogIGZ1bmN0aW9uIGFkZFRhYihsYWJlbCwgcGFuZUJ1aWxkZXIpewogICAgdmFyIGkgPSBwYW5lcy5sZW5ndGg7CiAgICB2YXIgdGIgPSBlbCgiYnV0dG9uIiwiY2xwLXNway10YWIiKyhpPT09MD8iIG9uIjoiIiksbGFiZWwpOwogICAgdmFyIHBuID0gZWwoImRpdiIsImNscC1zcGstdGFicGFuZSIrKGk9PT0wPyIgb24iOiIiKSk7CiAgICBwYW5lQnVpbGRlcihwbik7CiAgICB0Yi5vbmNsaWNrID0gZnVuY3Rpb24oKXsKICAgICAgdGFicy5xdWVyeVNlbGVjdG9yQWxsKCIuY2xwLXNway10YWIiKS5mb3JFYWNoKGZ1bmN0aW9uKHgsail7IHguY2xhc3NOYW1lID0gImNscC1zcGstdGFiIisoaj09PWk\/IiBvbiI6IiIpOyB9KTsKICAgICAgYm9keS5xdWVyeVNlbGVjdG9yQWxsKCIuY2xwLXNway10YWJwYW5lIikuZm9yRWFjaChmdW5jdGlvbih4LGopeyB4LmNsYXNzTmFtZSA9ICJjbHAtc3BrLXRhYnBhbmUiKyhqPT09aT8iIG9uIjoiIik7IH0pOwogICAgfTsKICAgIHRhYnMuYXBwZW5kQ2hpbGQodGIpOyBwYW5lcy5wdXNoKHBuKTsKICB9CiAgYWRkVGFiKFUudGFiVGlwcywgZnVuY3Rpb24ocG4pewogICAgdmFyIHVsID0gZWwoInVsIik7CiAgICB0LnRpcHMuYnVsbGV0cy5mb3JFYWNoKGZ1bmN0aW9uKHgpeyB1bC5hcHBlbmRDaGlsZChlbCgibGkiLG51bGwseCkpOyB9KTsKICAgIHBuLmFwcGVuZENoaWxkKHVsKTsKICAgIHBuLmFwcGVuZENoaWxkKGVsKCJkaXYiLG51bGwsIjxiPiIrVS51c2VmdWxQaHJhc2VzKyI6PC9iPiIpKTsKICAgIHZhciBwaCA9IGVsKCJkaXYiLCJjbHAtc3BrLXBociIpOwogICAgdC50aXBzLnBocmFzZXMuZm9yRWFjaChmdW5jdGlvbih4KXsgcGguYXBwZW5kQ2hpbGQoZWwoInNwYW4iLG51bGwseCkpOyB9KTsKICAgIHBuLmFwcGVuZENoaWxkKHBoKTsKICB9KTsKICBpZih0LnM2KSBhZGRUYWIoVS50YWJTNiwgZnVuY3Rpb24ocG4peyBwbi5hcHBlbmRDaGlsZChlbCgiZGl2IiwiY2xwLXNway1zYW1wbGUgczYiLHQuczYpKTsgfSk7CiAgaWYodC5zOSkgYWRkVGFiKFUudGFiUzksIGZ1bmN0aW9uKHBuKXsgcG4uYXBwZW5kQ2hpbGQoZWwoImRpdiIsImNscC1zcGstc2FtcGxlIix0LnM5KSk7IH0pOwogIGlmKCF0Lndhcm11cCkgYWRkVGFiKFUudGFiUnVicmljLCBmdW5jdGlvbihwbil7CiAgICBwbi5hcHBlbmRDaGlsZChlbCgiZGl2IixudWxsLFUucnVicmljTm90ZSkpOwogICAgdmFyIHRiID0gZWwoInRhYmxlIiwiY2xwLXNway1ydWIiKTsKICAgIGlmKCFTLnJ1YnJpY1t0LmtdKSBTLnJ1YnJpY1t0LmtdID0gWzAsMCwwLDBdOwogICAgdmFyIGVzdEQgPSBlbCgiZGl2IiwiY2xwLXNway1lc3QiLCIiKTsKICAgIFUucnVicmljQ3JpdC5mb3JFYWNoKGZ1bmN0aW9uKGNyLGNpKXsKICAgICAgdmFyIHRyID0gZWwoInRyIik7CiAgICAgIHRyLmFwcGVuZENoaWxkKGVsKCJ0ZCIsbnVsbCxjcikpOwogICAgICB2YXIgdGQgPSBlbCgidGQiKTsgdGQuc3R5bGUud2hpdGVTcGFjZSA9ICJub3dyYXAiOyB0ZC5zdHlsZS50ZXh0QWxpZ24gPSAicmlnaHQiOwogICAgICBmb3IodmFyIHMyPTE7czI8PTU7czIrKyl7CiAgICAgICAgKGZ1bmN0aW9uKHN2KXsKICAgICAgICAgIHZhciBzcCA9IGVsKCJzcGFuIiwiY2xwLXNway1zdGFyIisoUy5ydWJyaWNbdC5rXVtjaV0+PXN2PyIgb24iOiIiKSwiXHUyNjA1Iik7CiAgICAgICAgICBzcC5vbmNsaWNrID0gZnVuY3Rpb24oKXsKICAgICAgICAgICAgUy5ydWJyaWNbdC5rXVtjaV0gPSBzdjsKICAgICAgICAgICAgdGQucXVlcnlTZWxlY3RvckFsbCgiLmNscC1zcGstc3RhciIpLmZvckVhY2goZnVuY3Rpb24oeCxqKXsgeC5jbGFzc05hbWUgPSAiY2xwLXNway1zdGFyIisoajxzdj8iIG9uIjoiIik7IH0pOwogICAgICAgICAgICB1cGQoKTsKICAgICAgICAgIH07CiAgICAgICAgICB0ZC5hcHBlbmRDaGlsZChzcCk7CiAgICAgICAgfSkoczIpOwogICAgICB9CiAgICAgIHRyLmFwcGVuZENoaWxkKHRkKTsKICAgICAgdGIuYXBwZW5kQ2hpbGQodHIpOwogICAgfSk7CiAgICBwbi5hcHBlbmRDaGlsZCh0Yik7CiAgICBwbi5hcHBlbmRDaGlsZChlc3REKTsKICAgIHBuLmFwcGVuZENoaWxkKGVsKCJkaXYiLCJjbHAtc3BrLW5vdGUiLFUuZXN0RGlzY2xhaW1lcikpOwogICAgZnVuY3Rpb24gdXBkKCl7CiAgICAgIHZhciBhcnIgPSBTLnJ1YnJpY1t0LmtdOyB2YXIgZG9uZSA9IGFyci5ldmVyeShmdW5jdGlvbih4KXtyZXR1cm4geD4wO30pOwogICAgICBlc3RELnRleHRDb250ZW50ID0gZG9uZSA\/IChVLmVzdGltYXRlKyIgIitlc3RUZXh0KGFyci5yZWR1Y2UoZnVuY3Rpb24oYSxiKXtyZXR1cm4gYStiO30sMCkvNCkpIDogIiI7CiAgICB9CiAgICB1cGQoKTsKICB9KTsKICBib2R5Lmluc2VydEJlZm9yZSh0YWJzLCBib2R5LmZpcnN0Q2hpbGQpOwogIHBhbmVzLmZvckVhY2goZnVuY3Rpb24ocG4peyBib2R5LmFwcGVuZENoaWxkKHBuKTsgfSk7CiAgYWNjLmFwcGVuZENoaWxkKGJvZHkpOwogIHJldHVybiBhY2M7Cn0KCi8qIC0tLS0tLS0tLS0gZW5kIHNjcmVlbiAtLS0tLS0tLS0tICovCmZ1bmN0aW9uIGVuZFNjcmVlbigpewogIHZhciBwID0gZWwoImRpdiIsImNscC1zcGstcGFuZWwgY2xwLXNway1lbmQiKTsKICB2YXIgYmFyID0gZWwoImRpdiIsImNscC1zcGstYmFyIik7CiAgYmFyLmFwcGVuZENoaWxkKGVsKCJzcGFuIiwidCIsRC5oZWFkZXIrIiAtIFNwZWFraW5nIFx1MjAxNCAiK1UuZW5kVGl0bGUpKTsKICBwLmFwcGVuZENoaWxkKGJhcik7CiAgdmFyIGIgPSBlbCgiZGl2IiwiY2xwLXNway1ib2R5Iik7CiAgYi5hcHBlbmRDaGlsZChlbCgiZGl2IixudWxsLCI8Yj4iK1UuZW5kVGl0bGUrIjwvYj4gIitVLmVuZFN1YikpOwogIHZhciB0YiA9IGVsKCJ0YWJsZSIpOwogIHZhciB0aHIgPSBlbCgidHIiKTsgWyJUYXNrIiwiVHlwZSIsIlJlY29yZGluZyIsIiJdLmZvckVhY2goZnVuY3Rpb24oaCl7IHRoci5hcHBlbmRDaGlsZChlbCgidGgiLG51bGwsaCkpOyB9KTsKICB0Yi5hcHBlbmRDaGlsZCh0aHIpOwogIHZhciBucmVjID0gMDsKICBELnRhc2tzLmZvckVhY2goZnVuY3Rpb24odCxpKXsKICAgIHZhciB0ciA9IGVsKCJ0ciIpOwogICAgdHIuYXBwZW5kQ2hpbGQoZWwoInRkIixudWxsLCI8Yj4iKyh0Lndhcm11cD8iVyI6dC5udW0pKyI8L2I+IikpOwogICAgdHIuYXBwZW5kQ2hpbGQoZWwoInRkIixudWxsLHQudHlwZUVuKSk7CiAgICB2YXIgciA9IFMucmVjc1t0LmtdOwogICAgdmFyIHRkID0gZWwoInRkIik7CiAgICBpZihyICYmIHIudXJsKXsgbnJlYysrOyB2YXIgYXUgPSBlbCgiYXVkaW8iKTsgYXUuY29udHJvbHMgPSB0cnVlOyBhdS5zcmMgPSByLnVybDsgdGQuYXBwZW5kQ2hpbGQoYXUpOyB9CiAgICBlbHNlIGlmKHIpeyBucmVjKys7IHRkLnRleHRDb250ZW50ID0gci5zZWNzKyJzICgiK1UudGltZXJPbmx5KyIpIjsgfQogICAgZWxzZSB0ZC5pbm5lckhUTUwgPSAiPHNwYW4gc3R5bGU9J2NvbG9yOiNjNjI4MjgnPiIrVS5lbmROb1JlYysiPC9zcGFuPiI7CiAgICB0ci5hcHBlbmRDaGlsZCh0ZCk7CiAgICB2YXIgdGQyID0gZWwoInRkIik7CiAgICB2YXIgZ28gPSBlbCgiYnV0dG9uIiwiY2xwLXNway1idG4iLCJcdTIxOTIiKTsKICAgIGdvLm9uY2xpY2sgPSBmdW5jdGlvbigpeyBTLmN1cj1pOyByZW5kZXIoKTsgfTsKICAgIHRkMi5hcHBlbmRDaGlsZChnbyk7CiAgICB0ci5hcHBlbmRDaGlsZCh0ZDIpOwogICAgdGIuYXBwZW5kQ2hpbGQodHIpOwogIH0pOwogIGIuYXBwZW5kQ2hpbGQodGIpOwogIC8qIHJ1YnJpYyBhdmcgKi8KICB2YXIgdmFscyA9IFtdOwogIE9iamVjdC5rZXlzKFMucnVicmljKS5mb3JFYWNoKGZ1bmN0aW9uKGspeyB2YXIgYT1TLnJ1YnJpY1trXTsgaWYoYSAmJiBhLmV2ZXJ5KGZ1bmN0aW9uKHgpe3JldHVybiB4PjA7fSkpIHZhbHMucHVzaChhLnJlZHVjZShmdW5jdGlvbih4LHkpe3JldHVybiB4K3k7fSwwKS80KTsgfSk7CiAgaWYodmFscy5sZW5ndGgpewogICAgdmFyIGF2ZyA9IHZhbHMucmVkdWNlKGZ1bmN0aW9uKGEsYyl7cmV0dXJuIGErYzt9LDApL3ZhbHMubGVuZ3RoOwogICAgYi5hcHBlbmRDaGlsZChlbCgiZGl2IiwiY2xwLXNway1lc3QiLFUuZXN0aW1hdGUrIiAiK2VzdFRleHQoYXZnKSsiICgiK3ZhbHMubGVuZ3RoKyIgdGFzayhzKSBzZWxmLXJhdGVkKSIpKTsKICAgIGIuYXBwZW5kQ2hpbGQoZWwoImRpdiIsImNscC1zcGstbm90ZSIsVS5lc3REaXNjbGFpbWVyKSk7CiAgfQogIHZhciBjdHIgPSBlbCgiZGl2IiwiY2xwLXNway1jdHIiKTsKICB2YXIgcmVkbyA9IGVsKCJidXR0b24iLCJjbHAtc3BrLWJ0biIsVS5lbmRSZWRvKTsKICByZWRvLm9uY2xpY2sgPSBmdW5jdGlvbigpewogICAgT2JqZWN0LmtleXMoUy5yZWNzKS5mb3JFYWNoKGZ1bmN0aW9uKGspeyBpZihTLnJlY3Nba10mJlMucmVjc1trXS51cmwpeyB0cnl7VVJMLnJldm9rZU9iamVjdFVSTChTLnJlY3Nba10udXJsKTt9Y2F0Y2goZSl7fSB9IH0pOwogICAgUy5yZWNzID0ge307IFMucnVicmljID0ge307IFMudDVjaG9pY2UgPSB7fTsKICAgIEQudGFza3MuZm9yRWFjaChmdW5jdGlvbih0KXsgUy5waGFzZVt0LmtdID0gdC5waGFzZWQ\/ImNob29zZS1pZGxlIjoiaWRsZSI7IH0pOwogICAgUy5jdXIgPSAtMTsgcmVuZGVyKCk7CiAgfTsKICB2YXIgdDIgPSBlbCgiYSIsImNscC1zcGstYnRuIHByaSIsVS5lbmRUMisiICIrKEQudGVzdD09PTE\/MjoxKSsiIFx1MjE5MiIpOyB0Mi5ocmVmID0gRC5vdGhlclVybDsKICB2YXIgaHViID0gZWwoImEiLCJjbHAtc3BrLWJ0biIsVS5lbmRIdWIpOyBodWIuaHJlZiA9ICIvY2VscGlwLyI7CiAgY3RyLmFwcGVuZENoaWxkKHJlZG8pOyBjdHIuYXBwZW5kQ2hpbGQodDIpOyBjdHIuYXBwZW5kQ2hpbGQoaHViKTsKICBiLmFwcGVuZENoaWxkKGN0cik7CiAgYi5hcHBlbmRDaGlsZChlbCgiZGl2IiwiY2xwLXNway1taWMiLFUubWljTm90ZSkpOwogIHAuYXBwZW5kQ2hpbGQoYik7CiAgcmV0dXJuIHA7Cn0KCi8qIGV4cG9zZSBmb3IgdGVzdHMgKi8Kd2luZG93LkNMUFNQSyA9IHsgc3RhdGU6IFMsIGRhdGE6IEQsIGdvdG86IGZ1bmN0aW9uKGkpeyBTLmN1cj1pOyByZW5kZXIoKTsgfSwgcmVuZGVyOiByZW5kZXIgfTsKcmVuZGVyKCk7Cn0pKCk7Cg==\"));<\/script><\/p>","protected":false},"excerpt":{"rendered":"<p>CELPIP Speaking Set 12 Practice Test 1: 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-6470","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/pages\/6470","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=6470"}],"version-history":[{"count":1,"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/pages\/6470\/revisions"}],"predecessor-version":[{"id":6507,"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/pages\/6470\/revisions\/6507"}],"wp:attachment":[{"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/media?parent=6470"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}