SGksCgpPbiBGcmksIE1heSAyOSwgMjAxNSBhdCA4OjMzIEFNLCBSdXNzZWxsTWMgPGFwcHRlY2hu ekBnbWFpbC5jb20+IHdyb3RlOgo+IEkgc2FpZDoKPgo+Pgo+IFNvbWV0aGluZyBiZXR0ZXIgdGhh biAzNTUvMTEzIGxvb2tzIGR1ZSB0byBwb3Agb3V0IGFyb3VuZAo+PiAyNDg2MTAgLyA3OTEzNSAo d2hpY2ggaXMgYSBtdWx0aXBsZSBvZiAzNTUvMTEzKQo+Cj4gVGhhdCBzaG91bGQgaGF2ZSBiZWVu OiAgMjQ4NTAwIC8gNzkxMDAuCj4gTm90ICB0aGUgMjQ4NjEwIC8gNzkxMzUgdGhhdCBJIHdyb3Rl LCB3aGljaCB3YXMgZm9yIGEgbmVhcmJ5IGNlbGwgdGhhdCB3YXMKPiBhbiBpbmZlcmlvciBsb2Nh bCBtYXhpbXVtLgoKVGhlcmUgYXJlIGRpZmZlcmVudCBtZXRyaWNzIG9mIHdoaWNoIGFwcHJveGlt YXRpb24gaXMgImJldHRlciIuCgpJZiB5b3VyIG1ldHJpYyBpcyAibnVtYmVyIG9mIGJpdHMgb2Yg bnVtZXJhdG9yICsgZGVub21pbmF0b3IgLSBudW1iZXIgb2YgYml0cwpvZiB0aGUgYXBwcm94aW1h dGlvbiIsIDM1NS8xMTMgaXMgdGhlIGJlc3QgPCAxMF4yNTAsIHdpdGggOC41ICsgNi44IC0KMjEu OCA9IC02LjUKClNvLCAzNTUvMTEzIGhhcyA2LjUgYml0cyBsZXNzIHRoYW4gdGhlIGVxdWl2YWxl bnQgIjMuMTQxNTkyOTMuLiIuCgpXaXRoIGEgYnJ1dGUtZm9yY2Ugc2VhcmNoLCB0aG9zZSBhcmUg b3RoZXIgImdvb2QiIGFwcHJveGltYXRpb25zOgoKMyAvIDEgIGU6IDAuMTQyICAgYml0czogICAx LjYgKyAgMC4wIC0gMi44ICA9IC0xLjIKMjIgLyA3ICBlOiAwLjAwMTI2ICAgYml0czogICA0LjUg KyAgMi44IC0gOS42ICA9IC0yLjQKMzU1IC8gMTEzICBlOiAyLjY3ZS0wNyAgIGJpdHM6ICAgOC41 ICsgIDYuOCAtIDIxLjggPSAtNi41CjU0MTkzNTEgLyAxNzI1MDMzICBlOiAyLjIxZS0xNCAgIGJp dHM6ICAyMi40ICsgMjAuNyAtIDQ1LjQgPSAtMi4zCjIxMDUzMzQzMTQxIC8gNjcwMTQ4NzI1OSAg ZTogMi42MmUtMjIgICBiaXRzOiAgMzQuMyArIDMyLjYgLSA3MS43ID0gLTQuOAoyNjQ2NjkzMTI1 MTM5MzA0MzQ1IC8gODQyNDY4NTg3NDI2NTEzMjA3ICBlOiAxLjQxZS0zOCAgIGJpdHM6ICA2MS4y ICsKNTkuNSAtMTI1LjcgPSAtNS4wCjQ0MjcwMDcwNDQ2MTUxMTUwNTAwMzQ4NTQ2NDg1MjU2ODU4 NzE1ODcgLwoxNDA5MTYwMTA4NTA2Mjc2NzgzMDg1NzE4NDQwMjUyMzc1MDk5NjUzIGU6IDMuMTFl LTgxICAgYml0czogMTMxLjcKKzEzMC4xIC0yNjcuNCA9IC01LjcKCiJlIiBpcyB0aGUgYWJzb2x1 dGUgZXJyb3IgKGFwcm94LXBpKSwgdGhlIGJpdHMgaXMgYXMgZXhwbGFpbmVkIGFib3ZlLgpBcyB5 b3Ugc2VlLCBldmVuCndpdGggNDAgZGlnaXQgbnVtYmVycyB5b3UgY2FuJ3QgZ2FpbiBhcyBtdWNo IGJpdHMgYXMgd2l0aCAzNTUvMTEzLgoKSWYgeW91ciBtZXRyaWMgaXMgc2ltcGx5ICJiZXN0IGFi c29sdXRlIGVycm9yIiwgdGhlbiB0aGVyZSBhcmUgbWFueQphcHByb3hpbWF0aW9ucy4gSGVyZSBp cwphIHRhYmxlOiBodHRwOi8vcWluLmxheWEuY29tL3RlY2hfcHJvamVjdHNfYXBwcm94cGkuaHRt bAoKVGhlIGZvbGxvd2luZyBweXRob24gcHJvZ3JhbSBjYW4gZ2VuZXJhdGUgYSB0YWJsZSBzaW1p bGFyIHRvIHRoZSBhYm92ZQpmb3IgYW55IG51bWJlcgpzcGVjaWZpZWQgb24gY29tbWFuZCBsaW5l OgoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyEvdXNyL2Jp bi9lbnYgcHl0aG9uCmltcG9ydCBkZWNpbWFsLCBzeXMsIG1hdGgKZGVjaW1hbC5nZXRjb250ZXh0 KCkucHJlYyA9IDI1MCAjIFVzZSBhIGJpZ2dlciBudW1iZXIgaWYgeW91IG5lZWQgbW9yZSBwcmVj aXNpb24KbG9nMiA9IG1hdGgubG9nKDIpCmJlc3QgPSAxMDAKCmRlZiB0ZXN0TnVtKG51bWVyLCBk ZW5vbSwgbnVtKToKICAgIGdsb2JhbCBiZXN0CgogICAgeCA9IGRlY2ltYWwuRGVjaW1hbChudW1l cikgLyBkZWNpbWFsLkRlY2ltYWwoZGVub20pCiAgICBlID0gZmxvYXQoeCAtIG51bSkKCiAgICBw b3MgPSBUcnVlCiAgICBpZiBlIDwgMCA6CiAgICAgICAgZSA9IC0gZQogICAgICAgIHBvcyA9IEZh bHNlCgogICAgIyBVbmNvbW1lbnQgb25lIG9mIHRob3NlIHRhcmdldCBzZWFyY2g6CiMgICAgYiA9 IGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBCZXN0IGFic29sdXRl IGVycm9yCiAgICBiID0gbnVtZXIgKiBkZW5vbSAqIGUgICAgICAgICAgICAgICAgICAgICAgICAj IEJlc3QgdXNlIG9mIGJpdHMKIyAgICBiID0gZSAqIG1hdGguc3FydChudW1lcipudW1lcitkZW5v bSpkZW5vbSkgICAjIEJlc3QgZXJyb3IKcHJvcG9ydGlvbmFsIHRvIG51bWVyL2Rlbm9tCiAgICBp ZiBiIDwgYmVzdCA6CiAgICAgICAgZGlhZyA9IGUgKiBtYXRoLnNxcnQobnVtZXIqbnVtZXIrZGVu b20qZGVub20pCiAgICAgICAgYml0MSA9IG1hdGgubG9nKG51bWVyKSAvIGxvZzIKICAgICAgICBi aXQyID0gbWF0aC5sb2coZGVub20pIC8gbG9nMgogICAgICAgIGlmIGUgPT0gMDoKICAgICAgICAg ICAgYml0ZSA9IDAKICAgICAgICBlbHNlOgogICAgICAgICAgICBiaXRlID0gbWF0aC5sb2coZSkg LyBsb2cyCiAgICAgICAgYmVzdCA9IGIKICAgICAgICBwcmludCAiezA6MzFkfS97MTozMWR9ID0g ezI6LjYwZn0gZT17Mzo4LjNnfSAoZGlhZzogezg6Ni4xZ30pCihiaXRzOiB7NDouMWZ9K3s1Oi4x Zn0tezY6LjFmfSA9IHs3Oi4xZn0pIi5mb3JtYXQoCiAgICAgICAgICAgIG51bWVyICwgZGVub20g LCB4ICwgZSwgYml0MSwgYml0MiwgLWJpdGUsIGJpdDErYml0MitiaXRlLCBkaWFnKQoKICAgIHJl dHVybiBwb3MKCiMgU3RhcnRpbmcgc2VhcmNoIHZhbHVlcywgdXNlcyBTdGVybuKAk0Jyb2NvdCBz ZWFyY2ggdHJlZQpuMCA9IDAKZDAgPSAxCm4xID0gMQpkMSA9IDAKIyBUYXJnZXQgdmFsdWUgc3Bl Y2lmaWVkIGluIGNvbW1hbmQgbGluZSAodXNlIGFzIG1hbnkgZGlnaXRzIGFzIHlvdSBuZWVkKQp0 YXJnZXQgPSBkZWNpbWFsLkRlY2ltYWwoc3lzLmFyZ3ZbMV0pCgp3aGlsZSBkMCA8IDFlKzQwOgog ICAgbnVtID0gbjArbjEKICAgIGRlbiA9IGQwK2QxCiAgICBpZiB0ZXN0TnVtKG51bSwgZGVuLCB0 YXJnZXQpOgogICAgICAgIG4xID0gbnVtCiAgICAgICAgZDEgPSBkZW4KICAgIGVsc2U6CiAgICAg ICAgbjAgPSBudW0KICAgICAgICBkMCA9IGRlbgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQoKLS0gCmh0dHA6Ly93d3cucGljbGlzdC5jb20vdGVjaHJlZi9waWNs aXN0IFBJQy9TWCBGQVEgJiBsaXN0IGFyY2hpdmUKVmlldy9jaGFuZ2UgeW91ciBtZW1iZXJzaGlw IG9wdGlvbnMgYXQKaHR0cDovL21haWxtYW4ubWl0LmVkdS9tYWlsbWFuL2xpc3RpbmZvL3BpY2xp c3QK .