PGh0bWw+CjxoZWFkPgo8c2NyaXB0PgpmdW5jdGlvbiB0ZXN0KCkKewogICAgdmFyIGNvbnRlbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29udGVudCcpOwogICAgY29udGVudC5zdHlsZS5hcHBsZUxpbmVDbGFtcCA9ICIxMCUiOwp9Cjwvc2NyaXB0Pgo8c3R5bGU+Ci5jb250ZW50IHsKICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICBkaXNwbGF5OiAta2h0bWwtYm94OwogICAgLWtodG1sLWJveC1vcmllbnQ6IHZlcnRpY2FsOwp9Cjwvc3R5bGU+CjwvaGVhZD4KPGJvZHkgb25sb2FkPSJ0ZXN0KCkiPgo8cD5UaGlzIHRlc3RzIHVzZSBvZiB0aGUgLWFwcGxlLWxpbmUtY2xhbXAgZnVuY3Rpb24gaW4gYSB3ZWIgcGFnZSwgZnJvbSBKYXZhU2NyaXB0LCBhbmQgdXNpbmcgdGhlICJhcHBsZSIgcHJlZml4LCBub3QgImtodG1sIi48L3A+CjxwPklmIGl0IHdvcmtzIHByb3Blcmx5LCB0aGUgYXJ0aWNsZSBiZWxvdyBzaG91bGQgc2hvdyBvbmx5IHRoZSBmaXJzdCBmZXcgbGluZXMuIE90aGVyd2lzZSwgaXQgbWlnaHQgc2hvdyBtYW55IGxpbmVzLjwvcD4KPGhyPiAKPGRpdiBjbGFzcz0iY29udGVudCIgaWQ9ImNvbnRlbnQiPiAgICAKPGRpdj4KPHA+SXQgd2FzIGp1c3QgbGFzdCBuaWdodCwgSSB0aGluaywgdGhhdCBJIHdhcyBJTSYjMzk7aW5nIHdpdGggYSBmcmllbmQgYW5kIEkgc2FpZCwgJnF1b3Q7TmV4dCB3ZWVrIFNpbW9uIHN0YXJ0cyBnb2luZyB0bwpzY2hvb2wgZm9yIDMgZGF5cyBleHRlbmRlZCAodW50aWwgM3BtKSBhbmQgU29waGlhIHN0YXJ0cyBzd2ltIGNhbXAhIEkgd29uJiMzOTt0IGtub3cgd2hhdCB0byBkbyB3aXRoIG15IGZyZWUgdGltZSEgQnV0IEkmIzM5O20Kd2lsbGluZyB0byBmaW5kIG91dC4mcXVvdDs8L3A+PHA+WW91IGtub3cgdGhlIG9sZCBzYXlpbmc6ICZxdW90O01hbiBwbGFucywgR29kIGxhdWdocy4mcXVvdDs8L3A+CjxwPlRvZGF5IEkgZ290IGEgY2FsbCBmcm9tIHRoZSBwcmVzY2hvb2wgdGVsbGluZyBtZSB0aGF0IFNvcGhpYSBoYWQgYnJva2VuIGhlciBhcm0uPC9wPgo8cD5JdCBoYXBwZW5lZCBvbiB0aGUgcGxheWdyb3VuZC4gSSBpbWFnaW5lZCBzaGUgaGFkIGZhbGxlbiBvZmYgdGhlIG1vbmtleSBiYXJzIG9yIHNvbWV0aGluZywgYnV0IG5vOiBzaGUgaGFkIGJlZW4gc2l0dGluZwphdCB0aGUgQXJ0IFRhYmxlLCBhbmQgYXMgc2hlIHdhcyBnZXR0aW5nIG9mZiB0aGUgYmVuY2ggc2hlIHNsaXBwZWQgYW5kIGZlbGwgb24gaGVyIGFybS4gU2hlIHdhcyBiZWluZyB2ZXJ5IGJyYXZlIHdoZW4gSSBjYW1lCnRvIGdldCBoZXLRbm8gdGVhcnMsIHN0b2ljYWxseSBob2xkaW5nIGhlciBhcm0gY292ZXJlZCBpbiBpY2UgcGFja3MuIFNoZSA8aT5oYWQ8L2k+IGNyaWVkLCBzaGUgdG9sZCBtZS4gQWxsIG9mIHRoZSB0ZWFjaGVycwp3ZXJlIHF1aXRlIGFtYXplZCBhdCBob3cgYnJhdmUgc2hlIHdhcyBiZWluZy4gSSB0b29rIGhlciB0byB0aGUgZG9jdG9yIGFuZCBmcm9tIHRoZXJlIHRvIHRoZSBwZWRpYXRyaWMgb3J0aG9wZWRpYyBkb2N0b3IuClNoZSBzdGFydGVkIHRvIGxvc2UgaGVyIGNvbXBvc3VyZSwgdGhvdWdoLCBhZnRlciBzaGUgaGFkIGZpbmFsbHkgZ290dGVuIHRoZSBYLXJheXMgKCZxdW90O0xpa2UgQ3VyaW91cyBHZW9yZ2UgZ290IHdoZW4gaGUKd2VudCB0byB0aGUgaG9zcGl0YWwmcXVvdDspIGFuZCB3ZSBoYWQgdG8gd2FpdCBpbiB0aGUgZXhhbSByb29tLjwvcD4KPHA+JnF1b3Q7SSB3YW50IHRvIGdvIGhvbWUgbm93LCZxdW90OyBzaGUgc2FpZC4gJnF1b3Q7SSB3aXNoIEkmIzM5O2QgbmV2ZXIgaHVydCBteSBhcm0uJnF1b3Q7PC9wPgo8cD5UaGUgb3J0aG8gdGVjaCBjYW1lIGluIHRvIGdpdmUgaGVyIGEgc3BsaW50IChzaGUmIzM5O2xsIGhhdmUgYSBzcGxpbnQgZm9yIGEgY291cGxlIG9mIGRheXMgYW5kIHRoZW4gZ2V0IGEgY2FzdCBvbiBUaHVyc2RheSksCmFuZCBjYW4gSSB0ZWxsIHlvdSBob3cgd29ycmlzb21lIGl0IGlzIHRvIGhhdmUgYW4gb3J0aG8gdGVjaCB3aG8gaXMgYSA8Yj5kZWFkIHJpbmdlcjwvYj4gZm9yIElhbiBNY1NoYW5lIGFzIEFsIFN3ZWFyZW5nZW4Kd3JhcHBpbmcgdXAgeW91ciBkYXVnaHRlciBpbiBnYXV6ZT8gKEkmIzM5O20gdG90YWxseSBzZXJpb3VzLiBIZSBkaWRuJiMzOTt0IGhhdmUgZ3JlYXNlIGluIGhpcyBoYWlyLCBhbmQgaGUgZGlkbiYjMzk7dCBoYXZlIHRoZQpsaXR0bGUgYmVhcmQgdW5kZXIgaGlzIGxpcCwgYnV0IG90aGVyIHRoYW4gdGhhdDogeXVwLik8L3A+CjxwPlNvIG5vdyBzaGUmIzM5O3Mgb24gdGhlIGNvdWNoLCB3YXRjaGluZyAmcXVvdDtEcmFnb250YWxlcyZxdW90OyB3aXRoIGhlciBhcm0gcHJvcHBlZCB1cCBvbiBhIHBpbGxvdyAodG8ga2VlcCBpdCBhYm92ZSB0aGUgaGVhcnQpLgpTaGUmIzM5O3MgZWF0aW5nIGEgY291cGxlIG9mIGN1dC11cCBhcHBsZXMgYW5kIGNoZWVzZSBzdGlja3MgKCZxdW90O2JlY2F1c2UgdGhhdCYjMzk7cyBhbGwgSSBjYW4gZWF0IG5vdywgTW9tbXkmcXVvdDspLjwvcD4KPHA+U2hlJiMzOTtzIHVwc2V0IGJlY2F1c2Ugc2hlJiMzOTtzIG5vdCBnb2luZyB0byBiZSBhYmxlIHRvIGRvIGFsbCB0aGUgc3dpbW1pbmcgc2hlIHdhcyBwbGFubmluZy4gSSYjMzk7bSB1cHNldCBiZWNhdXNlIG15CmxpdHRsZSBnaXJsIGdvdCBodXJ0LiBJIGFzc3VtZSB0aGF0IGFmdGVyIGEgZGF5IG9yIHNvIHdlJiMzOTtsbCBhZGp1c3QgdG8gdGhlIG5ldyByZWdpbWVuLiBPZiBjb3Vyc2UsIHNoZSBjYW4mIzM5O3QgZ28gdG8gaGVyIGxhc3QKZGF5IG9mIHByZXNjaG9vbCB0b21vcnJvdywgYmVjYXVzZSB0aGV5JiMzOTtyZSBoYXZpbmcgJnF1b3Q7V2F0ZXIgRGF5cywmcXVvdDsgYW5kIHNoZSBjYW4mIzM5O3QgZ2V0IHdldC48L3A+CjxwPlRoZSB3ZWF0aGVyJiMzOTtzIGZpbmFsbHkgZ290dGVuIGV4dHJlbWVseSBob3QgYXJvdW5kIGhlcmUsIGFuZCBzaGUgY2FuJiMzOTt0IGdldCBoZXIgc3BsaW50IChhbmQgaW4gYSBmZXcgZGF5cywgaGVyIGNhc3QpIHdldC4gPGk+TmVhdC48L2k+PC9wPgo8cD5JJiMzOTt2ZSBuZXZlciBicm9rZW4gYW55dGhpbmcgKGtub2NrIG9uIG5lYXJlc3Qgd29vZCBzcHJpdGUp0WRvZXMgaXQgYWZmZWN0IHlvdXIgb3V0bG9vayBvbiBsaWZlPwpTaGUgaGFzIGFuIGFkdmVudHVyZXNvbWUgc3Bpcml0IGFuZCBJIGhvcGUgc2hlJiMzOTtzIGp1c3QgYXMgZW5lcmdldGljIGFmdGVyIHRoaXMgbGl0dGxlIGluY2lkZW50IGFzIHNoZSB3YXMgYmVmb3JlLgpBdCB0aGUgbW9tZW50IHNoZSYjMzk7cyBldmVuIGxvc3QgaGVyIHNlbnNlIG9mIGh1bW9yLjwvcD4KPC9kaXY+Cjxocj4KPC9kaXY+CjwvYm9keT4KPC9odG1sPgo=