{"id":6335,"date":"2026-07-10T15:12:59","date_gmt":"2026-07-10T15:12:59","guid":{"rendered":"https:\/\/allenglish4u.com\/celpip-set-5-test-2-speaking\/"},"modified":"2026-07-12T03:16:26","modified_gmt":"2026-07-12T03:16:26","slug":"celpip-set-5-test-2-speaking","status":"publish","type":"page","link":"https:\/\/allenglish4u.com\/vi\/celpip-set-5-test-2-speaking\/","title":{"rendered":"CELPIP Speaking \u2014 Set 5 \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(\"d2luZG93LkNMUFNQS19EQVRBPXsic2V0Ijo1LCJ0ZXN0IjoyLCJ0aXRsZSI6IkNFTFBJUCBTcGVha2luZyBcdTIwMTQgU2V0IDUgXHUwMGI3IFByYWN0aWNlIFRlc3QgMiIsImhlYWRlciI6IlByYWN0aWNlIFRlc3QgMiIsImltZ3MiOnsic2NlbmUiOiJodHRwczovL2FsbGVuZ2xpc2g0dS5jb20vd3AtY29udGVudC91cGxvYWRzLzIwMjYvMDcvczV0Mi1zY2VuZS5qcGciLCJvcHRBIjoiaHR0cHM6Ly9hbGxlbmdsaXNoNHUuY29tL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDI2LzA3L3M1dDItb3B0LWEuanBnIiwib3B0QiI6Imh0dHBzOi8vYWxsZW5nbGlzaDR1LmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAyNi8wNy9zNXQyLW9wdC1iLmpwZyIsIm9wdE90aGVyIjoiaHR0cHM6Ly9hbGxlbmdsaXNoNHUuY29tL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDI2LzA3L3M1dDItb3B0LW90aGVyLmpwZyIsInVudXN1YWwiOiJodHRwczovL2FsbGVuZ2xpc2g0dS5jb20vd3AtY29udGVudC91cGxvYWRzLzIwMjYvMDcvczV0Mi11bnVzdWFsLmpwZyJ9LCJvdGhlclVybCI6Ii9jZWxwaXAtc2V0LTUtdGVzdC0xLXNwZWFraW5nLyIsInRhc2tzIjpbeyJrIjoidyIsIm51bSI6MCwidHlwZUVuIjoiU3BlYWtpbmcgUHJhY3RpY2UgVGFzayIsInByZXAiOjMwLCJyZWMiOjYwLCJ3YXJtdXAiOnRydWUsInByb21wdCI6IlRhbGsgYWJvdXQgb25lIG9mIHlvdXIgYmVzdCBmcmllbmRzLiIsImltZyI6bnVsbCwidGlwcyI6eyJidWxsZXRzIjpbIlRoZSBQcmFjdGljZSBUYXNrICh3YXJtLXVwKSBpcyBOT1Qgc2NvcmVkIFx1MjAxNCBpdCBpcyBoZXJlIHRvIGhlbHAgeW91IGdldCB1c2VkIHRvIHRoZSBjb250cm9scyBhbmQgd2FybSB1cCB5b3VyIHZvaWNlLiIsIlNwZWFrIG5hdHVyYWxseSBhYm91dCBhIGJlc3QgZnJpZW5kOiB0aGVpciBuYW1lLCBob3cgeW91IG1ldCwgdGhlaXIgcGVyc29uYWxpdHksIGEgbWVtb3J5IHlvdSBzaGFyZS4iLCJVc2UgaXQgdG8gYWRqdXN0IHlvdXIgcG9zdHVyZSwgbWljcm9waG9uZSBkaXN0YW5jZSwgYW5kIHNwZWFraW5nIHBhY2UuIl0sInBocmFzZXMiOlsiTXkgYmVzdCBmcmllbmQncyBuYW1lIGlzXHUyMDI2IiwiV2UgbWV0IHdoZW5cdTIwMjYiLCJXaGF0IEkgbGlrZSBtb3N0IGFib3V0IGhpbS9oZXIgaXNcdTIwMjYiXX0sInM2IjpudWxsLCJzOSI6bnVsbH0seyJrIjoidDEiLCJudW0iOjEsInR5cGVFbiI6IkdpdmluZyBBZHZpY2UiLCJwcmVwIjozMCwicmVjIjo5MCwicHJvbXB0IjoiQSBmcmllbmQgaXMgYnV5aW5nIGhlciBmaXJzdCBob3VzZS4gR2l2ZSBoZXIgYWR2aWNlIG9uIGhvdyBzaGUgc2hvdWxkIGNob29zZSBhIGdvb2QgaG91c2UgdG8gbGl2ZSBpbi4gWW91IGNvdWxkIGFkdmlzZSBhYm91dCB0aGUgc2l6ZSwgbnVtYmVyIG9mIHJvb21zLCBsb2NhdGlvbiwgb3IgYW55dGhpbmcgZWxzZSB5b3UgdGhpbmsgaXMgaW1wb3J0YW50LiIsImltZyI6bnVsbCwidGlwcyI6eyJidWxsZXRzIjpbIk9wZW5pbmc6IGdyZWV0IHlvdXIgZnJpZW5kIGFuZCByZXN0YXRlIHRoZSBzaXR1YXRpb24gaW4gb25lIHNlbnRlbmNlLiIsIkJvZHk6IGdpdmUgMlx1MjAxMzMgcGllY2VzIG9mIGFkdmljZSwgZWFjaCB3aXRoIGEgcmVhc29uIG9yIGV4YW1wbGUgKEZpcnN0XHUyMDI2LCBiZWNhdXNlXHUyMDI2OyBBbm90aGVyIGlkZWEgaXNcdTIwMjYpLiIsIkNsb3Npbmc6IGVuY291cmFnZSB0aGVtIGFuZCB3aXNoIHRoZW0gbHVjay4iLCJQaWNrIDItMyBmYWN0b3JzIGFuZCBnaXZlIGEgcmVhc29uIGZvciBlYWNoOiBsb2NhdGlvbiBmaXJzdCAoY29tbXV0ZSwgc2Nob29scywgc2FmZXR5KSwgdGhlbiBzaXplIGFuZCByb29tcyAodGhpbmsgNSB5ZWFycyBhaGVhZCksIHRoZW4gY29uZGl0aW9uIGFuZCBidWRnZXQgKGdldCBhIHByb2Zlc3Npb25hbCBpbnNwZWN0aW9uLCBrZWVwIG1vbmV5IGZvciByZXBhaXJzKS4gV2l0aCA5MCBzZWNvbmRzLCBjbG9zZSB3aXRoIG9uZSB3YXJtIGVuY291cmFnZW1lbnQuIl0sInBocmFzZXMiOlsiSWYgSSB3ZXJlIHlvdSwgSSdkXHUyMDI2IiwiWW91IHNob3VsZCBkZWZpbml0ZWx5XHUyMDI2IiwiQW5vdGhlciBvcHRpb24gaXMgdG9cdTIwMjYiLCJUcnVzdCBtZSwgeW91IHdvbid0IHJlZ3JldCBpdC4iXX0sInM2IjoiSGkgTGlzYSEgQ29uZ3JhdHVsYXRpb25zIG9uIGJ1eWluZyB5b3VyIGZpcnN0IGhvdXNlIFx1MjAxNCB0aGF0IGlzIHNvIGV4Y2l0aW5nLiBMZXQgbWUgc2hhcmUgc29tZSBhZHZpY2UuIEZpcnN0LCBhbmQgbW9zdCBpbXBvcnRhbnQsIHRoaW5rIGFib3V0IHRoZSBsb2NhdGlvbi4gQ2hvb3NlIGEgaG91c2UgY2xvc2UgdG8geW91ciB3b3JrLCBzbyB5b3UgZG8gbm90IHNwZW5kIHR3byBob3VycyBkcml2aW5nIGV2ZXJ5IGRheS4gQWxzbyBjaGVjayBpZiB0aGUgbmVpZ2hib3VyaG9vZCBpcyBzYWZlIGFuZCBxdWlldCwgYW5kIGlmIHRoZXJlIGFyZSBzaG9wcyBhbmQgYSBidXMgc3RvcCBuZWFyYnkuIFNlY29uZCwgdGhpbmsgYWJvdXQgdGhlIHNpemUgYW5kIHRoZSBudW1iZXIgb2Ygcm9vbXMuIFlvdSBhcmUgc2luZ2xlIG5vdywgYnV0IG1heWJlIGluIHRoZSBmdXR1cmUgeW91IHdpbGwgaGF2ZSBhIGZhbWlseSwgc28gSSBzdWdnZXN0IGF0IGxlYXN0IHR3byBvciB0aHJlZSBiZWRyb29tcy4gQSBzbWFsbCBnYXJkZW4gaXMgYWxzbyBuaWNlLiBUaGlyZCwgY2hlY2sgdGhlIGNvbmRpdGlvbiBvZiB0aGUgaG91c2UgY2FyZWZ1bGx5LiBTb21lIGhvdXNlcyBsb29rIGJlYXV0aWZ1bCwgYnV0IHRoZXkgaGF2ZSBvbGQgcGlwZXMgb3IgYSBicm9rZW4gcm9vZi4gUGxlYXNlIHBheSBmb3IgYSBwcm9mZXNzaW9uYWwgaW5zcGVjdGlvbiBiZWZvcmUgeW91IHNpZ24gYW55dGhpbmcgXHUyMDE0IGl0IHNhdmVzIGEgbG90IG9mIG1vbmV5IGxhdGVyLiBBbmQga2VlcCBzb21lIG1vbmV5IGZvciByZXBhaXJzIGFuZCBmdXJuaXR1cmUuIERvIG5vdCBzcGVuZCBldmVyeXRoaW5nIG9uIHRoZSBwcmljZS4gSSBhbSBzdXJlIHlvdSB3aWxsIGZpbmQgYSBsb3ZlbHkgaG9tZS4gR29vZCBsdWNrISIsInM5IjoiTGlzYSwgY29uZ3JhdHVsYXRpb25zIFx1MjAxNCBidXlpbmcgeW91ciBmaXJzdCBwbGFjZSBpcyBhIGh1Z2UgbWlsZXN0b25lLCBzbyBsZXQgbWUgcGFzcyBvbiBhIGZldyB0aGluZ3Mgd29ydGggdGhpbmtpbmcgYWJvdXQuIE51bWJlciBvbmUsIHdpdGhvdXQgcXVlc3Rpb24sIGlzIGxvY2F0aW9uLiBBIGdvcmdlb3VzIGhvdXNlIGluIHRoZSB3cm9uZyBzcG90IGlzIGEgZGFpbHkgcHVuaXNobWVudDogY2hlY2sgeW91ciBjb21tdXRlIGF0IHJ1c2ggaG91ciwgbm90IG9uIGEgcXVpZXQgU3VuZGF5LCBhbmQgbG9vayBpbnRvIGhvdyBzYWZlIHRoZSBzdHJlZXQgZmVlbHMgYWZ0ZXIgZGFyaywgd2hldGhlciB0aGVyZSBhcmUgZGVjZW50IHNob3BzIGFuZCB0cmFuc2l0IG5lYXJieSwgYW5kIFx1MjAxNCBldmVuIGlmIGtpZHMgYXJlbid0IG9uIHlvdXIgcmFkYXIgeWV0IFx1MjAxNCBob3cgZ29vZCB0aGUgbG9jYWwgc2Nob29scyBhcmUsIGJlY2F1c2UgdGhhdCBhZmZlY3RzIHJlc2FsZSB2YWx1ZSBlbm9ybW91c2x5LiBTZWNvbmQsIGJ1eSBmb3IgdGhlIGxpZmUgeW91J2xsIGhhdmUgaW4gZml2ZSB5ZWFycywgbm90IGp1c3QgdG9kYXk6IGFuIGV4dHJhIGJlZHJvb20gZm9yIGd1ZXN0cyBvciBhIGhvbWUgb2ZmaWNlIGNvc3RzIG1vcmUgbm93IGJ1dCBzYXZlcyB5b3UgYSBzdHJlc3NmdWwgbW92ZSBsYXRlci4gVGhpcmQgXHUyMDE0IGFuZCBwZW9wbGUgYWx3YXlzIHVuZGVyZXN0aW1hdGUgdGhpcyBcdTIwMTQganVkZ2UgdGhlIGJvbmVzIG9mIHRoZSBob3VzZSwgbm90IHRoZSBkZWNvcmF0aW9uLiBGcmVzaCBwYWludCBpcyBjaGVhcDsgYSBjcmFja2VkIGZvdW5kYXRpb24gb3IgYW5jaWVudCB3aXJpbmcgaXMgbm90LiBBbHdheXMsIGFsd2F5cyBwYXkgZm9yIGEgcHJvZmVzc2lvbmFsIGluc3BlY3Rpb24gYmVmb3JlIHNpZ25pbmcsIGFuZCBrZWVwIGEgY3VzaGlvbiBvZiBzYXZpbmdzIGZvciByZXBhaXJzIHJhdGhlciB0aGFuIHN0cmV0Y2hpbmcgdG8geW91ciBhYnNvbHV0ZSBtYXhpbXVtLiBUYWtlIHlvdXIgdGltZSwgc2VlIHBsZW50eSBvZiBwbGFjZXMsIGFuZCBkb24ndCBsZXQgYW4gYWdlbnQgcnVzaCB5b3UuIFRoZSByaWdodCBob3VzZSB3aWxsIGZlZWwgb2J2aW91cyB3aGVuIHlvdSB3YWxrIGluIFx1MjAxNCBJIGNhbid0IHdhaXQgdG8gc2VlIHlvdXJzLiJ9LHsiayI6InQyIiwibnVtIjoyLCJ0eXBlRW4iOiJUYWxraW5nIGFib3V0IGEgUGVyc29uYWwgRXhwZXJpZW5jZSIsInByZXAiOjMwLCJyZWMiOjYwLCJwcm9tcHQiOiJUYWxrIGFib3V0IGEgdGltZSB3aGVuIHlvdSBnb3QgYSBuZXcgam9iLiBNYXliZSB5b3UgY2FuIHRhbGsgYWJvdXQgYSBqb2IgaW4gYW4gb2ZmaWNlLCBhdCBhIHNob3AsIG9yIG9uIGEgZmFybS4gWW91IGNhbiBhbHNvIHRhbGsgYWJvdXQgdm9sdW50ZWVyIHdvcmssIG9yIHlvdSBjYW4gdGFsayBhYm91dCB3b3JrIHlvdSBkaWQgZm9yIGZhbWlseSBvciBmcmllbmRzLiBXaGF0IHdhcyB0aGUgam9iLCBob3cgZGlkIHlvdSBmZWVsIHdoZW4geW91IHN0YXJ0ZWQsIGFuZCB3aGF0IGRpZCB5b3UgaGF2ZSB0byBkbz8iLCJpbWciOm51bGwsInRpcHMiOnsiYnVsbGV0cyI6WyJBbnN3ZXIgZXZlcnkgcGFydCBvZiB0aGUgcXVlc3Rpb24gKHdoYXQgaGFwcGVuZWQgXHUyMDEzIGhvdyBpdCB1bmZvbGRlZCBcdTIwMTMgdGhlIG91dGNvbWUgLyB3aHkgaXQgaXMgbWVtb3JhYmxlKS4iLCJVc2UgcGFzdCB0ZW5zZXMgYW5kIHRlbGwgaXQgaW4gb3JkZXI6IFRoaXMgaGFwcGVuZWRcdTIwMjYgXHUyMTkyIFRoZW5cdTIwMjYgXHUyMTkyIEluIHRoZSBlbmRcdTIwMjYiLCJGaW5pc2ggd2l0aCBhIGZlZWxpbmcgb3IgYSBsZXNzb24gbGVhcm5lZC4iLCJBbnN3ZXIgdGhlIHRocmVlIHBhcnRzOiB3aGF0IHRoZSBqb2Igd2FzIC0gaG93IHlvdSBmZWx0IGF0IHRoZSBzdGFydCAobmVydm91cyBpcyBmaW5lLCBpdCBtYWtlcyB0aGUgc3RvcnkgcmVhbCkgLSB3aGF0IHlvdXIgZHV0aWVzIHdlcmUuIEVuZCB3aXRoIGhvdyB5b3UgY2hhbmdlZCBvciB3aGF0IHlvdSBsZWFybmVkLiJdLCJwaHJhc2VzIjpbIlRoaXMgaGFwcGVuZWQgYWJvdXQgdHdvIHllYXJzIGFnb1x1MjAyNiIsIkF0IGZpcnN0XHUyMDI2LCBidXQgdGhlblx1MjAyNiIsIldoYXQgbWFkZSBpdCB1bmZvcmdldHRhYmxlIHdhc1x1MjAyNiIsIkxvb2tpbmcgYmFjaywgXHUyMDI2Il19LCJzNiI6Ikkgd2FudCB0byB0YWxrIGFib3V0IG15IGZpcnN0IGpvYiBhdCBhIHNtYWxsIGNvZmZlZSBzaG9wIG5lYXIgbXkgaG91c2UuIEkgZ290IHRoaXMgam9iIHRocmVlIHllYXJzIGFnbywgd2hlbiBJIHdhcyBhIHN0dWRlbnQuIE9uIG15IGZpcnN0IGRheSwgSSB3YXMgdmVyeSBuZXJ2b3VzLiBNeSBoYW5kcyB3ZXJlIHNoYWtpbmcgd2hlbiBJIG1hZGUgdGhlIGZpcnN0IGNvZmZlZSwgYW5kIEkgd2FzIGFmcmFpZCB0byB0YWxrIHRvIGN1c3RvbWVycyBpbiBFbmdsaXNoLiBNeSBkdXRpZXMgd2VyZSBzaW1wbGUgYnV0IGJ1c3k6IEkgdG9vayBvcmRlcnMsIG1hZGUgY29mZmVlIGFuZCB0ZWEsIGNsZWFuZWQgdGhlIHRhYmxlcywgYW5kIGNvdW50ZWQgdGhlIG1vbmV5IGF0IHRoZSBlbmQgb2YgdGhlIGRheS4gSW4gdGhlIGJlZ2lubmluZywgSSBtYWRlIG1hbnkgbWlzdGFrZXMuIE9uZSB0aW1lLCBJIGdhdmUgYSBjdXN0b21lciBob3QgbWlsayBpbnN0ZWFkIG9mIGNvZmZlZSEgQnV0IG15IG1hbmFnZXIgd2FzIGtpbmQsIGFuZCBzaGUgdGF1Z2h0IG1lIGV2ZXJ5dGhpbmcgc3RlcCBieSBzdGVwLiBBZnRlciBvbmUgbW9udGgsIEkgZmVsdCBjb25maWRlbnQuIEkgY291bGQgbWFrZSB0ZW4gZHJpbmtzIHF1aWNrbHksIGFuZCBJIGtuZXcgdGhlIG5hbWVzIG9mIG91ciByZWd1bGFyIGN1c3RvbWVycy4gVGhpcyBqb2IgdGF1Z2h0IG1lIHRvIHdvcmsgZmFzdCwgc3RheSBmcmllbmRseSwgYW5kIG5vdCBiZSBhZnJhaWQgb2YgbWlzdGFrZXMuIEkgd2lsbCBhbHdheXMgcmVtZW1iZXIgaXQuIiwiczkiOiJJJ2QgbGlrZSB0byB0YWxrIGFib3V0IGxhbmRpbmcgbXkgZmlyc3QgcmVhbCBqb2IsIGF0IGEgbGl0dGxlIGluZGVwZW5kZW50IGNvZmZlZSBzaG9wIG5lYXIgbXkgaG9tZSwgYmVjYXVzZSBpdCB0YXVnaHQgbWUgbW9yZSB0aGFuIGFueSBjbGFzc3Jvb20gZXZlciBkaWQuIFRoaXMgd2FzIGFib3V0IHRocmVlIHllYXJzIGFnbywgd2hpbGUgSSB3YXMgc3RpbGwgYSBzdHVkZW50LiBJIHN0aWxsIHJlbWVtYmVyIGhvdyBuZXJ2b3VzIEkgd2FzIHRoYXQgZmlyc3QgbW9ybmluZyBcdTIwMTQgbXkgaGFuZHMgd2VyZSBsaXRlcmFsbHkgdHJlbWJsaW5nIGFzIEkgc3RlYW1lZCBteSBmaXJzdCBqdWcgb2YgbWlsaywgYW5kIEkga2VwdCByZWhlYXJzaW5nIHdoYXQgdG8gc2F5IHRvIGN1c3RvbWVycyBpbiBteSBoZWFkLiBUaGUgcm9sZSBpdHNlbGYgc291bmRzIHNpbXBsZTogdGFraW5nIG9yZGVycywgcHJlcGFyaW5nIGVzcHJlc3NvIGRyaW5rcywga2VlcGluZyB0aGUgdGFibGVzIHNwb3RsZXNzLCBhbmQgY2FzaGluZyBvdXQgdGhlIHRpbGwgYXQgY2xvc2luZy4gQnV0IHRoZXJlJ3MgYSByaHl0aG0gdG8gaXQgdGhhdCB0YWtlcyB3ZWVrcyB0byBtYXN0ZXIsIGVzcGVjaWFsbHkgZHVyaW5nIHRoZSBtb3JuaW5nIHJ1c2ggd2hlbiBhIHF1ZXVlIHN0cmV0Y2hlcyBvdXQgdGhlIGRvb3IuIEkgbWFkZSBteSBzaGFyZSBvZiBibHVuZGVycyBlYXJseSBvbiBcdTIwMTQgSSBvbmNlIGhhbmRlZCBhIGJ1c2luZXNzbWFuIGEgY3VwIG9mIHBsYWluIGhvdCBtaWxrIHdpdGggbm8gY29mZmVlIGluIGl0IHdoYXRzb2V2ZXIgXHUyMDE0IGJ1dCBteSBtYW5hZ2VyIHdhcyBlbmRsZXNzbHkgcGF0aWVudCBhbmQgY29hY2hlZCBtZSB0aHJvdWdoIGV2ZXJ5IHN0YXRpb24uIFdpdGhpbiBhIG1vbnRoIG9yIHNvLCBzb21ldGhpbmcgY2xpY2tlZDogSSBjb3VsZCBqdWdnbGUgc2V2ZXJhbCBvcmRlcnMgYXQgb25jZSwgYmFudGVyIHdpdGggdGhlIHJlZ3VsYXJzLCBhbmQgYWN0dWFsbHkgZW5qb3kgdGhlIGNoYW9zLiBMb29raW5nIGJhY2ssIHRoYXQgam9iIGdhdmUgbWUgY29uZmlkZW5jZSwgdGF1Z2h0IG1lIHRvIHN0YXkgY2FsbSB1bmRlciBwcmVzc3VyZSwgYW5kIHNob3dlZCBtZSB0aGF0IGNvbXBldGVuY2UgaXMganVzdCBhIHBpbGUgb2YgY29ycmVjdGVkIG1pc3Rha2VzLiJ9LHsiayI6InQzIiwibnVtIjozLCJ0eXBlRW4iOiJEZXNjcmliaW5nIGEgU2NlbmUiLCJwcmVwIjozMCwicmVjIjo2MCwicHJvbXB0IjoiRGVzY3JpYmUgc29tZSB0aGluZ3MgdGhhdCBhcmUgaGFwcGVuaW5nIGluIHRoZSBwaWN0dXJlIGJlbG93IGFzIHdlbGwgYXMgeW91IGNhbi4gVGhlIHBlcnNvbiB3aXRoIHdob20geW91IGFyZSBzcGVha2luZyBjYW5ub3Qgc2VlIHRoZSBwaWN0dXJlLiIsImltZyI6InNjZW5lIiwidGlwcyI6eyJidWxsZXRzIjpbIkZpcnN0IHNlbnRlbmNlOiBnaXZlIHRoZSBvdmVydmlldyAod2hlcmUgaXQgaXMsIHdoYXQgdGhlIGF0bW9zcGhlcmUgaXMgbGlrZSkuIiwiRGVzY3JpYmUgNFx1MjAxMzYgZGV0YWlscyBieSBsb2NhdGlvbjogaW4gdGhlIGZvcmVncm91bmQgLyBvbiB0aGUgbGVmdCAvIGF0IHRoZSBiYWNrXHUyMDI2OyB1c2UgdGhlIHByZXNlbnQgY29udGludW91cy4iLCJUaGUgbGlzdGVuZXIgQ0FOTk9UIHNlZSB0aGUgcGljdHVyZSBcdTIwMTQgYmUgc3BlY2lmaWM7IHdoZW4gdW5zdXJlLCB1c2Ugc2VlbXMgLyBhcHBlYXJzIC8gbG9va3MgbGlrZS4iLCJBIHNjaG9vbCBwbGF5Z3JvdW5kIGF0IHJlY2VzczogZ28gaW4gb3JkZXIgLSB0aGUgYm95IGluIGEgYmx1ZSBjYXAgY29taW5nIGRvd24gdGhlIGJpZyByZWQgc2xpZGUgKGEgdGVhY2hlciBzdGFuZGluZyBiZXNpZGUgaXQpIC0+IGZvdXIgY2hpbGRyZW4gcGxheWluZyBzb2NjZXIgb24gdGhlIGdyYXNzIGJlaGluZCAtPiB0aGUgZ2lybCBvbiB0aGUgY2xpbWJpbmcgd2FsbCB3aXRoIGEgcm9wZSBhbmQgdGhlIGdpcmwgaW4gdGVhbCBoYW5naW5nIGZyb20gdGhlIHJpbmdzIChhIHNtYWxsIGJveSBpbiB5ZWxsb3cgd2FpdGluZyBiZWxvdykgLT4gdGhlIHdvbWFuIGFuZCB0aGUgbGl0dGxlIGdpcmwgZmVlZGluZyB0aGUgd2hpdGUgYmlyZHMgaW4gdGhlIGNvcm5lciAtPiB0aGUgYm95IGluIHJlZCBoZWxwaW5nIHRoZSBib3kgaW4gZ3JlZW4gd2hvIGhhcyBmYWxsZW4sIHdpdGggYSBiYXNrZXRiYWxsIG9uIHRoZSBncm91bmQuIl0sInBocmFzZXMiOlsiSW4gdGhlIGZvcmVncm91bmQsIFx1MjAyNiIsIk9uIHRoZSByaWdodC1oYW5kIHNpZGUsIFx1MjAyNiIsIkl0IGxvb2tzIGxpa2VcdTIwMjYiLCJUaGUgd2hvbGUgcGxhY2UgZmVlbHNcdTIwMjYiXX0sInM2IjoiVGhpcyBwaWN0dXJlIHNob3dzIGEgc2Nob29sIHBsYXlncm91bmQgZHVyaW5nIGJyZWFrIHRpbWUsIGFuZCB0aGUgY2hpbGRyZW4gYXJlIGRvaW5nIG1hbnkgZGlmZmVyZW50IGFjdGl2aXRpZXMuIEluIHRoZSBtaWRkbGUsIHRoZXJlIGlzIGEgYmlnIHJlZCBzbGlkZSwgYW5kIGEgYm95IHdlYXJpbmcgYSBibHVlIGNhcCBpcyBzbGlkaW5nIGRvd24gaXQuIEEgdGVhY2hlciBpcyBzdGFuZGluZyBuZXh0IHRvIHRoZSBzbGlkZSBhbmQgd2F0Y2hpbmcgdGhlIGNoaWxkcmVuLiBCZWhpbmQgdGhlbSwgb24gdGhlIGdyZWVuIGdyYXNzLCBmb3VyIGtpZHMgYXJlIHBsYXlpbmcgc29jY2VyIHdpdGggYSBibGFjayBhbmQgd2hpdGUgYmFsbC4gT24gdGhlIHJpZ2h0IHNpZGUsIGEgZ2lybCBpcyBjbGltYmluZyBhIGNsaW1iaW5nIHdhbGwgXHUyMDE0IHNoZSBpcyBob2xkaW5nIGEgcm9wZSBcdTIwMTQgYW5kIGFub3RoZXIgZ2lybCBpbiBhIGdyZWVuIHNoaXJ0IGlzIGhhbmdpbmcgZnJvbSB0d28gcmluZ3MsIGxpa2UgYSBneW1uYXN0LiBBIHNtYWxsIGJveSBpbiB5ZWxsb3cgaXMgc3RhbmRpbmcgdW5kZXIgaGVyIGFuZCB3YWl0aW5nIGZvciBoaXMgdHVybi4gSW4gdGhlIGJvdHRvbSBsZWZ0IGNvcm5lciwgYSB3b21hbiBhbmQgYSBsaXR0bGUgZ2lybCBhcmUgZmVlZGluZyBzb21lIHdoaXRlIGJpcmRzLCBtYXliZSBwaWdlb25zIG9yIHNlYWd1bGxzLiBJbiB0aGUgZnJvbnQsIEkgY2FuIHNlZSBhIGJveSBpbiBhIHJlZCBzaGlydCBoZWxwaW5nIGFub3RoZXIgYm95IGluIGdyZWVuIHdobyBoYXMgZmFsbGVuIGRvd24gXHUyMDE0IHRoZXJlIGlzIGFuIG9yYW5nZSBiYXNrZXRiYWxsIG9uIHRoZSBncm91bmQgbmV4dCB0byB0aGVtLiBCZWhpbmQgZXZlcnl0aGluZywgdGhlcmUgYXJlIHNjaG9vbCBidWlsZGluZ3MgYW5kIGdyZWVuIHRyZWVzLiIsInM5IjoiVGhpcyBpcyBhIGxpdmVseSBzY2hvb2wgcGxheWdyb3VuZCBpbiB0aGUgbWlkZGxlIG9mIHJlY2Vzcywgd2l0aCBjaGlsZHJlbiBzY2F0dGVyZWQgZXZlcnl3aGVyZSBkb2luZyBjb21wbGV0ZWx5IGRpZmZlcmVudCB0aGluZ3MuIFRoZSBjZW50cmVwaWVjZSBpcyBhIGJpZyByZWQgc2xpZGUgb24gYSBibHVlIGZyYW1lLCBhbmQgYSBib3kgaW4gYSBibHVlIGNhcCBpcyBqdXN0IHdoaXp6aW5nIGRvd24gaXQsIHdoaWxlIGEgdGVhY2hlciBzdGFuZHMgY2FsbWx5IGJlc2lkZSB0aGUgc3RydWN0dXJlIGtlZXBpbmcgYW4gZXllIG9uIGV2ZXJ5b25lLiBPbiB0aGUgZ3Jhc3MgYmVoaW5kIHRoZW0sIGZvdXIgY2hpbGRyZW4gYXJlIGFic29yYmVkIGluIGEgc29jY2VyIGdhbWUsIGNoYXNpbmcgdGhlIGJhbGwgYWNyb3NzIHRoZSBmaWVsZCB3aXRoIHRoZSBzY2hvb2wgYnVpbGRpbmdzIGFuZCBhIGxpbmUgb2YgdHJlZXMgaW4gdGhlIGJhY2tncm91bmQuIE92ZXIgb24gdGhlIHJpZ2h0LWhhbmQgc2lkZSB0aGVyZSdzIGEgcHJvcGVyIGxpdHRsZSBneW1uYXN0aWNzIGNvcm5lcjogb25lIGdpcmwgaXMgc2NhbGluZyBhIGNsaW1iaW5nIHdhbGwgd2l0aCB0aGUgaGVscCBvZiBhIGtub3R0ZWQgcm9wZSwgYW5vdGhlciBnaXJsIGluIGEgdGVhbCBvdXRmaXQgaXMgZGFuZ2xpbmcgYXRobGV0aWNhbGx5IGZyb20gYSBwYWlyIG9mIGhhbmdpbmcgcmluZ3MsIGFuZCBhIHNtYWxsIGJveSBpbiB5ZWxsb3cgc3RhbmRzIGJlbmVhdGggaGVyLCBjbGVhcmx5IGl0Y2hpbmcgZm9yIGhpcyB0dXJuLiBJbiB0aGUgYm90dG9tIGxlZnQsIGEgd29tYW4gXHUyMDE0IHBlcmhhcHMgYW5vdGhlciB0ZWFjaGVyIG9yIGEgcGFyZW50IFx1MjAxNCBhbmQgYSB0aW55IGdpcmwgaW4gcHVycGxlIGFyZSB0b3NzaW5nIGZvb2QgdG8gYSBmbG9jayBvZiB3aGl0ZSBiaXJkcy4gQW5kIHJpZ2h0IGluIHRoZSBmb3JlZ3JvdW5kIHRoZXJlJ3MgYSB0b3VjaGluZyBsaXR0bGUgbW9tZW50OiBhIGJveSBpbiBhIHJlZCBzaGlydCBpcyBjcm91Y2hlZCBkb3duIGNvbWZvcnRpbmcgYSBmcmllbmQgaW4gZ3JlZW4gd2hvIHNlZW1zIHRvIGhhdmUgdGFrZW4gYSB0dW1ibGUgY2hhc2luZyB0aGUgb3JhbmdlIGJhc2tldGJhbGwgdGhhdCdzIGx5aW5nIGJlc2lkZSB0aGVtLiBJdCdzIGEgd2FybSwgZW5lcmdldGljIHNuYXBzaG90IG9mIHNjaG9vbCBsaWZlLiJ9LHsiayI6InQ0IiwibnVtIjo0LCJ0eXBlRW4iOiJNYWtpbmcgUHJlZGljdGlvbnMiLCJwcmVwIjozMCwicmVjIjo2MCwicHJvbXB0IjoiSW4gdGhpcyBwaWN0dXJlLCB3aGF0IGRvIHlvdSB0aGluayB3aWxsIG1vc3QgcHJvYmFibHkgaGFwcGVuIG5leHQ\/IiwiaW1nIjoic2NlbmUiLCJ0aXBzIjp7ImJ1bGxldHMiOlsiRWFjaCBwcmVkaWN0aW9uID0gd2lsbCAvIGJlIGdvaW5nIHRvIC8gd2lsbCBwcm9iYWJseSArIGEgUkVBU09OIGJhc2VkIG9uIGEgZGV0YWlsIGluIHRoZSBwaWN0dXJlLiIsIk1ha2UgM1x1MjAxMzQgcHJlZGljdGlvbnMgYWJvdXQgZGlmZmVyZW50IHBlb3BsZSBcdTIwMTQgZG9uJ3Qgc3RvcCBhdCBvbmUgaWRlYS4iLCJGaW5pc2ggd2l0aCBvbmUgb3ZlcmFsbCBwcmVkaWN0aW9uIGZvciB0aGUgd2hvbGUgc2NlbmUuIiwiU2FtZSBwbGF5Z3JvdW5kIGFzIFRhc2sgMyAtIG5vdyBwcmVkaWN0OiB0aGUgYm95IG9uIHRoZSBzbGlkZSB3aWxsIHJlYWNoIHRoZSBib3R0b20gYW5kIHJ1biBhcm91bmQgZm9yIGFub3RoZXIgdHVybiwgdGhlIGZhbGxlbiBib3kgd2lsbCBiZSBoZWxwZWQgdXAgKG1heWJlIHRha2VuIHRvIHRoZSBzY2hvb2wgbnVyc2UpLCB0aGUgYmlyZHMgd2lsbCBmbHkgYXdheSB3aGVuIHRoZSBjaGlsZHJlbiBydW4gb3ZlciwgdGhlIGdpcmwgb24gdGhlIHJpbmdzIHdpbGwgZHJvcCBkb3duIGFuZCBsZXQgdGhlIGJveSBpbiB5ZWxsb3cgdHJ5LCBhbmQgdGhlIGJlbGwgd2lsbCByaW5nIHRvIGVuZCB0aGUgYnJlYWsuIl0sInBocmFzZXMiOlsiXHUyMDI2aXMgYWJvdXQgdG9cdTIwMjYiLCJIZSdsbCBtb3N0IGxpa2VseVx1MjAyNiIsIkp1ZGdpbmcgYnlcdTIwMjYsIEkgZXhwZWN0XHUyMDI2IiwiV2l0aGluIG1pbnV0ZXMsIFx1MjAyNiJdfSwiczYiOiJJIHRoaW5rIHNldmVyYWwgdGhpbmdzIHdpbGwgaGFwcGVuIG5leHQgaW4gdGhpcyBwbGF5Z3JvdW5kLiBGaXJzdCwgdGhlIGJveSBpbiB0aGUgYmx1ZSBjYXAgd2lsbCByZWFjaCB0aGUgYm90dG9tIG9mIHRoZSByZWQgc2xpZGUsIGFuZCB0aGVuIGhlIHdpbGwgcnVuIGJhY2sgdG8gdGhlIHN0YWlycyB0byBzbGlkZSBhZ2FpbiwgYmVjYXVzZSBjaGlsZHJlbiBuZXZlciBnZXQgdGlyZWQgb2Ygc2xpZGVzLiBTZWNvbmQsIHRoZSBib3kgaW4gdGhlIHJlZCBzaGlydCB3aWxsIGhlbHAgaGlzIGZyaWVuZCBpbiBncmVlbiBzdGFuZCB1cC4gSWYgaGlzIGtuZWUgaHVydHMgYSBsb3QsIHRoZSB0ZWFjaGVyIHdpbGwgdGFrZSBoaW0gdG8gdGhlIHNjaG9vbCBudXJzZSwgYnV0IEkgdGhpbmsgaGUgd2lsbCBiZSBmaW5lIGFuZCBwbGF5IGJhc2tldGJhbGwgYWdhaW4uIFRoaXJkLCB0aGUgZ2lybCBoYW5naW5nIG9uIHRoZSByaW5ncyB3aWxsIGp1bXAgZG93biBzb29uLCBiZWNhdXNlIGhlciBhcm1zIHdpbGwgZ2V0IHRpcmVkLCBhbmQgdGhlIHNtYWxsIGJveSBpbiB5ZWxsb3cgd2lsbCBmaW5hbGx5IGdldCBoaXMgdHVybi4gVGhlIGdpcmwgb24gdGhlIGNsaW1iaW5nIHdhbGwgd2lsbCByZWFjaCB0aGUgdG9wIGFuZCBmZWVsIHZlcnkgcHJvdWQuIFRoZSB3aGl0ZSBiaXJkcyB3aWxsIGZseSBhd2F5IHF1aWNrbHkgd2hlbiBhIGNoaWxkIHJ1bnMgdG93YXJkIHRoZW0uIEFuZCBpbiBhIGZldyBtaW51dGVzLCB0aGUgc2Nob29sIGJlbGwgd2lsbCByaW5nLCB0aGUgYnJlYWsgd2lsbCBmaW5pc2gsIGFuZCB0aGUgdGVhY2hlciB3aWxsIGNhbGwgYWxsIHRoZSBjaGlsZHJlbiBiYWNrIHRvIHRoZWlyIGNsYXNzcm9vbXMuIiwiczkiOiJMb29raW5nIGF0IGFsbCB0aGVzZSBsaXR0bGUgZHJhbWFzIGFib3V0IHRvIHVuZm9sZCwgSSBjYW4gbWFrZSBzb21lIGZhaXJseSBjb25maWRlbnQgcHJlZGljdGlvbnMuIFRoZSBib3kgaW4gdGhlIGJsdWUgY2FwIHdpbGwgaGl0IHRoZSBib3R0b20gb2YgdGhlIHNsaWRlIGFueSBzZWNvbmQgbm93LCBzcHJpbmcgc3RyYWlnaHQgdXAsIGFuZCBzcHJpbnQgYXJvdW5kIHRvIHRoZSBsYWRkZXIgZm9yIGFub3RoZXIgZ28gXHUyMDE0IHRoYXQncyBzaW1wbHkgdGhlIGxhdyBvZiBwbGF5Z3JvdW5kcy4gSW4gdGhlIGZvcmVncm91bmQsIHRoZSBib3kgaW4gcmVkIHdpbGwgcHVsbCBoaXMgZmFsbGVuIGZyaWVuZCB0byBoaXMgZmVldDsganVkZ2luZyBieSB0aGUgd2F5IGhlJ3Mgc2l0dGluZyB1cCwgaXQncyBub3RoaW5nIHNlcmlvdXMsIHNvIEkgZXhwZWN0IGEgcXVpY2sgZHVzdC1vZmYgYW5kIHRoZW4gdGhleSdsbCBiZSBiYWNrIHRvIHRoZWlyIGJhc2tldGJhbGwgZ2FtZSwgdGhvdWdoIGlmIGhpcyBrbmVlIGlzIHNjcmFwZWQsIHRoZSB3YXRjaGluZyB0ZWFjaGVyIHdpbGwgd2FsayBoaW0gb2ZmIHRvIHRoZSBzY2hvb2wgbnVyc2UgZm9yIGEgcGxhc3Rlci4gVGhlIGdpcmwgb24gdGhlIHJpbmdzIGNhbid0IGhhbmcgdGhlcmUgZm9yZXZlciBcdTIwMTQgaGVyIGdyaXAgd2lsbCBnaXZlIG91dCBzaG9ydGx5LCBzaGUnbGwgZHJvcCBuZWF0bHkgdG8gdGhlIHNhbmQsIGFuZCB0aGUgcGF0aWVudCBsaXR0bGUgYm95IGluIHllbGxvdyB3aWxsIGZpbmFsbHkgc2NyYW1ibGUgdXAgZm9yIGhpcyB0dXJuLiBIZXIgZnJpZW5kIG9uIHRoZSBjbGltYmluZyB3YWxsIHdpbGwgbW9zdCBsaWtlbHkgY29ucXVlciB0aGUgdG9wIGFuZCBjZWxlYnJhdGUgbG91ZGx5LiBUaGUgd2hpdGUgYmlyZHMgd2lsbCBzY2F0dGVyIGludG8gdGhlIGFpciB0aGUgbW9tZW50IGFueSBjaGlsZCBjaGFyZ2VzIHRvd2FyZCB0aGVtLCBsZWF2aW5nIHRoZSB3b21hbiBhbmQgdGhlIGxpdHRsZSBnaXJsIGxhdWdoaW5nLiBBbmQgaGFuZ2luZyBvdmVyIGl0IGFsbCwgb2YgY291cnNlLCBpcyB0aGUgaW5ldml0YWJsZSBzY2hvb2wgYmVsbCBcdTIwMTQgd2l0aGluIG1pbnV0ZXMgaXQgd2lsbCByaW5nLCB0aGUgdGVhY2hlciB3aWxsIGNsYXAgaGVyIGhhbmRzLCBhbmQgdGhpcyB3aG9sZSBqb3lmdWwgY2hhb3Mgd2lsbCByZWx1Y3RhbnRseSBmaWxlIGJhY2sgaW5kb29ycy4ifSx7ImsiOiJ0NSIsIm51bSI6NSwidHlwZUVuIjoiQ29tcGFyaW5nIGFuZCBQZXJzdWFkaW5nIiwicGhhc2VkIjp0cnVlLCJjaG9vc2UiOnsicHJlcCI6NjAsInNpdHVhdGlvbiI6IllvdXIgY28td29ya2VyIEVkZGllIHdhbnRzIHRvIGxlYXJuIGhvdyB0byBwbGF5IGEgbXVzaWNhbCBpbnN0cnVtZW50LCBhbmQgaGFzIGFza2VkIGZvciB5b3VyIG9waW5pb24gb24gd2hpY2ggaW5zdHJ1bWVudCBoZSBzaG91bGQgbGVhcm4uIFlvdSBmb3VuZCB0d28gc3VpdGFibGUgb3B0aW9ucy4gVXNpbmcgdGhlIHBpY3R1cmVzIGFuZCBpbmZvcm1hdGlvbiBiZWxvdywgY2hvb3NlIHRoZSBvcHRpb24gdGhhdCB5b3UgcHJlZmVyLiBJbiB0aGUgbmV4dCBzZWN0aW9uLCB5b3Ugd2lsbCBuZWVkIHRvIHBlcnN1YWRlIEVkZGllIHRoYXQgeW91ciBjaG9pY2UgaXMgdGhlIGJldHRlciBjaG9pY2UuIiwibm90ZSI6IklmIHlvdSBkbyBub3QgY2hvb3NlIGFuIG9wdGlvbiwgdGhlIGNvbXB1dGVyIHdpbGwgY2hvb3NlIG9uZSBmb3IgeW91LiBZb3UgZG8gbm90IG5lZWQgdG8gc3BlYWsgZm9yIHRoaXMgcGFydC4iLCJvcHRpb25zIjpbeyJ0aXRsZSI6IlNheG9waG9uZSIsImltZyI6Im9wdEEiLCJidWxsZXRzIjpbInBsYXkgcG9wdWxhciBqYXp6IHNvbmdzIiwiZ3JlYXQgaW5zdHJ1bWVudCB0byBwbGF5IHdpdGggYSBiYW5kIiwicG9ydGFibGUgYW5kIGNhbiBiZSBwbGF5ZWQgYWxtb3N0IGFueXdoZXJlIl19LHsidGl0bGUiOiJFbGVjdHJpYyBLZXlib2FyZCIsImltZyI6Im9wdEIiLCJidWxsZXRzIjpbImltcHJvdmUgdHdvLWhhbmQgY29vcmRpbmF0aW9uIiwiY2FuIHBsYXkgd2l0aCBhIHNpbmdlciwgb3Igc2luZyB0byB5b3VyIG93biBzb25nIiwiYWJsZSB0byBwbHVnIGluIGhlYWRwaG9uZXMgc28gb3RoZXJzIHdpbGwgbm90IGhlYXIgeW91IHBsYXkiXX1dfSwic3BlYWsiOnsicHJlcCI6NjAsInJlYyI6NjAsInByb21wdCI6IkVkZGllIGlzIHN1Z2dlc3RpbmcgYSBkaWZmZXJlbnQgaW5zdHJ1bWVudCAoc2hvd24gYmVsb3cpLiBQZXJzdWFkZSBFZGRpZSB0aGF0IHRoZSBpbnN0cnVtZW50IHlvdSBjaG9zZSBpcyB0aGUgYmV0dGVyIGNob2ljZSBieSBjb21wYXJpbmcgdGhlIHR3by4iLCJvdGhlckxhYmVsIjoiRWRkaWUncyBDaG9pY2UiLCJvdGhlciI6eyJ0aXRsZSI6IlRyaWFuZ2xlIiwiaW1nIjoib3B0T3RoZXIiLCJidWxsZXRzIjpbImdpdmVzIGEgaGlnaC1waXRjaGVkIHJpbmdpbmcgdG9uZSIsInNpbXBsZSBpbnN0cnVtZW50IiwibXVzdCBiZSBwbGF5ZWQgd2l0aCBvdGhlciBpbnN0cnVtZW50cyJdfX0sInRpcHMiOnsiYnVsbGV0cyI6WyJTdHJ1Y3R1cmU6IGFja25vd2xlZGdlIHRoZSBvdGhlciBwZXJzb24ncyBjaG9pY2UgXHUyMTkyIGdpdmUgMlx1MjAxMzMgYWR2YW50YWdlcyBvZiB5b3VycyAoZGlyZWN0IGNvbXBhcmlzb24pIFx1MjE5MiB3cmFwIHVwLiIsIkNvbXBhcmUgdXNpbmcgdGhlIG51bWJlcnMgb24gdGhlIGNhcmRzOiBwcmljZSwgZHVyYXRpb24sIGNhcGFjaXR5LCBleHBlcmllbmNlLiIsIllvdSBkbyBOT1QgbmVlZCB0byBzcGVhayBkdXJpbmcgdGhlIGNob29zaW5nIHN0ZXAgXHUyMDE0IGp1c3QgY2xpY2sgYW4gb3B0aW9uLiIsIlRoZSBzYW1wbGVzIGJlbG93IGNob29zZSB0aGUgRWxlY3RyaWMgS2V5Ym9hcmQgKGhlYWRwaG9uZSBwcmFjdGljZSwgcGxheXMgZnVsbCBzb25ncyBhbG9uZSwgYnVpbGRzIHJlYWwgbXVzaWNhbCBza2lsbHMpLiBJZiB5b3UgcHJlZmVyIHRoZSBTYXhvcGhvbmUsIHN0cmVzcyB0aGUgamF6eiBiYW5kIGFuZ2xlIGFuZCBwb3J0YWJpbGl0eS4gRWl0aGVyIHdheSwgY29udHJhc3Qgd2l0aCB0aGUgdHJpYW5nbGUncyBrZXkgd2Vha25lc3M6IGl0IGNhbm5vdCBiZSBwbGF5ZWQgb24gaXRzIG93bi4iXSwicGhyYXNlcyI6WyJJIHNlZSB3aHkgeW91IGxpa2VcdTIwMjYsIGJ1dFx1MjAyNiIsIkNvbXBhcmVkIHRvXHUyMDI2LCB0aGlzIG9uZVx1MjAyNiIsIkl0J3MgYmV0dGVyIHZhbHVlOiBcdTIwMjYgdmVyc3VzIFx1MjAyNiIsIklmIHRoZSBnb2FsIGlzXHUyMDI2LCB0aGUgY2hvaWNlIGlzIGNsZWFyLiJdfSwiczYiOiJFZGRpZSwgSSBzYXcgdGhhdCB5b3Ugd2FudCB0byBsZWFybiB0aGUgdHJpYW5nbGUsIGJ1dCBwbGVhc2UgbGlzdGVuIHRvIG15IGlkZWEgZmlyc3QuIEkgcmVhbGx5IHRoaW5rIHRoZSBlbGVjdHJpYyBrZXlib2FyZCBpcyBhIG11Y2ggYmV0dGVyIGNob2ljZSBmb3IgeW91LiBIZXJlIGFyZSBteSByZWFzb25zLiBGaXJzdCwgdGhlIGtleWJvYXJkIGlzIGEgY29tcGxldGUgaW5zdHJ1bWVudC4gWW91IGNhbiBwbGF5IGEgZnVsbCBzb25nIGFsb25lIFx1MjAxNCB0aGUgbWVsb2R5IHdpdGggeW91ciByaWdodCBoYW5kIGFuZCB0aGUgY2hvcmRzIHdpdGggeW91ciBsZWZ0IGhhbmQuIFRoZSB0cmlhbmdsZSBvbmx5IG1ha2VzIG9uZSByaW5naW5nIHNvdW5kLCB0aW5nLCBhbmQgeW91IG11c3QgYWx3YXlzIHBsYXkgaXQgd2l0aCBvdGhlciBpbnN0cnVtZW50cy4gWW91IGRvIG5vdCBoYXZlIGEgYmFuZCwgRWRkaWUhIFNlY29uZCwgdGhlIGtleWJvYXJkIGlzIHBlcmZlY3QgZm9yIHByYWN0aXNpbmcgYXQgaG9tZS4gWW91IGNhbiBwbHVnIGluIGhlYWRwaG9uZXMsIHNvIHlvdXIgZmFtaWx5IGFuZCB5b3VyIG5laWdoYm91cnMgd2lsbCBub3QgaGVhciB5b3Ugd2hlbiB5b3UgbWFrZSBtaXN0YWtlcy4gQSB0cmlhbmdsZSBpcyBsb3VkIGFuZCwgaG9uZXN0bHksIGEgbGl0dGxlIGJvcmluZyBhZnRlciBmaXZlIG1pbnV0ZXMuIFRoaXJkLCB3aXRoIGEga2V5Ym9hcmQgeW91IGNhbiBzaW5nIHdoaWxlIHlvdSBwbGF5LCBvciBwbGF5IHdpdGggYSBzaW5nZXIgYXQgcGFydGllcy4gSW1hZ2luZSBwbGF5aW5nIHlvdXIgZmF2b3VyaXRlIHNvbmdzIGF0IHRoZSBvZmZpY2UgcGFydHkhIFRoZSB0cmlhbmdsZSBjYW5ub3QgZG8gdGhhdC4gU28gcGxlYXNlLCBjaG9vc2UgdGhlIGVsZWN0cmljIGtleWJvYXJkLiBZb3Ugd2lsbCBsZWFybiByZWFsIG11c2ljIGFuZCBlbmpveSBpdCBmb3IgbWFueSB5ZWFycy4iLCJzOSI6IkVkZGllLCBJIGhhdmUgdG8gYmUgaG9uZXN0IHdpdGggeW91IGFib3V0IHRoZSB0cmlhbmdsZSBcdTIwMTQgaGVhciBtZSBvdXQsIGJlY2F1c2UgSSBnZW51aW5lbHkgdGhpbmsgdGhlIGVsZWN0cmljIGtleWJvYXJkIHdvdWxkIHNlcnZlIHlvdSBmYXIgYmV0dGVyLCBhbmQgaGVyZSdzIHRoZSBjb21wYXJpc29uLiBGaXJzdCwgY29uc2lkZXIgd2hhdCB5b3UgY2FuIGFjdHVhbGx5IGRvIHdpdGggZWFjaCBpbnN0cnVtZW50LiBUaGUga2V5Ym9hcmQgaXMgY29tcGxldGVseSBzZWxmLXN1ZmZpY2llbnQ6IG1lbG9keSBpbiB0aGUgcmlnaHQgaGFuZCwgaGFybW9ueSBpbiB0aGUgbGVmdCwgYW5kIHdpdGhpbiBhIGZldyBtb250aHMgeW91J3JlIHBsYXlpbmcgZW50aXJlIHNvbmdzIG9uIHlvdXIgb3duLCBldmVuIHNpbmdpbmcgYWxvbmcgb3IgYWNjb21wYW55aW5nIGEgc2luZ2VyLiBUaGUgdHJpYW5nbGUsIGJ5IGNvbnRyYXN0LCBwcm9kdWNlcyBleGFjdGx5IG9uZSBoaWdoLXBpdGNoZWQgdGluZyBcdTIwMTQgZXZlbiB0aGUgY2FyZCBpdHNlbGYgYWRtaXRzIGl0IG11c3QgYmUgcGxheWVkIHdpdGggb3RoZXIgaW5zdHJ1bWVudHMuIFVubGVzcyB5b3UncmUgcGxhbm5pbmcgdG8gam9pbiBhbiBvcmNoZXN0cmEsIHlvdSdkIGVzc2VudGlhbGx5IG93biBhbiBpbnN0cnVtZW50IHlvdSBjYW4gbmV2ZXIgdXNlIGFsb25lLiBTZWNvbmQsIHRoaW5rIGFib3V0IHByYWN0aWNlLiBUaGUga2V5Ym9hcmQgbGV0cyB5b3UgcGx1ZyBpbiBoZWFkcGhvbmVzLCBzbyB5b3UgY2FuIGhhbW1lciBhd2F5IGF0IHNjYWxlcyBhdCBtaWRuaWdodCB3aXRob3V0IGEgc2luZ2xlIGNvbXBsYWludCBmcm9tIHlvdXIgbmVpZ2hib3VycyBcdTIwMTQgdGhhdCBwcml2YWN5IGlzIHByaWNlbGVzcyBmb3IgYSBiZWdpbm5lciB3aG8ncyBzaHkgYWJvdXQgbWlzdGFrZXMuIEFuZCB0aGlyZCwgdGhlcmUncyB0aGUgc2tpbGwgZmFjdG9yOiBrZXlib2FyZCBwbGF5aW5nIGJ1aWxkcyB0d28taGFuZCBjb29yZGluYXRpb24gYW5kIHJlYWwgbXVzaWNhbCB0aGVvcnkgdGhhdCB0cmFuc2ZlcnMgdG8gYW55IG90aGVyIGluc3RydW1lbnQgeW91IG1pZ2h0IHBpY2sgdXAgbGF0ZXIuIFRoZSB0cmlhbmdsZSB3aWxsIHRlYWNoIHlvdVx1MjAyNiB0aW1pbmcsIGF0IGJlc3QuIEkgZ2V0IHRoYXQgaXQgbG9va3MgcmVmcmVzaGluZ2x5IHNpbXBsZSwgYnV0IHNpbXBsZSBhbHNvIG1lYW5zIGxpbWl0ZWQuIEdvIHdpdGggdGhlIGtleWJvYXJkLCBFZGRpZSBcdTIwMTQgZnV0dXJlIHlvdSwgcGxheWluZyByZXF1ZXN0cyBhdCB0aGUgb2ZmaWNlIHBhcnR5LCB3aWxsIHRoYW5rIG1lLiJ9LHsiayI6InQ2IiwibnVtIjo2LCJ0eXBlRW4iOiJEZWFsaW5nIHdpdGggYSBEaWZmaWN1bHQgU2l0dWF0aW9uIiwicHJlcCI6NjAsInJlYyI6NjAsInByb21wdCI6IllvdSB3b3JrIGluIGEgcmV0YWlsIHN0b3JlLiBZb3UgaGF2ZSBhIGNvLXdvcmtlciB3aG8gYWx3YXlzIHRha2VzIGEgdmVyeSBsb25nIGx1bmNoIGJyZWFrIHNvIHNoZSBjYW4gZWF0IHdpdGggaGVyIGZyaWVuZC4gVGhpcyBtZWFucyB0aGF0IHlvdSBhbHdheXMgaGF2ZSB0byB0YWtlIGEgc2hvcnQgbHVuY2ggYnJlYWssIGJlY2F1c2UgdGhlIGJvc3MgaGFzIHN0cmljdCBydWxlcyBhYm91dCB3aGF0IHRpbWUgeW91IG11c3QgY29tZSBiYWNrLiIsImNob29zZU9uZSI6WyJUYWxrIHRvIHlvdXIgY28td29ya2VyLiBFeHBsYWluIHRoZSBwcm9ibGVtIGFuZCBob3cgeW91IHdvdWxkIGxpa2UgdG8gcmVzb2x2ZSBpdC4iLCJUYWxrIHRvIHlvdXIgYm9zcy4gRXhwbGFpbiB3aGF0IHRoZSBwcm9ibGVtIGlzIGFuZCB3aGF0IHlvdSB0aGluayB5b3VyIGJvc3Mgc2hvdWxkIGRvLiJdLCJpbWciOm51bGwsInRpcHMiOnsiYnVsbGV0cyI6WyJQaWNrIE9ORSBvcHRpb24gKEVJVEhFUiBvciBPUikgaW1tZWRpYXRlbHkgXHUyMDE0IGRvbid0IHdhc3RlIHRpbWUgZGVjaWRpbmcuIiwiU3RydWN0dXJlOiBvcGVuIHBvbGl0ZWx5IFx1MjE5MiBleHBsYWluIHlvdXIgcmVhc29ucy9ldmlkZW5jZSBcdTIxOTIgcHJvcG9zZSBhIHNvbHV0aW9uIFx1MjE5MiBzbW9vdGggdGhpbmdzIG92ZXIuIiwiU3RheSBjYWxtIGFuZCByZXNwZWN0ZnVsIFx1MjAxNCBob3cgeW91IGhhbmRsZSB0aGUgc2l0dWF0aW9uIGlzIHBhcnQgb2Ygd2hhdCdzIGJlaW5nIHJhdGVkIChMaXN0ZW5hYmlsaXR5KS4iLCJUaGUgc2FtcGxlcyBjaG9vc2Ugb3B0aW9uIDEgKHRhbGsgdG8gdGhlIGNvLXdvcmtlciBkaXJlY3RseSBcdTIwMTQgaXQga2VlcHMgdGhlIHBlYWNlIGFuZCBnaXZlcyBoZXIgYSBjaGFuY2UgdG8gZml4IGl0KS4gU3RydWN0dXJlOiBmcmllbmRseSBvcGVuaW5nIFx1MjE5MiBkZXNjcmliZSB0aGUgcHJvYmxlbSB3aXRoIGEgY29uY3JldGUgZXhhbXBsZSBcdTIxOTIgc2F5IGhvdyBpdCBtYWtlcyB5b3UgZmVlbCBcdTIxOTIgcHJvcG9zZSBhIGZhaXIgc29sdXRpb24gKGFsdGVybmF0ZSB3aG8gZ29lcyBmaXJzdCAvIGFncmVlIG9uIDMwIG1pbnV0ZXMgZWFjaCkgXHUyMTkyIGVuZCBwb3NpdGl2ZWx5LiBJZiB5b3UgY2hvb3NlIG9wdGlvbiAyLCBzdGF5IGZhY3R1YWwgYW5kIGF2b2lkIHNvdW5kaW5nIGxpa2UgeW91IGFyZSBqdXN0IGNvbXBsYWluaW5nIGFib3V0IGhlci4iXSwicGhyYXNlcyI6WyJDb3VsZCBJIGp1bXAgaW4gZm9yIGEgbW9tZW50PyIsIkkgdW5kZXJzdGFuZCB5b3VyIGNvbmNlcm4sIGJ1dFx1MjAyNiIsIkhvdyBhYm91dCB3ZVx1MjAyNj8iLCJJJ2xsIHRha2UgcmVzcG9uc2liaWxpdHkgZm9yIHRoaXMuIl19LCJzNiI6IkhpIFNhbmRyYSwgZG8geW91IGhhdmUgYSBtaW51dGU\/IEkgd2FudCB0byB0YWxrIGFib3V0IG91ciBsdW5jaCBicmVha3MsIGJlY2F1c2UgdGhlcmUgaXMgYSBzbWFsbCBwcm9ibGVtLCBhbmQgSSBiZWxpZXZlIHdlIGNhbiBmaXggaXQgdG9nZXRoZXIuIFlvdSBrbm93IHRoYXQgb3VyIGJvc3MgaGFzIGEgc3RyaWN0IHJ1bGU6IG9uZSBvZiB1cyBtdXN0IGFsd2F5cyBiZSBiYWNrIGluIHRoZSBzdG9yZSBvbiB0aW1lLiBCdXQgcmVjZW50bHksIHlvdSBvZnRlbiB0YWtlIGEgdmVyeSBsb25nIGx1bmNoIHdpdGggeW91ciBmcmllbmQgXHUyMDE0IHNvbWV0aW1lcyBtb3JlIHRoYW4gYW4gaG91ci4gWWVzdGVyZGF5LCBmb3IgZXhhbXBsZSwgeW91IGNhbWUgYmFjayBhdCB0d28gbydjbG9jaywgc28gSSBoYWQgb25seSBmaWZ0ZWVuIG1pbnV0ZXMgdG8gZWF0IG15IHNhbmR3aWNoLiBUaGlzIGlzIG5vdCBmYWlyIHRvIG1lLCBhbmQgaG9uZXN0bHksIEkgZmluaXNoIG15IGFmdGVybm9vbiBzaGlmdCBmZWVsaW5nIHRpcmVkIGFuZCBodW5ncnkuIEkgdW5kZXJzdGFuZCB0aGF0IGx1bmNoIHdpdGggeW91ciBmcmllbmQgaXMgaW1wb3J0YW50IHRvIHlvdSwgYW5kIEkgZG8gbm90IHdhbnQgdG8gdGFrZSB0aGF0IGF3YXkuIFNvIGhlcmUgaXMgbXkgaWRlYTogd2UgY2FuIG1ha2UgYSBzY2hlZHVsZS4gT25lIGRheSB5b3UgZ28gZmlyc3QgYW5kIHRha2UgYSBmdWxsIGJyZWFrLCB0aGUgbmV4dCBkYXkgSSBnbyBmaXJzdC4gT3Igd2UgY2FuIGJvdGggYWdyZWUgb24gZm9ydHktZml2ZSBtaW51dGVzIGVhY2guIFdoYXQgZG8geW91IHRoaW5rPyBJIGFtIHN1cmUgd2UgY2FuIGZpbmQgYSBmYWlyIHNvbHV0aW9uLCBiZWNhdXNlIEkgcmVhbGx5IGxpa2Ugd29ya2luZyB3aXRoIHlvdS4iLCJzOSI6IlNhbmRyYSwgaGF2ZSB5b3UgZ290IGEgbW9tZW50PyBJJ2QgcmF0aGVyIHRhbGsgYWJvdXQgdGhpcyBkaXJlY3RseSB3aXRoIHlvdSB0aGFuIGxldCBpdCB0dXJuIGludG8gc29tZXRoaW5nIGJpZ2dlci4gSXQncyBhYm91dCBvdXIgbHVuY2ggYnJlYWtzLiBBcyB5b3Uga25vdywgdGhlIGJvc3MgaXMgc3RyaWN0IGFib3V0IGNvdmVyYWdlIFx1MjAxNCBvbmUgb2YgdXMgaGFzIHRvIGJlIGJhY2sgb24gdGhlIGZsb29yIG9uIHRpbWUsIHdoaWNoIG1lYW5zIG15IGJyZWFrIGNhbiBvbmx5IHN0YXJ0IHdoZW4geW91cnMgZW5kcy4gTGF0ZWx5IHlvdXIgbHVuY2hlcyB3aXRoIHlvdXIgZnJpZW5kIGhhdmUgYmVlbiBydW5uaW5nIHF1aXRlIGxvbmc7IHllc3RlcmRheSwgZm9yIGluc3RhbmNlLCB5b3UgZ290IGJhY2sgYWZ0ZXIgdHdvLCB3aGljaCBsZWZ0IG1lIGJhcmVseSBmaWZ0ZWVuIG1pbnV0ZXMgdG8gYm9sdCBkb3duIGEgc2FuZHdpY2ggYmVmb3JlIHRoZSBhZnRlcm5vb24gcnVzaC4gSSB3YW50IHRvIGJlIGZhaXIgaGVyZSBcdTIwMTQgSSBjb21wbGV0ZWx5IHVuZGVyc3RhbmQgdGhhdCBjYXRjaGluZyB1cCB3aXRoIHlvdXIgZnJpZW5kIG1hdHRlcnMsIGFuZCBJJ20gbm90IGFza2luZyB5b3UgdG8gZ2l2ZSB0aGF0IHVwLiBCdXQgdGhlIGN1cnJlbnQgcGF0dGVybiBtZWFucyBJJ20gcmVndWxhcmx5IHBheWluZyBmb3IgaXQgd2l0aCBteSBvd24gYnJlYWssIGFuZCBieSB0aGUgZW5kIG9mIHRoZSBkYXkgSSdtIGV4aGF1c3RlZCBhbmQsIGZyYW5rbHksIGEgYml0IHJlc2VudGZ1bCBcdTIwMTQgYW5kIEkgZG9uJ3Qgd2FudCB0byBmZWVsIHRoYXQgd2F5IGFib3V0IGEgY29sbGVhZ3VlIEkgbGlrZS4gU28gbGV0IG1lIHN1Z2dlc3QgYSBmaXg6IHdlIGNvdWxkIGFsdGVybmF0ZSB3aG8gdGFrZXMgdGhlIGZpcnN0LCBsb25nZXIgYnJlYWsgXHUyMDE0IHlvdSBnZXQgeW91ciBwcm9wZXIgbHVuY2ggd2l0aCB5b3VyIGZyaWVuZCBvbiBNb25kYXlzIGFuZCBXZWRuZXNkYXlzLCBJIGdldCBtaW5lIG9uIHRoZSBvdGhlciBkYXlzIFx1MjAxNCBvciB3ZSBjb3VsZCBzaW1wbHkgYWdyZWUgdG8gc3BsaXQgdGhlIHRpbWUgZXZlbmx5LCBmb3J0eS1maXZlIG1pbnV0ZXMgZWFjaCwgd2hvZXZlciBnb2VzIGZpcnN0LiBFaXRoZXIgd2F5IHdvcmtzIGZvciBtZS4gQ2FuIHdlIHNldHRsZSBvbiBvbmUgb2YgdGhvc2U\/IEknZCBtdWNoIHJhdGhlciBzb2x2ZSBpdCBiZXR3ZWVuIHVzIHRoYW4gaGF2ZSB0aGUgYm9zcyBpbXBvc2Ugc29tZXRoaW5nIG9uIGJvdGggb2YgdXMuIn0seyJrIjoidDciLCJudW0iOjcsInR5cGVFbiI6IkV4cHJlc3NpbmcgT3BpbmlvbnMiLCJwcmVwIjozMCwicmVjIjo5MCwicHJvbXB0IjoiRG8geW91IHRoaW5rIHRoZSBnb3Zlcm5tZW50IHNob3VsZCBsaW1pdCB0aGUgYW1vdW50IG9mIHN1Z2FyIGluIGRyaW5rcyBhbmQgZm9vZCBzb2xkIGF0IHJlc3RhdXJhbnRzIGFuZCBzdXBlcm1hcmtldHMgdG8gcHJvdGVjdCBwZW9wbGUncyBoZWFsdGg\/IEV4cGxhaW4geW91ciByZWFzb25zLiIsInByb21wdExlYWQiOiJBbnN3ZXIgdGhlIGZvbGxvd2luZyBxdWVzdGlvbi4iLCJpbWciOm51bGwsInRpcHMiOnsiYnVsbGV0cyI6WyJTdGF0ZSB5b3VyIHBvc2l0aW9uIGNsZWFybHkgaW4gdGhlIGZpcnN0IHNlbnRlbmNlIChwaWNraW5nIG9uZSBzaWRlIGlzIGVhc2llciB0byBkZXZlbG9wIHRoYW4gc3RheWluZyBuZXV0cmFsKS4iLCJHaXZlIDJcdTIwMTMzIHJlYXNvbnMsIGVhY2ggZGV2ZWxvcGVkIG92ZXIgMlx1MjAxMzMgc2VudGVuY2VzIHdpdGggYW4gZXhhbXBsZTsgOTAgc2Vjb25kcyBpcyBsb25nIFx1MjAxNCBkb24ndCBzdG9wIGVhcmx5LiIsIkFja25vd2xlZGdlIHRoZSBvdGhlciBzaWRlIGluIG9uZSBzZW50ZW5jZSAoVGhhdCBzYWlkLCBcdTIwMjYpIHRoZW4gY29uY2x1ZGUgXHUyMDE0IGl0IHNob3dzIGJhbGFuY2VkIHRoaW5raW5nLiIsIlBpY2sgb25lIHNpZGUgKHRoZSBzYW1wbGVzIGFyZ3VlIFlFUyAtIHRoZSBnb3Zlcm5tZW50IHNob3VsZCBsaW1pdCBzdWdhcikuIENvbmNyZXRlIHJlYXNvbnM6IG9iZXNpdHkgYW5kIGRpYWJldGVzIGFyZSBwdWJsaWMgaGVhbHRoIGNyaXNlcyB0aGF0IGNvc3QgZXZlcnlvbmUsIGhpZGRlbiBzdWdhciBtYWtlcyBwZXJzb25hbCBjaG9pY2UgYW4gaWxsdXNpb24sIGFuZCBzaW1pbGFyIHJ1bGVzIGFscmVhZHkgd29yayBmb3IgdG9iYWNjbyBhbmQgYWxjb2hvbCAtIHRoZW4gY29uY2VkZSBvbmUgc2VudGVuY2UgYWJvdXQgcGVyc29uYWwgZnJlZWRvbSBhbmQgYnVzaW5lc3MgY29uY2VybnMuIl0sInBocmFzZXMiOlsiSWYgSSBoYWQgdG8gY2hvb3NlLCBJJ2Qgc2F5XHUyMDI2IiwiTXkgbWFpbiByZWFzb24gaXNcdTIwMjYiLCJGb3IgZXhhbXBsZSwgXHUyMDI2IiwiVGhhdCBzYWlkLCBcdTIwMjYiLCJBbGwgdGhpbmdzIGNvbnNpZGVyZWQsIFx1MjAyNiJdfSwiczYiOiJZZXMsIEkgdGhpbmsgdGhlIGdvdmVybm1lbnQgc2hvdWxkIGxpbWl0IHRoZSBhbW91bnQgb2Ygc3VnYXIgaW4gZm9vZCBhbmQgZHJpbmtzLCBhbmQgSSBoYXZlIHN0cm9uZyByZWFzb25zIGZvciBteSBvcGluaW9uLiBGaXJzdCwgdG9vIG11Y2ggc3VnYXIgaXMgbWFraW5nIHBlb3BsZSB2ZXJ5IHNpY2suIE1hbnkgcGVvcGxlIHRvZGF5IGhhdmUgb2Jlc2l0eSBhbmQgZGlhYmV0ZXMsIGluY2x1ZGluZyB5b3VuZyBjaGlsZHJlbi4gU2ljayBwZW9wbGUgbmVlZCBob3NwaXRhbHMgYW5kIG1lZGljaW5lLCBhbmQgdGhpcyBjb3N0cyBhIGxvdCBvZiBtb25leSBmb3IgdGhlIHdob2xlIGNvdW50cnkuIElmIHRoZXJlIGlzIGxlc3Mgc3VnYXIgaW4gZm9vZCwgcGVvcGxlIHdpbGwgYmUgaGVhbHRoaWVyLCBhbmQgdGhlIGdvdmVybm1lbnQgd2lsbCBzYXZlIG1vbmV5LiBTZWNvbmQsIG1hbnkgcGVvcGxlIGRvIG5vdCBrbm93IGhvdyBtdWNoIHN1Z2FyIHRoZXkgZWF0LiBTdWdhciBpcyBoaWRkZW4gZXZlcnl3aGVyZSBcdTIwMTQgaW4gYnJlYWQsIGluIHNhdWNlLCBpbiB5b2d1cnQsIGV2ZW4gaW4gc28tY2FsbGVkIGhlYWx0aHkganVpY2UuIFBlb3BsZSBjYW5ub3QgbWFrZSBhIGdvb2QgY2hvaWNlIHdoZW4gdGhleSBjYW5ub3Qgc2VlIHRoZSBwcm9ibGVtLiBBIGxpbWl0IHdpbGwgcHJvdGVjdCBldmVyeW9uZSBhdXRvbWF0aWNhbGx5LiBTb21lIHBlb3BsZSBzYXkgdGhpcyB0YWtlcyBhd2F5IG91ciBmcmVlZG9tLCBhbmQgY29tcGFuaWVzIHNheSB0aGV5IHdpbGwgbG9zZSBtb25leS4gSSB1bmRlcnN0YW5kLCBidXQgSSBkbyBub3QgYWdyZWUuIFdlIGFscmVhZHkgaGF2ZSBydWxlcyBmb3IgY2lnYXJldHRlcyBhbmQgYWxjb2hvbCwgYW5kIHRob3NlIHJ1bGVzIHNhdmUgbGl2ZXMuIFN1Z2FyIGlzIGFsc28gZGFuZ2Vyb3VzIHdoZW4gdGhlcmUgaXMgdG9vIG11Y2ggb2YgaXQuIFNvLCBpbiBteSBvcGluaW9uLCBhIHN1Z2FyIGxpbWl0IGlzIGEgZ29vZCBpZGVhIGZvciBwdWJsaWMgaGVhbHRoLiIsInM5IjoiWWVzLCBvbiBiYWxhbmNlIEkgZmlybWx5IGJlbGlldmUgdGhlIGdvdmVybm1lbnQgc2hvdWxkIGxpbWl0IHN1Z2FyIGxldmVscyBpbiBmb29kIGFuZCBkcmlua3MsIGFuZCBsZXQgbWUgZXhwbGFpbiB3aHkuIFRoZSBmaXJzdCByZWFzb24gaXMgdGhlIHNoZWVyIHNjYWxlIG9mIHRoZSBwdWJsaWMgaGVhbHRoIGNyaXNpcy4gUmF0ZXMgb2Ygb2Jlc2l0eSBhbmQgdHlwZSAyIGRpYWJldGVzIGhhdmUgZXhwbG9kZWQgb3ZlciB0aGUgcGFzdCBmZXcgZGVjYWRlcywgaW5jcmVhc2luZ2x5IGFtb25nIGNoaWxkcmVuLCBhbmQgdGhlIGNvc3RzIGRvbid0IHN0YXkgcHJpdmF0ZSBcdTIwMTQgdGhleSBsYW5kIG9uIHRoZSBwdWJsaWMgaGVhbHRoY2FyZSBzeXN0ZW0sIHdoaWNoIGV2ZXJ5IHRheHBheWVyIGZ1bmRzLiBXaGVuIGEgcHJvZHVjdCBpcyBkZW1vbnN0cmFibHkgZHJpdmluZyBhIG5hdGlvbmFsIGVwaWRlbWljLCByZWd1bGF0aW9uIHN0b3BzIGJlaW5nIGludGVyZmVyZW5jZSBhbmQgc3RhcnRzIGJlaW5nIHJlc3BvbnNpYmlsaXR5LiBNeSBzZWNvbmQgcmVhc29uIGlzIHRoYXQgdGhlIGlkZWEgb2YgZnJlZSBwZXJzb25hbCBjaG9pY2UgYXJvdW5kIHN1Z2FyIGlzIGxhcmdlbHkgYW4gaWxsdXNpb24uIFN1Z2FyIGlzIGhpZGRlbiBpbiBwcmFjdGljYWxseSBldmVyeXRoaW5nIFx1MjAxNCBwYXN0YSBzYXVjZSwgc2FuZHdpY2ggYnJlYWQsIGJyZWFrZmFzdCBjZXJlYWwsIHlvZ3VydCBtYXJrZXRlZCBhcyBoZWFsdGh5IFx1MjAxNCBvZnRlbiBpbiBxdWFudGl0aWVzIG5vIHJlYXNvbmFibGUgcGVyc29uIHdvdWxkIGV4cGVjdC4gQ29uc3VtZXJzIGNhbid0IG9wdCBvdXQgb2Ygd2hhdCB0aGV5IGNhbid0IHNlZSwgd2hlcmVhcyBhIG1hbnVmYWN0dXJpbmcgbGltaXQgcHJvdGVjdHMgZXZlcnlvbmUgYnkgZGVmYXVsdCwgbm8gbGFiZWwtcmVhZGluZyBkZWdyZWUgcmVxdWlyZWQuIEFuZCB0aGlyZCwgd2UgaGF2ZSBzdWNjZXNzZnVsIHByZWNlZGVudHM6IHdlIHJlZ3VsYXRlIHRvYmFjY28sIGFsY29ob2wgYW5kIHRyYW5zIGZhdHMgcHJlY2lzZWx5IGJlY2F1c2UgdGhlIG1hcmtldCwgbGVmdCBhbG9uZSwgd2FzIGhhcHB5IHRvIHByb2ZpdCBmcm9tIGhhcm0uIFNldmVyYWwgY291bnRyaWVzIHRoYXQgaW50cm9kdWNlZCBzdWdhciB0YXhlcyBoYXZlIGFscmVhZHkgc2VlbiBtYW51ZmFjdHVyZXJzIHF1aWV0bHkgcmVmb3JtdWxhdGUgdGhlaXIgcmVjaXBlcyBcdTIwMTQgcHJvb2YgdGhhdCB0aGVzZSBwb2xpY2llcyB3b3JrLiBJJ2xsIGdyYW50IHRoZSBjb3VudGVyLWFyZ3VtZW50czogc29tZSBzZWUgaXQgYXMgbmFubnktc3RhdGUgb3ZlcnJlYWNoLCBhbmQgZm9vZCBjb21wYW5pZXMgd29ycnkgYWJvdXQgY29zdHMuIEJ1dCBwZXJzb25hbCBmcmVlZG9tIHRvIGNob29zZSBkZXNzZXJ0IHN1cnZpdmVzIHBlcmZlY3RseSB3ZWxsIHdoZW4gdGhlIGRlc3NlcnQgc2ltcGx5IGNvbnRhaW5zIGEgdGhpcmQgbGVzcyBzdWdhci4gR2l2ZW4gdGhlIHN0YWtlcyBmb3IgcHVibGljIGhlYWx0aCwgSSdkIHNheSB0aGUgZ292ZXJubWVudCBub3Qgb25seSBtYXkgYWN0IFx1MjAxNCBpdCBzaG91bGQuIn0seyJrIjoidDgiLCJudW0iOjgsInR5cGVFbiI6IkRlc2NyaWJpbmcgYW4gVW51c3VhbCBTaXR1YXRpb24iLCJwcmVwIjozMCwicmVjIjo2MCwicHJvbXB0IjoiWW91IGFyZSBzaG9wcGluZyBpbiBhIGZ1cm5pdHVyZSBzdG9yZSBhbmQgc2VlIGFuIGludGVyZXN0aW5nIGJlZC4gWW91IGhhdmUgYSBmcmllbmQsIEplcnJ5LCB3aG8gbGlrZXMgdW51c3VhbCBmdXJuaXR1cmUuIENhbGwgSmVycnksIGRlc2NyaWJlIGluIGRldGFpbCB3aGF0IHRoZSBiZWQgaXMgbGlrZSwgYW5kIGFzayBoaW0gaWYgaGUgd291bGQgbGlrZSB0byBjb25zaWRlciBidXlpbmcgaXQgZm9yIGhpcyBob21lLiIsImltZyI6InVudXN1YWwiLCJ0aXBzIjp7ImJ1bGxldHMiOlsiVGhpcyBpcyBhIFBIT05FIENBTEw6IGdyZWV0IHRoZSByaWdodCBwZXJzb24gKHRoZSBwb2xpY2UgLyB5b3VyIGZyaWVuZCksIHRoZW4gc2F5IHdoZXJlIHlvdSBhcmUuIiwiRGVzY3JpYmUgZnJvbSBnZW5lcmFsIHRvIHNwZWNpZmljOyB0aGUgcGljdHVyZSBpcyBtZWFudCB0byBiZSBzdHJhbmdlIFx1MjAxNCBqdXN0IGRlc2NyaWJlIHdoYXQgeW91IHNlZSwgdXNpbmcgJ0l0IGxvb2tzIGxpa2UgLyBhcyBpZlx1MjAyNicuIiwiRW5kIHdpdGggYSByZXF1ZXN0IGZvciBhY3Rpb24gKHNlbmQgYSBwYXRyb2wgLyBhc2sgd2hlcmUgdG8gYnV5KS4iLCJUaGlzIGlzIGEgcGhvbmUgY2FsbCB0byBKZXJyeS4gS2V5IGRldGFpbHM6IHRoZSBiZWQgaGFuZ3MgaW5zaWRlIGEgZ2lhbnQgd29vZGVuIHJpbmcsIGxpa2UgYSBodWdlIGhvb3Agc3RhbmRpbmcgb24gdGhlIGZsb29yIC0gdGhlIG1hdHRyZXNzIHNpdHMgYWNyb3NzIHRoZSBtaWRkbGUgb2YgdGhlIGNpcmNsZSwgdGhlcmUgaXMgYSBzdHJpcGVkIGNhbm9weSBpbiBncmVlbiwgb3JhbmdlIGFuZCB5ZWxsb3cgY3VydmluZyBvdmVyIHRoZSB0b3AsIHB1cnBsZSBhbmQgd2hpdGUgcGlsbG93cyBhbmQgYSBwdXJwbGUgYmxhbmtldCwgYSBzbWFsbCB3b29kZW4gbmlnaHQgdGFibGUgYmVzaWRlIGl0LCBhbmQgcGxhbnRzIGluIHZhc2VzIGFyb3VuZCBpdC4gRW5kIGJ5IGFza2luZyBKZXJyeSBpZiBoZSB3YW50cyB0byBjb21lIGFuZCBzZWUgaXQgYmVmb3JlIHNvbWVvbmUgZWxzZSBidXlzIGl0LiJdLCJwaHJhc2VzIjpbIkknbSBjYWxsaW5nIHRvIHJlcG9ydFx1MjAyNiIsIlBpY3R1cmUgdGhpczogXHUyMDI2IiwiSXQgbG9va3MgYXMgaWZcdTIwMjYiLCJDb3VsZCB5b3Ugc2VuZFx1MjAyNiAvIERvIHlvdSBrbm93IHdoZXJlXHUyMDI2PyJdfSwiczYiOiJIaSBKZXJyeSwgaXQncyBtZSEgSSBhbSBhdCB0aGUgZnVybml0dXJlIHN0b3JlIG9uIEtpbmcgU3RyZWV0IHJpZ2h0IG5vdywgYW5kIEkganVzdCBmb3VuZCBhIGJlZCB0aGF0IGlzIHBlcmZlY3QgZm9yIHlvdS4gWW91IGxvdmUgdW51c3VhbCBmdXJuaXR1cmUsIGFuZCBiZWxpZXZlIG1lLCBJIGhhdmUgbmV2ZXIgc2VlbiBhIGJlZCBsaWtlIHRoaXMgaW4gbXkgbGlmZS4gTGV0IG1lIGRlc2NyaWJlIGl0LiBUaGUgd2hvbGUgYmVkIGlzIGluc2lkZSBhIGdpYW50IHdvb2RlbiByaW5nIFx1MjAxNCBhIGh1Z2UgY2lyY2xlIHRoYXQgc3RhbmRzIG9uIHRoZSBmbG9vciwgbWF5YmUgdGhyZWUgbWV0cmVzIHRhbGwuIFRoZSBtYXR0cmVzcyBnb2VzIGFjcm9zcyB0aGUgbWlkZGxlIG9mIHRoZSBjaXJjbGUsIHNvIGl0IGxvb2tzIGxpa2UgdGhlIGJlZCBpcyBmbG9hdGluZyBpbnNpZGUgYSBiaWcgaG9vcC4gT3ZlciB0aGUgdG9wIG9mIHRoZSBjaXJjbGUsIHRoZXJlIGlzIGEgYmVhdXRpZnVsIHN0cmlwZWQgY2Fub3B5IGluIGdyZWVuLCBvcmFuZ2UsIGFuZCB5ZWxsb3cgY29sb3VycywgbGlrZSBhIHJhaW5ib3cgcm9vZi4gVGhlIGJlZCBoYXMgcHVycGxlIGFuZCB3aGl0ZSBwaWxsb3dzIGFuZCBhIHNvZnQgcHVycGxlIGJsYW5rZXQuIE5leHQgdG8gaXQsIHRoZXJlIGlzIGEgc21hbGwgd29vZGVuIG5pZ2h0IHRhYmxlLCBhbmQgdGhlcmUgYXJlIGdyZWVuIHBsYW50cyBpbiB5ZWxsb3cgdmFzZXMgYXJvdW5kIGl0LiBJdCBsb29rcyBsaWtlIGZ1cm5pdHVyZSBmcm9tIGEgbW92aWUhIEkgdGhpbmsgaXQgd291bGQgbG9vayBhbWF6aW5nIGluIHlvdXIgYmVkcm9vbS4gRG8geW91IHdhbnQgdG8gY29tZSBhbmQgc2VlIGl0PyBJIGNhbiB3YWl0IGZvciB5b3UgaGVyZSwgYnV0IGh1cnJ5IFx1MjAxNCBJIGFtIHN1cmUgc29tZWJvZHkgZWxzZSB3aWxsIGJ1eSBpdCBzb29uISIsInM5IjoiSmVycnksIHlvdSBhcmUgbm90IGdvaW5nIHRvIGJlbGlldmUgd2hhdCBJJ20gbG9va2luZyBhdCByaWdodCBub3cuIEknbSBhdCB0aGF0IGJpZyBmdXJuaXR1cmUgc3RvcmUgb24gS2luZyBTdHJlZXQsIGFuZCBJJ3ZlIGp1c3Qgc3R1bWJsZWQgYWNyb3NzIHF1aXRlIHBvc3NpYmx5IHRoZSBtb3N0IGV4dHJhb3JkaW5hcnkgYmVkIEkndmUgZXZlciBzZWVuIFx1MjAxNCBhbmQgZ2l2ZW4geW91ciB0YXN0ZSBmb3IgdW51c3VhbCBmdXJuaXR1cmUsIEkgaGFkIHRvIGNhbGwgeW91IGltbWVkaWF0ZWx5LiBQaWN0dXJlIHRoaXM6IHRoZSBlbnRpcmUgYmVkIGlzIGJ1aWx0IGluc2lkZSBhIGdpYW50IHdvb2RlbiByaW5nLCBhbiBlbm9ybW91cyBwb2xpc2hlZCBob29wIHRoYXQgc3RhbmRzIHVwcmlnaHQgb24gdGhlIGZsb29yLCBlYXNpbHkgdGhyZWUgbWV0cmVzIGFjcm9zcy4gVGhlIG1hdHRyZXNzIGlzIHN1c3BlbmRlZCByaWdodCBhY3Jvc3MgdGhlIG1pZGRsZSBvZiB0aGUgY2lyY2xlLCBzbyB0aGUgd2hvbGUgdGhpbmcgbG9va3MgbGlrZSBhIGJlZCBmbG9hdGluZyBpbnNpZGUgYSB3b29kZW4gaGFsby4gQXJjaGluZyBvdmVyIHRoZSB0b3Agb2YgdGhlIHJpbmcgdGhlcmUncyBhIGdvcmdlb3VzIHN0cmlwZWQgY2Fub3B5IGluIGdyZWVuLCBvcmFuZ2UgYW5kIHllbGxvdyBcdTIwMTQgYWxtb3N0IGxpa2UgYSByYWluYm93IHN0cmV0Y2hlZCBvdmVyIHRoZSBiZWQgXHUyMDE0IGFuZCBpdCdzIGRyZXNzZWQgd2l0aCBwbHVtcCBwdXJwbGUgYW5kIHdoaXRlIHBpbGxvd3MgYW5kIGEgcmljaCBwdXJwbGUgZHV2ZXQuIFRoZXkndmUgc3R5bGVkIGl0IGJlYXV0aWZ1bGx5IHRvbzogYSBsaXR0bGUgd29vZGVuIG5pZ2h0c3RhbmQgd2l0aCBhIHBpbmsgZmxvd2VyIHBvdCBiZXNpZGUgaXQsIGFuZCBsZWFmeSBwbGFudHMgaW4gY2VyYW1pYyB2YXNlcyBvbiBlaXRoZXIgc2lkZS4gSG9uZXN0bHksIGl0IGxvb2tzIGxpa2Ugc29tZXRoaW5nIG91dCBvZiBhIGRlc2lnbmVyIG1hZ2F6aW5lIG9yIGEgZmFudGFzeSBmaWxtIHNldC4gSXQgd291bGQgYmUgdGhlIGFic29sdXRlIGNlbnRyZXBpZWNlIG9mIHlvdXIgcGxhY2UuIFdoeSBkb24ndCB5b3UgaG9wIGluIHRoZSBjYXIgYW5kIGNvbWUgaGF2ZSBhIGxvb2sgYmVmb3JlIHNvbWVvbmUgc25hcHMgaXQgdXA\/IEknbGwgaGFuZyBhcm91bmQgYnkgdGhlIGRpc3BsYXkgXHUyMDE0IHRydXN0IG1lLCB0aGlzIGlzIHZlcnkgbXVjaCB5b3VyIGtpbmQgb2YgY3JhenkuIn1dLCJ1aSI6eyJzdGFydFRlc3QiOiJTdGFydCB0aGUgdGVzdCIsIm1pY0VuYWJsZSI6IkVuYWJsZSBtaWNyb3Bob25lIiwibWljUmVhZHkiOiJNaWNyb3Bob25lIHJlYWR5IiwibWljQmxvY2tlZCI6Ik1pY3JvcGhvbmUgaXMgYmxvY2tlZCBvciB1bmF2YWlsYWJsZSBcdTIwMTQgdGhlIHBhZ2Ugd2lsbCBydW4gaW4gdGltZXItb25seSBtb2RlICh5b3UgY2FuIHN0aWxsIHByYWN0aXNlIHNwZWFraW5nIGFsb25nIHdpdGggdGhlIHRpbWVycykuIiwibWljTm90ZSI6IlJlY29yZGluZ3MgYXJlIHN0b3JlZCB0ZW1wb3JhcmlseSBpbiB5b3VyIGJyb3dzZXIgb25seSBcdTIwMTQgbm90aGluZyBpcyB1cGxvYWRlZCB0byBhbnkgc2VydmVyLiBUaGV5IGFyZSBsb3N0IHdoZW4geW91IGNsb3NlIHRoZSBwYWdlLCBzbyBkb3dubG9hZCBhbnkgeW91IHdhbnQgdG8ga2VlcC4iLCJwcmVwVGl0bGUiOiJQcmVwYXJhdGlvbiBUaW1lIiwicmVjVGl0bGUiOiJSZWNvcmRpbmciLCJzdGFydFByZXAiOiJcdTI1YjYgU3RhcnQgcHJlcGFyYXRpb24iLCJza2lwUHJlcCI6IlNraXAgXHUyMDE0IHJlY29yZCBub3cgXHUwMGJiIiwic3RvcFJlYyI6Ilx1MjVhMCBTdG9wIHJlY29yZGluZyIsInJlY29yZGVkIjoiUmVjb3JkZWQiLCJyZVJlY29yZCI6Ilx1MjFiYiBSZWNvcmQgYWdhaW4iLCJkb3dubG9hZCI6Ilx1MmIwNyBEb3dubG9hZCIsInRpbWVyT25seSI6IlRpbWVyLW9ubHkgbW9kZSAobm90IHJlY29yZGluZykiLCJzcGVha05vdyI6IlNQRUFLIE5PVyBcdTIwMTQgcmVjb3JkaW5nIHN0b3BzIGF1dG9tYXRpY2FsbHkgd2hlbiB0aW1lIGlzIHVwIiwibmV4dCI6Ik5FWFQiLCJjaG9vc2VIaW50IjoiQ2xpY2sgdG8gY2hvb3NlIG9uZSBvcHRpb24gXHUyMDE0IGlmIHRoZSA2MCBzZWNvbmRzIHJ1biBvdXQsIHRoZSBzeXN0ZW0gY2hvb3NlcyBmb3IgeW91IiwiY29uZmlybUNob2ljZSI6IkNvbmZpcm0gY2hvaWNlICYgY29udGludWUgXHUwMGJiIiwieW91ckNob2ljZSI6IllvdXIgQ2hvaWNlIiwidGlwc1RvZ2dsZSI6Ilx1ZDgzZFx1ZGNhMSBUaXBzICYgc2FtcGxlIGFuc3dlcnMgKG9wZW4gYWZ0ZXIgeW91IGZpbmlzaCBzcGVha2luZykiLCJ0YWJUaXBzIjoiT3V0bGluZSAmIHBocmFzZXMiLCJ0YWJTNiI6IlNhbXBsZSBDTEIgNiIsInRhYlM5IjoiU2FtcGxlIENMQiA5IiwidGFiUnVicmljIjoiU2VsZi1hc3Nlc3NtZW50IiwicnVicmljTm90ZSI6Ikxpc3RlbiB0byB5b3VyIHJlY29yZGluZywgdGhlbiByYXRlIHlvdXJzZWxmIDFcdTIwMTM1IG9uIGVhY2ggY3JpdGVyaW9uICh0aGUgNCBvZmZpY2lhbCBDRUxQSVAgcmF0aW5nIGRpbWVuc2lvbnMpOiIsInJ1YnJpY0NyaXQiOlsiQ29udGVudCAmIENvaGVyZW5jZSBcdTIwMTQgY29tcGxldGUgaWRlYXMsIGxvZ2ljYWwgZmxvdyIsIlZvY2FidWxhcnkgXHUyMDE0IHJhbmdlIGFuZCBwcmVjaXNpb24iLCJMaXN0ZW5hYmlsaXR5IFx1MjAxNCBwcm9udW5jaWF0aW9uLCBpbnRvbmF0aW9uLCBmbHVlbmN5IiwiVGFzayBGdWxmaWxsbWVudCBcdTIwMTQgYWRkcmVzc2VzIHRoZSB0YXNrLCBhcHByb3ByaWF0ZSBsZW5ndGgiXSwiZXN0aW1hdGUiOiJFc3RpbWF0ZWQgbGV2ZWwgKGZvciByZWZlcmVuY2UpOiIsImVzdERpc2NsYWltZXIiOiJTZWxmLWFzc2Vzc21lbnQgaXMgYSByb3VnaCBndWlkZSBvbmx5IFx1MjAxNCBpdCBkb2VzIG5vdCByZXBsYWNlIGFuIG9mZmljaWFsIHNjb3JlLiIsInVzZWZ1bFBocmFzZXMiOiJVc2VmdWwgcGhyYXNlcyIsImVuZFRpdGxlIjoiU3BlYWtpbmcgdGVzdCBjb21wbGV0ZSEiLCJlbmRTdWIiOiJSZXBsYXkgZWFjaCB0YXNrLCBjb21wYXJlIHlvdXIgYW5zd2VycyB3aXRoIHRoZSBDTEIgNiAvIENMQiA5IHNhbXBsZXMsIHRoZW4gcmF0ZSB5b3Vyc2VsZi4iLCJlbmROb1JlYyI6Im5vdCByZWNvcmRlZCIsImVuZFJlZG8iOiJcdTIxYmIgU3RhcnQgb3ZlciIsImVuZFQyIjoiQ29udGludWUgdG8gUHJhY3RpY2UgVGVzdCIsImVuZEh1YiI6Ilx1MjE5MCBCYWNrIHRvIENFTFBJUCBIdWIiLCJ3YXJtdXBCYWRnZSI6Ildhcm0tdXAgXHUyMDE0IG5vdCBzY29yZWQiLCJpbnRyb05vdGVzIjpbIkFuIGFjY3VyYXRlIHNpbXVsYXRpb24gb2YgdGhlIHJlYWwgQ0VMUElQIEdlbmVyYWwgU3BlYWtpbmcgdGVzdDogMSBwcmFjdGljZSAod2FybS11cCkgdGFzayArIDggc2NvcmVkIHRhc2tzLCBhYm91dCAyMCBtaW51dGVzIGluIHRvdGFsLiIsIkVhY2ggdGFzazogcmVhZCB0aGUgcHJvbXB0IFx1MjE5MiA8Yj5QcmVwYXJhdGlvbjwvYj4gY291bnRkb3duIFx1MjE5MiBzd2l0Y2hlcyBhdXRvbWF0aWNhbGx5IHRvIDxiPlJlY29yZGluZzwvYj4gKHdpdGggYSBiZWVwKSBcdTIxOTIgc3RvcHMgd2hlbiB0aW1lIGlzIHVwLiIsIk9uIHRoZSByZWFsIHRlc3QgeW91IGNhbm5vdCBnbyBiYWNrIHRvIGEgcHJldmlvdXMgdGFzay4gSW4gcHJhY3RpY2UgbW9kZSwgeW91IGNhbiBjbGljayB0aGUgbnVtYmVyZWQgY2hpcHMgYWJvdmUgdG8gcmV2aXNpdCBhbnkgdGFzay4iLCJBZnRlciBzcGVha2luZyBvbiBlYWNoIHRhc2ssIG9wZW4gPGI+VGlwcyAmIHNhbXBsZSBhbnN3ZXJzPC9iPiB0byBjb21wYXJlIHlvdXIgcmVzcG9uc2Ugd2l0aCB0aGUgQ0xCIDYgYW5kIENMQiA5IHNhbXBsZXMuIl0sImhlcm9UYWciOiJDRUxQSVAgR2VuZXJhbCBcdTIwMTQgU3BlYWtpbmciLCJoZXJvTWV0YSI6WyI4IHRhc2tzICsgd2FybS11cCIsIn4yMCBtaW51dGVzIiwiUmVjb3JkICYgcmVwbGF5IiwiQ0xCIDYgLyBDTEIgOSBzYW1wbGVzIl19fTsKLyogQ0VMUElQIFNwZWFraW5nIEVuZ2luZSB2MS4wIC0gQWxsRW5nbGlzaDRVIC0gdmFuaWxsYSBKUywgcHJlZml4IGNscC1zcGsgKi8KKGZ1bmN0aW9uKCl7CiJ1c2Ugc3RyaWN0IjsKdmFyIEQgPSB3aW5kb3cuQ0xQU1BLX0RBVEEsIFUgPSBELnVpOwp2YXIgcm9vdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjbHAtc3BrLXJvb3QiKTsKaWYoIXJvb3QpIHJldHVybjsKCi8qIC0tLS0tLS0tLS0gc3R5bGUgLS0tLS0tLS0tLSAqLwp2YXIgQ1NTID0gIiIrCiIuY2xwLXNway13cmFwe21heC13aWR0aDoxMTQwcHg7bWFyZ2luOjAgYXV0bztwYWRkaW5nOjAgMTRweCA2MHB4O2ZvbnQtZmFtaWx5Oi1hcHBsZS1zeXN0ZW0sQmxpbmtNYWNTeXN0ZW1Gb250LCdTZWdvZSBVSScsUm9ib3RvLEFyaWFsLHNhbnMtc2VyaWY7Y29sb3I6IzIzMjcyZDstd2Via2l0LWZvbnQtc21vb3RoaW5nOmFudGlhbGlhc2VkfSIrCiIuY2xwLXNway13cmFwICp7Ym94LXNpemluZzpib3JkZXItYm94fSIrCiIuY2xwLXNway1oZXJve2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KDEzNWRlZywjN2YxZDFkIDAlLCNiOTFjMWMgNTUlLCNkYzI2MjYgMTAwJSk7Ym9yZGVyLXJhZGl1czoxOHB4O2NvbG9yOiNmZmY7cGFkZGluZzozMHB4IDMwcHggMjZweDttYXJnaW46MThweCAwIDIwcHg7cG9zaXRpb246cmVsYXRpdmU7b3ZlcmZsb3c6aGlkZGVufSIrCiIuY2xwLXNway1oZXJvOmFmdGVye2NvbnRlbnQ6Jyc7cG9zaXRpb246YWJzb2x1dGU7cmlnaHQ6LTYwcHg7dG9wOi02MHB4O3dpZHRoOjIyMHB4O2hlaWdodDoyMjBweDtib3JkZXItcmFkaXVzOjUwJTtiYWNrZ3JvdW5kOnJnYmEoMjU1LDI1NSwyNTUsLjA4KX0iKwoiLmNscC1zcGstaGVybyAudGFne2Rpc3BsYXk6aW5saW5lLWJsb2NrO2JhY2tncm91bmQ6cmdiYSgyNTUsMjU1LDI1NSwuMTYpO2JvcmRlcjoxcHggc29saWQgcmdiYSgyNTUsMjU1LDI1NSwuMzUpO3BhZGRpbmc6M3B4IDEycHg7Ym9yZGVyLXJhZGl1czo5OTlweDtmb250LXNpemU6MTIuNXB4O2xldHRlci1zcGFjaW5nOi42cHg7Zm9udC13ZWlnaHQ6NjAwfSIrCiIuY2xwLXNway1oZXJvIGgxe21hcmdpbjoxMHB4IDAgNnB4O2ZvbnQtc2l6ZToyN3B4O2xpbmUtaGVpZ2h0OjEuMjU7Y29sb3I6I2ZmZn0iKwoiLmNscC1zcGstaGVybyAubWV0YXtkaXNwbGF5OmZsZXg7ZmxleC13cmFwOndyYXA7Z2FwOjhweDttYXJnaW4tdG9wOjEycHh9IisKIi5jbHAtc3BrLWhlcm8gLm1ldGEgc3BhbntiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjIyKTtwYWRkaW5nOjRweCAxMnB4O2JvcmRlci1yYWRpdXM6OTk5cHg7Zm9udC1zaXplOjEyLjVweH0iKwoiLmNscC1zcGstY2hpcHN7ZGlzcGxheTpmbGV4O2ZsZXgtd3JhcDp3cmFwO2dhcDo3cHg7bWFyZ2luOjAgMCAxNHB4fSIrCiIuY2xwLXNway1jaGlwe21pbi13aWR0aDozOHB4O2hlaWdodDozNHB4O2JvcmRlci1yYWRpdXM6OXB4O2JvcmRlcjoxLjVweCBzb2xpZCAjZDNkOGRmO2JhY2tncm91bmQ6I2ZmZjtmb250LXdlaWdodDo3MDA7Zm9udC1zaXplOjEzLjVweDtjb2xvcjojNWI2NTcyO2N1cnNvcjpwb2ludGVyO3BhZGRpbmc6MCAxMHB4fSIrCiIuY2xwLXNway1jaGlwLmN1cntiYWNrZ3JvdW5kOiMwYjU3ZDA7Ym9yZGVyLWNvbG9yOiMwYjU3ZDA7Y29sb3I6I2ZmZn0iKwoiLmNscC1zcGstY2hpcC5kb25le2JhY2tncm91bmQ6I2U2ZjRlYTtib3JkZXItY29sb3I6IzdiYzM5NDtjb2xvcjojMWU3YjNlfSIrCiIuY2xwLXNway1wYW5lbHtiYWNrZ3JvdW5kOiNmZmY7Ym9yZGVyOjFweCBzb2xpZCAjZDlkZGUzO2JvcmRlci1yYWRpdXM6MTJweDtvdmVyZmxvdzpoaWRkZW47Ym94LXNoYWRvdzowIDJweCAxMHB4IHJnYmEoMzAsNDAsNjAsLjA2KX0iKwoiLmNscC1zcGstYmFye2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjEwcHg7YmFja2dyb3VuZDojZWNlY2VlO2JvcmRlci1ib3R0b206MXB4IHNvbGlkICNkNWQ1ZDg7cGFkZGluZzo5cHggMTRweDtmbGV4LXdyYXA6d3JhcH0iKwoiLmNscC1zcGstYmFyIC50e2ZvbnQtd2VpZ2h0OjcwMDtmb250LXNpemU6MTQuNXB4O2NvbG9yOiMzYzQwNDZ9IisKIi5jbHAtc3BrLWJhciAubXttYXJnaW4tbGVmdDphdXRvO2ZvbnQtc2l6ZToxMi41cHg7Y29sb3I6IzU1NTt3aGl0ZS1zcGFjZTpub3dyYXB9IisKIi5jbHAtc3BrLWJhciAubSBie2NvbG9yOiMyMzI3MmR9IisKIi5jbHAtc3BrLW5leHR7YmFja2dyb3VuZDojMTQ2N2M2O2NvbG9yOiNmZmY7Ym9yZGVyOjA7Ym9yZGVyLXJhZGl1czo0cHg7Zm9udC13ZWlnaHQ6NzAwO2ZvbnQtc2l6ZToxMi41cHg7bGV0dGVyLXNwYWNpbmc6LjhweDtwYWRkaW5nOjdweCAxOHB4O2N1cnNvcjpwb2ludGVyfSIrCiIuY2xwLXNway1uZXh0OmhvdmVye2JhY2tncm91bmQ6IzBmNTdhYn0iKwoiLmNscC1zcGstYm9keXtwYWRkaW5nOjE4cHggMjBweCAyMnB4fSIrCiIuY2xwLXNway1wcm9tcHR7ZGlzcGxheTpmbGV4O2dhcDo5cHg7Y29sb3I6IzBiNTM5NDtmb250LXdlaWdodDo2MDA7Zm9udC1zaXplOjE1LjVweDtsaW5lLWhlaWdodDoxLjV9IisKIi5jbHAtc3BrLXByb21wdCAuaXtmbGV4OjAgMCBhdXRvO3dpZHRoOjIwcHg7aGVpZ2h0OjIwcHg7Ym9yZGVyLXJhZGl1czo1MCU7YmFja2dyb3VuZDojMmM3Y2IwO2NvbG9yOiNmZmY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6ODAwO2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcjttYXJnaW4tdG9wOjJweH0iKwoiLmNscC1zcGstbGVhZHtjb2xvcjojMGI1Mzk0O2ZvbnQtd2VpZ2h0OjcwMDttYXJnaW4tYm90dG9tOjRweH0iKwoiLmNscC1zcGstY2hvb3NlMXttYXJnaW46MTRweCAwIDA7cGFkZGluZzoxMnB4IDE2cHg7YmFja2dyb3VuZDojZjVmN2ZhO2JvcmRlcjoxcHggc29saWQgI2RmZTRlYTtib3JkZXItcmFkaXVzOjlweDtmb250LXNpemU6MTQuNXB4O2xpbmUtaGVpZ2h0OjEuNTV9IisKIi5jbHAtc3BrLWNob29zZTEgLmV7Zm9udC13ZWlnaHQ6ODAwO2NvbG9yOiM4YTFmMWY7bGV0dGVyLXNwYWNpbmc6LjRweH0iKwoiLmNscC1zcGstaW1ne2Rpc3BsYXk6YmxvY2s7bWF4LXdpZHRoOjU0MHB4O3dpZHRoOjEwMCU7Ym9yZGVyOjFweCBzb2xpZCAjY2ZkNGRhO2JvcmRlci1yYWRpdXM6OHB4O21hcmdpbjoxNnB4IDAgNHB4fSIrCiIuY2xwLXNway1ub3Rle2ZvbnQtc2l6ZToxMnB4O2NvbG9yOiM4YTkyOWM7bWFyZ2luLXRvcDo2cHh9IisKIi5jbHAtc3BrLXRpbWVycm93e2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO21hcmdpbjoyMHB4IDAgNnB4fSIrCiIuY2xwLXNway10aW1lcntkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDoxNnB4O2JhY2tncm91bmQ6I2U5ZWNlZjtib3JkZXI6MXB4IHNvbGlkICNkNmRhZGU7Ym9yZGVyLXJhZGl1czoxMHB4O3BhZGRpbmc6MTZweCAyNnB4O21pbi13aWR0aDozMDBweDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyfSIrCiIuY2xwLXNway10aW1lciAuaWN7d2lkdGg6NDRweDtoZWlnaHQ6NDRweDtib3JkZXItcmFkaXVzOjhweDtiYWNrZ3JvdW5kOiNmOGY5ZmE7Ym9yZGVyOjFweCBzb2xpZCAjZDZkYWRlO2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcjtmb250LXNpemU6MjJweH0iKwoiLmNscC1zcGstdGltZXIgLmxie2ZvbnQtd2VpZ2h0OjcwMDtjb2xvcjojMzMzODNmO2ZvbnQtc2l6ZToxNXB4fSIrCiIuY2xwLXNway10aW1lciAubntmb250LXNpemU6MjZweDtmb250LXdlaWdodDo4MDA7Y29sb3I6IzBiNTdkMDtmb250LXZhcmlhbnQtbnVtZXJpYzp0YWJ1bGFyLW51bXM7bWluLXdpZHRoOjUycHg7dGV4dC1hbGlnbjpjZW50ZXJ9IisKIi5jbHAtc3BrLXRpbWVyLnJlY3tiYWNrZ3JvdW5kOiNmZGVjZWI7Ym9yZGVyLWNvbG9yOiNmM2I2YjN9IisKIi5jbHAtc3BrLXRpbWVyLnJlYyAubntjb2xvcjojYzYyODI4fSIrCiIuY2xwLXNway10aW1lci5yZWMgLmlje2JhY2tncm91bmQ6I2ZmZjtib3JkZXItY29sb3I6I2YzYjZiM30iKwoiLmNscC1zcGstZG90e3dpZHRoOjE0cHg7aGVpZ2h0OjE0cHg7Ym9yZGVyLXJhZGl1czo1MCU7YmFja2dyb3VuZDojZTUzOTM1O2Rpc3BsYXk6aW5saW5lLWJsb2NrO2FuaW1hdGlvbjpjbHBibGluayAxcyBpbmZpbml0ZX0iKwoiQGtleWZyYW1lcyBjbHBibGlua3swJSwxMDAle29wYWNpdHk6MX01MCV7b3BhY2l0eTouMjV9fSIrCiIuY2xwLXNway1jdHJ7ZGlzcGxheTpmbGV4O2dhcDoxMHB4O2p1c3RpZnktY29udGVudDpjZW50ZXI7ZmxleC13cmFwOndyYXA7bWFyZ2luOjE0cHggMCAycHh9IisKIi5jbHAtc3BrLWJ0bntib3JkZXI6MS41cHggc29saWQgI2M5Y2ZkNjtiYWNrZ3JvdW5kOiNmZmY7Y29sb3I6IzMzMzgzZjtib3JkZXItcmFkaXVzOjlweDtwYWRkaW5nOjlweCAxOHB4O2ZvbnQtd2VpZ2h0OjcwMDtmb250LXNpemU6MTMuNXB4O2N1cnNvcjpwb2ludGVyfSIrCiIuY2xwLXNway1idG46aG92ZXJ7Ym9yZGVyLWNvbG9yOiM5YWEzYWR9IisKIi5jbHAtc3BrLWJ0bi5wcml7YmFja2dyb3VuZDojMGI1N2QwO2JvcmRlci1jb2xvcjojMGI1N2QwO2NvbG9yOiNmZmZ9IisKIi5jbHAtc3BrLWJ0bi5wcmk6aG92ZXJ7YmFja2dyb3VuZDojMGE0Y2I1fSIrCiIuY2xwLXNway1idG4ud2FybntiYWNrZ3JvdW5kOiNjNjI4Mjg7Ym9yZGVyLWNvbG9yOiNjNjI4Mjg7Y29sb3I6I2ZmZn0iKwoiLmNscC1zcGstc3BlYWtub3d7dGV4dC1hbGlnbjpjZW50ZXI7Y29sb3I6I2M2MjgyODtmb250LXdlaWdodDo3MDA7Zm9udC1zaXplOjEzcHg7bWFyZ2luLXRvcDo4cHg7bGV0dGVyLXNwYWNpbmc6LjNweH0iKwoiLmNscC1zcGstcmV2aWV3e21hcmdpbjoxNnB4IGF1dG8gMDttYXgtd2lkdGg6NjQwcHg7YmFja2dyb3VuZDojZjJmOWYzO2JvcmRlcjoxcHggc29saWQgI2JmZTNjNjtib3JkZXItcmFkaXVzOjEwcHg7cGFkZGluZzoxNHB4IDE4cHh9IisKIi5jbHAtc3BrLXJldmlldyAub2t7Y29sb3I6IzFlN2IzZTtmb250LXdlaWdodDo4MDA7Zm9udC1zaXplOjE0LjVweH0iKwoiLmNscC1zcGstcmV2aWV3IGF1ZGlve3dpZHRoOjEwMCU7bWFyZ2luOjEwcHggMCA4cHh9IisKIi5jbHAtc3BrLW1pY3ttYXJnaW46MTJweCBhdXRvIDA7bWF4LXdpZHRoOjY0MHB4O2JhY2tncm91bmQ6I2ZmZjhlNjtib3JkZXI6MXB4IHNvbGlkICNlY2Q5YTA7Ym9yZGVyLXJhZGl1czoxMHB4O3BhZGRpbmc6MTBweCAxNnB4O2ZvbnQtc2l6ZToxM3B4O2NvbG9yOiM3YTViMTJ9IisKIi5jbHAtc3BrLW9wdHN7ZGlzcGxheTpncmlkO2dyaWQtdGVtcGxhdGUtY29sdW1uczoxZnIgMWZyO2dhcDoxNnB4O21hcmdpbjoxOHB4IDAgNHB4fSIrCiIuY2xwLXNway1jYXJke2JvcmRlcjoycHggc29saWQgI2Q1ZGFlMDtib3JkZXItcmFkaXVzOjExcHg7cGFkZGluZzoxM3B4IDE1cHggMTVweDtjdXJzb3I6cG9pbnRlcjtiYWNrZ3JvdW5kOiNmZmY7dHJhbnNpdGlvbjpib3JkZXItY29sb3IgLjE1c30iKwoiLmNscC1zcGstY2FyZDpob3Zlcntib3JkZXItY29sb3I6IzhmYjRlOH0iKwoiLmNscC1zcGstY2FyZC5zZWx7Ym9yZGVyLWNvbG9yOiMyZTllNGY7YmFja2dyb3VuZDojZWVmOWYwfSIrCiIuY2xwLXNway1jYXJkLnBsYWlue2N1cnNvcjpkZWZhdWx0fSIrCiIuY2xwLXNway1jYXJkIC5oZHt0ZXh0LWFsaWduOmNlbnRlcjtmb250LXNpemU6MTIuNXB4O2ZvbnQtd2VpZ2h0OjcwMDtjb2xvcjojNmI3NDgwO2xldHRlci1zcGFjaW5nOi4zcHg7bWFyZ2luLWJvdHRvbTo4cHh9IisKIi5jbHAtc3BrLWNhcmQgaW1ne3dpZHRoOjEwMCU7Ym9yZGVyLXJhZGl1czo3cHg7Ym9yZGVyOjFweCBzb2xpZCAjZTJlNmVhfSIrCiIuY2xwLXNway1jYXJkIC50dHtmb250LXdlaWdodDo4MDA7Zm9udC1zaXplOjE1cHg7bWFyZ2luOjEwcHggMCA2cHg7Y29sb3I6IzIzMjcyZH0iKwoiLmNscC1zcGstY2FyZCB1bHttYXJnaW46MDtwYWRkaW5nLWxlZnQ6MThweDtmb250LXNpemU6MTMuNXB4O2xpbmUtaGVpZ2h0OjEuNTU7Y29sb3I6IzNjNDM0Yn0iKwoiLmNscC1zcGstY2FyZCAucGlja3ttYXJnaW4tdG9wOjEwcHg7dGV4dC1hbGlnbjpjZW50ZXI7Zm9udC13ZWlnaHQ6ODAwO2NvbG9yOiMyZTllNGY7Zm9udC1zaXplOjEzcHg7bWluLWhlaWdodDoxOHB4fSIrCiIuY2xwLXNway1oaW50e3RleHQtYWxpZ246Y2VudGVyO2NvbG9yOiM2Yjc0ODA7Zm9udC1zaXplOjEzcHg7bWFyZ2luLXRvcDoxMHB4fSIrCiIuY2xwLXNway1hY2N7bWFyZ2luLXRvcDoyMnB4O2JvcmRlcjoxcHggc29saWQgI2Q5ZGRlMztib3JkZXItcmFkaXVzOjExcHg7b3ZlcmZsb3c6aGlkZGVufSIrCiIuY2xwLXNway1hY2M+YnV0dG9ue3dpZHRoOjEwMCU7dGV4dC1hbGlnbjpsZWZ0O2JhY2tncm91bmQ6I2Y2ZjdmOTtib3JkZXI6MDtwYWRkaW5nOjEycHggMTZweDtmb250LXdlaWdodDo4MDA7Zm9udC1zaXplOjE0cHg7Y29sb3I6IzNjNDA0NjtjdXJzb3I6cG9pbnRlcn0iKwoiLmNscC1zcGstYWNjYm9keXtkaXNwbGF5Om5vbmU7cGFkZGluZzoxNHB4IDE2cHggMThweDtiYWNrZ3JvdW5kOiNmZmZ9IisKIi5jbHAtc3BrLWFjYy5vcGVuIC5jbHAtc3BrLWFjY2JvZHl7ZGlzcGxheTpibG9ja30iKwoiLmNscC1zcGstdGFic3tkaXNwbGF5OmZsZXg7Z2FwOjZweDtmbGV4LXdyYXA6d3JhcDttYXJnaW4tYm90dG9tOjEycHh9IisKIi5jbHAtc3BrLXRhYntib3JkZXI6MS41cHggc29saWQgI2M5Y2ZkNjtiYWNrZ3JvdW5kOiNmZmY7Ym9yZGVyLXJhZGl1czo5OTlweDtwYWRkaW5nOjZweCAxNXB4O2ZvbnQtd2VpZ2h0OjcwMDtmb250LXNpemU6MTIuNXB4O2N1cnNvcjpwb2ludGVyO2NvbG9yOiM0YTUyNWN9IisKIi5jbHAtc3BrLXRhYi5vbntiYWNrZ3JvdW5kOiMwYjU3ZDA7Ym9yZGVyLWNvbG9yOiMwYjU3ZDA7Y29sb3I6I2ZmZn0iKwoiLmNscC1zcGstdGFicGFuZXtkaXNwbGF5Om5vbmU7Zm9udC1zaXplOjE0LjVweDtsaW5lLWhlaWdodDoxLjY1fSIrCiIuY2xwLXNway10YWJwYW5lLm9ue2Rpc3BsYXk6YmxvY2t9IisKIi5jbHAtc3BrLXRhYnBhbmUgdWx7cGFkZGluZy1sZWZ0OjIwcHg7bWFyZ2luOjhweCAwfSIrCiIuY2xwLXNway10YWJwYW5lIGxpe21hcmdpbjo1cHggMH0iKwoiLmNscC1zcGstc2FtcGxle2JhY2tncm91bmQ6I2Y4ZjlmYjtib3JkZXI6MXB4IHNvbGlkICNlM2U3ZWM7Ym9yZGVyLWxlZnQ6NHB4IHNvbGlkICMwYjU3ZDA7Ym9yZGVyLXJhZGl1czo4cHg7cGFkZGluZzoxM3B4IDE2cHg7d2hpdGUtc3BhY2U6cHJlLXdyYXB9IisKIi5jbHAtc3BrLXNhbXBsZS5zNntib3JkZXItbGVmdC1jb2xvcjojZThhMTNjfSIrCiIuY2xwLXNway1waHJ7ZGlzcGxheTpmbGV4O2ZsZXgtd3JhcDp3cmFwO2dhcDo3cHg7bWFyZ2luLXRvcDoxMHB4fSIrCiIuY2xwLXNway1waHIgc3BhbntiYWNrZ3JvdW5kOiNlZWYzZmI7Ym9yZGVyOjFweCBzb2xpZCAjY2RkZGY1O2NvbG9yOiMxNzRhOWM7Ym9yZGVyLXJhZGl1czo5OTlweDtwYWRkaW5nOjRweCAxMnB4O2ZvbnQtc2l6ZToxMi41cHg7Zm9udC13ZWlnaHQ6NjAwfSIrCiIuY2xwLXNway1ydWJ7Ym9yZGVyLWNvbGxhcHNlOmNvbGxhcHNlO3dpZHRoOjEwMCU7Zm9udC1zaXplOjEzLjVweH0iKwoiLmNscC1zcGstcnViIHRke3BhZGRpbmc6N3B4IDZweDtib3JkZXItYm90dG9tOjFweCBzb2xpZCAjZWVmMGYzfSIrCiIuY2xwLXNway1zdGFye2N1cnNvcjpwb2ludGVyO2ZvbnQtc2l6ZToxOXB4O2NvbG9yOiNjOWNmZDY7cGFkZGluZzowIDFweDt1c2VyLXNlbGVjdDpub25lfSIrCiIuY2xwLXNway1zdGFyLm9ue2NvbG9yOiNmMGE3MWJ9IisKIi5jbHAtc3BrLWVzdHttYXJnaW4tdG9wOjEwcHg7Zm9udC13ZWlnaHQ6NzAwO2NvbG9yOiMxZTdiM2V9IisKIi5jbHAtc3BrLWJhZGdle2Rpc3BsYXk6aW5saW5lLWJsb2NrO2JhY2tncm91bmQ6I2ZmZjNjZDtib3JkZXI6MXB4IHNvbGlkICNlOGQ0OGI7Y29sb3I6IzdhNWIxMjtib3JkZXItcmFkaXVzOjk5OXB4O2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjcwMDtwYWRkaW5nOjNweCAxMnB4O21hcmdpbi1ib3R0b206MTBweH0iKwoiLmNscC1zcGstaW50cm8gdWx7Zm9udC1zaXplOjE0LjVweDtsaW5lLWhlaWdodDoxLjc7cGFkZGluZy1sZWZ0OjIwcHh9IisKIi5jbHAtc3BrLWludHJvIGxpe21hcmdpbjo3cHggMH0iKwoiLmNscC1zcGstbWljcm93e2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjEycHg7ZmxleC13cmFwOndyYXA7YmFja2dyb3VuZDojZjZmN2Y5O2JvcmRlcjoxcHggc29saWQgI2UwZTRlOTtib3JkZXItcmFkaXVzOjEwcHg7cGFkZGluZzoxM3B4IDE2cHg7bWFyZ2luOjE2cHggMH0iKwoiLmNscC1zcGstbWljc3R7Zm9udC13ZWlnaHQ6NzAwO2ZvbnQtc2l6ZToxMy41cHh9IisKIi5jbHAtc3BrLW1pY3N0Lm9re2NvbG9yOiMxZTdiM2V9LmNscC1zcGstbWljc3QuYmFke2NvbG9yOiNjNjI4Mjh9IisKIi5jbHAtc3BrLWVuZCB0YWJsZXtib3JkZXItY29sbGFwc2U6Y29sbGFwc2U7d2lkdGg6MTAwJTtmb250LXNpemU6MTRweH0iKwoiLmNscC1zcGstZW5kIHRkLC5jbHAtc3BrLWVuZCB0aHtwYWRkaW5nOjlweCA4cHg7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgI2VjZWZmMjt0ZXh0LWFsaWduOmxlZnR9IisKIi5jbHAtc3BrLWVuZCBhdWRpb3toZWlnaHQ6MzRweDttYXgtd2lkdGg6MjMwcHh9IisKIkBtZWRpYShtYXgtd2lkdGg6NzAwcHgpey5jbHAtc3BrLW9wdHN7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOjFmcn0uY2xwLXNway1iYXIgLm17b3JkZXI6MzttYXJnaW4tbGVmdDowO3dpZHRoOjEwMCV9LmNscC1zcGstaGVybyBoMXtmb250LXNpemU6MjJweH0uY2xwLXNway1ib2R5e3BhZGRpbmc6MTRweCAxMnB4IDE4cHh9fSI7CnZhciBzdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInN0eWxlIik7IHN0LnRleHRDb250ZW50ID0gQ1NTOyBkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKHN0KTsKCi8qIC0tLS0tLS0tLS0gc3RhdGUgLS0tLS0tLS0tLSAqLwp2YXIgUyA9IHsKICBjdXI6IC0xLCAgICAgICAgICAgIC8qIC0xIGludHJvLCAwLi44IHRhc2tzLCA5OSBlbmQgKi8KICBtaWNTdGF0ZTogImlkbGUiLCAgIC8qIGlkbGV8b2t8YmFkICovCiAgc3RyZWFtOiBudWxsLCByZWNvcmRlcjogbnVsbCwgY2h1bmtzOiBbXSwKICB0aW1lcjogbnVsbCwgcGhhc2U6IHt9LCB0NWNob2ljZToge30sIHJlY3M6IHt9LCBydWJyaWM6IHt9LAogIG1pbWU6ICIiLCBleHQ6ICJ3ZWJtIgp9OwpELnRhc2tzLmZvckVhY2goZnVuY3Rpb24odCl7IFMucGhhc2VbdC5rXSA9IHQucGhhc2VkID8gImNob29zZS1pZGxlIiA6ICJpZGxlIjsgfSk7CgpmdW5jdGlvbiBwaWNrTWltZSgpewogIGlmKCF3aW5kb3cuTWVkaWFSZWNvcmRlcikgcmV0dXJuIG51bGw7CiAgdmFyIGNhbmRzID0gW1siYXVkaW8vd2VibTtjb2RlY3M9b3B1cyIsIndlYm0iXSxbImF1ZGlvL3dlYm0iLCJ3ZWJtIl0sWyJhdWRpby9tcDQiLCJtNGEiXSxbImF1ZGlvL29nZztjb2RlY3M9b3B1cyIsIm9nZyJdXTsKICBmb3IodmFyIGk9MDtpPGNhbmRzLmxlbmd0aDtpKyspeyB0cnl7IGlmKE1lZGlhUmVjb3JkZXIuaXNUeXBlU3VwcG9ydGVkKGNhbmRzW2ldWzBdKSkgcmV0dXJuIGNhbmRzW2ldOyB9Y2F0Y2goZSl7fSB9CiAgcmV0dXJuIFsiIiwid2VibSJdOwp9CmZ1bmN0aW9uIGVuc3VyZU1pYyhjYil7CiAgaWYoUy5taWNTdGF0ZT09PSJvayIpIHJldHVybiBjYih0cnVlKTsKICBpZihTLm1pY1N0YXRlPT09ImJhZCIpIHJldHVybiBjYihmYWxzZSk7CiAgaWYoIW5hdmlnYXRvci5tZWRpYURldmljZXMgfHwgIW5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlhIHx8ICF3aW5kb3cuTWVkaWFSZWNvcmRlcil7IFMubWljU3RhdGU9ImJhZCI7IHJldHVybiBjYihmYWxzZSk7IH0KICBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYSh7YXVkaW86dHJ1ZX0pLnRoZW4oZnVuY3Rpb24oc3RyZWFtKXsKICAgIFMuc3RyZWFtID0gc3RyZWFtOyB2YXIgbSA9IHBpY2tNaW1lKCk7IFMubWltZSA9IG1bMF07IFMuZXh0ID0gbVsxXTsgUy5taWNTdGF0ZT0ib2siOyBjYih0cnVlKTsKICB9KS5jYXRjaChmdW5jdGlvbigpeyBTLm1pY1N0YXRlPSJiYWQiOyBjYihmYWxzZSk7IH0pOwp9CmZ1bmN0aW9uIGJlZXAobil7CiAgdHJ5ewogICAgdmFyIGN0eCA9IHdpbmRvdy5fX2NscEFDID0gd2luZG93Ll9fY2xwQUMgfHwgbmV3ICh3aW5kb3cuQXVkaW9Db250ZXh0fHx3aW5kb3cud2Via2l0QXVkaW9Db250ZXh0KSgpOwogICAgdmFyIHQwID0gY3R4LmN1cnJlbnRUaW1lOwogICAgZm9yKHZhciBpPTA7aTxuO2krKyl7CiAgICAgIHZhciBvID0gY3R4LmNyZWF0ZU9zY2lsbGF0b3IoKSwgZyA9IGN0eC5jcmVhdGVHYWluKCk7CiAgICAgIG8uZnJlcXVlbmN5LnZhbHVlID0gODgwOyBvLmNvbm5lY3QoZyk7IGcuY29ubmVjdChjdHguZGVzdGluYXRpb24pOwogICAgICBnLmdhaW4uc2V0VmFsdWVBdFRpbWUoMC4wMDAxLHQwK2kqMC4yNSk7IGcuZ2Fpbi5leHBvbmVudGlhbFJhbXBUb1ZhbHVlQXRUaW1lKDAuMTgsdDAraSowLjI1KzAuMDIpOwogICAgICBnLmdhaW4uZXhwb25lbnRpYWxSYW1wVG9WYWx1ZUF0VGltZSgwLjAwMDEsdDAraSowLjI1KzAuMTgpOwogICAgICBvLnN0YXJ0KHQwK2kqMC4yNSk7IG8uc3RvcCh0MCtpKjAuMjUrMC4yKTsKICAgIH0KICB9Y2F0Y2goZSl7fQp9CmZ1bmN0aW9uIHN0b3BUaW1lcigpeyBpZihTLnRpbWVyKXsgY2xlYXJJbnRlcnZhbChTLnRpbWVyKTsgUy50aW1lcj1udWxsOyB9IH0KZnVuY3Rpb24gY291bnRkb3duKHNlY3MsIG9uVGljaywgb25FbmQpewogIHN0b3BUaW1lcigpOwogIHZhciBlbmQgPSBEYXRlLm5vdygpICsgc2VjcyoxMDAwOwogIG9uVGljayhzZWNzKTsKICBTLnRpbWVyID0gc2V0SW50ZXJ2YWwoZnVuY3Rpb24oKXsKICAgIHZhciBsZWZ0ID0gTWF0aC5tYXgoMCwgTWF0aC5yb3VuZCgoZW5kLURhdGUubm93KCkpLzEwMDApKTsKICAgIG9uVGljayhsZWZ0KTsKICAgIGlmKGxlZnQ8PTApeyBzdG9wVGltZXIoKTsgb25FbmQoKTsgfQogIH0sIDI1MCk7Cn0KZnVuY3Rpb24gc3RvcFJlY29yZGluZygpewogIGlmKFMucmVjb3JkZXIgJiYgUy5yZWNvcmRlci5zdGF0ZSE9PSJpbmFjdGl2ZSIpeyB0cnl7IFMucmVjb3JkZXIuc3RvcCgpOyB9Y2F0Y2goZSl7fSB9CiAgUy5yZWNvcmRlciA9IG51bGw7Cn0KZnVuY3Rpb24gbGVhdmVDbGVhbnVwKCl7IHN0b3BUaW1lcigpOyBzdG9wUmVjb3JkaW5nKCk7IH0KCi8qIC0tLS0tLS0tLS0gaGVscGVycyAtLS0tLS0tLS0tICovCmZ1bmN0aW9uIGVsKHRhZywgY2xzLCBodG1sKXsgdmFyIGU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCh0YWcpOyBpZihjbHMpZS5jbGFzc05hbWU9Y2xzOyBpZihodG1sIT1udWxsKWUuaW5uZXJIVE1MPWh0bWw7IHJldHVybiBlOyB9CmZ1bmN0aW9uIGZtdE1ldGEodCl7CiAgaWYodC5waGFzZWQpIHJldHVybiAiIjsKICByZXR1cm4gIlByZXBhcmF0aW9uOiA8Yj4iK3QucHJlcCsiIHNlY29uZHM8L2I+ICZuYnNwO1JlY29yZGluZzogPGI+Iit0LnJlYysiIHNlY29uZHM8L2I+IjsKfQpmdW5jdGlvbiB0YXNrVGl0bGUodCl7CiAgaWYodC53YXJtdXApIHJldHVybiBELmhlYWRlcisiIC0gU3BlYWtpbmcgUHJhY3RpY2UgVGFzayI7CiAgcmV0dXJuIEQuaGVhZGVyKyIgLSBTcGVha2luZyBUYXNrICIrdC5udW0rIjogIit0LnR5cGVFbjsKfQpmdW5jdGlvbiBlc3RUZXh0KGF2Zyl7CiAgaWYoYXZnPj00LjUpIHJldHVybiAiQ0xCIDkrIjsgaWYoYXZnPj0zLjUpIHJldHVybiAiQ0xCIDdcdTIwMTM4IjsgaWYoYXZnPj0yLjUpIHJldHVybiAiQ0xCIDVcdTIwMTM2IjsgcmV0dXJuICJDTEIgNCBvciBiZWxvdyI7Cn0KCi8qIC0tLS0tLS0tLS0gcmVuZGVyIC0tLS0tLS0tLS0gKi8KZnVuY3Rpb24gcmVuZGVyKCl7CiAgbGVhdmVDbGVhbnVwKCk7CiAgcm9vdC5pbm5lckhUTUwgPSAiIjsKICB2YXIgd3JhcCA9IGVsKCJkaXYiLCJjbHAtc3BrLXdyYXAiKTsKICB3cmFwLmFwcGVuZENoaWxkKGhlcm8oKSk7CiAgaWYoUy5jdXI+PTAgJiYgUy5jdXI8RC50YXNrcy5sZW5ndGgpIHdyYXAuYXBwZW5kQ2hpbGQoY2hpcHMoKSk7CiAgaWYoUy5jdXI9PT0tMSkgd3JhcC5hcHBlbmRDaGlsZChpbnRybygpKTsKICBlbHNlIGlmKFMuY3VyPT09OTkpIHdyYXAuYXBwZW5kQ2hpbGQoZW5kU2NyZWVuKCkpOwogIGVsc2Ugd3JhcC5hcHBlbmRDaGlsZCh0YXNrUGFuZWwoRC50YXNrc1tTLmN1cl0pKTsKICByb290LmFwcGVuZENoaWxkKHdyYXApOwogIHRyeXsgd2luZG93LnNjcm9sbFRvKHt0b3A6IHJvb3Qub2Zmc2V0VG9wLTEwLCBiZWhhdmlvcjoic21vb3RoIn0pOyB9Y2F0Y2goZSl7fQp9CmZ1bmN0aW9uIGhlcm8oKXsKICB2YXIgaCA9IGVsKCJkaXYiLCJjbHAtc3BrLWhlcm8iKTsKICBoLmFwcGVuZENoaWxkKGVsKCJzcGFuIiwidGFnIixVLmhlcm9UYWcpKTsKICBoLmFwcGVuZENoaWxkKGVsKCJoMSIsbnVsbCxELnRpdGxlLnNwbGl0KCJcdTIwMTQiKVsxXSA\/ICJTcGVha2luZyBcdTIwMTQiK0QudGl0bGUuc3BsaXQoIlx1MjAxNCIpWzFdIDogRC50aXRsZSkpOwogIHZhciBtID0gZWwoImRpdiIsIm1ldGEiKTsKICBVLmhlcm9NZXRhLmZvckVhY2goZnVuY3Rpb24oeCl7IG0uYXBwZW5kQ2hpbGQoZWwoInNwYW4iLG51bGwseCkpOyB9KTsKICBoLmFwcGVuZENoaWxkKG0pOwogIHJldHVybiBoOwp9CmZ1bmN0aW9uIGNoaXBzKCl7CiAgdmFyIGMgPSBlbCgiZGl2IiwiY2xwLXNway1jaGlwcyIpOwogIEQudGFza3MuZm9yRWFjaChmdW5jdGlvbih0LGkpewogICAgdmFyIGIgPSBlbCgiYnV0dG9uIiwiY2xwLXNway1jaGlwIisoaT09PVMuY3VyPyIgY3VyIjooUy5yZWNzW3Qua10\/IiBkb25lIjoiIikpLCB0Lndhcm11cD8iVyI6U3RyaW5nKHQubnVtKSk7CiAgICBiLnRpdGxlID0gdC50eXBlRW47CiAgICBiLm9uY2xpY2sgPSBmdW5jdGlvbigpeyBTLmN1cj1pOyByZW5kZXIoKTsgfTsKICAgIGMuYXBwZW5kQ2hpbGQoYik7CiAgfSk7CiAgdmFyIGUgPSBlbCgiYnV0dG9uIiwiY2xwLXNway1jaGlwIisoUy5jdXI9PT05OT8iIGN1ciI6IiIpLCJcdWQ4M2NcdWRmYzEiKTsKICBlLnRpdGxlID0gIkZpbmlzaCI7IGUub25jbGljayA9IGZ1bmN0aW9uKCl7IFMuY3VyPTk5OyByZW5kZXIoKTsgfTsKICBjLmFwcGVuZENoaWxkKGUpOwogIHJldHVybiBjOwp9CmZ1bmN0aW9uIGludHJvKCl7CiAgdmFyIHAgPSBlbCgiZGl2IiwiY2xwLXNway1wYW5lbCBjbHAtc3BrLWludHJvIik7CiAgdmFyIGJhciA9IGVsKCJkaXYiLCJjbHAtc3BrLWJhciIpOwogIGJhci5hcHBlbmRDaGlsZChlbCgic3BhbiIsInQiLEQuaGVhZGVyKyIgLSBTcGVha2luZyIpKTsKICB2YXIgbnggPSBlbCgiYnV0dG9uIiwiY2xwLXNway1uZXh0IixVLm5leHQpOyBueC5zdHlsZS5tYXJnaW5MZWZ0PSJhdXRvIjsKICBueC5vbmNsaWNrID0gZnVuY3Rpb24oKXsgUy5jdXI9MDsgcmVuZGVyKCk7IH07CiAgYmFyLmFwcGVuZENoaWxkKG54KTsKICBwLmFwcGVuZENoaWxkKGJhcik7CiAgdmFyIGIgPSBlbCgiZGl2IiwiY2xwLXNway1ib2R5Iik7CiAgdmFyIHByID0gZWwoImRpdiIsImNscC1zcGstcHJvbXB0Iik7CiAgcHIuYXBwZW5kQ2hpbGQoZWwoInNwYW4iLCJpIiwiaSIpKTsgcHIuYXBwZW5kQ2hpbGQoZWwoInNwYW4iLG51bGwsIlNwZWFraW5nIFRlc3QgSW5zdHJ1Y3Rpb25zIikpOwogIGIuYXBwZW5kQ2hpbGQocHIpOwogIHZhciB1bCA9IGVsKCJ1bCIpOwogIFUuaW50cm9Ob3Rlcy5mb3JFYWNoKGZ1bmN0aW9uKHgpeyB1bC5hcHBlbmRDaGlsZChlbCgibGkiLG51bGwseCkpOyB9KTsKICBiLmFwcGVuZENoaWxkKHVsKTsKICB2YXIgbWljcm93ID0gZWwoImRpdiIsImNscC1zcGstbWljcm93Iik7CiAgdmFyIG1idG4gPSBlbCgiYnV0dG9uIiwiY2xwLXNway1idG4gcHJpIixVLm1pY0VuYWJsZSk7CiAgdmFyIG1zdCA9IGVsKCJzcGFuIiwiY2xwLXNway1taWNzdCIsIiIpOwogIG1idG4ub25jbGljayA9IGZ1bmN0aW9uKCl7CiAgICBtYnRuLmRpc2FibGVkID0gdHJ1ZTsKICAgIGVuc3VyZU1pYyhmdW5jdGlvbihvayl7CiAgICAgIG1zdC5jbGFzc05hbWUgPSAiY2xwLXNway1taWNzdCAiKyhvaz8ib2siOiJiYWQiKTsKICAgICAgbXN0LmlubmVySFRNTCA9IG9rID8gIlx1MjcxNCAiK1UubWljUmVhZHkgOiAiXHUyNzE2ICIrVS5taWNCbG9ja2VkOwogICAgICBpZighb2spIG1idG4uZGlzYWJsZWQgPSBmYWxzZTsKICAgIH0pOwogIH07CiAgbWljcm93LmFwcGVuZENoaWxkKG1idG4pOyBtaWNyb3cuYXBwZW5kQ2hpbGQobXN0KTsKICBiLmFwcGVuZENoaWxkKG1pY3Jvdyk7CiAgYi5hcHBlbmRDaGlsZChlbCgiZGl2IiwiY2xwLXNway1ub3RlIixVLm1pY05vdGUpKTsKICB2YXIgY3RyID0gZWwoImRpdiIsImNscC1zcGstY3RyIik7CiAgdmFyIGdvID0gZWwoImJ1dHRvbiIsImNscC1zcGstYnRuIHByaSIsVS5zdGFydFRlc3QrIiBcdTI1YjYiKTsKICBnby5zdHlsZS5mb250U2l6ZT0iMTVweCI7IGdvLnN0eWxlLnBhZGRpbmc9IjEycHggMjZweCI7CiAgZ28ub25jbGljayA9IGZ1bmN0aW9uKCl7IFMuY3VyPTA7IHJlbmRlcigpOyB9OwogIGN0ci5hcHBlbmRDaGlsZChnbyk7CiAgYi5hcHBlbmRDaGlsZChjdHIpOwogIHAuYXBwZW5kQ2hpbGQoYik7CiAgcmV0dXJuIHA7Cn0KCi8qIC0tLS0tLS0tLS0gdGFzayBwYW5lbCAtLS0tLS0tLS0tICovCmZ1bmN0aW9uIHRhc2tQYW5lbCh0KXsKICB2YXIgcCA9IGVsKCJkaXYiLCJjbHAtc3BrLXBhbmVsIik7CiAgdmFyIGJhciA9IGVsKCJkaXYiLCJjbHAtc3BrLWJhciIpOwogIGJhci5hcHBlbmRDaGlsZChlbCgic3BhbiIsInQiLHRhc2tUaXRsZSh0KSkpOwogIHZhciBtZXRhID0gZWwoInNwYW4iLCJtIiwgdC5waGFzZWQgPyBwaGFzZWRNZXRhKHQpIDogZm10TWV0YSh0KSk7CiAgYmFyLmFwcGVuZENoaWxkKG1ldGEpOwogIHZhciBueCA9IGVsKCJidXR0b24iLCJjbHAtc3BrLW5leHQiLFUubmV4dCk7CiAgbngub25jbGljayA9IGZ1bmN0aW9uKCl7IFMuY3VyID0gKFMuY3VyKzEgPCBELnRhc2tzLmxlbmd0aCkgPyBTLmN1cisxIDogOTk7IHJlbmRlcigpOyB9OwogIGJhci5hcHBlbmRDaGlsZChueCk7CiAgcC5hcHBlbmRDaGlsZChiYXIpOwogIHZhciBiID0gZWwoImRpdiIsImNscC1zcGstYm9keSIpOwogIGlmKHQud2FybXVwKSBiLmFwcGVuZENoaWxkKGVsKCJkaXYiLCJjbHAtc3BrLWJhZGdlIixVLndhcm11cEJhZGdlKSk7CiAgaWYodC5waGFzZWQpIHJlbmRlclQ1KHQsYixtZXRhKTsKICBlbHNlIHJlbmRlclN0ZCh0LGIpOwogIGlmKHQudGlwcykgYi5hcHBlbmRDaGlsZChhY2NvcmRpb24odCkpOwogIHAuYXBwZW5kQ2hpbGQoYik7CiAgcmV0dXJuIHA7Cn0KZnVuY3Rpb24gcGhhc2VkTWV0YSh0KXsKICB2YXIgcGggPSBTLnBoYXNlW3Qua118fCIiOwogIGlmKHBoLmluZGV4T2YoImNob29zZSIpPT09MCkgcmV0dXJuICJQcmVwYXJhdGlvbjogPGI+Iit0LmNob29zZS5wcmVwKyIgc2Vjb25kczwvYj4iOwogIHJldHVybiAiUHJlcGFyYXRpb246IDxiPiIrdC5zcGVhay5wcmVwKyIgc2Vjb25kczwvYj4gJm5ic3A7UmVjb3JkaW5nOiA8Yj4iK3Quc3BlYWsucmVjKyIgc2Vjb25kczwvYj4iOwp9CmZ1bmN0aW9uIHByb21wdFJvdyh0ZXh0LCBsZWFkKXsKICB2YXIgYm94ID0gZWwoImRpdiIpOwogIGlmKGxlYWQpeyBib3guYXBwZW5kQ2hpbGQoZWwoImRpdiIsImNscC1zcGstbGVhZCIsbGVhZCkpOyB9CiAgdmFyIHByID0gZWwoImRpdiIsImNscC1zcGstcHJvbXB0Iik7CiAgcHIuYXBwZW5kQ2hpbGQoZWwoInNwYW4iLCJpIiwiaSIpKTsKICBwci5hcHBlbmRDaGlsZChlbCgic3BhbiIsbnVsbCx0ZXh0KSk7CiAgYm94LmFwcGVuZENoaWxkKHByKTsKICByZXR1cm4gYm94Owp9CmZ1bmN0aW9uIHJlbmRlclN0ZCh0LGIpewogIGIuYXBwZW5kQ2hpbGQocHJvbXB0Um93KHQucHJvbXB0LCB0LnByb21wdExlYWQpKTsKICBpZih0LmNob29zZU9uZSl7CiAgICB2YXIgYyA9IGVsKCJkaXYiLCJjbHAtc3BrLWNob29zZTEiLCI8ZGl2IGNsYXNzPSdlJz5DaG9vc2UgT05FOjwvZGl2PjxkaXYgY2xhc3M9J2UnIHN0eWxlPSdtYXJnaW4tdG9wOjZweCc+RUlUSEVSPC9kaXY+PGRpdj4iK3QuY2hvb3NlT25lWzBdKyI8L2Rpdj48ZGl2IGNsYXNzPSdlJyBzdHlsZT0nbWFyZ2luLXRvcDo2cHgnPk9SPC9kaXY+PGRpdj4iK3QuY2hvb3NlT25lWzFdKyI8L2Rpdj4iKTsKICAgIGIuYXBwZW5kQ2hpbGQoYyk7CiAgfQogIGlmKHQuaW1nICYmIEQuaW1nc1t0LmltZ10pewogICAgdmFyIGltID0gZWwoImltZyIsImNscC1zcGstaW1nIik7IGltLnNyYyA9IEQuaW1nc1t0LmltZ107IGltLmFsdCA9IHQudHlwZUVuOwogICAgYi5hcHBlbmRDaGlsZChpbSk7CiAgfQogIGIuYXBwZW5kQ2hpbGQodGltZXJCbG9jayh0LmssIHQucHJlcCwgdC5yZWMsICJ0IikpOwp9CmZ1bmN0aW9uIHJlbmRlclQ1KHQsYixtZXRhRWwpewogIHZhciBwaCA9IFMucGhhc2VbdC5rXTsKICBpZihwaC5pbmRleE9mKCJjaG9vc2UiKT09PTApewogICAgYi5hcHBlbmRDaGlsZChwcm9tcHRSb3codC5jaG9vc2Uuc2l0dWF0aW9uKSk7CiAgICBiLmFwcGVuZENoaWxkKGVsKCJkaXYiLCJjbHAtc3BrLW5vdGUiLHQuY2hvb3NlLm5vdGUpKTsKICAgIHZhciBncmlkID0gZWwoImRpdiIsImNscC1zcGstb3B0cyIpOwogICAgdC5jaG9vc2Uub3B0aW9ucy5mb3JFYWNoKGZ1bmN0aW9uKG8saWR4KXsKICAgICAgdmFyIGNhcmQgPSBlbCgiZGl2IiwiY2xwLXNway1jYXJkIisoUy50NWNob2ljZVt0LmtdPT09aWR4PyIgc2VsIjoiIikpOwogICAgICBjYXJkLmFwcGVuZENoaWxkKGltZ1RpdGxlQnVsbGV0cyhvKSk7CiAgICAgIHZhciBwayA9IGVsKCJkaXYiLCJwaWNrIiwgUy50NWNob2ljZVt0LmtdPT09aWR4ID8gIlx1MjcxNCBTZWxlY3RlZCIgOiAiIik7CiAgICAgIGNhcmQuYXBwZW5kQ2hpbGQocGspOwogICAgICBjYXJkLm9uY2xpY2sgPSBmdW5jdGlvbigpewogICAgICAgIFMudDVjaG9pY2VbdC5rXSA9IGlkeDsKICAgICAgICBncmlkLnF1ZXJ5U2VsZWN0b3JBbGwoIi5jbHAtc3BrLWNhcmQiKS5mb3JFYWNoKGZ1bmN0aW9uKGNkLGopewogICAgICAgICAgY2QuY2xhc3NOYW1lID0gImNscC1zcGstY2FyZCIrKGo9PT1pZHg\/IiBzZWwiOiIiKTsKICAgICAgICAgIGNkLnF1ZXJ5U2VsZWN0b3IoIi5waWNrIikudGV4dENvbnRlbnQgPSAoaj09PWlkeCk\/Ilx1MjcxNCBTZWxlY3RlZCI6IiI7CiAgICAgICAgfSk7CiAgICAgICAgY2J0bi5zdHlsZS5kaXNwbGF5ID0gImlubGluZS1ibG9jayI7CiAgICAgIH07CiAgICAgIGdyaWQuYXBwZW5kQ2hpbGQoY2FyZCk7CiAgICB9KTsKICAgIGIuYXBwZW5kQ2hpbGQoZ3JpZCk7CiAgICBiLmFwcGVuZENoaWxkKGVsKCJkaXYiLCJjbHAtc3BrLWhpbnQiLFUuY2hvb3NlSGludCkpOwogICAgLyogY291bnRkb3duIGZvciBjaG9vc2UgcGhhc2UgKi8KICAgIHZhciB0cm93ID0gZWwoImRpdiIsImNscC1zcGstdGltZXJyb3ciKTsKICAgIHZhciB0bSA9IGVsKCJkaXYiLCJjbHAtc3BrLXRpbWVyIik7CiAgICB0bS5hcHBlbmRDaGlsZChlbCgic3BhbiIsImljIiwiXHVkODNkXHVkZDUyIikpOwogICAgdmFyIGxiID0gZWwoImRpdiIpOyBsYi5hcHBlbmRDaGlsZChlbCgiZGl2IiwibGIiLFUucHJlcFRpdGxlKSk7CiAgICB0bS5hcHBlbmRDaGlsZChsYik7CiAgICB2YXIgbiA9IGVsKCJzcGFuIiwibiIsU3RyaW5nKHQuY2hvb3NlLnByZXApKTsKICAgIHRtLmFwcGVuZENoaWxkKG4pOwogICAgdHJvdy5hcHBlbmRDaGlsZCh0bSk7CiAgICBiLmFwcGVuZENoaWxkKHRyb3cpOwogICAgdmFyIGN0ciA9IGVsKCJkaXYiLCJjbHAtc3BrLWN0ciIpOwogICAgdmFyIHN0YXJ0ID0gZWwoImJ1dHRvbiIsImNscC1zcGstYnRuIHByaSIsVS5zdGFydFByZXApOwogICAgdmFyIGNidG4gPSBlbCgiYnV0dG9uIiwiY2xwLXNway1idG4iLFUuY29uZmlybUNob2ljZSk7CiAgICBjYnRuLnN0eWxlLmRpc3BsYXkgPSAoUy50NWNob2ljZVt0LmtdIT1udWxsKT8iaW5saW5lLWJsb2NrIjoibm9uZSI7CiAgICB2YXIgZ29TcGVhayA9IGZ1bmN0aW9uKCl7CiAgICAgIHN0b3BUaW1lcigpOwogICAgICBpZihTLnQ1Y2hvaWNlW3Qua109PW51bGwpIFMudDVjaG9pY2VbdC5rXSA9IDA7CiAgICAgIFMucGhhc2VbdC5rXSA9ICJzcGVhayI7CiAgICAgIHJlbmRlcigpOwogICAgfTsKICAgIHN0YXJ0Lm9uY2xpY2sgPSBmdW5jdGlvbigpewogICAgICBzdGFydC5kaXNhYmxlZCA9IHRydWU7CiAgICAgIFMucGhhc2VbdC5rXSA9ICJjaG9vc2UtcnVuIjsKICAgICAgY291bnRkb3duKHQuY2hvb3NlLnByZXAsIGZ1bmN0aW9uKGxlZnQpeyBuLnRleHRDb250ZW50ID0gU3RyaW5nKGxlZnQpOyB9LCBnb1NwZWFrKTsKICAgIH07CiAgICBjYnRuLm9uY2xpY2sgPSBnb1NwZWFrOwogICAgY3RyLmFwcGVuZENoaWxkKHN0YXJ0KTsgY3RyLmFwcGVuZENoaWxkKGNidG4pOwogICAgYi5hcHBlbmRDaGlsZChjdHIpOwogICAgaWYoUy5waGFzZVt0LmtdPT09ImNob29zZS1ydW4iKXsKICAgICAgc3RhcnQuZGlzYWJsZWQgPSB0cnVlOwogICAgICBjb3VudGRvd24odC5jaG9vc2UucHJlcCwgZnVuY3Rpb24obGVmdCl7IG4udGV4dENvbnRlbnQ9U3RyaW5nKGxlZnQpOyB9LCBnb1NwZWFrKTsKICAgIH0KICB9IGVsc2UgewogICAgbWV0YUVsLmlubmVySFRNTCA9IHBoYXNlZE1ldGEodCk7CiAgICBiLmFwcGVuZENoaWxkKHByb21wdFJvdyh0LnNwZWFrLnByb21wdCkpOwogICAgdmFyIGdyaWQgPSBlbCgiZGl2IiwiY2xwLXNway1vcHRzIik7CiAgICB2YXIgb3RoZXIgPSBlbCgiZGl2IiwiY2xwLXNway1jYXJkIHBsYWluIik7CiAgICBvdGhlci5hcHBlbmRDaGlsZChlbCgiZGl2IiwiaGQiLHQuc3BlYWsub3RoZXJMYWJlbCkpOwogICAgb3RoZXIuYXBwZW5kQ2hpbGQoaW1nVGl0bGVCdWxsZXRzKHQuc3BlYWsub3RoZXIpKTsKICAgIGdyaWQuYXBwZW5kQ2hpbGQob3RoZXIpOwogICAgdmFyIGNob3NlbiA9IHQuY2hvb3NlLm9wdGlvbnNbUy50NWNob2ljZVt0LmtdIT1udWxsID8gUy50NWNob2ljZVt0LmtdIDogMF07CiAgICB2YXIgbWluZSA9IGVsKCJkaXYiLCJjbHAtc3BrLWNhcmQgcGxhaW4gc2VsIik7CiAgICBtaW5lLmFwcGVuZENoaWxkKGVsKCJkaXYiLCJoZCIsVS55b3VyQ2hvaWNlKSk7CiAgICBtaW5lLmFwcGVuZENoaWxkKGltZ1RpdGxlQnVsbGV0cyhjaG9zZW4pKTsKICAgIGdyaWQuYXBwZW5kQ2hpbGQobWluZSk7CiAgICBiLmFwcGVuZENoaWxkKGdyaWQpOwogICAgYi5hcHBlbmRDaGlsZCh0aW1lckJsb2NrKHQuaywgdC5zcGVhay5wcmVwLCB0LnNwZWFrLnJlYywgInQ1cyIpKTsKICB9Cn0KZnVuY3Rpb24gaW1nVGl0bGVCdWxsZXRzKG8pewogIHZhciBib3ggPSBlbCgiZGl2Iik7CiAgaWYoby5pbWcgJiYgRC5pbWdzW28uaW1nXSl7IHZhciBpbSA9IGVsKCJpbWciKTsgaW0uc3JjID0gRC5pbWdzW28uaW1nXTsgaW0uYWx0ID0gby50aXRsZTsgYm94LmFwcGVuZENoaWxkKGltKTsgfQogIGJveC5hcHBlbmRDaGlsZChlbCgiZGl2IiwidHQiLG8udGl0bGUpKTsKICB2YXIgdWwgPSBlbCgidWwiKTsKICBvLmJ1bGxldHMuZm9yRWFjaChmdW5jdGlvbih4KXsgdWwuYXBwZW5kQ2hpbGQoZWwoImxpIixudWxsLHgpKTsgfSk7CiAgYm94LmFwcGVuZENoaWxkKHVsKTsKICByZXR1cm4gYm94Owp9CgovKiAtLS0tLS0tLS0tIHByZXAvcmVjb3JkIGJsb2NrIC0tLS0tLS0tLS0gKi8KZnVuY3Rpb24gdGltZXJCbG9jayhrZXksIHByZXBTZWNzLCByZWNTZWNzLCBtb2RlKXsKICB2YXIgYm94ID0gZWwoImRpdiIpOwogIHZhciB0cm93ID0gZWwoImRpdiIsImNscC1zcGstdGltZXJyb3ciKTsKICB2YXIgdG0gPSBlbCgiZGl2IiwiY2xwLXNway10aW1lciIpOwogIHZhciBpYyA9IGVsKCJzcGFuIiwiaWMiLCJcdWQ4M2RcdWRkNTIiKTsKICB2YXIgbGIgPSBlbCgiZGl2Iik7IHZhciBsYnQgPSBlbCgiZGl2IiwibGIiLFUucHJlcFRpdGxlKTsgbGIuYXBwZW5kQ2hpbGQobGJ0KTsKICB2YXIgbiA9IGVsKCJzcGFuIiwibiIsU3RyaW5nKHByZXBTZWNzKSk7CiAgdG0uYXBwZW5kQ2hpbGQoaWMpOyB0bS5hcHBlbmRDaGlsZChsYik7IHRtLmFwcGVuZENoaWxkKG4pOwogIHRyb3cuYXBwZW5kQ2hpbGQodG0pOyBib3guYXBwZW5kQ2hpbGQodHJvdyk7CiAgdmFyIHNwZWFrbm93ID0gZWwoImRpdiIsImNscC1zcGstc3BlYWtub3ciLCIiKTsgYm94LmFwcGVuZENoaWxkKHNwZWFrbm93KTsKICB2YXIgY3RyID0gZWwoImRpdiIsImNscC1zcGstY3RyIik7IGJveC5hcHBlbmRDaGlsZChjdHIpOwogIHZhciByZXZpZXdTbG90ID0gZWwoImRpdiIpOyBib3guYXBwZW5kQ2hpbGQocmV2aWV3U2xvdCk7CiAgdmFyIG1pY25vdGUgPSBlbCgiZGl2Iik7IGJveC5hcHBlbmRDaGlsZChtaWNub3RlKTsKCiAgZnVuY3Rpb24gc2hvd0lkbGUoKXsKICAgIGN0ci5pbm5lckhUTUwgPSAiIjsgc3BlYWtub3cudGV4dENvbnRlbnQgPSAiIjsKICAgIHRtLmNsYXNzTmFtZSA9ICJjbHAtc3BrLXRpbWVyIjsgbGJ0LnRleHRDb250ZW50ID0gVS5wcmVwVGl0bGU7IGljLnRleHRDb250ZW50ID0gIlx1ZDgzZFx1ZGQ1MiI7IG4udGV4dENvbnRlbnQgPSBTdHJpbmcocHJlcFNlY3MpOwogICAgdmFyIHN0YXJ0ID0gZWwoImJ1dHRvbiIsImNscC1zcGstYnRuIHByaSIsVS5zdGFydFByZXApOwogICAgc3RhcnQub25jbGljayA9IHN0YXJ0UHJlcDsKICAgIGN0ci5hcHBlbmRDaGlsZChzdGFydCk7CiAgICBpZihTLnJlY3Nba2V5XSkgc2hvd1JldmlldyhmYWxzZSk7CiAgfQogIGZ1bmN0aW9uIHN0YXJ0UHJlcCgpewogICAgZW5zdXJlTWljKGZ1bmN0aW9uKCl7CiAgICAgIGN0ci5pbm5lckhUTUwgPSAiIjsKICAgICAgdmFyIHNraXAgPSBlbCgiYnV0dG9uIiwiY2xwLXNway1idG4iLFUuc2tpcFByZXApOwogICAgICBza2lwLm9uY2xpY2sgPSBmdW5jdGlvbigpeyBzdG9wVGltZXIoKTsgc3RhcnRSZWMoKTsgfTsKICAgICAgY3RyLmFwcGVuZENoaWxkKHNraXApOwogICAgICBjb3VudGRvd24ocHJlcFNlY3MsIGZ1bmN0aW9uKGxlZnQpeyBuLnRleHRDb250ZW50ID0gU3RyaW5nKGxlZnQpOyB9LCBmdW5jdGlvbigpeyBzdGFydFJlYygpOyB9KTsKICAgIH0pOwogIH0KICBmdW5jdGlvbiBzdGFydFJlYygpewogICAgYmVlcCgyKTsKICAgIHRtLmNsYXNzTmFtZSA9ICJjbHAtc3BrLXRpbWVyIHJlYyI7CiAgICBpYy5pbm5lckhUTUwgPSAiPHNwYW4gY2xhc3M9J2NscC1zcGstZG90Jz48L3NwYW4+IjsKICAgIG4udGV4dENvbnRlbnQgPSBTdHJpbmcocmVjU2Vjcyk7CiAgICBjdHIuaW5uZXJIVE1MID0gIiI7CiAgICB2YXIgc3RvcHBlZCA9IGZhbHNlOwogICAgdmFyIGhhdmVNaWMgPSAoUy5taWNTdGF0ZT09PSJvayIgJiYgUy5zdHJlYW0pOwogICAgbGJ0LnRleHRDb250ZW50ID0gaGF2ZU1pYyA\/IFUucmVjVGl0bGUgOiBVLnRpbWVyT25seTsKICAgIHNwZWFrbm93LnRleHRDb250ZW50ID0gVS5zcGVha05vdzsKICAgIG1pY25vdGUuaW5uZXJIVE1MID0gaGF2ZU1pYyA\/ICIiIDogIjxkaXYgY2xhc3M9J2NscC1zcGstbWljJz4iK1UubWljQmxvY2tlZCsiPC9kaXY+IjsKICAgIHZhciB0MCA9IERhdGUubm93KCk7CiAgICB2YXIgZmluaXNoID0gZnVuY3Rpb24oKXsKICAgICAgaWYoc3RvcHBlZCkgcmV0dXJuOyBzdG9wcGVkID0gdHJ1ZTsKICAgICAgc3RvcFRpbWVyKCk7IGJlZXAoMSk7CiAgICAgIHNwZWFrbm93LnRleHRDb250ZW50ID0gIiI7CiAgICAgIHZhciBzZWNzID0gTWF0aC5taW4ocmVjU2VjcywgTWF0aC5yb3VuZCgoRGF0ZS5ub3coKS10MCkvMTAwMCkpOwogICAgICBpZihoYXZlTWljICYmIFMucmVjb3JkZXIpewogICAgICAgIFMucmVjb3JkZXIub25zdG9wID0gZnVuY3Rpb24oKXsKICAgICAgICAgIHZhciBibG9iID0gbmV3IEJsb2IoUy5jaHVua3MsIFMubWltZT97dHlwZTpTLm1pbWV9OnVuZGVmaW5lZCk7CiAgICAgICAgICBpZihTLnJlY3Nba2V5XSAmJiBTLnJlY3Nba2V5XS51cmwpeyB0cnl7IFVSTC5yZXZva2VPYmplY3RVUkwoUy5yZWNzW2tleV0udXJsKTsgfWNhdGNoKGUpe30gfQogICAgICAgICAgUy5yZWNzW2tleV0gPSB7IGJsb2I6IGJsb2IsIHVybDogVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKSwgc2Vjczogc2VjcyB9OwogICAgICAgICAgUy5yZWNvcmRlciA9IG51bGw7CiAgICAgICAgICBzaG93SWRsZSgpOyBzaG93UmV2aWV3KHRydWUpOwogICAgICAgIH07CiAgICAgICAgdHJ5eyBTLnJlY29yZGVyLnN0b3AoKTsgfWNhdGNoKGUpeyBTLnJlY3Nba2V5XSA9IHtibG9iOm51bGwsdXJsOm51bGwsc2VjczpzZWNzfTsgc2hvd0lkbGUoKTsgc2hvd1Jldmlldyh0cnVlKTsgfQogICAgICB9IGVsc2UgewogICAgICAgIFMucmVjc1trZXldID0geyBibG9iOm51bGwsIHVybDpudWxsLCBzZWNzOiBzZWNzIH07CiAgICAgICAgc2hvd0lkbGUoKTsgc2hvd1Jldmlldyh0cnVlKTsKICAgICAgfQogICAgfTsKICAgIGlmKGhhdmVNaWMpewogICAgICBTLmNodW5rcyA9IFtdOwogICAgICB0cnl7CiAgICAgICAgUy5yZWNvcmRlciA9IFMubWltZSA\/IG5ldyBNZWRpYVJlY29yZGVyKFMuc3RyZWFtLHttaW1lVHlwZTpTLm1pbWV9KSA6IG5ldyBNZWRpYVJlY29yZGVyKFMuc3RyZWFtKTsKICAgICAgICBTLnJlY29yZGVyLm9uZGF0YWF2YWlsYWJsZSA9IGZ1bmN0aW9uKGV2KXsgaWYoZXYuZGF0YSAmJiBldi5kYXRhLnNpemUpIFMuY2h1bmtzLnB1c2goZXYuZGF0YSk7IH07CiAgICAgICAgUy5yZWNvcmRlci5zdGFydCgpOwogICAgICB9Y2F0Y2goZSl7IFMucmVjb3JkZXIgPSBudWxsOyBoYXZlTWljID0gZmFsc2U7IGxidC50ZXh0Q29udGVudCA9IFUudGltZXJPbmx5OyB9CiAgICB9CiAgICB2YXIgc3RvcCA9IGVsKCJidXR0b24iLCJjbHAtc3BrLWJ0biB3YXJuIixVLnN0b3BSZWMpOwogICAgc3RvcC5vbmNsaWNrID0gZmluaXNoOwogICAgY3RyLmFwcGVuZENoaWxkKHN0b3ApOwogICAgY291bnRkb3duKHJlY1NlY3MsIGZ1bmN0aW9uKGxlZnQpeyBuLnRleHRDb250ZW50ID0gU3RyaW5nKGxlZnQpOyB9LCBmaW5pc2gpOwogIH0KICBmdW5jdGlvbiBzaG93UmV2aWV3KHNjcm9sbFRvKXsKICAgIHZhciByID0gUy5yZWNzW2tleV07IGlmKCFyKSByZXR1cm47CiAgICByZXZpZXdTbG90LmlubmVySFRNTCA9ICIiOwogICAgdmFyIHJ2ID0gZWwoImRpdiIsImNscC1zcGstcmV2aWV3Iik7CiAgICBydi5hcHBlbmRDaGlsZChlbCgiZGl2Iiwib2siLCJcdTI3MTQgIitVLnJlY29yZGVkKyIgKCIrci5zZWNzKyJzKSIpKTsKICAgIGlmKHIudXJsKXsKICAgICAgdmFyIGF1ID0gZWwoImF1ZGlvIik7IGF1LmNvbnRyb2xzID0gdHJ1ZTsgYXUuc3JjID0gci51cmw7CiAgICAgIHJ2LmFwcGVuZENoaWxkKGF1KTsKICAgICAgdmFyIHJvdyA9IGVsKCJkaXYiLCJjbHAtc3BrLWN0ciIpOwogICAgICB2YXIgZGwgPSBlbCgiYSIsImNscC1zcGstYnRuIixVLmRvd25sb2FkKTsKICAgICAgZGwuaHJlZiA9IHIudXJsOyBkbC5kb3dubG9hZCA9ICJjZWxwaXAtcyIrRC5zZXQrInQiK0QudGVzdCsiLXRhc2siKyhrZXk9PT0idyI\/IjAiOmtleS5yZXBsYWNlKCJ0IiwiIikpKyIuIitTLmV4dDsKICAgICAgcm93LmFwcGVuZENoaWxkKGRsKTsKICAgICAgcnYuYXBwZW5kQ2hpbGQocm93KTsKICAgIH0KICAgIHJldmlld1Nsb3QuYXBwZW5kQ2hpbGQocnYpOwogICAgaWYoc2Nyb2xsVG8peyB0cnl7IHJ2LnNjcm9sbEludG9WaWV3KHtiZWhhdmlvcjoic21vb3RoIixibG9jazoiY2VudGVyIn0pOyB9Y2F0Y2goZSl7fSB9CiAgfQogIHNob3dJZGxlKCk7CiAgcmV0dXJuIGJveDsKfQoKLyogLS0tLS0tLS0tLSB0aXBzL3NhbXBsZXMgYWNjb3JkaW9uIC0tLS0tLS0tLS0gKi8KZnVuY3Rpb24gYWNjb3JkaW9uKHQpewogIHZhciBhY2MgPSBlbCgiZGl2IiwiY2xwLXNway1hY2MiKTsKICB2YXIgYnRuID0gZWwoImJ1dHRvbiIsbnVsbCxVLnRpcHNUb2dnbGUpOwogIGJ0bi5vbmNsaWNrID0gZnVuY3Rpb24oKXsgYWNjLmNsYXNzTmFtZSA9IGFjYy5jbGFzc05hbWUuaW5kZXhPZigib3BlbiIpPi0xID8gImNscC1zcGstYWNjIiA6ICJjbHAtc3BrLWFjYyBvcGVuIjsgfTsKICBhY2MuYXBwZW5kQ2hpbGQoYnRuKTsKICB2YXIgYm9keSA9IGVsKCJkaXYiLCJjbHAtc3BrLWFjY2JvZHkiKTsKICB2YXIgdGFicyA9IGVsKCJkaXYiLCJjbHAtc3BrLXRhYnMiKTsKICB2YXIgcGFuZXMgPSBbXTsKICBmdW5jdGlvbiBhZGRUYWIobGFiZWwsIHBhbmVCdWlsZGVyKXsKICAgIHZhciBpID0gcGFuZXMubGVuZ3RoOwogICAgdmFyIHRiID0gZWwoImJ1dHRvbiIsImNscC1zcGstdGFiIisoaT09PTA\/IiBvbiI6IiIpLGxhYmVsKTsKICAgIHZhciBwbiA9IGVsKCJkaXYiLCJjbHAtc3BrLXRhYnBhbmUiKyhpPT09MD8iIG9uIjoiIikpOwogICAgcGFuZUJ1aWxkZXIocG4pOwogICAgdGIub25jbGljayA9IGZ1bmN0aW9uKCl7CiAgICAgIHRhYnMucXVlcnlTZWxlY3RvckFsbCgiLmNscC1zcGstdGFiIikuZm9yRWFjaChmdW5jdGlvbih4LGopeyB4LmNsYXNzTmFtZSA9ICJjbHAtc3BrLXRhYiIrKGo9PT1pPyIgb24iOiIiKTsgfSk7CiAgICAgIGJvZHkucXVlcnlTZWxlY3RvckFsbCgiLmNscC1zcGstdGFicGFuZSIpLmZvckVhY2goZnVuY3Rpb24oeCxqKXsgeC5jbGFzc05hbWUgPSAiY2xwLXNway10YWJwYW5lIisoaj09PWk\/IiBvbiI6IiIpOyB9KTsKICAgIH07CiAgICB0YWJzLmFwcGVuZENoaWxkKHRiKTsgcGFuZXMucHVzaChwbik7CiAgfQogIGFkZFRhYihVLnRhYlRpcHMsIGZ1bmN0aW9uKHBuKXsKICAgIHZhciB1bCA9IGVsKCJ1bCIpOwogICAgdC50aXBzLmJ1bGxldHMuZm9yRWFjaChmdW5jdGlvbih4KXsgdWwuYXBwZW5kQ2hpbGQoZWwoImxpIixudWxsLHgpKTsgfSk7CiAgICBwbi5hcHBlbmRDaGlsZCh1bCk7CiAgICBwbi5hcHBlbmRDaGlsZChlbCgiZGl2IixudWxsLCI8Yj4iK1UudXNlZnVsUGhyYXNlcysiOjwvYj4iKSk7CiAgICB2YXIgcGggPSBlbCgiZGl2IiwiY2xwLXNway1waHIiKTsKICAgIHQudGlwcy5waHJhc2VzLmZvckVhY2goZnVuY3Rpb24oeCl7IHBoLmFwcGVuZENoaWxkKGVsKCJzcGFuIixudWxsLHgpKTsgfSk7CiAgICBwbi5hcHBlbmRDaGlsZChwaCk7CiAgfSk7CiAgaWYodC5zNikgYWRkVGFiKFUudGFiUzYsIGZ1bmN0aW9uKHBuKXsgcG4uYXBwZW5kQ2hpbGQoZWwoImRpdiIsImNscC1zcGstc2FtcGxlIHM2Iix0LnM2KSk7IH0pOwogIGlmKHQuczkpIGFkZFRhYihVLnRhYlM5LCBmdW5jdGlvbihwbil7IHBuLmFwcGVuZENoaWxkKGVsKCJkaXYiLCJjbHAtc3BrLXNhbXBsZSIsdC5zOSkpOyB9KTsKICBpZighdC53YXJtdXApIGFkZFRhYihVLnRhYlJ1YnJpYywgZnVuY3Rpb24ocG4pewogICAgcG4uYXBwZW5kQ2hpbGQoZWwoImRpdiIsbnVsbCxVLnJ1YnJpY05vdGUpKTsKICAgIHZhciB0YiA9IGVsKCJ0YWJsZSIsImNscC1zcGstcnViIik7CiAgICBpZighUy5ydWJyaWNbdC5rXSkgUy5ydWJyaWNbdC5rXSA9IFswLDAsMCwwXTsKICAgIHZhciBlc3REID0gZWwoImRpdiIsImNscC1zcGstZXN0IiwiIik7CiAgICBVLnJ1YnJpY0NyaXQuZm9yRWFjaChmdW5jdGlvbihjcixjaSl7CiAgICAgIHZhciB0ciA9IGVsKCJ0ciIpOwogICAgICB0ci5hcHBlbmRDaGlsZChlbCgidGQiLG51bGwsY3IpKTsKICAgICAgdmFyIHRkID0gZWwoInRkIik7IHRkLnN0eWxlLndoaXRlU3BhY2UgPSAibm93cmFwIjsgdGQuc3R5bGUudGV4dEFsaWduID0gInJpZ2h0IjsKICAgICAgZm9yKHZhciBzMj0xO3MyPD01O3MyKyspewogICAgICAgIChmdW5jdGlvbihzdil7CiAgICAgICAgICB2YXIgc3AgPSBlbCgic3BhbiIsImNscC1zcGstc3RhciIrKFMucnVicmljW3Qua11bY2ldPj1zdj8iIG9uIjoiIiksIlx1MjYwNSIpOwogICAgICAgICAgc3Aub25jbGljayA9IGZ1bmN0aW9uKCl7CiAgICAgICAgICAgIFMucnVicmljW3Qua11bY2ldID0gc3Y7CiAgICAgICAgICAgIHRkLnF1ZXJ5U2VsZWN0b3JBbGwoIi5jbHAtc3BrLXN0YXIiKS5mb3JFYWNoKGZ1bmN0aW9uKHgsail7IHguY2xhc3NOYW1lID0gImNscC1zcGstc3RhciIrKGo8c3Y\/IiBvbiI6IiIpOyB9KTsKICAgICAgICAgICAgdXBkKCk7CiAgICAgICAgICB9OwogICAgICAgICAgdGQuYXBwZW5kQ2hpbGQoc3ApOwogICAgICAgIH0pKHMyKTsKICAgICAgfQogICAgICB0ci5hcHBlbmRDaGlsZCh0ZCk7CiAgICAgIHRiLmFwcGVuZENoaWxkKHRyKTsKICAgIH0pOwogICAgcG4uYXBwZW5kQ2hpbGQodGIpOwogICAgcG4uYXBwZW5kQ2hpbGQoZXN0RCk7CiAgICBwbi5hcHBlbmRDaGlsZChlbCgiZGl2IiwiY2xwLXNway1ub3RlIixVLmVzdERpc2NsYWltZXIpKTsKICAgIGZ1bmN0aW9uIHVwZCgpewogICAgICB2YXIgYXJyID0gUy5ydWJyaWNbdC5rXTsgdmFyIGRvbmUgPSBhcnIuZXZlcnkoZnVuY3Rpb24oeCl7cmV0dXJuIHg+MDt9KTsKICAgICAgZXN0RC50ZXh0Q29udGVudCA9IGRvbmUgPyAoVS5lc3RpbWF0ZSsiICIrZXN0VGV4dChhcnIucmVkdWNlKGZ1bmN0aW9uKGEsYil7cmV0dXJuIGErYjt9LDApLzQpKSA6ICIiOwogICAgfQogICAgdXBkKCk7CiAgfSk7CiAgYm9keS5pbnNlcnRCZWZvcmUodGFicywgYm9keS5maXJzdENoaWxkKTsKICBwYW5lcy5mb3JFYWNoKGZ1bmN0aW9uKHBuKXsgYm9keS5hcHBlbmRDaGlsZChwbik7IH0pOwogIGFjYy5hcHBlbmRDaGlsZChib2R5KTsKICByZXR1cm4gYWNjOwp9CgovKiAtLS0tLS0tLS0tIGVuZCBzY3JlZW4gLS0tLS0tLS0tLSAqLwpmdW5jdGlvbiBlbmRTY3JlZW4oKXsKICB2YXIgcCA9IGVsKCJkaXYiLCJjbHAtc3BrLXBhbmVsIGNscC1zcGstZW5kIik7CiAgdmFyIGJhciA9IGVsKCJkaXYiLCJjbHAtc3BrLWJhciIpOwogIGJhci5hcHBlbmRDaGlsZChlbCgic3BhbiIsInQiLEQuaGVhZGVyKyIgLSBTcGVha2luZyBcdTIwMTQgIitVLmVuZFRpdGxlKSk7CiAgcC5hcHBlbmRDaGlsZChiYXIpOwogIHZhciBiID0gZWwoImRpdiIsImNscC1zcGstYm9keSIpOwogIGIuYXBwZW5kQ2hpbGQoZWwoImRpdiIsbnVsbCwiPGI+IitVLmVuZFRpdGxlKyI8L2I+ICIrVS5lbmRTdWIpKTsKICB2YXIgdGIgPSBlbCgidGFibGUiKTsKICB2YXIgdGhyID0gZWwoInRyIik7IFsiVGFzayIsIlR5cGUiLCJSZWNvcmRpbmciLCIiXS5mb3JFYWNoKGZ1bmN0aW9uKGgpeyB0aHIuYXBwZW5kQ2hpbGQoZWwoInRoIixudWxsLGgpKTsgfSk7CiAgdGIuYXBwZW5kQ2hpbGQodGhyKTsKICB2YXIgbnJlYyA9IDA7CiAgRC50YXNrcy5mb3JFYWNoKGZ1bmN0aW9uKHQsaSl7CiAgICB2YXIgdHIgPSBlbCgidHIiKTsKICAgIHRyLmFwcGVuZENoaWxkKGVsKCJ0ZCIsbnVsbCwiPGI+IisodC53YXJtdXA\/IlciOnQubnVtKSsiPC9iPiIpKTsKICAgIHRyLmFwcGVuZENoaWxkKGVsKCJ0ZCIsbnVsbCx0LnR5cGVFbikpOwogICAgdmFyIHIgPSBTLnJlY3NbdC5rXTsKICAgIHZhciB0ZCA9IGVsKCJ0ZCIpOwogICAgaWYociAmJiByLnVybCl7IG5yZWMrKzsgdmFyIGF1ID0gZWwoImF1ZGlvIik7IGF1LmNvbnRyb2xzID0gdHJ1ZTsgYXUuc3JjID0gci51cmw7IHRkLmFwcGVuZENoaWxkKGF1KTsgfQogICAgZWxzZSBpZihyKXsgbnJlYysrOyB0ZC50ZXh0Q29udGVudCA9IHIuc2VjcysicyAoIitVLnRpbWVyT25seSsiKSI7IH0KICAgIGVsc2UgdGQuaW5uZXJIVE1MID0gIjxzcGFuIHN0eWxlPSdjb2xvcjojYzYyODI4Jz4iK1UuZW5kTm9SZWMrIjwvc3Bhbj4iOwogICAgdHIuYXBwZW5kQ2hpbGQodGQpOwogICAgdmFyIHRkMiA9IGVsKCJ0ZCIpOwogICAgdmFyIGdvID0gZWwoImJ1dHRvbiIsImNscC1zcGstYnRuIiwiXHUyMTkyIik7CiAgICBnby5vbmNsaWNrID0gZnVuY3Rpb24oKXsgUy5jdXI9aTsgcmVuZGVyKCk7IH07CiAgICB0ZDIuYXBwZW5kQ2hpbGQoZ28pOwogICAgdHIuYXBwZW5kQ2hpbGQodGQyKTsKICAgIHRiLmFwcGVuZENoaWxkKHRyKTsKICB9KTsKICBiLmFwcGVuZENoaWxkKHRiKTsKICAvKiBydWJyaWMgYXZnICovCiAgdmFyIHZhbHMgPSBbXTsKICBPYmplY3Qua2V5cyhTLnJ1YnJpYykuZm9yRWFjaChmdW5jdGlvbihrKXsgdmFyIGE9Uy5ydWJyaWNba107IGlmKGEgJiYgYS5ldmVyeShmdW5jdGlvbih4KXtyZXR1cm4geD4wO30pKSB2YWxzLnB1c2goYS5yZWR1Y2UoZnVuY3Rpb24oeCx5KXtyZXR1cm4geCt5O30sMCkvNCk7IH0pOwogIGlmKHZhbHMubGVuZ3RoKXsKICAgIHZhciBhdmcgPSB2YWxzLnJlZHVjZShmdW5jdGlvbihhLGMpe3JldHVybiBhK2M7fSwwKS92YWxzLmxlbmd0aDsKICAgIGIuYXBwZW5kQ2hpbGQoZWwoImRpdiIsImNscC1zcGstZXN0IixVLmVzdGltYXRlKyIgIitlc3RUZXh0KGF2ZykrIiAoIit2YWxzLmxlbmd0aCsiIHRhc2socykgc2VsZi1yYXRlZCkiKSk7CiAgICBiLmFwcGVuZENoaWxkKGVsKCJkaXYiLCJjbHAtc3BrLW5vdGUiLFUuZXN0RGlzY2xhaW1lcikpOwogIH0KICB2YXIgY3RyID0gZWwoImRpdiIsImNscC1zcGstY3RyIik7CiAgdmFyIHJlZG8gPSBlbCgiYnV0dG9uIiwiY2xwLXNway1idG4iLFUuZW5kUmVkbyk7CiAgcmVkby5vbmNsaWNrID0gZnVuY3Rpb24oKXsKICAgIE9iamVjdC5rZXlzKFMucmVjcykuZm9yRWFjaChmdW5jdGlvbihrKXsgaWYoUy5yZWNzW2tdJiZTLnJlY3Nba10udXJsKXsgdHJ5e1VSTC5yZXZva2VPYmplY3RVUkwoUy5yZWNzW2tdLnVybCk7fWNhdGNoKGUpe30gfSB9KTsKICAgIFMucmVjcyA9IHt9OyBTLnJ1YnJpYyA9IHt9OyBTLnQ1Y2hvaWNlID0ge307CiAgICBELnRhc2tzLmZvckVhY2goZnVuY3Rpb24odCl7IFMucGhhc2VbdC5rXSA9IHQucGhhc2VkPyJjaG9vc2UtaWRsZSI6ImlkbGUiOyB9KTsKICAgIFMuY3VyID0gLTE7IHJlbmRlcigpOwogIH07CiAgdmFyIHQyID0gZWwoImEiLCJjbHAtc3BrLWJ0biBwcmkiLFUuZW5kVDIrIiAiKyhELnRlc3Q9PT0xPzI6MSkrIiBcdTIxOTIiKTsgdDIuaHJlZiA9IEQub3RoZXJVcmw7CiAgdmFyIGh1YiA9IGVsKCJhIiwiY2xwLXNway1idG4iLFUuZW5kSHViKTsgaHViLmhyZWYgPSAiL2NlbHBpcC8iOwogIGN0ci5hcHBlbmRDaGlsZChyZWRvKTsgY3RyLmFwcGVuZENoaWxkKHQyKTsgY3RyLmFwcGVuZENoaWxkKGh1Yik7CiAgYi5hcHBlbmRDaGlsZChjdHIpOwogIGIuYXBwZW5kQ2hpbGQoZWwoImRpdiIsImNscC1zcGstbWljIixVLm1pY05vdGUpKTsKICBwLmFwcGVuZENoaWxkKGIpOwogIHJldHVybiBwOwp9CgovKiBleHBvc2UgZm9yIHRlc3RzICovCndpbmRvdy5DTFBTUEsgPSB7IHN0YXRlOiBTLCBkYXRhOiBELCBnb3RvOiBmdW5jdGlvbihpKXsgUy5jdXI9aTsgcmVuZGVyKCk7IH0sIHJlbmRlcjogcmVuZGVyIH07CnJlbmRlcigpOwp9KSgpOwo=\"));<\/script><\/p>","protected":false},"excerpt":{"rendered":"<p>CELPIP Speaking Set 5 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-6335","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/pages\/6335","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=6335"}],"version-history":[{"count":1,"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/pages\/6335\/revisions"}],"predecessor-version":[{"id":6524,"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/pages\/6335\/revisions\/6524"}],"wp:attachment":[{"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/media?parent=6335"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}