javascript:(()=>{(0,eval)(new TextDecoder().decode(Uint8Array.from(atob("LyohCiAqIGh0bWwyY2FudmFzIDEuNC4xIDxodHRwczovL2h0bWwyY2FudmFzLmhlcnR6ZW4uY29tPgogKiBDb3B5cmlnaHQgKGMpIDIwMjIgTmlrbGFzIHZvbiBIZXJ0emVuIDxodHRwczovL2hlcnR6ZW4uY29tPgogKiBSZWxlYXNlZCB1bmRlciBNSVQgTGljZW5zZQogKi8KIWZ1bmN0aW9uKEEsZSl7Im9iamVjdCI9PXR5cGVvZiBleHBvcnRzJiYidW5kZWZpbmVkIiE9dHlwZW9mIG1vZHVsZT9tb2R1bGUuZXhwb3J0cz1lKCk6ImZ1bmN0aW9uIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmUoZSk6KEE9InVuZGVmaW5lZCIhPXR5cGVvZiBnbG9iYWxUaGlzP2dsb2JhbFRoaXM6QXx8c2VsZikuaHRtbDJjYW52YXM9ZSgpfSh0aGlzLGZ1bmN0aW9uKCl7InVzZSBzdHJpY3QiOwovKiEgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAgIENvcHlyaWdodCAoYykgTWljcm9zb2Z0IENvcnBvcmF0aW9uLgoKICAgIFBlcm1pc3Npb24gdG8gdXNlLCBjb3B5LCBtb2RpZnksIGFuZC9vciBkaXN0cmlidXRlIHRoaXMgc29mdHdhcmUgZm9yIGFueQogICAgcHVycG9zZSB3aXRoIG9yIHdpdGhvdXQgZmVlIGlzIGhlcmVieSBncmFudGVkLgoKICAgIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiIEFORCBUSEUgQVVUSE9SIERJU0NMQUlNUyBBTEwgV0FSUkFOVElFUyBXSVRICiAgICBSRUdBUkQgVE8gVEhJUyBTT0ZUV0FSRSBJTkNMVURJTkcgQUxMIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkKICAgIEFORCBGSVRORVNTLiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIEJFIExJQUJMRSBGT1IgQU5ZIFNQRUNJQUwsIERJUkVDVCwKICAgIElORElSRUNULCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgT1IgQU5ZIERBTUFHRVMgV0hBVFNPRVZFUiBSRVNVTFRJTkcgRlJPTQogICAgTE9TUyBPRiBVU0UsIERBVEEgT1IgUFJPRklUUywgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIE5FR0xJR0VOQ0UgT1IKICAgIE9USEVSIFRPUlRJT1VTIEFDVElPTiwgQVJJU0lORyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBVU0UgT1IKICAgIFBFUkZPUk1BTkNFIE9GIFRISVMgU09GVFdBUkUuCiAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqL3ZhciByPWZ1bmN0aW9uKEEsZSl7cmV0dXJuKHI9T2JqZWN0LnNldFByb3RvdHlwZU9mfHx7X19wcm90b19fOltdfWluc3RhbmNlb2YgQXJyYXkmJmZ1bmN0aW9uKEEsZSl7QS5fX3Byb3RvX189ZX18fGZ1bmN0aW9uKEEsZSl7Zm9yKHZhciB0IGluIGUpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUsdCkmJihBW3RdPWVbdF0pfSkoQSxlKX07ZnVuY3Rpb24gQShBLGUpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBlJiZudWxsIT09ZSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDbGFzcyBleHRlbmRzIHZhbHVlICIrU3RyaW5nKGUpKyIgaXMgbm90IGEgY29uc3RydWN0b3Igb3IgbnVsbCIpO2Z1bmN0aW9uIHQoKXt0aGlzLmNvbnN0cnVjdG9yPUF9cihBLGUpLEEucHJvdG90eXBlPW51bGw9PT1lP09iamVjdC5jcmVhdGUoZSk6KHQucHJvdG90eXBlPWUucHJvdG90eXBlLG5ldyB0KX12YXIgaD1mdW5jdGlvbigpe3JldHVybihoPU9iamVjdC5hc3NpZ258fGZ1bmN0aW9uKEEpe2Zvcih2YXIgZSx0PTEscj1hcmd1bWVudHMubGVuZ3RoO3Q8cjt0KyspZm9yKHZhciBCIGluIGU9YXJndW1lbnRzW3RdKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLEIpJiYoQVtCXT1lW0JdKTtyZXR1cm4gQX0pLmFwcGx5KHRoaXMsYXJndW1lbnRzKX07ZnVuY3Rpb24gYShBLHMsbyxpKXtyZXR1cm4gbmV3KG89b3x8UHJvbWlzZSkoZnVuY3Rpb24odCxlKXtmdW5jdGlvbiByKEEpe3RyeXtuKGkubmV4dChBKSl9Y2F0Y2goQSl7ZShBKX19ZnVuY3Rpb24gQihBKXt0cnl7bihpLnRocm93KEEpKX1jYXRjaChBKXtlKEEpfX1mdW5jdGlvbiBuKEEpe3ZhciBlO0EuZG9uZT90KEEudmFsdWUpOigoZT1BLnZhbHVlKWluc3RhbmNlb2Ygbz9lOm5ldyBvKGZ1bmN0aW9uKEEpe0EoZSl9KSkudGhlbihyLEIpfW4oKGk9aS5hcHBseShBLHN8fFtdKSkubmV4dCgpKX0pfWZ1bmN0aW9uIEgodCxyKXt2YXIgQixuLHMsbz17bGFiZWw6MCxzZW50OmZ1bmN0aW9uKCl7aWYoMSZzWzBdKXRocm93IHNbMV07cmV0dXJuIHNbMV19LHRyeXM6W10sb3BzOltdfSxBPXtuZXh0OmUoMCksdGhyb3c6ZSgxKSxyZXR1cm46ZSgyKX07cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmKEFbU3ltYm9sLml0ZXJhdG9yXT1mdW5jdGlvbigpe3JldHVybiB0aGlzfSksQTtmdW5jdGlvbiBlKGUpe3JldHVybiBmdW5jdGlvbihBKXtyZXR1cm4gZnVuY3Rpb24oZSl7aWYoQil0aHJvdyBuZXcgVHlwZUVycm9yKCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuIik7Zm9yKDtvOyl0cnl7aWYoQj0xLG4mJihzPTImZVswXT9uLnJldHVybjplWzBdP24udGhyb3d8fCgocz1uLnJldHVybikmJnMuY2FsbChuKSwwKTpuLm5leHQpJiYhKHM9cy5jYWxsKG4sZVsxXSkpLmRvbmUpcmV0dXJuIHM7c3dpdGNoKG49MCwoZT1zP1syJmVbMF0scy52YWx1ZV06ZSlbMF0pe2Nhc2UgMDpjYXNlIDE6cz1lO2JyZWFrO2Nhc2UgNDpyZXR1cm4gby5sYWJlbCsrLHt2YWx1ZTplWzFdLGRvbmU6ITF9O2Nhc2UgNTpvLmxhYmVsKyssbj1lWzFdLGU9WzBdO2NvbnRpbnVlO2Nhc2UgNzplPW8ub3BzLnBvcCgpLG8udHJ5cy5wb3AoKTtjb250aW51ZTtkZWZhdWx0OmlmKCEocz0wPChzPW8udHJ5cykubGVuZ3RoJiZzW3MubGVuZ3RoLTFdKSYmKDY9PT1lWzBdfHwyPT09ZVswXSkpe289MDtjb250aW51ZX1pZigzPT09ZVswXSYmKCFzfHxlWzFdPnNbMF0mJmVbMV08c1szXSkpe28ubGFiZWw9ZVsxXTticmVha31pZig2PT09ZVswXSYmby5sYWJlbDxzWzFdKXtvLmxhYmVsPXNbMV0scz1lO2JyZWFrfWlmKHMmJm8ubGFiZWw8c1syXSl7by5sYWJlbD1zWzJdLG8ub3BzLnB1c2goZSk7YnJlYWt9c1syXSYmby5vcHMucG9wKCksby50cnlzLnBvcCgpO2NvbnRpbnVlfWU9ci5jYWxsKHQsbyl9Y2F0Y2goQSl7ZT1bNixBXSxuPTB9ZmluYWxseXtCPXM9MH1pZig1JmVbMF0pdGhyb3cgZVsxXTtyZXR1cm57dmFsdWU6ZVswXT9lWzFdOnZvaWQgMCxkb25lOiEwfX0oW2UsQV0pfX19ZnVuY3Rpb24gdChBLGUsdCl7aWYodHx8Mj09PWFyZ3VtZW50cy5sZW5ndGgpZm9yKHZhciByLEI9MCxuPWUubGVuZ3RoO0I8bjtCKyspIXImJkIgaW4gZXx8KChyPXJ8fEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGUsMCxCKSlbQl09ZVtCXSk7cmV0dXJuIEEuY29uY2F0KHJ8fGUpfXZhciBkPShCLnByb3RvdHlwZS5hZGQ9ZnVuY3Rpb24oQSxlLHQscil7cmV0dXJuIG5ldyBCKHRoaXMubGVmdCtBLHRoaXMudG9wK2UsdGhpcy53aWR0aCt0LHRoaXMuaGVpZ2h0K3IpfSxCLmZyb21DbGllbnRSZWN0PWZ1bmN0aW9uKEEsZSl7cmV0dXJuIG5ldyBCKGUubGVmdCtBLndpbmRvd0JvdW5kcy5sZWZ0LGUudG9wK0Eud2luZG93Qm91bmRzLnRvcCxlLndpZHRoLGUuaGVpZ2h0KX0sQi5mcm9tRE9NUmVjdExpc3Q9ZnVuY3Rpb24oQSxlKXtlPUFycmF5LmZyb20oZSkuZmluZChmdW5jdGlvbihBKXtyZXR1cm4gMCE9PUEud2lkdGh9KTtyZXR1cm4gZT9uZXcgQihlLmxlZnQrQS53aW5kb3dCb3VuZHMubGVmdCxlLnRvcCtBLndpbmRvd0JvdW5kcy50b3AsZS53aWR0aCxlLmhlaWdodCk6Qi5FTVBUWX0sQi5FTVBUWT1uZXcgQigwLDAsMCwwKSxCKTtmdW5jdGlvbiBCKEEsZSx0LHIpe3RoaXMubGVmdD1BLHRoaXMudG9wPWUsdGhpcy53aWR0aD10LHRoaXMuaGVpZ2h0PXJ9Zm9yKHZhciBmPWZ1bmN0aW9uKEEsZSl7cmV0dXJuIGQuZnJvbUNsaWVudFJlY3QoQSxlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpKX0sUT1mdW5jdGlvbihBKXtmb3IodmFyIGU9W10sdD0wLHI9QS5sZW5ndGg7dDxyOyl7dmFyIEIsbj1BLmNoYXJDb2RlQXQodCsrKTs1NTI5Njw9biYmbjw9NTYzMTkmJnQ8cj81NjMyMD09KDY0NTEyJihCPUEuY2hhckNvZGVBdCh0KyspKSk/ZS5wdXNoKCgoMTAyMyZuKTw8MTApKygxMDIzJkIpKzY1NTM2KTooZS5wdXNoKG4pLHQtLSk6ZS5wdXNoKG4pfXJldHVybiBlfSxnPWZ1bmN0aW9uKCl7Zm9yKHZhciBBPVtdLGU9MDtlPGFyZ3VtZW50cy5sZW5ndGg7ZSsrKUFbZV09YXJndW1lbnRzW2VdO2lmKFN0cmluZy5mcm9tQ29kZVBvaW50KXJldHVybiBTdHJpbmcuZnJvbUNvZGVQb2ludC5hcHBseShTdHJpbmcsQSk7dmFyIHQ9QS5sZW5ndGg7aWYoIXQpcmV0dXJuIiI7Zm9yKHZhciByPVtdLEI9LTEsbj0iIjsrK0I8dDspe3ZhciBzPUFbQl07czw9NjU1MzU/ci5wdXNoKHMpOihzLT02NTUzNixyLnB1c2goNTUyOTYrKHM+PjEwKSxzJTEwMjQrNTYzMjApKSwoQisxPT09dHx8MTYzODQ8ci5sZW5ndGgpJiYobis9U3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShTdHJpbmcsciksci5sZW5ndGg9MCl9cmV0dXJuIG59LGU9IkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5Ky8iLG49InVuZGVmaW5lZCI9PXR5cGVvZiBVaW50OEFycmF5P1tdOm5ldyBVaW50OEFycmF5KDI1Nikscz0wO3M8ZS5sZW5ndGg7cysrKW5bZS5jaGFyQ29kZUF0KHMpXT1zO2Zvcih2YXIgbz0iQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLyIsYz0idW5kZWZpbmVkIj09dHlwZW9mIFVpbnQ4QXJyYXk/W106bmV3IFVpbnQ4QXJyYXkoMjU2KSxpPTA7aTxvLmxlbmd0aDtpKyspY1tvLmNoYXJDb2RlQXQoaSldPWk7ZnVuY3Rpb24gdyhBLGUsdCl7cmV0dXJuIEEuc2xpY2U/QS5zbGljZShlLHQpOm5ldyBVaW50MTZBcnJheShBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChBLGUsdCkpfXZhciBVPShsLnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24oQSl7dmFyIGU7aWYoMDw9QSl7aWYoQTw1NTI5Nnx8NTYzMTk8QSYmQTw9NjU1MzUpcmV0dXJuIGU9dGhpcy5pbmRleFtBPj41XSx0aGlzLmRhdGFbZT0oZTw8MikrKDMxJkEpXTtpZihBPD02NTUzNSlyZXR1cm4gZT10aGlzLmluZGV4WzIwNDgrKEEtNTUyOTY+PjUpXSx0aGlzLmRhdGFbZT0oZTw8MikrKDMxJkEpXTtpZihBPHRoaXMuaGlnaFN0YXJ0KXJldHVybiBlPXRoaXMuaW5kZXhbZT0yMDgwKyhBPj4xMSldLGU9dGhpcy5pbmRleFtlKz1BPj41JjYzXSx0aGlzLmRhdGFbZT0oZTw8MikrKDMxJkEpXTtpZihBPD0xMTE0MTExKXJldHVybiB0aGlzLmRhdGFbdGhpcy5oaWdoVmFsdWVJbmRleF19cmV0dXJuIHRoaXMuZXJyb3JWYWx1ZX0sbCk7ZnVuY3Rpb24gbChBLGUsdCxyLEIsbil7dGhpcy5pbml0aWFsVmFsdWU9QSx0aGlzLmVycm9yVmFsdWU9ZSx0aGlzLmhpZ2hTdGFydD10LHRoaXMuaGlnaFZhbHVlSW5kZXg9cix0aGlzLmluZGV4PUIsdGhpcy5kYXRhPW59Zm9yKHZhciBDPSJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSsvIix1PSJ1bmRlZmluZWQiPT10eXBlb2YgVWludDhBcnJheT9bXTpuZXcgVWludDhBcnJheSgyNTYpLEY9MDtGPEMubGVuZ3RoO0YrKyl1W0MuY2hhckNvZGVBdChGKV09RjtmdW5jdGlvbiBwKEEsZSx0LHIpe3ZhciBCPXJbdF07aWYoQXJyYXkuaXNBcnJheShBKT8tMSE9PUEuaW5kZXhPZihCKTpBPT09Qilmb3IodmFyIG49dDtuPD1yLmxlbmd0aDspe2lmKChvPXJbKytuXSk9PT1lKXJldHVybiAxO2lmKG8hPT1EKWJyZWFrfWlmKEI9PT1EKWZvcihuPXQ7MDxuOyl7dmFyIHM9clstLW5dO2lmKEFycmF5LmlzQXJyYXkoQSk/LTEhPT1BLmluZGV4T2Yocyk6QT09PXMpZm9yKHZhciBvLGk9dDtpPD1yLmxlbmd0aDspe2lmKChvPXJbKytpXSk9PT1lKXJldHVybiAxO2lmKG8hPT1EKWJyZWFrfWlmKHMhPT1EKWJyZWFrfX1mdW5jdGlvbiBFKEEsZSl7Zm9yKHZhciB0PUE7MDw9dDspe3ZhciByPWVbdF07aWYociE9PUQpcmV0dXJuIHI7dC0tfXJldHVybiAwfWZ1bmN0aW9uIEkodCxBKXt2YXIgZT0oQj1mdW5jdGlvbihBLHIpe3ZvaWQgMD09PXImJihyPSJzdHJpY3QiKTt2YXIgQj1bXSxuPVtdLHM9W107cmV0dXJuIEEuZm9yRWFjaChmdW5jdGlvbihBLGUpe3ZhciB0PXJBLmdldChBKTtpZig1MDx0PyhzLnB1c2goITApLHQtPTUwKTpzLnB1c2goITEpLC0xIT09WyJub3JtYWwiLCJhdXRvIiwibG9vc2UiXS5pbmRleE9mKHIpJiYtMSE9PVs4MjA4LDgyMTEsMTIzMTYsMTI0NDhdLmluZGV4T2YoQSkpcmV0dXJuIG4ucHVzaChlKSxCLnB1c2goMTYpO2lmKDQhPT10JiYxMSE9PXQpcmV0dXJuIG4ucHVzaChlKSwzMT09PXQ/Qi5wdXNoKCJzdHJpY3QiPT09cj9POnEpOnQ9PT1BQXx8Mjk9PT10P0IucHVzaChKKTo0Mz09PXQ/MTMxMDcyPD1BJiZBPD0xOTY2MDV8fDE5NjYwODw9QSYmQTw9MjYyMTQxP0IucHVzaChxKTpCLnB1c2goSik6dm9pZCBCLnB1c2godCk7aWYoMD09PWUpcmV0dXJuIG4ucHVzaChlKSxCLnB1c2goSik7dD1CW2UtMV07cmV0dXJuLTE9PT1pQS5pbmRleE9mKHQpPyhuLnB1c2gobltlLTFdKSxCLnB1c2godCkpOihuLnB1c2goZSksQi5wdXNoKEopKX0pLFtuLEIsc119KHQsKEE9QXx8e2xpbmVCcmVhazoibm9ybWFsIix3b3JkQnJlYWs6Im5vcm1hbCJ9KS5saW5lQnJlYWspKVswXSxyPUJbMV0sQj1CWzJdO3JldHVybltlLHI9ImJyZWFrLWFsbCI9PT1BLndvcmRCcmVha3x8ImJyZWFrLXdvcmQiPT09QS53b3JkQnJlYWs/ci5tYXAoZnVuY3Rpb24oQSl7cmV0dXJuLTEhPT1bUixKLEFBXS5pbmRleE9mKEEpP3E6QX0pOnIsImtlZXAtYWxsIj09PUEud29yZEJyZWFrP0IubWFwKGZ1bmN0aW9uKEEsZSl7cmV0dXJuIEEmJjE5OTY4PD10W2VdJiZ0W2VdPD00MDk1OX0pOnZvaWQgMF19dmFyIHksSyxtLEwsYixEPTEwLHY9MTMseD0xNSxNPTE3LFM9MTgsVD0xOSxHPTIwLE89MjEsVj0yMixrPTI0LFI9MjUsTj0yNixQPTI3LFg9MjgsSj0zMCxZPTMyLFc9MzMsWj0zNCxfPTM1LHE9Mzcsaj0zOCx6PTM5LCQ9NDAsQUE9NDIsZUE9WzkwMDEsNjUyODhdLHRBPSLDlyIsckE9KG09ZnVuY3Rpb24oQSl7dmFyIGUsdCxyLEIsbj0uNzUqQS5sZW5ndGgscz1BLmxlbmd0aCxvPTA7Ij0iPT09QVtBLmxlbmd0aC0xXSYmKG4tLSwiPSI9PT1BW0EubGVuZ3RoLTJdJiZuLS0pO2Zvcih2YXIgbj1uZXcoInVuZGVmaW5lZCIhPXR5cGVvZiBBcnJheUJ1ZmZlciYmInVuZGVmaW5lZCIhPXR5cGVvZiBVaW50OEFycmF5JiZ2b2lkIDAhPT1VaW50OEFycmF5LnByb3RvdHlwZS5zbGljZT9BcnJheUJ1ZmZlcjpBcnJheSkobiksaT1BcnJheS5pc0FycmF5KG4pP246bmV3IFVpbnQ4QXJyYXkobiksUT0wO1E8cztRKz00KWU9Y1tBLmNoYXJDb2RlQXQoUSldLHQ9Y1tBLmNoYXJDb2RlQXQoUSsxKV0scj1jW0EuY2hhckNvZGVBdChRKzIpXSxCPWNbQS5jaGFyQ29kZUF0KFErMyldLGlbbysrXT1lPDwyfHQ+PjQsaVtvKytdPSgxNSZ0KTw8NHxyPj4yLGlbbysrXT0oMyZyKTw8Nnw2MyZCO3JldHVybiBufSh5PSJLd0FBQUFBQUFBQUFDQTRBVUQwQUFEQWdBQUFDQUFBQUFBQUlBQkFBR0FCQUFFZ0FVQUJZQUdBQWFBQmdBR2dBWWdCcUFGOEFad0JnQUdnQWNRQjVBSFVBZlFDRkFJMEFsUUNkQUtJQXFnQ3lBTG9BWUFCb0FHQUFhQUJnQUdnQXdnREtBR0FBYUFER0FNNEEwd0RiQU9FQTZRRHhBUGtBQVFFSkFROEJGd0YxQUgwQUhBRWtBU3dCTkFFNkFVSUJRUUZKQVZFQldRRmhBV2dCY0FGNEFUQUFnQUdHQVk0QmxRR1hBWjhCcHdHdkFiVUJ2UUhGQWMwQjB3SGJBZU1CNndIeEFma0JBUUlKQXZFQkVRSVpBaUVDS1FJeEFqZ0NRQUpHQWs0Q1ZnSmVBbVFDYkFKMEFud0NnUUtKQXBFQ21RS2dBcWdDc0FLNEFyd0N4QUl3QU13QzB3TGJBakFBNHdMckF2TUMrQUlBQXdjRER3TXdBQmNESFFNbEF5MEROUU4xQUQwRFFRTkpBMGtEU1FOUkExRURWd05aQTFrRGRRQjFBR0VEZFFCcEEyMERkUU4xQUhzRGRRQ0JBNGtEa1FOMUFIVUFtUU9oQTNVQWRRQjFBSFVBZFFCMUFIVUFkUUIxQUhVQWRRQjFBSFVBZFFCMUFIVUFkUUIxQUtZRHJnTjFBSFVBdGdPK0E4WUR6Z1BXQXhjRDNnUGpBK3NEOHdOMUFIVUErd01EQkFrRWRRQU5CQlVFSFFRbEJDb0VGd015QkRnRVlBQkFCQmNEU0FSUUJGZ0VZQVJvQkRBQWNBUXpBWGdFZ0FTSUJKQUVkUUNYQkhVQW53U25CSzRFdGdTNkJNSUV5QVIxQUhVQWRRQjFBSFVBZFFDVkFOQUVZQUJnQUdBQVlBQmdBR0FBWUFCZ0FOZ0VZQURjQk9RRVlBRHNCUFFFL0FRRUJRd0ZGQVVjQlNRRkxBVTBCV1FFUEFWRUJVc0ZVd1ZiQldBQVlnVmdBR29GY2dWNkJZSUZpZ1dSQldBQW1RV2ZCYVlGWUFCZ0FHQUFZQUJnQUtvRllBQ3hCYkFGdVFXNkJjRUZ3UVhIQmNFRndRWFBCZE1GMndYakJlb0Y4Z1g2QlFJR0NnWVNCaG9HSWdZcUJqSUdPZ1pnQUQ0R1JnWk1CbUFBVXdaYUJtQUFZQUJnQUdBQVlBQmdBR0FBWUFCZ0FHQUFZQUJnQUdJR1lBQnBCbkFHWUFCZ0FHQUFZQUJnQUdBQVlBQmdBR0FBWUFCNEJuOEdoUVpnQUdBQVlBQjFBSGNERlFTTEJtQUFZQUJnQUpNR2RRQTlBM1VBbXdhakJxc0dxd2FWQUxNR3V3YkRCakFBeXdiU0J0SUcxUWJTQnRJRzBnYlNCdElHMGdiZEJ1TUc2d2J6QnZzR0F3Y0xCeE1IQXdjYkJ5TUhKd2NzQnl3SE1RY3NCOUlHT0FkQUIwZ0hUZ2ZTQmtnSFZnZlNCdElHMGdiU0J0SUcwZ2JTQnRJRzBnYlNCaXdITEFjc0J5d0hMQWNzQnl3SExBY3NCeXdITEFjc0J5d0hMQWNzQnl3SExBY3NCeXdITEFjc0J5d0hMQWNzQnl3SExBY3NCeXdITEFjc0J5d0hMQWNzQnl3SExBY3NCeXdITEFjc0J5d0hMQWNzQnl3SExBY3NCeXdITEFjc0J5d0hMQWNzQnl3SExBY3NCeXdITEFjc0J5d0hMQWNzQnl3SExBY3NCeXdITEFjc0J5d0hMQWNzQnl3SExBY3NCeXdITEFjc0J5d0hMQWNzQnl3SExBY3NCeXdITEFjc0J5d0hMQWNzQnl3SExBY3NCeXdITEFjc0J5d0hMQWNzQnl3SExBY3NCeXdITEFjc0J5d0hMQWNzQnl3SExBY3NCeXdITEFjc0J5d0hMQWNzQnl3SExBY3NCeXdITEFjc0J5d0hMQWNzQnl3SExBY3NCeXdITEFjc0J5d0hMQWNzQnl3SExBY3NCeXdITEFjc0J5d0hMQWNzQnl3SExBY3NCeXdITEFjc0J5d0hMQWNzQnl3SExBY3NCeXdITEFjc0J5d0hMQWNzQnl3SExBY3NCeXdITEFjc0J5d0hMQWNzQnl3SExBY3NCeXdITEFjc0J5d0hMQWNzQnl3SExBY3NCeXdITEFjc0J5d0hMQWNzQnl3SExBY3NCeXdITEFjc0J5d0hMQWNzQnl3SExBY3NCeXdITEFjc0J5d0hMQWNzQnl3SExBZGdBR0FBTEFjc0J5d0hMQWNzQnl3SExBY3NCeXdITEFjc0J5d0hMQWNzQnl3SExBY3NCeXdITEFjc0J5d0hMQWNzQnl3SExBY3NCeXdITEFjc0J5d0hMQWNzQnl3SExBY3NCeXdITEFjc0J5d0hMQWNzQnl3SExBY3NCeXdITEFjc0J5d0hMQWNzQnl3SExBY3NCeXdITEFjc0J5d0hMQWNzQnl3SExBY3NCeXdITEFjc0J5d0hMQWNzQnl3SExBY3NCeXdITEFjc0J5d0hMQWNzQnl3SExBY3NCeXdITEFjc0J5d0hMQWNzQnl3SExBY3NCeXdITEFjc0J5d0hMQWNzQnl3SExBY3NCeXdITEFjc0J5d0hMQWNzQnl3SExBY3NCeXdITEFjc0J5d0hMQWNzQnl3SExBY3NCeXdITEFjc0J5d0hMQWNzQnl3SExBY3NCeXdITEFjc0J5d0hMQWNzQnl3SExBY3NCeXdITEFjc0J5d0hMQWNzQnl3SExBY3NCeXdITEFjc0J5d0hMQWNzQnl3SExBY3NCeXdITEFjc0J5d0hMQWNzQnl3SExBY3NCeXdITEFjc0J5d0hMQWNzQnl3SExBY3NCeXdITEFjc0J5d0hMQWNzQnl3SExBY3NCeXdITEFjc0J5d0hMQWNzQnl3SExBY3NCeXdITEFjc0J5d0hMQWNzQnl3SExBY3NCeXdITEFjc0J5d0hMQWNzQnl3SExBY3NCeXdITEFjc0J5d0hMQWNzQnl3SExBY3NCeXdITEFjc0J5d0hMQWNzQnl3SExBY3NCeXdITEFjc0J5d0hMQWNzQnl3SExBY3NCeXdITEFjc0J5d0hMQWNzQnl3SExBY3NCeXdITEFjc0J5d0hMQWNzQnl3SExBY3NCeXdITEFjc0J5d0hMQWNzQnl3SExBY3NCeXdITEFjc0J5d0hMQWNzQnl3SExBY3NCeXdITEFjc0J5d0hMQWNzQnl3SExBY3NCeXdITEFjc0J5d0hMQWNzQnl3SExBY3NCeXdITEFjc0J5d0hMQWNzQnl3SExBY3NCeXdITEFjc0J5d0hMQWNzQnl3SExBY3NCeXdITEFjc0J5d0hMQWNzQnl3SExBY3NCeXdITEFjc0J5d0hMQWNzQnl3SExBY3NCeXdITEFjc0J5d0hMQWNzQnl3SExBY3NCeXdITEFjc0J5d0hMQWNzQnl3SExBY3NCeXdITEFjc0J5d0hMQWNzQnl3SExBY3NCeXdITEFjc0J5d0hMQWNzQnl3SExBY3NCeXdITEFjc0J5d0hMQWNzQnl3SExBY3NCeXdITEFjc0J5d0hMQWNzQnl3SExBY3NCeXdITEFjc0J5d0hMQWNzQnl3SExBY3NCeXdITEFjc0J5d0hMQWNzQnl3SExBY3NCeXdITEFjc0J5d0hMQWNzQnl3SExBY3NCeXdITEFjc0J5d0hMQWNzQnl3SExBY3NCeXdITEFjc0J5d0hMQWNzQnl3SExBY3NCeXdITEFjc0J5d0hMQWNzQnl3SExBY3NCeXdITEFjc0J5d0hMQWNzQnl3SExBY3NCeXdITEFjc0J5d0hMQWNzQnl3SExBY3NCeXdITEFjc0J5d0hMQWNzQnl3SExBY3NCeXdITEFjc0J5d0hMQWNzQnl3SExBY3NCeXdITEFjc0J5d0hMQWNzQnl3SExBY3NCeXdITEFjc0J5d0hMQWNzQnl3SExBY3NCeXdITEFjc0J5d0hMQWNzQnl3SExBY3NCeXdITEFjc0J5d0hMQWNzQnl3SExBY3NCeXdITEFjc0J5d0hMQWNzQnl3SExBY3NCeXdITEFjc0J5d0hMQWNzQnl3SExBY3NCeXdITEFjc0J5d0hMQWNzQnl3SExBY3NCeXdITEFjc0J5d0hMQWNzQnl3SExBY3NCeXdITEFjc0J5d0hMQWNzQnl3SExBY3NCeXdITEFjc0J5d0hMQWNzQnl3SExBY3NCeXdITEFjc0J5d0hMQWNzQnl3SExBY3NCeXdITEFjc0J5d0hMQWNzQnl3SExBY3NCeXdITEFjc0J5d0hMQWNzQnl3SExBY3NCeXdITEFjc0J5d0hMQWNzQnl3SExBY3NCeXdITEFjc0J5d0hMQWNzQnl3SExBY3NCeXdITEFjc0J5d0hMQWNzQnl3SExBY3NCeXdITEFjc0J5d0hMQWNzQnl3SExBY3NCeXdITEFjc0J5d0hMQWNzQnl3SExBY3NCeXdITEFjc0J5d0hMQWNzQnl3SExBY3NCeXdITEFjc0J5d0hMQWNzQnl3SExBY3NCeXdITEFjc0J5d0hMQWNzQnl3SExBZGJCMk1ITEFjc0J5d0hMQWNzQnl3SExBY3NCeXdITEFjc0J5d0hMQWNzQnl3SExBY3NCeXdITEFjc0J5d0hMQWNzQnl3SExBY3NCeXdITEFjc0J5d0hMQWNzQnl3SExBY3NCMmtIMGdad0I2NEVkUUIxQUhVQWRRQjFBSFVBZFFCMUFIVUhmUWRnQUlVSGpRZDFBSFVBbFFlZEIyQUFZQUNsQjZzSFlBQ3pCN1lIdmdmR0IzVUF6Z2ZXQnpNQjNnZm1CMUVCN2dmMUIvMEhsUUVOQVFVSURRaDFBQlVJSFFnbENCY0RMUWcxQ0QwSVJRaE5DRUVEVXdoMUFIVUFkUUJiQ0dNSVpBaGxDR1lJWndob0NHa0lZd2hrQ0dVSVpnaG5DR2dJYVFoakNHUUlaUWhtQ0djSWFBaHBDR01JWkFobENHWUlad2hvQ0drSVl3aGtDR1VJWmdobkNHZ0lhUWhqQ0dRSVpRaG1DR2NJYUFocENHTUlaQWhsQ0dZSVp3aG9DR2tJWXdoa0NHVUlaZ2huQ0dnSWFRaGpDR1FJWlFobUNHY0lhQWhwQ0dNSVpBaGxDR1lJWndob0NHa0lZd2hrQ0dVSVpnaG5DR2dJYVFoakNHUUlaUWhtQ0djSWFBaHBDR01JWkFobENHWUlad2hvQ0drSVl3aGtDR1VJWmdobkNHZ0lhUWhqQ0dRSVpRaG1DR2NJYUFocENHTUlaQWhsQ0dZSVp3aG9DR2tJWXdoa0NHVUlaZ2huQ0dnSWFRaGpDR1FJWlFobUNHY0lhQWhwQ0dNSVpBaGxDR1lJWndob0NHa0lZd2hrQ0dVSVpnaG5DR2dJYVFoakNHUUlaUWhtQ0djSWFBaHBDR01JWkFobENHWUlad2hvQ0drSVl3aGtDR1VJWmdobkNHZ0lhUWhqQ0dRSVpRaG1DR2NJYUFocENHTUlaQWhsQ0dZSVp3aG9DR2tJWXdoa0NHVUlaZ2huQ0dnSWFRaGpDR1FJWlFobUNHY0lhQWhwQ0dNSVpBaGxDR1lJWndob0NHa0lZd2hrQ0dVSVpnaG5DR2dJYVFoakNHUUlaUWhtQ0djSWFBaHBDR01JWkFobENHWUlad2hvQ0drSVl3aGtDR1VJWmdobkNHZ0lhUWhqQ0dRSVpRaG1DR2NJYUFocENHTUlaQWhsQ0dZSVp3aG9DR2tJWXdoa0NHVUlaZ2huQ0dnSWFRaGpDR1FJWlFobUNHY0lhQWhwQ0dNSVpBaGxDR1lJWndob0NHa0lZd2hrQ0dVSVpnaG5DR2dJYVFoakNHUUlaUWhtQ0djSWFBaHBDR01JWkFobENHWUlad2hvQ0drSVl3aGtDR1VJWmdobkNHZ0lhUWhqQ0dRSVpRaG1DR2NJYUFocENHTUlaQWhsQ0dZSVp3aG9DR2tJWXdoa0NHVUlaZ2huQ0dnSWFRaGpDR1FJWlFobUNHY0lhQWhwQ0dNSVpBaGxDR1lJWndob0NHa0lZd2hrQ0dVSVpnaG5DR2dJYVFoakNHUUlaUWhtQ0djSWFBaHBDR01JWkFobENHWUlad2hvQ0drSVl3aGtDR1VJWmdobkNHZ0ljQWgzQ0hvSU1BQXdBREFBTUFBd0FEQUFNQUF3QURBQU1BQXdBREFBTUFBd0FEQUFNQUF3QURBQU1BQXdBREFBTUFBd0FEQUFNQUF3QURBQU1BQXdBREFBTUFBd0FJSUlnZ2lDQ0lJSWdnaUNDSUlJZ2dpQ0NJSUlnZ2lDQ0lJSWdnaUNDSUlJZ2dpQ0NJSUlnZ2lDQ0lJSWdnaUNDSUlJZ2dpQ0NJSUlnZ2lDQ0lJSWdnZ3dBREFBTUFBd0FEQUFNQUF3QURBQU1BQXdBREFBTUFBd0FEQUFNQUF3QURBQU1BQXdBREFBTUFBd0FEQUFNQUF3QURBQU1BQXdBREFBTUFBd0FEQUFNQUF3QURBQU1BQXdBREFBTUFBd0FEQUFNQUF3QURBQU1BQXdBREFBTUFBd0FEQUFNQUF3QURBQU1BQXdBREFBTUFBd0FEQUFNQUF3QURBQU1BQXdBREFBTUFBd0FEQUFNQUF3QURBQU1BQXdBREFBTUFBd0FEQUFNQUF3QURBQU1BQXdBREFBTUFBd0FEQUFNQUF3QURBQU1BQXdBREFBTUFBd0FEQUFNQUF3QURBQU1BQXdBREFBTUFBd0FEQUFNQUF3QURBQU1BQXdBREFBTUFBd0FEQUFNQUF3QURBQU1BQXdBREFBTUFBd0FEQUFNQUF3QURBQU1BQXdBREFBTUFBd0FEQUFNQUF3QURBQU1BQXdBREFBTUFBd0FEQUFNQUF3QURBQU1BQXdBREFBTUFBd0FEQUFNQUF3QURBQU1BQXdBREFBTUFBd0FEQUFNQUF3QURBQU1BQXdBREFBTUFBd0FEQUFNQUF3QURBQU1BQXdBREFBTUFBd0FEQUFNQUF3QURBQU1BQXdBREFBTUFBd0FEQUFNQUF3QURBQU1BQXdBREFBTUFBd0FEQUFNQUF3QURBQU1BQXdBREFBTEFjc0J5d0hMQWNzQnl3SExBY3NCeXdITEFjc0I0b0lMQWNzQjQ0STBnYVdDSjRJcGdoMUFIVUFxZ2l5Q0hVQWRRQjFBSFVBZFFCMUFIVUFkUUIxQUhVQXR3aDhBWFVBdndoMUFNVUl5UWpSQ05rSTRBam9DSFVBZFFCMUFPNEk5Z2orQ0FZSkRna1RDUzBIR3drakNZSUlnZ2lDQ0lJSWdnaUNDSUlJZ2dpQ0NJSUlnZ2lDQ0lJSWdnaUNDSUlJZ2dpQ0NJSUlnZ2lDQ0lJSWdnaUNDSUlJZ2dpQ0NJSUlnZ2lDQ0lJSWdnaUFBSUFBQUFGQUFZQUJnQUdJQVh3QmdBSEVBZFFCRkFKVUFvZ0N5QUtBQVlBQmdBRUlBNEFCR0FOTUE0UUR4QU1FQkR3RTFBRndCTEFFNkFRRUJVUUY0UWtoQ21FS29RcmhDZ0FISVFzQUIwTUxBQWNBQndBSEFBZURDNkFCb0FIREN3TU1BQWNBQndBSEFBZERER01NQUFjQUI2TU00d3dqRFdNTm93M2pEYUFCb0FHZ0FhQUJvQUdnQWFBQm9BR2dBYUFCb0FHZ0FhQUJvQUdnQWFBQm9BR2dBYUFCb0FFakRxQUJXdzZiRHFBQnBnNmdBYUFCb0FIY0R2d09QQStnQWFBQmZBLzhEdndPL0E3OER2d08vQTc4RHZ3Ty9BNzhEdndPL0E3OER2d08vQTc4RHZ3Ty9BNzhEdndPL0E3OER2d08vQTc4RHZ3Ty9BNzhEcGNQQUFjQUJ3QUhBQWNBQndBSEFBY0FCd0FIQUFjQUJ3QUhBQWNBQndBSEFBY0FCd0FIQUFjQUJ3QUhBQWNBQndBSEFBY0FCd0FIQUFjQUJ3QUhBQWNBQndBSEFBY0FCd0FIQUFjQUJ3QUhBQWNBQndBSEFBY0FCd0FIQUFjQUJ3QUhBQWNBQndBSEFBY0FCd0FIQUFjQUJ3QUhBQWNBQndBSEFBY0FCd0FIQUFjQUJ3QUhBQWNBQndBSEFBY0FCd0FIQUFjQUJ3QUhBQWNBQndBSEFBY0FCd0FIQUFjQUJ3QUhBQWNBQndBSEFBY0FCd0FIQUFjQUJ3QUhBQWNBQndBSEFBY0FCd0FIQUFjQUJ3QUhBQWNBQndBSEFBY0FCd0FIQUFjQUJ3QUhBQWNBQndBSEFBY0FCd0FIQUFjQUJ3QUhBQWNBQndBSEFBY0FCd0FIQUFjQUJ3QUhBQWNBQndBSEFBY0FCd0FIQUFjQUJ3QUhBQWNBQndBSEFBY0FCd0FIQUFjQUJ3QUhBQWNBQndBSEFBY0FCd0FIQUFjQUJ3QUhBQWNBQndBSEFBY0FCd0FIQUFjQUJ3QUhBQWNBQndBSEFBY0FCd0FIQUFjQUJ3QUhBQWNBQndBSEFBY0FCd0FIQUFjQUJ3QUhBQWNBQndBSEFBY0FCd0FIQUFjQUJ3QUhBQWNBQndBSEFBY0FCd0FIQUFjQUJ3QUhBQWNBQndBSEFBY0FCd0FIQUFjQUJ3QUhBQWNBQndBSEFBY0FCd0FIQUFjQUJ3QUhBQWNBQndBSEFBY0FCd0FIQUFjQUJ3QUhBQWNBQndBSEFBY0FCd0FIQUFjQUJ3QUhBQWNBQndBSEFBY0FCd0FIQUFjQUJ3QUhBQWNBQndBSEFBY0FCd0FIQUFjQUJ3QUhBQWNBQndBSEFBY0FCd0FIQUFjQUJ3QUhBQWNBQndBSEFBY0FCd0FIQUFjQUJ3QUhBQWNBQndBSEFBY0FCd0FIQUFjQUJ3QUhBQWNBQndBSEFBY0FCd0FIQUFjQUJ3QUhBQWNBQndBSEFBY0FCd0FIQUFjQUJ3QUhBQWNBQndBSEFBY0FCd0FIQUFjQUJ3QUhBQWNBQndBSEFBY0FCd0FIQUFjQUJ3QUhBQWNBQjljUEt3a3lDVG9KTUFCMUFIVUFkUUJDQ1VvSlRRbDFBRlVKWEFsakNXY0phd2t3QURBQU1BQXdBSE1KZFFCMkNYNEpkUUNFQ1lvSmpnbVdDWFVBbmdrd0FHQUFZQUJ4QUhVQXBnbjNBNjRKdEFsMUFMa0pkUURBQ1RBQU1BQXdBREFBZFFCMUFIVUFkUUIxQUhVQWRRQjFBSFVBb3dZTkJNVUlNQUF3QURBQU1BRElDY3NKMHduWkNSVUU0UWt3QU9rSjhBbjRDVEFBTUFCMUFBQUt2d2gxQUFnS0R3b1hDaDhLZFFBd0FDY0tMZ3AxQURZS3FBbUlDVDRLUmdvd0FEQUFkUUIxQUU0S01BQjFBRllLZFFCZUNuVUFaUW93QURBQU1BQXdBREFBTUFBd0FEQUFNQUFWQkhVQWJRb3dBREFBZFFDNUNYVUtNQUF3QUh3QnhBaWpCb2dFTWdGOUNvUUtpQVNNQ3BRS21ncUlCS0lLcWdxdUNvZ0VEUUcyQ3I0S3hnckxDakFBTUFEVEN0c0tDZ0hqQ3VzSzhRcjVDZ0VMTUFBd0FEQUFNQUIxQUlzRUNRc1JDM1VBTkFFWkN6QUFNQUF3QURBQU1BQjFBQ0VMS1Fzd0FIVUFOQUV4Q3prTGRRQkJDMGtMTUFCUkMxa0xNQUF3QURBQU1BQXdBREFBZFFCaEN6QUFNQUF3QUdBQVlBQnBDM0VMZHd0L0N6QUFNQUNIQzRzTGt3dWJDNThMcHd0MUFLNEx0Z3QxQVBzRE1BQXdBREFBTUFBd0FEQUFNQUF3QUw0THd3dkxDOUlMMXd2ZEN6QUFNQURsQytrTDhRdjVDLzhMU1Fzd0FEQUFNQUF3QURBQU1BQXdBREFBTUFBSEREQUFNQUF3QURBQU1BQU9EQllNSGd4MUFIVUFkUUIxQUhVQWRRQjFBSFVBZFFCMUFIVUFkUUIxQUhVQWRRQjFBSFVBZFFCMUFIVUFkUUIxQUhVQWRRQjFBSFVBZFFCMUFDWU1NQUF3QURBQWRRQjFBSFVBTGd4MUFIVUFkUUIxQUhVQWRRQTJEREFBTUFBd0FEQUFNQUF3QURBQU1BQXdBREFBTUFBd0FEQUFNQUF3QURBQU1BQXdBREFBTUFBd0FIVUFkUUIxQUhVQWRRQjFBSFVBZFFCMUFIVUFkUUIxQUhVQWRRQjFBSFVBZFFCMUFENE1kUUJHREhVQWRRQjFBSFVBZFFCMUFFa01kUUIxQUhVQWRRQjFBRkFNTUFBd0FEQUFNQUF3QURBQU1BQXdBREFBTUFBd0FEQUFNQUF3QURBQU1BQXdBREFBTUFBd0FEQUFNQUF3QURBQU1BQXdBREFBTUFBd0FEQUFNQUF3QUhVQWRRQjFBSFVBZFFCMUFIVUFkUUIxQUhVQWRRQjFBSFVBZFFCWURIVUFkUUIxQUY4TU1BQXdBREFBTUFBd0FEQUFNQUF3QURBQU1BQXdBREFBTUFCMUFIVUFkUUIxQUhVQWRRQjFBSFVBZFFCMUFIVUFkUUIxQUhVQWRRQjFBSFVBK3dNVkJHY01NQUF3QUh3QmJ3eDFBSGNNZnd5SERJOE1NQUF3QURBQU1BQXdBREFBTUFBd0FEQUFNQUF3QURBQU1BQXdBREFBTUFBd0FEQUFNQUF3QURBQVlBQmdBSmNNTUFBd0FEQUFkUUIxQUo4TWxRQ2xEREFBTUFDdERDd0hMQWNzQnl3SExBY3NCeXdITEFjc0J5d0hMQWNzQnl3SExBY3NCeXdITEFjc0J5d0hMQWNzQnl3SExBY3NCeXdITEFjc0J5d0hMQWNzQnl3SExBY3NCeXdITEFjc0J5d0hMQWNzQnl3SExBY3NCeXdITEFjc0J5d0hMQWNzQnl3SExBY3NCeXdITEFjc0J5d0hMQWNzQnl3SExBY3NCeXdITEFjc0I3VU1MQWNzQnl3SExBY3NCeXdITEFjc0J5d0hMQWNzQnl3SExBY3NCeXdITEFjc0J5d0hMQWNzQnl3SExBY3NCeXdIZFFCMUFIVUFkUUIxQUhVQWRRQjFBSFVBZFFCMUFIVUFkUUIxQUEwRU1BQzlEREFBTUFBd0FEQUFNQUF3QURBQU1BQXdBREFBTUFBd0FEQUFNQUF3QURBQU1BQXdBREFBTUFBd0FEQUFNQUFzQnl3SExBY3NCeXdITEFjc0J5d0hMUWN3QU1FTXlBd3NCeXdITEFjc0J5d0hMQWNzQnl3SExBY3NCeXdIekF3d0FEQUFNQUF3QURBQU1BQXdBREFBTUFBd0FEQUFNQUF3QURBQU1BQXdBREFBTUFBd0FEQUFNQUF3QURBQU1BQXdBREFBTUFBd0FEQUFNQUF3QURBQU1BQXdBREFBTUFBd0FEQUFNQUF3QUhVQWRRQjFBTlFNMlF6aEREQUFNQUF3QURBQU1BQXdBREFBTUFBd0FEQUFNQUF3QURBQU1BQXdBREFBTUFBd0FEQUFNQUF3QURBQU1BQXdBREFBTUFCZ0FHQUFZQUJnQUdBQVlBQmdBT2tNWUFEeERHQUErQXdBRFFZTllBQmhDV0FBWUFBT0RUQUFNQUF3QURBQUZnMWdBR0FBSGczN0F6QUFNQUF3QURBQVlBQmdBQ1lOWUFBc0RUUU5QQTFnQUVNTlBnMUxEV0FBWUFCZ0FHQUFZQUJnQUdBQVlBQmdBR0FBVWcxYURZc0dWZ2xoRFYwTmNRQm5EVzBOZFExNURXQUFZQUJnQUdBQVlBQmdBR0FBWUFCZ0FHQUFZQUJnQUdBQVlBQmdBR0FBbFFDQkRaVUFpQTJQRFpjTk1BQXdBREFBTUFBd0FEQUFNQUF3QURBQU1BQXdBREFBTUFBd0FEQUFNQUF3QURBQU1BQXdBREFBTUFBd0FEQUFNQUF3QURBQU1BQXdBREFBTUFBd0FEQUFNQUF3QURBQU1BQXdBREFBTUFBd0FEQUFudzJuRFRBQU1BQXdBREFBTUFBd0FIVUFydzIzRFRBQU1BQXdBREFBTUFBd0FEQUFNQUF3QURBQU1BQjFBTDhOTUFBd0FEQUFNQUF3QURBQU1BQXdBREFBTUFBd0FEQUFNQUF3QURBQU1BQXdBREFBTUFBd0FEQUFNQUF3QURBQU1BQXdBREFBTUFBd0FEQUFNQUF3QURBQU1BQXdBREFBTUFBd0FEQUFNQUIxQUhVQWRRQjFBSFVBZFFESERUQUFZQUJnQU04Tk1BQXdBREFBTUFBd0FEQUFNQUF3QURBQU1BQXdBREFBTUFBd0FEQUFNQUF3QURBQU1BQXdBREFBTUFBd0FEQUExdzExQU53Tk1BQXdBRDBCNUEwd0FEQUFNQUF3QURBQU1BRHNEZlFOL0EwRURnd09GQTR3QUJzT01BQXdBREFBTUFBd0FEQUFNQUF3QU5JRzBnYlNCdElHMGdiU0J0SUcwZ1lqRGlnT3dRVXVEc0VGTXc3U0Jqb08wZ2JTQnRJRzBnYlNCdElHMGdiU0J0SUcwZ2JTQnRJR1FnNUtEbElPVmc3U0J0SUdYZzVsRG0wT2RRN1NCdElHZlE2RURvb09qUTZVRHRJR21nNmhEdElHMGdhb0Rxd08wZ2EwRHJ3TzBnWmdBR0FBWUFERURtQUFZQUFrQnRJR3pBNWdBTklPWUFEYURva08wZ2JTQnQ4TzV3N1NCdThPMGdiMUR2d08wZ1pnQUdBQXhBN1NCdElHMGdiU0J0SUdZQUJnQUdBQVlBQUVEMkFBc0FVTUQ5SUcwZ2JTQnRJRzBnYlNCdElHMGdiU0J0SUcwZ2JTQnRJRzBnYlNCdElHMGdiU0J0SUcwZ2JTQnRJRzBnYlNCdElHMGdiU0J0SUcwZ2JTQnRJR0ZBOHNCeXdITEFjc0J5d0hMQWNzQnl3SExBY3NCeXdITEFjc0J5d0hMQWNzQnl3SExBY3NCeXdITEFjc0J5d0hMQWNzQnl3SExBY3NCeXdITEFjc0J5d0hMQWNzQnl3SExBY3NCeXdITEFjc0J5d0hMQWNzQnl3SExBY3NCeXdITEFjc0J5d0hMQWNzQnl3SExBY2NEOUlHTEFjc0J5d0hMQWNzQnl3SExBY3NCeXdITEFjc0J5d0hMQWNzQnl3SExBY3NCeXdITEFjc0J5d0hMQWNzQnl3SExBY3NCeXdITEFjc0J5d0hMQWNzQnl3SExBY3NCeXdITEFjc0J5d0hMQWNzQnl3SExBY3NCeXdITEFjc0J5d0hMQWNzQnl3SExBY3NCeXdITEFjc0J5d0hKQThzQnl3SExBY3NCeXdITEFjY0R5d0hMQWNzQnl3SExBY3NCeXdITEFjc0J5d0hMQWNzQnl3SExBY3NCeXdITEFjc0J5d0hMQWNzQnl3SExBY3NCeXdITEFjc0J5d0hMQWNzQnl3SExBY3NCeXdITEFjc0J5d0hMQWNzQnl3SExBY3NCeXdITEFjc0J5d0hMQWNzQnl3SExBY3NCeXdITEFjc0J5d0hMQWNzQnl3SExBY3NCeXdITEFjc0J5d1BMQWNzQnl3SExBY3NCeXdITEFjc0J5d0hMQWNzQnl3SExBY3NCeXdITEFjc0J5d0hMQWNzQnl3SExBY3NCeXdITEFjc0J5d0hMQWNzQnl3SExBYzBEOUlHMGdiU0J0SUcwZ2JTQnRJRzBnYlNCdElHMGdiU0J0SUcwZ2JTQnRJRzBnYlNCdElHMGdiU0J0SUcwZ2JTQnRJRzBnYlNCdElHMGdiU0J0SUcwZ2JTQnRJRzBnYlNCdElHMGdiU0J0SUcwZ2JTQnRJRzBnYlNCdElHMGdiU0J0SUcwZ2JTQnRJRzBnYlNCdElHMGdiU0J0SUcwZ2JTQnRJRzBnYlNCdElHTEFjc0J5d0hMQWNzQnl3SExBY3NCeXdITEFjc0J5d0hMQWNzQnl3SExBY2NEOUlHMGdiU0J0SUcwZ2JTQnRJRzBnYlNCdElHMGdiU0J0SUcwZ2JTQnRJRzBnYlNCdElHMGdiU0J0SUcwZ2JTQnRJRzBnYlNCdElHMGdiU0J0SUcwZ2JTQnRJRzBnYlNCdElHMGdiU0J0SUcwZ2JTQnRJRzBnYlNCdElHRkE4c0J5d0hMQWNzQnl3SExBY3NCeXdITEFjc0J5d0hMQWNzQnl3SExBY3NCeXdITEFjc0J5d0hMQWNzQnl3SExBY3NCeXdIUEEvU0J0SUcwZ2JTQnRJRzBnYlNCdElHMGdiU0J0SUcwZ2JTQnRJRzBnYlNCdElHMGdiU0J0SUcwZ2JTQnRJRzBnYlNCdElHMGdiU0J0SUcwZ2JTQnRJRzBnYlNCdElHMGdiU0J0SUcwZ2JTQnRJRzBnYlNCdElHMGdiU0J0SUcwZ2JTQnRJRzBnYlNCdElHMGdiU0J0SUcwZ2JTQnRJRzBnYlNCdElHMGdZVUQwUVBsUUNWQUpVQU1BQXdBREFBTUFDVkFKVUFsUUNWQUpVQWxRQ1ZBRXdQTUFBd0FEQUFNQUF3QURBQU1BQXdBREFBTUFBd0FEQUFNQUF3QURBQU1BQXdBREFBTUFBd0FEQUFNQUF3QURBQU1BQXdBREFBTUFBd0FEQUFNQUF3QURBQU1BQXdBREFBTUFBd0FEQUFNQUF3QURBQU1BQXdBREFBTUFBd0FEQUEvLzhFQUFRQUJBQUVBQVFBQkFBRUFBUUFCQUFOQUFNQUFRQUJBQUlBQkFBRUFBUUFCQUFFQUFRQUJBQUVBQVFBQkFBRUFBUUFCQUFFQUFRQUJBQUVBQVFBQ2dBVEFCY0FIZ0FiQUJvQUhnQVhBQllBRWdBZUFCc0FHQUFQQUJnQUhBQkxBRXNBU3dCTEFFc0FTd0JMQUVzQVN3QkxBQmdBR0FBZUFCNEFIZ0FUQUI0QVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUJZQUd3QVNBQjRBSGdBZUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFBV0FBMEFFUUFlQUFRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQXJBQ3NBS3dBckFDc0FLd0FyQUNzQUt3QXJBQ3NBS3dBckFDc0FLd0FyQUNzQUt3QXJBQ3NBS3dBckFDc0FLd0FyQUNzQUt3QXJBQ3NBS3dBckFDc0FLd0FyQUNzQUt3QXJBQ3NBS3dBckFDc0FLd0FyQUNzQUt3QXJBQ3NBS3dBckFDc0FLd0FyQUNzQUt3QXJBQ3NBS3dBckFDc0FLd0FyQUNzQUt3QXJBQVFBQkFBRUFBUUFCQUFGQUFRQUJBQUVBQVFBQkFBRUFBUUFCQUFFQUFRQUJBQUVBQVFBQkFBRUFBUUFCQUFFQUFRQUJBQUVBQVFBQkFBRUFBUUFCQUFKQUJZQUdnQWJBQnNBR3dBZUFCMEFIUUFlQUU4QUZ3QWVBQTBBSGdBZUFCb0FHd0JQQUU4QURnQlFBQjBBSFFBZEFFOEFUd0FYQUU4QVR3QlBBQllBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUIwQUhnQWVBQjRBSGdBZUFCNEFIZ0FlQUI0QUhnQWVBQjRBSGdBZUFCNEFIZ0FlQUI0QUhnQWVBQjRBSGdBZUFCNEFIZ0FlQUI0QUhnQWVBQjRBSGdBZEFGQUFVQUJRQUZBQVVBQlFBRkFBVUFBZUFCNEFIZ0FlQUI0QUhnQWVBQjRBSGdBZUFCNEFIZ0FlQUI0QUhnQWVBQjRBSGdBZUFCNEFIZ0FlQUI0QUhnQWVBQjRBSGdBZUFCNEFIZ0FlQUI0QUhnQWVBQjRBSGdBZUFCNEFIZ0FlQUI0QUhnQWVBQjRBSGdBZUFCNEFIZ0FlQUI0QUhnQWVBQjRBSGdBZUFCNEFIZ0FlQUI0QUhnQWVBQjRBSGdBZUFCNEFIZ0FlQUZBQUhnQWVBQjRBSGdBZUFCNEFIZ0FlQUI0QUhnQWVBQjRBSGdBZUFCNEFIZ0JRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQWVBQjRBSGdBZUFGQUFUd0JBQUU4QVR3QlBBRUFBVHdCUUFGQUFUd0JRQUI0QUhnQWVBQjRBSGdBZUFCMEFIUUFkQUIwQUhnQWRBQjRBRGdCUUFGQUFVQUJRQUZBQUhnQWVBQjRBSGdBZUFCNEFIZ0JRQUI0QVVBQWVBQjRBSGdBZUFCNEFIZ0FlQUI0QUhnQWVBQjRBSGdBZUFCNEFIZ0FlQUI0QUJBQUVBQVFBQkFBRUFBUUFCQUFFQUFRQUJBQUVBQVFBQkFBRUFBUUFCQUFFQUFRQUJBQUVBQVFBQkFBRUFBUUFCQUFFQUFRQUJBQUVBQVFBQkFBRUFBUUFCQUFFQUFRQUJBQUVBQVFBQkFBRUFBUUFCQUFFQUFRQUJBQUVBQVFBQkFBRUFBUUFCQUFFQUFRQUJBQUVBQVFBQkFBRUFBUUFCQUFFQUFRQUJBQUVBQVFBQkFBSkFBUUFCQUFFQUFRQUJBQUVBQVFBQkFBRUFBUUFCQUFFQUFrQUNRQUpBQWtBQ1FBSkFBa0FCQUFFQUFRQUJBQUVBQVFBQkFBRUFBUUFCQUFFQUFRQUJBQWVBQjRBSGdBZUFGQUFIZ0FlQUI0QUt3QXJBRkFBVUFCUUFGQUFHQUJRQUNzQUt3QXJBQ3NBSGdBZUFGQUFIZ0JRQUZBQVVBQXJBRkFBS3dBZUFCNEFIZ0FlQUI0QUhnQWVBQjRBSGdBZUFCNEFIZ0FlQUI0QUhnQWVBQjRBSGdBZUFCNEFLd0FlQUI0QUhnQWVBQjRBSGdBZUFCNEFIZ0FlQUI0QUhnQWVBQjRBSGdBZUFCNEFIZ0FlQUI0QUhnQWVBQjRBSGdBZUFCNEFIZ0FlQUI0QUhnQWVBQjRBQkFBRUFBUUFCQUFFQUFRQUJBQWVBQjRBSGdBZUFCNEFIZ0FlQUI0QUhnQWVBQjRBSGdBZUFCNEFIZ0FlQUI0QUhnQWVBQjRBSGdBZUFCNEFIZ0FlQUI0QUhnQWVBQjRBSGdBZUFCNEFIZ0FlQUI0QUhnQWVBQjRBSGdBZUFCNEFIZ0FlQUI0QUhnQWVBQjRBSGdBZUFCNEFIZ0FlQUI0QUhnQXJBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQXJBQ3NBVUFBZUFCNEFIZ0FlQUI0QUhnQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUFZQUEwQUt3QXJBQjRBSGdBYkFDc0FCQUFFQUFRQUJBQUVBQVFBQkFBRUFBUUFCQUFFQUFRQUJBQUVBQVFBQkFBRUFBUUFCQUFFQUFRQUJBQUVBQVFBQkFBRUFBUUFCQUFFQUFRQUJBQUVBQVFBQkFBRUFBUUFCQUFFQUFRQUJBQUVBQVFBQkFBRUFBUUFEUUFFQUI0QUJBQUVBQjRBQkFBRUFCTUFCQUFyQUNzQUt3QXJBQ3NBS3dBckFDc0FWZ0JXQUZZQVZnQldBRllBVmdCV0FGWUFWZ0JXQUZZQVZnQldBRllBVmdCV0FGWUFWZ0JXQUZZQVZnQldBRllBVmdCV0FGWUFLd0FyQUNzQUt3QldBRllBVmdCV0FCNEFIZ0FyQUNzQUt3QXJBQ3NBS3dBckFDc0FLd0FyQUNzQUhnQWVBQjRBSGdBZUFCNEFIZ0FlQUI0QUdnQWFBQm9BR0FBWUFCNEFIZ0FFQUFRQUJBQUVBQVFBQkFBRUFBUUFCQUFFQUFRQUV3QUVBQ3NBRXdBVEFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFBRUFBUUFCQUFFQUFRQUJBQUVBQVFBQkFBRUFBUUFCQUFFQUFRQUJBQUVBQVFBQkFBRUFBUUFCQUJMQUVzQVN3QkxBRXNBU3dCTEFFc0FTd0JMQUJvQUdRQVpBQjRBVUFCUUFBUUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBQk1BVUFBRUFBUUFCQUFFQUFRQUJBQUVBQjRBSGdBRUFBUUFCQUFFQUFRQUJBQlFBRkFBQkFBRUFCNEFCQUFFQUFRQUJBQlFBRkFBU3dCTEFFc0FTd0JMQUVzQVN3QkxBRXNBU3dCUUFGQUFVQUFlQUI0QVVBQWVBQjRBSGdBZUFCNEFIZ0FlQUI0QUhnQWVBQjRBSGdBZUFCNEFLd0FlQUZBQUJBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFBRUFBUUFCQUFFQUFRQUJBQUVBQVFBQkFBRUFBUUFCQUFFQUFRQUJBQUVBQVFBQkFBRUFDc0FLd0JRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFCQUFFQUFRQUJBQUVBQVFBQkFBRUFBUUFCQUFFQUZBQUt3QXJBQ3NBS3dBckFDc0FLd0FyQUNzQUt3QXJBQ3NBS3dBckFFc0FTd0JMQUVzQVN3QkxBRXNBU3dCTEFFc0FVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBQkFBRUFBUUFCQUFFQUFRQUJBQUVBQVFBVUFCUUFCNEFIZ0FZQUJNQVVBQXJBQ3NBQkFBYkFCc0FVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQUVBQVFBQkFBRUFGQUFCQUFFQUFRQUJBQUVBRkFBQkFBRUFBUUFVQUFFQUFRQUJBQUVBQVFBS3dBckFCNEFIZ0FlQUI0QUhnQWVBQjRBSGdBZUFCNEFIZ0FlQUI0QUhnQWVBQ3NBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQUVBQVFBQkFBckFDc0FIZ0FyQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQXJBQ3NBS3dBckFDc0FLd0FyQUNzQUt3QXJBQ3NBS3dBckFDc0FLd0FyQUNzQUt3QXJBQ3NBS3dCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUFyQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQUt3QXJBQ3NBS3dBckFDc0FLd0FyQUNzQUt3QXJBQVFBQkFBRUFBUUFCQUFFQUFRQUJBQUVBQVFBQkFBRUFBUUFCQUFFQUI0QUJBQUVBQVFBQkFBRUFBUUFCQUFFQUFRQUJBQUVBQVFBQkFBRUFBUUFCQUFFQUFRQUJBQUVBQVFBQkFBRUFBUUFCQUFFQUFRQUJBQUVBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFBUUFCQUFFQUZBQUJBQUVBQVFBQkFBRUFBUUFCQUFFQUFRQUJBQUVBQVFBQkFBRUFBUUFCQUFFQUFRQVVBQUVBQVFBQkFBRUFBUUFCQUFFQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQUJBQUVBQTBBRFFCTEFFc0FTd0JMQUVzQVN3QkxBRXNBU3dCTEFCNEFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFBRUFBUUFCQUFyQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUFyQUNzQVVBQlFBQ3NBS3dCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQUt3QlFBRkFBVUFCUUFGQUFVQUJRQUNzQVVBQXJBQ3NBS3dCUUFGQUFVQUJRQUNzQUt3QUVBRkFBQkFBRUFBUUFCQUFFQUFRQUJBQXJBQ3NBQkFBRUFDc0FLd0FFQUFRQUJBQlFBQ3NBS3dBckFDc0FLd0FyQUNzQUt3QUVBQ3NBS3dBckFDc0FVQUJRQUNzQVVBQlFBRkFBQkFBRUFDc0FLd0JMQUVzQVN3QkxBRXNBU3dCTEFFc0FTd0JMQUZBQVVBQWFBQm9BVUFCUUFGQUFVQUJRQUV3QUhnQWJBRkFBSGdBRUFDc0FLd0FFQUFRQUJBQXJBRkFBVUFCUUFGQUFVQUJRQUNzQUt3QXJBQ3NBVUFCUUFDc0FLd0JRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBS3dCUUFGQUFVQUJRQUZBQVVBQlFBQ3NBVUFCUUFDc0FVQUJRQUNzQVVBQlFBQ3NBS3dBRUFDc0FCQUFFQUFRQUJBQUVBQ3NBS3dBckFDc0FCQUFFQUNzQUt3QUVBQVFBQkFBckFDc0FLd0FFQUNzQUt3QXJBQ3NBS3dBckFDc0FVQUJRQUZBQVVBQXJBRkFBS3dBckFDc0FLd0FyQUNzQUt3QkxBRXNBU3dCTEFFc0FTd0JMQUVzQVN3QkxBQVFBQkFCUUFGQUFVQUFFQUI0QUt3QXJBQ3NBS3dBckFDc0FLd0FyQUNzQUt3QUVBQVFBQkFBckFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFDc0FVQUJRQUZBQUt3QlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFLd0JRQUZBQVVBQlFBRkFBVUFCUUFDc0FVQUJRQUNzQVVBQlFBRkFBVUFCUUFDc0FLd0FFQUZBQUJBQUVBQVFBQkFBRUFBUUFCQUFFQUNzQUJBQUVBQVFBS3dBRUFBUUFCQUFyQUNzQVVBQXJBQ3NBS3dBckFDc0FLd0FyQUNzQUt3QXJBQ3NBS3dBckFDc0FLd0JRQUZBQUJBQUVBQ3NBS3dCTEFFc0FTd0JMQUVzQVN3QkxBRXNBU3dCTEFCNEFHd0FyQUNzQUt3QXJBQ3NBS3dBckFGQUFCQUFFQUFRQUJBQUVBQVFBS3dBRUFBUUFCQUFyQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUFyQUNzQVVBQlFBQ3NBS3dCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUFRQUJBQUVBQVFBQkFBckFDc0FCQUFFQUNzQUt3QUVBQVFBQkFBckFDc0FLd0FyQUNzQUt3QXJBQVFBQkFBRUFDc0FLd0FyQUNzQVVBQlFBQ3NBVUFCUUFGQUFCQUFFQUNzQUt3QkxBRXNBU3dCTEFFc0FTd0JMQUVzQVN3QkxBQjRBVUFCUUFGQUFVQUJRQUZBQVVBQXJBQ3NBS3dBckFDc0FLd0FyQUNzQUt3QXJBQVFBVUFBckFGQUFVQUJRQUZBQVVBQlFBQ3NBS3dBckFGQUFVQUJRQUNzQVVBQlFBRkFBVUFBckFDc0FLd0JRQUZBQUt3QlFBQ3NBVUFCUUFDc0FLd0FyQUZBQVVBQXJBQ3NBS3dCUUFGQUFVQUFyQUNzQUt3QlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFBckFDc0FLd0FyQUFRQUJBQUVBQVFBQkFBckFDc0FLd0FFQUFRQUJBQXJBQVFBQkFBRUFBUUFLd0FyQUZBQUt3QXJBQ3NBS3dBckFDc0FCQUFyQUNzQUt3QXJBQ3NBS3dBckFDc0FLd0FyQUVzQVN3QkxBRXNBU3dCTEFFc0FTd0JMQUVzQVVBQlFBRkFBSGdBZUFCNEFIZ0FlQUI0QUd3QWVBQ3NBS3dBckFDc0FLd0FFQUFRQUJBQUVBQVFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBQ3NBVUFCUUFGQUFLd0JRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFBckFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBS3dBckFDc0FVQUFFQUFRQUJBQUVBQVFBQkFBRUFDc0FCQUFFQUFRQUt3QUVBQVFBQkFBRUFDc0FLd0FyQUNzQUt3QXJBQ3NBQkFBRUFDc0FVQUJRQUZBQUt3QXJBQ3NBS3dBckFGQUFVQUFFQUFRQUt3QXJBRXNBU3dCTEFFc0FTd0JMQUVzQVN3QkxBRXNBS3dBckFDc0FLd0FyQUNzQUt3QU9BRkFBVUFCUUFGQUFVQUJRQUZBQUhnQlFBQVFBQkFBRUFBNEFVQUJRQUZBQVVBQlFBRkFBVUFCUUFDc0FVQUJRQUZBQUt3QlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUFyQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQUt3QlFBRkFBVUFCUUFGQUFLd0FyQUFRQVVBQUVBQVFBQkFBRUFBUUFCQUFFQUNzQUJBQUVBQVFBS3dBRUFBUUFCQUFFQUNzQUt3QXJBQ3NBS3dBckFDc0FCQUFFQUNzQUt3QXJBQ3NBS3dBckFDc0FVQUFyQUZBQVVBQUVBQVFBS3dBckFFc0FTd0JMQUVzQVN3QkxBRXNBU3dCTEFFc0FLd0JRQUZBQUt3QXJBQ3NBS3dBckFDc0FLd0FyQUNzQUt3QXJBQ3NBS3dBRUFBUUFCQUFFQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUNzQVVBQlFBRkFBS3dCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFCQUFFQUZBQUJBQUVBQVFBQkFBRUFBUUFCQUFyQUFRQUJBQUVBQ3NBQkFBRUFBUUFCQUJRQUI0QUt3QXJBQ3NBS3dCUUFGQUFVQUFFQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQUJBQUVBQ3NBS3dCTEFFc0FTd0JMQUVzQVN3QkxBRXNBU3dCTEFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFCb0FVQUJRQUZBQVVBQlFBRkFBS3dBRUFBUUFCQUFyQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUNzQUt3QXJBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFBckFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFDc0FVQUFyQUNzQVVBQlFBRkFBVUFCUUFGQUFVQUFyQUNzQUt3QUVBQ3NBS3dBckFDc0FCQUFFQUFRQUJBQUVBQVFBS3dBRUFDc0FCQUFFQUFRQUJBQUVBQVFBQkFBRUFDc0FLd0FyQUNzQUt3QXJBRXNBU3dCTEFFc0FTd0JMQUVzQVN3QkxBRXNBS3dBckFBUUFCQUFlQUNzQUt3QXJBQ3NBS3dBckFDc0FLd0FyQUNzQUt3QXJBRndBWEFCY0FGd0FYQUJjQUZ3QVhBQmNBRndBWEFCY0FGd0FYQUJjQUZ3QVhBQmNBRndBWEFCY0FGd0FYQUJjQUZ3QVhBQmNBRndBWEFCY0FGd0FYQUFxQUZ3QVhBQXFBQ29BS2dBcUFDb0FLZ0FxQUNzQUt3QXJBQ3NBR3dCY0FGd0FYQUJjQUZ3QVhBQmNBQ29BS2dBcUFDb0FLZ0FxQUNvQUtnQWVBRXNBU3dCTEFFc0FTd0JMQUVzQVN3QkxBRXNBRFFBTkFDc0FLd0FyQUNzQUt3QmNBRndBS3dCY0FDc0FYQUJjQUZ3QVhBQmNBQ3NBWEFCY0FGd0FYQUJjQUZ3QVhBQmNBRndBWEFCY0FGd0FYQUJjQUZ3QVhBQmNBRndBWEFCY0FDc0FYQUFyQUZ3QVhBQmNBRndBWEFCY0FGd0FYQUJjQUZ3QUtnQmNBRndBS2dBcUFDb0FLZ0FxQUNvQUtnQXFBQ29BWEFBckFDc0FYQUJjQUZ3QVhBQmNBQ3NBWEFBckFDb0FLZ0FxQUNvQUtnQXFBQ3NBS3dCTEFFc0FTd0JMQUVzQVN3QkxBRXNBU3dCTEFDc0FLd0JjQUZ3QVhBQmNBRkFBRGdBT0FBNEFEZ0FlQUE0QURnQUpBQTRBRGdBTkFBa0FFd0FUQUJNQUV3QVRBQWtBSGdBVEFCNEFIZ0FlQUFRQUJBQWVBQjRBSGdBZUFCNEFIZ0JMQUVzQVN3QkxBRXNBU3dCTEFFc0FTd0JMQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQURRQUVBQjRBQkFBZUFBUUFGZ0FSQUJZQUVRQUVBQVFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBQ3NBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQUt3QXJBQ3NBS3dBRUFBUUFCQUFFQUFRQUJBQUVBQVFBQkFBRUFBUUFCQUFFQUFRQURRQUVBQVFBQkFBRUFBUUFEUUFFQUFRQVVBQlFBRkFBVUFCUUFBUUFCQUFFQUFRQUJBQUVBQVFBQkFBRUFBUUFCQUFyQUFRQUJBQUVBQVFBQkFBRUFBUUFCQUFFQUFRQUJBQUVBQVFBQkFBRUFBUUFCQUFFQUFRQUJBQUVBQVFBQkFBRUFBUUFCQUFFQUFRQUJBQUVBQVFBQkFBckFBMEFEUUFlQUI0QUhnQWVBQjRBSGdBRUFCNEFIZ0FlQUI0QUhnQWVBQ3NBSGdBZUFBNEFEZ0FOQUE0QUhnQWVBQjRBSGdBZUFBa0FDUUFyQUNzQUt3QXJBQ3NBWEFCY0FGd0FYQUJjQUZ3QVhBQmNBRndBWEFCY0FGd0FYQUJjQUZ3QVhBQmNBRndBWEFCY0FGd0FYQUJjQUZ3QVhBQmNBRndBWEFCY0FGd0FYQUJjQUZ3QVhBQmNBQ29BS2dBcUFDb0FLZ0FxQUNvQUtnQXFBQ29BS2dBcUFDb0FLZ0FxQUNvQUtnQXFBQ29BS2dCY0FFc0FTd0JMQUVzQVN3QkxBRXNBU3dCTEFFc0FEUUFOQUI0QUhnQWVBQjRBWEFCY0FGd0FYQUJjQUZ3QUtnQXFBQ29BS2dCY0FGd0FYQUJjQUNvQUtnQXFBRndBS2dBcUFDb0FYQUJjQUNvQUtnQXFBQ29BS2dBcUFDb0FYQUJjQUZ3QUtnQXFBQ29BS2dCY0FGd0FYQUJjQUZ3QVhBQmNBRndBWEFCY0FGd0FYQUJjQUNvQUtnQXFBQ29BS2dBcUFDb0FLZ0FxQUNvQUtnQXFBRndBS2dCTEFFc0FTd0JMQUVzQVN3QkxBRXNBU3dCTEFDb0FLZ0FxQUNvQUtnQXFBRkFBVUFCUUFGQUFVQUJRQUNzQVVBQXJBQ3NBS3dBckFDc0FVQUFyQUNzQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQUhnQlFBRkFBVUFCUUFGZ0FXQUJZQUZnQVdBQllBRmdBV0FCWUFGZ0FXQUJZQUZnQVdBQllBRmdBV0FCWUFGZ0FXQUJZQUZnQVdBQllBRmdBV0FCWUFGZ0FXQUJZQUZnQVdBQlpBRmtBV1FCWkFGa0FXUUJaQUZrQVdRQlpBRmtBV1FCWkFGa0FXUUJaQUZrQVdRQlpBRmtBV1FCWkFGa0FXUUJaQUZrQVdRQlpBRmtBV1FCWkFGa0FXZ0JhQUZvQVdnQmFBRm9BV2dCYUFGb0FXZ0JhQUZvQVdnQmFBRm9BV2dCYUFGb0FXZ0JhQUZvQVdnQmFBRm9BV2dCYUFGb0FXZ0JhQUZvQVdnQmFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBQ3NBVUFCUUFGQUFVQUFyQUNzQVVBQlFBRkFBVUFCUUFGQUFVQUFyQUZBQUt3QlFBRkFBVUFCUUFDc0FLd0JRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUFyQUZBQVVBQlFBRkFBS3dBckFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFBckFGQUFVQUJRQUZBQUt3QXJBRkFBVUFCUUFGQUFVQUJRQUZBQUt3QlFBQ3NBVUFCUUFGQUFVQUFyQUNzQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFLd0JRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFLd0JRQUZBQVVBQlFBQ3NBS3dCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFBckFDc0FCQUFFQUFRQUhnQU5BQjRBSGdBZUFCNEFIZ0FlQUI0QVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBQ3NBS3dBckFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBSGdBZUFCNEFIZ0FlQUI0QUhnQWVBQjRBSGdBckFDc0FLd0FyQUNzQUt3QlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFDc0FLd0JRQUZBQVVBQlFBRkFBVUFBckFDc0FEUUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBSGdBZUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFBTkFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFBV0FCRUFLd0FyQUNzQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBQTBBRFFBTkFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUFyQUNzQUt3QXJBQ3NBS3dBckFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQUt3QlFBRkFBVUFCUUFBUUFCQUFFQUNzQUt3QXJBQ3NBS3dBckFDc0FLd0FyQUNzQUt3QlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQUVBQVFBQkFBTkFBMEFLd0FyQUNzQUt3QXJBQ3NBS3dBckFDc0FVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFCQUFFQUNzQUt3QXJBQ3NBS3dBckFDc0FLd0FyQUNzQUt3QXJBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFLd0JRQUZBQVVBQXJBQVFBQkFBckFDc0FLd0FyQUNzQUt3QXJBQ3NBS3dBckFDc0FLd0JjQUZ3QVhBQmNBRndBWEFCY0FGd0FYQUJjQUZ3QVhBQmNBRndBWEFCY0FGd0FYQUJjQUZ3QUtnQXFBQ29BS2dBcUFDb0FLZ0FxQUNvQUtnQXFBQ29BS2dBcUFDb0FLZ0FxQUNvQUtnQXFBQTBBRFFBVkFGd0FEUUFlQUEwQUd3QmNBQ29BS3dBckFFc0FTd0JMQUVzQVN3QkxBRXNBU3dCTEFFc0FLd0FyQUNzQUt3QXJBQ3NBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFBckFDc0FLd0FyQUNzQUt3QWVBQjRBRXdBVEFBMEFEUUFPQUI0QUV3QVRBQjRBQkFBRUFBUUFDUUFyQUVzQVN3QkxBRXNBU3dCTEFFc0FTd0JMQUVzQUt3QXJBQ3NBS3dBckFDc0FVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFBckFDc0FLd0FyQUNzQUt3QXJBRkFBVUFCUUFGQUFVQUFFQUFRQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUFRQVVBQXJBQ3NBS3dBckFDc0FVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQXJBQ3NBS3dBckFDc0FLd0FyQUNzQUt3QXJBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFLd0FFQUFRQUJBQUVBQVFBQkFBRUFBUUFCQUFFQUFRQUJBQXJBQ3NBS3dBckFBUUFCQUFFQUFRQUJBQUVBQVFBQkFBRUFBUUFCQUFFQUNzQUt3QXJBQ3NBSGdBckFDc0FLd0FUQUJNQVN3QkxBRXNBU3dCTEFFc0FTd0JMQUVzQVN3QmNBRndBWEFCY0FGd0FYQUJjQUZ3QVhBQmNBRndBWEFCY0FGd0FYQUJjQUZ3QVhBQXJBQ3NBWEFCY0FGd0FYQUJjQUNzQUt3QXJBQ3NBS3dBckFDc0FLd0FyQUNzQUt3QmNBRndBWEFCY0FGd0FYQUJjQUZ3QVhBQmNBRndBWEFBckFDc0FLd0FyQUZ3QVhBQmNBRndBWEFCY0FGd0FYQUJjQUZ3QVhBQmNBRndBWEFCY0FGd0FYQUJjQUNzQUt3QXJBQ3NBS3dBckFFc0FTd0JMQUVzQVN3QkxBRXNBU3dCTEFFc0FYQUFyQUNzQUt3QXFBQ29BVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUFRQUJBQUVBQVFBQkFBckFDc0FIZ0FlQUZ3QVhBQmNBRndBWEFCY0FGd0FYQUJjQUZ3QVhBQmNBRndBWEFCY0FGd0FYQUJjQUZ3QVhBQmNBQ29BS2dBcUFDb0FLZ0FxQUNvQUtnQXFBQ29BS3dBcUFDb0FLZ0FxQUNvQUtnQXFBQ29BS2dBcUFDb0FLZ0FxQUNvQUtnQXFBQ29BS2dBcUFDb0FLZ0FxQUNvQUtnQXFBQ29BS2dBcUFDb0FLd0FyQUFRQVN3QkxBRXNBU3dCTEFFc0FTd0JMQUVzQVN3QXJBQ3NBS3dBckFDc0FLd0JMQUVzQVN3QkxBRXNBU3dCTEFFc0FTd0JMQUNzQUt3QXJBQ3NBS3dBckFDb0FLZ0FxQUNvQUtnQXFBQ29BWEFBcUFDb0FLZ0FxQUNvQUtnQXJBQ3NBQkFBRUFBUUFCQUFFQUFRQUJBQUVBQVFBQkFBRUFBUUFCQUFFQUFRQUJBQUVBQ3NBS3dBckFDc0FLd0FyQUNzQUt3QXJBQ3NBS3dBckFDc0FLd0FyQUNzQUt3QXJBQ3NBS3dBckFDc0FLd0FyQUNzQUt3QXJBQ3NBS3dBckFDc0FCQUFFQUFRQUJBQUVBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBQVFBQkFBRUFBUUFCQUJRQUZBQVVBQlFBRkFBVUFCUUFDc0FLd0FyQUNzQVN3QkxBRXNBU3dCTEFFc0FTd0JMQUVzQVN3QU5BQTBBSGdBTkFBMEFEUUFOQUI0QUhnQWVBQjRBSGdBZUFCNEFIZ0FlQUI0QUJBQUVBQVFBQkFBRUFBUUFCQUFFQUFRQUhnQWVBQjRBSGdBZUFCNEFIZ0FlQUI0QUt3QXJBQ3NBQkFBRUFBUUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQUJBQUVBQVFBQkFBRUFBUUFCQUFFQUFRQUJBQUVBQVFBQkFCUUFGQUFTd0JMQUVzQVN3QkxBRXNBU3dCTEFFc0FTd0JRQUZBQVVBQlFBRkFBVUFCUUFGQUFCQUFFQUFRQUJBQUVBQVFBQkFBRUFBUUFCQUFFQUFRQUJBQUVBQ3NBS3dBckFDc0FLd0FyQUNzQUt3QWVBQjRBSGdBZUFGQUFVQUJRQUZBQUJBQUVBQVFBQkFBRUFBUUFCQUFFQUFRQUJBQUVBQVFBQkFBRUFBUUFCQUFFQUFRQUJBQUVBQ3NBS3dBckFBMEFEUUFOQUEwQURRQkxBRXNBU3dCTEFFc0FTd0JMQUVzQVN3QkxBQ3NBS3dBckFGQUFVQUJRQUVzQVN3QkxBRXNBU3dCTEFFc0FTd0JMQUVzQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFBMEFEUUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUFyQUNzQUt3QXJBQ3NBS3dBckFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFDc0FLd0JRQUZBQVVBQWVBQjRBSGdBZUFCNEFIZ0FlQUI0QUt3QXJBQ3NBS3dBckFDc0FLd0FyQUFRQUJBQUVBQjRBQkFBRUFBUUFCQUFFQUFRQUJBQUVBQVFBQkFBRUFBUUFCQUJRQUZBQVVBQlFBQVFBVUFCUUFGQUFVQUJRQUZBQUJBQlFBRkFBQkFBRUFBUUFVQUFyQUNzQUt3QXJBQ3NBQkFBRUFBUUFCQUFFQUFRQUJBQUVBQVFBQkFBRUFBUUFCQUFFQUFRQUJBQUVBQVFBQkFBRUFBUUFCQUFFQUFRQUJBQUVBQ3NBQkFBRUFBUUFCQUFFQUI0QUhnQWVBQjRBSGdBZUFCNEFIZ0FlQUI0QUhnQWVBQjRBSGdBZUFCNEFIZ0FlQUI0QUhnQWVBQjRBS3dBckFGQUFVQUJRQUZBQVVBQlFBQ3NBS3dCUUFGQUFVQUJRQUZBQVVBQlFBRkFBS3dCUUFDc0FVQUFyQUZBQUt3QWVBQjRBSGdBZUFCNEFIZ0FlQUI0QUhnQWVBQjRBSGdBZUFCNEFIZ0FlQUI0QUhnQWVBQjRBSGdBZUFCNEFIZ0FlQUI0QUhnQWVBQjRBSGdBZUFDc0FLd0FlQUI0QUhnQWVBQjRBSGdBZUFCNEFIZ0FlQUI0QUhnQWVBQjRBSGdBZUFCNEFIZ0FlQUI0QUhnQXJBQjRBSGdBZUFCNEFIZ0FlQUI0QUhnQlFBQjRBSGdBZUFGQUFVQUJRQUNzQUhnQWVBQjRBSGdBZUFCNEFIZ0FlQUI0QUhnQlFBRkFBVUFCUUFDc0FLd0FlQUI0QUhnQWVBQjRBSGdBckFCNEFIZ0FlQUI0QUhnQWVBQjRBSGdBZUFCNEFIZ0FlQUI0QUhnQWVBQjRBSGdBZUFCNEFLd0FyQUZBQVVBQlFBQ3NBSGdBZUFCNEFIZ0FlQUI0QUhnQU9BQjRBS3dBTkFBMEFEUUFOQUEwQURRQU5BQWtBRFFBTkFBMEFDQUFFQUFzQUJBQUVBQTBBQ1FBTkFBMEFEQUFkQUIwQUhnQVhBQmNBRmdBWEFCY0FGd0FXQUJjQUhRQWRBQjRBSGdBVUFCUUFGQUFOQUFFQUFRQUVBQVFBQkFBRUFBUUFDUUFhQUJvQUdnQWFBQm9BR2dBYUFCb0FIZ0FYQUJjQUhRQVZBQlVBSGdBZUFCNEFIZ0FlQUI0QUdBQVdBQkVBRlFBVkFCVUFIZ0FlQUI0QUhnQWVBQjRBSGdBZUFCNEFIZ0FlQUI0QURRQWVBQTBBRFFBTkFBMEFIZ0FOQUEwQURRQUhBQjRBSGdBZUFCNEFLd0FFQUFRQUJBQUVBQVFBQkFBRUFBUUFCQUFFQUZBQVVBQXJBQ3NBVHdCUUFGQUFVQUJRQUZBQUhnQWVBQjRBRmdBUkFFOEFVQUJQQUU4QVR3QlBBRkFBVUFCUUFGQUFVQUFlQUI0QUhnQVdBQkVBS3dCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUNzQUt3QXJBQnNBR3dBYkFCc0FHd0FiQUJzQUdnQWJBQnNBR3dBYkFCc0FHd0FiQUJzQUd3QWJBQnNBR3dBYkFCc0FHZ0FiQUJzQUd3QWJBQm9BR3dBYkFCb0FHd0FiQUJzQUd3QWJBQnNBR3dBYkFCc0FHd0FiQUJzQUd3QWJBQnNBR3dBYkFBUUFCQUFFQUFRQUJBQUVBQVFBQkFBRUFBUUFCQUFFQUFRQUJBQUVBQVFBSGdBZUFGQUFHZ0FlQUIwQUhnQlFBQjRBR2dBZUFCNEFIZ0FlQUI0QUhnQWVBQjRBSGdCUEFCNEFVQUFiQUI0QUhnQlFBRkFBVUFCUUFGQUFIZ0FlQUI0QUhRQWRBQjRBVUFBZUFGQUFIZ0JRQUI0QVVBQlBBRkFBVUFBZUFCNEFIZ0FlQUI0QUhnQWVBRkFBVUFCUUFGQUFVQUFlQUI0QUhnQWVBQjRBSGdBZUFCNEFIZ0FlQUI0QUhnQWVBQjRBSGdBZUFGQUFIZ0JRQUZBQVVBQlFBRThBVHdCUUFGQUFVQUJRQUZBQVR3QlFBRkFBVHdCUUFFOEFUd0JQQUU4QVR3QlBBRThBVHdCUEFFOEFUd0JQQUZBQVVBQlFBRkFBVHdCUEFFOEFUd0JQQUU4QVR3QlBBRThBVHdCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFBZUFCNEFVQUJRQUZBQVVBQlBBQjRBSGdBckFDc0FLd0FyQUIwQUhRQWRBQjBBSFFBZEFCMEFIUUFkQUIwQUhnQWVBQjRBSGdBZUFCNEFIZ0FlQUI0QUhnQWVBQjRBSGdBZUFCNEFIZ0FlQUI0QUhnQWVBQjBBSGdBZEFCNEFIZ0FlQUI0QUhnQWVBQjRBSGdBZUFCNEFIZ0FkQUI0QUhRQWRBQjRBSGdBZUFCMEFIUUFlQUI0QUhRQWVBQjRBSGdBZEFCNEFIUUFiQUJzQUhnQWRBQjRBSGdBZUFCNEFIUUFlQUI0QUhRQWRBQjBBSFFBZUFCNEFIUUFlQUIwQUhnQWRBQjBBSFFBZEFCMEFIUUFlQUIwQUhnQWVBQjRBSGdBZUFCMEFIUUFkQUIwQUhnQWVBQjRBSGdBZEFCMEFIZ0FlQUI0QUhnQWVBQjRBSGdBZUFCNEFIZ0FkQUI0QUhnQWVBQjBBSGdBZUFCNEFIZ0FlQUIwQUhnQWVBQjRBSGdBZUFCNEFIZ0FlQUI0QUhnQWVBQjRBSGdBZEFCMEFIZ0FlQUIwQUhRQWRBQjBBSGdBZUFCMEFIUUFlQUI0QUhRQWRBQjRBSGdBZUFCNEFIZ0FlQUI0QUhnQWVBQjRBSGdBZUFCNEFIZ0FlQUI0QUhnQWVBQjBBSFFBZUFCNEFIUUFkQUI0QUhnQWVBQjRBSGdBZUFCNEFIZ0FlQUI0QUhnQWVBQjRBSFFBZUFCNEFIZ0FkQUI0QUhnQWVBQjRBSGdBZUFCNEFIUUFlQUI0QUhnQWVBQjRBSGdBZUFCNEFIZ0FlQUI0QUhnQWVBQjRBSGdBZUFCNEFIZ0FlQUI0QUhnQWVBQjRBSGdBZUFCMEFIZ0FlQUI0QUhnQWVBQjRBSGdBZUFCNEFIZ0FlQUI0QUhnQWVBQjRBRkFBZUFCNEFIZ0FlQUI0QUhnQWVBQjRBSGdBZUFCNEFIZ0FlQUI0QUhnQWVBQllBRVFBV0FCRUFIZ0FlQUI0QUhnQWVBQjRBSFFBZUFCNEFIZ0FlQUI0QUhnQWVBQ1VBSlFBZUFCNEFIZ0FlQUI0QUhnQWVBQjRBSGdBV0FCRUFIZ0FlQUI0QUhnQWVBQjRBSGdBZUFCNEFIZ0FlQUI0QUhnQWVBQjRBSGdBZUFCNEFIZ0FlQUI0QUpRQWxBQ1VBSlFBZUFCNEFIZ0FlQUI0QUhnQWVBQjRBSGdBZUFCNEFIZ0FlQUI0QUhnQXJBQ3NBS3dBckFDc0FLd0FyQUNzQUt3QXJBQ3NBS3dBckFDc0FLd0FyQUNzQUt3QXJBQ3NBS3dBckFDc0FLd0FyQUU4QVR3QlBBRThBVHdCUEFFOEFUd0JQQUU4QVR3QlBBRThBVHdCUEFFOEFUd0JQQUU4QVR3QlBBRThBVHdCUEFFOEFUd0JQQUU4QVR3QlBBRThBVHdBZEFCMEFIUUFkQUIwQUhRQWRBQjBBSFFBZEFCMEFIUUFkQUIwQUhRQWRBQjBBSFFBZEFCMEFIUUFkQUIwQUhRQWRBQjBBSFFBZEFCMEFIUUFkQUIwQUhRQWRBRThBVHdCUEFFOEFUd0JQQUU4QVR3QlBBRThBVHdCUEFFOEFUd0JQQUU4QVR3QlBBRThBVHdCUEFGQUFIUUFkQUIwQUhRQWRBQjBBSFFBZEFCMEFIUUFkQUIwQUhnQWVBQjRBSGdBZEFCMEFIUUFkQUIwQUhRQWRBQjBBSFFBZEFCMEFIUUFkQUIwQUhRQWRBQjBBSFFBZEFCMEFIUUFlQUI0QUhnQWVBQjRBSGdBZUFCNEFIZ0FlQUI0QUhRQWRBQjBBSFFBZEFCMEFIUUFkQUIwQUhRQWRBQjBBSFFBZEFCMEFIUUFlQUI0QUhRQWRBQjBBSFFBZUFCNEFIZ0FlQUI0QUhnQWVBQjRBSGdBZUFCMEFIUUFlQUIwQUhRQWRBQjBBSFFBZEFCMEFIZ0FlQUI0QUhnQWVBQjRBSGdBZUFCMEFIUUFlQUI0QUhRQWRBQjRBSGdBZUFCNEFIUUFkQUI0QUhnQWVBQjRBSFFBZEFCMEFIZ0FlQUIwQUhnQWVBQjBBSFFBZEFCMEFIZ0FlQUI0QUhnQWVBQjRBSGdBZUFCNEFIZ0FlQUI0QUhnQWVBQjRBSGdBZEFCMEFIUUFkQUI0QUhnQWVBQjRBSGdBZUFCNEFIZ0FlQUIwQUhnQWVBQjRBSGdBZUFCNEFIZ0FlQUI0QUhnQWVBQjRBSGdBZUFCNEFIZ0FsQUNVQUpRQWxBQjRBSFFBZEFCNEFIZ0FkQUI0QUhnQWVBQjRBSFFBZEFCNEFIZ0FlQUI0QUpRQWxBQjBBSFFBbEFCNEFKUUFsQUNVQUlBQWxBQ1VBSGdBZUFCNEFIZ0FlQUI0QUhnQWVBQjRBSGdBZUFCNEFIZ0FlQUI0QUhnQWVBQjRBSGdBZUFCNEFIZ0FlQUI0QUhnQWxBQ1VBSlFBZUFCNEFIZ0FlQUIwQUhnQWRBQjRBSGdBZUFCNEFIZ0FlQUI0QUhnQWVBQjRBSGdBZUFCNEFIZ0FlQUI0QUhnQWVBQjRBSGdBZUFCNEFIZ0FlQUI0QUhnQWVBQjRBSGdBZEFCMEFIZ0FkQUIwQUhRQWVBQjBBSlFBZEFCMEFIZ0FkQUIwQUhnQWRBQjRBSGdBZUFCNEFIZ0FlQUI0QUhnQWVBQjRBSGdBZUFCNEFIZ0FlQUNVQUhnQWVBQjRBSGdBZUFCNEFIZ0FlQUI0QUhnQWVBQjRBSGdBZUFCNEFIZ0FlQUI0QUhnQWVBQjRBSGdBZUFCNEFIZ0FlQUI0QUhnQWVBQjRBSFFBZEFCNEFIZ0FlQUI0QUhnQWVBQjRBSGdBZUFCNEFIZ0FlQUI0QUhnQWVBQjRBSGdBZUFCNEFIZ0FlQUI0QUhnQWVBQjRBSGdBZUFCNEFIZ0FsQUNVQUpRQWxBQ1VBSlFBbEFDVUFKUUFsQUNVQUpRQWRBQjBBSFFBZEFDVUFIZ0FsQUNVQUpRQWRBQ1VBSlFBZEFCMEFIUUFsQUNVQUhRQWRBQ1VBSFFBZEFDVUFKUUFsQUI0QUhRQWVBQjRBSGdBZUFCMEFIUUFsQUIwQUhRQWRBQjBBSFFBZEFDVUFKUUFsQUNVQUpRQWRBQ1VBSlFBZ0FDVUFIUUFkQUNVQUpRQWxBQ1VBSlFBbEFDVUFKUUFlQUI0QUhnQWxBQ1VBSUFBZ0FDQUFJQUFlQUI0QUhnQWVBQjRBSGdBZUFCNEFIZ0FlQUI0QUhnQWVBQjRBSGdBZUFCNEFIZ0FlQUI0QUhnQWVBQjRBSGdBZUFCMEFIZ0FlQUI0QUZ3QVhBQmNBRndBWEFCY0FIZ0FUQUJNQUpRQWVBQjRBSGdBV0FCRUFGZ0FSQUJZQUVRQVdBQkVBRmdBUkFCWUFFUUFXQUJFQVR3QlBBRThBVHdCUEFFOEFUd0JQQUU4QVR3QlBBRThBVHdCUEFFOEFUd0JQQUU4QVR3QlBBRThBVHdBZUFCNEFIZ0FlQUI0QUhnQWVBQjRBSGdBZUFCNEFIZ0FlQUJZQUVRQWVBQjRBSGdBZUFCNEFIZ0FlQUI0QUhnQWVBQjRBSGdBZUFCNEFIZ0FlQUI0QUhnQWVBQjRBSGdBZUFCNEFIZ0FlQUI0QUhnQVdBQkVBRmdBUkFCWUFFUUFXQUJFQUZnQVJBQjRBSGdBZUFCNEFIZ0FlQUI0QUhnQWVBQjRBSGdBZUFCNEFIZ0FlQUI0QUhnQWVBQjRBRmdBUkFCWUFFUUFXQUJFQUZnQVJBQllBRVFBV0FCRUFGZ0FSQUJZQUVRQVdBQkVBRmdBUkFCWUFFUUFlQUI0QUhnQWVBQjRBSGdBZUFCNEFIZ0FlQUI0QUhnQWVBQjRBSGdBZUFCNEFIZ0FlQUI0QUhnQWVBQjRBSGdBZUFCNEFIZ0FXQUJFQUZnQVJBQjRBSGdBZUFCNEFIZ0FlQUI0QUhnQWVBQjRBSGdBZUFCNEFIZ0FlQUI0QUhnQWVBQjRBSGdBZUFCNEFIZ0FlQUI0QUhnQWVBQjRBRmdBUkFCNEFIZ0FlQUI0QUhnQWVBQjRBSGdBZUFCNEFIZ0FlQUI0QUhnQWVBQjRBSGdBZUFCNEFIZ0FlQUI0QUhnQWRBQjBBSFFBZEFCMEFIZ0FlQUI0QUhnQWVBQjRBSGdBZUFCNEFIZ0FlQUI0QUhnQWVBQjRBSGdBZUFCNEFIZ0FlQUI0QUhnQXJBQ3NBSGdBZUFCNEFIZ0FlQUI0QUhnQWVBQjRBSGdBZUFCNEFIZ0FlQUI0QUhnQWVBQjRBSGdBZUFCNEFIZ0FlQUI0QUt3QWVBQjRBSGdBZUFCNEFIZ0FlQUI0QUhnQWVBQjRBSGdBZUFCNEFIZ0FlQUI0QUhnQWVBQjRBSGdBZUFCNEFIZ0FlQUI0QUhnQWVBQjRBVUFCUUFGQUFVQUFlQUI0QUhnQWVBQjRBSGdBZUFCNEFIZ0FlQUI0QUhnQWVBQjRBSGdBRUFBUUFCQUFlQUI0QUt3QXJBQ3NBS3dBckFCTUFEUUFOQUEwQVVBQVRBQTBBVUFCUUFGQUFVQUJRQUZBQVVBQlFBQ3NBS3dBckFDc0FLd0FyQUNzQVVBQU5BQ3NBS3dBckFDc0FLd0FyQUNzQUt3QXJBQ3NBS3dBckFDc0FLd0FFQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFBckFDc0FLd0FyQUNzQUt3QXJBQ3NBS3dCUUFGQUFVQUJRQUZBQVVBQlFBQ3NBVUFCUUFGQUFVQUJRQUZBQVVBQXJBRkFBVUFCUUFGQUFVQUJRQUZBQUt3QlFBRkFBVUFCUUFGQUFVQUJRQUNzQUZ3QVhBQmNBRndBWEFCY0FGd0FYQUJjQUZ3QVhBQmNBRndBWEFBMEFEUUFOQUEwQURRQU5BQTBBRFFBZUFBMEFGZ0FOQUI0QUhnQVhBQmNBSGdBZUFCY0FGd0FXQUJFQUZnQVJBQllBRVFBV0FCRUFEUUFOQUEwQURRQVRBRkFBRFFBTkFCNEFEUUFOQUI0QUhnQWVBQjRBSGdBTUFBd0FEUUFOQUEwQUhnQU5BQTBBRmdBTkFBMEFEUUFOQUEwQURRQU5BQTBBSGdBTkFCNEFEUUFOQUI0QUhnQWVBQ3NBS3dBckFDc0FLd0FyQUNzQUt3QXJBQ3NBS3dBckFDc0FKUUFsQUNVQUpRQWxBQ1VBSlFBbEFDVUFKUUFsQUNVQUpRQWxBQ1VBSlFBbEFDVUFKUUFsQUNVQUpRQWxBQ1VBSlFBbEFDc0FKUUFsQUNVQUpRQWxBQ1VBSlFBbEFDVUFKUUFsQUNVQUpRQWxBQ1VBSlFBbEFDVUFKUUFsQUNVQUpRQWxBQ1VBSlFBbEFDVUFKUUFsQUNVQUpRQWxBQ1VBS3dBckFDc0FLd0FyQUNzQUt3QXJBQ3NBS3dBckFDc0FKUUFsQUNVQUpRQWxBQ1VBSlFBbEFDVUFKUUFsQUNVQUpRQWxBQ1VBSlFBbEFDVUFKUUFsQUNVQUpRQXJBQ3NBS3dBckFDc0FLd0FyQUNzQUt3QXJBQ3NBS3dBckFDc0FLd0FyQUNzQUt3QWxBQ1VBSlFBbEFDVUFKUUFsQUNVQUpRQWxBQ1VBSlFBckFDc0FLd0FyQUEwQUVRQVJBQ1VBSlFCSEFGY0FWd0FXQUJFQUZnQVJBQllBRVFBV0FCRUFGZ0FSQUNVQUpRQVdBQkVBRmdBUkFCWUFFUUFXQUJFQUZRQVdBQkVBRVFBbEFGY0FWd0JYQUZjQVZ3QlhBRmNBVndCWEFBUUFCQUFFQUFRQUJBQUVBQ1VBVndCWEFGY0FWd0EyQUNVQUpRQlhBRmNBVndCSEFFY0FKUUFsQUNVQUt3QlJBRmNBVVFCWEFGRUFWd0JSQUZjQVVRQlhBRmNBVndCWEFGY0FWd0JYQUZjQVZ3QlhBRmNBVndCWEFGY0FWd0JYQUZjQVZ3QlhBRmNBVndCWEFGY0FWd0JYQUZFQVZ3QlhBRmNBVndCWEFGY0FWd0JYQUZjQVZ3QlhBRmNBVndCWEFGY0FWd0JYQUZjQVZ3QlhBRmNBVndCWEFGY0FWd0JYQUZjQVZ3QlhBRmNBVndCUkFGY0FVUUJYQUZFQVZ3QlhBRmNBVndCWEFGY0FVUUJYQUZjQVZ3QlhBRmNBVndCUkFGRUFLd0FyQUFRQUJBQVZBQlVBUndCSEFGY0FGUUJSQUZjQVVRQlhBRkVBVndCUkFGY0FVUUJYQUZjQVZ3QlhBRmNBVndCWEFGY0FWd0JYQUZjQVZ3QlhBRmNBVndCWEFGY0FWd0JYQUZjQVZ3QlhBRmNBVndCWEFGRUFWd0JSQUZjQVVRQlhBRmNBVndCWEFGY0FWd0JSQUZjQVZ3QlhBRmNBVndCWEFGRUFVUUJYQUZjQVZ3QlhBQlVBVVFCSEFFY0FWd0FyQUNzQUt3QXJBQ3NBVndCWEFGY0FWd0JYQUZjQVZ3QlhBRmNBVndCWEFGY0FWd0JYQUZjQVZ3QlhBRmNBVndCWEFGY0FWd0JYQUZjQVZ3QlhBRmNBS3dCWEFGY0FWd0JYQUZjQVZ3QlhBRmNBVndCWEFGY0FWd0JYQUZjQVZ3QlhBRmNBVndCWEFGY0FWd0JYQUZjQVZ3QlhBRmNBVndCWEFGY0FWd0JYQUZjQVZ3QlhBRmNBVndCWEFGY0FLd0FsQUNVQVZ3QlhBRmNBVndBbEFDVUFKUUFsQUNVQUpRQWxBQ1VBSlFBbEFDc0FLd0FyQUNzQUt3QXJBQ3NBS3dBckFDc0FLd0FyQUZFQVVRQlJBRkVBVVFCUkFGRUFVUUJSQUZFQVVRQlJBRkVBVVFCUkFGRUFKUUFsQUNVQUpRQWxBQ1VBSlFBbEFDVUFKUUFsQUNVQUpRQWxBQ1VBSlFBbEFDVUFKUUFsQUNVQUpRQWxBQ1VBSlFBbEFDVUFKUUFsQUNVQUpRQXJBRmNBVndCWEFGY0FWd0JYQUZjQVZ3QlhBRmNBSlFBbEFDVUFKUUFsQUNVQUpRQWxBQ1VBSlFBbEFDVUFKUUFsQUNVQUpRQWxBQ1VBSlFBbEFDVUFKUUJQQUU4QVR3QlBBRThBVHdCUEFFOEFKUUJYQUZjQVZ3QlhBRmNBVndCWEFGY0FWd0JYQUZjQVZ3QlhBRmNBVndBbEFDVUFKUUFsQUNVQUpRQWxBQ1VBSlFBbEFDVUFKUUFsQUNVQUpRQWxBQ1VBVndCWEFGY0FWd0JYQUZjQVZ3QlhBRmNBVndCWEFGY0FWd0JYQUZjQVZ3QlhBRmNBVndCWEFGY0FWd0JYQUZjQVZ3QlhBRmNBVndCWEFGY0FWd0JYQUNVQUpRQWxBRmNBVndCWEFGY0FWd0JYQUZjQVZ3QlhBRmNBVndCWEFGY0FWd0JYQUZjQVZ3QlhBRmNBVndCWEFFY0FWd0JYQUZjQVZ3QlhBRmNBVndCWEFGY0FWd0JYQUZjQVZ3QlhBRmNBS3dBckFDc0FKUUFsQUNVQUpRQWxBQ1VBSlFBbEFDVUFKUUFsQUNVQUpRQWxBQ1VBSlFBbEFDVUFKUUFyQUNzQUt3QXJBQ3NBS3dBckFDc0FLd0JRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFEUUFUQUEwQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJMQUVzQVN3QkxBRXNBU3dCTEFFc0FTd0JMQUZBQVVBQXJBQ3NBS3dBckFDc0FLd0FyQUNzQUt3QXJBQ3NBS3dBckFDc0FLd0FyQUNzQUt3QXJBQ3NBSGdBZUFCNEFIZ0FlQUI0QUhnQWVBQjRBSGdBZUFCNEFIZ0FlQUZBQUJBQUVBQVFBQkFBZUFBUUFCQUFFQUFRQUJBQUVBQVFBQkFBRUFBUUFIZ0JRQUI0QUhnQWVBQjRBSGdBZUFCNEFIZ0FlQUI0QUhnQWVBQjRBSGdBZUFCNEFIZ0FlQUI0QUhnQWVBQjRBSGdBZUFCNEFIZ0FlQUI0QVVBQlFBQVFBQkFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBQVFBQkFBZUFBMEFEUUFOQUEwQURRQXJBQ3NBS3dBckFDc0FLd0FyQUNzQUhnQWVBQjRBSGdBZUFCNEFIZ0FlQUI0QUhnQWVBQjRBSGdBZUFCNEFIZ0FlQUI0QUhnQWVBQjRBSGdBZUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFCNEFIZ0FlQUI0QUhnQWVBQjRBSGdBZUFCNEFIZ0FlQUI0QUhnQWVBQjRBVUFBZUFCNEFIZ0FlQUI0QUhnQWVBQjRBSGdBZUFCNEFIZ0FlQUI0QUhnQlFBQjRBSGdBZUFCNEFIZ0FlQUZBQUhnQWVBQjRBSGdBZUFCNEFIZ0FlQUI0QUhnQWVBQjRBSGdBZUFCNEFIZ0FyQUNzQUhnQWVBQjRBSGdBZUFCNEFIZ0FlQUI0QUt3QXJBQ3NBS3dBckFDc0FLd0FyQUNzQUt3QXJBQ3NBS3dBckFDc0FLd0FyQUNzQUt3QXJBQ3NBS3dBZUFCNEFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUFRQVVBQlFBRkFBQkFCUUFGQUFVQUJRQUFRQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFBUUFCQUFFQUFRQUJBQWVBQjRBSGdBZUFBUUFLd0FyQUNzQVVBQlFBRkFBVUFCUUFGQUFIZ0FlQUJvQUhnQXJBQ3NBS3dBckFDc0FLd0JRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQURnQU9BQk1BRXdBckFDc0FLd0FyQUNzQUt3QXJBQ3NBQkFBRUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUFRQUJBQUVBQVFBQkFBRUFDc0FLd0FyQUNzQUt3QXJBQ3NBS3dBTkFBMEFTd0JMQUVzQVN3QkxBRXNBU3dCTEFFc0FTd0FyQUNzQUt3QXJBQ3NBS3dBRUFBUUFCQUFFQUFRQUJBQUVBQVFBQkFBRUFBUUFCQUFFQUFRQUJBQUVBQVFBQkFCUUFGQUFVQUJRQUZBQVVBQWVBQjRBSGdCUUFBNEFVQUJRQUFRQVVBQlFBRkFBVUFCUUFGQUFCQUFFQUFRQUJBQUVBQVFBQkFBRUFBMEFEUUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUFRQUJBQUVBQVFBQkFBRUFBUUFCQUFFQUFRQUJBQUVBQVFBS3dBckFDc0FLd0FyQUNzQUt3QXJBQ3NBS3dBckFCNEFXQUJZQUZnQVdBQllBRmdBV0FCWUFGZ0FXQUJZQUZnQVdBQllBRmdBV0FCWUFGZ0FXQUJZQUZnQVdBQllBRmdBV0FCWUFGZ0FXQUJZQUNzQUt3QXJBQVFBSGdBZUFCNEFIZ0FlQUI0QURRQU5BQTBBSGdBZUFCNEFIZ0FyQUZBQVN3QkxBRXNBU3dCTEFFc0FTd0JMQUVzQVN3QXJBQ3NBS3dBckFCNEFIZ0JjQUZ3QVhBQmNBRndBS2dCY0FGd0FYQUJjQUZ3QVhBQmNBRndBWEFCY0FFc0FTd0JMQUVzQVN3QkxBRXNBU3dCTEFFc0FYQUJjQUZ3QVhBQmNBQ3NBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBQkFBRUFBUUFCQUFFQUFRQUJBQUVBQVFBQkFBRUFBUUFCQUFFQUNzQUt3QXJBQ3NBS3dBckFDc0FLd0FyQUZBQVVBQlFBQVFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBQVFBQkFBckFDc0FTd0JMQUVzQVN3QkxBRXNBU3dCTEFFc0FTd0FyQUNzQUhnQU5BQTBBRFFCY0FGd0FYQUJjQUZ3QVhBQmNBRndBWEFCY0FGd0FYQUJjQUZ3QVhBQmNBRndBWEFCY0FGd0FYQUJjQUZ3QUtnQXFBQ29BWEFBcUFDb0FLZ0JjQUZ3QVhBQmNBRndBWEFCY0FGd0FYQUJjQUZ3QVhBQmNBRndBWEFCY0FGd0FYQUFxQUZ3QUtnQXFBQ29BWEFCY0FDb0FLZ0JjQUZ3QVhBQmNBRndBS2dBcUFGd0FLZ0JjQUNzQUt3QXJBQ3NBS3dBckFDc0FLd0FyQUNzQUt3QXJBQ3NBS3dBckFDc0FLd0FyQUNzQUt3QXJBQ3NBS3dBckFGd0FYQUJjQUNvQUtnQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBQkFBRUFBUUFCQUFFQUEwQURRQlFBRkFBVUFBRUFBUUFLd0FyQUNzQUt3QXJBQ3NBS3dBckFDc0FLd0JRQUZBQVVBQlFBRkFBVUFBckFDc0FVQUJRQUZBQVVBQlFBRkFBS3dBckFGQUFVQUJRQUZBQVVBQlFBQ3NBS3dBckFDc0FLd0FyQUNzQUt3QXJBRkFBVUFCUUFGQUFVQUJRQUZBQUt3QlFBRkFBVUFCUUFGQUFVQUJRQUNzQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQUhnQWVBQ3NBS3dBckFDc0FVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUFFQUFRQUJBQUVBQVFBQkFBRUFBUUFEUUFFQUFRQUt3QXJBRXNBU3dCTEFFc0FTd0JMQUVzQVN3QkxBRXNBS3dBckFDc0FLd0FyQUNzQVZBQlZBRlVBVlFCVkFGVUFWUUJWQUZVQVZRQlZBRlVBVlFCVkFGVUFWUUJWQUZVQVZRQlZBRlVBVlFCVkFGVUFWUUJWQUZVQVZRQlVBRlVBVlFCVkFGVUFWUUJWQUZVQVZRQlZBRlVBVlFCVkFGVUFWUUJWQUZVQVZRQlZBRlVBVlFCVkFGVUFWUUJWQUZVQVZRQlZBQ3NBS3dBckFDc0FLd0FyQUNzQUt3QXJBQ3NBS3dBckFGa0FXUUJaQUZrQVdRQlpBRmtBV1FCWkFGa0FXUUJaQUZrQVdRQlpBRmtBV1FCWkFGa0FLd0FyQUNzQUt3QmFBRm9BV2dCYUFGb0FXZ0JhQUZvQVdnQmFBRm9BV2dCYUFGb0FXZ0JhQUZvQVdnQmFBRm9BV2dCYUFGb0FXZ0JhQUZvQVdnQmFBRm9BS3dBckFDc0FLd0FHQUFZQUJnQUdBQVlBQmdBR0FBWUFCZ0FHQUFZQUJnQUdBQVlBQmdBR0FBWUFCZ0FHQUFZQUJnQUdBQVlBQmdBR0FBWUFCZ0FHQUFZQUJnQUdBQVlBVndCWEFGY0FWd0JYQUZjQVZ3QlhBRmNBVndCWEFGY0FWd0JYQUNVQUpRQlhBRmNBVndCWEFGY0FWd0JYQUZjQVZ3QlhBRmNBVndCWEFGY0FWd0JYQUZjQVZ3QlhBRmNBVndCWEFGY0FWd0JYQUZjQUpRQWxBQ1VBSlFBbEFDVUFVQUJRQUZBQVVBQlFBRkFBVUFBckFDc0FLd0FyQUNzQUt3QXJBQ3NBS3dBckFDc0FLd0JRQUZBQVVBQlFBRkFBS3dBckFDc0FLd0FyQUZZQUJBQldBRllBVmdCV0FGWUFWZ0JXQUZZQVZnQldBQjRBVmdCV0FGWUFWZ0JXQUZZQVZnQldBRllBVmdCV0FGWUFWZ0FyQUZZQVZnQldBRllBVmdBckFGWUFLd0JXQUZZQUt3QldBRllBS3dCV0FGWUFWZ0JXQUZZQVZnQldBRllBVmdCV0FGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFCNEFIZ0FlQUI0QUhnQWVBQjRBSGdBZUFCNEFIZ0FlQUI0QUhnQWVBQjRBS3dBckFDc0FLd0FyQUNzQUt3QXJBQ3NBS3dBckFDc0FLd0FyQUNzQUt3QXJBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFFUUFXQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFLd0FyQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFBckFDc0FLd0FyQUNzQUt3QXJBQ3NBS3dBckFDc0FLd0FyQUNzQUt3QXJBQ3NBS3dBckFDc0FLd0FyQUNzQUt3QlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFBYUFCNEFLd0FyQUFRQUJBQUVBQVFBQkFBRUFBUUFCQUFFQUFRQUJBQUVBQVFBQkFBRUFBUUFHQUFSQUJFQUdBQVlBQk1BRXdBV0FCRUFGQUFyQUNzQUt3QXJBQ3NBS3dBRUFBUUFCQUFFQUFRQUJBQUVBQVFBQkFBRUFBUUFCQUFFQUFRQUJBQUVBQ1VBSlFBbEFDVUFKUUFXQUJFQUZnQVJBQllBRVFBV0FCRUFGZ0FSQUJZQUVRQWxBQ1VBRmdBUkFDVUFKUUFsQUNVQUpRQWxBQ1VBRVFBbEFCRUFLd0FWQUJVQUV3QVRBQ1VBRmdBUkFCWUFFUUFXQUJFQUpRQWxBQ1VBSlFBbEFDVUFKUUFsQUNzQUpRQWJBQm9BSlFBckFDc0FLd0FyQUZBQVVBQlFBRkFBVUFBckFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQUt3QXJBQWNBS3dBVEFDVUFKUUFiQUJvQUpRQWxBQllBRVFBbEFDVUFFUUFsQUJFQUpRQlhBRmNBVndCWEFGY0FWd0JYQUZjQVZ3QlhBQlVBRlFBbEFDVUFKUUFUQUNVQVZ3QlhBRmNBVndCWEFGY0FWd0JYQUZjQVZ3QlhBRmNBVndCWEFGY0FWd0JYQUZjQVZ3QlhBRmNBVndCWEFGY0FWd0JYQUJZQUpRQVJBQ1VBSlFBbEFGY0FWd0JYQUZjQVZ3QlhBRmNBVndCWEFGY0FWd0JYQUZjQVZ3QlhBRmNBVndCWEFGY0FWd0JYQUZjQVZ3QlhBRmNBVndBV0FDVUFFUUFsQUJZQUVRQVJBQllBRVFBUkFCVUFWd0JSQUZFQVVRQlJBRkVBVVFCUkFGRUFVUUJSQUZjQVZ3QlhBRmNBVndCWEFGY0FWd0JYQUZjQVZ3QlhBRmNBVndCWEFGY0FWd0JYQUZjQVZ3QlhBRmNBVndCWEFGY0FWd0JYQUZjQVZ3QlhBRmNBVndCWEFFY0FSd0FyQUNzQVZ3QlhBRmNBVndCWEFGY0FLd0FyQUZjQVZ3QlhBRmNBVndCWEFDc0FLd0JYQUZjQVZ3QlhBRmNBVndBckFDc0FWd0JYQUZjQUt3QXJBQ3NBR2dBYkFDVUFKUUFsQUJzQUd3QXJBQjRBSGdBZUFCNEFIZ0FlQUI0QUt3QXJBQ3NBS3dBckFDc0FLd0FyQUNzQUt3QUVBQVFBQkFBUUFCMEFLd0FyQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBQ3NBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUFyQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQUt3QlFBRkFBS3dCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQXJBQ3NBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUNzQUt3QlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQXJBQ3NBS3dBckFDc0FEUUFOQUEwQUt3QXJBQ3NBS3dCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBQ3NBS3dBckFCNEFIZ0FlQUI0QUhnQWVBQjRBSGdBZUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBSGdBZUFCNEFIZ0FlQUI0QUhnQWVBQjRBSGdBZUFCNEFIZ0JRQUZBQUhnQWVBQjRBS3dBZUFCNEFIZ0FlQUI0QUhnQWVBQjRBSGdBZUFCNEFIZ0FlQUNzQUt3QXJBQ3NBS3dBckFDc0FLd0FyQUNzQUt3QXJBQ3NBS3dBckFDc0FLd0FyQUNzQUt3QXJBQ3NBS3dBckFDc0FLd0FyQUNzQUt3QXJBQ3NBSGdBZUFCNEFIZ0FlQUI0QUhnQWVBQjRBSGdBZUFCNEFIZ0FlQUI0QUhnQWVBQjRBSGdBZUFCNEFIZ0FlQUI0QUhnQWVBQjRBSGdBZUFBUUFLd0FyQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQXJBQ3NBS3dBckFDc0FLd0FyQUNzQUt3QXJBQ3NBS3dBckFDc0FLd0FFQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUNzQUt3QXJBQ3NBS3dBckFDc0FLd0FyQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBS3dBckFDc0FLd0FyQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBQkFBRUFBUUFCQUFFQUNzQUt3QXJBQ3NBS3dCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUFyQUEwQVVBQlFBRkFBVUFBckFDc0FLd0FyQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUFOQUZBQVVBQlFBRkFBVUFBckFDc0FLd0FyQUNzQUt3QXJBQ3NBS3dBckFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUNzQUt3QlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBS3dBckFDc0FLd0JRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUNzQUt3QXJBQ3NBS3dBckFDc0FLd0JRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFDc0FLd0FyQUNzQUt3QXJBQ3NBS3dBckFDc0FLd0FlQUNzQUt3QXJBQ3NBS3dBckFDc0FLd0FyQUNzQUt3QXJBQ3NBS3dBckFDc0FVQUJRQUZBQVVBQlFBRkFBS3dBckFGQUFLd0JRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFBckFGQUFVQUFyQUNzQUt3QlFBQ3NBS3dCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQUt3QU5BRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUFlQUI0QVVBQlFBRkFBVUFCUUFGQUFVQUFyQUNzQUt3QXJBQ3NBS3dBckFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFDc0FLd0FyQUNzQUt3QXJBQ3NBS3dBckFDc0FLd0FyQUNzQUt3QXJBQ3NBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFBckFGQUFVQUFyQUNzQUt3QXJBQ3NBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFDc0FLd0FyQUEwQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUNzQUt3QXJBQ3NBS3dBZUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBQ3NBS3dBckFDc0FVQUJRQUZBQVVBQlFBQVFBQkFBRUFDc0FCQUFFQUNzQUt3QXJBQ3NBS3dBRUFBUUFCQUFFQUZBQVVBQlFBRkFBS3dCUUFGQUFVQUFyQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFLd0FyQUFRQUJBQUVBQ3NBS3dBckFDc0FCQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUFyQUNzQUt3QXJBQ3NBS3dBckFBMEFEUUFOQUEwQURRQU5BQTBBRFFBZUFDc0FLd0FyQUNzQUt3QXJBQ3NBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUFlQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUFlQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFBUUFCQUFyQUNzQUt3QXJBRkFBVUFCUUFGQUFVQUFOQUEwQURRQU5BQTBBRFFBVUFDc0FLd0FyQUNzQUt3QXJBQ3NBS3dBckFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQUt3QXJBQ3NBRFFBTkFBMEFEUUFOQUEwQURRQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQXJBQ3NBS3dBckFDc0FLd0FyQUI0QUhnQWVBQjRBS3dBckFDc0FLd0FyQUNzQUt3QXJBQ3NBS3dBckFDc0FVQUJRQUZBQVVBQlFBRkFBVUFBckFDc0FLd0FyQUNzQUt3QXJBQ3NBS3dBckFDc0FLd0FyQUNzQUt3QXJBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBQ3NBS3dBckFDc0FLd0FyQUNzQUt3QXJBQ3NBS3dBckFDc0FLd0FyQUNzQUt3QXJBQ3NBS3dBckFDc0FLd0JRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUNzQUt3QXJBQ3NBS3dBckFDc0FLd0FyQUNzQUt3QXJBQ3NBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFBckFDc0FLd0FyQUNzQUt3QXJBRkFBVUFCUUFGQUFVQUJRQUFRQUJBQUVBQVFBS3dBckFDc0FLd0FyQUNzQUt3QXJBRXNBU3dCTEFFc0FTd0JMQUVzQVN3QkxBRXNBS3dBckFDc0FLd0FyQUNzQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQXJBQVFBQkFBTkFDc0FLd0JRQUZBQUt3QXJBQ3NBS3dBckFDc0FLd0FyQUNzQUt3QXJBQ3NBS3dBckFGQUFVQUJRQUZBQVVBQlFBQVFBQkFBRUFBUUFCQUFFQUFRQUJBQUVBQVFBQkFCUUFGQUFVQUJRQUI0QUhnQWVBQjRBSGdBckFDc0FLd0FyQUNzQUt3QUVBQVFBQkFBRUFBUUFCQUFFQUEwQURRQWVBQjRBSGdBZUFCNEFLd0FyQUNzQUt3QlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUVzQVN3QkxBRXNBU3dCTEFFc0FTd0JMQUVzQUt3QXJBQ3NBS3dBckFDc0FLd0FyQUNzQUt3QXJBQ3NBS3dBckFDc0FCQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFBUUFCQUFFQUFRQUJBQUVBQVFBQkFBRUFBUUFCQUFlQUI0QUhnQU5BQTBBRFFBTkFDc0FLd0FyQUNzQUt3QXJBQ3NBS3dBckFDc0FLd0FlQUNzQUt3QlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQUt3QXJBQ3NBS3dBckFDc0FLd0JMQUVzQVN3QkxBRXNBU3dCTEFFc0FTd0JMQUNzQUt3QXJBQ3NBS3dBckFGQUFVQUJRQUZBQVVBQlFBRkFBQkFBRUFBUUFCQUFFQUFRQUJBQUVBQVFBQkFBRUFBUUFCQUFFQUNzQVN3QkxBRXNBU3dCTEFFc0FTd0JMQUVzQVN3QU5BQTBBRFFBTkFGQUFCQUFFQUZBQUt3QXJBQ3NBS3dBckFDc0FLd0FyQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQUJBQWVBQTRBVUFBckFDc0FLd0FyQUNzQUt3QXJBQ3NBS3dBRUFGQUFVQUJRQUZBQURRQU5BQjRBRFFBRUFBUUFCQUFFQUI0QUJBQUVBRXNBU3dCTEFFc0FTd0JMQUVzQVN3QkxBRXNBVUFBT0FGQUFEUUFOQUEwQUt3QlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBS3dBckFDc0FLd0FyQUNzQUt3QXJBQ3NBS3dBckFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFDc0FVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQUVBQVFBQkFBRUFBUUFCQUFFQUFRQUJBQUVBQVFBQkFBTkFBMEFIZ0FOQUEwQUhnQUVBQ3NBVUFCUUFGQUFVQUJRQUZBQVVBQXJBRkFBS3dCUUFGQUFVQUJRQUNzQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFLd0JRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUEwQUt3QXJBQ3NBS3dBckFDc0FVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFBRUFBUUFCQUFFQUFRQUJBQUVBQVFBQkFBRUFBUUFLd0FyQUNzQUt3QXJBRXNBU3dCTEFFc0FTd0JMQUVzQVN3QkxBRXNBS3dBckFDc0FLd0FyQUNzQUJBQUVBQVFBQkFBckFGQUFVQUJRQUZBQVVBQlFBRkFBVUFBckFDc0FVQUJRQUNzQUt3QlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFLd0JRQUZBQVVBQlFBRkFBVUFCUUFDc0FVQUJRQUNzQVVBQlFBRkFBVUFCUUFDc0FCQUFFQUZBQUJBQUVBQVFBQkFBRUFBUUFCQUFyQUNzQUJBQUVBQ3NBS3dBRUFBUUFCQUFyQUNzQVVBQXJBQ3NBS3dBckFDc0FLd0FFQUNzQUt3QXJBQ3NBS3dCUUFGQUFVQUJRQUZBQUJBQUVBQ3NBS3dBRUFBUUFCQUFFQUFRQUJBQUVBQ3NBS3dBckFBUUFCQUFFQUFRQUJBQXJBQ3NBS3dBckFDc0FLd0FyQUNzQUt3QXJBQ3NBQkFBRUFBUUFCQUFFQUFRQUJBQlFBRkFBVUFCUUFBMEFEUUFOQUEwQUhnQkxBRXNBU3dCTEFFc0FTd0JMQUVzQVN3QkxBQTBBRFFBckFCNEFCQUJRQUZBQVVBQXJBQ3NBS3dBckFDc0FLd0FyQUNzQUt3QXJBQ3NBS3dBckFDc0FLd0FyQUNzQUt3QXJBQ3NBS3dBckFDc0FLd0FyQUNzQUt3QXJBQ3NBS3dBRUFBUUFCQUFFQUZBQVVBQWVBRkFBS3dBckFDc0FLd0FyQUNzQUt3QXJBRXNBU3dCTEFFc0FTd0JMQUVzQVN3QkxBRXNBS3dBckFDc0FLd0FyQUNzQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFCQUFFQUFRQUJBQUVBQVFBQkFBckFDc0FCQUFFQUFRQUJBQUVBQVFBQkFBRUFBUUFEZ0FOQUEwQUV3QVRBQjRBSGdBZUFBMEFEUUFOQUEwQURRQU5BQTBBRFFBTkFBMEFEUUFOQUEwQURRQU5BRkFBVUFCUUFGQUFCQUFFQUNzQUt3QUVBQTBBRFFBZUFGQUFLd0FyQUNzQUt3QXJBQ3NBS3dBckFDc0FLd0FyQUVzQVN3QkxBRXNBU3dCTEFFc0FTd0JMQUVzQUt3QXJBQ3NBS3dBckFDc0FEZ0FPQUE0QURnQU9BQTRBRGdBT0FBNEFEZ0FPQUE0QURnQXJBQ3NBS3dBckFDc0FLd0FyQUNzQUt3QXJBQ3NBS3dBckFDc0FLd0FyQUNzQUt3QXJBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFBRUFBUUFCQUFFQUFRQUJBQUVBQVFBQkFBRUFBUUFCQUFFQUZBQUt3QXJBQ3NBS3dBckFDc0FLd0JMQUVzQVN3QkxBRXNBU3dCTEFFc0FTd0JMQUNzQUt3QXJBQ3NBS3dBckFDc0FLd0FyQUNzQUt3QXJBQ3NBS3dBckFDc0FLd0FyQUNzQUt3QXJBQ3NBWEFCY0FGd0FYQUJjQUZ3QVhBQmNBRndBWEFCY0FGd0FYQUJjQUZ3QVhBQmNBRndBWEFCY0FGd0FYQUJjQUZ3QVhBQmNBRndBS3dBckFDb0FLZ0FxQUNvQUtnQXFBQ29BS2dBcUFDb0FLZ0FxQUNvQUtnQXFBQ3NBS3dBckFDc0FTd0JMQUVzQVN3QkxBRXNBU3dCTEFFc0FTd0JjQUZ3QURRQU5BQTBBS2dCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUFFQUFRQUJBQUVBQVFBQkFBRUFBUUFCQUFFQUFRQUJBQUVBQVFBQkFBZUFDc0FLd0FyQUNzQVN3QkxBRXNBU3dCTEFFc0FTd0JMQUVzQVN3QlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQXJBQ3NBS3dBckFDc0FLd0FyQUNzQUt3QXJBQ3NBS3dCUUFGQUFVQUJRQUZBQVVBQlFBRkFBS3dBckFGQUFLd0FyQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUFyQUZBQVVBQXJBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQUJBQUVBQVFBQkFBRUFBUUFLd0FFQUFRQUt3QXJBQVFBQkFBRUFBUUFVQUFFQUZBQUJBQUVBQTBBRFFBTkFDc0FLd0FyQUNzQUt3QXJBQ3NBS3dBckFFc0FTd0JMQUVzQVN3QkxBRXNBU3dCTEFFc0FLd0FyQUNzQUt3QXJBQ3NBVUFCUUFGQUFVQUJRQUZBQVVBQlFBQ3NBS3dCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQUJBQUVBQVFBQkFBRUFBUUFCQUFyQUNzQUJBQUVBQVFBQkFBRUFBUUFCQUJRQUE0QVVBQUVBQ3NBS3dBckFDc0FLd0FyQUNzQUt3QXJBQ3NBS3dBckFDc0FLd0FyQUNzQUt3QXJBQ3NBS3dBckFDc0FLd0FyQUNzQUt3QXJBRkFBQkFBRUFBUUFCQUFFQUFRQUJBQUVBQVFBQkFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQUVBQVFBQkFBRUFBUUFCQUFFQUZBQUJBQUVBQVFBQkFBT0FCNEFEUUFOQUEwQURRQU9BQjRBQkFBckFDc0FLd0FyQUNzQUt3QXJBQ3NBVUFBRUFBUUFCQUFFQUFRQUJBQUVBQVFBQkFBRUFBUUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUFFQUFRQUJBQUVBQVFBQkFBRUFBUUFCQUFFQUFRQUJBQUVBQVFBQkFBRUFBMEFEUUFOQUZBQURnQU9BQTRBRFFBTkFDc0FLd0FyQUNzQUt3QXJBQ3NBS3dBckFDc0FLd0FyQUNzQUt3QXJBQ3NBS3dBckFDc0FLd0FyQUNzQUt3QXJBQ3NBS3dBckFDc0FLd0JRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUFyQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFCQUFFQUFRQUJBQUVBQVFBQkFBRUFDc0FCQUFFQUFRQUJBQUVBQVFBQkFBRUFGQUFEUUFOQUEwQURRQU5BQ3NBS3dBckFDc0FLd0FyQUNzQUt3QXJBQ3NBU3dCTEFFc0FTd0JMQUVzQVN3QkxBRXNBU3dCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQXJBQ3NBS3dBT0FCTUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFLd0FyQUFRQUJBQUVBQVFBQkFBRUFBUUFCQUFFQUFRQUJBQUVBQVFBQkFBckFBUUFCQUFFQUFRQUJBQUVBQVFBQkFBRUFBUUFCQUFFQUFRQUJBQXJBQ3NBS3dBckFDc0FLd0FyQUNzQUt3QlFBRkFBVUFCUUFGQUFVQUJRQUNzQVVBQlFBQ3NBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUFFQUFRQUJBQUVBQVFBQkFBckFDc0FLd0FFQUNzQUJBQUVBQ3NBQkFBRUFBUUFCQUFFQUFRQUJBQlFBQVFBS3dBckFDc0FLd0FyQUNzQUt3QXJBRXNBU3dCTEFFc0FTd0JMQUVzQVN3QkxBRXNBS3dBckFDc0FLd0FyQUNzQVVBQlFBRkFBVUFCUUFGQUFLd0JRQUZBQUt3QlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUFFQUFRQUJBQUVBQVFBS3dBRUFBUUFLd0FFQUFRQUJBQUVBQVFBVUFBckFDc0FLd0FyQUNzQUt3QXJBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBQkFBRUFBUUFCQUFlQUI0QUt3QXJBQ3NBS3dBckFDc0FLd0FyQUNzQUt3QXJBQ3NBS3dBckFDc0FLd0FyQUNzQUt3QlFBQ3NBS3dBckFDc0FLd0FyQUNzQUt3QXJBQ3NBS3dBckFDc0FLd0FyQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBQjRBSGdBZUFCNEFIZ0FlQUI0QUhnQWFBQm9BR2dBYUFCNEFIZ0FlQUI0QUhnQWVBQjRBSGdBZUFCNEFIZ0FlQUI0QUhnQWVBQjRBSGdBckFDc0FLd0FyQUNzQUt3QXJBQ3NBS3dBckFDc0FLd0FyQUEwQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUNzQUt3QXJBQ3NBS3dBckFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBQ3NBRFFBTkFBMEFEUUFOQUNzQUt3QXJBQ3NBS3dBckFDc0FLd0FyQUNzQUt3QlFBRkFBVUFCUUFDc0FLd0FyQUNzQUt3QXJBQ3NBS3dBckFDc0FLd0FyQUNzQUt3QXJBQ3NBS3dBckFDc0FLd0FyQUNzQUt3QXJBQ3NBS3dBckFDc0FVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBU0FCSUFFZ0FRd0JEQUVNQVVBQlFBRkFBVUFCREFGQUFVQUJRQUVnQVF3QklBRU1BVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBU0FCREFFTUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBS3dBSkFBa0FDUUFKQUFrQUNRQUpBQllBRVFBckFDc0FLd0FyQUNzQUt3QXJBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJJQUVNQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQXJBQ3NBS3dBckFDc0FLd0FyQUNzQUt3QXJBQ3NBS3dBckFDc0FLd0FyQUNzQUt3QXJBQ3NBS3dBckFDc0FLd0FyQUVzQVN3QkxBRXNBU3dCTEFFc0FTd0JMQUVzQUt3QXJBQ3NBS3dBTkFBMEFLd0FyQUNzQUt3QXJBQ3NBS3dBckFDc0FLd0FyQUNzQUt3QXJBQ3NBS3dCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQUt3QXJBQVFBQkFBRUFBUUFCQUFOQUNzQUt3QXJBQ3NBS3dBckFDc0FLd0FyQUNzQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUFFQUFRQUJBQUVBQVFBQkFBRUFBMEFEUUFOQUI0QUhnQWVBQjRBSGdBZUFGQUFVQUJRQUZBQURRQWVBQ3NBS3dBckFDc0FLd0FyQUNzQUt3QXJBQ3NBU3dCTEFFc0FTd0JMQUVzQVN3QkxBRXNBU3dBckFGQUFVQUJRQUZBQVVBQlFBRkFBS3dCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUFyQUNzQUt3QXJBQ3NBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFBckFDc0FLd0FyQUNzQUt3QXJBQ3NBS3dBckFDc0FLd0FyQUNzQUt3QXJBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUFOQUEwQUhnQWVBQ3NBS3dBckFDc0FLd0JRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQUt3QXJBQ3NBS3dBRUFGQUFCQUFFQUFRQUJBQUVBQVFBQkFBRUFBUUFCQUFFQUFRQUJBQUVBQVFBS3dBckFDc0FLd0FyQUNzQUt3QUVBQVFBQkFBRUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVJ3QkhBQlVBUndBSkFDc0FLd0FyQUNzQUt3QXJBQ3NBS3dBckFDc0FLd0FFQUFRQUt3QXJBQ3NBS3dBckFDc0FLd0FyQUNzQUt3QXJBQ3NBS3dBckFGY0FWd0JYQUZjQVZ3QlhBRmNBVndCWEFGY0FWd0JYQUZjQVZ3QlhBRmNBVndCWEFGY0FWd0JYQUZjQVZ3QlhBQ3NBS3dBckFDc0FLd0FyQUNzQUt3QlhBRmNBVndCWEFGY0FWd0JYQUZjQVZ3QXJBQ3NBS3dBckFDc0FLd0FyQUNzQUt3QXJBQ3NBS3dBckFDc0FLd0FyQUNzQUt3QXJBQ3NBS3dBckFDc0FVUUJSQUZFQUt3QXJBQ3NBS3dBckFDc0FLd0FyQUNzQUt3QXJBQ3NBS3dCUkFGRUFVUUJSQUNzQUt3QXJBQ3NBS3dBckFDc0FLd0JYQUZjQVZ3QlhBRmNBVndCWEFGY0FWd0JYQUZjQVZ3QlhBRmNBVndCWEFGY0FWd0JYQUZjQVZ3QlhBRmNBVndCWEFGY0FWd0JYQUNzQUt3QXJBQ3NBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFDc0FLd0FyQUNzQUt3QlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFDc0FLd0FyQUNzQUt3QXJBQ3NBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFBckFDc0FIZ0FFQUFRQURRQUVBQVFBQkFBRUFDc0FLd0FyQUNzQUt3QXJBQ3NBS3dBckFDc0FLd0FyQUNzQUt3QXJBQ3NBS3dBckFDc0FLd0FyQUNzQUt3QXJBQ3NBS3dBckFDc0FIZ0FlQUI0QUhnQWVBQjRBSGdBZUFCNEFIZ0FlQUI0QUhnQWVBQjRBSGdBZUFCNEFIZ0FlQUI0QUhnQXJBQ3NBS3dBckFDc0FLd0FyQUNzQUt3QXJBQjRBSGdBZUFCNEFIZ0FlQUI0QUt3QXJBQjRBSGdBZUFCNEFIZ0FlQUI0QUhnQWVBQjRBSGdBZUFCNEFIZ0FlQUI0QUhnQWVBQjRBSGdBZUFCNEFIZ0FlQUFRQUJBQUVBQVFBQkFBZUFCNEFIZ0FFQUFRQUJBQUVBQVFBQkFBRUFBUUFCQUFFQUFRQUJBQUVBQVFBQkFBRUFBUUFCQUFFQUFRQUJBQUVBQjRBSGdBRUFBUUFCQUFFQUFRQUJBQUVBQjRBSGdBZUFCNEFIZ0FlQUI0QUhnQWVBQjRBSGdBZUFCNEFIZ0FlQUI0QUhnQWVBQjRBSGdBZUFCNEFCQUFFQUFRQUJBQWVBQjRBSGdBZUFCNEFIZ0FlQUI0QUhnQWVBQjRBSGdBZUFCNEFIZ0FlQUI0QUhnQWVBQjRBQkFBRUFBUUFIZ0FyQUNzQUt3QXJBQ3NBS3dBckFDc0FLd0FyQUNzQUt3QXJBQ3NBS3dBckFDc0FLd0FyQUNzQUt3QXJBQ3NBS3dBckFDc0FVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUNzQUt3QXJBQ3NBS3dBckFDc0FLd0FyQUNzQUt3QXJBQjRBSGdBZUFCNEFIZ0FlQUI0QUhnQWVBQjRBSGdBZUFCNEFIZ0FlQUI0QUhnQWVBQjRBSGdBZUFCNEFIZ0FyQUNzQUt3QXJBQ3NBS3dBckFDc0FLd0FlQUI0QUhnQWVBQjRBSGdBZUFCNEFIZ0FlQUI0QUhnQWVBQjRBSGdBZUFCNEFIZ0FlQUI0QUhnQXJBQjRBSGdBZUFCNEFIZ0FlQUI0QUhnQWVBQjRBSGdBZUFCNEFIZ0FlQUI0QUhnQWVBQjRBSGdBZUFCNEFIZ0FlQUI0QUhnQWVBQjRBSGdBZUFCNEFLd0JRQUZBQUt3QXJBRkFBS3dBckFGQUFVQUFyQUNzQVVBQlFBRkFBVUFBckFCNEFIZ0FlQUI0QUhnQWVBQjRBSGdBZUFCNEFIZ0FlQUNzQVVBQXJBRkFBVUFCUUFGQUFVQUJRQUZBQUt3QWVBQjRBSGdBZUFCNEFIZ0FlQUI0QUhnQWVBQjRBSGdBZUFCNEFIZ0FlQUI0QUhnQWVBQjRBSGdBZUFCNEFIZ0FlQUI0QUhnQWVBQjRBS3dCUUFGQUFVQUJRQUNzQUt3QlFBRkFBVUFCUUFGQUFVQUJRQUZBQUt3QlFBRkFBVUFCUUFGQUFVQUJRQUNzQUhnQWVBRkFBVUFCUUFGQUFVQUFyQUZBQUt3QXJBQ3NBVUFCUUFGQUFVQUJRQUZBQVVBQXJBQjRBSGdBZUFCNEFIZ0FlQUI0QUhnQWVBQjRBSGdBZUFCNEFIZ0FlQUI0QUt3QXJBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQUhnQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUI0QUhnQWVBQjRBSGdBZUFCNEFIZ0FlQUI0QUhnQWVBQjRBSGdBZUFCNEFIZ0FlQUI0QUhnQWVBQjRBSGdCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFIZ0FlQUI0QUhnQWVBQjRBSGdBZUFCNEFIZ0FlQUI0QUhnQWVBQjRBSGdBZUFCNEFIZ0FlQUI0QUhnQWVBQjRBSGdCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBQjRBSGdBZUFCNEFIZ0FlQUI0QUhnQWVBQ3NBS3dCTEFFc0FTd0JMQUVzQVN3QkxBRXNBU3dCTEFFc0FTd0JMQUVzQVN3QkxBRXNBU3dCTEFFc0FTd0JMQUVzQVN3QkxBRXNBU3dCTEFFc0FTd0JMQUVzQVN3QkxBQVFBQkFBRUFBUUFCQUFFQUFRQUJBQUVBQVFBQkFBRUFBUUFCQUFFQUFRQUJBQUVBQVFBQkFBRUFBUUFCQUFlQUI0QUhnQWVBQVFBQkFBRUFBUUFCQUFFQUFRQUJBQUVBQVFBQkFBRUFBUUFCQUFlQUI0QUhnQWVBQjRBSGdBZUFCNEFCQUFlQUI0QUhnQWVBQjRBSGdBZUFCNEFIZ0FlQUFRQUhnQWVBQTBBRFFBTkFBMEFIZ0FyQUNzQUt3QXJBQ3NBS3dBckFDc0FLd0FyQUNzQUt3QXJBQ3NBS3dBRUFBUUFCQUFFQUFRQUt3QUVBQVFBQkFBRUFBUUFCQUFFQUFRQUJBQUVBQVFBQkFBRUFBUUFCQUFyQUNzQUt3QXJBQ3NBS3dBckFDc0FLd0FyQUNzQUt3QXJBQ3NBS3dBckFBUUFCQUFFQUFRQUJBQUVBQVFBS3dBRUFBUUFCQUFFQUFRQUJBQUVBQVFBQkFBRUFBUUFCQUFFQUFRQUJBQUVBQVFBS3dBckFBUUFCQUFFQUFRQUJBQUVBQVFBS3dBRUFBUUFLd0FFQUFRQUJBQUVBQVFBS3dBckFDc0FLd0FyQUNzQUt3QXJBQ3NBS3dBckFDc0FLd0FyQUNzQUt3QXJBQ3NBS3dBckFDc0FVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQXJBQ3NBS3dBRUFBUUFCQUFFQUFRQUJBQUVBRkFBVUFCUUFGQUFVQUJRQUZBQUt3QXJBRXNBU3dCTEFFc0FTd0JMQUVzQVN3QkxBRXNBS3dBckFDc0FLd0JRQUI0QUt3QXJBQ3NBS3dBckFDc0FLd0FyQUNzQUt3QXJBQ3NBS3dBckFDc0FLd0JRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQUVBQVFBQkFBRUFFc0FTd0JMQUVzQVN3QkxBRXNBU3dCTEFFc0FLd0FyQUNzQUt3QXJBQnNBVUFCUUFGQUFVQUJRQUNzQUt3QlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQUVBQVFBQkFBRUFBUUFCQUFFQUNzQUt3QXJBQ3NBS3dBckFDc0FLd0FyQUI0QUhnQWVBQjRBQkFBRUFBUUFCQUFFQUFRQUJBQlFBQ3NBS3dBckFDc0FTd0JMQUVzQVN3QkxBRXNBU3dCTEFFc0FTd0FyQUNzQUt3QXJBQllBRmdBckFDc0FLd0FyQUNzQUt3QXJBQ3NBS3dBckFDc0FLd0FyQUNzQUt3QXJBQ3NBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQUdnQlFBRkFBVUFBYUFGQUFVQUJRQUZBQUt3QXJBQ3NBS3dBckFDc0FLd0FyQUNzQUt3QXJBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUFlQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFDc0FLd0JRQUZBQVVBQlFBQ3NBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBS3dCUUFGQUFLd0JRQUNzQUt3QlFBQ3NBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFBckFGQUFVQUJRQUZBQUt3QlFBQ3NBVUFBckFDc0FLd0FyQUNzQUt3QlFBQ3NBS3dBckFDc0FVQUFyQUZBQUt3QlFBQ3NBVUFCUUFGQUFLd0JRQUZBQUt3QlFBQ3NBS3dCUUFDc0FVQUFyQUZBQUt3QlFBQ3NBVUFBckFGQUFVQUFyQUZBQUt3QXJBRkFBVUFCUUFGQUFLd0JRQUZBQVVBQlFBRkFBVUFCUUFDc0FVQUJRQUZBQVVBQXJBRkFBVUFCUUFGQUFLd0JRQUNzQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQXJBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQXJBQ3NBS3dBckFDc0FVQUJRQUZBQUt3QlFBRkFBVUFCUUFGQUFLd0JRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFLd0FyQUNzQUt3QXJBQ3NBS3dBckFDc0FLd0FyQUNzQUt3QXJBQ3NBS3dBZUFCNEFLd0FyQUNzQUt3QXJBQ3NBS3dBckFDc0FLd0FyQUNzQUt3QXJBRThBVHdCUEFFOEFUd0JQQUU4QVR3QlBBRThBVHdCUEFFOEFKUUFsQUNVQUhRQWRBQjBBSFFBZEFCMEFIUUFkQUIwQUhRQWRBQjBBSFFBZEFCMEFIUUFkQUIwQUhnQWVBQjBBSFFBZEFCMEFIUUFkQUIwQUhRQWRBQjBBSFFBZEFCMEFIUUFkQUIwQUhRQWRBQjRBSGdBZUFDVUFKUUFsQUIwQUhRQWRBQjBBSFFBZEFCMEFIUUFkQUIwQUhRQWRBQjBBSFFBZEFCMEFIUUFsQUNVQUpRQWxBQ1VBSlFBbEFDVUFKUUFsQUNVQUpRQWxBQ1VBSlFBbEFDVUFKUUFsQUNVQUpRQXBBQ2tBS1FBcEFDa0FLUUFwQUNrQUtRQXBBQ2tBS1FBcEFDa0FLUUFwQUNrQUtRQXBBQ2tBS1FBcEFDa0FLUUFwQUNrQUpRQWxBQ1VBSlFBbEFDQUFKUUFsQUNVQUpRQWxBQ1VBSlFBbEFDVUFKUUFsQUNVQUpRQWxBQ1VBSlFBbEFDVUFKUUFsQUNVQUpRQWVBQjRBSlFBbEFDVUFKUUFsQUNVQUpRQWxBQ1VBSlFBbEFDVUFKUUFsQUNVQUpRQWxBQ1VBSlFBbEFDVUFKUUFsQUI0QUhnQWxBQ1VBSlFBbEFDVUFIZ0FsQUNVQUpRQWxBQ1VBSUFBZ0FDQUFKUUFsQUNBQUpRQWxBQ0FBSUFBZ0FDVUFKUUFsQUNVQUpRQWxBQ1VBSlFBbEFDVUFKUUFsQUNVQUpRQWxBQ1VBSlFBbEFDVUFKUUFsQUNVQUpRQWxBQ1VBSlFBbEFDVUFKUUFsQUNFQUlRQWhBQ0VBSVFBbEFDVUFJQUFnQUNVQUpRQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSlFBbEFDVUFKUUFsQUNVQUpRQWxBQ1VBSlFBbEFDVUFKUUFsQUNVQUpRQWxBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSlFBbEFDVUFJQUFsQUNVQUpRQWxBQ0FBSUFBZ0FDVUFJQUFnQUNBQUpRQWxBQ1VBSlFBbEFDVUFKUUFnQUNVQUlBQWxBQ1VBSlFBbEFDVUFKUUFsQUNVQUpRQWxBQ1VBSlFBbEFDVUFIZ0FsQUI0QUpRQWVBQ1VBSlFBbEFDVUFKUUFnQUNVQUpRQWxBQ1VBSGdBbEFCNEFIZ0FsQUNVQUpRQWxBQ1VBSlFBbEFDVUFKUUFsQUNVQUpRQWxBQjRBSGdBZUFCNEFIZ0FlQUI0QUpRQWxBQ1VBSlFBbEFDVUFKUUFsQUNVQUpRQWxBQ1VBSlFBbEFDVUFKUUFlQUI0QUhnQWVBQjRBSGdBZUFCNEFIZ0FlQUNVQUpRQWxBQ1VBSlFBbEFDVUFKUUFsQUNVQUpRQWxBQ1VBSGdBZUFCNEFIZ0FlQUI0QUhnQWVBQjRBSGdBZUFCNEFIZ0FlQUI0QUhnQWxBQ1VBSlFBbEFDVUFKUUFsQUNVQUpRQWxBQ1VBSlFBbEFDVUFKUUFsQUNVQUpRQWxBQ1VBSlFBbEFDQUFJQUFsQUNVQUpRQWxBQ0FBSlFBbEFDVUFKUUFsQUNVQUpRQWxBQ1VBSlFBbEFDVUFKUUFsQUNVQUpRQWxBQ0FBSlFBbEFDVUFKUUFnQUNBQUpRQWxBQ1VBSlFBbEFDVUFKUUFsQUNVQUpRQWxBQ1VBSlFBbEFDVUFKUUFsQUNVQUpRQWxBQ1VBSGdBZUFCNEFIZ0FlQUI0QUhnQWVBQ1VBSlFBbEFDVUFKUUFsQUNVQUpRQWxBQ1VBSlFBbEFDVUFKUUFsQUNVQUpRQWxBQ1VBSlFBZUFCNEFIZ0FlQUI0QUhnQWxBQ1VBSlFBbEFDVUFKUUFsQUNBQUlBQWdBQ1VBSlFBbEFDQUFJQUFnQUNBQUlBQWVBQjRBSGdBZUFCNEFIZ0FlQUI0QUhnQWVBQjRBSGdBZUFCNEFIZ0FlQUI0QUhnQWVBQjRBSGdBZUFCY0FGd0FYQUJVQUZRQVZBQjRBSGdBZUFCNEFKUUFsQUNVQUlBQWxBQ1VBSlFBbEFDVUFKUUFsQUNVQUpRQWxBQ1VBSlFBbEFDVUFKUUFsQUNBQUlBQWdBQ1VBSlFBbEFDVUFKUUFsQUNVQUpRQWxBQ0FBSlFBbEFDVUFKUUFsQUNVQUpRQWxBQ1VBSlFBbEFDQUFKUUFsQUNVQUpRQWxBQ1VBSlFBbEFDVUFKUUFsQUNVQUpRQWxBQ1VBSlFBbEFDVUFKUUFlQUI0QUhnQWVBQjRBSGdBZUFCNEFIZ0FlQUI0QUhnQWVBQjRBSGdBZUFCNEFIZ0FlQUI0QUpRQWxBQ1VBSlFBbEFDVUFKUUFsQUNVQUpRQWxBQ1VBSGdBZUFCNEFIZ0FlQUI0QUhnQWVBQjRBSGdBZUFCNEFKUUFsQUNVQUpRQWVBQjRBSGdBZUFCNEFIZ0FlQUI0QUhnQWVBQjRBSGdBZUFCNEFIZ0FlQUNVQUpRQWxBQ1VBSlFBbEFDVUFKUUFlQUI0QUhnQWVBQjRBSGdBZUFCNEFIZ0FlQUNVQUpRQWxBQ1VBSlFBbEFCNEFIZ0FlQUI0QUhnQWVBQjRBSGdBbEFDVUFKUUFsQUNVQUpRQWxBQ1VBSGdBZUFCNEFIZ0FlQUI0QUhnQWVBQjRBSGdBZUFCNEFIZ0FlQUI0QUhnQWdBQ1VBSlFBZ0FDVUFKUUFsQUNVQUpRQWxBQ1VBSlFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSlFBbEFDVUFKUUFsQUNVQUlBQWxBQ1VBSlFBbEFDVUFKUUFsQUNVQUpRQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ1VBSlFBZ0FDQUFJQUFsQUNVQUpRQWxBQ1VBSlFBbEFDVUFKUUFsQUNVQUpRQWxBQ1VBSlFBbEFDVUFKUUFsQUNVQUpRQWxBQ1VBSlFBZ0FDVUFKUUFsQUNVQUpRQWxBQ1VBSlFBbEFDVUFKUUFsQUNVQUpRQWxBQ1VBSlFBbEFDVUFKUUFsQUNBQUlBQWxBQ0FBSUFBbEFDQUFKUUFsQUNVQUpRQWxBQ1VBSlFBbEFDVUFKUUFsQUNVQUpRQWdBQ0FBSUFBbEFDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUpRQWxBQjRBSGdBZUFCNEFIZ0FlQUI0QUhnQWVBQjRBSGdBZUFCNEFIZ0FlQUI0QUhnQWVBQjRBS3dBZUFCNEFIZ0FlQUI0QUhnQWVBQjRBSGdBZUFCNEFIZ0FyQUNzQUt3QXJBQ3NBS3dBckFDc0FLd0FyQUNzQUt3QXJBQ3NBS3dBckFFc0FTd0JMQUVzQVN3QkxBRXNBU3dCTEFFc0FLd0FyQUNzQUt3QXJBQ3NBSlFBbEFDVUFKUUFsQUNVQUpRQWxBQ1VBSlFBbEFDVUFKUUFsQUNVQUpRQWxBQ1VBSlFBbEFDVUFKUUFsQUNVQUpRQWxBQ1VBSlFBbEFDVUFLd0FyQUZjQVZ3QlhBRmNBVndCWEFGY0FWd0JYQUZjQVZ3QlhBRmNBVndCWEFGY0FWd0JYQUZjQVZ3QlhBRmNBVndCWEFGY0FWd0JYQUZjQVZ3QlhBQ1VBSlFCWEFGY0FWd0JYQUZjQVZ3QlhBRmNBVndCWEFGY0FWd0JYQUZjQVZ3QlhBRmNBVndCWEFGY0FWd0FsQUNVQUpRQWxBQ1VBSlFBbEFDVUFKUUFsQUNVQVZ3QlhBQ1VBSlFBbEFDVUFKUUFsQUNVQUpRQWxBQ1VBSlFBbEFDVUFKUUJYQUZjQVZ3QlhBRmNBVndCWEFGY0FWd0JYQUZjQVZ3QlhBRmNBVndCWEFGY0FKUUFsQUNVQUpRQWxBQ1VBSlFBbEFDVUFKUUFsQUNVQUpRQWxBQ1VBSlFBbEFDVUFKUUFsQUNVQUpRQWxBQ1VBSlFBbEFDVUFKUUFsQUNVQUpRQlhBRmNBVndCWEFGY0FWd0JYQUZjQVZ3QlhBRmNBSlFBbEFDVUFKUUFsQUNVQUpRQWxBQ1VBSlFBbEFDVUFKUUFsQUNVQUpRQWxBQ1VBSlFBbEFDVUFLd0FFQUNzQUt3QXJBQ3NBS3dBckFDc0FLd0FyQUNzQUt3QXJBQ3NBS3dBckFDc0FLd0FyQUNzQUt3QXJBQ3NBS3dBckFDc0FLd0FyQUNzQUt3QXJBQVFBQkFBRUFBUUFCQUFFQUFRQUJBQUVBQVFBQkFBRUFBUUFCQUFFQUFRQUt3QXJBQ3NBS3dBckFDc0FLd0FyQUNzQUt3QXJBQ3NBS3dBckFDc0FLd0FyQUNzQUt3QXJBQT09IiksTD1BcnJheS5pc0FycmF5KG0pP2Z1bmN0aW9uKEEpe2Zvcih2YXIgZT1BLmxlbmd0aCx0PVtdLHI9MDtyPGU7cis9NCl0LnB1c2goQVtyKzNdPDwyNHxBW3IrMl08PDE2fEFbcisxXTw8OHxBW3JdKTtyZXR1cm4gdH0obSk6bmV3IFVpbnQzMkFycmF5KG0pLGI9QXJyYXkuaXNBcnJheShtKT9mdW5jdGlvbihBKXtmb3IodmFyIGU9QS5sZW5ndGgsdD1bXSxyPTA7cjxlO3IrPTIpdC5wdXNoKEFbcisxXTw8OHxBW3JdKTtyZXR1cm4gdH0obSk6bmV3IFVpbnQxNkFycmF5KG0pLHk9dyhiLDEyLExbNF0vMiksSz0yPT09TFs1XT93KGIsKDI0K0xbNF0pLzIpOihtPUwsYj1NYXRoLmNlaWwoKDI0K0xbNF0pLzQpLG0uc2xpY2U/bS5zbGljZShiLEspOm5ldyBVaW50MzJBcnJheShBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChtLGIsSykpKSxuZXcgVShMWzBdLExbMV0sTFsyXSxMWzNdLHksSykpLEJBPVtKLDM2XSxuQT1bMSwyLDMsNV0sc0E9W0QsOF0sb0E9W1AsTl0saUE9bkEuY29uY2F0KHNBKSxRQT1baix6LCQsWixfXSxjQT1beCx2XSxhQT0oZ0EucHJvdG90eXBlLnNsaWNlPWZ1bmN0aW9uKCl7cmV0dXJuIGcuYXBwbHkodm9pZCAwLHRoaXMuY29kZVBvaW50cy5zbGljZSh0aGlzLnN0YXJ0LHRoaXMuZW5kKSl9LGdBKTtmdW5jdGlvbiBnQShBLGUsdCxyKXt0aGlzLmNvZGVQb2ludHM9QSx0aGlzLnJlcXVpcmVkPSIhIj09PWUsdGhpcy5zdGFydD10LHRoaXMuZW5kPXJ9ZnVuY3Rpb24gd0EoQSxlKXt2YXIgdD1RKEEpLHI9KGU9SSh0LGUpKVswXSxCPWVbMV0sbj1lWzJdLHM9dC5sZW5ndGgsbz0wLGk9MDtyZXR1cm57bmV4dDpmdW5jdGlvbigpe2lmKHM8PWkpcmV0dXJue2RvbmU6ITAsdmFsdWU6bnVsbH07Zm9yKHZhciBBPXRBO2k8cyYmKEE9ZnVuY3Rpb24oQSxlLHQscixCKXtpZigwPT09dFtyXSlyZXR1cm4gdEE7dmFyIG49ci0xO2lmKEFycmF5LmlzQXJyYXkoQikmJiEwPT09QltuXSlyZXR1cm4gdEE7dmFyIHM9bi0xLG89MStuLGk9ZVtuXSxyPTA8PXM/ZVtzXTowLEI9ZVtvXTtpZigyPT09aSYmMz09PUIpcmV0dXJuIHRBO2lmKC0xIT09bkEuaW5kZXhPZihpKSlyZXR1cm4iISI7aWYoLTEhPT1uQS5pbmRleE9mKEIpKXJldHVybiB0QTtpZigtMSE9PXNBLmluZGV4T2YoQikpcmV0dXJuIHRBO2lmKDg9PT1FKG4sZSkpcmV0dXJuIsO3IjtpZigxMT09PXJBLmdldChBW25dKSlyZXR1cm4gdEE7aWYoKGk9PT1ZfHxpPT09VykmJjExPT09ckEuZ2V0KEFbb10pKXJldHVybiB0QTtpZig3PT09aXx8Nz09PUIpcmV0dXJuIHRBO2lmKDk9PT1pKXJldHVybiB0QTtpZigtMT09PVtELHYseF0uaW5kZXhPZihpKSYmOT09PUIpcmV0dXJuIHRBO2lmKC0xIT09W00sUyxULGssWF0uaW5kZXhPZihCKSlyZXR1cm4gdEE7aWYoRShuLGUpPT09VilyZXR1cm4gdEE7aWYocCgyMyxWLG4sZSkpcmV0dXJuIHRBO2lmKHAoW00sU10sTyxuLGUpKXJldHVybiB0QTtpZihwKDEyLDEyLG4sZSkpcmV0dXJuIHRBO2lmKGk9PT1EKXJldHVybiLDtyI7aWYoMjM9PT1pfHwyMz09PUIpcmV0dXJuIHRBO2lmKDE2PT09Qnx8MTY9PT1pKXJldHVybiLDtyI7aWYoLTEhPT1bdix4LE9dLmluZGV4T2YoQil8fDE0PT09aSlyZXR1cm4gdEE7aWYoMzY9PT1yJiYtMSE9PWNBLmluZGV4T2YoaSkpcmV0dXJuIHRBO2lmKGk9PT1YJiYzNj09PUIpcmV0dXJuIHRBO2lmKEI9PT1HKXJldHVybiB0QTtpZigtMSE9PUJBLmluZGV4T2YoQikmJmk9PT1SfHwtMSE9PUJBLmluZGV4T2YoaSkmJkI9PT1SKXJldHVybiB0QTtpZihpPT09UCYmLTEhPT1bcSxZLFddLmluZGV4T2YoQil8fC0xIT09W3EsWSxXXS5pbmRleE9mKGkpJiZCPT09TilyZXR1cm4gdEE7aWYoLTEhPT1CQS5pbmRleE9mKGkpJiYtMSE9PW9BLmluZGV4T2YoQil8fC0xIT09b0EuaW5kZXhPZihpKSYmLTEhPT1CQS5pbmRleE9mKEIpKXJldHVybiB0QTtpZigtMSE9PVtQLE5dLmluZGV4T2YoaSkmJihCPT09Unx8LTEhPT1bVix4XS5pbmRleE9mKEIpJiZlWzErb109PT1SKXx8LTEhPT1bVix4XS5pbmRleE9mKGkpJiZCPT09Unx8aT09PVImJi0xIT09W1IsWCxrXS5pbmRleE9mKEIpKXJldHVybiB0QTtpZigtMSE9PVtSLFgsayxNLFNdLmluZGV4T2YoQikpZm9yKHZhciBRPW47MDw9UTspe2lmKChjPWVbUV0pPT09UilyZXR1cm4gdEE7aWYoLTE9PT1bWCxrXS5pbmRleE9mKGMpKWJyZWFrO1EtLX1pZigtMSE9PVtQLE5dLmluZGV4T2YoQikpZm9yKHZhciBjLFE9LTEhPT1bTSxTXS5pbmRleE9mKGkpP3M6bjswPD1ROyl7aWYoKGM9ZVtRXSk9PT1SKXJldHVybiB0QTtpZigtMT09PVtYLGtdLmluZGV4T2YoYykpYnJlYWs7US0tfWlmKGo9PT1pJiYtMSE9PVtqLHosWixfXS5pbmRleE9mKEIpfHwtMSE9PVt6LFpdLmluZGV4T2YoaSkmJi0xIT09W3osJF0uaW5kZXhPZihCKXx8LTEhPT1bJCxfXS5pbmRleE9mKGkpJiZCPT09JClyZXR1cm4gdEE7aWYoLTEhPT1RQS5pbmRleE9mKGkpJiYtMSE9PVtHLE5dLmluZGV4T2YoQil8fC0xIT09UUEuaW5kZXhPZihCKSYmaT09PVApcmV0dXJuIHRBO2lmKC0xIT09QkEuaW5kZXhPZihpKSYmLTEhPT1CQS5pbmRleE9mKEIpKXJldHVybiB0QTtpZihpPT09ayYmLTEhPT1CQS5pbmRleE9mKEIpKXJldHVybiB0QTtpZigtMSE9PUJBLmNvbmNhdChSKS5pbmRleE9mKGkpJiZCPT09ViYmLTE9PT1lQS5pbmRleE9mKEFbb10pfHwtMSE9PUJBLmNvbmNhdChSKS5pbmRleE9mKEIpJiZpPT09UylyZXR1cm4gdEE7aWYoNDE9PT1pJiY0MT09PUIpe2Zvcih2YXIgYT10W25dLGc9MTswPGEmJjQxPT09ZVstLWFdOylnKys7aWYoZyUyIT0wKXJldHVybiB0QX1yZXR1cm4gaT09PVkmJkI9PT1XP3RBOiLDtyJ9KHQsQixyLCsraSxuKSk9PT10QTspO2lmKEE9PT10QSYmaSE9PXMpcmV0dXJue2RvbmU6ITAsdmFsdWU6bnVsbH07dmFyIGU9bmV3IGFBKHQsQSxvLGkpO3JldHVybiBvPWkse3ZhbHVlOmUsZG9uZTohMX19fX1mdW5jdGlvbiBVQShBKXtyZXR1cm4gNDg8PUEmJkE8PTU3fWZ1bmN0aW9uIGxBKEEpe3JldHVybiBVQShBKXx8NjU8PUEmJkE8PTcwfHw5Nzw9QSYmQTw9MTAyfWZ1bmN0aW9uIENBKEEpe3JldHVybiAxMD09PUF8fDk9PT1BfHwzMj09PUF9ZnVuY3Rpb24gdUEoQSl7cmV0dXJuIDk3PD0odD1lPUEpJiZ0PD0xMjJ8fDY1PD0oZT1lKSYmZTw9OTB8fDEyODw9QXx8OTU9PT1BO3ZhciBlLHR9ZnVuY3Rpb24gRkEoQSl7cmV0dXJuIHVBKEEpfHxVQShBKXx8NDU9PT1BfWZ1bmN0aW9uIGhBKEEsZSl7cmV0dXJuIDkyPT09QSYmMTAhPT1lfWZ1bmN0aW9uIGRBKEEsZSx0KXtyZXR1cm4gNDU9PT1BP3VBKGUpfHxoQShlLHQpOiEhdUEoQSl8fDkyPT09QSYmMTAhPT1lfWZ1bmN0aW9uIGZBKEEsZSx0KXtyZXR1cm4gNDM9PT1BfHw0NT09PUE/ISFVQShlKXx8NDY9PT1lJiZVQSh0KTpVQSg0Nj09PUE/ZTpBKX12YXIgSEE9e3R5cGU6Mn0scEE9e3R5cGU6M30sRUE9e3R5cGU6NH0sSUE9e3R5cGU6MTN9LHlBPXt0eXBlOjh9LEtBPXt0eXBlOjIxfSxtQT17dHlwZTo5fSxMQT17dHlwZToxMH0sYkE9e3R5cGU6MTF9LERBPXt0eXBlOjEyfSx2QT17dHlwZToxNH0seEE9e3R5cGU6MjN9LE1BPXt0eXBlOjF9LFNBPXt0eXBlOjI1fSxUQT17dHlwZToyNH0sR0E9e3R5cGU6MjZ9LE9BPXt0eXBlOjI3fSxWQT17dHlwZToyOH0sa0E9e3R5cGU6Mjl9LFJBPXt0eXBlOjMxfSxOQT17dHlwZTozMn0sUEE9KFhBLnByb3RvdHlwZS53cml0ZT1mdW5jdGlvbihBKXt0aGlzLl92YWx1ZT10aGlzLl92YWx1ZS5jb25jYXQoUShBKSl9LFhBLnByb3RvdHlwZS5yZWFkPWZ1bmN0aW9uKCl7Zm9yKHZhciBBPVtdLGU9dGhpcy5jb25zdW1lVG9rZW4oKTtlIT09TkE7KUEucHVzaChlKSxlPXRoaXMuY29uc3VtZVRva2VuKCk7cmV0dXJuIEF9LFhBLnByb3RvdHlwZS5jb25zdW1lVG9rZW49ZnVuY3Rpb24oKXt2YXIgQT10aGlzLmNvbnN1bWVDb2RlUG9pbnQoKTtzd2l0Y2goQSl7Y2FzZSAzNDpyZXR1cm4gdGhpcy5jb25zdW1lU3RyaW5nVG9rZW4oMzQpO2Nhc2UgMzU6dmFyIGU9dGhpcy5wZWVrQ29kZVBvaW50KDApLHQ9dGhpcy5wZWVrQ29kZVBvaW50KDEpLHI9dGhpcy5wZWVrQ29kZVBvaW50KDIpO2lmKEZBKGUpfHxoQSh0LHIpKXt2YXIgQj1kQShlLHQscik/MjoxO3JldHVybnt0eXBlOjUsdmFsdWU6dGhpcy5jb25zdW1lTmFtZSgpLGZsYWdzOkJ9fWJyZWFrO2Nhc2UgMzY6aWYoNjE9PT10aGlzLnBlZWtDb2RlUG9pbnQoMCkpcmV0dXJuIHRoaXMuY29uc3VtZUNvZGVQb2ludCgpLElBO2JyZWFrO2Nhc2UgMzk6cmV0dXJuIHRoaXMuY29uc3VtZVN0cmluZ1Rva2VuKDM5KTtjYXNlIDQwOnJldHVybiBIQTtjYXNlIDQxOnJldHVybiBwQTtjYXNlIDQyOmlmKDYxPT09dGhpcy5wZWVrQ29kZVBvaW50KDApKXJldHVybiB0aGlzLmNvbnN1bWVDb2RlUG9pbnQoKSx2QTticmVhaztjYXNlIDQzOmlmKGZBKEEsdGhpcy5wZWVrQ29kZVBvaW50KDApLHRoaXMucGVla0NvZGVQb2ludCgxKSkpcmV0dXJuIHRoaXMucmVjb25zdW1lQ29kZVBvaW50KEEpLHRoaXMuY29uc3VtZU51bWVyaWNUb2tlbigpO2JyZWFrO2Nhc2UgNDQ6cmV0dXJuIEVBO2Nhc2UgNDU6dmFyIHI9QSxCPXRoaXMucGVla0NvZGVQb2ludCgwKSxuPXRoaXMucGVla0NvZGVQb2ludCgxKTtpZihmQShyLEIsbikpcmV0dXJuIHRoaXMucmVjb25zdW1lQ29kZVBvaW50KEEpLHRoaXMuY29uc3VtZU51bWVyaWNUb2tlbigpO2lmKGRBKHIsQixuKSlyZXR1cm4gdGhpcy5yZWNvbnN1bWVDb2RlUG9pbnQoQSksdGhpcy5jb25zdW1lSWRlbnRMaWtlVG9rZW4oKTtpZig0NT09PUImJjYyPT09bilyZXR1cm4gdGhpcy5jb25zdW1lQ29kZVBvaW50KCksdGhpcy5jb25zdW1lQ29kZVBvaW50KCksVEE7YnJlYWs7Y2FzZSA0NjppZihmQShBLHRoaXMucGVla0NvZGVQb2ludCgwKSx0aGlzLnBlZWtDb2RlUG9pbnQoMSkpKXJldHVybiB0aGlzLnJlY29uc3VtZUNvZGVQb2ludChBKSx0aGlzLmNvbnN1bWVOdW1lcmljVG9rZW4oKTticmVhaztjYXNlIDQ3OmlmKDQyPT09dGhpcy5wZWVrQ29kZVBvaW50KDApKWZvcih0aGlzLmNvbnN1bWVDb2RlUG9pbnQoKTs7KXt2YXIgcz10aGlzLmNvbnN1bWVDb2RlUG9pbnQoKTtpZig0Mj09PXMmJjQ3PT09KHM9dGhpcy5jb25zdW1lQ29kZVBvaW50KCkpKXJldHVybiB0aGlzLmNvbnN1bWVUb2tlbigpO2lmKC0xPT09cylyZXR1cm4gdGhpcy5jb25zdW1lVG9rZW4oKX1icmVhaztjYXNlIDU4OnJldHVybiBHQTtjYXNlIDU5OnJldHVybiBPQTtjYXNlIDYwOmlmKDMzPT09dGhpcy5wZWVrQ29kZVBvaW50KDApJiY0NT09PXRoaXMucGVla0NvZGVQb2ludCgxKSYmNDU9PT10aGlzLnBlZWtDb2RlUG9pbnQoMikpcmV0dXJuIHRoaXMuY29uc3VtZUNvZGVQb2ludCgpLHRoaXMuY29uc3VtZUNvZGVQb2ludCgpLFNBO2JyZWFrO2Nhc2UgNjQ6dmFyIG49dGhpcy5wZWVrQ29kZVBvaW50KDApLG89dGhpcy5wZWVrQ29kZVBvaW50KDEpLGk9dGhpcy5wZWVrQ29kZVBvaW50KDIpO2lmKGRBKG4sbyxpKSlyZXR1cm57dHlwZTo3LHZhbHVlOnRoaXMuY29uc3VtZU5hbWUoKX07YnJlYWs7Y2FzZSA5MTpyZXR1cm4gVkE7Y2FzZSA5MjppZihoQShBLHRoaXMucGVla0NvZGVQb2ludCgwKSkpcmV0dXJuIHRoaXMucmVjb25zdW1lQ29kZVBvaW50KEEpLHRoaXMuY29uc3VtZUlkZW50TGlrZVRva2VuKCk7YnJlYWs7Y2FzZSA5MzpyZXR1cm4ga0E7Y2FzZSA2MTppZig2MT09PXRoaXMucGVla0NvZGVQb2ludCgwKSlyZXR1cm4gdGhpcy5jb25zdW1lQ29kZVBvaW50KCkseUE7YnJlYWs7Y2FzZSAxMjM6cmV0dXJuIGJBO2Nhc2UgMTI1OnJldHVybiBEQTtjYXNlIDExNzpjYXNlIDg1Om89dGhpcy5wZWVrQ29kZVBvaW50KDApLGk9dGhpcy5wZWVrQ29kZVBvaW50KDEpO3JldHVybiA0MyE9PW98fCFsQShpKSYmNjMhPT1pfHwodGhpcy5jb25zdW1lQ29kZVBvaW50KCksdGhpcy5jb25zdW1lVW5pY29kZVJhbmdlVG9rZW4oKSksdGhpcy5yZWNvbnN1bWVDb2RlUG9pbnQoQSksdGhpcy5jb25zdW1lSWRlbnRMaWtlVG9rZW4oKTtjYXNlIDEyNDppZig2MT09PXRoaXMucGVla0NvZGVQb2ludCgwKSlyZXR1cm4gdGhpcy5jb25zdW1lQ29kZVBvaW50KCksbUE7aWYoMTI0PT09dGhpcy5wZWVrQ29kZVBvaW50KDApKXJldHVybiB0aGlzLmNvbnN1bWVDb2RlUG9pbnQoKSxLQTticmVhaztjYXNlIDEyNjppZig2MT09PXRoaXMucGVla0NvZGVQb2ludCgwKSlyZXR1cm4gdGhpcy5jb25zdW1lQ29kZVBvaW50KCksTEE7YnJlYWs7Y2FzZS0xOnJldHVybiBOQX1yZXR1cm4gQ0EoQSk/KHRoaXMuY29uc3VtZVdoaXRlU3BhY2UoKSxSQSk6VUEoQSk/KHRoaXMucmVjb25zdW1lQ29kZVBvaW50KEEpLHRoaXMuY29uc3VtZU51bWVyaWNUb2tlbigpKTp1QShBKT8odGhpcy5yZWNvbnN1bWVDb2RlUG9pbnQoQSksdGhpcy5jb25zdW1lSWRlbnRMaWtlVG9rZW4oKSk6e3R5cGU6Nix2YWx1ZTpnKEEpfX0sWEEucHJvdG90eXBlLmNvbnN1bWVDb2RlUG9pbnQ9ZnVuY3Rpb24oKXt2YXIgQT10aGlzLl92YWx1ZS5zaGlmdCgpO3JldHVybiB2b2lkIDA9PT1BPy0xOkF9LFhBLnByb3RvdHlwZS5yZWNvbnN1bWVDb2RlUG9pbnQ9ZnVuY3Rpb24oQSl7dGhpcy5fdmFsdWUudW5zaGlmdChBKX0sWEEucHJvdG90eXBlLnBlZWtDb2RlUG9pbnQ9ZnVuY3Rpb24oQSl7cmV0dXJuIEE+PXRoaXMuX3ZhbHVlLmxlbmd0aD8tMTp0aGlzLl92YWx1ZVtBXX0sWEEucHJvdG90eXBlLmNvbnN1bWVVbmljb2RlUmFuZ2VUb2tlbj1mdW5jdGlvbigpe2Zvcih2YXIgQT1bXSxlPXRoaXMuY29uc3VtZUNvZGVQb2ludCgpO2xBKGUpJiZBLmxlbmd0aDw2OylBLnB1c2goZSksZT10aGlzLmNvbnN1bWVDb2RlUG9pbnQoKTtmb3IodmFyIHQ9ITE7NjM9PT1lJiZBLmxlbmd0aDw2OylBLnB1c2goZSksZT10aGlzLmNvbnN1bWVDb2RlUG9pbnQoKSx0PSEwO2lmKHQpcmV0dXJue3R5cGU6MzAsc3RhcnQ6cGFyc2VJbnQoZy5hcHBseSh2b2lkIDAsQS5tYXAoZnVuY3Rpb24oQSl7cmV0dXJuIDYzPT09QT80ODpBfSkpLDE2KSxlbmQ6cGFyc2VJbnQoZy5hcHBseSh2b2lkIDAsQS5tYXAoZnVuY3Rpb24oQSl7cmV0dXJuIDYzPT09QT83MDpBfSkpLDE2KX07dmFyIHI9cGFyc2VJbnQoZy5hcHBseSh2b2lkIDAsQSksMTYpO2lmKDQ1PT09dGhpcy5wZWVrQ29kZVBvaW50KDApJiZsQSh0aGlzLnBlZWtDb2RlUG9pbnQoMSkpKXt0aGlzLmNvbnN1bWVDb2RlUG9pbnQoKTtmb3IodmFyIGU9dGhpcy5jb25zdW1lQ29kZVBvaW50KCksQj1bXTtsQShlKSYmQi5sZW5ndGg8NjspQi5wdXNoKGUpLGU9dGhpcy5jb25zdW1lQ29kZVBvaW50KCk7cmV0dXJue3R5cGU6MzAsc3RhcnQ6cixlbmQ6cGFyc2VJbnQoZy5hcHBseSh2b2lkIDAsQiksMTYpfX1yZXR1cm57dHlwZTozMCxzdGFydDpyLGVuZDpyfX0sWEEucHJvdG90eXBlLmNvbnN1bWVJZGVudExpa2VUb2tlbj1mdW5jdGlvbigpe3ZhciBBPXRoaXMuY29uc3VtZU5hbWUoKTtyZXR1cm4idXJsIj09PUEudG9Mb3dlckNhc2UoKSYmNDA9PT10aGlzLnBlZWtDb2RlUG9pbnQoMCk/KHRoaXMuY29uc3VtZUNvZGVQb2ludCgpLHRoaXMuY29uc3VtZVVybFRva2VuKCkpOjQwPT09dGhpcy5wZWVrQ29kZVBvaW50KDApPyh0aGlzLmNvbnN1bWVDb2RlUG9pbnQoKSx7dHlwZToxOSx2YWx1ZTpBfSk6e3R5cGU6MjAsdmFsdWU6QX19LFhBLnByb3RvdHlwZS5jb25zdW1lVXJsVG9rZW49ZnVuY3Rpb24oKXt2YXIgQT1bXTtpZih0aGlzLmNvbnN1bWVXaGl0ZVNwYWNlKCksLTE9PT10aGlzLnBlZWtDb2RlUG9pbnQoMCkpcmV0dXJue3R5cGU6MjIsdmFsdWU6IiJ9O3ZhciBlLHQ9dGhpcy5wZWVrQ29kZVBvaW50KDApO2lmKDM5PT09dHx8MzQ9PT10KXt0PXRoaXMuY29uc3VtZVN0cmluZ1Rva2VuKHRoaXMuY29uc3VtZUNvZGVQb2ludCgpKTtyZXR1cm4gMD09PXQudHlwZSYmKHRoaXMuY29uc3VtZVdoaXRlU3BhY2UoKSwtMT09PXRoaXMucGVla0NvZGVQb2ludCgwKXx8NDE9PT10aGlzLnBlZWtDb2RlUG9pbnQoMCkpPyh0aGlzLmNvbnN1bWVDb2RlUG9pbnQoKSx7dHlwZToyMix2YWx1ZTp0LnZhbHVlfSk6KHRoaXMuY29uc3VtZUJhZFVybFJlbW5hbnRzKCkseEEpfWZvcig7Oyl7dmFyIHI9dGhpcy5jb25zdW1lQ29kZVBvaW50KCk7aWYoLTE9PT1yfHw0MT09PXIpcmV0dXJue3R5cGU6MjIsdmFsdWU6Zy5hcHBseSh2b2lkIDAsQSl9O2lmKENBKHIpKXJldHVybiB0aGlzLmNvbnN1bWVXaGl0ZVNwYWNlKCksLTE9PT10aGlzLnBlZWtDb2RlUG9pbnQoMCl8fDQxPT09dGhpcy5wZWVrQ29kZVBvaW50KDApPyh0aGlzLmNvbnN1bWVDb2RlUG9pbnQoKSx7dHlwZToyMix2YWx1ZTpnLmFwcGx5KHZvaWQgMCxBKX0pOih0aGlzLmNvbnN1bWVCYWRVcmxSZW1uYW50cygpLHhBKTtpZigzND09PXJ8fDM5PT09cnx8NDA9PT1yfHwoMDw9KGU9cikmJmU8PTh8fDExPT09ZXx8MTQ8PWUmJmU8PTMxfHwxMjc9PT1lKSlyZXR1cm4gdGhpcy5jb25zdW1lQmFkVXJsUmVtbmFudHMoKSx4QTtpZig5Mj09PXIpe2lmKCFoQShyLHRoaXMucGVla0NvZGVQb2ludCgwKSkpcmV0dXJuIHRoaXMuY29uc3VtZUJhZFVybFJlbW5hbnRzKCkseEE7QS5wdXNoKHRoaXMuY29uc3VtZUVzY2FwZWRDb2RlUG9pbnQoKSl9ZWxzZSBBLnB1c2gocil9fSxYQS5wcm90b3R5cGUuY29uc3VtZVdoaXRlU3BhY2U9ZnVuY3Rpb24oKXtmb3IoO0NBKHRoaXMucGVla0NvZGVQb2ludCgwKSk7KXRoaXMuY29uc3VtZUNvZGVQb2ludCgpfSxYQS5wcm90b3R5cGUuY29uc3VtZUJhZFVybFJlbW5hbnRzPWZ1bmN0aW9uKCl7Zm9yKDs7KXt2YXIgQT10aGlzLmNvbnN1bWVDb2RlUG9pbnQoKTtpZig0MT09PUF8fC0xPT09QSlyZXR1cm47aEEoQSx0aGlzLnBlZWtDb2RlUG9pbnQoMCkpJiZ0aGlzLmNvbnN1bWVFc2NhcGVkQ29kZVBvaW50KCl9fSxYQS5wcm90b3R5cGUuY29uc3VtZVN0cmluZ1NsaWNlPWZ1bmN0aW9uKEEpe2Zvcih2YXIgZT0iIjswPEE7KXt2YXIgdD1NYXRoLm1pbig1ZTQsQSk7ZSs9Zy5hcHBseSh2b2lkIDAsdGhpcy5fdmFsdWUuc3BsaWNlKDAsdCkpLEEtPXR9cmV0dXJuIHRoaXMuX3ZhbHVlLnNoaWZ0KCksZX0sWEEucHJvdG90eXBlLmNvbnN1bWVTdHJpbmdUb2tlbj1mdW5jdGlvbihBKXtmb3IodmFyIGU9IiIsdD0wOzspe3ZhciByLEI9dGhpcy5fdmFsdWVbdF07aWYoLTE9PT1CfHx2b2lkIDA9PT1CfHxCPT09QSlyZXR1cm57dHlwZTowLHZhbHVlOmUrPXRoaXMuY29uc3VtZVN0cmluZ1NsaWNlKHQpfTtpZigxMD09PUIpcmV0dXJuIHRoaXMuX3ZhbHVlLnNwbGljZSgwLHQpLE1BOzkyIT09Qnx8LTEhPT0ocj10aGlzLl92YWx1ZVt0KzFdKSYmdm9pZCAwIT09ciYmKDEwPT09cj8oZSs9dGhpcy5jb25zdW1lU3RyaW5nU2xpY2UodCksdD0tMSx0aGlzLl92YWx1ZS5zaGlmdCgpKTpoQShCLHIpJiYoZSs9dGhpcy5jb25zdW1lU3RyaW5nU2xpY2UodCksZSs9Zyh0aGlzLmNvbnN1bWVFc2NhcGVkQ29kZVBvaW50KCkpLHQ9LTEpKSx0Kyt9fSxYQS5wcm90b3R5cGUuY29uc3VtZU51bWJlcj1mdW5jdGlvbigpe3ZhciBBPVtdLGU9NDtmb3IoNDMhPT0odD10aGlzLnBlZWtDb2RlUG9pbnQoMCkpJiY0NSE9PXR8fEEucHVzaCh0aGlzLmNvbnN1bWVDb2RlUG9pbnQoKSk7VUEodGhpcy5wZWVrQ29kZVBvaW50KDApKTspQS5wdXNoKHRoaXMuY29uc3VtZUNvZGVQb2ludCgpKTt2YXIgdD10aGlzLnBlZWtDb2RlUG9pbnQoMCkscj10aGlzLnBlZWtDb2RlUG9pbnQoMSk7aWYoNDY9PT10JiZVQShyKSlmb3IoQS5wdXNoKHRoaXMuY29uc3VtZUNvZGVQb2ludCgpLHRoaXMuY29uc3VtZUNvZGVQb2ludCgpKSxlPTg7VUEodGhpcy5wZWVrQ29kZVBvaW50KDApKTspQS5wdXNoKHRoaXMuY29uc3VtZUNvZGVQb2ludCgpKTt0PXRoaXMucGVla0NvZGVQb2ludCgwKTt2YXIgcj10aGlzLnBlZWtDb2RlUG9pbnQoMSksQj10aGlzLnBlZWtDb2RlUG9pbnQoMik7aWYoKDY5PT09dHx8MTAxPT09dCkmJigoNDM9PT1yfHw0NT09PXIpJiZVQShCKXx8VUEocikpKWZvcihBLnB1c2godGhpcy5jb25zdW1lQ29kZVBvaW50KCksdGhpcy5jb25zdW1lQ29kZVBvaW50KCkpLGU9ODtVQSh0aGlzLnBlZWtDb2RlUG9pbnQoMCkpOylBLnB1c2godGhpcy5jb25zdW1lQ29kZVBvaW50KCkpO3JldHVybltmdW5jdGlvbihBKXt2YXIgZT0wLHQ9MTs0MyE9PUFbZV0mJjQ1IT09QVtlXXx8KDQ1PT09QVtlXSYmKHQ9LTEpLGUrKyk7Zm9yKHZhciByPVtdO1VBKEFbZV0pOylyLnB1c2goQVtlKytdKTt2YXIgQj1yLmxlbmd0aD9wYXJzZUludChnLmFwcGx5KHZvaWQgMCxyKSwxMCk6MDs0Nj09PUFbZV0mJmUrKztmb3IodmFyIG49W107VUEoQVtlXSk7KW4ucHVzaChBW2UrK10pO3ZhciBzPW4ubGVuZ3RoLG89cz9wYXJzZUludChnLmFwcGx5KHZvaWQgMCxuKSwxMCk6MDs2OSE9PUFbZV0mJjEwMSE9PUFbZV18fGUrKzt2YXIgaT0xOzQzIT09QVtlXSYmNDUhPT1BW2VdfHwoNDU9PT1BW2VdJiYoaT0tMSksZSsrKTtmb3IodmFyIFE9W107VUEoQVtlXSk7KVEucHVzaChBW2UrK10pO3ZhciBjPVEubGVuZ3RoP3BhcnNlSW50KGcuYXBwbHkodm9pZCAwLFEpLDEwKTowO3JldHVybiB0KihCK28qTWF0aC5wb3coMTAsLXMpKSpNYXRoLnBvdygxMCxpKmMpfShBKSxlXX0sWEEucHJvdG90eXBlLmNvbnN1bWVOdW1lcmljVG9rZW49ZnVuY3Rpb24oKXt2YXIgQT10aGlzLmNvbnN1bWVOdW1iZXIoKSxlPUFbMF0sdD1BWzFdLHI9dGhpcy5wZWVrQ29kZVBvaW50KDApLEI9dGhpcy5wZWVrQ29kZVBvaW50KDEpLEE9dGhpcy5wZWVrQ29kZVBvaW50KDIpO3JldHVybiBkQShyLEIsQSk/e3R5cGU6MTUsbnVtYmVyOmUsZmxhZ3M6dCx1bml0OnRoaXMuY29uc3VtZU5hbWUoKX06Mzc9PT1yPyh0aGlzLmNvbnN1bWVDb2RlUG9pbnQoKSx7dHlwZToxNixudW1iZXI6ZSxmbGFnczp0fSk6e3R5cGU6MTcsbnVtYmVyOmUsZmxhZ3M6dH19LFhBLnByb3RvdHlwZS5jb25zdW1lRXNjYXBlZENvZGVQb2ludD1mdW5jdGlvbigpe3ZhciBBLGU9dGhpcy5jb25zdW1lQ29kZVBvaW50KCk7aWYobEEoZSkpe2Zvcih2YXIgdD1nKGUpO2xBKHRoaXMucGVla0NvZGVQb2ludCgwKSkmJnQubGVuZ3RoPDY7KXQrPWcodGhpcy5jb25zdW1lQ29kZVBvaW50KCkpO0NBKHRoaXMucGVla0NvZGVQb2ludCgwKSkmJnRoaXMuY29uc3VtZUNvZGVQb2ludCgpO3ZhciByPXBhcnNlSW50KHQsMTYpO3JldHVybiAwPT09cnx8NTUyOTY8PShBPXIpJiZBPD01NzM0M3x8MTExNDExMTxyPzY1NTMzOnJ9cmV0dXJuLTE9PT1lPzY1NTMzOmV9LFhBLnByb3RvdHlwZS5jb25zdW1lTmFtZT1mdW5jdGlvbigpe2Zvcih2YXIgQT0iIjs7KXt2YXIgZT10aGlzLmNvbnN1bWVDb2RlUG9pbnQoKTtpZihGQShlKSlBKz1nKGUpO2Vsc2V7aWYoIWhBKGUsdGhpcy5wZWVrQ29kZVBvaW50KDApKSlyZXR1cm4gdGhpcy5yZWNvbnN1bWVDb2RlUG9pbnQoZSksQTtBKz1nKHRoaXMuY29uc3VtZUVzY2FwZWRDb2RlUG9pbnQoKSl9fX0sWEEpO2Z1bmN0aW9uIFhBKCl7dGhpcy5fdmFsdWU9W119dmFyIEpBPShZQS5jcmVhdGU9ZnVuY3Rpb24oQSl7dmFyIGU9bmV3IFBBO3JldHVybiBlLndyaXRlKEEpLG5ldyBZQShlLnJlYWQoKSl9LFlBLnBhcnNlVmFsdWU9ZnVuY3Rpb24oQSl7cmV0dXJuIFlBLmNyZWF0ZShBKS5wYXJzZUNvbXBvbmVudFZhbHVlKCl9LFlBLnBhcnNlVmFsdWVzPWZ1bmN0aW9uKEEpe3JldHVybiBZQS5jcmVhdGUoQSkucGFyc2VDb21wb25lbnRWYWx1ZXMoKX0sWUEucHJvdG90eXBlLnBhcnNlQ29tcG9uZW50VmFsdWU9ZnVuY3Rpb24oKXtmb3IodmFyIEE9dGhpcy5jb25zdW1lVG9rZW4oKTszMT09PUEudHlwZTspQT10aGlzLmNvbnN1bWVUb2tlbigpO2lmKDMyPT09QS50eXBlKXRocm93IG5ldyBTeW50YXhFcnJvcigiRXJyb3IgcGFyc2luZyBDU1MgY29tcG9uZW50IHZhbHVlLCB1bmV4cGVjdGVkIEVPRiIpO3RoaXMucmVjb25zdW1lVG9rZW4oQSk7Zm9yKHZhciBlPXRoaXMuY29uc3VtZUNvbXBvbmVudFZhbHVlKCk7MzE9PT0oQT10aGlzLmNvbnN1bWVUb2tlbigpKS50eXBlOyk7aWYoMzI9PT1BLnR5cGUpcmV0dXJuIGU7dGhyb3cgbmV3IFN5bnRheEVycm9yKCJFcnJvciBwYXJzaW5nIENTUyBjb21wb25lbnQgdmFsdWUsIG11bHRpcGxlIHZhbHVlcyBmb3VuZCB3aGVuIGV4cGVjdGluZyBvbmx5IG9uZSIpfSxZQS5wcm90b3R5cGUucGFyc2VDb21wb25lbnRWYWx1ZXM9ZnVuY3Rpb24oKXtmb3IodmFyIEE9W107Oyl7dmFyIGU9dGhpcy5jb25zdW1lQ29tcG9uZW50VmFsdWUoKTtpZigzMj09PWUudHlwZSlyZXR1cm4gQTtBLnB1c2goZSksQS5wdXNoKCl9fSxZQS5wcm90b3R5cGUuY29uc3VtZUNvbXBvbmVudFZhbHVlPWZ1bmN0aW9uKCl7dmFyIEE9dGhpcy5jb25zdW1lVG9rZW4oKTtzd2l0Y2goQS50eXBlKXtjYXNlIDExOmNhc2UgMjg6Y2FzZSAyOnJldHVybiB0aGlzLmNvbnN1bWVTaW1wbGVCbG9jayhBLnR5cGUpO2Nhc2UgMTk6cmV0dXJuIHRoaXMuY29uc3VtZUZ1bmN0aW9uKEEpfXJldHVybiBBfSxZQS5wcm90b3R5cGUuY29uc3VtZVNpbXBsZUJsb2NrPWZ1bmN0aW9uKEEpe2Zvcih2YXIgZT17dHlwZTpBLHZhbHVlczpbXX0sdD10aGlzLmNvbnN1bWVUb2tlbigpOzspe2lmKDMyPT09dC50eXBlfHxjZSh0LEEpKXJldHVybiBlO3RoaXMucmVjb25zdW1lVG9rZW4odCksZS52YWx1ZXMucHVzaCh0aGlzLmNvbnN1bWVDb21wb25lbnRWYWx1ZSgpKSx0PXRoaXMuY29uc3VtZVRva2VuKCl9fSxZQS5wcm90b3R5cGUuY29uc3VtZUZ1bmN0aW9uPWZ1bmN0aW9uKEEpe2Zvcih2YXIgZT17bmFtZTpBLnZhbHVlLHZhbHVlczpbXSx0eXBlOjE4fTs7KXt2YXIgdD10aGlzLmNvbnN1bWVUb2tlbigpO2lmKDMyPT09dC50eXBlfHwzPT09dC50eXBlKXJldHVybiBlO3RoaXMucmVjb25zdW1lVG9rZW4odCksZS52YWx1ZXMucHVzaCh0aGlzLmNvbnN1bWVDb21wb25lbnRWYWx1ZSgpKX19LFlBLnByb3RvdHlwZS5jb25zdW1lVG9rZW49ZnVuY3Rpb24oKXt2YXIgQT10aGlzLl90b2tlbnMuc2hpZnQoKTtyZXR1cm4gdm9pZCAwPT09QT9OQTpBfSxZQS5wcm90b3R5cGUucmVjb25zdW1lVG9rZW49ZnVuY3Rpb24oQSl7dGhpcy5fdG9rZW5zLnVuc2hpZnQoQSl9LFlBKTtmdW5jdGlvbiBZQShBKXt0aGlzLl90b2tlbnM9QX1mdW5jdGlvbiBXQShBKXtyZXR1cm4gMTU9PT1BLnR5cGV9ZnVuY3Rpb24gWkEoQSl7cmV0dXJuIDE3PT09QS50eXBlfWZ1bmN0aW9uIF9BKEEpe3JldHVybiAyMD09PUEudHlwZX1mdW5jdGlvbiBxQShBKXtyZXR1cm4gMD09PUEudHlwZX1mdW5jdGlvbiBqQShBLGUpe3JldHVybiBfQShBKSYmQS52YWx1ZT09PWV9ZnVuY3Rpb24gekEoQSl7cmV0dXJuIDMxIT09QS50eXBlfWZ1bmN0aW9uICRBKEEpe3JldHVybiAzMSE9PUEudHlwZSYmNCE9PUEudHlwZX1mdW5jdGlvbiBBZShBKXt2YXIgZT1bXSx0PVtdO3JldHVybiBBLmZvckVhY2goZnVuY3Rpb24oQSl7aWYoND09PUEudHlwZSl7aWYoMD09PXQubGVuZ3RoKXRocm93IG5ldyBFcnJvcigiRXJyb3IgcGFyc2luZyBmdW5jdGlvbiBhcmdzLCB6ZXJvIHRva2VucyBmb3IgYXJnIik7cmV0dXJuIGUucHVzaCh0KSx2b2lkKHQ9W10pfTMxIT09QS50eXBlJiZ0LnB1c2goQSl9KSx0Lmxlbmd0aCYmZS5wdXNoKHQpLGV9ZnVuY3Rpb24gZWUoQSl7cmV0dXJuIDE3PT09QS50eXBlfHwxNT09PUEudHlwZX1mdW5jdGlvbiB0ZShBKXtyZXR1cm4gMTY9PT1BLnR5cGV8fGVlKEEpfWZ1bmN0aW9uIHJlKEEpe3JldHVybiAxPEEubGVuZ3RoP1tBWzBdLEFbMV1dOltBWzBdXX1mdW5jdGlvbiBCZShBLGUsdCl7dmFyIHI9QVswXSxBPUFbMV07cmV0dXJuW1VlKHIsZSksVWUodm9pZCAwIT09QT9BOnIsdCldfWZ1bmN0aW9uIG5lKEEpe3JldHVybiAxNT09PUEudHlwZSYmKCJkZWciPT09QS51bml0fHwiZ3JhZCI9PT1BLnVuaXR8fCJyYWQiPT09QS51bml0fHwidHVybiI9PT1BLnVuaXQpfWZ1bmN0aW9uIHNlKEEpe3N3aXRjaChBLmZpbHRlcihfQSkubWFwKGZ1bmN0aW9uKEEpe3JldHVybiBBLnZhbHVlfSkuam9pbigiICIpKXtjYXNlInRvIGJvdHRvbSByaWdodCI6Y2FzZSJ0byByaWdodCBib3R0b20iOmNhc2UibGVmdCB0b3AiOmNhc2UidG9wIGxlZnQiOnJldHVyblthZSxhZV07Y2FzZSJ0byB0b3AiOmNhc2UiYm90dG9tIjpyZXR1cm4gQ2UoMCk7Y2FzZSJ0byBib3R0b20gbGVmdCI6Y2FzZSJ0byBsZWZ0IGJvdHRvbSI6Y2FzZSJyaWdodCB0b3AiOmNhc2UidG9wIHJpZ2h0IjpyZXR1cm5bYWUsd2VdO2Nhc2UidG8gcmlnaHQiOmNhc2UibGVmdCI6cmV0dXJuIENlKDkwKTtjYXNlInRvIHRvcCBsZWZ0IjpjYXNlInRvIGxlZnQgdG9wIjpjYXNlInJpZ2h0IGJvdHRvbSI6Y2FzZSJib3R0b20gcmlnaHQiOnJldHVyblt3ZSx3ZV07Y2FzZSJ0byBib3R0b20iOmNhc2UidG9wIjpyZXR1cm4gQ2UoMTgwKTtjYXNlInRvIHRvcCByaWdodCI6Y2FzZSJ0byByaWdodCB0b3AiOmNhc2UibGVmdCBib3R0b20iOmNhc2UiYm90dG9tIGxlZnQiOnJldHVyblt3ZSxhZV07Y2FzZSJ0byBsZWZ0IjpjYXNlInJpZ2h0IjpyZXR1cm4gQ2UoMjcwKX1yZXR1cm4gMH1mdW5jdGlvbiBvZShBKXtyZXR1cm4gMD09KDI1NSZBKX1mdW5jdGlvbiBpZShBKXt2YXIgZT0yNTUmQSx0PTI1NSZBPj44LHI9MjU1JkE+PjE2LEE9MjU1JkE+PjI0O3JldHVybiBlPDI1NT8icmdiYSgiK0ErIiwiK3IrIiwiK3QrIiwiK2UvMjU1KyIpIjoicmdiKCIrQSsiLCIrcisiLCIrdCsiKSJ9ZnVuY3Rpb24gUWUoQSxlKXtpZigxNz09PUEudHlwZSlyZXR1cm4gQS5udW1iZXI7aWYoMTYhPT1BLnR5cGUpcmV0dXJuIDA7dmFyIHQ9Mz09PWU/MToyNTU7cmV0dXJuIDM9PT1lP0EubnVtYmVyLzEwMCp0Ok1hdGgucm91bmQoQS5udW1iZXIvMTAwKnQpfXZhciBjZT1mdW5jdGlvbihBLGUpe3JldHVybiAxMT09PWUmJjEyPT09QS50eXBlfHwoMjg9PT1lJiYyOT09PUEudHlwZXx8Mj09PWUmJjM9PT1BLnR5cGUpfSxhZT17dHlwZToxNyxudW1iZXI6MCxmbGFnczo0fSxnZT17dHlwZToxNixudW1iZXI6NTAsZmxhZ3M6NH0sd2U9e3R5cGU6MTYsbnVtYmVyOjEwMCxmbGFnczo0fSxVZT1mdW5jdGlvbihBLGUpe2lmKDE2PT09QS50eXBlKXJldHVybiBBLm51bWJlci8xMDAqZTtpZihXQShBKSlzd2l0Y2goQS51bml0KXtjYXNlInJlbSI6Y2FzZSJlbSI6cmV0dXJuIDE2KkEubnVtYmVyO2RlZmF1bHQ6cmV0dXJuIEEubnVtYmVyfXJldHVybiBBLm51bWJlcn0sbGU9ZnVuY3Rpb24oQSxlKXtpZigxNT09PWUudHlwZSlzd2l0Y2goZS51bml0KXtjYXNlImRlZyI6cmV0dXJuIE1hdGguUEkqZS5udW1iZXIvMTgwO2Nhc2UiZ3JhZCI6cmV0dXJuIE1hdGguUEkvMjAwKmUubnVtYmVyO2Nhc2UicmFkIjpyZXR1cm4gZS5udW1iZXI7Y2FzZSJ0dXJuIjpyZXR1cm4gMipNYXRoLlBJKmUubnVtYmVyfXRocm93IG5ldyBFcnJvcigiVW5zdXBwb3J0ZWQgYW5nbGUgdHlwZSIpfSxDZT1mdW5jdGlvbihBKXtyZXR1cm4gTWF0aC5QSSpBLzE4MH0sdWU9ZnVuY3Rpb24oQSxlKXtpZigxOD09PWUudHlwZSl7dmFyIHQ9bWVbZS5uYW1lXTtpZih2b2lkIDA9PT10KXRocm93IG5ldyBFcnJvcignQXR0ZW1wdGluZyB0byBwYXJzZSBhbiB1bnN1cHBvcnRlZCBjb2xvciBmdW5jdGlvbiAiJytlLm5hbWUrJyInKTtyZXR1cm4gdChBLGUudmFsdWVzKX1pZig1PT09ZS50eXBlKXtpZigzPT09ZS52YWx1ZS5sZW5ndGgpe3ZhciByPWUudmFsdWUuc3Vic3RyaW5nKDAsMSksQj1lLnZhbHVlLnN1YnN0cmluZygxLDIpLG49ZS52YWx1ZS5zdWJzdHJpbmcoMiwzKTtyZXR1cm4gRmUocGFyc2VJbnQocityLDE2KSxwYXJzZUludChCK0IsMTYpLHBhcnNlSW50KG4rbiwxNiksMSl9aWYoND09PWUudmFsdWUubGVuZ3RoKXt2YXIgcj1lLnZhbHVlLnN1YnN0cmluZygwLDEpLEI9ZS52YWx1ZS5zdWJzdHJpbmcoMSwyKSxuPWUudmFsdWUuc3Vic3RyaW5nKDIsMykscz1lLnZhbHVlLnN1YnN0cmluZygzLDQpO3JldHVybiBGZShwYXJzZUludChyK3IsMTYpLHBhcnNlSW50KEIrQiwxNikscGFyc2VJbnQobituLDE2KSxwYXJzZUludChzK3MsMTYpLzI1NSl9aWYoNj09PWUudmFsdWUubGVuZ3RoKXtyPWUudmFsdWUuc3Vic3RyaW5nKDAsMiksQj1lLnZhbHVlLnN1YnN0cmluZygyLDQpLG49ZS52YWx1ZS5zdWJzdHJpbmcoNCw2KTtyZXR1cm4gRmUocGFyc2VJbnQociwxNikscGFyc2VJbnQoQiwxNikscGFyc2VJbnQobiwxNiksMSl9aWYoOD09PWUudmFsdWUubGVuZ3RoKXtyPWUudmFsdWUuc3Vic3RyaW5nKDAsMiksQj1lLnZhbHVlLnN1YnN0cmluZygyLDQpLG49ZS52YWx1ZS5zdWJzdHJpbmcoNCw2KSxzPWUudmFsdWUuc3Vic3RyaW5nKDYsOCk7cmV0dXJuIEZlKHBhcnNlSW50KHIsMTYpLHBhcnNlSW50KEIsMTYpLHBhcnNlSW50KG4sMTYpLHBhcnNlSW50KHMsMTYpLzI1NSl9fWlmKDIwPT09ZS50eXBlKXtlPUxlW2UudmFsdWUudG9VcHBlckNhc2UoKV07aWYodm9pZCAwIT09ZSlyZXR1cm4gZX1yZXR1cm4gTGUuVFJBTlNQQVJFTlR9LEZlPWZ1bmN0aW9uKEEsZSx0LHIpe3JldHVybihBPDwyNHxlPDwxNnx0PDw4fE1hdGgucm91bmQoMjU1KnIpPDwwKT4+PjB9LGhlPWZ1bmN0aW9uKEEsZSl7ZT1lLmZpbHRlcigkQSk7aWYoMz09PWUubGVuZ3RoKXt2YXIgdD1lLm1hcChRZSkscj10WzBdLEI9dFsxXSx0PXRbMl07cmV0dXJuIEZlKHIsQix0LDEpfWlmKDQhPT1lLmxlbmd0aClyZXR1cm4gMDtlPWUubWFwKFFlKSxyPWVbMF0sQj1lWzFdLHQ9ZVsyXSxlPWVbM107cmV0dXJuIEZlKHIsQix0LGUpfTtmdW5jdGlvbiBkZShBLGUsdCl7cmV0dXJuIHQ8MCYmKHQrPTEpLDE8PXQmJi0tdCx0PDEvNj8oZS1BKSp0KjYrQTp0PC41P2U6dDwyLzM/NiooZS1BKSooMi8zLXQpK0E6QX1mdW5jdGlvbiBmZShBLGUpe3JldHVybiB1ZShBLEpBLmNyZWF0ZShlKS5wYXJzZUNvbXBvbmVudFZhbHVlKCkpfWZ1bmN0aW9uIEhlKEEsZSl7cmV0dXJuIEE9dWUoQSxlWzBdKSwoZT1lWzFdKSYmdGUoZSk/e2NvbG9yOkEsc3RvcDplfTp7Y29sb3I6QSxzdG9wOm51bGx9fWZ1bmN0aW9uIHBlKEEsdCl7dmFyIGU9QVswXSxyPUFbQS5sZW5ndGgtMV07bnVsbD09PWUuc3RvcCYmKGUuc3RvcD1hZSksbnVsbD09PXIuc3RvcCYmKHIuc3RvcD13ZSk7Zm9yKHZhciBCPVtdLG49MCxzPTA7czxBLmxlbmd0aDtzKyspe3ZhciBvPUFbc10uc3RvcDtudWxsIT09bz8objwobz1VZShvLHQpKT9CLnB1c2gobyk6Qi5wdXNoKG4pLG49byk6Qi5wdXNoKG51bGwpfWZvcih2YXIgaT1udWxsLHM9MDtzPEIubGVuZ3RoO3MrKyl7dmFyIFE9QltzXTtpZihudWxsPT09USludWxsPT09aSYmKGk9cyk7ZWxzZSBpZihudWxsIT09aSl7Zm9yKHZhciBjPXMtaSxhPShRLUJbaS0xXSkvKDErYyksZz0xO2c8PWM7ZysrKUJbaStnLTFdPWEqZztpPW51bGx9fXJldHVybiBBLm1hcChmdW5jdGlvbihBLGUpe3JldHVybntjb2xvcjpBLmNvbG9yLHN0b3A6TWF0aC5tYXgoTWF0aC5taW4oMSxCW2VdL3QpLDApfX0pfWZ1bmN0aW9uIEVlKEEsZSx0KXt2YXIgcj0ibnVtYmVyIj09dHlwZW9mIEE/QToocz1lLzIscj0obj10KS8yLHM9VWUoKEI9QSlbMF0sZSktcyxuPXItVWUoQlsxXSxuKSwoTWF0aC5hdGFuMihuLHMpKzIqTWF0aC5QSSklKDIqTWF0aC5QSSkpLEI9TWF0aC5hYnMoZSpNYXRoLnNpbihyKSkrTWF0aC5hYnModCpNYXRoLmNvcyhyKSksbj1lLzIscz10LzIsZT1CLzIsdD1NYXRoLnNpbihyLU1hdGguUEkvMikqZSxlPU1hdGguY29zKHItTWF0aC5QSS8yKSplO3JldHVybltCLG4tZSxuK2Uscy10LHMrdF19ZnVuY3Rpb24gSWUoQSxlKXtyZXR1cm4gTWF0aC5zcXJ0KEEqQStlKmUpfWZ1bmN0aW9uIHllKEEsZSxCLG4scyl7cmV0dXJuW1swLDBdLFswLGVdLFtBLDBdLFtBLGVdXS5yZWR1Y2UoZnVuY3Rpb24oQSxlKXt2YXIgdD1lWzBdLHI9ZVsxXSxyPUllKEItdCxuLXIpO3JldHVybihzP3I8QS5vcHRpbXVtRGlzdGFuY2U6cj5BLm9wdGltdW1EaXN0YW5jZSk/e29wdGltdW1Db3JuZXI6ZSxvcHRpbXVtRGlzdGFuY2U6cn06QX0se29wdGltdW1EaXN0YW5jZTpzPzEvMDotMS8wLG9wdGltdW1Db3JuZXI6bnVsbH0pLm9wdGltdW1Db3JuZXJ9dmFyIEtlPWZ1bmN0aW9uKEEsZSl7dmFyIHQ9ZS5maWx0ZXIoJEEpLHI9dFswXSxCPXRbMV0sbj10WzJdLGU9dFszXSx0PSgxNz09PXIudHlwZT9DZShyLm51bWJlcik6bGUoQSxyKSkvKDIqTWF0aC5QSSksQT10ZShCKT9CLm51bWJlci8xMDA6MCxyPXRlKG4pP24ubnVtYmVyLzEwMDowLEI9dm9pZCAwIT09ZSYmdGUoZSk/VWUoZSwxKToxO2lmKDA9PUEpcmV0dXJuIEZlKDI1NSpyLDI1NSpyLDI1NSpyLDEpO249cjw9LjU/ciooMStBKTpyK0EtcipBLGU9MipyLW4sQT1kZShlLG4sdCsxLzMpLHI9ZGUoZSxuLHQpLHQ9ZGUoZSxuLHQtMS8zKTtyZXR1cm4gRmUoMjU1KkEsMjU1KnIsMjU1KnQsQil9LG1lPXtoc2w6S2UsaHNsYTpLZSxyZ2I6aGUscmdiYTpoZX0sTGU9e0FMSUNFQkxVRTo0MDQyODUwMzAzLEFOVElRVUVXSElURTo0MjA5NzYwMjU1LEFRVUE6MTY3NzcyMTUsQVFVQU1BUklORToyMTQ3NDcyNjM5LEFaVVJFOjQwNDMzMDkwNTUsQkVJR0U6NDEyNjUzMDgxNSxCSVNRVUU6NDI5MzE4MjcxOSxCTEFDSzoyNTUsQkxBTkNIRURBTE1PTkQ6NDI5MzY0Mzc3NSxCTFVFOjY1NTM1LEJMVUVWSU9MRVQ6MjMxODEzMTk2NyxCUk9XTjoyNzcxMDA0MTU5LEJVUkxZV09PRDozNzM2NjM1MzkxLENBREVUQkxVRToxNjA0MjMxNDIzLENIQVJUUkVVU0U6MjE0NzQxODM2NyxDSE9DT0xBVEU6MzUzMDEwNDU3NSxDT1JBTDo0Mjg2NTMzODg3LENPUk5GTE9XRVJCTFVFOjE2ODc1NDczOTEsQ09STlNJTEs6NDI5NDQ5OTU4MyxDUklNU09OOjM2OTIzMTM4NTUsQ1lBTjoxNjc3NzIxNSxEQVJLQkxVRTozNTgzOSxEQVJLQ1lBTjo5MTQ1MzQzLERBUktHT0xERU5ST0Q6MzA5NTgzNzY5NSxEQVJLR1JBWToyODQ2NDY4NjA3LERBUktHUkVFTjo2NTUzODU1LERBUktHUkVZOjI4NDY0Njg2MDcsREFSS0tIQUtJOjMxODI5MTQ1NTksREFSS01BR0VOVEE6MjMzMjA2ODg2MyxEQVJLT0xJVkVHUkVFTjoxNDMzMDg3OTk5LERBUktPUkFOR0U6NDI4NzM2NTM3NSxEQVJLT1JDSElEOjI1NzAyNDMzMjcsREFSS1JFRDoyMzMyMDMzMjc5LERBUktTQUxNT046MzkxODk1MzIxNSxEQVJLU0VBR1JFRU46MjQxMTQ5OTUxOSxEQVJLU0xBVEVCTFVFOjEyMTE5OTMwODcsREFSS1NMQVRFR1JBWTo3OTM3MjY5NzUsREFSS1NMQVRFR1JFWTo3OTM3MjY5NzUsREFSS1RVUlFVT0lTRToxMzU1NDE3NSxEQVJLVklPTEVUOjI0ODMwODIyMzksREVFUFBJTks6NDI3OTUzODY4NyxERUVQU0tZQkxVRToxMjU4MjkxMSxESU1HUkFZOjE3Njg1MTYwOTUsRElNR1JFWToxNzY4NTE2MDk1LERPREdFUkJMVUU6NTEyODE5MTk5LEZJUkVCUklDSzoyOTg4NTgxNjMxLEZMT1JBTFdISVRFOjQyOTQ2MzU3NzUsRk9SRVNUR1JFRU46NTc5NTQzODA3LEZVQ0hTSUE6NDI3ODI1NTYxNSxHQUlOU0JPUk86MzcwNTQ2MjAxNSxHSE9TVFdISVRFOjQxNzcwNjgwMzEsR09MRDo0MjkyMjgwNTc1LEdPTERFTlJPRDozNjY4MjU0OTc1LEdSQVk6MjE1NTkwNTI3OSxHUkVFTjo4Mzg4ODYzLEdSRUVOWUVMTE9XOjI5MTkxODIzMzUsR1JFWToyMTU1OTA1Mjc5LEhPTkVZREVXOjQwNDMzMDUyMTUsSE9UUElOSzo0Mjg1MTE3Njk1LElORElBTlJFRDozNDQ1MzgyMzk5LElORElHTzoxMjU4MzI0NzM1LElWT1JZOjQyOTQ5NjM0NTUsS0hBS0k6NDA0MTY0MTIxNSxMQVZFTkRFUjozODczODk3MjE1LExBVkVOREVSQkxVU0g6NDI5Mzk4MTY5NSxMQVdOR1JFRU46MjA5Njg5MDExMSxMRU1PTkNISUZGT046NDI5NDYyNjgxNSxMSUdIVEJMVUU6MjkxNjY3MzI3OSxMSUdIVENPUkFMOjQwMzQ5NTM0NzEsTElHSFRDWUFOOjM3NzQ4NzM1OTksTElHSFRHT0xERU5ST0RZRUxMT1c6NDIxMDc0MjAxNSxMSUdIVEdSQVk6MzU1Mzg3NDk0MyxMSUdIVEdSRUVOOjI0MzE1NTM3OTEsTElHSFRHUkVZOjM1NTM4NzQ5NDMsTElHSFRQSU5LOjQyOTAxNjcyOTUsTElHSFRTQUxNT046NDI4ODcwNzMyNyxMSUdIVFNFQUdSRUVOOjU0ODU4MDA5NSxMSUdIVFNLWUJMVUU6MjI3ODQ4ODgzMSxMSUdIVFNMQVRFR1JBWToyMDA1NDQxMDIzLExJR0hUU0xBVEVHUkVZOjIwMDU0NDEwMjMsTElHSFRTVEVFTEJMVUU6Mjk2NTY5MjE1OSxMSUdIVFlFTExPVzo0Mjk0OTU5MzU5LExJTUU6MTY3MTE5MzUsTElNRUdSRUVOOjg1MjMwODczNSxMSU5FTjo0MjEwMDkxNzc1LE1BR0VOVEE6NDI3ODI1NTYxNSxNQVJPT046MjE0NzQ4MzkwMyxNRURJVU1BUVVBTUFSSU5FOjE3MjQ3NTQ2ODcsTUVESVVNQkxVRTo1MjczNSxNRURJVU1PUkNISUQ6MzEyNjE4NzAwNyxNRURJVU1QVVJQTEU6MjQ3MzY0NzEwMyxNRURJVU1TRUFHUkVFTjoxMDE4MzkzMDg3LE1FRElVTVNMQVRFQkxVRToyMDcwNDc0NDk1LE1FRElVTVNQUklOR0dSRUVOOjE2NDIzNjc5LE1FRElVTVRVUlFVT0lTRToxMjIxNzA5MDU1LE1FRElVTVZJT0xFVFJFRDozMzQwMDc2NTQzLE1JRE5JR0hUQkxVRTo0MjEwOTc3MjcsTUlOVENSRUFNOjQxMjcxOTM4NTUsTUlTVFlST1NFOjQyOTMxOTAxNDMsTU9DQ0FTSU46NDI5MzE3ODg3OSxOQVZBSk9XSElURTo0MjkyNzgzNjE1LE5BVlk6MzMwMjMsT0xETEFDRTo0MjYwNzUxMTAzLE9MSVZFOjIxNTU4NzI1MTEsT0xJVkVEUkFCOjE4MDQ0Nzc0MzksT1JBTkdFOjQyODkwMDM3NzUsT1JBTkdFUkVEOjQyODI3MTIzMTksT1JDSElEOjM2NjQ4MjgxNTksUEFMRUdPTERFTlJPRDo0MDA4MjI1NTM1LFBBTEVHUkVFTjoyNTY2NjI1NTM1LFBBTEVUVVJRVU9JU0U6Mjk1MTY3MTU1MSxQQUxFVklPTEVUUkVEOjM2ODE1ODgyMjMsUEFQQVlBV0hJUDo0MjkzOTA3OTY3LFBFQUNIUFVGRjo0MjkyNTI0NTQzLFBFUlU6MzQ0ODA2MTk1MSxQSU5LOjQyOTA4MjUyMTUsUExVTTozNzE4MzA3MzI3LFBPV0RFUkJMVUU6Mjk2NzUyOTIxNSxQVVJQTEU6MjE0NzUxNjY3MSxSRUJFQ0NBUFVSUExFOjE3MTQ2NTc3OTEsUkVEOjQyNzgxOTAzMzUsUk9TWUJST1dOOjMxNjM1MjUxMTksUk9ZQUxCTFVFOjEwOTc0NTgxNzUsU0FERExFQlJPV046MjMzNjU2MDEyNyxTQUxNT046NDIwMjcyMjA0NyxTQU5EWUJST1dOOjQxMDQ0MTM0MzksU0VBR1JFRU46NzgwODgzOTY3LFNFQVNIRUxMOjQyOTQzMDc1ODMsU0lFTk5BOjI2ODk3NDAyODcsU0lMVkVSOjMyMzM4NTc3OTEsU0tZQkxVRToyMjc4NDg0OTkxLFNMQVRFQkxVRToxNzg0MzM1ODcxLFNMQVRFR1JBWToxODg3NDczOTE5LFNMQVRFR1JFWToxODg3NDczOTE5LFNOT1c6NDI5NDYzODMzNSxTUFJJTkdHUkVFTjoxNjc0NDQ0NyxTVEVFTEJMVUU6MTE4Mjk3MTEzNSxUQU46MzUzNTA0NzkzNSxURUFMOjg0MjE2MzEsVEhJU1RMRTozNjM2NDUxNTgzLFRPTUFUTzo0Mjg0Njk2NTc1LFRSQU5TUEFSRU5UOjAsVFVSUVVPSVNFOjEwODg0NzUzOTEsVklPTEVUOjQwMDE1NTgyNzEsV0hFQVQ6NDEyNTAxMjk5MSxXSElURTo0Mjk0OTY3Mjk1LFdISVRFU01PS0U6NDEyNjUzNzIxNSxZRUxMT1c6NDI5NDkwMjAxNSxZRUxMT1dHUkVFTjoyNTk3MTM5MTk5fSxiZT17bmFtZToiYmFja2dyb3VuZC1jbGlwIixpbml0aWFsVmFsdWU6ImJvcmRlci1ib3giLHByZWZpeDohMSx0eXBlOjEscGFyc2U6ZnVuY3Rpb24oQSxlKXtyZXR1cm4gZS5tYXAoZnVuY3Rpb24oQSl7aWYoX0EoQSkpc3dpdGNoKEEudmFsdWUpe2Nhc2UicGFkZGluZy1ib3giOnJldHVybiAxO2Nhc2UiY29udGVudC1ib3giOnJldHVybiAyfXJldHVybiAwfSl9fSxEZT17bmFtZToiYmFja2dyb3VuZC1jb2xvciIsaW5pdGlhbFZhbHVlOiJ0cmFuc3BhcmVudCIscHJlZml4OiExLHR5cGU6Myxmb3JtYXQ6ImNvbG9yIn0sS2U9ZnVuY3Rpb24odCxBKXt2YXIgcj1DZSgxODApLEI9W107cmV0dXJuIEFlKEEpLmZvckVhY2goZnVuY3Rpb24oQSxlKXtpZigwPT09ZSl7ZT1BWzBdO2lmKDIwPT09ZS50eXBlJiYtMSE9PVsidG9wIiwibGVmdCIsInJpZ2h0IiwiYm90dG9tIl0uaW5kZXhPZihlLnZhbHVlKSlyZXR1cm4gdm9pZChyPXNlKEEpKTtpZihuZShlKSlyZXR1cm4gdm9pZChyPShsZSh0LGUpK0NlKDI3MCkpJUNlKDM2MCkpfUE9SGUodCxBKTtCLnB1c2goQSl9KSx7YW5nbGU6cixzdG9wczpCLHR5cGU6MX19LHZlPSJjbG9zZXN0LXNpZGUiLHhlPSJmYXJ0aGVzdC1zaWRlIixNZT0iY2xvc2VzdC1jb3JuZXIiLFNlPSJmYXJ0aGVzdC1jb3JuZXIiLFRlPSJlbGxpcHNlIixHZT0iY29udGFpbiIsaGU9ZnVuY3Rpb24ocixBKXt2YXIgQj0wLG49MyxzPVtdLG89W107cmV0dXJuIEFlKEEpLmZvckVhY2goZnVuY3Rpb24oQSxlKXt2YXIgdD0hMDswPT09ZT90PUEucmVkdWNlKGZ1bmN0aW9uKEEsZSl7aWYoX0EoZSkpc3dpdGNoKGUudmFsdWUpe2Nhc2UiY2VudGVyIjpyZXR1cm4gby5wdXNoKGdlKSwhMTtjYXNlInRvcCI6Y2FzZSJsZWZ0IjpyZXR1cm4gby5wdXNoKGFlKSwhMTtjYXNlInJpZ2h0IjpjYXNlImJvdHRvbSI6cmV0dXJuIG8ucHVzaCh3ZSksITF9ZWxzZSBpZih0ZShlKXx8ZWUoZSkpcmV0dXJuIG8ucHVzaChlKSwhMTtyZXR1cm4gQX0sdCk6MT09PWUmJih0PUEucmVkdWNlKGZ1bmN0aW9uKEEsZSl7aWYoX0EoZSkpc3dpdGNoKGUudmFsdWUpe2Nhc2UiY2lyY2xlIjpyZXR1cm4gQj0wLCExO2Nhc2UgVGU6cmV0dXJuIShCPTEpO2Nhc2UgR2U6Y2FzZSB2ZTpyZXR1cm4gbj0wLCExO2Nhc2UgeGU6cmV0dXJuIShuPTEpO2Nhc2UgTWU6cmV0dXJuIShuPTIpO2Nhc2UiY292ZXIiOmNhc2UgU2U6cmV0dXJuIShuPTMpfWVsc2UgaWYoZWUoZSl8fHRlKGUpKXJldHVybihuPSFBcnJheS5pc0FycmF5KG4pP1tdOm4pLnB1c2goZSksITE7cmV0dXJuIEF9LHQpKSx0JiYoQT1IZShyLEEpLHMucHVzaChBKSl9KSx7c2l6ZTpuLHNoYXBlOkIsc3RvcHM6cyxwb3NpdGlvbjpvLHR5cGU6Mn19LE9lPWZ1bmN0aW9uKEEsZSl7aWYoMjI9PT1lLnR5cGUpe3ZhciB0PXt1cmw6ZS52YWx1ZSx0eXBlOjB9O3JldHVybiBBLmNhY2hlLmFkZEltYWdlKGUudmFsdWUpLHR9aWYoMTghPT1lLnR5cGUpdGhyb3cgbmV3IEVycm9yKCJVbnN1cHBvcnRlZCBpbWFnZSB0eXBlICIrZS50eXBlKTt0PWtlW2UubmFtZV07aWYodm9pZCAwPT09dCl0aHJvdyBuZXcgRXJyb3IoJ0F0dGVtcHRpbmcgdG8gcGFyc2UgYW4gdW5zdXBwb3J0ZWQgaW1hZ2UgZnVuY3Rpb24gIicrZS5uYW1lKyciJyk7cmV0dXJuIHQoQSxlLnZhbHVlcyl9O3ZhciBWZSxrZT17ImxpbmVhci1ncmFkaWVudCI6ZnVuY3Rpb24odCxBKXt2YXIgcj1DZSgxODApLEI9W107cmV0dXJuIEFlKEEpLmZvckVhY2goZnVuY3Rpb24oQSxlKXtpZigwPT09ZSl7ZT1BWzBdO2lmKDIwPT09ZS50eXBlJiYidG8iPT09ZS52YWx1ZSlyZXR1cm4gdm9pZChyPXNlKEEpKTtpZihuZShlKSlyZXR1cm4gdm9pZChyPWxlKHQsZSkpfUE9SGUodCxBKTtCLnB1c2goQSl9KSx7YW5nbGU6cixzdG9wczpCLHR5cGU6MX19LCItbW96LWxpbmVhci1ncmFkaWVudCI6S2UsIi1tcy1saW5lYXItZ3JhZGllbnQiOktlLCItby1saW5lYXItZ3JhZGllbnQiOktlLCItd2Via2l0LWxpbmVhci1ncmFkaWVudCI6S2UsInJhZGlhbC1ncmFkaWVudCI6ZnVuY3Rpb24oQixBKXt2YXIgbj0wLHM9MyxvPVtdLGk9W107cmV0dXJuIEFlKEEpLmZvckVhY2goZnVuY3Rpb24oQSxlKXt2YXIgdCxyPSEwOzA9PT1lJiYodD0hMSxyPUEucmVkdWNlKGZ1bmN0aW9uKEEsZSl7aWYodClpZihfQShlKSlzd2l0Y2goZS52YWx1ZSl7Y2FzZSJjZW50ZXIiOnJldHVybiBpLnB1c2goZ2UpLEE7Y2FzZSJ0b3AiOmNhc2UibGVmdCI6cmV0dXJuIGkucHVzaChhZSksQTtjYXNlInJpZ2h0IjpjYXNlImJvdHRvbSI6cmV0dXJuIGkucHVzaCh3ZSksQX1lbHNlKHRlKGUpfHxlZShlKSkmJmkucHVzaChlKTtlbHNlIGlmKF9BKGUpKXN3aXRjaChlLnZhbHVlKXtjYXNlImNpcmNsZSI6cmV0dXJuIG49MCwhMTtjYXNlIFRlOnJldHVybiEobj0xKTtjYXNlImF0IjpyZXR1cm4hKHQ9ITApO2Nhc2UgdmU6cmV0dXJuIHM9MCwhMTtjYXNlImNvdmVyIjpjYXNlIHhlOnJldHVybiEocz0xKTtjYXNlIEdlOmNhc2UgTWU6cmV0dXJuIShzPTIpO2Nhc2UgU2U6cmV0dXJuIShzPTMpfWVsc2UgaWYoZWUoZSl8fHRlKGUpKXJldHVybihzPSFBcnJheS5pc0FycmF5KHMpP1tdOnMpLnB1c2goZSksITE7cmV0dXJuIEF9LHIpKSxyJiYoQT1IZShCLEEpLG8ucHVzaChBKSl9KSx7c2l6ZTpzLHNoYXBlOm4sc3RvcHM6byxwb3NpdGlvbjppLHR5cGU6Mn19LCItbW96LXJhZGlhbC1ncmFkaWVudCI6aGUsIi1tcy1yYWRpYWwtZ3JhZGllbnQiOmhlLCItby1yYWRpYWwtZ3JhZGllbnQiOmhlLCItd2Via2l0LXJhZGlhbC1ncmFkaWVudCI6aGUsIi13ZWJraXQtZ3JhZGllbnQiOmZ1bmN0aW9uKHIsQSl7dmFyIGU9Q2UoMTgwKSxCPVtdLG49MTtyZXR1cm4gQWUoQSkuZm9yRWFjaChmdW5jdGlvbihBLGUpe3ZhciB0LEE9QVswXTtpZigwPT09ZSl7aWYoX0EoQSkmJiJsaW5lYXIiPT09QS52YWx1ZSlyZXR1cm4gdm9pZChuPTEpO2lmKF9BKEEpJiYicmFkaWFsIj09PUEudmFsdWUpcmV0dXJuIHZvaWQobj0yKX0xOD09PUEudHlwZSYmKCJmcm9tIj09PUEubmFtZT8odD11ZShyLEEudmFsdWVzWzBdKSxCLnB1c2goe3N0b3A6YWUsY29sb3I6dH0pKToidG8iPT09QS5uYW1lPyh0PXVlKHIsQS52YWx1ZXNbMF0pLEIucHVzaCh7c3RvcDp3ZSxjb2xvcjp0fSkpOiJjb2xvci1zdG9wIiE9PUEubmFtZXx8Mj09PShBPUEudmFsdWVzLmZpbHRlcigkQSkpLmxlbmd0aCYmKHQ9dWUocixBWzFdKSxBPUFbMF0sWkEoQSkmJkIucHVzaCh7c3RvcDp7dHlwZToxNixudW1iZXI6MTAwKkEubnVtYmVyLGZsYWdzOkEuZmxhZ3N9LGNvbG9yOnR9KSkpfSksMT09PW4/e2FuZ2xlOihlK0NlKDE4MCkpJUNlKDM2MCksc3RvcHM6Qix0eXBlOm59OntzaXplOjMsc2hhcGU6MCxzdG9wczpCLHBvc2l0aW9uOltdLHR5cGU6bn19fSxSZT17bmFtZToiYmFja2dyb3VuZC1pbWFnZSIsaW5pdGlhbFZhbHVlOiJub25lIix0eXBlOjEscHJlZml4OiExLHBhcnNlOmZ1bmN0aW9uKGUsQSl7aWYoMD09PUEubGVuZ3RoKXJldHVybltdO3ZhciB0PUFbMF07cmV0dXJuIDIwPT09dC50eXBlJiYibm9uZSI9PT10LnZhbHVlP1tdOkEuZmlsdGVyKGZ1bmN0aW9uKEEpe3JldHVybiAkQShBKSYmISgyMD09PShBPUEpLnR5cGUmJiJub25lIj09PUEudmFsdWV8fDE4PT09QS50eXBlJiYha2VbQS5uYW1lXSl9KS5tYXAoZnVuY3Rpb24oQSl7cmV0dXJuIE9lKGUsQSl9KX19LE5lPXtuYW1lOiJiYWNrZ3JvdW5kLW9yaWdpbiIsaW5pdGlhbFZhbHVlOiJib3JkZXItYm94IixwcmVmaXg6ITEsdHlwZToxLHBhcnNlOmZ1bmN0aW9uKEEsZSl7cmV0dXJuIGUubWFwKGZ1bmN0aW9uKEEpe2lmKF9BKEEpKXN3aXRjaChBLnZhbHVlKXtjYXNlInBhZGRpbmctYm94IjpyZXR1cm4gMTtjYXNlImNvbnRlbnQtYm94IjpyZXR1cm4gMn1yZXR1cm4gMH0pfX0sUGU9e25hbWU6ImJhY2tncm91bmQtcG9zaXRpb24iLGluaXRpYWxWYWx1ZToiMCUgMCUiLHR5cGU6MSxwcmVmaXg6ITEscGFyc2U6ZnVuY3Rpb24oQSxlKXtyZXR1cm4gQWUoZSkubWFwKGZ1bmN0aW9uKEEpe3JldHVybiBBLmZpbHRlcih0ZSl9KS5tYXAocmUpfX0sWGU9e25hbWU6ImJhY2tncm91bmQtcmVwZWF0Iixpbml0aWFsVmFsdWU6InJlcGVhdCIscHJlZml4OiExLHR5cGU6MSxwYXJzZTpmdW5jdGlvbihBLGUpe3JldHVybiBBZShlKS5tYXAoZnVuY3Rpb24oQSl7cmV0dXJuIEEuZmlsdGVyKF9BKS5tYXAoZnVuY3Rpb24oQSl7cmV0dXJuIEEudmFsdWV9KS5qb2luKCIgIil9KS5tYXAoSmUpfX0sSmU9ZnVuY3Rpb24oQSl7c3dpdGNoKEEpe2Nhc2Uibm8tcmVwZWF0IjpyZXR1cm4gMTtjYXNlInJlcGVhdC14IjpjYXNlInJlcGVhdCBuby1yZXBlYXQiOnJldHVybiAyO2Nhc2UicmVwZWF0LXkiOmNhc2Uibm8tcmVwZWF0IHJlcGVhdCI6cmV0dXJuIDM7ZGVmYXVsdDpyZXR1cm4gMH19OyhoZT1WZT1WZXx8e30pLkFVVE89ImF1dG8iLGhlLkNPTlRBSU49ImNvbnRhaW4iO2Z1bmN0aW9uIFllKEEsZSl7cmV0dXJuIF9BKEEpJiYibm9ybWFsIj09PUEudmFsdWU/MS4yKmU6MTc9PT1BLnR5cGU/ZSpBLm51bWJlcjp0ZShBKT9VZShBLGUpOmV9dmFyIFdlLFplLF9lPXtuYW1lOiJiYWNrZ3JvdW5kLXNpemUiLGluaXRpYWxWYWx1ZToiMCIscHJlZml4OiEoaGUuQ09WRVI9ImNvdmVyIiksdHlwZToxLHBhcnNlOmZ1bmN0aW9uKEEsZSl7cmV0dXJuIEFlKGUpLm1hcChmdW5jdGlvbihBKXtyZXR1cm4gQS5maWx0ZXIocWUpfSl9fSxxZT1mdW5jdGlvbihBKXtyZXR1cm4gX0EoQSl8fHRlKEEpfSxoZT1mdW5jdGlvbihBKXtyZXR1cm57bmFtZToiYm9yZGVyLSIrQSsiLWNvbG9yIixpbml0aWFsVmFsdWU6InRyYW5zcGFyZW50IixwcmVmaXg6ITEsdHlwZTozLGZvcm1hdDoiY29sb3IifX0samU9aGUoInRvcCIpLHplPWhlKCJyaWdodCIpLCRlPWhlKCJib3R0b20iKSxBdD1oZSgibGVmdCIpLGhlPWZ1bmN0aW9uKEEpe3JldHVybntuYW1lOiJib3JkZXItcmFkaXVzLSIrQSxpbml0aWFsVmFsdWU6IjAgMCIscHJlZml4OiExLHR5cGU6MSxwYXJzZTpmdW5jdGlvbihBLGUpe3JldHVybiByZShlLmZpbHRlcih0ZSkpfX19LGV0PWhlKCJ0b3AtbGVmdCIpLHR0PWhlKCJ0b3AtcmlnaHQiKSxydD1oZSgiYm90dG9tLXJpZ2h0IiksQnQ9aGUoImJvdHRvbS1sZWZ0IiksaGU9ZnVuY3Rpb24oQSl7cmV0dXJue25hbWU6ImJvcmRlci0iK0ErIi1zdHlsZSIsaW5pdGlhbFZhbHVlOiJzb2xpZCIscHJlZml4OiExLHR5cGU6MixwYXJzZTpmdW5jdGlvbihBLGUpe3N3aXRjaChlKXtjYXNlIm5vbmUiOnJldHVybiAwO2Nhc2UiZGFzaGVkIjpyZXR1cm4gMjtjYXNlImRvdHRlZCI6cmV0dXJuIDM7Y2FzZSJkb3VibGUiOnJldHVybiA0fXJldHVybiAxfX19LG50PWhlKCJ0b3AiKSxzdD1oZSgicmlnaHQiKSxvdD1oZSgiYm90dG9tIiksaXQ9aGUoImxlZnQiKSxoZT1mdW5jdGlvbihBKXtyZXR1cm57bmFtZToiYm9yZGVyLSIrQSsiLXdpZHRoIixpbml0aWFsVmFsdWU6IjAiLHR5cGU6MCxwcmVmaXg6ITEscGFyc2U6ZnVuY3Rpb24oQSxlKXtyZXR1cm4gV0EoZSk/ZS5udW1iZXI6MH19fSxRdD1oZSgidG9wIiksY3Q9aGUoInJpZ2h0IiksYXQ9aGUoImJvdHRvbSIpLGd0PWhlKCJsZWZ0Iiksd3Q9e25hbWU6ImNvbG9yIixpbml0aWFsVmFsdWU6InRyYW5zcGFyZW50IixwcmVmaXg6ITEsdHlwZTozLGZvcm1hdDoiY29sb3IifSxVdD17bmFtZToiZGlyZWN0aW9uIixpbml0aWFsVmFsdWU6Imx0ciIscHJlZml4OiExLHR5cGU6MixwYXJzZTpmdW5jdGlvbihBLGUpe3JldHVybiJydGwiIT09ZT8wOjF9fSxsdD17bmFtZToiZGlzcGxheSIsaW5pdGlhbFZhbHVlOiJpbmxpbmUtYmxvY2siLHByZWZpeDohMSx0eXBlOjEscGFyc2U6ZnVuY3Rpb24oQSxlKXtyZXR1cm4gZS5maWx0ZXIoX0EpLnJlZHVjZShmdW5jdGlvbihBLGUpe3JldHVybiBBfEN0KGUudmFsdWUpfSwwKX19LEN0PWZ1bmN0aW9uKEEpe3N3aXRjaChBKXtjYXNlImJsb2NrIjpjYXNlIi13ZWJraXQtYm94IjpyZXR1cm4gMjtjYXNlImlubGluZSI6cmV0dXJuIDQ7Y2FzZSJydW4taW4iOnJldHVybiA4O2Nhc2UiZmxvdyI6cmV0dXJuIDE2O2Nhc2UiZmxvdy1yb290IjpyZXR1cm4gMzI7Y2FzZSJ0YWJsZSI6cmV0dXJuIDY0O2Nhc2UiZmxleCI6Y2FzZSItd2Via2l0LWZsZXgiOnJldHVybiAxMjg7Y2FzZSJncmlkIjpjYXNlIi1tcy1ncmlkIjpyZXR1cm4gMjU2O2Nhc2UicnVieSI6cmV0dXJuIDUxMjtjYXNlInN1YmdyaWQiOnJldHVybiAxMDI0O2Nhc2UibGlzdC1pdGVtIjpyZXR1cm4gMjA0ODtjYXNlInRhYmxlLXJvdy1ncm91cCI6cmV0dXJuIDQwOTY7Y2FzZSJ0YWJsZS1oZWFkZXItZ3JvdXAiOnJldHVybiA4MTkyO2Nhc2UidGFibGUtZm9vdGVyLWdyb3VwIjpyZXR1cm4gMTYzODQ7Y2FzZSJ0YWJsZS1yb3ciOnJldHVybiAzMjc2ODtjYXNlInRhYmxlLWNlbGwiOnJldHVybiA2NTUzNjtjYXNlInRhYmxlLWNvbHVtbi1ncm91cCI6cmV0dXJuIDEzMTA3MjtjYXNlInRhYmxlLWNvbHVtbiI6cmV0dXJuIDI2MjE0NDtjYXNlInRhYmxlLWNhcHRpb24iOnJldHVybiA1MjQyODg7Y2FzZSJydWJ5LWJhc2UiOnJldHVybiAxMDQ4NTc2O2Nhc2UicnVieS10ZXh0IjpyZXR1cm4gMjA5NzE1MjtjYXNlInJ1YnktYmFzZS1jb250YWluZXIiOnJldHVybiA0MTk0MzA0O2Nhc2UicnVieS10ZXh0LWNvbnRhaW5lciI6cmV0dXJuIDgzODg2MDg7Y2FzZSJjb250ZW50cyI6cmV0dXJuIDE2Nzc3MjE2O2Nhc2UiaW5saW5lLWJsb2NrIjpyZXR1cm4gMzM1NTQ0MzI7Y2FzZSJpbmxpbmUtbGlzdC1pdGVtIjpyZXR1cm4gNjcxMDg4NjQ7Y2FzZSJpbmxpbmUtdGFibGUiOnJldHVybiAxMzQyMTc3Mjg7Y2FzZSJpbmxpbmUtZmxleCI6cmV0dXJuIDI2ODQzNTQ1NjtjYXNlImlubGluZS1ncmlkIjpyZXR1cm4gNTM2ODcwOTEyfXJldHVybiAwfSx1dD17bmFtZToiZmxvYXQiLGluaXRpYWxWYWx1ZToibm9uZSIscHJlZml4OiExLHR5cGU6MixwYXJzZTpmdW5jdGlvbihBLGUpe3N3aXRjaChlKXtjYXNlImxlZnQiOnJldHVybiAxO2Nhc2UicmlnaHQiOnJldHVybiAyO2Nhc2UiaW5saW5lLXN0YXJ0IjpyZXR1cm4gMztjYXNlImlubGluZS1lbmQiOnJldHVybiA0fXJldHVybiAwfX0sRnQ9e25hbWU6ImxldHRlci1zcGFjaW5nIixpbml0aWFsVmFsdWU6IjAiLHByZWZpeDohMSx0eXBlOjAscGFyc2U6ZnVuY3Rpb24oQSxlKXtyZXR1cm4hKDIwPT09ZS50eXBlJiYibm9ybWFsIj09PWUudmFsdWV8fDE3IT09ZS50eXBlJiYxNSE9PWUudHlwZSk/ZS5udW1iZXI6MH19LGh0PXtuYW1lOiJsaW5lLWJyZWFrIixpbml0aWFsVmFsdWU6KGhlPVdlPVdlfHx7fSkuTk9STUFMPSJub3JtYWwiLHByZWZpeDohKGhlLlNUUklDVD0ic3RyaWN0IiksdHlwZToyLHBhcnNlOmZ1bmN0aW9uKEEsZSl7cmV0dXJuInN0cmljdCIhPT1lP1dlLk5PUk1BTDpXZS5TVFJJQ1R9fSxkdD17bmFtZToibGluZS1oZWlnaHQiLGluaXRpYWxWYWx1ZToibm9ybWFsIixwcmVmaXg6ITEsdHlwZTo0fSxmdD17bmFtZToibGlzdC1zdHlsZS1pbWFnZSIsaW5pdGlhbFZhbHVlOiJub25lIix0eXBlOjAscHJlZml4OiExLHBhcnNlOmZ1bmN0aW9uKEEsZSl7cmV0dXJuIDIwPT09ZS50eXBlJiYibm9uZSI9PT1lLnZhbHVlP251bGw6T2UoQSxlKX19LEh0PXtuYW1lOiJsaXN0LXN0eWxlLXBvc2l0aW9uIixpbml0aWFsVmFsdWU6Im91dHNpZGUiLHByZWZpeDohMSx0eXBlOjIscGFyc2U6ZnVuY3Rpb24oQSxlKXtyZXR1cm4iaW5zaWRlIiE9PWU/MTowfX0scHQ9e25hbWU6Imxpc3Qtc3R5bGUtdHlwZSIsaW5pdGlhbFZhbHVlOiJub25lIixwcmVmaXg6ITEsdHlwZToyLHBhcnNlOmZ1bmN0aW9uKEEsZSl7c3dpdGNoKGUpe2Nhc2UiZGlzYyI6cmV0dXJuIDA7Y2FzZSJjaXJjbGUiOnJldHVybiAxO2Nhc2Uic3F1YXJlIjpyZXR1cm4gMjtjYXNlImRlY2ltYWwiOnJldHVybiAzO2Nhc2UiY2prLWRlY2ltYWwiOnJldHVybiA0O2Nhc2UiZGVjaW1hbC1sZWFkaW5nLXplcm8iOnJldHVybiA1O2Nhc2UibG93ZXItcm9tYW4iOnJldHVybiA2O2Nhc2UidXBwZXItcm9tYW4iOnJldHVybiA3O2Nhc2UibG93ZXItZ3JlZWsiOnJldHVybiA4O2Nhc2UibG93ZXItYWxwaGEiOnJldHVybiA5O2Nhc2UidXBwZXItYWxwaGEiOnJldHVybiAxMDtjYXNlImFyYWJpYy1pbmRpYyI6cmV0dXJuIDExO2Nhc2UiYXJtZW5pYW4iOnJldHVybiAxMjtjYXNlImJlbmdhbGkiOnJldHVybiAxMztjYXNlImNhbWJvZGlhbiI6cmV0dXJuIDE0O2Nhc2UiY2prLWVhcnRobHktYnJhbmNoIjpyZXR1cm4gMTU7Y2FzZSJjamstaGVhdmVubHktc3RlbSI6cmV0dXJuIDE2O2Nhc2UiY2prLWlkZW9ncmFwaGljIjpyZXR1cm4gMTc7Y2FzZSJkZXZhbmFnYXJpIjpyZXR1cm4gMTg7Y2FzZSJldGhpb3BpYy1udW1lcmljIjpyZXR1cm4gMTk7Y2FzZSJnZW9yZ2lhbiI6cmV0dXJuIDIwO2Nhc2UiZ3VqYXJhdGkiOnJldHVybiAyMTtjYXNlImd1cm11a2hpIjpjYXNlImhlYnJldyI6cmV0dXJuIDIyO2Nhc2UiaGlyYWdhbmEiOnJldHVybiAyMztjYXNlImhpcmFnYW5hLWlyb2hhIjpyZXR1cm4gMjQ7Y2FzZSJqYXBhbmVzZS1mb3JtYWwiOnJldHVybiAyNTtjYXNlImphcGFuZXNlLWluZm9ybWFsIjpyZXR1cm4gMjY7Y2FzZSJrYW5uYWRhIjpyZXR1cm4gMjc7Y2FzZSJrYXRha2FuYSI6cmV0dXJuIDI4O2Nhc2Uia2F0YWthbmEtaXJvaGEiOnJldHVybiAyOTtjYXNlImtobWVyIjpyZXR1cm4gMzA7Y2FzZSJrb3JlYW4taGFuZ3VsLWZvcm1hbCI6cmV0dXJuIDMxO2Nhc2Uia29yZWFuLWhhbmphLWZvcm1hbCI6cmV0dXJuIDMyO2Nhc2Uia29yZWFuLWhhbmphLWluZm9ybWFsIjpyZXR1cm4gMzM7Y2FzZSJsYW8iOnJldHVybiAzNDtjYXNlImxvd2VyLWFybWVuaWFuIjpyZXR1cm4gMzU7Y2FzZSJtYWxheWFsYW0iOnJldHVybiAzNjtjYXNlIm1vbmdvbGlhbiI6cmV0dXJuIDM3O2Nhc2UibXlhbm1hciI6cmV0dXJuIDM4O2Nhc2Uib3JpeWEiOnJldHVybiAzOTtjYXNlInBlcnNpYW4iOnJldHVybiA0MDtjYXNlInNpbXAtY2hpbmVzZS1mb3JtYWwiOnJldHVybiA0MTtjYXNlInNpbXAtY2hpbmVzZS1pbmZvcm1hbCI6cmV0dXJuIDQyO2Nhc2UidGFtaWwiOnJldHVybiA0MztjYXNlInRlbHVndSI6cmV0dXJuIDQ0O2Nhc2UidGhhaSI6cmV0dXJuIDQ1O2Nhc2UidGliZXRhbiI6cmV0dXJuIDQ2O2Nhc2UidHJhZC1jaGluZXNlLWZvcm1hbCI6cmV0dXJuIDQ3O2Nhc2UidHJhZC1jaGluZXNlLWluZm9ybWFsIjpyZXR1cm4gNDg7Y2FzZSJ1cHBlci1hcm1lbmlhbiI6cmV0dXJuIDQ5O2Nhc2UiZGlzY2xvc3VyZS1vcGVuIjpyZXR1cm4gNTA7Y2FzZSJkaXNjbG9zdXJlLWNsb3NlZCI6cmV0dXJuIDUxO2RlZmF1bHQ6cmV0dXJuLTF9fX0saGU9ZnVuY3Rpb24oQSl7cmV0dXJue25hbWU6Im1hcmdpbi0iK0EsaW5pdGlhbFZhbHVlOiIwIixwcmVmaXg6ITEsdHlwZTo0fX0sRXQ9aGUoInRvcCIpLEl0PWhlKCJyaWdodCIpLHl0PWhlKCJib3R0b20iKSxLdD1oZSgibGVmdCIpLG10PXtuYW1lOiJvdmVyZmxvdyIsaW5pdGlhbFZhbHVlOiJ2aXNpYmxlIixwcmVmaXg6ITEsdHlwZToxLHBhcnNlOmZ1bmN0aW9uKEEsZSl7cmV0dXJuIGUuZmlsdGVyKF9BKS5tYXAoZnVuY3Rpb24oQSl7c3dpdGNoKEEudmFsdWUpe2Nhc2UiaGlkZGVuIjpyZXR1cm4gMTtjYXNlInNjcm9sbCI6cmV0dXJuIDI7Y2FzZSJjbGlwIjpyZXR1cm4gMztjYXNlImF1dG8iOnJldHVybiA0O2RlZmF1bHQ6cmV0dXJuIDB9fSl9fSxMdD17bmFtZToib3ZlcmZsb3ctd3JhcCIsaW5pdGlhbFZhbHVlOiJub3JtYWwiLHByZWZpeDohMSx0eXBlOjIscGFyc2U6ZnVuY3Rpb24oQSxlKXtyZXR1cm4iYnJlYWstd29yZCIhPT1lPyJub3JtYWwiOiJicmVhay13b3JkIn19LGhlPWZ1bmN0aW9uKEEpe3JldHVybntuYW1lOiJwYWRkaW5nLSIrQSxpbml0aWFsVmFsdWU6IjAiLHByZWZpeDohMSx0eXBlOjMsZm9ybWF0OiJsZW5ndGgtcGVyY2VudGFnZSJ9fSxidD1oZSgidG9wIiksRHQ9aGUoInJpZ2h0IiksdnQ9aGUoImJvdHRvbSIpLHh0PWhlKCJsZWZ0IiksTXQ9e25hbWU6InRleHQtYWxpZ24iLGluaXRpYWxWYWx1ZToibGVmdCIscHJlZml4OiExLHR5cGU6MixwYXJzZTpmdW5jdGlvbihBLGUpe3N3aXRjaChlKXtjYXNlInJpZ2h0IjpyZXR1cm4gMjtjYXNlImNlbnRlciI6Y2FzZSJqdXN0aWZ5IjpyZXR1cm4gMTtkZWZhdWx0OnJldHVybiAwfX19LFN0PXtuYW1lOiJwb3NpdGlvbiIsaW5pdGlhbFZhbHVlOiJzdGF0aWMiLHByZWZpeDohMSx0eXBlOjIscGFyc2U6ZnVuY3Rpb24oQSxlKXtzd2l0Y2goZSl7Y2FzZSJyZWxhdGl2ZSI6cmV0dXJuIDE7Y2FzZSJhYnNvbHV0ZSI6cmV0dXJuIDI7Y2FzZSJmaXhlZCI6cmV0dXJuIDM7Y2FzZSJzdGlja3kiOnJldHVybiA0fXJldHVybiAwfX0sVHQ9e25hbWU6InRleHQtc2hhZG93Iixpbml0aWFsVmFsdWU6Im5vbmUiLHR5cGU6MSxwcmVmaXg6ITEscGFyc2U6ZnVuY3Rpb24obixBKXtyZXR1cm4gMT09PUEubGVuZ3RoJiZqQShBWzBdLCJub25lIik/W106QWUoQSkubWFwKGZ1bmN0aW9uKEEpe2Zvcih2YXIgZT17Y29sb3I6TGUuVFJBTlNQQVJFTlQsb2Zmc2V0WDphZSxvZmZzZXRZOmFlLGJsdXI6YWV9LHQ9MCxyPTA7cjxBLmxlbmd0aDtyKyspe3ZhciBCPUFbcl07ZWUoQik/KDA9PT10P2Uub2Zmc2V0WD1COjE9PT10P2Uub2Zmc2V0WT1COmUuYmx1cj1CLHQrKyk6ZS5jb2xvcj11ZShuLEIpfXJldHVybiBlfSl9fSxHdD17bmFtZToidGV4dC10cmFuc2Zvcm0iLGluaXRpYWxWYWx1ZToibm9uZSIscHJlZml4OiExLHR5cGU6MixwYXJzZTpmdW5jdGlvbihBLGUpe3N3aXRjaChlKXtjYXNlInVwcGVyY2FzZSI6cmV0dXJuIDI7Y2FzZSJsb3dlcmNhc2UiOnJldHVybiAxO2Nhc2UiY2FwaXRhbGl6ZSI6cmV0dXJuIDN9cmV0dXJuIDB9fSxPdD17bmFtZToidHJhbnNmb3JtIixpbml0aWFsVmFsdWU6Im5vbmUiLHByZWZpeDohMCx0eXBlOjAscGFyc2U6ZnVuY3Rpb24oQSxlKXtpZigyMD09PWUudHlwZSYmIm5vbmUiPT09ZS52YWx1ZSlyZXR1cm4gbnVsbDtpZigxOCE9PWUudHlwZSlyZXR1cm4gbnVsbDt2YXIgdD1WdFtlLm5hbWVdO2lmKHZvaWQgMD09PXQpdGhyb3cgbmV3IEVycm9yKCdBdHRlbXB0aW5nIHRvIHBhcnNlIGFuIHVuc3VwcG9ydGVkIHRyYW5zZm9ybSBmdW5jdGlvbiAiJytlLm5hbWUrJyInKTtyZXR1cm4gdChlLnZhbHVlcyl9fSxWdD17bWF0cml4OmZ1bmN0aW9uKEEpe0E9QS5maWx0ZXIoZnVuY3Rpb24oQSl7cmV0dXJuIDE3PT09QS50eXBlfSkubWFwKGZ1bmN0aW9uKEEpe3JldHVybiBBLm51bWJlcn0pO3JldHVybiA2PT09QS5sZW5ndGg/QTpudWxsfSxtYXRyaXgzZDpmdW5jdGlvbihBKXt2YXIgZT1BLmZpbHRlcihmdW5jdGlvbihBKXtyZXR1cm4gMTc9PT1BLnR5cGV9KS5tYXAoZnVuY3Rpb24oQSl7cmV0dXJuIEEubnVtYmVyfSksdD1lWzBdLHI9ZVsxXTtlWzJdLGVbM107dmFyIEI9ZVs0XSxuPWVbNV07ZVs2XSxlWzddLGVbOF0sZVs5XSxlWzEwXSxlWzExXTt2YXIgcz1lWzEyXSxBPWVbMTNdO3JldHVybiBlWzE0XSxlWzE1XSwxNj09PWUubGVuZ3RoP1t0LHIsQixuLHMsQV06bnVsbH19LGhlPXt0eXBlOjE2LG51bWJlcjo1MCxmbGFnczo0fSxrdD1baGUsaGVdLFJ0PXtuYW1lOiJ0cmFuc2Zvcm0tb3JpZ2luIixpbml0aWFsVmFsdWU6IjUwJSA1MCUiLHByZWZpeDohMCx0eXBlOjEscGFyc2U6ZnVuY3Rpb24oQSxlKXtlPWUuZmlsdGVyKHRlKTtyZXR1cm4gMiE9PWUubGVuZ3RoP2t0OltlWzBdLGVbMV1dfX0sTnQ9e25hbWU6InZpc2libGUiLGluaXRpYWxWYWx1ZToibm9uZSIscHJlZml4OiExLHR5cGU6MixwYXJzZTpmdW5jdGlvbihBLGUpe3N3aXRjaChlKXtjYXNlImhpZGRlbiI6cmV0dXJuIDE7Y2FzZSJjb2xsYXBzZSI6cmV0dXJuIDI7ZGVmYXVsdDpyZXR1cm4gMH19fTsoaGU9WmU9WmV8fHt9KS5OT1JNQUw9Im5vcm1hbCIsaGUuQlJFQUtfQUxMPSJicmVhay1hbGwiO2Z1bmN0aW9uIFB0KEEsZSl7cmV0dXJuIDAhPShBJmUpfWZ1bmN0aW9uIFh0KEEsZSx0KXtyZXR1cm4oQT1BJiZBW01hdGgubWluKGUsQS5sZW5ndGgtMSldKT90P0Eub3BlbjpBLmNsb3NlOiIifXZhciBKdD17bmFtZToid29yZC1icmVhayIsaW5pdGlhbFZhbHVlOiJub3JtYWwiLHByZWZpeDohKGhlLktFRVBfQUxMPSJrZWVwLWFsbCIpLHR5cGU6MixwYXJzZTpmdW5jdGlvbihBLGUpe3N3aXRjaChlKXtjYXNlImJyZWFrLWFsbCI6cmV0dXJuIFplLkJSRUFLX0FMTDtjYXNlImtlZXAtYWxsIjpyZXR1cm4gWmUuS0VFUF9BTEw7ZGVmYXVsdDpyZXR1cm4gWmUuTk9STUFMfX19LFl0PXtuYW1lOiJ6LWluZGV4Iixpbml0aWFsVmFsdWU6ImF1dG8iLHByZWZpeDohMSx0eXBlOjAscGFyc2U6ZnVuY3Rpb24oQSxlKXtpZigyMD09PWUudHlwZSlyZXR1cm57YXV0bzohMCxvcmRlcjowfTtpZihaQShlKSlyZXR1cm57YXV0bzohMSxvcmRlcjplLm51bWJlcn07dGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIHotaW5kZXggbnVtYmVyIHBhcnNlZCIpfX0sV3Q9ZnVuY3Rpb24oQSxlKXtpZigxNT09PWUudHlwZSlzd2l0Y2goZS51bml0LnRvTG93ZXJDYXNlKCkpe2Nhc2UicyI6cmV0dXJuIDFlMyplLm51bWJlcjtjYXNlIm1zIjpyZXR1cm4gZS5udW1iZXJ9dGhyb3cgbmV3IEVycm9yKCJVbnN1cHBvcnRlZCB0aW1lIHR5cGUiKX0sWnQ9e25hbWU6Im9wYWNpdHkiLGluaXRpYWxWYWx1ZToiMSIsdHlwZTowLHByZWZpeDohMSxwYXJzZTpmdW5jdGlvbihBLGUpe3JldHVybiBaQShlKT9lLm51bWJlcjoxfX0sX3Q9e25hbWU6InRleHQtZGVjb3JhdGlvbi1jb2xvciIsaW5pdGlhbFZhbHVlOiJ0cmFuc3BhcmVudCIscHJlZml4OiExLHR5cGU6Myxmb3JtYXQ6ImNvbG9yIn0scXQ9e25hbWU6InRleHQtZGVjb3JhdGlvbi1saW5lIixpbml0aWFsVmFsdWU6Im5vbmUiLHByZWZpeDohMSx0eXBlOjEscGFyc2U6ZnVuY3Rpb24oQSxlKXtyZXR1cm4gZS5maWx0ZXIoX0EpLm1hcChmdW5jdGlvbihBKXtzd2l0Y2goQS52YWx1ZSl7Y2FzZSJ1bmRlcmxpbmUiOnJldHVybiAxO2Nhc2Uib3ZlcmxpbmUiOnJldHVybiAyO2Nhc2UibGluZS10aHJvdWdoIjpyZXR1cm4gMztjYXNlIm5vbmUiOnJldHVybiA0fXJldHVybiAwfSkuZmlsdGVyKGZ1bmN0aW9uKEEpe3JldHVybiAwIT09QX0pfX0sanQ9e25hbWU6ImZvbnQtZmFtaWx5Iixpbml0aWFsVmFsdWU6IiIscHJlZml4OiExLHR5cGU6MSxwYXJzZTpmdW5jdGlvbihBLGUpe3ZhciB0PVtdLHI9W107cmV0dXJuIGUuZm9yRWFjaChmdW5jdGlvbihBKXtzd2l0Y2goQS50eXBlKXtjYXNlIDIwOmNhc2UgMDp0LnB1c2goQS52YWx1ZSk7YnJlYWs7Y2FzZSAxNzp0LnB1c2goQS5udW1iZXIudG9TdHJpbmcoKSk7YnJlYWs7Y2FzZSA0OnIucHVzaCh0LmpvaW4oIiAiKSksdC5sZW5ndGg9MH19KSx0Lmxlbmd0aCYmci5wdXNoKHQuam9pbigiICIpKSxyLm1hcChmdW5jdGlvbihBKXtyZXR1cm4tMT09PUEuaW5kZXhPZigiICIpP0E6IiciK0ErIicifSl9fSx6dD17bmFtZToiZm9udC1zaXplIixpbml0aWFsVmFsdWU6IjAiLHByZWZpeDohMSx0eXBlOjMsZm9ybWF0OiJsZW5ndGgifSwkdD17bmFtZToiZm9udC13ZWlnaHQiLGluaXRpYWxWYWx1ZToibm9ybWFsIix0eXBlOjAscHJlZml4OiExLHBhcnNlOmZ1bmN0aW9uKEEsZSl7cmV0dXJuIFpBKGUpP2UubnVtYmVyOiFfQShlKXx8ImJvbGQiIT09ZS52YWx1ZT80MDA6NzAwfX0sQXI9e25hbWU6ImZvbnQtdmFyaWFudCIsaW5pdGlhbFZhbHVlOiJub25lIix0eXBlOjEscHJlZml4OiExLHBhcnNlOmZ1bmN0aW9uKEEsZSl7cmV0dXJuIGUuZmlsdGVyKF9BKS5tYXAoZnVuY3Rpb24oQSl7cmV0dXJuIEEudmFsdWV9KX19LGVyPXtuYW1lOiJmb250LXN0eWxlIixpbml0aWFsVmFsdWU6Im5vcm1hbCIscHJlZml4OiExLHR5cGU6MixwYXJzZTpmdW5jdGlvbihBLGUpe3N3aXRjaChlKXtjYXNlIm9ibGlxdWUiOnJldHVybiJvYmxpcXVlIjtjYXNlIml0YWxpYyI6cmV0dXJuIml0YWxpYyI7ZGVmYXVsdDpyZXR1cm4ibm9ybWFsIn19fSx0cj17bmFtZToiY29udGVudCIsaW5pdGlhbFZhbHVlOiJub25lIix0eXBlOjEscHJlZml4OiExLHBhcnNlOmZ1bmN0aW9uKEEsZSl7aWYoMD09PWUubGVuZ3RoKXJldHVybltdO3ZhciB0PWVbMF07cmV0dXJuIDIwPT09dC50eXBlJiYibm9uZSI9PT10LnZhbHVlP1tdOmV9fSxycj17bmFtZToiY291bnRlci1pbmNyZW1lbnQiLGluaXRpYWxWYWx1ZToibm9uZSIscHJlZml4OiEwLHR5cGU6MSxwYXJzZTpmdW5jdGlvbihBLGUpe2lmKDA9PT1lLmxlbmd0aClyZXR1cm4gbnVsbDt2YXIgdD1lWzBdO2lmKDIwPT09dC50eXBlJiYibm9uZSI9PT10LnZhbHVlKXJldHVybiBudWxsO2Zvcih2YXIgcj1bXSxCPWUuZmlsdGVyKHpBKSxuPTA7bjxCLmxlbmd0aDtuKyspe3ZhciBzPUJbbl0sbz1CW24rMV07MjA9PT1zLnR5cGUmJihvPW8mJlpBKG8pP28ubnVtYmVyOjEsci5wdXNoKHtjb3VudGVyOnMudmFsdWUsaW5jcmVtZW50Om99KSl9cmV0dXJuIHJ9fSxCcj17bmFtZToiY291bnRlci1yZXNldCIsaW5pdGlhbFZhbHVlOiJub25lIixwcmVmaXg6ITAsdHlwZToxLHBhcnNlOmZ1bmN0aW9uKEEsZSl7aWYoMD09PWUubGVuZ3RoKXJldHVybltdO2Zvcih2YXIgdD1bXSxyPWUuZmlsdGVyKHpBKSxCPTA7QjxyLmxlbmd0aDtCKyspe3ZhciBuPXJbQl0scz1yW0IrMV07X0EobikmJiJub25lIiE9PW4udmFsdWUmJihzPXMmJlpBKHMpP3MubnVtYmVyOjAsdC5wdXNoKHtjb3VudGVyOm4udmFsdWUscmVzZXQ6c30pKX1yZXR1cm4gdH19LG5yPXtuYW1lOiJkdXJhdGlvbiIsaW5pdGlhbFZhbHVlOiIwcyIscHJlZml4OiExLHR5cGU6MSxwYXJzZTpmdW5jdGlvbihlLEEpe3JldHVybiBBLmZpbHRlcihXQSkubWFwKGZ1bmN0aW9uKEEpe3JldHVybiBXdChlLEEpfSl9fSxzcj17bmFtZToicXVvdGVzIixpbml0aWFsVmFsdWU6Im5vbmUiLHByZWZpeDohMCx0eXBlOjEscGFyc2U6ZnVuY3Rpb24oQSxlKXtpZigwPT09ZS5sZW5ndGgpcmV0dXJuIG51bGw7dmFyIHQ9ZVswXTtpZigyMD09PXQudHlwZSYmIm5vbmUiPT09dC52YWx1ZSlyZXR1cm4gbnVsbDt2YXIgcj1bXSxCPWUuZmlsdGVyKHFBKTtpZihCLmxlbmd0aCUyIT0wKXJldHVybiBudWxsO2Zvcih2YXIgbj0wO248Qi5sZW5ndGg7bis9Mil7dmFyIHM9QltuXS52YWx1ZSxvPUJbbisxXS52YWx1ZTtyLnB1c2goe29wZW46cyxjbG9zZTpvfSl9cmV0dXJuIHJ9fSxvcj17bmFtZToiYm94LXNoYWRvdyIsaW5pdGlhbFZhbHVlOiJub25lIix0eXBlOjEscHJlZml4OiExLHBhcnNlOmZ1bmN0aW9uKG4sQSl7cmV0dXJuIDE9PT1BLmxlbmd0aCYmakEoQVswXSwibm9uZSIpP1tdOkFlKEEpLm1hcChmdW5jdGlvbihBKXtmb3IodmFyIGU9e2NvbG9yOjI1NSxvZmZzZXRYOmFlLG9mZnNldFk6YWUsYmx1cjphZSxzcHJlYWQ6YWUsaW5zZXQ6ITF9LHQ9MCxyPTA7cjxBLmxlbmd0aDtyKyspe3ZhciBCPUFbcl07akEoQiwiaW5zZXQiKT9lLmluc2V0PSEwOmVlKEIpPygwPT09dD9lLm9mZnNldFg9QjoxPT09dD9lLm9mZnNldFk9QjoyPT09dD9lLmJsdXI9QjplLnNwcmVhZD1CLHQrKyk6ZS5jb2xvcj11ZShuLEIpfXJldHVybiBlfSl9fSxpcj17bmFtZToicGFpbnQtb3JkZXIiLGluaXRpYWxWYWx1ZToibm9ybWFsIixwcmVmaXg6ITEsdHlwZToxLHBhcnNlOmZ1bmN0aW9uKEEsZSl7dmFyIHQ9W107cmV0dXJuIGUuZmlsdGVyKF9BKS5mb3JFYWNoKGZ1bmN0aW9uKEEpe3N3aXRjaChBLnZhbHVlKXtjYXNlInN0cm9rZSI6dC5wdXNoKDEpO2JyZWFrO2Nhc2UiZmlsbCI6dC5wdXNoKDApO2JyZWFrO2Nhc2UibWFya2VycyI6dC5wdXNoKDIpfX0pLFswLDEsMl0uZm9yRWFjaChmdW5jdGlvbihBKXstMT09PXQuaW5kZXhPZihBKSYmdC5wdXNoKEEpfSksdH19LFFyPXtuYW1lOiItd2Via2l0LXRleHQtc3Ryb2tlLWNvbG9yIixpbml0aWFsVmFsdWU6ImN1cnJlbnRjb2xvciIscHJlZml4OiExLHR5cGU6Myxmb3JtYXQ6ImNvbG9yIn0sY3I9e25hbWU6Ii13ZWJraXQtdGV4dC1zdHJva2Utd2lkdGgiLGluaXRpYWxWYWx1ZToiMCIsdHlwZTowLHByZWZpeDohMSxwYXJzZTpmdW5jdGlvbihBLGUpe3JldHVybiBXQShlKT9lLm51bWJlcjowfX0sYXI9KGdyLnByb3RvdHlwZS5pc1Zpc2libGU9ZnVuY3Rpb24oKXtyZXR1cm4gMDx0aGlzLmRpc3BsYXkmJjA8dGhpcy5vcGFjaXR5JiYwPT09dGhpcy52aXNpYmlsaXR5fSxnci5wcm90b3R5cGUuaXNUcmFuc3BhcmVudD1mdW5jdGlvbigpe3JldHVybiBvZSh0aGlzLmJhY2tncm91bmRDb2xvcil9LGdyLnByb3RvdHlwZS5pc1RyYW5zZm9ybWVkPWZ1bmN0aW9uKCl7cmV0dXJuIG51bGwhPT10aGlzLnRyYW5zZm9ybX0sZ3IucHJvdG90eXBlLmlzUG9zaXRpb25lZD1mdW5jdGlvbigpe3JldHVybiAwIT09dGhpcy5wb3NpdGlvbn0sZ3IucHJvdG90eXBlLmlzUG9zaXRpb25lZFdpdGhaSW5kZXg9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pc1Bvc2l0aW9uZWQoKSYmIXRoaXMuekluZGV4LmF1dG99LGdyLnByb3RvdHlwZS5pc0Zsb2F0aW5nPWZ1bmN0aW9uKCl7cmV0dXJuIDAhPT10aGlzLmZsb2F0fSxnci5wcm90b3R5cGUuaXNJbmxpbmVMZXZlbD1mdW5jdGlvbigpe3JldHVybiBQdCh0aGlzLmRpc3BsYXksNCl8fFB0KHRoaXMuZGlzcGxheSwzMzU1NDQzMil8fFB0KHRoaXMuZGlzcGxheSwyNjg0MzU0NTYpfHxQdCh0aGlzLmRpc3BsYXksNTM2ODcwOTEyKXx8UHQodGhpcy5kaXNwbGF5LDY3MTA4ODY0KXx8UHQodGhpcy5kaXNwbGF5LDEzNDIxNzcyOCl9LGdyKTtmdW5jdGlvbiBncihBLGUpe3RoaXMuYW5pbWF0aW9uRHVyYXRpb249bHIoQSxucixlLmFuaW1hdGlvbkR1cmF0aW9uKSx0aGlzLmJhY2tncm91bmRDbGlwPWxyKEEsYmUsZS5iYWNrZ3JvdW5kQ2xpcCksdGhpcy5iYWNrZ3JvdW5kQ29sb3I9bHIoQSxEZSxlLmJhY2tncm91bmRDb2xvciksdGhpcy5iYWNrZ3JvdW5kSW1hZ2U9bHIoQSxSZSxlLmJhY2tncm91bmRJbWFnZSksdGhpcy5iYWNrZ3JvdW5kT3JpZ2luPWxyKEEsTmUsZS5iYWNrZ3JvdW5kT3JpZ2luKSx0aGlzLmJhY2tncm91bmRQb3NpdGlvbj1scihBLFBlLGUuYmFja2dyb3VuZFBvc2l0aW9uKSx0aGlzLmJhY2tncm91bmRSZXBlYXQ9bHIoQSxYZSxlLmJhY2tncm91bmRSZXBlYXQpLHRoaXMuYmFja2dyb3VuZFNpemU9bHIoQSxfZSxlLmJhY2tncm91bmRTaXplKSx0aGlzLmJvcmRlclRvcENvbG9yPWxyKEEsamUsZS5ib3JkZXJUb3BDb2xvciksdGhpcy5ib3JkZXJSaWdodENvbG9yPWxyKEEsemUsZS5ib3JkZXJSaWdodENvbG9yKSx0aGlzLmJvcmRlckJvdHRvbUNvbG9yPWxyKEEsJGUsZS5ib3JkZXJCb3R0b21Db2xvciksdGhpcy5ib3JkZXJMZWZ0Q29sb3I9bHIoQSxBdCxlLmJvcmRlckxlZnRDb2xvciksdGhpcy5ib3JkZXJUb3BMZWZ0UmFkaXVzPWxyKEEsZXQsZS5ib3JkZXJUb3BMZWZ0UmFkaXVzKSx0aGlzLmJvcmRlclRvcFJpZ2h0UmFkaXVzPWxyKEEsdHQsZS5ib3JkZXJUb3BSaWdodFJhZGl1cyksdGhpcy5ib3JkZXJCb3R0b21SaWdodFJhZGl1cz1scihBLHJ0LGUuYm9yZGVyQm90dG9tUmlnaHRSYWRpdXMpLHRoaXMuYm9yZGVyQm90dG9tTGVmdFJhZGl1cz1scihBLEJ0LGUuYm9yZGVyQm90dG9tTGVmdFJhZGl1cyksdGhpcy5ib3JkZXJUb3BTdHlsZT1scihBLG50LGUuYm9yZGVyVG9wU3R5bGUpLHRoaXMuYm9yZGVyUmlnaHRTdHlsZT1scihBLHN0LGUuYm9yZGVyUmlnaHRTdHlsZSksdGhpcy5ib3JkZXJCb3R0b21TdHlsZT1scihBLG90LGUuYm9yZGVyQm90dG9tU3R5bGUpLHRoaXMuYm9yZGVyTGVmdFN0eWxlPWxyKEEsaXQsZS5ib3JkZXJMZWZ0U3R5bGUpLHRoaXMuYm9yZGVyVG9wV2lkdGg9bHIoQSxRdCxlLmJvcmRlclRvcFdpZHRoKSx0aGlzLmJvcmRlclJpZ2h0V2lkdGg9bHIoQSxjdCxlLmJvcmRlclJpZ2h0V2lkdGgpLHRoaXMuYm9yZGVyQm90dG9tV2lkdGg9bHIoQSxhdCxlLmJvcmRlckJvdHRvbVdpZHRoKSx0aGlzLmJvcmRlckxlZnRXaWR0aD1scihBLGd0LGUuYm9yZGVyTGVmdFdpZHRoKSx0aGlzLmJveFNoYWRvdz1scihBLG9yLGUuYm94U2hhZG93KSx0aGlzLmNvbG9yPWxyKEEsd3QsZS5jb2xvciksdGhpcy5kaXJlY3Rpb249bHIoQSxVdCxlLmRpcmVjdGlvbiksdGhpcy5kaXNwbGF5PWxyKEEsbHQsZS5kaXNwbGF5KSx0aGlzLmZsb2F0PWxyKEEsdXQsZS5jc3NGbG9hdCksdGhpcy5mb250RmFtaWx5PWxyKEEsanQsZS5mb250RmFtaWx5KSx0aGlzLmZvbnRTaXplPWxyKEEsenQsZS5mb250U2l6ZSksdGhpcy5mb250U3R5bGU9bHIoQSxlcixlLmZvbnRTdHlsZSksdGhpcy5mb250VmFyaWFudD1scihBLEFyLGUuZm9udFZhcmlhbnQpLHRoaXMuZm9udFdlaWdodD1scihBLCR0LGUuZm9udFdlaWdodCksdGhpcy5sZXR0ZXJTcGFjaW5nPWxyKEEsRnQsZS5sZXR0ZXJTcGFjaW5nKSx0aGlzLmxpbmVCcmVhaz1scihBLGh0LGUubGluZUJyZWFrKSx0aGlzLmxpbmVIZWlnaHQ9bHIoQSxkdCxlLmxpbmVIZWlnaHQpLHRoaXMubGlzdFN0eWxlSW1hZ2U9bHIoQSxmdCxlLmxpc3RTdHlsZUltYWdlKSx0aGlzLmxpc3RTdHlsZVBvc2l0aW9uPWxyKEEsSHQsZS5saXN0U3R5bGVQb3NpdGlvbiksdGhpcy5saXN0U3R5bGVUeXBlPWxyKEEscHQsZS5saXN0U3R5bGVUeXBlKSx0aGlzLm1hcmdpblRvcD1scihBLEV0LGUubWFyZ2luVG9wKSx0aGlzLm1hcmdpblJpZ2h0PWxyKEEsSXQsZS5tYXJnaW5SaWdodCksdGhpcy5tYXJnaW5Cb3R0b209bHIoQSx5dCxlLm1hcmdpbkJvdHRvbSksdGhpcy5tYXJnaW5MZWZ0PWxyKEEsS3QsZS5tYXJnaW5MZWZ0KSx0aGlzLm9wYWNpdHk9bHIoQSxadCxlLm9wYWNpdHkpO3ZhciB0PWxyKEEsbXQsZS5vdmVyZmxvdyk7dGhpcy5vdmVyZmxvd1g9dFswXSx0aGlzLm92ZXJmbG93WT10WzE8dC5sZW5ndGg/MTowXSx0aGlzLm92ZXJmbG93V3JhcD1scihBLEx0LGUub3ZlcmZsb3dXcmFwKSx0aGlzLnBhZGRpbmdUb3A9bHIoQSxidCxlLnBhZGRpbmdUb3ApLHRoaXMucGFkZGluZ1JpZ2h0PWxyKEEsRHQsZS5wYWRkaW5nUmlnaHQpLHRoaXMucGFkZGluZ0JvdHRvbT1scihBLHZ0LGUucGFkZGluZ0JvdHRvbSksdGhpcy5wYWRkaW5nTGVmdD1scihBLHh0LGUucGFkZGluZ0xlZnQpLHRoaXMucGFpbnRPcmRlcj1scihBLGlyLGUucGFpbnRPcmRlciksdGhpcy5wb3NpdGlvbj1scihBLFN0LGUucG9zaXRpb24pLHRoaXMudGV4dEFsaWduPWxyKEEsTXQsZS50ZXh0QWxpZ24pLHRoaXMudGV4dERlY29yYXRpb25Db2xvcj1scihBLF90LG51bGwhPT0odD1lLnRleHREZWNvcmF0aW9uQ29sb3IpJiZ2b2lkIDAhPT10P3Q6ZS5jb2xvciksdGhpcy50ZXh0RGVjb3JhdGlvbkxpbmU9bHIoQSxxdCxudWxsIT09KHQ9ZS50ZXh0RGVjb3JhdGlvbkxpbmUpJiZ2b2lkIDAhPT10P3Q6ZS50ZXh0RGVjb3JhdGlvbiksdGhpcy50ZXh0U2hhZG93PWxyKEEsVHQsZS50ZXh0U2hhZG93KSx0aGlzLnRleHRUcmFuc2Zvcm09bHIoQSxHdCxlLnRleHRUcmFuc2Zvcm0pLHRoaXMudHJhbnNmb3JtPWxyKEEsT3QsZS50cmFuc2Zvcm0pLHRoaXMudHJhbnNmb3JtT3JpZ2luPWxyKEEsUnQsZS50cmFuc2Zvcm1PcmlnaW4pLHRoaXMudmlzaWJpbGl0eT1scihBLE50LGUudmlzaWJpbGl0eSksdGhpcy53ZWJraXRUZXh0U3Ryb2tlQ29sb3I9bHIoQSxRcixlLndlYmtpdFRleHRTdHJva2VDb2xvciksdGhpcy53ZWJraXRUZXh0U3Ryb2tlV2lkdGg9bHIoQSxjcixlLndlYmtpdFRleHRTdHJva2VXaWR0aCksdGhpcy53b3JkQnJlYWs9bHIoQSxKdCxlLndvcmRCcmVhayksdGhpcy56SW5kZXg9bHIoQSxZdCxlLnpJbmRleCl9Zm9yKHZhciB3cj1mdW5jdGlvbihBLGUpe3RoaXMuY29udGVudD1scihBLHRyLGUuY29udGVudCksdGhpcy5xdW90ZXM9bHIoQSxzcixlLnF1b3Rlcyl9LFVyPWZ1bmN0aW9uKEEsZSl7dGhpcy5jb3VudGVySW5jcmVtZW50PWxyKEEscnIsZS5jb3VudGVySW5jcmVtZW50KSx0aGlzLmNvdW50ZXJSZXNldD1scihBLEJyLGUuY291bnRlclJlc2V0KX0sbHI9ZnVuY3Rpb24oQSxlLHQpe3ZhciByPW5ldyBQQSx0PW51bGwhPXQ/dC50b1N0cmluZygpOmUuaW5pdGlhbFZhbHVlO3Iud3JpdGUodCk7dmFyIEI9bmV3IEpBKHIucmVhZCgpKTtzd2l0Y2goZS50eXBlKXtjYXNlIDI6dmFyIG49Qi5wYXJzZUNvbXBvbmVudFZhbHVlKCk7cmV0dXJuIGUucGFyc2UoQSxfQShuKT9uLnZhbHVlOmUuaW5pdGlhbFZhbHVlKTtjYXNlIDA6cmV0dXJuIGUucGFyc2UoQSxCLnBhcnNlQ29tcG9uZW50VmFsdWUoKSk7Y2FzZSAxOnJldHVybiBlLnBhcnNlKEEsQi5wYXJzZUNvbXBvbmVudFZhbHVlcygpKTtjYXNlIDQ6cmV0dXJuIEIucGFyc2VDb21wb25lbnRWYWx1ZSgpO2Nhc2UgMzpzd2l0Y2goZS5mb3JtYXQpe2Nhc2UiYW5nbGUiOnJldHVybiBsZShBLEIucGFyc2VDb21wb25lbnRWYWx1ZSgpKTtjYXNlImNvbG9yIjpyZXR1cm4gdWUoQSxCLnBhcnNlQ29tcG9uZW50VmFsdWUoKSk7Y2FzZSJpbWFnZSI6cmV0dXJuIE9lKEEsQi5wYXJzZUNvbXBvbmVudFZhbHVlKCkpO2Nhc2UibGVuZ3RoIjp2YXIgcz1CLnBhcnNlQ29tcG9uZW50VmFsdWUoKTtyZXR1cm4gZWUocyk/czphZTtjYXNlImxlbmd0aC1wZXJjZW50YWdlIjpzPUIucGFyc2VDb21wb25lbnRWYWx1ZSgpO3JldHVybiB0ZShzKT9zOmFlO2Nhc2UidGltZSI6cmV0dXJuIFd0KEEsQi5wYXJzZUNvbXBvbmVudFZhbHVlKCkpfX19LENyPWZ1bmN0aW9uKEEsZSl7QT1mdW5jdGlvbihBKXtzd2l0Y2goQS5nZXRBdHRyaWJ1dGUoImRhdGEtaHRtbDJjYW52YXMtZGVidWciKSl7Y2FzZSJhbGwiOnJldHVybiAxO2Nhc2UiY2xvbmUiOnJldHVybiAyO2Nhc2UicGFyc2UiOnJldHVybiAzO2Nhc2UicmVuZGVyIjpyZXR1cm4gNDtkZWZhdWx0OnJldHVybiAwfX0oQSk7cmV0dXJuIDE9PT1BfHxlPT09QX0sdXI9ZnVuY3Rpb24oQSxlKXt0aGlzLmNvbnRleHQ9QSx0aGlzLnRleHROb2Rlcz1bXSx0aGlzLmVsZW1lbnRzPVtdLHRoaXMuZmxhZ3M9MCxDcihlLDMpLHRoaXMuc3R5bGVzPW5ldyBhcihBLHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGUsbnVsbCkpLEpCKGUpJiYodGhpcy5zdHlsZXMuYW5pbWF0aW9uRHVyYXRpb24uc29tZShmdW5jdGlvbihBKXtyZXR1cm4gMDxBfSkmJihlLnN0eWxlLmFuaW1hdGlvbkR1cmF0aW9uPSIwcyIpLG51bGwhPT10aGlzLnN0eWxlcy50cmFuc2Zvcm0mJihlLnN0eWxlLnRyYW5zZm9ybT0ibm9uZSIpKSx0aGlzLmJvdW5kcz1mKHRoaXMuY29udGV4dCxlKSxDcihlLDQpJiYodGhpcy5mbGFnc3w9MTYpfSxGcj0iQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLyIsaHI9InVuZGVmaW5lZCI9PXR5cGVvZiBVaW50OEFycmF5P1tdOm5ldyBVaW50OEFycmF5KDI1NiksZHI9MDtkcjxGci5sZW5ndGg7ZHIrKylocltGci5jaGFyQ29kZUF0KGRyKV09ZHI7ZnVuY3Rpb24gZnIoQSxlLHQpe3JldHVybiBBLnNsaWNlP0Euc2xpY2UoZSx0KTpuZXcgVWludDE2QXJyYXkoQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoQSxlLHQpKX12YXIgSHI9KHByLnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24oQSl7dmFyIGU7aWYoMDw9QSl7aWYoQTw1NTI5Nnx8NTYzMTk8QSYmQTw9NjU1MzUpcmV0dXJuIGU9dGhpcy5pbmRleFtBPj41XSx0aGlzLmRhdGFbZT0oZTw8MikrKDMxJkEpXTtpZihBPD02NTUzNSlyZXR1cm4gZT10aGlzLmluZGV4WzIwNDgrKEEtNTUyOTY+PjUpXSx0aGlzLmRhdGFbZT0oZTw8MikrKDMxJkEpXTtpZihBPHRoaXMuaGlnaFN0YXJ0KXJldHVybiBlPXRoaXMuaW5kZXhbZT0yMDgwKyhBPj4xMSldLGU9dGhpcy5pbmRleFtlKz1BPj41JjYzXSx0aGlzLmRhdGFbZT0oZTw8MikrKDMxJkEpXTtpZihBPD0xMTE0MTExKXJldHVybiB0aGlzLmRhdGFbdGhpcy5oaWdoVmFsdWVJbmRleF19cmV0dXJuIHRoaXMuZXJyb3JWYWx1ZX0scHIpO2Z1bmN0aW9uIHByKEEsZSx0LHIsQixuKXt0aGlzLmluaXRpYWxWYWx1ZT1BLHRoaXMuZXJyb3JWYWx1ZT1lLHRoaXMuaGlnaFN0YXJ0PXQsdGhpcy5oaWdoVmFsdWVJbmRleD1yLHRoaXMuaW5kZXg9Qix0aGlzLmRhdGE9bn1mb3IodmFyIEVyPSJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSsvIixJcj0idW5kZWZpbmVkIj09dHlwZW9mIFVpbnQ4QXJyYXk/W106bmV3IFVpbnQ4QXJyYXkoMjU2KSx5cj0wO3lyPEVyLmxlbmd0aDt5cisrKUlyW0VyLmNoYXJDb2RlQXQoeXIpXT15cjtmdW5jdGlvbiBLcihBKXtyZXR1cm4ga3IuZ2V0KEEpfWZ1bmN0aW9uIG1yKEEpe3ZhciB0PWZ1bmN0aW9uKEEpe2Zvcih2YXIgZT1bXSx0PTAscj1BLmxlbmd0aDt0PHI7KXt2YXIgQixuPUEuY2hhckNvZGVBdCh0KyspOzU1Mjk2PD1uJiZuPD01NjMxOSYmdDxyPzU2MzIwPT0oNjQ1MTImKEI9QS5jaGFyQ29kZUF0KHQrKykpKT9lLnB1c2goKCgxMDIzJm4pPDwxMCkrKDEwMjMmQikrNjU1MzYpOihlLnB1c2gobiksdC0tKTplLnB1c2gobil9cmV0dXJuIGV9KEEpLHI9dC5sZW5ndGgsQj0wLG49MCxzPXQubWFwKEtyKTtyZXR1cm57bmV4dDpmdW5jdGlvbigpe2lmKHI8PUIpcmV0dXJue2RvbmU6ITAsdmFsdWU6bnVsbH07Zm9yKHZhciBBPVJyO0I8ciYmKEE9ZnVuY3Rpb24oQSxlKXt2YXIgdD1lLTIscj1BW3RdLEI9QVtlLTFdLGU9QVtlXTtpZigyPT09QiYmMz09PWUpcmV0dXJuIFJyO2lmKDI9PT1CfHwzPT09Qnx8ND09PUIpcmV0dXJuIsO3IjtpZigyPT09ZXx8Mz09PWV8fDQ9PT1lKXJldHVybiLDtyI7aWYoQj09PVRyJiYtMSE9PVtUcixHcixPcixWcl0uaW5kZXhPZihlKSlyZXR1cm4gUnI7aWYoIShCIT09T3ImJkIhPT1Hcnx8ZSE9PUdyJiYxMCE9PWUpKXJldHVybiBScjtpZigoQj09PVZyfHwxMD09PUIpJiYxMD09PWUpcmV0dXJuIFJyO2lmKDEzPT09ZXx8NT09PWUpcmV0dXJuIFJyO2lmKDc9PT1lKXJldHVybiBScjtpZigxPT09QilyZXR1cm4gUnI7aWYoMTM9PT1CJiYxND09PWUpe2Zvcig7NT09PXI7KXI9QVstLXRdO2lmKDE0PT09cilyZXR1cm4gUnJ9aWYoMTU9PT1CJiYxNT09PWUpe2Zvcih2YXIgbj0wOzE1PT09cjspbisrLHI9QVstLXRdO2lmKG4lMj09MClyZXR1cm4gUnJ9cmV0dXJuIsO3In0ocywrK0IpKT09PVJyOyk7aWYoQT09PVJyJiZCIT09cilyZXR1cm57ZG9uZTohMCx2YWx1ZTpudWxsfTt2YXIgZT1mdW5jdGlvbigpe2Zvcih2YXIgQT1bXSxlPTA7ZTxhcmd1bWVudHMubGVuZ3RoO2UrKylBW2VdPWFyZ3VtZW50c1tlXTtpZihTdHJpbmcuZnJvbUNvZGVQb2ludClyZXR1cm4gU3RyaW5nLmZyb21Db2RlUG9pbnQuYXBwbHkoU3RyaW5nLEEpO3ZhciB0PUEubGVuZ3RoO2lmKCF0KXJldHVybiIiO2Zvcih2YXIgcj1bXSxCPS0xLG49IiI7KytCPHQ7KXt2YXIgcz1BW0JdO3M8PTY1NTM1P3IucHVzaChzKToocy09NjU1MzYsci5wdXNoKDU1Mjk2KyhzPj4xMCkscyUxMDI0KzU2MzIwKSksKEIrMT09PXR8fDE2Mzg0PHIubGVuZ3RoKSYmKG4rPVN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkoU3RyaW5nLHIpLHIubGVuZ3RoPTApfXJldHVybiBufS5hcHBseShudWxsLHQuc2xpY2UobixCKSk7cmV0dXJuIG49Qix7dmFsdWU6ZSxkb25lOiExfX19fWZ1bmN0aW9uIExyKEEpe3JldHVybiAwPT09QVswXSYmMjU1PT09QVsxXSYmMD09PUFbMl0mJjI1NT09PUFbM119dmFyIGJyLERyLHZyLHhyLE1yLFNyLFRyPTgsR3I9OSxPcj0xMSxWcj0xMixrcj0odnI9ZnVuY3Rpb24oQSl7dmFyIGUsdCxyLEIsbj0uNzUqQS5sZW5ndGgscz1BLmxlbmd0aCxvPTA7Ij0iPT09QVtBLmxlbmd0aC0xXSYmKG4tLSwiPSI9PT1BW0EubGVuZ3RoLTJdJiZuLS0pO2Zvcih2YXIgbj1uZXcoInVuZGVmaW5lZCIhPXR5cGVvZiBBcnJheUJ1ZmZlciYmInVuZGVmaW5lZCIhPXR5cGVvZiBVaW50OEFycmF5JiZ2b2lkIDAhPT1VaW50OEFycmF5LnByb3RvdHlwZS5zbGljZT9BcnJheUJ1ZmZlcjpBcnJheSkobiksaT1BcnJheS5pc0FycmF5KG4pP246bmV3IFVpbnQ4QXJyYXkobiksUT0wO1E8cztRKz00KWU9aHJbQS5jaGFyQ29kZUF0KFEpXSx0PWhyW0EuY2hhckNvZGVBdChRKzEpXSxyPWhyW0EuY2hhckNvZGVBdChRKzIpXSxCPWhyW0EuY2hhckNvZGVBdChRKzMpXSxpW28rK109ZTw8Mnx0Pj40LGlbbysrXT0oMTUmdCk8PDR8cj4+MixpW28rK109KDMmcik8PDZ8NjMmQjtyZXR1cm4gbn0oYnI9IkFBQUFBQUFBQUFBQUVBNEFHQmtBQUZBYUFBQUNBQUFBQUFBSUFCQUFHQUF3QURnQUNBQVFBQWdBRUFBSUFCQUFDQUFRQUFnQUVBQUlBQkFBQ0FBUUFBZ0FFQUFJQUJBQVFBQklBRVFBVEFBSUFCQUFDQUFRQUFnQUVBQUlBQkFBVkFCY0FBZ0FFQUFJQUJBQUNBQVFBR0FBYUFCd0FIZ0FnQUNJQUk0QWxnQUlBQkFBbXdDakFLZ0FzQUMyQUw0QXZRREZBTW9BMGdCUEFWWUJXZ0VJQUFnQUNBQ01BTm9BWWdGa0FXd0JkQUY4QVgwQmhRR05BWlVCbGdHZUFhTUJsUUdXQWFzQnN3RjhBYnNCd3dGMEFjc0JZd0hUQVFnQTJ3Ry9BT01CZEFGOEFla0I4UUYwQWZrQit3SGlBSFFCZkFFSUFBTUM1Z1FJQUFzQ0VnSUlBQWdBRmdJZUFnZ0FJZ0lwQWdnQU1RSTVBa0FDeWdFSUFBZ0FTQUpRQWxnQ1lBSUlBQWdBQ0FBS0JRb0ZDZ1VUQlJNRkdRVXJCU3NGQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FCZEFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUJvQW1nQ3J3R3ZBUWdBYmdKMkFnZ0FIZ0VJQUFnQUNBRG5BWHNDQ0FBSUFBZ0Fnd0lJQUFnQUNBQUlBQWdBQ0FDS0FnZ0FrUUtaQWdnQVBBREpBQWdBb1FLa0Fxd0NzZ0s2QXNJQ0NBREpBZ2dBMEFJSUFBZ0FDQUFJQU5ZQzNnSUlBQWdBQ0FBSUFBZ0FDQUJBQU9ZQ0NBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFrQVNvQitRSUVBQWdBQ0FBOEFFTUNDQUJDQlFnQUNBQkpCVkFGQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FCVEJWb0ZDQUFJQUZvRkNBQmZCV1VGQ0FBSUFBZ0FDQUFJQUFnQWJRVUlBQWdBQ0FBSUFBZ0FDQUJ6QlhzRmZRV0ZCWW9GaWdXS0JaRUZpZ1dLQllvRm1BV2ZCYVlGcmdXeEJia0ZDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQU1FRkNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFNZ0ZDQURRQlFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBTzRDQ0FBSUFBZ0FpUUFJQUFnQUNBQkFBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBRDBBZ2dBQ0FEOEFnZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBTllGQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQU1EdndBSUFBZ0FKQUlJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDd01UQXdnQUNBQjlCT3NFR3dNakF3Z0FLd015QXdzRllnRTNBL01FUHdNSUFFVURUUU5SQXdnQVdRT3NBR0VEQ0FBSUFBZ0FDQUFJQUFnQUNBQnBBelFGTlFVMkJUY0ZPQVU1QlRvRk5BVTFCVFlGTndVNEJUa0ZPZ1UwQlRVRk5nVTNCVGdGT1FVNkJUUUZOUVUyQlRjRk9BVTVCVG9GTkFVMUJUWUZOd1U0QlRrRk9nVTBCVFVGTmdVM0JUZ0ZPUVU2QlRRRk5RVTJCVGNGT0FVNUJUb0ZOQVUxQlRZRk53VTRCVGtGT2dVMEJUVUZOZ1UzQlRnRk9RVTZCVFFGTlFVMkJUY0ZPQVU1QlRvRk5BVTFCVFlGTndVNEJUa0ZPZ1UwQlRVRk5nVTNCVGdGT1FVNkJUUUZOUVUyQlRjRk9BVTVCVG9GTkFVMUJUWUZOd1U0QlRrRk9nVTBCVFVGTmdVM0JUZ0ZPUVU2QlRRRk5RVTJCVGNGT0FVNUJUb0ZOQVUxQlRZRk53VTRCVGtGT2dVMEJUVUZOZ1UzQlRnRk9RVTZCVFFGTlFVMkJUY0ZPQVU1QlRvRk5BVTFCVFlGTndVNEJUa0ZPZ1UwQlRVRk5nVTNCVGdGT1FVNkJUUUZOUVUyQlRjRk9BVTVCVG9GTkFVMUJUWUZOd1U0QlRrRk9nVTBCVFVGTmdVM0JUZ0ZPUVU2QlRRRk5RVTJCVGNGT0FVNUJUb0ZOQVUxQlRZRk53VTRCVGtGT2dVMEJUVUZOZ1UzQlRnRk9RVTZCVFFGTlFVMkJUY0ZPQVU1QlRvRk5BVTFCVFlGTndVNEJUa0ZPZ1UwQlRVRk5nVTNCVGdGT1FVNkJUUUZOUVUyQlRjRk9BVTVCVG9GTkFVMUJUWUZOd1U0QlRrRk9nVTBCVFVGTmdVM0JUZ0ZPUVU2QlRRRk5RVTJCVGNGT0FVNUJUb0ZOQVUxQlRZRk53VTRCVGtGT2dVMEJUVUZOZ1UzQlRnRk9RVTZCVFFGTlFVMkJUY0ZPQVU1QlRvRk5BVTFCVFlGTndVNEJUa0ZPZ1UwQlRVRk5nVTNCVGdGT1FVNkJUUUZOUVUyQlRjRk9BVTVCVG9GTkFVMUJUWUZOd1U0QlRrRk9nVTBCVFVGTmdVM0JUZ0ZPUVU2QlRRRk5RVTJCVGNGT0FVNUJUb0ZOQVUxQlRZRk53VTRCVGtGT2dVMEJUVUZOZ1UzQlRnRk9RVTZCVFFGTlFVMkJUY0ZPQVU1QlRvRk5BVTFCVFlGTndVNEJUa0ZPZ1UwQlRVRk5nVTNCVGdGT1FVNkJUUUZOUVUyQlRjRk9BVTVCVG9GTkFVMUJUWUZOd1U0QlRrRklRVW9CU3dGQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FCdEF3Z0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQk1BRXdBQ0FBSUFBZ0FDQUFJQUJnQUNBQUlBQWdBQ0FDL0FBZ0FDQUF5QVFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FDQUFJQUF3QUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFBQVJBQklBQWdBQ0FBSUFCUUFTQUFJQUFnQUlBQndBRUFBamdDSUFCc0FxQUMyQUwwQWlnRFFBdHdDK0lKSVFxVkFaVUJXUXFWQVpVQmxRR1ZBWlVCbFFHckM1VUJsUUdWQVpVQmxRR1ZBWlVCbFFHVkFYc0tsUUdWQWJBSzZ3c3JER1VNcFF6bERKVUJsUUdWQVpVQmxRR1ZBWlVCbFFHVkFaVUJsUUdWQVpVQmxRR1ZBWlVCbFFHVkFaVUJsUUdWQVpVQmxRR1ZBWlVCbFFHVkFaVUJsUUdWQVpVQmxRR1ZBWlVCbFFHVkFaVUJsUUdWQVpVQmxRR1ZBWlVCbFFHVkFaVUJsUUdWQVpVQmxRR1ZBWlVCbFFHVkFaVUJsUUdWQVpVQmxRR1ZBWlVCbFFHVkFaVUJsUUdWQVpVQmxRR1ZBWlVCbFFHVkFaVUJsUUdWQVpVQmxRR1ZBWlVCbFFHVkFaVUJsUUdWQVpVQmxRR1ZBWlVCbFFHVkFaVUJsUUdWQVpVQmxRR1ZBWlVCbFFHVkFaVUJsUUdWQVpVQmxRR1ZBWlVCbFFHVkFaVUJsUUdWQVpVQmxRR1ZBWlVCbFFHVkFaVUJsUUdWQVpVQmxRR1ZBWlVCbFFHVkFaVUJsUUdWQVpVQmxRR1ZBWlVCbFFHVkFaVUJsUUdWQVpVQmxRR1ZBWlVCbFFHVkFaVUJsUUdWQVpVQmxRR1ZBWlVCbFFHVkFaVUJsUUdWQVpVQmxRR1ZBWlVCbFFHVkFaVUJsUUdWQVpVQmxRR1ZBWlVCbFFHVkFaVUJsUUdWQVpVQmxRR1ZBWlVCbFFHVkFaVUJsUUdWQVpVQmxRR1ZBWlVCbFFHVkFaVUJsUUdWQVpVQmxRR1ZBWlVCbFFHVkFaVUJsUUdWQVpVQmxRR1ZBWlVCbFFHVkFaVUJsUUdWQVpVQmxRR1ZBWlVCbFFHVkFaVUJsUUdWQVpVQmxRR1ZBWlVCbFFHVkFaVUJsUUdWQVpVQmxRR1ZBWlVCbFFHVkFaVUJsUUdWQVpVQmxRR1ZBWlVCbFFHVkFaVUJsUUdWQVpVQmxRR1ZBWlVCbFFHVkFaVUJsUUdWQVpVQmxRR1ZBWlVCbFFHVkFaVUJsUUdWQVpVQmxRR1ZBWlVCbFFHVkFaVUJsUUdWQVpVQmxRR1ZBWlVCbFFHVkFaVUJsUUdWQVpVQmxRR1ZBWlVCbFFHVkFaVUJsUUdWQVpVQmxRR1ZBWlVCbFFHVkFaVUJsUUdWQVpVQmxRR1ZBWlVCbFFHVkFaVUJsUUdWQVpVQmxRR1ZBWlVCbFFHVkFaVUJsUUdWQVpVQmxRR1ZBWlVCbFFHVkFaVUJsUUdWQVpVQmxRR1ZBWlVCbFFHVkFaVUJsUUdWQVpVQmxRR1ZBWlVCbFFHVkFaVUJsUUdWQVpVQmxRR1ZBWlVCbFFHVkFaVUJsUUdWQVpVQmxRR1ZBWlVCbFFHVkFaVUJsUUdWQVpVQmxRR1ZBWlVCbFFHVkFaVUJsUUdWQVpVQmxRR1ZBWlVCbFFHVkFaVUJsUUdWQVpVQmxRR1ZBZkFLQUF1WkE2NEF0d0NKQUxvQzZBRHdBQWdBdUFDZ0Evb0VwZ082QXFzRCtBQUlBQWdBc3dNSUFBZ0FDQUFJQUlrQXV3UDVBZnNCd3dQTEF3Z0FDQUFJQUFnQUNBRFJBOWtEQ0FBSUFPRUQ2UU1JQUFnQUNBQUlBQWdBQ0FEdUEvWURDQUFJQVA0RHlRQUlBQWdBQmdRSUFBZ0FYUUFPQkFnQUNBQUlBQWdBQ0FBSUFCTUVDQUFJQUFnQUNBQUlBQWdBQ0FEOEFBUUJDQUFJQUFnQUdnUWlCQ29FQ0FFeEJBZ0FFQUVJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQTRCQWdBQ0FCQUJFWUVDQUFJQUFnQVRBUVlBUWdBVkFRSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFGb0VDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBT1FFSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FCK0JBY0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFFQUJoZ1NNQkFnQUNBQUlBQWdBbEFRSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBd0FFQUFRQUJBQURBQU1BQXdBREFBUUFCQUFFQUFRQUJBQUVBQVFBQkhBVEFBTUFBd0FEQUFNQUF3QURBQU1BQXdBREFBTUFBd0FEQUFNQUF3QURBQU1BQXdBREFBTUFBd0FEQUFNQUF3QURBQU1BQXdBREFBTUFBd0FEQUFNQUF3QURBQU1BQXdBREFBTUFBd0FEQUFNQUF3QURBQU1BQXdBREFBTUFBd0FEQUFNQUF3QURBQU1BQXdBREFBTUFBd0FEQUFNQUF3QURBQU1BQXdBREFBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQWRRTUlBQWdBQ0FBSUFBZ0FDQUFJQU1rQUNBQUlBQWdBZlFNSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FDRkE0a0RDQUFJQUFnQUNBQUlBT2NCQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBSWNEQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFKRURDQUFJQUFnQUNBREZBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUJnQkFnQVpnUUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FiQVFDQlhJRUNBQUlBSGtFQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQkFBSndFUUFDakJLb0VzZ1FJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FDNkJNSUVDQUFJQUFnQUNBQUlBQWdBQ0FCbUJBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQXh3UUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFHWUVDQUFJQUFnQXpnUUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQWlnV0tCWW9GaWdXS0JZb0ZpZ1dLQmQwRlh3VUlBT0lGNmdYeEJZb0YzZ1Q1QlFBR0NBYUtCWW9GaWdXS0JZb0ZpZ1dLQllvRmlnV0tCWW9GaWdYV0JJb0ZpZ1dLQllvRmlnV0tCWW9GaWdXS0JZc0ZFQWFLQllvRmlnV0tCWW9GaWdXS0JSUUdDQUNLQllvRmlnV0tCUWdBQ0FBSUFORUVDQUFJQUJnR2lnVWdCZ2dBSmdZSUFDNEdNd2FLQllvRjB3UTNCajRHaWdXS0JZb0ZpZ1dLQllvRmlnV0tCWW9GaWdXS0JZb0ZpZ1VJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FpZ1dLQllvRmlnV0tCWW9GaWdXS0JZb0ZpZ1dLQllvRmlnV0tCWW9GaWdXS0JZb0ZpZ1dLQllvRmlnV0tCWW9GaWdXS0JZb0ZpZ1dLQllvRmlnV0xCZi8vLy8vLy93UUFCQUFFQUFRQUJBQUVBQVFBQkFBRUFBUUFBd0FFQUFRQUFnQUVBQVFBQkFBRUFBUUFCQUFFQUFRQUJBQUVBQVFBQkFBRUFBUUFCQUFFQUFRQUJBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFRQUJBQUVBQVFBQkFBRUFBUUFCQUFFQUFRQUJBQUVBQVFBQkFBRUFBUUFCQUFFQUFRQUJBQUVBQVFBQkFBRUFBUUFCQUFFQUFRQUJBQUVBQVFBQkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBT0FBQUFBQUFBQUFRQURnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVVBQlFBRkFBVUFCUUFGQUFVQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUFBQVVBQUFBRkFBVUFBQUFGQUFVQUFBQUZBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQkFBRUFBUUFCQUFFQUFRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBQUFBUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFVQUJRQUZBQVVBQlFBRkFBVUFBUUFBQUFVQUJRQUZBQVVBQlFBRkFBQUFBQUFGQUFVQUFBQUZBQVVBQlFBRkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFFQUFBQUZBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUZBQUFBQUFBRkFBVUFBUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJ3QUZBQVVBQlFBRkFBQUFCd0FIQUFjQUFBQUhBQWNBQndBRkFBRUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBVUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBSEFBY0FCd0FGQUFVQUJRQUZBQWNBQndBRkFBVUFBQUFBQUFFQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFIQUFBQUFRQUJBQUFBQUFBQUFBQUFBQUFGQUFVQUJRQUZBQUFBQndBRkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQlFBSEFBY0FCd0FIQUFjQUFBQUhBQWNBQUFBQUFBVUFCUUFIQUFVQUFRQUhBQUVBQndBRkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJRQUZBQVVBQlFBRkFBVUFCd0FCQUFVQUJRQUZBQVVBQUFBQUFBQUFBQUFBQUFFQUFRQUJBQUVBQVFBQkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJ3QUZBQVVBQUFBQUFBQUFBQUFBQUFBQUJRQUZBQVVBQlFBRkFBVUFBUUFGQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFVQUJRQUZBQVFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUUFCUUFOQUFRQUJBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFRQUJBQUVBQVFBQkFBRUFBUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQU9BQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQkFBRUFBUUFCQUFFQUFRQUJBQUVBQVFBQkFBRUFBUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRUFBUUFCQUFFQUFRQUJBQUVBQVFBQkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQlFBSEFBVUFCUUFGQUFBQUFBQUFBQWNBQlFBRkFBVUFCUUFGQUFRQUJBQUVBQVFBQkFBRUFBUUFCQUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCQUFFQUFRQUJBQUVBQVFBQkFBRUFBUUFCQUFFQUFRQUJBQUVBQVFBQkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFVQUJRQUZBQVVBQUFBRkFBVUFCUUFGQUFVQUFBQUZBQVVBQlFBQUFBVUFCUUFGQUFVQUJRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUZBQVVBQlFBQUFBQUFBQUFBQUFVQUJRQUZBQWNBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCUUFIQUFVQUFBQUhBQWNBQndBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQndBSEFBY0FCd0FGQUFjQUJ3QUFBQVVBQlFBRkFBVUFCUUFGQUFVQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUZBQVVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBVUFCd0FIQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJRQUFBQVVBQndBSEFBVUFCUUFGQUFVQUFBQUFBQWNBQndBQUFBQUFCd0FIQUFVQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVVBQlFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQlFBQUFBQUFCUUFGQUFjQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUZBQUFBQndBSEFBY0FCUUFGQUFBQUFBQUFBQUFBQlFBRkFBQUFBQUFGQUFVQUJRQUFBQUFBQUFBRkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBVUFCUUFBQUFBQUFBQUZBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQndBRkFBVUFCUUFGQUFVQUFBQUZBQVVBQndBQUFBY0FCd0FGQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUZBQVVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFGQUFVQUJRQUZBQVVBQlFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBVUFBQUFGQUFVQUJ3QUZBQVVBQlFBRkFBQUFBQUFIQUFjQUFBQUFBQWNBQndBRkFBQUFBQUFBQUFBQUFBQUFBQUFBQlFBRkFBVUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFGQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUZBQWNBQndBQUFBQUFBQUFIQUFjQUJ3QUFBQWNBQndBSEFBVUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCUUFIQUFjQUJ3QUZBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVVBQndBSEFBY0FCd0FBQUFVQUJRQUZBQUFBQlFBRkFBVUFCUUFBQUFBQUFBQUFBQUFBQUFBQUFBVUFCUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJRQUFBQWNBQlFBSEFBY0FCUUFIQUFjQUFBQUZBQWNBQndBQUFBY0FCd0FGQUFVQUFBQUFBQUFBQUFBQUFBQUFBQUFGQUFVQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJRQUZBQWNBQndBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFVQUJRQUFBQVVBQndBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBVUFBQUFBQUFBQUFBQUZBQWNBQndBRkFBVUFCUUFBQUFVQUFBQUhBQWNBQndBSEFBY0FCd0FIQUFVQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFVQUFBQUhBQVVBQlFBRkFBVUFCUUFGQUFVQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFGQUFBQUJ3QUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQlFBRkFBVUFCUUFGQUFVQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFVQUJRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCUUFBQUFVQUFBQUZBQUFBQUFBQUFBQUFCd0FIQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQndBRkFBVUFCUUFGQUFVQUFBQUZBQVVBQUFBQUFBQUFBQUFBQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUFBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBVUFCUUFGQUFVQUJ3QUZBQVVBQlFBRkFBVUFCUUFBQUFVQUJRQUhBQWNBQlFBRkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUhBQWNBQlFBRkFBQUFBQUFBQUFBQUJRQUZBQVVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUZBQVVBQlFBRkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJRQUFBQWNBQlFBRkFBQUFBQUFBQUFBQUFBQUFBQVVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQlFBRkFBVUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVVBQlFBSEFBVUFCUUFGQUFVQUJRQUZBQVVBQndBSEFBY0FCd0FIQUFjQUJ3QUhBQVVBQndBSEFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFGQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQlFBRkFBVUFCd0FIQUFjQUJ3QUZBQVVBQndBSEFBY0FBQUFBQUFBQUFBQUhBQWNBQlFBSEFBY0FCd0FIQUFjQUJ3QUZBQVVBQlFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJRQUZBQWNBQndBRkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFjQUJRQUhBQVVBQlFBRkFBVUFCUUFGQUFVQUFBQUZBQUFBQlFBQUFBQUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBY0FCd0FIQUFjQUJ3QUhBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQUFBQUFBVUFCUUFGQUFVQUJRQUhBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVVBQlFBRkFBVUFCUUFGQUFVQUJ3QUZBQWNBQndBSEFBY0FCd0FGQUFjQUJ3QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFGQUFVQUJ3QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBSEFBVUFCUUFGQUFVQUJ3QUhBQVVBQlFBSEFBVUFCUUFGQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUZBQWNBQlFBRkFBY0FCd0FIQUFVQUJ3QUZBQVVBQlFBSEFBY0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJ3QUhBQWNBQndBSEFBY0FCd0FIQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFIQUFjQUJRQUZBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJRQUZBQVVBQUFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFjQUJRQUZBQVVBQlFBRkFBVUFCUUFBQUFBQUFBQUFBQVVBQUFBQUFBQUFBQUFBQUFBQUJRQUFBQUFBQndBRkFBVUFBQUFBQUFBQUFBQUFBQUFBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQUFBQlFBRkFBVUFCUUFGQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBVUFCUUFGQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCUUFGQUFVQUJRQUZBQVVBRGdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFPQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFVQUJRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFVQUJRQUZBQVVBQUFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBQUFBQUFBQUFBQUJRQUFBQUFBQUFBRkFBQUFBQUFBQUFBQUJRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCd0FIQUFVQUJRQUhBQUFBQUFBQUFBQUFCUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFjQUJ3QUhBQWNBQlFBRkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFVQUFBQUFBQUFBQUFBQUFBQUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUhBQWNBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRkFBY0FCd0FGQUFVQUJRQUZBQWNBQndBRkFBVUFCd0FIQUFBQUFBQUFBQUFBQUFBRkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBVUFCUUFGQUFVQUJRQUZBQWNBQndBRkFBVUFCd0FIQUFVQUJRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRkFBY0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVVBQUFBRkFBVUFCUUFBQUFBQUJRQUZBQUFBQUFBQUFBQUFBQUFGQUFVQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQWNBQlFBRkFBY0FCd0FBQUFBQUFBQUFBQUFBQndBRkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFjQUJ3QUZBQWNBQndBRkFBY0FCd0FBQUFjQUJRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUZBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFVQUJRQUZBQVVBQlFBQUFBQUFBQUFBQUFBQUFBQUZBQVVBQlFBQUFBVUFCUUFBQUFBQUFBQUFBQUFBQlFBRkFBVUFCUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRkFBVUFCUUFBQUFBQUFBQUFBQVVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBVUFCUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFjQUJRQUhBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFGQUFVQUJRQUZBQVVBQndBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFGQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJ3QUhBQWNBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQndBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFIQUFjQUJ3QUZBQVVBQlFBSEFBY0FCUUFIQUFVQUJRQUFBQUFBQUFBQUFBQUFBQUFGQUFBQUJ3QUhBQWNBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBVUFCd0FIQUFjQUJ3QUFBQUFBQndBSEFBQUFBQUFIQUFjQUJ3QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUZBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQndBSEFBQUFBQUFGQUFVQUJRQUZBQVVBQlFBRkFBQUFBQUFBQUFVQUJRQUZBQVVBQlFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUhBQWNBQndBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQndBSEFBVUFCUUFGQUFjQUJRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCUUFIQUFjQUJRQUZBQVVBQlFBRkFBVUFCd0FGQUFjQUJ3QUZBQWNBQlFBRkFBY0FCUUFGQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQlFBSEFBY0FCUUFGQUFVQUJRQUFBQUFBQndBSEFBY0FCd0FGQUFVQUJ3QUZBQVVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQlFBRkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBY0FCd0FIQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFIQUFjQUJRQUhBQVVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBVUFCd0FGQUFjQUJ3QUZBQVVBQlFBRkFBVUFCUUFIQUFVQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFjQUJ3QUZBQVVBQlFBRkFBY0FCUUFGQUFVQUJRQUZBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBSEFBY0FCd0FGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFIQUFVQUJRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUhBQWNBQndBRkFBVUFCUUFGQUFBQUFBQUZBQVVBQndBSEFBY0FCd0FGQUFBQUFBQUFBQWNBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQlFBRkFBVUFCUUFGQUFVQUJ3QUhBQVVBQlFBRkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQWNBQlFBRkFBVUFCUUFGQUFVQUJRQUFBQVVBQlFBRkFBVUFCUUFGQUFjQUJRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFBQUFIQUFVQUJRQUZBQVVBQlFBRkFBVUFCd0FGQUFVQUJ3QUZBQVVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQlFBRkFBVUFCUUFGQUFVQUFBQUFBQUFBQlFBQUFBVUFCUUFBQUFVQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUhBQWNBQndBSEFBY0FBQUFGQUFVQUFBQUhBQWNBQlFBSEFBVUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFGQUFVQUJ3QUhBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUZBQVVBQlFBRkFBVUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFGQUFVQUJRQUZBQVVBQlFBRkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQlFBQUFBY0FCd0FIQUFjQUJ3QUhBQWNBQndBSEFBY0FCd0FIQUFjQUJ3QUhBQUFBQUFBQUFBQUFBQUFBQUFBQUJRQUZBQVVBQlFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFVQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQWNBQndBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFVQUJRQUFBQVVBQlFBRkFBQUFBQUFGQUFVQUJRQUZBQVVBQlFBRkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJRQUZBQVVBQlFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCUUFGQUFVQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBQUFBQUFBQUFBQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVVBQlFBRkFBVUFCUUFBQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQlFBRkFBVUFCUUFGQUFVQUJRQUFBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUFBQUFBQlFBRkFBVUFCUUFGQUFVQUJRQUFBQVVBQlFBQUFBVUFCUUFGQUFVQUJRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRkFBVUFCUUFGQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCUUFGQUFVQUJRQUZBQVVBQlFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFPQUE0QURnQU9BQTRBRGdBT0FBNEFEZ0FPQUE0QURnQU9BQTRBRGdBT0FBNEFEZ0FPQUE0QURnQU9BQTRBRGdBT0FBNEFEZ0FGQUFVQUJRQUZBQVVBRGdBT0FBNEFEZ0FPQUE0QUR3QVBBQThBRHdBUEFBOEFEd0FQQUE4QUR3QVBBQThBRHdBUEFBOEFEd0FQQUE4QUR3QVBBQThBRHdBUEFBOEFEd0FQQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFjQUJ3QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQndBSEFBY0FCd0FIQUFjQUJ3QUhBQWNBQndBSEFBY0FCd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQndBSEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQndBSEFBY0FCd0FIQUFjQUJ3QUhBQWNBQndBSEFBY0FCd0FIQUFjQUJ3QUhBQWNBQndBSEFBY0FCd0FIQUFjQUJ3QUhBQWNBQndBSEFBY0FCd0FIQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBQUFBQUFBQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBS0FBb0FDZ0FLQUFvQUNnQUtBQW9BQ2dBS0FBb0FDZ0FLQUFvQUNnQUtBQW9BQ2dBS0FBb0FDZ0FLQUFvQUNnQU1BQXdBREFBTUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUFBQUFBQUFBQUFBS0FBb0FDZ0FLQUFvQUNnQUtBQW9BQ2dBS0FBb0FDZ0FLQUFvQUNnQUtBQW9BQ2dBS0FBb0FDZ0FLQUFvQUNnQUtBQW9BQ2dBS0FBb0FDZ0FLQUFvQUNnQUFBQUFBQUFBQUFBc0FEQUFNQUF3QURBQU1BQXdBREFBTUFBd0FEQUFNQUF3QURBQU1BQXdBREFBTUFBd0FEQUFNQUF3QURBQU1BQXdBREFBTUFBd0FDd0FNQUF3QURBQU1BQXdBREFBTUFBd0FEQUFNQUF3QURBQU1BQXdBREFBTUFBd0FEQUFNQUF3QURBQU1BQXdBREFBTUFBd0FEQUFBQUFBQURnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBNEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQU9BQTRBRGdBT0FBNEFEZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQURnQU9BQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQTRBRGdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRGdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRGdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRGdBT0FBNEFEZ0FPQUE0QURnQU9BQTRBRGdBT0FBQUFBQUFBQUFBQURnQU9BQTRBQUFBQUFBQUFBQUFBQUFBQUFBQU9BQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFEZ0FPQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQURnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQU9BQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQURnQU9BQTRBRGdBQUFBNEFEZ0FPQUE0QURnQU9BQUFBRGdBT0FBNEFEZ0FPQUE0QURnQU9BQTRBRGdBT0FBNEFBQUFPQUE0QURnQU9BQTRBRGdBT0FBNEFEZ0FPQUE0QURnQU9BQTRBRGdBT0FBNEFEZ0FPQUE0QURnQU9BQTRBRGdBT0FBNEFEZ0FPQUE0QURnQU9BQTRBRGdBT0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFEZ0FPQUE0QURnQU9BQTRBRGdBT0FBNEFEZ0FPQUE0QURnQU9BQTRBRGdBT0FBNEFBQUFBQUE0QURnQU9BQTRBRGdBT0FBNEFEZ0FPQUE0QURnQUFBQTRBQUFBT0FBQUFBQUFBQUFBQUFBQUFBQTRBQUFBQUFBQUFBQUFBQUFBQURnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQTRBRGdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFEZ0FBQUFBQURnQUFBQUFBQUFBQUFBNEFBQUFPQUFBQUFBQUFBQUFBRGdBT0FBNEFBQUFPQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQU9BQTRBRGdBT0FBNEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBT0FBNEFEZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFPQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBT0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQU9BQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBT0FBNEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUE0QURnQU9BQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRGdBT0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFEZ0FBQUFBQUFBQUFBQTRBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQU9BQUFBRGdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQU9BQTRBRGdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQTRBRGdBT0FBNEFEZ0FPQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQTRBRGdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQURnQUFBQUFBRGdBT0FBNEFEZ0FPQUE0QURnQU9BQTRBRGdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQURnQU9BQTRBRGdBT0FBNEFEZ0FPQUE0QURnQU9BQTRBRGdBT0FBNEFEZ0FPQUE0QURnQUFBQTRBRGdBT0FBNEFEZ0FPQUE0QURnQU9BQTRBRGdBT0FBNEFEZ0FPQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQURnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUE0QUFBQUFBQTRBRGdBT0FBNEFEZ0FPQUE0QURnQU9BQUFBRGdBT0FBNEFEZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFPQUE0QURnQU9BQTRBRGdBT0FBNEFEZ0FPQUE0QURnQU9BQTRBRGdBT0FBNEFEZ0FPQUE0QURnQU9BQTRBQUFBQUFBQUFBQUFBQUFBQURnQU9BQTRBRGdBT0FBNEFEZ0FPQUE0QURnQU9BQTRBRGdBT0FBNEFEZ0FPQUE0QURnQU9BQTRBRGdBT0FBNEFEZ0FPQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQTRBRGdBT0FBNEFEZ0FPQUE0QURnQU9BQTRBRGdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFPQUE0QURnQU9BQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQURnQU9BQTRBRGdBT0FBNEFEZ0FPQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQURnQU9BQTRBRGdBT0FBNEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBNEFEZ0FPQUE0QURnQU9BQTRBRGdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBT0FBNEFEZ0FPQUE0QURnQU9BQTRBRGdBT0FBNEFEZ0FPQUE0QURnQU9BQTRBRGdBT0FBNEFEZ0FPQUE0QURnQU9BQTRBRGdBT0FBNEFBQUFPQUE0QURnQU9BQTRBRGdBQUFBNEFEZ0FPQUE0QURnQU9BQTRBRGdBT0FBNEFEZ0FPQUE0QURnQU9BQTRBRGdBT0FBNEFEZ0FPQUE0QURnQU9BQTRBQUFBQUFBQUFBQUE9IikseHI9QXJyYXkuaXNBcnJheSh2cik/ZnVuY3Rpb24oQSl7Zm9yKHZhciBlPUEubGVuZ3RoLHQ9W10scj0wO3I8ZTtyKz00KXQucHVzaChBW3IrM108PDI0fEFbcisyXTw8MTZ8QVtyKzFdPDw4fEFbcl0pO3JldHVybiB0fSh2cik6bmV3IFVpbnQzMkFycmF5KHZyKSxNcj1BcnJheS5pc0FycmF5KHZyKT9mdW5jdGlvbihBKXtmb3IodmFyIGU9QS5sZW5ndGgsdD1bXSxyPTA7cjxlO3IrPTIpdC5wdXNoKEFbcisxXTw8OHxBW3JdKTtyZXR1cm4gdH0odnIpOm5ldyBVaW50MTZBcnJheSh2ciksYnI9ZnIoTXIsMTIseHJbNF0vMiksRHI9Mj09PXhyWzVdP2ZyKE1yLCgyNCt4cls0XSkvMik6KHZyPXhyLE1yPU1hdGguY2VpbCgoMjQreHJbNF0pLzQpLHZyLnNsaWNlP3ZyLnNsaWNlKE1yLERyKTpuZXcgVWludDMyQXJyYXkoQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwodnIsTXIsRHIpKSksbmV3IEhyKHhyWzBdLHhyWzFdLHhyWzJdLHhyWzNdLGJyLERyKSksUnI9IsOXIixOcj1mdW5jdGlvbihBLGUsdCxyLEIpe3ZhciBuPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIscz1kb2N1bWVudC5jcmVhdGVFbGVtZW50TlMobiwic3ZnIiksbj1kb2N1bWVudC5jcmVhdGVFbGVtZW50TlMobiwiZm9yZWlnbk9iamVjdCIpO3JldHVybiBzLnNldEF0dHJpYnV0ZU5TKG51bGwsIndpZHRoIixBLnRvU3RyaW5nKCkpLHMuc2V0QXR0cmlidXRlTlMobnVsbCwiaGVpZ2h0IixlLnRvU3RyaW5nKCkpLG4uc2V0QXR0cmlidXRlTlMobnVsbCwid2lkdGgiLCIxMDAlIiksbi5zZXRBdHRyaWJ1dGVOUyhudWxsLCJoZWlnaHQiLCIxMDAlIiksbi5zZXRBdHRyaWJ1dGVOUyhudWxsLCJ4Iix0LnRvU3RyaW5nKCkpLG4uc2V0QXR0cmlidXRlTlMobnVsbCwieSIsci50b1N0cmluZygpKSxuLnNldEF0dHJpYnV0ZU5TKG51bGwsImV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQiLCJ0cnVlIikscy5hcHBlbmRDaGlsZChuKSxuLmFwcGVuZENoaWxkKEIpLHN9LFByPWZ1bmN0aW9uKHIpe3JldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihBLGUpe3ZhciB0PW5ldyBJbWFnZTt0Lm9ubG9hZD1mdW5jdGlvbigpe3JldHVybiBBKHQpfSx0Lm9uZXJyb3I9ZSx0LnNyYz0iZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmLTgsIitlbmNvZGVVUklDb21wb25lbnQoKG5ldyBYTUxTZXJpYWxpemVyKS5zZXJpYWxpemVUb1N0cmluZyhyKSl9KX0sWHI9e2dldCBTVVBQT1JUX1JBTkdFX0JPVU5EUygpe3ZhciBBPWZ1bmN0aW9uKEEpe2lmKEEuY3JlYXRlUmFuZ2Upe3ZhciBlPUEuY3JlYXRlUmFuZ2UoKTtpZihlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCl7dmFyIHQ9QS5jcmVhdGVFbGVtZW50KCJib3VuZHRlc3QiKTt0LnN0eWxlLmhlaWdodD0iMTIzcHgiLHQuc3R5bGUuZGlzcGxheT0iYmxvY2siLEEuYm9keS5hcHBlbmRDaGlsZCh0KSxlLnNlbGVjdE5vZGUodCk7ZT1lLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLGU9TWF0aC5yb3VuZChlLmhlaWdodCk7aWYoQS5ib2R5LnJlbW92ZUNoaWxkKHQpLDEyMz09PWUpcmV0dXJuITB9fXJldHVybiExfShkb2N1bWVudCk7cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShYciwiU1VQUE9SVF9SQU5HRV9CT1VORFMiLHt2YWx1ZTpBfSksQX0sZ2V0IFNVUFBPUlRfV09SRF9CUkVBS0lORygpe3ZhciBBPVhyLlNVUFBPUlRfUkFOR0VfQk9VTkRTJiZmdW5jdGlvbihBKXt2YXIgZT1BLmNyZWF0ZUVsZW1lbnQoImJvdW5kdGVzdCIpO2Uuc3R5bGUud2lkdGg9IjUwcHgiLGUuc3R5bGUuZGlzcGxheT0iYmxvY2siLGUuc3R5bGUuZm9udFNpemU9IjEycHgiLGUuc3R5bGUubGV0dGVyU3BhY2luZz0iMHB4IixlLnN0eWxlLndvcmRTcGFjaW5nPSIwcHgiLEEuYm9keS5hcHBlbmRDaGlsZChlKTt2YXIgcj1BLmNyZWF0ZVJhbmdlKCk7ZS5pbm5lckhUTUw9ImZ1bmN0aW9uIj09dHlwZW9mIiIucmVwZWF0PyImIzEyODEwNDsiLnJlcGVhdCgxMCk6IiI7dmFyIEI9ZS5maXJzdENoaWxkLHQ9UShCLmRhdGEpLm1hcChmdW5jdGlvbihBKXtyZXR1cm4gZyhBKX0pLG49MCxzPXt9LHQ9dC5ldmVyeShmdW5jdGlvbihBLGUpe3Iuc2V0U3RhcnQoQixuKSxyLnNldEVuZChCLG4rQS5sZW5ndGgpO3ZhciB0PXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7bis9QS5sZW5ndGg7QT10Lng+cy54fHx0Lnk+cy55O3JldHVybiBzPXQsMD09PWV8fEF9KTtyZXR1cm4gQS5ib2R5LnJlbW92ZUNoaWxkKGUpLHR9KGRvY3VtZW50KTtyZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KFhyLCJTVVBQT1JUX1dPUkRfQlJFQUtJTkciLHt2YWx1ZTpBfSksQX0sZ2V0IFNVUFBPUlRfU1ZHX0RSQVdJTkcoKXt2YXIgQT1mdW5jdGlvbihBKXt2YXIgZT1uZXcgSW1hZ2UsdD1BLmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpLEE9dC5nZXRDb250ZXh0KCIyZCIpO2lmKCFBKXJldHVybiExO2Uuc3JjPSJkYXRhOmltYWdlL3N2Zyt4bWwsPHN2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnPjwvc3ZnPiI7dHJ5e0EuZHJhd0ltYWdlKGUsMCwwKSx0LnRvRGF0YVVSTCgpfWNhdGNoKEEpe3JldHVybiExfXJldHVybiEwfShkb2N1bWVudCk7cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShYciwiU1VQUE9SVF9TVkdfRFJBV0lORyIse3ZhbHVlOkF9KSxBfSxnZXQgU1VQUE9SVF9GT1JFSUdOT0JKRUNUX0RSQVdJTkcoKXt2YXIgQT0iZnVuY3Rpb24iPT10eXBlb2YgQXJyYXkuZnJvbSYmImZ1bmN0aW9uIj09dHlwZW9mIHdpbmRvdy5mZXRjaD9mdW5jdGlvbih0KXt2YXIgQT10LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpLHI9MTAwO0Eud2lkdGg9cixBLmhlaWdodD1yO3ZhciBCPUEuZ2V0Q29udGV4dCgiMmQiKTtpZighQilyZXR1cm4gUHJvbWlzZS5yZWplY3QoITEpO0IuZmlsbFN0eWxlPSJyZ2IoMCwgMjU1LCAwKSIsQi5maWxsUmVjdCgwLDAscixyKTt2YXIgZT1uZXcgSW1hZ2Usbj1BLnRvRGF0YVVSTCgpO2Uuc3JjPW47ZT1OcihyLHIsMCwwLGUpO3JldHVybiBCLmZpbGxTdHlsZT0icmVkIixCLmZpbGxSZWN0KDAsMCxyLHIpLFByKGUpLnRoZW4oZnVuY3Rpb24oQSl7Qi5kcmF3SW1hZ2UoQSwwLDApO3ZhciBlPUIuZ2V0SW1hZ2VEYXRhKDAsMCxyLHIpLmRhdGE7Qi5maWxsU3R5bGU9InJlZCIsQi5maWxsUmVjdCgwLDAscixyKTtBPXQuY3JlYXRlRWxlbWVudCgiZGl2Iik7cmV0dXJuIEEuc3R5bGUuYmFja2dyb3VuZEltYWdlPSJ1cmwoIituKyIpIixBLnN0eWxlLmhlaWdodD0iMTAwcHgiLExyKGUpP1ByKE5yKHIsciwwLDAsQSkpOlByb21pc2UucmVqZWN0KCExKX0pLnRoZW4oZnVuY3Rpb24oQSl7cmV0dXJuIEIuZHJhd0ltYWdlKEEsMCwwKSxMcihCLmdldEltYWdlRGF0YSgwLDAscixyKS5kYXRhKX0pLmNhdGNoKGZ1bmN0aW9uKCl7cmV0dXJuITF9KX0oZG9jdW1lbnQpOlByb21pc2UucmVzb2x2ZSghMSk7cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShYciwiU1VQUE9SVF9GT1JFSUdOT0JKRUNUX0RSQVdJTkciLHt2YWx1ZTpBfSksQX0sZ2V0IFNVUFBPUlRfQ09SU19JTUFHRVMoKXt2YXIgQT12b2lkIDAhPT0obmV3IEltYWdlKS5jcm9zc09yaWdpbjtyZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KFhyLCJTVVBQT1JUX0NPUlNfSU1BR0VTIix7dmFsdWU6QX0pLEF9LGdldCBTVVBQT1JUX1JFU1BPTlNFX1RZUEUoKXt2YXIgQT0ic3RyaW5nIj09dHlwZW9mKG5ldyBYTUxIdHRwUmVxdWVzdCkucmVzcG9uc2VUeXBlO3JldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoWHIsIlNVUFBPUlRfUkVTUE9OU0VfVFlQRSIse3ZhbHVlOkF9KSxBfSxnZXQgU1VQUE9SVF9DT1JTX1hIUigpe3ZhciBBPSJ3aXRoQ3JlZGVudGlhbHMiaW4gbmV3IFhNTEh0dHBSZXF1ZXN0O3JldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoWHIsIlNVUFBPUlRfQ09SU19YSFIiLHt2YWx1ZTpBfSksQX0sZ2V0IFNVUFBPUlRfTkFUSVZFX1RFWFRfU0VHTUVOVEFUSU9OKCl7dmFyIEE9ISgidW5kZWZpbmVkIj09dHlwZW9mIEludGx8fCFJbnRsLlNlZ21lbnRlcik7cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShYciwiU1VQUE9SVF9OQVRJVkVfVEVYVF9TRUdNRU5UQVRJT04iLHt2YWx1ZTpBfSksQX19LEpyPWZ1bmN0aW9uKEEsZSl7dGhpcy50ZXh0PUEsdGhpcy5ib3VuZHM9ZX0sWXI9ZnVuY3Rpb24oQSxlKXt2YXIgdD1lLm93bmVyRG9jdW1lbnQ7aWYodCl7dmFyIHI9dC5jcmVhdGVFbGVtZW50KCJodG1sMmNhbnZhc3dyYXBwZXIiKTtyLmFwcGVuZENoaWxkKGUuY2xvbmVOb2RlKCEwKSk7dD1lLnBhcmVudE5vZGU7aWYodCl7dC5yZXBsYWNlQ2hpbGQocixlKTtBPWYoQSxyKTtyZXR1cm4gci5maXJzdENoaWxkJiZ0LnJlcGxhY2VDaGlsZChyLmZpcnN0Q2hpbGQsciksQX19cmV0dXJuIGQuRU1QVFl9LFdyPWZ1bmN0aW9uKEEsZSx0KXt2YXIgcj1BLm93bmVyRG9jdW1lbnQ7aWYoIXIpdGhyb3cgbmV3IEVycm9yKCJOb2RlIGhhcyBubyBvd25lciBkb2N1bWVudCIpO3I9ci5jcmVhdGVSYW5nZSgpO3JldHVybiByLnNldFN0YXJ0KEEsZSksci5zZXRFbmQoQSxlK3QpLHJ9LFpyPWZ1bmN0aW9uKEEpe2lmKFhyLlNVUFBPUlRfTkFUSVZFX1RFWFRfU0VHTUVOVEFUSU9OKXt2YXIgZT1uZXcgSW50bC5TZWdtZW50ZXIodm9pZCAwLHtncmFudWxhcml0eToiZ3JhcGhlbWUifSk7cmV0dXJuIEFycmF5LmZyb20oZS5zZWdtZW50KEEpKS5tYXAoZnVuY3Rpb24oQSl7cmV0dXJuIEEuc2VnbWVudH0pfXJldHVybiBmdW5jdGlvbihBKXtmb3IodmFyIGUsdD1tcihBKSxyPVtdOyEoZT10Lm5leHQoKSkuZG9uZTspZS52YWx1ZSYmci5wdXNoKGUudmFsdWUuc2xpY2UoKSk7cmV0dXJuIHJ9KEEpfSxfcj1mdW5jdGlvbihBLGUpe3JldHVybiAwIT09ZS5sZXR0ZXJTcGFjaW5nP1pyKEEpOmZ1bmN0aW9uKEEsZSl7aWYoWHIuU1VQUE9SVF9OQVRJVkVfVEVYVF9TRUdNRU5UQVRJT04pe3ZhciB0PW5ldyBJbnRsLlNlZ21lbnRlcih2b2lkIDAse2dyYW51bGFyaXR5OiJ3b3JkIn0pO3JldHVybiBBcnJheS5mcm9tKHQuc2VnbWVudChBKSkubWFwKGZ1bmN0aW9uKEEpe3JldHVybiBBLnNlZ21lbnR9KX1yZXR1cm4ganIoQSxlKX0oQSxlKX0scXI9WzMyLDE2MCw0OTYxLDY1NzkyLDY1NzkzLDQxNTMsNDI0MV0sanI9ZnVuY3Rpb24oQSxlKXtmb3IodmFyIHQscj13QShBLHtsaW5lQnJlYWs6ZS5saW5lQnJlYWssd29yZEJyZWFrOiJicmVhay13b3JkIj09PWUub3ZlcmZsb3dXcmFwPyJicmVhay13b3JkIjplLndvcmRCcmVha30pLEI9W107ISh0PXIubmV4dCgpKS5kb25lOykhZnVuY3Rpb24oKXt2YXIgQSxlO3QudmFsdWUmJihBPXQudmFsdWUuc2xpY2UoKSxBPVEoQSksZT0iIixBLmZvckVhY2goZnVuY3Rpb24oQSl7LTE9PT1xci5pbmRleE9mKEEpP2UrPWcoQSk6KGUubGVuZ3RoJiZCLnB1c2goZSksQi5wdXNoKGcoQSkpLGU9IiIpfSksZS5sZW5ndGgmJkIucHVzaChlKSl9KCk7cmV0dXJuIEJ9LHpyPWZ1bmN0aW9uKEEsZSx0KXt2YXIgQixuLHMsbyxpO3RoaXMudGV4dD0kcihlLmRhdGEsdC50ZXh0VHJhbnNmb3JtKSx0aGlzLnRleHRCb3VuZHM9KEI9QSxBPXRoaXMudGV4dCxzPWUsQT1fcihBLG49dCksbz1bXSxpPTAsQS5mb3JFYWNoKGZ1bmN0aW9uKEEpe3ZhciBlLHQscjtuLnRleHREZWNvcmF0aW9uTGluZS5sZW5ndGh8fDA8QS50cmltKCkubGVuZ3RoP1hyLlNVUFBPUlRfUkFOR0VfQk9VTkRTPzE8KHI9V3IocyxpLEEubGVuZ3RoKS5nZXRDbGllbnRSZWN0cygpKS5sZW5ndGg/KGU9WnIoQSksdD0wLGUuZm9yRWFjaChmdW5jdGlvbihBKXtvLnB1c2gobmV3IEpyKEEsZC5mcm9tRE9NUmVjdExpc3QoQixXcihzLHQraSxBLmxlbmd0aCkuZ2V0Q2xpZW50UmVjdHMoKSkpKSx0Kz1BLmxlbmd0aH0pKTpvLnB1c2gobmV3IEpyKEEsZC5mcm9tRE9NUmVjdExpc3QoQixyKSkpOihyPXMuc3BsaXRUZXh0KEEubGVuZ3RoKSxvLnB1c2gobmV3IEpyKEEsWXIoQixzKSkpLHM9cik6WHIuU1VQUE9SVF9SQU5HRV9CT1VORFN8fChzPXMuc3BsaXRUZXh0KEEubGVuZ3RoKSksaSs9QS5sZW5ndGh9KSxvKX0sJHI9ZnVuY3Rpb24oQSxlKXtzd2l0Y2goZSl7Y2FzZSAxOnJldHVybiBBLnRvTG93ZXJDYXNlKCk7Y2FzZSAzOnJldHVybiBBLnJlcGxhY2UoQUIsZUIpO2Nhc2UgMjpyZXR1cm4gQS50b1VwcGVyQ2FzZSgpO2RlZmF1bHQ6cmV0dXJuIEF9fSxBQj0vKF58XHN8OnwtfFwofFwpKShbYS16XSkvZyxlQj1mdW5jdGlvbihBLGUsdCl7cmV0dXJuIDA8QS5sZW5ndGg/ZSt0LnRvVXBwZXJDYXNlKCk6QX0sdEI9KEEockIsU3I9dXIpLHJCKTtmdW5jdGlvbiByQihBLGUpe0E9U3IuY2FsbCh0aGlzLEEsZSl8fHRoaXM7cmV0dXJuIEEuc3JjPWUuY3VycmVudFNyY3x8ZS5zcmMsQS5pbnRyaW5zaWNXaWR0aD1lLm5hdHVyYWxXaWR0aCxBLmludHJpbnNpY0hlaWdodD1lLm5hdHVyYWxIZWlnaHQsQS5jb250ZXh0LmNhY2hlLmFkZEltYWdlKEEuc3JjKSxBfXZhciBCQixuQj0oQShzQixCQj11ciksc0IpO2Z1bmN0aW9uIHNCKEEsZSl7QT1CQi5jYWxsKHRoaXMsQSxlKXx8dGhpcztyZXR1cm4gQS5jYW52YXM9ZSxBLmludHJpbnNpY1dpZHRoPWUud2lkdGgsQS5pbnRyaW5zaWNIZWlnaHQ9ZS5oZWlnaHQsQX12YXIgb0IsaUI9KEEoUUIsb0I9dXIpLFFCKTtmdW5jdGlvbiBRQihBLGUpe3ZhciB0PW9CLmNhbGwodGhpcyxBLGUpfHx0aGlzLHI9bmV3IFhNTFNlcmlhbGl6ZXIsQT1mKEEsZSk7cmV0dXJuIGUuc2V0QXR0cmlidXRlKCJ3aWR0aCIsQS53aWR0aCsicHgiKSxlLnNldEF0dHJpYnV0ZSgiaGVpZ2h0IixBLmhlaWdodCsicHgiKSx0LnN2Zz0iZGF0YTppbWFnZS9zdmcreG1sLCIrZW5jb2RlVVJJQ29tcG9uZW50KHIuc2VyaWFsaXplVG9TdHJpbmcoZSkpLHQuaW50cmluc2ljV2lkdGg9ZS53aWR0aC5iYXNlVmFsLnZhbHVlLHQuaW50cmluc2ljSGVpZ2h0PWUuaGVpZ2h0LmJhc2VWYWwudmFsdWUsdC5jb250ZXh0LmNhY2hlLmFkZEltYWdlKHQuc3ZnKSx0fXZhciBjQixhQj0oQShnQixjQj11ciksZ0IpO2Z1bmN0aW9uIGdCKEEsZSl7QT1jQi5jYWxsKHRoaXMsQSxlKXx8dGhpcztyZXR1cm4gQS52YWx1ZT1lLnZhbHVlLEF9dmFyIHdCLFVCPShBKGxCLHdCPXVyKSxsQik7ZnVuY3Rpb24gbEIoQSxlKXtBPXdCLmNhbGwodGhpcyxBLGUpfHx0aGlzO3JldHVybiBBLnN0YXJ0PWUuc3RhcnQsQS5yZXZlcnNlZD0iYm9vbGVhbiI9PXR5cGVvZiBlLnJldmVyc2VkJiYhMD09PWUucmV2ZXJzZWQsQX12YXIgQ0IsdUI9W3t0eXBlOjE1LGZsYWdzOjAsdW5pdDoicHgiLG51bWJlcjozfV0sRkI9W3t0eXBlOjE2LGZsYWdzOjAsbnVtYmVyOjUwfV0saEI9ImNoZWNrYm94IixkQj0icmFkaW8iLGZCPSJwYXNzd29yZCIsSEI9NzA3NDA2NTkxLHBCPShBKEVCLENCPXVyKSxFQik7ZnVuY3Rpb24gRUIoQSxlKXt2YXIgdD1DQi5jYWxsKHRoaXMsQSxlKXx8dGhpcztzd2l0Y2godC50eXBlPWUudHlwZS50b0xvd2VyQ2FzZSgpLHQuY2hlY2tlZD1lLmNoZWNrZWQsdC52YWx1ZT0wPT09KGU9KEE9ZSkudHlwZT09PWZCP25ldyBBcnJheShBLnZhbHVlLmxlbmd0aCsxKS5qb2luKCLigKIiKTpBLnZhbHVlKS5sZW5ndGg/QS5wbGFjZWhvbGRlcnx8IiI6ZSx0LnR5cGUhPT1oQiYmdC50eXBlIT09ZEJ8fCh0LnN0eWxlcy5iYWNrZ3JvdW5kQ29sb3I9MzczOTE0ODAzMSx0LnN0eWxlcy5ib3JkZXJUb3BDb2xvcj10LnN0eWxlcy5ib3JkZXJSaWdodENvbG9yPXQuc3R5bGVzLmJvcmRlckJvdHRvbUNvbG9yPXQuc3R5bGVzLmJvcmRlckxlZnRDb2xvcj0yNzc5MDk2NTc1LHQuc3R5bGVzLmJvcmRlclRvcFdpZHRoPXQuc3R5bGVzLmJvcmRlclJpZ2h0V2lkdGg9dC5zdHlsZXMuYm9yZGVyQm90dG9tV2lkdGg9dC5zdHlsZXMuYm9yZGVyTGVmdFdpZHRoPTEsdC5zdHlsZXMuYm9yZGVyVG9wU3R5bGU9dC5zdHlsZXMuYm9yZGVyUmlnaHRTdHlsZT10LnN0eWxlcy5ib3JkZXJCb3R0b21TdHlsZT10LnN0eWxlcy5ib3JkZXJMZWZ0U3R5bGU9MSx0LnN0eWxlcy5iYWNrZ3JvdW5kQ2xpcD1bMF0sdC5zdHlsZXMuYmFja2dyb3VuZE9yaWdpbj1bMF0sdC5ib3VuZHM9KGU9dC5ib3VuZHMpLndpZHRoPmUuaGVpZ2h0P25ldyBkKGUubGVmdCsoZS53aWR0aC1lLmhlaWdodCkvMixlLnRvcCxlLmhlaWdodCxlLmhlaWdodCk6ZS53aWR0aDxlLmhlaWdodD9uZXcgZChlLmxlZnQsZS50b3ArKGUuaGVpZ2h0LWUud2lkdGgpLzIsZS53aWR0aCxlLndpZHRoKTplKSx0LnR5cGUpe2Nhc2UgaEI6dC5zdHlsZXMuYm9yZGVyVG9wUmlnaHRSYWRpdXM9dC5zdHlsZXMuYm9yZGVyVG9wTGVmdFJhZGl1cz10LnN0eWxlcy5ib3JkZXJCb3R0b21SaWdodFJhZGl1cz10LnN0eWxlcy5ib3JkZXJCb3R0b21MZWZ0UmFkaXVzPXVCO2JyZWFrO2Nhc2UgZEI6dC5zdHlsZXMuYm9yZGVyVG9wUmlnaHRSYWRpdXM9dC5zdHlsZXMuYm9yZGVyVG9wTGVmdFJhZGl1cz10LnN0eWxlcy5ib3JkZXJCb3R0b21SaWdodFJhZGl1cz10LnN0eWxlcy5ib3JkZXJCb3R0b21MZWZ0UmFkaXVzPUZCfXJldHVybiB0fXZhciBJQix5Qj0oQShLQixJQj11ciksS0IpO2Z1bmN0aW9uIEtCKEEsZSl7QT1JQi5jYWxsKHRoaXMsQSxlKXx8dGhpcyxlPWUub3B0aW9uc1tlLnNlbGVjdGVkSW5kZXh8fDBdO3JldHVybiBBLnZhbHVlPWUmJmUudGV4dHx8IiIsQX12YXIgbUIsTEI9KEEoYkIsbUI9dXIpLGJCKTtmdW5jdGlvbiBiQihBLGUpe0E9bUIuY2FsbCh0aGlzLEEsZSl8fHRoaXM7cmV0dXJuIEEudmFsdWU9ZS52YWx1ZSxBfXZhciBEQix2Qj0oQSh4QixEQj11cikseEIpO2Z1bmN0aW9uIHhCKEEsZSl7dmFyIHQscixCPURCLmNhbGwodGhpcyxBLGUpfHx0aGlzO0Iuc3JjPWUuc3JjLEIud2lkdGg9cGFyc2VJbnQoZS53aWR0aCwxMCl8fDAsQi5oZWlnaHQ9cGFyc2VJbnQoZS5oZWlnaHQsMTApfHwwLEIuYmFja2dyb3VuZENvbG9yPUIuc3R5bGVzLmJhY2tncm91bmRDb2xvcjt0cnl7ZS5jb250ZW50V2luZG93JiZlLmNvbnRlbnRXaW5kb3cuZG9jdW1lbnQmJmUuY29udGVudFdpbmRvdy5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQmJihCLnRyZWU9a0IoQSxlLmNvbnRlbnRXaW5kb3cuZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KSx0PWUuY29udGVudFdpbmRvdy5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ/ZmUoQSxnZXRDb21wdXRlZFN0eWxlKGUuY29udGVudFdpbmRvdy5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpLmJhY2tncm91bmRDb2xvcik6TGUuVFJBTlNQQVJFTlQscj1lLmNvbnRlbnRXaW5kb3cuZG9jdW1lbnQuYm9keT9mZShBLGdldENvbXB1dGVkU3R5bGUoZS5jb250ZW50V2luZG93LmRvY3VtZW50LmJvZHkpLmJhY2tncm91bmRDb2xvcik6TGUuVFJBTlNQQVJFTlQsQi5iYWNrZ3JvdW5kQ29sb3I9b2UodCk/b2Uocik/Qi5zdHlsZXMuYmFja2dyb3VuZENvbG9yOnI6dCl9Y2F0Y2goQSl7fXJldHVybiBCfWZ1bmN0aW9uIE1CKEEpe3JldHVybiJWSURFTyI9PT1BLnRhZ05hbWV9ZnVuY3Rpb24gU0IoQSl7cmV0dXJuIlNUWUxFIj09PUEudGFnTmFtZX1mdW5jdGlvbiBUQihBKXtyZXR1cm4gMDxBLnRhZ05hbWUuaW5kZXhPZigiLSIpfXZhciBHQj1bIk9MIiwiVUwiLCJNRU5VIl0sT0I9ZnVuY3Rpb24oZSxBLHQscil7Zm9yKHZhciBCPUEuZmlyc3RDaGlsZDtCO0I9cyl7dmFyIG4scz1CLm5leHRTaWJsaW5nO1BCKEIpJiYwPEIuZGF0YS50cmltKCkubGVuZ3RoP3QudGV4dE5vZGVzLnB1c2gobmV3IHpyKGUsQix0LnN0eWxlcykpOlhCKEIpJiYocm4oQikmJkIuYXNzaWduZWROb2Rlcz9CLmFzc2lnbmVkTm9kZXMoKS5mb3JFYWNoKGZ1bmN0aW9uKEEpe3JldHVybiBPQihlLEEsdCxyKX0pOihuPVZCKGUsQikpLnN0eWxlcy5pc1Zpc2libGUoKSYmKFJCKEIsbixyKT9uLmZsYWdzfD00Ok5CKG4uc3R5bGVzKSYmKG4uZmxhZ3N8PTIpLC0xIT09R0IuaW5kZXhPZihCLnRhZ05hbWUpJiYobi5mbGFnc3w9OCksdC5lbGVtZW50cy5wdXNoKG4pLEIuc2xvdCxCLnNoYWRvd1Jvb3Q/T0IoZSxCLnNoYWRvd1Jvb3QsbixyKTplbihCKXx8cUIoQil8fHRuKEIpfHxPQihlLEIsbixyKSkpfX0sVkI9ZnVuY3Rpb24oQSxlKXtyZXR1cm4gbmV3KCRCKGUpP3RCOnpCKGUpP25COnFCKGUpP2lCOldCKGUpP2FCOlpCKGUpP1VCOl9CKGUpP3BCOnRuKGUpP3lCOmVuKGUpP0xCOkFuKGUpP3ZCOnVyKShBLGUpfSxrQj1mdW5jdGlvbihBLGUpe3ZhciB0PVZCKEEsZSk7cmV0dXJuIHQuZmxhZ3N8PTQsT0IoQSxlLHQsdCksdH0sUkI9ZnVuY3Rpb24oQSxlLHQpe3JldHVybiBlLnN0eWxlcy5pc1Bvc2l0aW9uZWRXaXRoWkluZGV4KCl8fGUuc3R5bGVzLm9wYWNpdHk8MXx8ZS5zdHlsZXMuaXNUcmFuc2Zvcm1lZCgpfHxqQihBKSYmdC5zdHlsZXMuaXNUcmFuc3BhcmVudCgpfSxOQj1mdW5jdGlvbihBKXtyZXR1cm4gQS5pc1Bvc2l0aW9uZWQoKXx8QS5pc0Zsb2F0aW5nKCl9LFBCPWZ1bmN0aW9uKEEpe3JldHVybiBBLm5vZGVUeXBlPT09Tm9kZS5URVhUX05PREV9LFhCPWZ1bmN0aW9uKEEpe3JldHVybiBBLm5vZGVUeXBlPT09Tm9kZS5FTEVNRU5UX05PREV9LEpCPWZ1bmN0aW9uKEEpe3JldHVybiBYQihBKSYmdm9pZCAwIT09QS5zdHlsZSYmIVlCKEEpfSxZQj1mdW5jdGlvbihBKXtyZXR1cm4ib2JqZWN0Ij09dHlwZW9mIEEuY2xhc3NOYW1lfSxXQj1mdW5jdGlvbihBKXtyZXR1cm4iTEkiPT09QS50YWdOYW1lfSxaQj1mdW5jdGlvbihBKXtyZXR1cm4iT0wiPT09QS50YWdOYW1lfSxfQj1mdW5jdGlvbihBKXtyZXR1cm4iSU5QVVQiPT09QS50YWdOYW1lfSxxQj1mdW5jdGlvbihBKXtyZXR1cm4ic3ZnIj09PUEudGFnTmFtZX0sakI9ZnVuY3Rpb24oQSl7cmV0dXJuIkJPRFkiPT09QS50YWdOYW1lfSx6Qj1mdW5jdGlvbihBKXtyZXR1cm4iQ0FOVkFTIj09PUEudGFnTmFtZX0sJEI9ZnVuY3Rpb24oQSl7cmV0dXJuIklNRyI9PT1BLnRhZ05hbWV9LEFuPWZ1bmN0aW9uKEEpe3JldHVybiJJRlJBTUUiPT09QS50YWdOYW1lfSxlbj1mdW5jdGlvbihBKXtyZXR1cm4iVEVYVEFSRUEiPT09QS50YWdOYW1lfSx0bj1mdW5jdGlvbihBKXtyZXR1cm4iU0VMRUNUIj09PUEudGFnTmFtZX0scm49ZnVuY3Rpb24oQSl7cmV0dXJuIlNMT1QiPT09QS50YWdOYW1lfSxCbj0obm4ucHJvdG90eXBlLmdldENvdW50ZXJWYWx1ZT1mdW5jdGlvbihBKXtBPXRoaXMuY291bnRlcnNbQV07cmV0dXJuIEEmJkEubGVuZ3RoP0FbQS5sZW5ndGgtMV06MX0sbm4ucHJvdG90eXBlLmdldENvdW50ZXJWYWx1ZXM9ZnVuY3Rpb24oQSl7QT10aGlzLmNvdW50ZXJzW0FdO3JldHVybiBBfHxbXX0sbm4ucHJvdG90eXBlLnBvcD1mdW5jdGlvbihBKXt2YXIgZT10aGlzO0EuZm9yRWFjaChmdW5jdGlvbihBKXtyZXR1cm4gZS5jb3VudGVyc1tBXS5wb3AoKX0pfSxubi5wcm90b3R5cGUucGFyc2U9ZnVuY3Rpb24oQSl7dmFyIHQ9dGhpcyxlPUEuY291bnRlckluY3JlbWVudCxBPUEuY291bnRlclJlc2V0LHI9ITA7bnVsbCE9PWUmJmUuZm9yRWFjaChmdW5jdGlvbihBKXt2YXIgZT10LmNvdW50ZXJzW0EuY291bnRlcl07ZSYmMCE9PUEuaW5jcmVtZW50JiYocj0hMSxlLmxlbmd0aHx8ZS5wdXNoKDEpLGVbTWF0aC5tYXgoMCxlLmxlbmd0aC0xKV0rPUEuaW5jcmVtZW50KX0pO3ZhciBCPVtdO3JldHVybiByJiZBLmZvckVhY2goZnVuY3Rpb24oQSl7dmFyIGU9dC5jb3VudGVyc1tBLmNvdW50ZXJdO0IucHVzaChBLmNvdW50ZXIpLChlPWV8fCh0LmNvdW50ZXJzW0EuY291bnRlcl09W10pKS5wdXNoKEEucmVzZXQpfSksQn0sbm4pO2Z1bmN0aW9uIG5uKCl7dGhpcy5jb3VudGVycz17fX1mdW5jdGlvbiBzbihyLEEsZSxCLHQsbil7cmV0dXJuIHI8QXx8ZTxyP0ZuKHIsdCwwPG4ubGVuZ3RoKTpCLmludGVnZXJzLnJlZHVjZShmdW5jdGlvbihBLGUsdCl7Zm9yKDtlPD1yOylyLT1lLEErPUIudmFsdWVzW3RdO3JldHVybiBBfSwiIikrbn1mdW5jdGlvbiBvbihBLGUsdCxyKXtmb3IodmFyIEI9IiI7dHx8QS0tLEI9cihBKStCLGU8PShBLz1lKSplOyk7cmV0dXJuIEJ9ZnVuY3Rpb24gUW4oQSxlLHQscixCKXt2YXIgbj10LWUrMTtyZXR1cm4oQTwwPyItIjoiIikrKG9uKE1hdGguYWJzKEEpLG4scixmdW5jdGlvbihBKXtyZXR1cm4gZyhNYXRoLmZsb29yKEElbikrZSl9KStCKX1mdW5jdGlvbiBjbihBLGUsdCl7dm9pZCAwPT09dCYmKHQ9Ii4gIik7dmFyIHI9ZS5sZW5ndGg7cmV0dXJuIG9uKE1hdGguYWJzKEEpLHIsITEsZnVuY3Rpb24oQSl7cmV0dXJuIGVbTWF0aC5mbG9vcihBJXIpXX0pK3R9ZnVuY3Rpb24gYW4oQSxlLHQscixCLG4pe2lmKEE8LTk5OTl8fDk5OTk8QSlyZXR1cm4gRm4oQSw0LDA8Qi5sZW5ndGgpO3ZhciBzPU1hdGguYWJzKEEpLG89QjtpZigwPT09cylyZXR1cm4gZVswXStvO2Zvcih2YXIgaT0wOzA8cyYmaTw9NDtpKyspe3ZhciBRPXMlMTA7MD09USYmUHQobiwxKSYmIiIhPT1vP289ZVtRXStvOjE8UXx8MT09USYmMD09PWl8fDE9PVEmJjE9PT1pJiZQdChuLDIpfHwxPT1RJiYxPT09aSYmUHQobiw0KSYmMTAwPEF8fDE9PVEmJjE8aSYmUHQobiw4KT9vPWVbUV0rKDA8aT90W2ktMV06IiIpK286MT09USYmMDxpJiYobz10W2ktMV0rbykscz1NYXRoLmZsb29yKHMvMTApfXJldHVybihBPDA/cjoiIikrb312YXIgZ24sd249e2ludGVnZXJzOlsxZTMsOTAwLDUwMCw0MDAsMTAwLDkwLDUwLDQwLDEwLDksNSw0LDFdLHZhbHVlczpbIk0iLCJDTSIsIkQiLCJDRCIsIkMiLCJYQyIsIkwiLCJYTCIsIlgiLCJJWCIsIlYiLCJJViIsIkkiXX0sVW49e2ludGVnZXJzOls5ZTMsOGUzLDdlMyw2ZTMsNWUzLDRlMywzZTMsMmUzLDFlMyw5MDAsODAwLDcwMCw2MDAsNTAwLDQwMCwzMDAsMjAwLDEwMCw5MCw4MCw3MCw2MCw1MCw0MCwzMCwyMCwxMCw5LDgsNyw2LDUsNCwzLDIsMV0sdmFsdWVzOlsi1ZQiLCLVkyIsItWSIiwi1ZEiLCLVkCIsItWPIiwi1Y4iLCLVjSIsItWMIiwi1YsiLCLViiIsItWJIiwi1YgiLCLVhyIsItWGIiwi1YUiLCLVhCIsItWDIiwi1YIiLCLVgSIsItWAIiwi1L8iLCLUviIsItS9Iiwi1LwiLCLUuyIsItS6Iiwi1LkiLCLUuCIsItS3Iiwi1LYiLCLUtSIsItS0Iiwi1LMiLCLUsiIsItSxIl19LGxuPXtpbnRlZ2VyczpbMWU0LDllMyw4ZTMsN2UzLDZlMyw1ZTMsNGUzLDNlMywyZTMsMWUzLDQwMCwzMDAsMjAwLDEwMCw5MCw4MCw3MCw2MCw1MCw0MCwzMCwyMCwxOSwxOCwxNywxNiwxNSwxMCw5LDgsNyw2LDUsNCwzLDIsMV0sdmFsdWVzOlsi15nXsyIsIteY17MiLCLXl9ezIiwi15bXsyIsIteV17MiLCLXlNezIiwi15PXsyIsIteS17MiLCLXkdezIiwi15DXsyIsIteqIiwi16kiLCLXqCIsItenIiwi16YiLCLXpCIsIteiIiwi16EiLCLXoCIsIteeIiwi15wiLCLXmyIsIteZ15giLCLXmdeXIiwi15nXliIsIteY15YiLCLXmNeVIiwi15kiLCLXmCIsIteXIiwi15YiLCLXlSIsIteUIiwi15MiLCLXkiIsIteRIiwi15AiXX0sQ249e2ludGVnZXJzOlsxZTQsOWUzLDhlMyw3ZTMsNmUzLDVlMyw0ZTMsM2UzLDJlMywxZTMsOTAwLDgwMCw3MDAsNjAwLDUwMCw0MDAsMzAwLDIwMCwxMDAsOTAsODAsNzAsNjAsNTAsNDAsMzAsMjAsMTAsOSw4LDcsNiw1LDQsMywyLDFdLHZhbHVlczpbIuGDtSIsIuGDsCIsIuGDryIsIuGDtCIsIuGDriIsIuGDrSIsIuGDrCIsIuGDqyIsIuGDqiIsIuGDqSIsIuGDqCIsIuGDpyIsIuGDpiIsIuGDpSIsIuGDpCIsIuGDsyIsIuGDoiIsIuGDoSIsIuGDoCIsIuGDnyIsIuGDniIsIuGDnSIsIuGDsiIsIuGDnCIsIuGDmyIsIuGDmiIsIuGDmSIsIuGDmCIsIuGDlyIsIuGDsSIsIuGDliIsIuGDlSIsIuGDlCIsIuGDkyIsIuGDkiIsIuGDkSIsIuGDkCJdfSx1bj0i66eI7J2064SI7IqkIixGbj1mdW5jdGlvbihBLGUsdCl7dmFyIHI9dD8iLiAiOiIiLEI9dD8i44CBIjoiIixuPXQ/IiwgIjoiIixzPXQ/IiAiOiIiO3N3aXRjaChlKXtjYXNlIDA6cmV0dXJuIuKAoiIrcztjYXNlIDE6cmV0dXJuIuKXpiIrcztjYXNlIDI6cmV0dXJuIuKXviIrcztjYXNlIDU6dmFyIG89UW4oQSw0OCw1NywhMCxyKTtyZXR1cm4gby5sZW5ndGg8ND8iMCIrbzpvO2Nhc2UgNDpyZXR1cm4gY24oQSwi44CH5LiA5LqM5LiJ5Zub5LqU5YWt5LiD5YWr5LmdIixCKTtjYXNlIDY6cmV0dXJuIHNuKEEsMSwzOTk5LHduLDMscikudG9Mb3dlckNhc2UoKTtjYXNlIDc6cmV0dXJuIHNuKEEsMSwzOTk5LHduLDMscik7Y2FzZSA4OnJldHVybiBRbihBLDk0NSw5NjksITEscik7Y2FzZSA5OnJldHVybiBRbihBLDk3LDEyMiwhMSxyKTtjYXNlIDEwOnJldHVybiBRbihBLDY1LDkwLCExLHIpO2Nhc2UgMTE6cmV0dXJuIFFuKEEsMTYzMiwxNjQxLCEwLHIpO2Nhc2UgMTI6Y2FzZSA0OTpyZXR1cm4gc24oQSwxLDk5OTksVW4sMyxyKTtjYXNlIDM1OnJldHVybiBzbihBLDEsOTk5OSxVbiwzLHIpLnRvTG93ZXJDYXNlKCk7Y2FzZSAxMzpyZXR1cm4gUW4oQSwyNTM0LDI1NDMsITAscik7Y2FzZSAxNDpjYXNlIDMwOnJldHVybiBRbihBLDYxMTIsNjEyMSwhMCxyKTtjYXNlIDE1OnJldHVybiBjbihBLCLlrZDkuJHlr4Xlja/ovrDlt7PljYjmnKrnlLPphYnmiIzkuqUiLEIpO2Nhc2UgMTY6cmV0dXJuIGNuKEEsIueUsuS5meS4meS4geaIiuW3seW6mui+m+WjrOeZuCIsQik7Y2FzZSAxNzpjYXNlIDQ4OnJldHVybiBhbihBLCLpm7bkuIDkuozkuInlm5vkupTlha3kuIPlhavkuZ0iLCLljYHnmb7ljYPokKwiLCLosqAiLEIsMTQpO2Nhc2UgNDc6cmV0dXJuIGFuKEEsIumbtuWjueiys+WPg+iChuS8jemZuOafkuaNjOeOliIsIuaLvuS9sOS7n+iQrCIsIuiyoCIsQiwxNSk7Y2FzZSA0MjpyZXR1cm4gYW4oQSwi6Zu25LiA5LqM5LiJ5Zub5LqU5YWt5LiD5YWr5LmdIiwi5Y2B55m+5Y2D6JCsIiwi6LSfIixCLDE0KTtjYXNlIDQxOnJldHVybiBhbihBLCLpm7blo7notLDlj4HogobkvI3pmYbmn5LmjYznjpYiLCLmi77kvbDku5/okKwiLCLotJ8iLEIsMTUpO2Nhc2UgMjY6cmV0dXJuIGFuKEEsIuOAh+S4gOS6jOS4ieWbm+S6lOWFreS4g+WFq+S5nSIsIuWNgeeZvuWNg+S4hyIsIuODnuOCpOODiuOCuSIsQiwwKTtjYXNlIDI1OnJldHVybiBhbihBLCLpm7blo7HlvJDlj4Llm5vkvI3lha3kuIPlhavkuZ0iLCLmi77nmb7ljYPkuIciLCLjg57jgqTjg4rjgrkiLEIsNyk7Y2FzZSAzMTpyZXR1cm4gYW4oQSwi7JiB7J287J207IK87IKs7Jik7Jyh7Lmg7YyU6rWsIiwi7Iut67Cx7LKc66eMIix1bixuLDcpO2Nhc2UgMzM6cmV0dXJuIGFuKEEsIumbtuS4gOS6jOS4ieWbm+S6lOWFreS4g+WFq+S5nSIsIuWNgeeZvuWNg+iQrCIsdW4sbiwwKTtjYXNlIDMyOnJldHVybiBhbihBLCLpm7blo7nosrPlj4Plm5vkupTlha3kuIPlhavkuZ0iLCLmi77nmb7ljYMiLHVuLG4sNyk7Y2FzZSAxODpyZXR1cm4gUW4oQSwyNDA2LDI0MTUsITAscik7Y2FzZSAyMDpyZXR1cm4gc24oQSwxLDE5OTk5LENuLDMscik7Y2FzZSAyMTpyZXR1cm4gUW4oQSwyNzkwLDI3OTksITAscik7Y2FzZSAyMjpyZXR1cm4gUW4oQSwyNjYyLDI2NzEsITAscik7Y2FzZSAyMjpyZXR1cm4gc24oQSwxLDEwOTk5LGxuLDMscik7Y2FzZSAyMzpyZXR1cm4gY24oQSwi44GC44GE44GG44GI44GK44GL44GN44GP44GR44GT44GV44GX44GZ44Gb44Gd44Gf44Gh44Gk44Gm44Go44Gq44Gr44Gs44Gt44Gu44Gv44Gy44G144G444G744G+44G/44KA44KB44KC44KE44KG44KI44KJ44KK44KL44KM44KN44KP44KQ44KR44KS44KTIik7Y2FzZSAyNDpyZXR1cm4gY24oQSwi44GE44KN44Gv44Gr44G744G444Go44Gh44KK44Gs44KL44KS44KP44GL44KI44Gf44KM44Gd44Gk44Gt44Gq44KJ44KA44GG44KQ44Gu44GK44GP44KE44G+44GR44G144GT44GI44Gm44GC44GV44GN44KG44KB44G/44GX44KR44Gy44KC44Gb44GZIik7Y2FzZSAyNzpyZXR1cm4gUW4oQSwzMzAyLDMzMTEsITAscik7Y2FzZSAyODpyZXR1cm4gY24oQSwi44Ki44Kk44Km44Ko44Kq44Kr44Kt44Kv44Kx44Kz44K144K344K544K744K944K/44OB44OE44OG44OI44OK44OL44OM44ON44OO44OP44OS44OV44OY44Ob44Oe44Of44Og44Oh44Oi44Ok44Om44Oo44Op44Oq44Or44Os44Ot44Ov44Ow44Ox44Oy44OzIixCKTtjYXNlIDI5OnJldHVybiBjbihBLCLjgqTjg63jg4/jg4vjg5vjg5jjg4jjg4Hjg6rjg4zjg6vjg7Ljg6/jgqvjg6jjgr/jg6zjgr3jg4Tjg43jg4rjg6njg6Djgqbjg7Djg47jgqrjgq/jg6Tjg57jgrHjg5XjgrPjgqjjg4bjgqLjgrXjgq3jg6bjg6Hjg5/jgrfjg7Hjg5Ljg6LjgrvjgrkiLEIpO2Nhc2UgMzQ6cmV0dXJuIFFuKEEsMzc5MiwzODAxLCEwLHIpO2Nhc2UgMzc6cmV0dXJuIFFuKEEsNjE2MCw2MTY5LCEwLHIpO2Nhc2UgMzg6cmV0dXJuIFFuKEEsNDE2MCw0MTY5LCEwLHIpO2Nhc2UgMzk6cmV0dXJuIFFuKEEsMjkxOCwyOTI3LCEwLHIpO2Nhc2UgNDA6cmV0dXJuIFFuKEEsMTc3NiwxNzg1LCEwLHIpO2Nhc2UgNDM6cmV0dXJuIFFuKEEsMzA0NiwzMDU1LCEwLHIpO2Nhc2UgNDQ6cmV0dXJuIFFuKEEsMzE3NCwzMTgzLCEwLHIpO2Nhc2UgNDU6cmV0dXJuIFFuKEEsMzY2NCwzNjczLCEwLHIpO2Nhc2UgNDY6cmV0dXJuIFFuKEEsMzg3MiwzODgxLCEwLHIpO2RlZmF1bHQ6cmV0dXJuIFFuKEEsNDgsNTcsITAscil9fSxobj0iZGF0YS1odG1sMmNhbnZhcy1pZ25vcmUiLGRuPShmbi5wcm90b3R5cGUudG9JRnJhbWU9ZnVuY3Rpb24oQSxyKXt2YXIgZT10aGlzLEI9cG4oQSxyKTtpZighQi5jb250ZW50V2luZG93KXJldHVybiBQcm9taXNlLnJlamVjdCgiVW5hYmxlIHRvIGZpbmQgaWZyYW1lIHdpbmRvdyIpO3ZhciB0PUEuZGVmYXVsdFZpZXcucGFnZVhPZmZzZXQsbj1BLmRlZmF1bHRWaWV3LnBhZ2VZT2Zmc2V0LHM9Qi5jb250ZW50V2luZG93LG89cy5kb2N1bWVudCxBPUluKEIpLnRoZW4oZnVuY3Rpb24oKXtyZXR1cm4gYShlLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgZSx0O3JldHVybiBIKHRoaXMsZnVuY3Rpb24oQSl7c3dpdGNoKEEubGFiZWwpe2Nhc2UgMDpyZXR1cm4gdGhpcy5zY3JvbGxlZEVsZW1lbnRzLmZvckVhY2goYm4pLHMmJihzLnNjcm9sbFRvKHIubGVmdCxyLnRvcCksIS8oaVBhZHxpUGhvbmV8aVBvZCkvZy50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpfHxzLnNjcm9sbFk9PT1yLnRvcCYmcy5zY3JvbGxYPT09ci5sZWZ0fHwodGhpcy5jb250ZXh0LmxvZ2dlci53YXJuKCJVbmFibGUgdG8gcmVzdG9yZSBzY3JvbGwgcG9zaXRpb24gZm9yIGNsb25lZCBkb2N1bWVudCIpLHRoaXMuY29udGV4dC53aW5kb3dCb3VuZHM9dGhpcy5jb250ZXh0LndpbmRvd0JvdW5kcy5hZGQocy5zY3JvbGxYLXIubGVmdCxzLnNjcm9sbFktci50b3AsMCwwKSkpLGU9dGhpcy5vcHRpb25zLm9uY2xvbmUsdm9pZCAwPT09KHQ9dGhpcy5jbG9uZWRSZWZlcmVuY2VFbGVtZW50KT9bMixQcm9taXNlLnJlamVjdCgiRXJyb3IgZmluZGluZyB0aGUgIit0aGlzLnJlZmVyZW5jZUVsZW1lbnQubm9kZU5hbWUrIiBpbiB0aGUgY2xvbmVkIGRvY3VtZW50IildOm8uZm9udHMmJm8uZm9udHMucmVhZHk/WzQsby5mb250cy5yZWFkeV06WzMsMl07Y2FzZSAxOkEuc2VudCgpLEEubGFiZWw9MjtjYXNlIDI6cmV0dXJuLyhBcHBsZVdlYktpdCkvZy50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpP1s0LEVuKG8pXTpbMyw0XTtjYXNlIDM6QS5zZW50KCksQS5sYWJlbD00O2Nhc2UgNDpyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgZT9bMixQcm9taXNlLnJlc29sdmUoKS50aGVuKGZ1bmN0aW9uKCl7cmV0dXJuIGUobyx0KX0pLnRoZW4oZnVuY3Rpb24oKXtyZXR1cm4gQn0pXTpbMixCXX19KX0pfSk7cmV0dXJuIG8ub3BlbigpLG8ud3JpdGUobW4oZG9jdW1lbnQuZG9jdHlwZSkrIjxodG1sPjwvaHRtbD4iKSxMbih0aGlzLnJlZmVyZW5jZUVsZW1lbnQub3duZXJEb2N1bWVudCx0LG4pLG8ucmVwbGFjZUNoaWxkKG8uYWRvcHROb2RlKHRoaXMuZG9jdW1lbnRFbGVtZW50KSxvLmRvY3VtZW50RWxlbWVudCksby5jbG9zZSgpLEF9LGZuLnByb3RvdHlwZS5jcmVhdGVFbGVtZW50Q2xvbmU9ZnVuY3Rpb24oQSl7aWYoQ3IoQSwyKSx6QihBKSlyZXR1cm4gdGhpcy5jcmVhdGVDYW52YXNDbG9uZShBKTtpZihNQihBKSlyZXR1cm4gdGhpcy5jcmVhdGVWaWRlb0Nsb25lKEEpO2lmKFNCKEEpKXJldHVybiB0aGlzLmNyZWF0ZVN0eWxlQ2xvbmUoQSk7dmFyIGU9QS5jbG9uZU5vZGUoITEpO3JldHVybiAkQihlKSYmKCRCKEEpJiZBLmN1cnJlbnRTcmMmJkEuY3VycmVudFNyYyE9PUEuc3JjJiYoZS5zcmM9QS5jdXJyZW50U3JjLGUuc3Jjc2V0PSIiKSwibGF6eSI9PT1lLmxvYWRpbmcmJihlLmxvYWRpbmc9ImVhZ2VyIikpLFRCKGUpP3RoaXMuY3JlYXRlQ3VzdG9tRWxlbWVudENsb25lKGUpOmV9LGZuLnByb3RvdHlwZS5jcmVhdGVDdXN0b21FbGVtZW50Q2xvbmU9ZnVuY3Rpb24oQSl7dmFyIGU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaHRtbDJjYW52YXNjdXN0b21lbGVtZW50Iik7cmV0dXJuIEtuKEEuc3R5bGUsZSksZX0sZm4ucHJvdG90eXBlLmNyZWF0ZVN0eWxlQ2xvbmU9ZnVuY3Rpb24oQSl7dHJ5e3ZhciBlPUEuc2hlZXQ7aWYoZSYmZS5jc3NSdWxlcyl7dmFyIHQ9W10uc2xpY2UuY2FsbChlLmNzc1J1bGVzLDApLnJlZHVjZShmdW5jdGlvbihBLGUpe3JldHVybiBlJiYic3RyaW5nIj09dHlwZW9mIGUuY3NzVGV4dD9BK2UuY3NzVGV4dDpBfSwiIikscj1BLmNsb25lTm9kZSghMSk7cmV0dXJuIHIudGV4dENvbnRlbnQ9dCxyfX1jYXRjaChBKXtpZih0aGlzLmNvbnRleHQubG9nZ2VyLmVycm9yKCJVbmFibGUgdG8gYWNjZXNzIGNzc1J1bGVzIHByb3BlcnR5IixBKSwiU2VjdXJpdHlFcnJvciIhPT1BLm5hbWUpdGhyb3cgQX1yZXR1cm4gQS5jbG9uZU5vZGUoITEpfSxmbi5wcm90b3R5cGUuY3JlYXRlQ2FudmFzQ2xvbmU9ZnVuY3Rpb24oZSl7dmFyIEE7aWYodGhpcy5vcHRpb25zLmlubGluZUltYWdlcyYmZS5vd25lckRvY3VtZW50KXt2YXIgdD1lLm93bmVyRG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaW1nIik7dHJ5e3JldHVybiB0LnNyYz1lLnRvRGF0YVVSTCgpLHR9Y2F0Y2goQSl7dGhpcy5jb250ZXh0LmxvZ2dlci5pbmZvKCJVbmFibGUgdG8gaW5saW5lIGNhbnZhcyBjb250ZW50cywgY2FudmFzIGlzIHRhaW50ZWQiLGUpfX10PWUuY2xvbmVOb2RlKCExKTt0cnl7dC53aWR0aD1lLndpZHRoLHQuaGVpZ2h0PWUuaGVpZ2h0O3ZhciByLEIsbj1lLmdldENvbnRleHQoIjJkIikscz10LmdldENvbnRleHQoIjJkIik7cmV0dXJuIHMmJighdGhpcy5vcHRpb25zLmFsbG93VGFpbnQmJm4/cy5wdXRJbWFnZURhdGEobi5nZXRJbWFnZURhdGEoMCwwLGUud2lkdGgsZS5oZWlnaHQpLDAsMCk6KCEocj1udWxsIT09KEE9ZS5nZXRDb250ZXh0KCJ3ZWJnbDIiKSkmJnZvaWQgMCE9PUE/QTplLmdldENvbnRleHQoIndlYmdsIikpfHwhMT09PShudWxsPT0oQj1yLmdldENvbnRleHRBdHRyaWJ1dGVzKCkpP3ZvaWQgMDpCLnByZXNlcnZlRHJhd2luZ0J1ZmZlcikmJnRoaXMuY29udGV4dC5sb2dnZXIud2FybigiVW5hYmxlIHRvIGNsb25lIFdlYkdMIGNvbnRleHQgYXMgaXQgaGFzIHByZXNlcnZlRHJhd2luZ0J1ZmZlcj1mYWxzZSIsZSkscy5kcmF3SW1hZ2UoZSwwLDApKSksdH1jYXRjaChBKXt0aGlzLmNvbnRleHQubG9nZ2VyLmluZm8oIlVuYWJsZSB0byBjbG9uZSBjYW52YXMgYXMgaXQgaXMgdGFpbnRlZCIsZSl9cmV0dXJuIHR9LGZuLnByb3RvdHlwZS5jcmVhdGVWaWRlb0Nsb25lPWZ1bmN0aW9uKGUpe3ZhciBBPWUub3duZXJEb2N1bWVudC5jcmVhdGVFbGVtZW50KCJjYW52YXMiKTtBLndpZHRoPWUub2Zmc2V0V2lkdGgsQS5oZWlnaHQ9ZS5vZmZzZXRIZWlnaHQ7dmFyIHQ9QS5nZXRDb250ZXh0KCIyZCIpO3RyeXtyZXR1cm4gdCYmKHQuZHJhd0ltYWdlKGUsMCwwLEEud2lkdGgsQS5oZWlnaHQpLHRoaXMub3B0aW9ucy5hbGxvd1RhaW50fHx0LmdldEltYWdlRGF0YSgwLDAsQS53aWR0aCxBLmhlaWdodCkpLEF9Y2F0Y2goQSl7dGhpcy5jb250ZXh0LmxvZ2dlci5pbmZvKCJVbmFibGUgdG8gY2xvbmUgdmlkZW8gYXMgaXQgaXMgdGFpbnRlZCIsZSl9QT1lLm93bmVyRG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiY2FudmFzIik7cmV0dXJuIEEud2lkdGg9ZS5vZmZzZXRXaWR0aCxBLmhlaWdodD1lLm9mZnNldEhlaWdodCxBfSxmbi5wcm90b3R5cGUuYXBwZW5kQ2hpbGROb2RlPWZ1bmN0aW9uKEEsZSx0KXtYQihlKSYmKCJTQ1JJUFQiPT09ZS50YWdOYW1lfHxlLmhhc0F0dHJpYnV0ZShobil8fCJmdW5jdGlvbiI9PXR5cGVvZiB0aGlzLm9wdGlvbnMuaWdub3JlRWxlbWVudHMmJnRoaXMub3B0aW9ucy5pZ25vcmVFbGVtZW50cyhlKSl8fHRoaXMub3B0aW9ucy5jb3B5U3R5bGVzJiZYQihlKSYmU0IoZSl8fEEuYXBwZW5kQ2hpbGQodGhpcy5jbG9uZU5vZGUoZSx0KSl9LGZuLnByb3RvdHlwZS5jbG9uZUNoaWxkTm9kZXM9ZnVuY3Rpb24oQSxlLHQpe2Zvcih2YXIgcixCPXRoaXMsbj0oQS5zaGFkb3dSb290fHxBKS5maXJzdENoaWxkO247bj1uLm5leHRTaWJsaW5nKVhCKG4pJiZybihuKSYmImZ1bmN0aW9uIj09dHlwZW9mIG4uYXNzaWduZWROb2Rlcz8ocj1uLmFzc2lnbmVkTm9kZXMoKSkubGVuZ3RoJiZyLmZvckVhY2goZnVuY3Rpb24oQSl7cmV0dXJuIEIuYXBwZW5kQ2hpbGROb2RlKGUsQSx0KX0pOnRoaXMuYXBwZW5kQ2hpbGROb2RlKGUsbix0KX0sZm4ucHJvdG90eXBlLmNsb25lTm9kZT1mdW5jdGlvbihBLGUpe2lmKFBCKEEpKXJldHVybiBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShBLmRhdGEpO2lmKCFBLm93bmVyRG9jdW1lbnQpcmV0dXJuIEEuY2xvbmVOb2RlKCExKTt2YXIgdD1BLm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXc7aWYodCYmWEIoQSkmJihKQihBKXx8WUIoQSkpKXt2YXIgcj10aGlzLmNyZWF0ZUVsZW1lbnRDbG9uZShBKTtyLnN0eWxlLnRyYW5zaXRpb25Qcm9wZXJ0eT0ibm9uZSI7dmFyIEI9dC5nZXRDb21wdXRlZFN0eWxlKEEpLG49dC5nZXRDb21wdXRlZFN0eWxlKEEsIjpiZWZvcmUiKSxzPXQuZ2V0Q29tcHV0ZWRTdHlsZShBLCI6YWZ0ZXIiKTt0aGlzLnJlZmVyZW5jZUVsZW1lbnQ9PT1BJiZKQihyKSYmKHRoaXMuY2xvbmVkUmVmZXJlbmNlRWxlbWVudD1yKSxqQihyKSYmTW4ocik7dD10aGlzLmNvdW50ZXJzLnBhcnNlKG5ldyBVcih0aGlzLmNvbnRleHQsQikpLG49dGhpcy5yZXNvbHZlUHNldWRvQ29udGVudChBLHIsbixnbi5CRUZPUkUpO1RCKEEpJiYoZT0hMCksTUIoQSl8fHRoaXMuY2xvbmVDaGlsZE5vZGVzKEEscixlKSxuJiZyLmluc2VydEJlZm9yZShuLHIuZmlyc3RDaGlsZCk7cz10aGlzLnJlc29sdmVQc2V1ZG9Db250ZW50KEEscixzLGduLkFGVEVSKTtyZXR1cm4gcyYmci5hcHBlbmRDaGlsZChzKSx0aGlzLmNvdW50ZXJzLnBvcCh0KSwoQiYmKHRoaXMub3B0aW9ucy5jb3B5U3R5bGVzfHxZQihBKSkmJiFBbihBKXx8ZSkmJktuKEIsciksMD09PUEuc2Nyb2xsVG9wJiYwPT09QS5zY3JvbGxMZWZ0fHx0aGlzLnNjcm9sbGVkRWxlbWVudHMucHVzaChbcixBLnNjcm9sbExlZnQsQS5zY3JvbGxUb3BdKSwoZW4oQSl8fHRuKEEpKSYmKGVuKHIpfHx0bihyKSkmJihyLnZhbHVlPUEudmFsdWUpLHJ9cmV0dXJuIEEuY2xvbmVOb2RlKCExKX0sZm4ucHJvdG90eXBlLnJlc29sdmVQc2V1ZG9Db250ZW50PWZ1bmN0aW9uKG8sQSxlLHQpe3ZhciBpPXRoaXM7aWYoZSl7dmFyIHI9ZS5jb250ZW50LFE9QS5vd25lckRvY3VtZW50O2lmKFEmJnImJiJub25lIiE9PXImJiItbW96LWFsdC1jb250ZW50IiE9PXImJiJub25lIiE9PWUuZGlzcGxheSl7dGhpcy5jb3VudGVycy5wYXJzZShuZXcgVXIodGhpcy5jb250ZXh0LGUpKTt2YXIgYz1uZXcgd3IodGhpcy5jb250ZXh0LGUpLGE9US5jcmVhdGVFbGVtZW50KCJodG1sMmNhbnZhc3BzZXVkb2VsZW1lbnQiKTtLbihlLGEpLGMuY29udGVudC5mb3JFYWNoKGZ1bmN0aW9uKEEpe2lmKDA9PT1BLnR5cGUpYS5hcHBlbmRDaGlsZChRLmNyZWF0ZVRleHROb2RlKEEudmFsdWUpKTtlbHNlIGlmKDIyPT09QS50eXBlKXt2YXIgZT1RLmNyZWF0ZUVsZW1lbnQoImltZyIpO2Uuc3JjPUEudmFsdWUsZS5zdHlsZS5vcGFjaXR5PSIxIixhLmFwcGVuZENoaWxkKGUpfWVsc2UgaWYoMTg9PT1BLnR5cGUpe3ZhciB0LHIsQixuLHM7ImF0dHIiPT09QS5uYW1lPyhlPUEudmFsdWVzLmZpbHRlcihfQSkpLmxlbmd0aCYmYS5hcHBlbmRDaGlsZChRLmNyZWF0ZVRleHROb2RlKG8uZ2V0QXR0cmlidXRlKGVbMF0udmFsdWUpfHwiIikpOiJjb3VudGVyIj09PUEubmFtZT8oQj0ocj1BLnZhbHVlcy5maWx0ZXIoJEEpKVswXSxyPXJbMV0sQiYmX0EoQikmJih0PWkuY291bnRlcnMuZ2V0Q291bnRlclZhbHVlKEIudmFsdWUpLHM9ciYmX0Eocik/cHQucGFyc2UoaS5jb250ZXh0LHIudmFsdWUpOjMsYS5hcHBlbmRDaGlsZChRLmNyZWF0ZVRleHROb2RlKEZuKHQscywhMSkpKSkpOiJjb3VudGVycyI9PT1BLm5hbWUmJihCPSh0PUEudmFsdWVzLmZpbHRlcigkQSkpWzBdLHM9dFsxXSxyPXRbMl0sQiYmX0EoQikmJihCPWkuY291bnRlcnMuZ2V0Q291bnRlclZhbHVlcyhCLnZhbHVlKSxuPXImJl9BKHIpP3B0LnBhcnNlKGkuY29udGV4dCxyLnZhbHVlKTozLHM9cyYmMD09PXMudHlwZT9zLnZhbHVlOiIiLHM9Qi5tYXAoZnVuY3Rpb24oQSl7cmV0dXJuIEZuKEEsbiwhMSl9KS5qb2luKHMpLGEuYXBwZW5kQ2hpbGQoUS5jcmVhdGVUZXh0Tm9kZShzKSkpKX1lbHNlIGlmKDIwPT09QS50eXBlKXN3aXRjaChBLnZhbHVlKXtjYXNlIm9wZW4tcXVvdGUiOmEuYXBwZW5kQ2hpbGQoUS5jcmVhdGVUZXh0Tm9kZShYdChjLnF1b3RlcyxpLnF1b3RlRGVwdGgrKywhMCkpKTticmVhaztjYXNlImNsb3NlLXF1b3RlIjphLmFwcGVuZENoaWxkKFEuY3JlYXRlVGV4dE5vZGUoWHQoYy5xdW90ZXMsLS1pLnF1b3RlRGVwdGgsITEpKSk7YnJlYWs7ZGVmYXVsdDphLmFwcGVuZENoaWxkKFEuY3JlYXRlVGV4dE5vZGUoQS52YWx1ZSkpfX0pLGEuY2xhc3NOYW1lPURuKyIgIit2bjt0PXQ9PT1nbi5CRUZPUkU/IiAiK0RuOiIgIit2bjtyZXR1cm4gWUIoQSk/QS5jbGFzc05hbWUuYmFzZVZhbHVlKz10OkEuY2xhc3NOYW1lKz10LGF9fX0sZm4uZGVzdHJveT1mdW5jdGlvbihBKXtyZXR1cm4hIUEucGFyZW50Tm9kZSYmKEEucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChBKSwhMCl9LGZuKTtmdW5jdGlvbiBmbihBLGUsdCl7aWYodGhpcy5jb250ZXh0PUEsdGhpcy5vcHRpb25zPXQsdGhpcy5zY3JvbGxlZEVsZW1lbnRzPVtdLHRoaXMucmVmZXJlbmNlRWxlbWVudD1lLHRoaXMuY291bnRlcnM9bmV3IEJuLHRoaXMucXVvdGVEZXB0aD0wLCFlLm93bmVyRG9jdW1lbnQpdGhyb3cgbmV3IEVycm9yKCJDbG9uZWQgZWxlbWVudCBkb2VzIG5vdCBoYXZlIGFuIG93bmVyIGRvY3VtZW50Iik7dGhpcy5kb2N1bWVudEVsZW1lbnQ9dGhpcy5jbG9uZU5vZGUoZS5vd25lckRvY3VtZW50LmRvY3VtZW50RWxlbWVudCwhMSl9KGhlPWduPWdufHx7fSlbaGUuQkVGT1JFPTBdPSJCRUZPUkUiLGhlW2hlLkFGVEVSPTFdPSJBRlRFUiI7ZnVuY3Rpb24gSG4oZSl7cmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKEEpeyFlLmNvbXBsZXRlJiZlLnNyYz8oZS5vbmxvYWQ9QSxlLm9uZXJyb3I9QSk6QSgpfSl9dmFyIHBuPWZ1bmN0aW9uKEEsZSl7dmFyIHQ9QS5jcmVhdGVFbGVtZW50KCJpZnJhbWUiKTtyZXR1cm4gdC5jbGFzc05hbWU9Imh0bWwyY2FudmFzLWNvbnRhaW5lciIsdC5zdHlsZS52aXNpYmlsaXR5PSJoaWRkZW4iLHQuc3R5bGUucG9zaXRpb249ImZpeGVkIix0LnN0eWxlLmxlZnQ9Ii0xMDAwMHB4Iix0LnN0eWxlLnRvcD0iMHB4Iix0LnN0eWxlLmJvcmRlcj0iMCIsdC53aWR0aD1lLndpZHRoLnRvU3RyaW5nKCksdC5oZWlnaHQ9ZS5oZWlnaHQudG9TdHJpbmcoKSx0LnNjcm9sbGluZz0ibm8iLHQuc2V0QXR0cmlidXRlKGhuLCJ0cnVlIiksQS5ib2R5LmFwcGVuZENoaWxkKHQpLHR9LEVuPWZ1bmN0aW9uKEEpe3JldHVybiBQcm9taXNlLmFsbChbXS5zbGljZS5jYWxsKEEuaW1hZ2VzLDApLm1hcChIbikpfSxJbj1mdW5jdGlvbihCKXtyZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24oZSxBKXt2YXIgdD1CLmNvbnRlbnRXaW5kb3c7aWYoIXQpcmV0dXJuIEEoIk5vIHdpbmRvdyBhc3NpZ25lZCBmb3IgaWZyYW1lIik7dmFyIHI9dC5kb2N1bWVudDt0Lm9ubG9hZD1CLm9ubG9hZD1mdW5jdGlvbigpe3Qub25sb2FkPUIub25sb2FkPW51bGw7dmFyIEE9c2V0SW50ZXJ2YWwoZnVuY3Rpb24oKXswPHIuYm9keS5jaGlsZE5vZGVzLmxlbmd0aCYmImNvbXBsZXRlIj09PXIucmVhZHlTdGF0ZSYmKGNsZWFySW50ZXJ2YWwoQSksZShCKSl9LDUwKX19KX0seW49WyJhbGwiLCJkIiwiY29udGVudCJdLEtuPWZ1bmN0aW9uKEEsZSl7Zm9yKHZhciB0PUEubGVuZ3RoLTE7MDw9dDt0LS0pe3ZhciByPUEuaXRlbSh0KTstMT09PXluLmluZGV4T2YocikmJmUuc3R5bGUuc2V0UHJvcGVydHkocixBLmdldFByb3BlcnR5VmFsdWUocikpfXJldHVybiBlfSxtbj1mdW5jdGlvbihBKXt2YXIgZT0iIjtyZXR1cm4gQSYmKGUrPSI8IURPQ1RZUEUgIixBLm5hbWUmJihlKz1BLm5hbWUpLEEuaW50ZXJuYWxTdWJzZXQmJihlKz1BLmludGVybmFsU3Vic2V0KSxBLnB1YmxpY0lkJiYoZSs9JyInK0EucHVibGljSWQrJyInKSxBLnN5c3RlbUlkJiYoZSs9JyInK0Euc3lzdGVtSWQrJyInKSxlKz0iPiIpLGV9LExuPWZ1bmN0aW9uKEEsZSx0KXtBJiZBLmRlZmF1bHRWaWV3JiYoZSE9PUEuZGVmYXVsdFZpZXcucGFnZVhPZmZzZXR8fHQhPT1BLmRlZmF1bHRWaWV3LnBhZ2VZT2Zmc2V0KSYmQS5kZWZhdWx0Vmlldy5zY3JvbGxUbyhlLHQpfSxibj1mdW5jdGlvbihBKXt2YXIgZT1BWzBdLHQ9QVsxXSxBPUFbMl07ZS5zY3JvbGxMZWZ0PXQsZS5zY3JvbGxUb3A9QX0sRG49Il9fX2h0bWwyY2FudmFzX19fcHNldWRvZWxlbWVudF9iZWZvcmUiLHZuPSJfX19odG1sMmNhbnZhc19fX3BzZXVkb2VsZW1lbnRfYWZ0ZXIiLHhuPSd7XG4gICAgY29udGVudDogIiIgIWltcG9ydGFudDtcbiAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG59JyxNbj1mdW5jdGlvbihBKXtTbihBLCIuIitEbisiOmJlZm9yZSIreG4rIlxuICAgICAgICAgLiIrdm4rIjphZnRlciIreG4pfSxTbj1mdW5jdGlvbihBLGUpe3ZhciB0PUEub3duZXJEb2N1bWVudDt0JiYoKHQ9dC5jcmVhdGVFbGVtZW50KCJzdHlsZSIpKS50ZXh0Q29udGVudD1lLEEuYXBwZW5kQ2hpbGQodCkpfSxUbj0oR24uZ2V0T3JpZ2luPWZ1bmN0aW9uKEEpe3ZhciBlPUduLl9saW5rO3JldHVybiBlPyhlLmhyZWY9QSxlLmhyZWY9ZS5ocmVmLGUucHJvdG9jb2wrZS5ob3N0bmFtZStlLnBvcnQpOiJhYm91dDpibGFuayJ9LEduLmlzU2FtZU9yaWdpbj1mdW5jdGlvbihBKXtyZXR1cm4gR24uZ2V0T3JpZ2luKEEpPT09R24uX29yaWdpbn0sR24uc2V0Q29udGV4dD1mdW5jdGlvbihBKXtHbi5fbGluaz1BLmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImEiKSxHbi5fb3JpZ2luPUduLmdldE9yaWdpbihBLmxvY2F0aW9uLmhyZWYpfSxHbi5fb3JpZ2luPSJhYm91dDpibGFuayIsR24pO2Z1bmN0aW9uIEduKCl7fXZhciBPbj0oVm4ucHJvdG90eXBlLmFkZEltYWdlPWZ1bmN0aW9uKEEpe3ZhciBlPVByb21pc2UucmVzb2x2ZSgpO3JldHVybiB0aGlzLmhhcyhBKXx8KFluKEEpfHxQbihBKSkmJih0aGlzLl9jYWNoZVtBXT10aGlzLmxvYWRJbWFnZShBKSkuY2F0Y2goZnVuY3Rpb24oKXt9KSxlfSxWbi5wcm90b3R5cGUubWF0Y2g9ZnVuY3Rpb24oQSl7cmV0dXJuIHRoaXMuX2NhY2hlW0FdfSxWbi5wcm90b3R5cGUubG9hZEltYWdlPWZ1bmN0aW9uKHMpe3JldHVybiBhKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciBlLHIsdCxCLG49dGhpcztyZXR1cm4gSCh0aGlzLGZ1bmN0aW9uKEEpe3N3aXRjaChBLmxhYmVsKXtjYXNlIDA6cmV0dXJuKGU9VG4uaXNTYW1lT3JpZ2luKHMpLHI9IVhuKHMpJiYhMD09PXRoaXMuX29wdGlvbnMudXNlQ09SUyYmWHIuU1VQUE9SVF9DT1JTX0lNQUdFUyYmIWUsdD0hWG4ocykmJiFlJiYhWW4ocykmJiJzdHJpbmciPT10eXBlb2YgdGhpcy5fb3B0aW9ucy5wcm94eSYmWHIuU1VQUE9SVF9DT1JTX1hIUiYmIXIsZXx8ITEhPT10aGlzLl9vcHRpb25zLmFsbG93VGFpbnR8fFhuKHMpfHxZbihzKXx8dHx8cik/KEI9cyx0P1s0LHRoaXMucHJveHkoQildOlszLDJdKTpbMl07Y2FzZSAxOkI9QS5zZW50KCksQS5sYWJlbD0yO2Nhc2UgMjpyZXR1cm4gdGhpcy5jb250ZXh0LmxvZ2dlci5kZWJ1ZygiQWRkZWQgaW1hZ2UgIitzLnN1YnN0cmluZygwLDI1NikpLFs0LG5ldyBQcm9taXNlKGZ1bmN0aW9uKEEsZSl7dmFyIHQ9bmV3IEltYWdlO3Qub25sb2FkPWZ1bmN0aW9uKCl7cmV0dXJuIEEodCl9LHQub25lcnJvcj1lLChKbihCKXx8cikmJih0LmNyb3NzT3JpZ2luPSJhbm9ueW1vdXMiKSx0LnNyYz1CLCEwPT09dC5jb21wbGV0ZSYmc2V0VGltZW91dChmdW5jdGlvbigpe3JldHVybiBBKHQpfSw1MDApLDA8bi5fb3B0aW9ucy5pbWFnZVRpbWVvdXQmJnNldFRpbWVvdXQoZnVuY3Rpb24oKXtyZXR1cm4gZSgiVGltZWQgb3V0ICgiK24uX29wdGlvbnMuaW1hZ2VUaW1lb3V0KyJtcykgbG9hZGluZyBpbWFnZSIpfSxuLl9vcHRpb25zLmltYWdlVGltZW91dCl9KV07Y2FzZSAzOnJldHVyblsyLEEuc2VudCgpXX19KX0pfSxWbi5wcm90b3R5cGUuaGFzPWZ1bmN0aW9uKEEpe3JldHVybiB2b2lkIDAhPT10aGlzLl9jYWNoZVtBXX0sVm4ucHJvdG90eXBlLmtleXM9ZnVuY3Rpb24oKXtyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKE9iamVjdC5rZXlzKHRoaXMuX2NhY2hlKSl9LFZuLnByb3RvdHlwZS5wcm94eT1mdW5jdGlvbihzKXt2YXIgbz10aGlzLGk9dGhpcy5fb3B0aW9ucy5wcm94eTtpZighaSl0aHJvdyBuZXcgRXJyb3IoIk5vIHByb3h5IGRlZmluZWQiKTt2YXIgUT1zLnN1YnN0cmluZygwLDI1Nik7cmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKGUsdCl7dmFyIHI9WHIuU1VQUE9SVF9SRVNQT05TRV9UWVBFPyJibG9iIjoidGV4dCIsQj1uZXcgWE1MSHR0cFJlcXVlc3Q7Qi5vbmxvYWQ9ZnVuY3Rpb24oKXt2YXIgQTsyMDA9PT1CLnN0YXR1cz8idGV4dCI9PXI/ZShCLnJlc3BvbnNlKTooKEE9bmV3IEZpbGVSZWFkZXIpLmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLGZ1bmN0aW9uKCl7cmV0dXJuIGUoQS5yZXN1bHQpfSwhMSksQS5hZGRFdmVudExpc3RlbmVyKCJlcnJvciIsZnVuY3Rpb24oQSl7cmV0dXJuIHQoQSl9LCExKSxBLnJlYWRBc0RhdGFVUkwoQi5yZXNwb25zZSkpOnQoIkZhaWxlZCB0byBwcm94eSByZXNvdXJjZSAiK1ErIiB3aXRoIHN0YXR1cyBjb2RlICIrQi5zdGF0dXMpfSxCLm9uZXJyb3I9dDt2YXIgQSxuPS0xPGkuaW5kZXhPZigiPyIpPyImIjoiPyI7Qi5vcGVuKCJHRVQiLGkrbisidXJsPSIrZW5jb2RlVVJJQ29tcG9uZW50KHMpKyImcmVzcG9uc2VUeXBlPSIrciksInRleHQiIT1yJiZCIGluc3RhbmNlb2YgWE1MSHR0cFJlcXVlc3QmJihCLnJlc3BvbnNlVHlwZT1yKSxvLl9vcHRpb25zLmltYWdlVGltZW91dCYmKEE9by5fb3B0aW9ucy5pbWFnZVRpbWVvdXQsQi50aW1lb3V0PUEsQi5vbnRpbWVvdXQ9ZnVuY3Rpb24oKXtyZXR1cm4gdCgiVGltZWQgb3V0ICgiK0ErIm1zKSBwcm94eWluZyAiK1EpfSksQi5zZW5kKCl9KX0sVm4pO2Z1bmN0aW9uIFZuKEEsZSl7dGhpcy5jb250ZXh0PUEsdGhpcy5fb3B0aW9ucz1lLHRoaXMuX2NhY2hlPXt9fXZhciBrbj0vXmRhdGE6aW1hZ2VcL3N2Z1wreG1sL2ksUm49L15kYXRhOmltYWdlXC8uKjtiYXNlNjQsL2ksTm49L15kYXRhOmltYWdlXC8uKi9pLFBuPWZ1bmN0aW9uKEEpe3JldHVybiBYci5TVVBQT1JUX1NWR19EUkFXSU5HfHwhV24oQSl9LFhuPWZ1bmN0aW9uKEEpe3JldHVybiBObi50ZXN0KEEpfSxKbj1mdW5jdGlvbihBKXtyZXR1cm4gUm4udGVzdChBKX0sWW49ZnVuY3Rpb24oQSl7cmV0dXJuImJsb2IiPT09QS5zdWJzdHIoMCw0KX0sV249ZnVuY3Rpb24oQSl7cmV0dXJuInN2ZyI9PT1BLnN1YnN0cigtMykudG9Mb3dlckNhc2UoKXx8a24udGVzdChBKX0sWm49KF9uLnByb3RvdHlwZS5hZGQ9ZnVuY3Rpb24oQSxlKXtyZXR1cm4gbmV3IF9uKHRoaXMueCtBLHRoaXMueStlKX0sX24pO2Z1bmN0aW9uIF9uKEEsZSl7dGhpcy50eXBlPTAsdGhpcy54PUEsdGhpcy55PWV9ZnVuY3Rpb24gcW4oQSxlLHQpe3JldHVybiBuZXcgWm4oQS54KyhlLngtQS54KSp0LEEueSsoZS55LUEueSkqdCl9dmFyIGpuPSh6bi5wcm90b3R5cGUuc3ViZGl2aWRlPWZ1bmN0aW9uKEEsZSl7dmFyIHQ9cW4odGhpcy5zdGFydCx0aGlzLnN0YXJ0Q29udHJvbCxBKSxyPXFuKHRoaXMuc3RhcnRDb250cm9sLHRoaXMuZW5kQ29udHJvbCxBKSxCPXFuKHRoaXMuZW5kQ29udHJvbCx0aGlzLmVuZCxBKSxuPXFuKHQscixBKSxyPXFuKHIsQixBKSxBPXFuKG4scixBKTtyZXR1cm4gZT9uZXcgem4odGhpcy5zdGFydCx0LG4sQSk6bmV3IHpuKEEscixCLHRoaXMuZW5kKX0sem4ucHJvdG90eXBlLmFkZD1mdW5jdGlvbihBLGUpe3JldHVybiBuZXcgem4odGhpcy5zdGFydC5hZGQoQSxlKSx0aGlzLnN0YXJ0Q29udHJvbC5hZGQoQSxlKSx0aGlzLmVuZENvbnRyb2wuYWRkKEEsZSksdGhpcy5lbmQuYWRkKEEsZSkpfSx6bi5wcm90b3R5cGUucmV2ZXJzZT1mdW5jdGlvbigpe3JldHVybiBuZXcgem4odGhpcy5lbmQsdGhpcy5lbmRDb250cm9sLHRoaXMuc3RhcnRDb250cm9sLHRoaXMuc3RhcnQpfSx6bik7ZnVuY3Rpb24gem4oQSxlLHQscil7dGhpcy50eXBlPTEsdGhpcy5zdGFydD1BLHRoaXMuc3RhcnRDb250cm9sPWUsdGhpcy5lbmRDb250cm9sPXQsdGhpcy5lbmQ9cn1mdW5jdGlvbiAkbihBKXtyZXR1cm4gMT09PUEudHlwZX12YXIgQXMsZXM9ZnVuY3Rpb24oQSl7dmFyIGU9QS5zdHlsZXMsdD1BLmJvdW5kcyxyPShDPUJlKGUuYm9yZGVyVG9wTGVmdFJhZGl1cyx0LndpZHRoLHQuaGVpZ2h0KSlbMF0sQj1DWzFdLG49KHU9QmUoZS5ib3JkZXJUb3BSaWdodFJhZGl1cyx0LndpZHRoLHQuaGVpZ2h0KSlbMF0scz11WzFdLG89KEY9QmUoZS5ib3JkZXJCb3R0b21SaWdodFJhZGl1cyx0LndpZHRoLHQuaGVpZ2h0KSlbMF0saT1GWzFdLFE9KGg9QmUoZS5ib3JkZXJCb3R0b21MZWZ0UmFkaXVzLHQud2lkdGgsdC5oZWlnaHQpKVswXSxjPWhbMV07KGQ9W10pLnB1c2goKHIrbikvdC53aWR0aCksZC5wdXNoKChRK28pL3Qud2lkdGgpLGQucHVzaCgoQitjKS90LmhlaWdodCksZC5wdXNoKChzK2kpL3QuaGVpZ2h0KSwxPChmPU1hdGgubWF4LmFwcGx5KE1hdGgsZCkpJiYoci89ZixCLz1mLG4vPWYscy89ZixvLz1mLGkvPWYsUS89ZixjLz1mKTt2YXIgYT10LndpZHRoLW4sZz10LmhlaWdodC1pLHc9dC53aWR0aC1vLFU9dC5oZWlnaHQtYyxsPWUuYm9yZGVyVG9wV2lkdGgsQz1lLmJvcmRlclJpZ2h0V2lkdGgsdT1lLmJvcmRlckJvdHRvbVdpZHRoLEY9ZS5ib3JkZXJMZWZ0V2lkdGgsaD1VZShlLnBhZGRpbmdUb3AsQS5ib3VuZHMud2lkdGgpLGQ9VWUoZS5wYWRkaW5nUmlnaHQsQS5ib3VuZHMud2lkdGgpLGY9VWUoZS5wYWRkaW5nQm90dG9tLEEuYm91bmRzLndpZHRoKSxBPVVlKGUucGFkZGluZ0xlZnQsQS5ib3VuZHMud2lkdGgpO3RoaXMudG9wTGVmdEJvcmRlckRvdWJsZU91dGVyQm94PTA8cnx8MDxCP3NzKHQubGVmdCtGLzMsdC50b3ArbC8zLHItRi8zLEItbC8zLEFzLlRPUF9MRUZUKTpuZXcgWm4odC5sZWZ0K0YvMyx0LnRvcCtsLzMpLHRoaXMudG9wUmlnaHRCb3JkZXJEb3VibGVPdXRlckJveD0wPHJ8fDA8Qj9zcyh0LmxlZnQrYSx0LnRvcCtsLzMsbi1DLzMscy1sLzMsQXMuVE9QX1JJR0hUKTpuZXcgWm4odC5sZWZ0K3Qud2lkdGgtQy8zLHQudG9wK2wvMyksdGhpcy5ib3R0b21SaWdodEJvcmRlckRvdWJsZU91dGVyQm94PTA8b3x8MDxpP3NzKHQubGVmdCt3LHQudG9wK2csby1DLzMsaS11LzMsQXMuQk9UVE9NX1JJR0hUKTpuZXcgWm4odC5sZWZ0K3Qud2lkdGgtQy8zLHQudG9wK3QuaGVpZ2h0LXUvMyksdGhpcy5ib3R0b21MZWZ0Qm9yZGVyRG91YmxlT3V0ZXJCb3g9MDxRfHwwPGM/c3ModC5sZWZ0K0YvMyx0LnRvcCtVLFEtRi8zLGMtdS8zLEFzLkJPVFRPTV9MRUZUKTpuZXcgWm4odC5sZWZ0K0YvMyx0LnRvcCt0LmhlaWdodC11LzMpLHRoaXMudG9wTGVmdEJvcmRlckRvdWJsZUlubmVyQm94PTA8cnx8MDxCP3NzKHQubGVmdCsyKkYvMyx0LnRvcCsyKmwvMyxyLTIqRi8zLEItMipsLzMsQXMuVE9QX0xFRlQpOm5ldyBabih0LmxlZnQrMipGLzMsdC50b3ArMipsLzMpLHRoaXMudG9wUmlnaHRCb3JkZXJEb3VibGVJbm5lckJveD0wPHJ8fDA8Qj9zcyh0LmxlZnQrYSx0LnRvcCsyKmwvMyxuLTIqQy8zLHMtMipsLzMsQXMuVE9QX1JJR0hUKTpuZXcgWm4odC5sZWZ0K3Qud2lkdGgtMipDLzMsdC50b3ArMipsLzMpLHRoaXMuYm90dG9tUmlnaHRCb3JkZXJEb3VibGVJbm5lckJveD0wPG98fDA8aT9zcyh0LmxlZnQrdyx0LnRvcCtnLG8tMipDLzMsaS0yKnUvMyxBcy5CT1RUT01fUklHSFQpOm5ldyBabih0LmxlZnQrdC53aWR0aC0yKkMvMyx0LnRvcCt0LmhlaWdodC0yKnUvMyksdGhpcy5ib3R0b21MZWZ0Qm9yZGVyRG91YmxlSW5uZXJCb3g9MDxRfHwwPGM/c3ModC5sZWZ0KzIqRi8zLHQudG9wK1UsUS0yKkYvMyxjLTIqdS8zLEFzLkJPVFRPTV9MRUZUKTpuZXcgWm4odC5sZWZ0KzIqRi8zLHQudG9wK3QuaGVpZ2h0LTIqdS8zKSx0aGlzLnRvcExlZnRCb3JkZXJTdHJva2U9MDxyfHwwPEI/c3ModC5sZWZ0K0YvMix0LnRvcCtsLzIsci1GLzIsQi1sLzIsQXMuVE9QX0xFRlQpOm5ldyBabih0LmxlZnQrRi8yLHQudG9wK2wvMiksdGhpcy50b3BSaWdodEJvcmRlclN0cm9rZT0wPHJ8fDA8Qj9zcyh0LmxlZnQrYSx0LnRvcCtsLzIsbi1DLzIscy1sLzIsQXMuVE9QX1JJR0hUKTpuZXcgWm4odC5sZWZ0K3Qud2lkdGgtQy8yLHQudG9wK2wvMiksdGhpcy5ib3R0b21SaWdodEJvcmRlclN0cm9rZT0wPG98fDA8aT9zcyh0LmxlZnQrdyx0LnRvcCtnLG8tQy8yLGktdS8yLEFzLkJPVFRPTV9SSUdIVCk6bmV3IFpuKHQubGVmdCt0LndpZHRoLUMvMix0LnRvcCt0LmhlaWdodC11LzIpLHRoaXMuYm90dG9tTGVmdEJvcmRlclN0cm9rZT0wPFF8fDA8Yz9zcyh0LmxlZnQrRi8yLHQudG9wK1UsUS1GLzIsYy11LzIsQXMuQk9UVE9NX0xFRlQpOm5ldyBabih0LmxlZnQrRi8yLHQudG9wK3QuaGVpZ2h0LXUvMiksdGhpcy50b3BMZWZ0Qm9yZGVyQm94PTA8cnx8MDxCP3NzKHQubGVmdCx0LnRvcCxyLEIsQXMuVE9QX0xFRlQpOm5ldyBabih0LmxlZnQsdC50b3ApLHRoaXMudG9wUmlnaHRCb3JkZXJCb3g9MDxufHwwPHM/c3ModC5sZWZ0K2EsdC50b3AsbixzLEFzLlRPUF9SSUdIVCk6bmV3IFpuKHQubGVmdCt0LndpZHRoLHQudG9wKSx0aGlzLmJvdHRvbVJpZ2h0Qm9yZGVyQm94PTA8b3x8MDxpP3NzKHQubGVmdCt3LHQudG9wK2csbyxpLEFzLkJPVFRPTV9SSUdIVCk6bmV3IFpuKHQubGVmdCt0LndpZHRoLHQudG9wK3QuaGVpZ2h0KSx0aGlzLmJvdHRvbUxlZnRCb3JkZXJCb3g9MDxRfHwwPGM/c3ModC5sZWZ0LHQudG9wK1UsUSxjLEFzLkJPVFRPTV9MRUZUKTpuZXcgWm4odC5sZWZ0LHQudG9wK3QuaGVpZ2h0KSx0aGlzLnRvcExlZnRQYWRkaW5nQm94PTA8cnx8MDxCP3NzKHQubGVmdCtGLHQudG9wK2wsTWF0aC5tYXgoMCxyLUYpLE1hdGgubWF4KDAsQi1sKSxBcy5UT1BfTEVGVCk6bmV3IFpuKHQubGVmdCtGLHQudG9wK2wpLHRoaXMudG9wUmlnaHRQYWRkaW5nQm94PTA8bnx8MDxzP3NzKHQubGVmdCtNYXRoLm1pbihhLHQud2lkdGgtQyksdC50b3ArbCxhPnQud2lkdGgrQz8wOk1hdGgubWF4KDAsbi1DKSxNYXRoLm1heCgwLHMtbCksQXMuVE9QX1JJR0hUKTpuZXcgWm4odC5sZWZ0K3Qud2lkdGgtQyx0LnRvcCtsKSx0aGlzLmJvdHRvbVJpZ2h0UGFkZGluZ0JveD0wPG98fDA8aT9zcyh0LmxlZnQrTWF0aC5taW4odyx0LndpZHRoLUYpLHQudG9wK01hdGgubWluKGcsdC5oZWlnaHQtdSksTWF0aC5tYXgoMCxvLUMpLE1hdGgubWF4KDAsaS11KSxBcy5CT1RUT01fUklHSFQpOm5ldyBabih0LmxlZnQrdC53aWR0aC1DLHQudG9wK3QuaGVpZ2h0LXUpLHRoaXMuYm90dG9tTGVmdFBhZGRpbmdCb3g9MDxRfHwwPGM/c3ModC5sZWZ0K0YsdC50b3ArTWF0aC5taW4oVSx0LmhlaWdodC11KSxNYXRoLm1heCgwLFEtRiksTWF0aC5tYXgoMCxjLXUpLEFzLkJPVFRPTV9MRUZUKTpuZXcgWm4odC5sZWZ0K0YsdC50b3ArdC5oZWlnaHQtdSksdGhpcy50b3BMZWZ0Q29udGVudEJveD0wPHJ8fDA8Qj9zcyh0LmxlZnQrRitBLHQudG9wK2wraCxNYXRoLm1heCgwLHItKEYrQSkpLE1hdGgubWF4KDAsQi0obCtoKSksQXMuVE9QX0xFRlQpOm5ldyBabih0LmxlZnQrRitBLHQudG9wK2wraCksdGhpcy50b3BSaWdodENvbnRlbnRCb3g9MDxufHwwPHM/c3ModC5sZWZ0K01hdGgubWluKGEsdC53aWR0aCtGK0EpLHQudG9wK2wraCxhPnQud2lkdGgrRitBPzA6bi1GK0Escy0obCtoKSxBcy5UT1BfUklHSFQpOm5ldyBabih0LmxlZnQrdC53aWR0aC0oQytkKSx0LnRvcCtsK2gpLHRoaXMuYm90dG9tUmlnaHRDb250ZW50Qm94PTA8b3x8MDxpP3NzKHQubGVmdCtNYXRoLm1pbih3LHQud2lkdGgtKEYrQSkpLHQudG9wK01hdGgubWluKGcsdC5oZWlnaHQrbCtoKSxNYXRoLm1heCgwLG8tKEMrZCkpLGktKHUrZiksQXMuQk9UVE9NX1JJR0hUKTpuZXcgWm4odC5sZWZ0K3Qud2lkdGgtKEMrZCksdC50b3ArdC5oZWlnaHQtKHUrZikpLHRoaXMuYm90dG9tTGVmdENvbnRlbnRCb3g9MDxRfHwwPGM/c3ModC5sZWZ0K0YrQSx0LnRvcCtVLE1hdGgubWF4KDAsUS0oRitBKSksYy0odStmKSxBcy5CT1RUT01fTEVGVCk6bmV3IFpuKHQubGVmdCtGK0EsdC50b3ArdC5oZWlnaHQtKHUrZikpfTsoaGU9QXM9QXN8fHt9KVtoZS5UT1BfTEVGVD0wXT0iVE9QX0xFRlQiLGhlW2hlLlRPUF9SSUdIVD0xXT0iVE9QX1JJR0hUIixoZVtoZS5CT1RUT01fUklHSFQ9Ml09IkJPVFRPTV9SSUdIVCIsaGVbaGUuQk9UVE9NX0xFRlQ9M109IkJPVFRPTV9MRUZUIjtmdW5jdGlvbiB0cyhBKXtyZXR1cm5bQS50b3BMZWZ0Qm9yZGVyQm94LEEudG9wUmlnaHRCb3JkZXJCb3gsQS5ib3R0b21SaWdodEJvcmRlckJveCxBLmJvdHRvbUxlZnRCb3JkZXJCb3hdfWZ1bmN0aW9uIHJzKEEpe3JldHVybltBLnRvcExlZnRQYWRkaW5nQm94LEEudG9wUmlnaHRQYWRkaW5nQm94LEEuYm90dG9tUmlnaHRQYWRkaW5nQm94LEEuYm90dG9tTGVmdFBhZGRpbmdCb3hdfWZ1bmN0aW9uIEJzKEEpe3JldHVybiAxPT09QS50eXBlfWZ1bmN0aW9uIG5zKEEsdCl7cmV0dXJuIEEubGVuZ3RoPT09dC5sZW5ndGgmJkEuc29tZShmdW5jdGlvbihBLGUpe3JldHVybiBBPT09dFtlXX0pfXZhciBzcz1mdW5jdGlvbihBLGUsdCxyLEIpe3ZhciBuPShNYXRoLnNxcnQoMiktMSkvMyo0LHM9dCpuLG89cipuLGk9QSt0LFE9ZStyO3N3aXRjaChCKXtjYXNlIEFzLlRPUF9MRUZUOnJldHVybiBuZXcgam4obmV3IFpuKEEsUSksbmV3IFpuKEEsUS1vKSxuZXcgWm4oaS1zLGUpLG5ldyBabihpLGUpKTtjYXNlIEFzLlRPUF9SSUdIVDpyZXR1cm4gbmV3IGpuKG5ldyBabihBLGUpLG5ldyBabihBK3MsZSksbmV3IFpuKGksUS1vKSxuZXcgWm4oaSxRKSk7Y2FzZSBBcy5CT1RUT01fUklHSFQ6cmV0dXJuIG5ldyBqbihuZXcgWm4oaSxlKSxuZXcgWm4oaSxlK28pLG5ldyBabihBK3MsUSksbmV3IFpuKEEsUSkpO2RlZmF1bHQ6QXMuQk9UVE9NX0xFRlQ7cmV0dXJuIG5ldyBqbihuZXcgWm4oaSxRKSxuZXcgWm4oaS1zLFEpLG5ldyBabihBLGUrbyksbmV3IFpuKEEsZSkpfX0sb3M9ZnVuY3Rpb24oQSxlLHQpe3RoaXMub2Zmc2V0WD1BLHRoaXMub2Zmc2V0WT1lLHRoaXMubWF0cml4PXQsdGhpcy50eXBlPTAsdGhpcy50YXJnZXQ9Nn0saXM9ZnVuY3Rpb24oQSxlKXt0aGlzLnBhdGg9QSx0aGlzLnRhcmdldD1lLHRoaXMudHlwZT0xfSxRcz1mdW5jdGlvbihBKXt0aGlzLm9wYWNpdHk9QSx0aGlzLnR5cGU9Mix0aGlzLnRhcmdldD02fSxjcz1mdW5jdGlvbihBKXt0aGlzLmVsZW1lbnQ9QSx0aGlzLmlubGluZUxldmVsPVtdLHRoaXMubm9uSW5saW5lTGV2ZWw9W10sdGhpcy5uZWdhdGl2ZVpJbmRleD1bXSx0aGlzLnplcm9PckF1dG9aSW5kZXhPclRyYW5zZm9ybWVkT3JPcGFjaXR5PVtdLHRoaXMucG9zaXRpdmVaSW5kZXg9W10sdGhpcy5ub25Qb3NpdGlvbmVkRmxvYXRzPVtdLHRoaXMubm9uUG9zaXRpb25lZElubGluZUxldmVsPVtdfSxhcz0oZ3MucHJvdG90eXBlLmdldEVmZmVjdHM9ZnVuY3Rpb24oZSl7Zm9yKHZhciBBPS0xPT09WzIsM10uaW5kZXhPZih0aGlzLmNvbnRhaW5lci5zdHlsZXMucG9zaXRpb24pLHQ9dGhpcy5wYXJlbnQscj10aGlzLmVmZmVjdHMuc2xpY2UoMCk7dDspe3ZhciBCLG4scz10LmVmZmVjdHMuZmlsdGVyKGZ1bmN0aW9uKEEpe3JldHVybiFCcyhBKX0pO0F8fDAhPT10LmNvbnRhaW5lci5zdHlsZXMucG9zaXRpb258fCF0LnBhcmVudD8oci51bnNoaWZ0LmFwcGx5KHIscyksQT0tMT09PVsyLDNdLmluZGV4T2YodC5jb250YWluZXIuc3R5bGVzLnBvc2l0aW9uKSwwIT09dC5jb250YWluZXIuc3R5bGVzLm92ZXJmbG93WCYmKEI9dHModC5jdXJ2ZXMpLG49cnModC5jdXJ2ZXMpLG5zKEIsbil8fHIudW5zaGlmdChuZXcgaXMobiw2KSkpKTpyLnVuc2hpZnQuYXBwbHkocixzKSx0PXQucGFyZW50fXJldHVybiByLmZpbHRlcihmdW5jdGlvbihBKXtyZXR1cm4gUHQoQS50YXJnZXQsZSl9KX0sZ3MpO2Z1bmN0aW9uIGdzKEEsZSl7dmFyIHQscjt0aGlzLmNvbnRhaW5lcj1BLHRoaXMucGFyZW50PWUsdGhpcy5lZmZlY3RzPVtdLHRoaXMuY3VydmVzPW5ldyBlcyh0aGlzLmNvbnRhaW5lciksdGhpcy5jb250YWluZXIuc3R5bGVzLm9wYWNpdHk8MSYmdGhpcy5lZmZlY3RzLnB1c2gobmV3IFFzKHRoaXMuY29udGFpbmVyLnN0eWxlcy5vcGFjaXR5KSksbnVsbCE9PXRoaXMuY29udGFpbmVyLnN0eWxlcy50cmFuc2Zvcm0mJihlPXRoaXMuY29udGFpbmVyLmJvdW5kcy5sZWZ0K3RoaXMuY29udGFpbmVyLnN0eWxlcy50cmFuc2Zvcm1PcmlnaW5bMF0ubnVtYmVyLHQ9dGhpcy5jb250YWluZXIuYm91bmRzLnRvcCt0aGlzLmNvbnRhaW5lci5zdHlsZXMudHJhbnNmb3JtT3JpZ2luWzFdLm51bWJlcixyPXRoaXMuY29udGFpbmVyLnN0eWxlcy50cmFuc2Zvcm0sdGhpcy5lZmZlY3RzLnB1c2gobmV3IG9zKGUsdCxyKSkpLDAhPT10aGlzLmNvbnRhaW5lci5zdHlsZXMub3ZlcmZsb3dYJiYodD10cyh0aGlzLmN1cnZlcykscj1ycyh0aGlzLmN1cnZlcyksbnModCxyKT90aGlzLmVmZmVjdHMucHVzaChuZXcgaXModCw2KSk6KHRoaXMuZWZmZWN0cy5wdXNoKG5ldyBpcyh0LDIpKSx0aGlzLmVmZmVjdHMucHVzaChuZXcgaXMociw0KSkpKX1mdW5jdGlvbiB3cyhBLGUpe3N3aXRjaChlKXtjYXNlIDA6cmV0dXJuIEhzKEEudG9wTGVmdEJvcmRlckJveCxBLnRvcExlZnRQYWRkaW5nQm94LEEudG9wUmlnaHRCb3JkZXJCb3gsQS50b3BSaWdodFBhZGRpbmdCb3gpO2Nhc2UgMTpyZXR1cm4gSHMoQS50b3BSaWdodEJvcmRlckJveCxBLnRvcFJpZ2h0UGFkZGluZ0JveCxBLmJvdHRvbVJpZ2h0Qm9yZGVyQm94LEEuYm90dG9tUmlnaHRQYWRkaW5nQm94KTtjYXNlIDI6cmV0dXJuIEhzKEEuYm90dG9tUmlnaHRCb3JkZXJCb3gsQS5ib3R0b21SaWdodFBhZGRpbmdCb3gsQS5ib3R0b21MZWZ0Qm9yZGVyQm94LEEuYm90dG9tTGVmdFBhZGRpbmdCb3gpO2RlZmF1bHQ6cmV0dXJuIEhzKEEuYm90dG9tTGVmdEJvcmRlckJveCxBLmJvdHRvbUxlZnRQYWRkaW5nQm94LEEudG9wTGVmdEJvcmRlckJveCxBLnRvcExlZnRQYWRkaW5nQm94KX19ZnVuY3Rpb24gVXMoQSl7dmFyIGU9QS5ib3VuZHMsQT1BLnN0eWxlcztyZXR1cm4gZS5hZGQoQS5ib3JkZXJMZWZ0V2lkdGgsQS5ib3JkZXJUb3BXaWR0aCwtKEEuYm9yZGVyUmlnaHRXaWR0aCtBLmJvcmRlckxlZnRXaWR0aCksLShBLmJvcmRlclRvcFdpZHRoK0EuYm9yZGVyQm90dG9tV2lkdGgpKX1mdW5jdGlvbiBscyhBKXt2YXIgZT1BLnN0eWxlcyx0PUEuYm91bmRzLHI9VWUoZS5wYWRkaW5nTGVmdCx0LndpZHRoKSxCPVVlKGUucGFkZGluZ1JpZ2h0LHQud2lkdGgpLG49VWUoZS5wYWRkaW5nVG9wLHQud2lkdGgpLEE9VWUoZS5wYWRkaW5nQm90dG9tLHQud2lkdGgpO3JldHVybiB0LmFkZChyK2UuYm9yZGVyTGVmdFdpZHRoLG4rZS5ib3JkZXJUb3BXaWR0aCwtKGUuYm9yZGVyUmlnaHRXaWR0aCtlLmJvcmRlckxlZnRXaWR0aCtyK0IpLC0oZS5ib3JkZXJUb3BXaWR0aCtlLmJvcmRlckJvdHRvbVdpZHRoK24rQSkpfWZ1bmN0aW9uIENzKEEsZSx0KXt2YXIgcj0oQj1FcyhBLnN0eWxlcy5iYWNrZ3JvdW5kT3JpZ2luLGUpLG49QSwwPT09Qj9uLmJvdW5kczooMj09PUI/bHM6VXMpKG4pKSxCPShzPUVzKEEuc3R5bGVzLmJhY2tncm91bmRDbGlwLGUpLG89QSwwPT09cz9vLmJvdW5kczooMj09PXM/bHM6VXMpKG8pKSxuPXBzKEVzKEEuc3R5bGVzLmJhY2tncm91bmRTaXplLGUpLHQscikscz1uWzBdLG89blsxXSx0PUJlKEVzKEEuc3R5bGVzLmJhY2tncm91bmRQb3NpdGlvbixlKSxyLndpZHRoLXMsci5oZWlnaHQtbyk7cmV0dXJuW0lzKEVzKEEuc3R5bGVzLmJhY2tncm91bmRSZXBlYXQsZSksdCxuLHIsQiksTWF0aC5yb3VuZChyLmxlZnQrdFswXSksTWF0aC5yb3VuZChyLnRvcCt0WzFdKSxzLG9dfWZ1bmN0aW9uIHVzKEEpe3JldHVybiBfQShBKSYmQS52YWx1ZT09PVZlLkFVVE99ZnVuY3Rpb24gRnMoQSl7cmV0dXJuIm51bWJlciI9PXR5cGVvZiBBfXZhciBocz1mdW5jdGlvbihRLGMsYSxnKXtRLmNvbnRhaW5lci5lbGVtZW50cy5mb3JFYWNoKGZ1bmN0aW9uKEEpe3ZhciBlPVB0KEEuZmxhZ3MsNCksdD1QdChBLmZsYWdzLDIpLHI9bmV3IGFzKEEsUSk7UHQoQS5zdHlsZXMuZGlzcGxheSwyMDQ4KSYmZy5wdXNoKHIpO3ZhciBCLG4scyxvLGk9UHQoQS5mbGFncyw4KT9bXTpnO2V8fHQ/KEI9ZXx8QS5zdHlsZXMuaXNQb3NpdGlvbmVkKCk/YTpjLHQ9bmV3IGNzKHIpLEEuc3R5bGVzLmlzUG9zaXRpb25lZCgpfHxBLnN0eWxlcy5vcGFjaXR5PDF8fEEuc3R5bGVzLmlzVHJhbnNmb3JtZWQoKT8obj1BLnN0eWxlcy56SW5kZXgub3JkZXIpPDA/KHM9MCxCLm5lZ2F0aXZlWkluZGV4LnNvbWUoZnVuY3Rpb24oQSxlKXtyZXR1cm4gbj5BLmVsZW1lbnQuY29udGFpbmVyLnN0eWxlcy56SW5kZXgub3JkZXI/KHM9ZSwhMSk6MDxzfSksQi5uZWdhdGl2ZVpJbmRleC5zcGxpY2UocywwLHQpKTowPG4/KG89MCxCLnBvc2l0aXZlWkluZGV4LnNvbWUoZnVuY3Rpb24oQSxlKXtyZXR1cm4gbj49QS5lbGVtZW50LmNvbnRhaW5lci5zdHlsZXMuekluZGV4Lm9yZGVyPyhvPWUrMSwhMSk6MDxvfSksQi5wb3NpdGl2ZVpJbmRleC5zcGxpY2UobywwLHQpKTpCLnplcm9PckF1dG9aSW5kZXhPclRyYW5zZm9ybWVkT3JPcGFjaXR5LnB1c2godCk6KEEuc3R5bGVzLmlzRmxvYXRpbmcoKT9CLm5vblBvc2l0aW9uZWRGbG9hdHM6Qi5ub25Qb3NpdGlvbmVkSW5saW5lTGV2ZWwpLnB1c2godCksaHMocix0LGU/dDphLGkpKTooKEEuc3R5bGVzLmlzSW5saW5lTGV2ZWwoKT9jLmlubGluZUxldmVsOmMubm9uSW5saW5lTGV2ZWwpLnB1c2gociksaHMocixjLGEsaSkpLFB0KEEuZmxhZ3MsOCkmJmRzKEEsaSl9KX0sZHM9ZnVuY3Rpb24oQSxlKXtmb3IodmFyIHQ9QSBpbnN0YW5jZW9mIFVCP0Euc3RhcnQ6MSxyPUEgaW5zdGFuY2VvZiBVQiYmQS5yZXZlcnNlZCxCPTA7QjxlLmxlbmd0aDtCKyspe3ZhciBuPWVbQl07bi5jb250YWluZXIgaW5zdGFuY2VvZiBhQiYmIm51bWJlciI9PXR5cGVvZiBuLmNvbnRhaW5lci52YWx1ZSYmMCE9PW4uY29udGFpbmVyLnZhbHVlJiYodD1uLmNvbnRhaW5lci52YWx1ZSksbi5saXN0VmFsdWU9Rm4odCxuLmNvbnRhaW5lci5zdHlsZXMubGlzdFN0eWxlVHlwZSwhMCksdCs9cj8tMToxfX0sZnM9ZnVuY3Rpb24oQSxlKXt2YXIgdD1bXTtyZXR1cm4gJG4oQSk/dC5wdXNoKEEuc3ViZGl2aWRlKC41LCExKSk6dC5wdXNoKEEpLCRuKGUpP3QucHVzaChlLnN1YmRpdmlkZSguNSwhMCkpOnQucHVzaChlKSx0fSxIcz1mdW5jdGlvbihBLGUsdCxyKXt2YXIgQj1bXTtyZXR1cm4gJG4oQSk/Qi5wdXNoKEEuc3ViZGl2aWRlKC41LCExKSk6Qi5wdXNoKEEpLCRuKHQpP0IucHVzaCh0LnN1YmRpdmlkZSguNSwhMCkpOkIucHVzaCh0KSwkbihyKT9CLnB1c2goci5zdWJkaXZpZGUoLjUsITApLnJldmVyc2UoKSk6Qi5wdXNoKHIpLCRuKGUpP0IucHVzaChlLnN1YmRpdmlkZSguNSwhMSkucmV2ZXJzZSgpKTpCLnB1c2goZSksQn0scHM9ZnVuY3Rpb24oQSxlLHQpe3ZhciByPWVbMF0sQj1lWzFdLG49ZVsyXSxzPUFbMF0sbz1BWzFdO2lmKCFzKXJldHVyblswLDBdO2lmKHRlKHMpJiZvJiZ0ZShvKSlyZXR1cm5bVWUocyx0LndpZHRoKSxVZShvLHQuaGVpZ2h0KV07dmFyIGk9RnMobik7aWYoX0EocykmJihzLnZhbHVlPT09VmUuQ09OVEFJTnx8cy52YWx1ZT09PVZlLkNPVkVSKSlyZXR1cm4gRnMobik/dC53aWR0aC90LmhlaWdodDxuIT0ocy52YWx1ZT09PVZlLkNPVkVSKT9bdC53aWR0aCx0LndpZHRoL25dOlt0LmhlaWdodCpuLHQuaGVpZ2h0XTpbdC53aWR0aCx0LmhlaWdodF07dmFyIFE9RnMociksZT1GcyhCKSxBPVF8fGU7aWYodXMocykmJighb3x8dXMobykpKXJldHVybiBRJiZlP1tyLEJdOml8fEE/QSYmaT9bUT9yOkIqbixlP0I6ci9uXTpbUT9yOnQud2lkdGgsZT9COnQuaGVpZ2h0XTpbdC53aWR0aCx0LmhlaWdodF07aWYoaSl7dmFyIGM9MCxhPTA7cmV0dXJuIHRlKHMpP2M9VWUocyx0LndpZHRoKTp0ZShvKSYmKGE9VWUobyx0LmhlaWdodCkpLHVzKHMpP2M9YSpuOm8mJiF1cyhvKXx8KGE9Yy9uKSxbYyxhXX1jPW51bGwsYT1udWxsO2lmKHRlKHMpP2M9VWUocyx0LndpZHRoKTpvJiZ0ZShvKSYmKGE9VWUobyx0LmhlaWdodCkpLG51bGwhPT0oYz1udWxsIT09KGE9bnVsbCE9PWMmJighb3x8dXMobykpP1EmJmU/Yy9yKkI6dC5oZWlnaHQ6YSkmJnVzKHMpP1EmJmU/YS9CKnI6dC53aWR0aDpjKSYmbnVsbCE9PWEpcmV0dXJuW2MsYV07dGhyb3cgbmV3IEVycm9yKCJVbmFibGUgdG8gY2FsY3VsYXRlIGJhY2tncm91bmQtc2l6ZSBmb3IgZWxlbWVudCIpfSxFcz1mdW5jdGlvbihBLGUpe2U9QVtlXTtyZXR1cm4gdm9pZCAwPT09ZT9BWzBdOmV9LElzPWZ1bmN0aW9uKEEsZSx0LHIsQil7dmFyIG49ZVswXSxzPWVbMV0sbz10WzBdLGk9dFsxXTtzd2l0Y2goQSl7Y2FzZSAyOnJldHVybltuZXcgWm4oTWF0aC5yb3VuZChyLmxlZnQpLE1hdGgucm91bmQoci50b3ArcykpLG5ldyBabihNYXRoLnJvdW5kKHIubGVmdCtyLndpZHRoKSxNYXRoLnJvdW5kKHIudG9wK3MpKSxuZXcgWm4oTWF0aC5yb3VuZChyLmxlZnQrci53aWR0aCksTWF0aC5yb3VuZChpK3IudG9wK3MpKSxuZXcgWm4oTWF0aC5yb3VuZChyLmxlZnQpLE1hdGgucm91bmQoaStyLnRvcCtzKSldO2Nhc2UgMzpyZXR1cm5bbmV3IFpuKE1hdGgucm91bmQoci5sZWZ0K24pLE1hdGgucm91bmQoci50b3ApKSxuZXcgWm4oTWF0aC5yb3VuZChyLmxlZnQrbitvKSxNYXRoLnJvdW5kKHIudG9wKSksbmV3IFpuKE1hdGgucm91bmQoci5sZWZ0K24rbyksTWF0aC5yb3VuZChyLmhlaWdodCtyLnRvcCkpLG5ldyBabihNYXRoLnJvdW5kKHIubGVmdCtuKSxNYXRoLnJvdW5kKHIuaGVpZ2h0K3IudG9wKSldO2Nhc2UgMTpyZXR1cm5bbmV3IFpuKE1hdGgucm91bmQoci5sZWZ0K24pLE1hdGgucm91bmQoci50b3ArcykpLG5ldyBabihNYXRoLnJvdW5kKHIubGVmdCtuK28pLE1hdGgucm91bmQoci50b3ArcykpLG5ldyBabihNYXRoLnJvdW5kKHIubGVmdCtuK28pLE1hdGgucm91bmQoci50b3ArcytpKSksbmV3IFpuKE1hdGgucm91bmQoci5sZWZ0K24pLE1hdGgucm91bmQoci50b3ArcytpKSldO2RlZmF1bHQ6cmV0dXJuW25ldyBabihNYXRoLnJvdW5kKEIubGVmdCksTWF0aC5yb3VuZChCLnRvcCkpLG5ldyBabihNYXRoLnJvdW5kKEIubGVmdCtCLndpZHRoKSxNYXRoLnJvdW5kKEIudG9wKSksbmV3IFpuKE1hdGgucm91bmQoQi5sZWZ0K0Iud2lkdGgpLE1hdGgucm91bmQoQi5oZWlnaHQrQi50b3ApKSxuZXcgWm4oTWF0aC5yb3VuZChCLmxlZnQpLE1hdGgucm91bmQoQi5oZWlnaHQrQi50b3ApKV19fSx5cz0iSGlkZGVuIFRleHQiLEtzPShtcy5wcm90b3R5cGUucGFyc2VNZXRyaWNzPWZ1bmN0aW9uKEEsZSl7dmFyIHQ9dGhpcy5fZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iikscj10aGlzLl9kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbWciKSxCPXRoaXMuX2RvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKSxuPXRoaXMuX2RvY3VtZW50LmJvZHk7dC5zdHlsZS52aXNpYmlsaXR5PSJoaWRkZW4iLHQuc3R5bGUuZm9udEZhbWlseT1BLHQuc3R5bGUuZm9udFNpemU9ZSx0LnN0eWxlLm1hcmdpbj0iMCIsdC5zdHlsZS5wYWRkaW5nPSIwIix0LnN0eWxlLndoaXRlU3BhY2U9Im5vd3JhcCIsbi5hcHBlbmRDaGlsZCh0KSxyLnNyYz0iZGF0YTppbWFnZS9naWY7YmFzZTY0LFIwbEdPRGxoQVFBQkFJQUFBQUFBQVAvLy95SDVCQUVBQUFBQUxBQUFBQUFCQUFFQUFBSUJSQUE3IixyLndpZHRoPTEsci5oZWlnaHQ9MSxyLnN0eWxlLm1hcmdpbj0iMCIsci5zdHlsZS5wYWRkaW5nPSIwIixyLnN0eWxlLnZlcnRpY2FsQWxpZ249ImJhc2VsaW5lIixCLnN0eWxlLmZvbnRGYW1pbHk9QSxCLnN0eWxlLmZvbnRTaXplPWUsQi5zdHlsZS5tYXJnaW49IjAiLEIuc3R5bGUucGFkZGluZz0iMCIsQi5hcHBlbmRDaGlsZCh0aGlzLl9kb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSh5cykpLHQuYXBwZW5kQ2hpbGQoQiksdC5hcHBlbmRDaGlsZChyKTtlPXIub2Zmc2V0VG9wLUIub2Zmc2V0VG9wKzI7dC5yZW1vdmVDaGlsZChCKSx0LmFwcGVuZENoaWxkKHRoaXMuX2RvY3VtZW50LmNyZWF0ZVRleHROb2RlKHlzKSksdC5zdHlsZS5saW5lSGVpZ2h0PSJub3JtYWwiLHIuc3R5bGUudmVydGljYWxBbGlnbj0ic3VwZXIiO3I9ci5vZmZzZXRUb3AtdC5vZmZzZXRUb3ArMjtyZXR1cm4gbi5yZW1vdmVDaGlsZCh0KSx7YmFzZWxpbmU6ZSxtaWRkbGU6cn19LG1zLnByb3RvdHlwZS5nZXRNZXRyaWNzPWZ1bmN0aW9uKEEsZSl7dmFyIHQ9QSsiICIrZTtyZXR1cm4gdm9pZCAwPT09dGhpcy5fZGF0YVt0XSYmKHRoaXMuX2RhdGFbdF09dGhpcy5wYXJzZU1ldHJpY3MoQSxlKSksdGhpcy5fZGF0YVt0XX0sbXMpO2Z1bmN0aW9uIG1zKEEpe3RoaXMuX2RhdGE9e30sdGhpcy5fZG9jdW1lbnQ9QX12YXIgTHMsaGU9ZnVuY3Rpb24oQSxlKXt0aGlzLmNvbnRleHQ9QSx0aGlzLm9wdGlvbnM9ZX0sYnM9KEEoRHMsTHM9aGUpLERzLnByb3RvdHlwZS5hcHBseUVmZmVjdHM9ZnVuY3Rpb24oQSl7Zm9yKHZhciBlPXRoaXM7dGhpcy5fYWN0aXZlRWZmZWN0cy5sZW5ndGg7KXRoaXMucG9wRWZmZWN0KCk7QS5mb3JFYWNoKGZ1bmN0aW9uKEEpe3JldHVybiBlLmFwcGx5RWZmZWN0KEEpfSl9LERzLnByb3RvdHlwZS5hcHBseUVmZmVjdD1mdW5jdGlvbihBKXt0aGlzLmN0eC5zYXZlKCksMj09PUEudHlwZSYmKHRoaXMuY3R4Lmdsb2JhbEFscGhhPUEub3BhY2l0eSksMD09PUEudHlwZSYmKHRoaXMuY3R4LnRyYW5zbGF0ZShBLm9mZnNldFgsQS5vZmZzZXRZKSx0aGlzLmN0eC50cmFuc2Zvcm0oQS5tYXRyaXhbMF0sQS5tYXRyaXhbMV0sQS5tYXRyaXhbMl0sQS5tYXRyaXhbM10sQS5tYXRyaXhbNF0sQS5tYXRyaXhbNV0pLHRoaXMuY3R4LnRyYW5zbGF0ZSgtQS5vZmZzZXRYLC1BLm9mZnNldFkpKSxCcyhBKSYmKHRoaXMucGF0aChBLnBhdGgpLHRoaXMuY3R4LmNsaXAoKSksdGhpcy5fYWN0aXZlRWZmZWN0cy5wdXNoKEEpfSxEcy5wcm90b3R5cGUucG9wRWZmZWN0PWZ1bmN0aW9uKCl7dGhpcy5fYWN0aXZlRWZmZWN0cy5wb3AoKSx0aGlzLmN0eC5yZXN0b3JlKCl9LERzLnByb3RvdHlwZS5yZW5kZXJTdGFjaz1mdW5jdGlvbihlKXtyZXR1cm4gYSh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXtyZXR1cm4gSCh0aGlzLGZ1bmN0aW9uKEEpe3N3aXRjaChBLmxhYmVsKXtjYXNlIDA6cmV0dXJuIGUuZWxlbWVudC5jb250YWluZXIuc3R5bGVzLmlzVmlzaWJsZSgpP1s0LHRoaXMucmVuZGVyU3RhY2tDb250ZW50KGUpXTpbMywyXTtjYXNlIDE6QS5zZW50KCksQS5sYWJlbD0yO2Nhc2UgMjpyZXR1cm5bMl19fSl9KX0sRHMucHJvdG90eXBlLnJlbmRlck5vZGU9ZnVuY3Rpb24oZSl7cmV0dXJuIGEodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7cmV0dXJuIEgodGhpcyxmdW5jdGlvbihBKXtzd2l0Y2goQS5sYWJlbCl7Y2FzZSAwOnJldHVybiBQdChlLmNvbnRhaW5lci5mbGFncywxNiksZS5jb250YWluZXIuc3R5bGVzLmlzVmlzaWJsZSgpP1s0LHRoaXMucmVuZGVyTm9kZUJhY2tncm91bmRBbmRCb3JkZXJzKGUpXTpbMywzXTtjYXNlIDE6cmV0dXJuIEEuc2VudCgpLFs0LHRoaXMucmVuZGVyTm9kZUNvbnRlbnQoZSldO2Nhc2UgMjpBLnNlbnQoKSxBLmxhYmVsPTM7Y2FzZSAzOnJldHVyblsyXX19KX0pfSxEcy5wcm90b3R5cGUucmVuZGVyVGV4dFdpdGhMZXR0ZXJTcGFjaW5nPWZ1bmN0aW9uKHQsQSxyKXt2YXIgQj10aGlzOzA9PT1BP3RoaXMuY3R4LmZpbGxUZXh0KHQudGV4dCx0LmJvdW5kcy5sZWZ0LHQuYm91bmRzLnRvcCtyKTpacih0LnRleHQpLnJlZHVjZShmdW5jdGlvbihBLGUpe3JldHVybiBCLmN0eC5maWxsVGV4dChlLEEsdC5ib3VuZHMudG9wK3IpLEErQi5jdHgubWVhc3VyZVRleHQoZSkud2lkdGh9LHQuYm91bmRzLmxlZnQpfSxEcy5wcm90b3R5cGUuY3JlYXRlRm9udFN0eWxlPWZ1bmN0aW9uKEEpe3ZhciBlPUEuZm9udFZhcmlhbnQuZmlsdGVyKGZ1bmN0aW9uKEEpe3JldHVybiJub3JtYWwiPT09QXx8InNtYWxsLWNhcHMiPT09QX0pLmpvaW4oIiIpLHQ9R3MoQS5mb250RmFtaWx5KS5qb2luKCIsICIpLHI9V0EoQS5mb250U2l6ZSk/IiIrQS5mb250U2l6ZS5udW1iZXIrQS5mb250U2l6ZS51bml0OkEuZm9udFNpemUubnVtYmVyKyJweCI7cmV0dXJuW1tBLmZvbnRTdHlsZSxlLEEuZm9udFdlaWdodCxyLHRdLmpvaW4oIiAiKSx0LHJdfSxEcy5wcm90b3R5cGUucmVuZGVyVGV4dE5vZGU9ZnVuY3Rpb24oaSxRKXtyZXR1cm4gYSh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgZSx0LHIsQixuLHMsbz10aGlzO3JldHVybiBIKHRoaXMsZnVuY3Rpb24oQSl7cmV0dXJuIHI9dGhpcy5jcmVhdGVGb250U3R5bGUoUSksZT1yWzBdLHQ9clsxXSxyPXJbMl0sdGhpcy5jdHguZm9udD1lLHRoaXMuY3R4LmRpcmVjdGlvbj0xPT09US5kaXJlY3Rpb24/InJ0bCI6Imx0ciIsdGhpcy5jdHgudGV4dEFsaWduPSJsZWZ0Iix0aGlzLmN0eC50ZXh0QmFzZWxpbmU9ImFscGhhYmV0aWMiLHI9dGhpcy5mb250TWV0cmljcy5nZXRNZXRyaWNzKHQsciksQj1yLmJhc2VsaW5lLG49ci5taWRkbGUscz1RLnBhaW50T3JkZXIsaS50ZXh0Qm91bmRzLmZvckVhY2goZnVuY3Rpb24odCl7cy5mb3JFYWNoKGZ1bmN0aW9uKEEpe3N3aXRjaChBKXtjYXNlIDA6by5jdHguZmlsbFN0eWxlPWllKFEuY29sb3IpLG8ucmVuZGVyVGV4dFdpdGhMZXR0ZXJTcGFjaW5nKHQsUS5sZXR0ZXJTcGFjaW5nLEIpO3ZhciBlPVEudGV4dFNoYWRvdztlLmxlbmd0aCYmdC50ZXh0LnRyaW0oKS5sZW5ndGgmJihlLnNsaWNlKDApLnJldmVyc2UoKS5mb3JFYWNoKGZ1bmN0aW9uKEEpe28uY3R4LnNoYWRvd0NvbG9yPWllKEEuY29sb3IpLG8uY3R4LnNoYWRvd09mZnNldFg9QS5vZmZzZXRYLm51bWJlcipvLm9wdGlvbnMuc2NhbGUsby5jdHguc2hhZG93T2Zmc2V0WT1BLm9mZnNldFkubnVtYmVyKm8ub3B0aW9ucy5zY2FsZSxvLmN0eC5zaGFkb3dCbHVyPUEuYmx1ci5udW1iZXIsby5yZW5kZXJUZXh0V2l0aExldHRlclNwYWNpbmcodCxRLmxldHRlclNwYWNpbmcsQil9KSxvLmN0eC5zaGFkb3dDb2xvcj0iIixvLmN0eC5zaGFkb3dPZmZzZXRYPTAsby5jdHguc2hhZG93T2Zmc2V0WT0wLG8uY3R4LnNoYWRvd0JsdXI9MCksUS50ZXh0RGVjb3JhdGlvbkxpbmUubGVuZ3RoJiYoby5jdHguZmlsbFN0eWxlPWllKFEudGV4dERlY29yYXRpb25Db2xvcnx8US5jb2xvciksUS50ZXh0RGVjb3JhdGlvbkxpbmUuZm9yRWFjaChmdW5jdGlvbihBKXtzd2l0Y2goQSl7Y2FzZSAxOm8uY3R4LmZpbGxSZWN0KHQuYm91bmRzLmxlZnQsTWF0aC5yb3VuZCh0LmJvdW5kcy50b3ArQiksdC5ib3VuZHMud2lkdGgsMSk7YnJlYWs7Y2FzZSAyOm8uY3R4LmZpbGxSZWN0KHQuYm91bmRzLmxlZnQsTWF0aC5yb3VuZCh0LmJvdW5kcy50b3ApLHQuYm91bmRzLndpZHRoLDEpO2JyZWFrO2Nhc2UgMzpvLmN0eC5maWxsUmVjdCh0LmJvdW5kcy5sZWZ0LE1hdGguY2VpbCh0LmJvdW5kcy50b3ArbiksdC5ib3VuZHMud2lkdGgsMSl9fSkpO2JyZWFrO2Nhc2UgMTpRLndlYmtpdFRleHRTdHJva2VXaWR0aCYmdC50ZXh0LnRyaW0oKS5sZW5ndGgmJihvLmN0eC5zdHJva2VTdHlsZT1pZShRLndlYmtpdFRleHRTdHJva2VDb2xvciksby5jdHgubGluZVdpZHRoPVEud2Via2l0VGV4dFN0cm9rZVdpZHRoLG8uY3R4LmxpbmVKb2luPXdpbmRvdy5jaHJvbWU/Im1pdGVyIjoicm91bmQiLG8uY3R4LnN0cm9rZVRleHQodC50ZXh0LHQuYm91bmRzLmxlZnQsdC5ib3VuZHMudG9wK0IpKSxvLmN0eC5zdHJva2VTdHlsZT0iIixvLmN0eC5saW5lV2lkdGg9MCxvLmN0eC5saW5lSm9pbj0ibWl0ZXIifX0pfSksWzJdfSl9KX0sRHMucHJvdG90eXBlLnJlbmRlclJlcGxhY2VkRWxlbWVudD1mdW5jdGlvbihBLGUsdCl7dmFyIHI7dCYmMDxBLmludHJpbnNpY1dpZHRoJiYwPEEuaW50cmluc2ljSGVpZ2h0JiYocj1scyhBKSxlPXJzKGUpLHRoaXMucGF0aChlKSx0aGlzLmN0eC5zYXZlKCksdGhpcy5jdHguY2xpcCgpLHRoaXMuY3R4LmRyYXdJbWFnZSh0LDAsMCxBLmludHJpbnNpY1dpZHRoLEEuaW50cmluc2ljSGVpZ2h0LHIubGVmdCxyLnRvcCxyLndpZHRoLHIuaGVpZ2h0KSx0aGlzLmN0eC5yZXN0b3JlKCkpfSxEcy5wcm90b3R5cGUucmVuZGVyTm9kZUNvbnRlbnQ9ZnVuY3Rpb24odyl7cmV0dXJuIGEodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIGUsdCxyLEIsbixzLG8saSxRLGMsYSxnO3JldHVybiBIKHRoaXMsZnVuY3Rpb24oQSl7c3dpdGNoKEEubGFiZWwpe2Nhc2UgMDp0aGlzLmFwcGx5RWZmZWN0cyh3LmdldEVmZmVjdHMoNCkpLGU9dy5jb250YWluZXIsdD13LmN1cnZlcyxyPWUuc3R5bGVzLEI9MCxuPWUudGV4dE5vZGVzLEEubGFiZWw9MTtjYXNlIDE6cmV0dXJuIEI8bi5sZW5ndGg/KHM9bltCXSxbNCx0aGlzLnJlbmRlclRleHROb2RlKHMscildKTpbMyw0XTtjYXNlIDI6QS5zZW50KCksQS5sYWJlbD0zO2Nhc2UgMzpyZXR1cm4gQisrLFszLDFdO2Nhc2UgNDppZighKGUgaW5zdGFuY2VvZiB0QikpcmV0dXJuWzMsOF07QS5sYWJlbD01O2Nhc2UgNTpyZXR1cm4gQS50cnlzLnB1c2goWzUsNywsOF0pLFs0LHRoaXMuY29udGV4dC5jYWNoZS5tYXRjaChlLnNyYyldO2Nhc2UgNjpyZXR1cm4gUT1BLnNlbnQoKSx0aGlzLnJlbmRlclJlcGxhY2VkRWxlbWVudChlLHQsUSksWzMsOF07Y2FzZSA3OnJldHVybiBBLnNlbnQoKSx0aGlzLmNvbnRleHQubG9nZ2VyLmVycm9yKCJFcnJvciBsb2FkaW5nIGltYWdlICIrZS5zcmMpLFszLDhdO2Nhc2UgODppZihlIGluc3RhbmNlb2YgbkImJnRoaXMucmVuZGVyUmVwbGFjZWRFbGVtZW50KGUsdCxlLmNhbnZhcyksIShlIGluc3RhbmNlb2YgaUIpKXJldHVyblszLDEyXTtBLmxhYmVsPTk7Y2FzZSA5OnJldHVybiBBLnRyeXMucHVzaChbOSwxMSwsMTJdKSxbNCx0aGlzLmNvbnRleHQuY2FjaGUubWF0Y2goZS5zdmcpXTtjYXNlIDEwOnJldHVybiBRPUEuc2VudCgpLHRoaXMucmVuZGVyUmVwbGFjZWRFbGVtZW50KGUsdCxRKSxbMywxMl07Y2FzZSAxMTpyZXR1cm4gQS5zZW50KCksdGhpcy5jb250ZXh0LmxvZ2dlci5lcnJvcigiRXJyb3IgbG9hZGluZyBzdmcgIitlLnN2Zy5zdWJzdHJpbmcoMCwyNTUpKSxbMywxMl07Y2FzZSAxMjpyZXR1cm4gZSBpbnN0YW5jZW9mIHZCJiZlLnRyZWU/WzQsbmV3IERzKHRoaXMuY29udGV4dCx7c2NhbGU6dGhpcy5vcHRpb25zLnNjYWxlLGJhY2tncm91bmRDb2xvcjplLmJhY2tncm91bmRDb2xvcix4OjAseTowLHdpZHRoOmUud2lkdGgsaGVpZ2h0OmUuaGVpZ2h0fSkucmVuZGVyKGUudHJlZSldOlszLDE0XTtjYXNlIDEzOnM9QS5zZW50KCksZS53aWR0aCYmZS5oZWlnaHQmJnRoaXMuY3R4LmRyYXdJbWFnZShzLDAsMCxlLndpZHRoLGUuaGVpZ2h0LGUuYm91bmRzLmxlZnQsZS5ib3VuZHMudG9wLGUuYm91bmRzLndpZHRoLGUuYm91bmRzLmhlaWdodCksQS5sYWJlbD0xNDtjYXNlIDE0OmlmKGUgaW5zdGFuY2VvZiBwQiYmKGk9TWF0aC5taW4oZS5ib3VuZHMud2lkdGgsZS5ib3VuZHMuaGVpZ2h0KSxlLnR5cGU9PT1oQj9lLmNoZWNrZWQmJih0aGlzLmN0eC5zYXZlKCksdGhpcy5wYXRoKFtuZXcgWm4oZS5ib3VuZHMubGVmdCsuMzkzNjMqaSxlLmJvdW5kcy50b3ArLjc5KmkpLG5ldyBabihlLmJvdW5kcy5sZWZ0Ky4xNippLGUuYm91bmRzLnRvcCsuNTU0OSppKSxuZXcgWm4oZS5ib3VuZHMubGVmdCsuMjczNDcqaSxlLmJvdW5kcy50b3ArLjQ0MDcxKmkpLG5ldyBabihlLmJvdW5kcy5sZWZ0Ky4zOTY5NCppLGUuYm91bmRzLnRvcCsuNTY0OSppKSxuZXcgWm4oZS5ib3VuZHMubGVmdCsuNzI5ODMqaSxlLmJvdW5kcy50b3ArLjIzKmkpLG5ldyBabihlLmJvdW5kcy5sZWZ0Ky44NCppLGUuYm91bmRzLnRvcCsuMzQwODUqaSksbmV3IFpuKGUuYm91bmRzLmxlZnQrLjM5MzYzKmksZS5ib3VuZHMudG9wKy43OSppKV0pLHRoaXMuY3R4LmZpbGxTdHlsZT1pZShIQiksdGhpcy5jdHguZmlsbCgpLHRoaXMuY3R4LnJlc3RvcmUoKSk6ZS50eXBlPT09ZEImJmUuY2hlY2tlZCYmKHRoaXMuY3R4LnNhdmUoKSx0aGlzLmN0eC5iZWdpblBhdGgoKSx0aGlzLmN0eC5hcmMoZS5ib3VuZHMubGVmdCtpLzIsZS5ib3VuZHMudG9wK2kvMixpLzQsMCwyKk1hdGguUEksITApLHRoaXMuY3R4LmZpbGxTdHlsZT1pZShIQiksdGhpcy5jdHguZmlsbCgpLHRoaXMuY3R4LnJlc3RvcmUoKSkpLHhzKGUpJiZlLnZhbHVlLmxlbmd0aCl7c3dpdGNoKGM9dGhpcy5jcmVhdGVGb250U3R5bGUociksYT1jWzBdLGk9Y1sxXSxjPXRoaXMuZm9udE1ldHJpY3MuZ2V0TWV0cmljcyhhLGkpLmJhc2VsaW5lLHRoaXMuY3R4LmZvbnQ9YSx0aGlzLmN0eC5maWxsU3R5bGU9aWUoci5jb2xvciksdGhpcy5jdHgudGV4dEJhc2VsaW5lPSJhbHBoYWJldGljIix0aGlzLmN0eC50ZXh0QWxpZ249U3MoZS5zdHlsZXMudGV4dEFsaWduKSxnPWxzKGUpLG89MCxlLnN0eWxlcy50ZXh0QWxpZ24pe2Nhc2UgMTpvKz1nLndpZHRoLzI7YnJlYWs7Y2FzZSAyOm8rPWcud2lkdGh9aT1nLmFkZChvLDAsMCwtZy5oZWlnaHQvMisxKSx0aGlzLmN0eC5zYXZlKCksdGhpcy5wYXRoKFtuZXcgWm4oZy5sZWZ0LGcudG9wKSxuZXcgWm4oZy5sZWZ0K2cud2lkdGgsZy50b3ApLG5ldyBabihnLmxlZnQrZy53aWR0aCxnLnRvcCtnLmhlaWdodCksbmV3IFpuKGcubGVmdCxnLnRvcCtnLmhlaWdodCldKSx0aGlzLmN0eC5jbGlwKCksdGhpcy5yZW5kZXJUZXh0V2l0aExldHRlclNwYWNpbmcobmV3IEpyKGUudmFsdWUsaSksci5sZXR0ZXJTcGFjaW5nLGMpLHRoaXMuY3R4LnJlc3RvcmUoKSx0aGlzLmN0eC50ZXh0QmFzZWxpbmU9ImFscGhhYmV0aWMiLHRoaXMuY3R4LnRleHRBbGlnbj0ibGVmdCJ9aWYoIVB0KGUuc3R5bGVzLmRpc3BsYXksMjA0OCkpcmV0dXJuWzMsMjBdO2lmKG51bGw9PT1lLnN0eWxlcy5saXN0U3R5bGVJbWFnZSlyZXR1cm5bMywxOV07aWYoMCE9PShjPWUuc3R5bGVzLmxpc3RTdHlsZUltYWdlKS50eXBlKXJldHVyblszLDE4XTtRPXZvaWQgMCxjPWMudXJsLEEubGFiZWw9MTU7Y2FzZSAxNTpyZXR1cm4gQS50cnlzLnB1c2goWzE1LDE3LCwxOF0pLFs0LHRoaXMuY29udGV4dC5jYWNoZS5tYXRjaChjKV07Y2FzZSAxNjpyZXR1cm4gUT1BLnNlbnQoKSx0aGlzLmN0eC5kcmF3SW1hZ2UoUSxlLmJvdW5kcy5sZWZ0LShRLndpZHRoKzEwKSxlLmJvdW5kcy50b3ApLFszLDE4XTtjYXNlIDE3OnJldHVybiBBLnNlbnQoKSx0aGlzLmNvbnRleHQubG9nZ2VyLmVycm9yKCJFcnJvciBsb2FkaW5nIGxpc3Qtc3R5bGUtaW1hZ2UgIitjKSxbMywxOF07Y2FzZSAxODpyZXR1cm5bMywyMF07Y2FzZSAxOTp3Lmxpc3RWYWx1ZSYmLTEhPT1lLnN0eWxlcy5saXN0U3R5bGVUeXBlJiYoYT10aGlzLmNyZWF0ZUZvbnRTdHlsZShyKVswXSx0aGlzLmN0eC5mb250PWEsdGhpcy5jdHguZmlsbFN0eWxlPWllKHIuY29sb3IpLHRoaXMuY3R4LnRleHRCYXNlbGluZT0ibWlkZGxlIix0aGlzLmN0eC50ZXh0QWxpZ249InJpZ2h0IixnPW5ldyBkKGUuYm91bmRzLmxlZnQsZS5ib3VuZHMudG9wK1VlKGUuc3R5bGVzLnBhZGRpbmdUb3AsZS5ib3VuZHMud2lkdGgpLGUuYm91bmRzLndpZHRoLFllKHIubGluZUhlaWdodCxyLmZvbnRTaXplLm51bWJlcikvMisxKSx0aGlzLnJlbmRlclRleHRXaXRoTGV0dGVyU3BhY2luZyhuZXcgSnIody5saXN0VmFsdWUsZyksci5sZXR0ZXJTcGFjaW5nLFllKHIubGluZUhlaWdodCxyLmZvbnRTaXplLm51bWJlcikvMisyKSx0aGlzLmN0eC50ZXh0QmFzZWxpbmU9ImJvdHRvbSIsdGhpcy5jdHgudGV4dEFsaWduPSJsZWZ0IiksQS5sYWJlbD0yMDtjYXNlIDIwOnJldHVyblsyXX19KX0pfSxEcy5wcm90b3R5cGUucmVuZGVyU3RhY2tDb250ZW50PWZ1bmN0aW9uKEMpe3JldHVybiBhKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciBlLHQscixCLG4scyxvLGksUSxjLGEsZyx3LFUsbDtyZXR1cm4gSCh0aGlzLGZ1bmN0aW9uKEEpe3N3aXRjaChBLmxhYmVsKXtjYXNlIDA6cmV0dXJuIFB0KEMuZWxlbWVudC5jb250YWluZXIuZmxhZ3MsMTYpLFs0LHRoaXMucmVuZGVyTm9kZUJhY2tncm91bmRBbmRCb3JkZXJzKEMuZWxlbWVudCldO2Nhc2UgMTpBLnNlbnQoKSxlPTAsdD1DLm5lZ2F0aXZlWkluZGV4LEEubGFiZWw9MjtjYXNlIDI6cmV0dXJuIGU8dC5sZW5ndGg/KGw9dFtlXSxbNCx0aGlzLnJlbmRlclN0YWNrKGwpXSk6WzMsNV07Y2FzZSAzOkEuc2VudCgpLEEubGFiZWw9NDtjYXNlIDQ6cmV0dXJuIGUrKyxbMywyXTtjYXNlIDU6cmV0dXJuWzQsdGhpcy5yZW5kZXJOb2RlQ29udGVudChDLmVsZW1lbnQpXTtjYXNlIDY6QS5zZW50KCkscj0wLEI9Qy5ub25JbmxpbmVMZXZlbCxBLmxhYmVsPTc7Y2FzZSA3OnJldHVybiByPEIubGVuZ3RoPyhsPUJbcl0sWzQsdGhpcy5yZW5kZXJOb2RlKGwpXSk6WzMsMTBdO2Nhc2UgODpBLnNlbnQoKSxBLmxhYmVsPTk7Y2FzZSA5OnJldHVybiByKyssWzMsN107Y2FzZSAxMDpuPTAscz1DLm5vblBvc2l0aW9uZWRGbG9hdHMsQS5sYWJlbD0xMTtjYXNlIDExOnJldHVybiBuPHMubGVuZ3RoPyhsPXNbbl0sWzQsdGhpcy5yZW5kZXJTdGFjayhsKV0pOlszLDE0XTtjYXNlIDEyOkEuc2VudCgpLEEubGFiZWw9MTM7Y2FzZSAxMzpyZXR1cm4gbisrLFszLDExXTtjYXNlIDE0Om89MCxpPUMubm9uUG9zaXRpb25lZElubGluZUxldmVsLEEubGFiZWw9MTU7Y2FzZSAxNTpyZXR1cm4gbzxpLmxlbmd0aD8obD1pW29dLFs0LHRoaXMucmVuZGVyU3RhY2sobCldKTpbMywxOF07Y2FzZSAxNjpBLnNlbnQoKSxBLmxhYmVsPTE3O2Nhc2UgMTc6cmV0dXJuIG8rKyxbMywxNV07Y2FzZSAxODpRPTAsYz1DLmlubGluZUxldmVsLEEubGFiZWw9MTk7Y2FzZSAxOTpyZXR1cm4gUTxjLmxlbmd0aD8obD1jW1FdLFs0LHRoaXMucmVuZGVyTm9kZShsKV0pOlszLDIyXTtjYXNlIDIwOkEuc2VudCgpLEEubGFiZWw9MjE7Y2FzZSAyMTpyZXR1cm4gUSsrLFszLDE5XTtjYXNlIDIyOmE9MCxnPUMuemVyb09yQXV0b1pJbmRleE9yVHJhbnNmb3JtZWRPck9wYWNpdHksQS5sYWJlbD0yMztjYXNlIDIzOnJldHVybiBhPGcubGVuZ3RoPyhsPWdbYV0sWzQsdGhpcy5yZW5kZXJTdGFjayhsKV0pOlszLDI2XTtjYXNlIDI0OkEuc2VudCgpLEEubGFiZWw9MjU7Y2FzZSAyNTpyZXR1cm4gYSsrLFszLDIzXTtjYXNlIDI2Onc9MCxVPUMucG9zaXRpdmVaSW5kZXgsQS5sYWJlbD0yNztjYXNlIDI3OnJldHVybiB3PFUubGVuZ3RoPyhsPVVbd10sWzQsdGhpcy5yZW5kZXJTdGFjayhsKV0pOlszLDMwXTtjYXNlIDI4OkEuc2VudCgpLEEubGFiZWw9Mjk7Y2FzZSAyOTpyZXR1cm4gdysrLFszLDI3XTtjYXNlIDMwOnJldHVyblsyXX19KX0pfSxEcy5wcm90b3R5cGUubWFzaz1mdW5jdGlvbihBKXt0aGlzLmN0eC5iZWdpblBhdGgoKSx0aGlzLmN0eC5tb3ZlVG8oMCwwKSx0aGlzLmN0eC5saW5lVG8odGhpcy5jYW52YXMud2lkdGgsMCksdGhpcy5jdHgubGluZVRvKHRoaXMuY2FudmFzLndpZHRoLHRoaXMuY2FudmFzLmhlaWdodCksdGhpcy5jdHgubGluZVRvKDAsdGhpcy5jYW52YXMuaGVpZ2h0KSx0aGlzLmN0eC5saW5lVG8oMCwwKSx0aGlzLmZvcm1hdFBhdGgoQS5zbGljZSgwKS5yZXZlcnNlKCkpLHRoaXMuY3R4LmNsb3NlUGF0aCgpfSxEcy5wcm90b3R5cGUucGF0aD1mdW5jdGlvbihBKXt0aGlzLmN0eC5iZWdpblBhdGgoKSx0aGlzLmZvcm1hdFBhdGgoQSksdGhpcy5jdHguY2xvc2VQYXRoKCl9LERzLnByb3RvdHlwZS5mb3JtYXRQYXRoPWZ1bmN0aW9uKEEpe3ZhciByPXRoaXM7QS5mb3JFYWNoKGZ1bmN0aW9uKEEsZSl7dmFyIHQ9JG4oQSk/QS5zdGFydDpBOzA9PT1lP3IuY3R4Lm1vdmVUbyh0LngsdC55KTpyLmN0eC5saW5lVG8odC54LHQueSksJG4oQSkmJnIuY3R4LmJlemllckN1cnZlVG8oQS5zdGFydENvbnRyb2wueCxBLnN0YXJ0Q29udHJvbC55LEEuZW5kQ29udHJvbC54LEEuZW5kQ29udHJvbC55LEEuZW5kLngsQS5lbmQueSl9KX0sRHMucHJvdG90eXBlLnJlbmRlclJlcGVhdD1mdW5jdGlvbihBLGUsdCxyKXt0aGlzLnBhdGgoQSksdGhpcy5jdHguZmlsbFN0eWxlPWUsdGhpcy5jdHgudHJhbnNsYXRlKHQsciksdGhpcy5jdHguZmlsbCgpLHRoaXMuY3R4LnRyYW5zbGF0ZSgtdCwtcil9LERzLnByb3RvdHlwZS5yZXNpemVJbWFnZT1mdW5jdGlvbihBLGUsdCl7aWYoQS53aWR0aD09PWUmJkEuaGVpZ2h0PT09dClyZXR1cm4gQTt2YXIgcj0obnVsbCE9PShyPXRoaXMuY2FudmFzLm93bmVyRG9jdW1lbnQpJiZ2b2lkIDAhPT1yP3I6ZG9jdW1lbnQpLmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpO3JldHVybiByLndpZHRoPU1hdGgubWF4KDEsZSksci5oZWlnaHQ9TWF0aC5tYXgoMSx0KSxyLmdldENvbnRleHQoIjJkIikuZHJhd0ltYWdlKEEsMCwwLEEud2lkdGgsQS5oZWlnaHQsMCwwLGUsdCkscn0sRHMucHJvdG90eXBlLnJlbmRlckJhY2tncm91bmRJbWFnZT1mdW5jdGlvbihmKXtyZXR1cm4gYSh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgaCxlLGQsdCxyLEI7cmV0dXJuIEgodGhpcyxmdW5jdGlvbihBKXtzd2l0Y2goQS5sYWJlbCl7Y2FzZSAwOmg9Zi5zdHlsZXMuYmFja2dyb3VuZEltYWdlLmxlbmd0aC0xLGU9ZnVuY3Rpb24oZSl7dmFyIHQscixCLG4scyxvLGksUSxjLGEsZyx3LFUsbCxDLHUsRjtyZXR1cm4gSCh0aGlzLGZ1bmN0aW9uKEEpe3N3aXRjaChBLmxhYmVsKXtjYXNlIDA6aWYoMCE9PWUudHlwZSlyZXR1cm5bMyw1XTt0PXZvaWQgMCxyPWUudXJsLEEubGFiZWw9MTtjYXNlIDE6cmV0dXJuIEEudHJ5cy5wdXNoKFsxLDMsLDRdKSxbNCxkLmNvbnRleHQuY2FjaGUubWF0Y2gocildO2Nhc2UgMjpyZXR1cm4gdD1BLnNlbnQoKSxbMyw0XTtjYXNlIDM6cmV0dXJuIEEuc2VudCgpLGQuY29udGV4dC5sb2dnZXIuZXJyb3IoIkVycm9yIGxvYWRpbmcgYmFja2dyb3VuZC1pbWFnZSAiK3IpLFszLDRdO2Nhc2UgNDpyZXR1cm4gdCYmKEI9Q3MoZixoLFt0LndpZHRoLHQuaGVpZ2h0LHQud2lkdGgvdC5oZWlnaHRdKSxvPUJbMF0sZz1CWzFdLHc9QlsyXSxjPUJbM10sYT1CWzRdLHM9ZC5jdHguY3JlYXRlUGF0dGVybihkLnJlc2l6ZUltYWdlKHQsYyxhKSwicmVwZWF0IiksZC5yZW5kZXJSZXBlYXQobyxzLGcsdykpLFszLDZdO2Nhc2UgNToxPT09ZS50eXBlPyhGPUNzKGYsaCxbbnVsbCxudWxsLG51bGxdKSxvPUZbMF0sZz1GWzFdLHc9RlsyXSxjPUZbM10sYT1GWzRdLEM9RWUoZS5hbmdsZSxjLGEpLGw9Q1swXSxCPUNbMV0saT1DWzJdLHU9Q1szXSxRPUNbNF0sKEY9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiY2FudmFzIikpLndpZHRoPWMsRi5oZWlnaHQ9YSxDPUYuZ2V0Q29udGV4dCgiMmQiKSxuPUMuY3JlYXRlTGluZWFyR3JhZGllbnQoQix1LGksUSkscGUoZS5zdG9wcyxsKS5mb3JFYWNoKGZ1bmN0aW9uKEEpe3JldHVybiBuLmFkZENvbG9yU3RvcChBLnN0b3AsaWUoQS5jb2xvcikpfSksQy5maWxsU3R5bGU9bixDLmZpbGxSZWN0KDAsMCxjLGEpLDA8YyYmMDxhJiYocz1kLmN0eC5jcmVhdGVQYXR0ZXJuKEYsInJlcGVhdCIpLGQucmVuZGVyUmVwZWF0KG8scyxnLHcpKSk6Mj09PWUudHlwZSYmKHU9Q3MoZixoLFtudWxsLG51bGwsbnVsbF0pLG89dVswXSxpPXVbMV0sUT11WzJdLGM9dVszXSxhPXVbNF0sbD0wPT09ZS5wb3NpdGlvbi5sZW5ndGg/W2dlXTplLnBvc2l0aW9uLGc9VWUobFswXSxjKSx3PVVlKGxbbC5sZW5ndGgtMV0sYSksQz1mdW5jdGlvbihBLGUsdCxyLEIpe3ZhciBuLHMsbyxpLFE9MCxjPTA7c3dpdGNoKEEuc2l6ZSl7Y2FzZSAwOjA9PT1BLnNoYXBlP1E9Yz1NYXRoLm1pbihNYXRoLmFicyhlKSxNYXRoLmFicyhlLXIpLE1hdGguYWJzKHQpLE1hdGguYWJzKHQtQikpOjE9PT1BLnNoYXBlJiYoUT1NYXRoLm1pbihNYXRoLmFicyhlKSxNYXRoLmFicyhlLXIpKSxjPU1hdGgubWluKE1hdGguYWJzKHQpLE1hdGguYWJzKHQtQikpKTticmVhaztjYXNlIDI6MD09PUEuc2hhcGU/UT1jPU1hdGgubWluKEllKGUsdCksSWUoZSx0LUIpLEllKGUtcix0KSxJZShlLXIsdC1CKSk6MT09PUEuc2hhcGUmJihuPU1hdGgubWluKE1hdGguYWJzKHQpLE1hdGguYWJzKHQtQikpL01hdGgubWluKE1hdGguYWJzKGUpLE1hdGguYWJzKGUtcikpLG89KHM9eWUocixCLGUsdCwhMCkpWzBdLGk9c1sxXSxjPW4qKFE9SWUoby1lLChpLXQpL24pKSk7YnJlYWs7Y2FzZSAxOjA9PT1BLnNoYXBlP1E9Yz1NYXRoLm1heChNYXRoLmFicyhlKSxNYXRoLmFicyhlLXIpLE1hdGguYWJzKHQpLE1hdGguYWJzKHQtQikpOjE9PT1BLnNoYXBlJiYoUT1NYXRoLm1heChNYXRoLmFicyhlKSxNYXRoLmFicyhlLXIpKSxjPU1hdGgubWF4KE1hdGguYWJzKHQpLE1hdGguYWJzKHQtQikpKTticmVhaztjYXNlIDM6MD09PUEuc2hhcGU/UT1jPU1hdGgubWF4KEllKGUsdCksSWUoZSx0LUIpLEllKGUtcix0KSxJZShlLXIsdC1CKSk6MT09PUEuc2hhcGUmJihuPU1hdGgubWF4KE1hdGguYWJzKHQpLE1hdGguYWJzKHQtQikpL01hdGgubWF4KE1hdGguYWJzKGUpLE1hdGguYWJzKGUtcikpLG89KHM9eWUocixCLGUsdCwhMSkpWzBdLGk9c1sxXSxjPW4qKFE9SWUoby1lLChpLXQpL24pKSl9cmV0dXJuIEFycmF5LmlzQXJyYXkoQS5zaXplKSYmKFE9VWUoQS5zaXplWzBdLHIpLGM9Mj09PUEuc2l6ZS5sZW5ndGg/VWUoQS5zaXplWzFdLEIpOlEpLFtRLGNdfShlLGcsdyxjLGEpLEY9Q1swXSx1PUNbMV0sMDxGJiYwPHUmJihVPWQuY3R4LmNyZWF0ZVJhZGlhbEdyYWRpZW50KGkrZyxRK3csMCxpK2csUSt3LEYpLHBlKGUuc3RvcHMsMipGKS5mb3JFYWNoKGZ1bmN0aW9uKEEpe3JldHVybiBVLmFkZENvbG9yU3RvcChBLnN0b3AsaWUoQS5jb2xvcikpfSksZC5wYXRoKG8pLGQuY3R4LmZpbGxTdHlsZT1VLEYhPT11PyhsPWYuYm91bmRzLmxlZnQrLjUqZi5ib3VuZHMud2lkdGgsQz1mLmJvdW5kcy50b3ArLjUqZi5ib3VuZHMuaGVpZ2h0LEY9MS8odT11L0YpLGQuY3R4LnNhdmUoKSxkLmN0eC50cmFuc2xhdGUobCxDKSxkLmN0eC50cmFuc2Zvcm0oMSwwLDAsdSwwLDApLGQuY3R4LnRyYW5zbGF0ZSgtbCwtQyksZC5jdHguZmlsbFJlY3QoaSxGKihRLUMpK0MsYyxhKkYpLGQuY3R4LnJlc3RvcmUoKSk6ZC5jdHguZmlsbCgpKSksQS5sYWJlbD02O2Nhc2UgNjpyZXR1cm4gaC0tLFsyXX19KX0sZD10aGlzLHQ9MCxyPWYuc3R5bGVzLmJhY2tncm91bmRJbWFnZS5zbGljZSgwKS5yZXZlcnNlKCksQS5sYWJlbD0xO2Nhc2UgMTpyZXR1cm4gdDxyLmxlbmd0aD8oQj1yW3RdLFs1LGUoQildKTpbMyw0XTtjYXNlIDI6QS5zZW50KCksQS5sYWJlbD0zO2Nhc2UgMzpyZXR1cm4gdCsrLFszLDFdO2Nhc2UgNDpyZXR1cm5bMl19fSl9KX0sRHMucHJvdG90eXBlLnJlbmRlclNvbGlkQm9yZGVyPWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gYSh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXtyZXR1cm4gSCh0aGlzLGZ1bmN0aW9uKEEpe3JldHVybiB0aGlzLnBhdGgod3Mocix0KSksdGhpcy5jdHguZmlsbFN0eWxlPWllKGUpLHRoaXMuY3R4LmZpbGwoKSxbMl19KX0pfSxEcy5wcm90b3R5cGUucmVuZGVyRG91YmxlQm9yZGVyPWZ1bmN0aW9uKHQscixCLG4pe3JldHVybiBhKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciBlO3JldHVybiBIKHRoaXMsZnVuY3Rpb24oQSl7c3dpdGNoKEEubGFiZWwpe2Nhc2UgMDpyZXR1cm4gcjwzP1s0LHRoaXMucmVuZGVyU29saWRCb3JkZXIodCxCLG4pXTpbMywyXTtjYXNlIDE6cmV0dXJuIEEuc2VudCgpLFsyXTtjYXNlIDI6cmV0dXJuIGU9ZnVuY3Rpb24oQSxlKXtzd2l0Y2goZSl7Y2FzZSAwOnJldHVybiBIcyhBLnRvcExlZnRCb3JkZXJCb3gsQS50b3BMZWZ0Qm9yZGVyRG91YmxlT3V0ZXJCb3gsQS50b3BSaWdodEJvcmRlckJveCxBLnRvcFJpZ2h0Qm9yZGVyRG91YmxlT3V0ZXJCb3gpO2Nhc2UgMTpyZXR1cm4gSHMoQS50b3BSaWdodEJvcmRlckJveCxBLnRvcFJpZ2h0Qm9yZGVyRG91YmxlT3V0ZXJCb3gsQS5ib3R0b21SaWdodEJvcmRlckJveCxBLmJvdHRvbVJpZ2h0Qm9yZGVyRG91YmxlT3V0ZXJCb3gpO2Nhc2UgMjpyZXR1cm4gSHMoQS5ib3R0b21SaWdodEJvcmRlckJveCxBLmJvdHRvbVJpZ2h0Qm9yZGVyRG91YmxlT3V0ZXJCb3gsQS5ib3R0b21MZWZ0Qm9yZGVyQm94LEEuYm90dG9tTGVmdEJvcmRlckRvdWJsZU91dGVyQm94KTtkZWZhdWx0OnJldHVybiBIcyhBLmJvdHRvbUxlZnRCb3JkZXJCb3gsQS5ib3R0b21MZWZ0Qm9yZGVyRG91YmxlT3V0ZXJCb3gsQS50b3BMZWZ0Qm9yZGVyQm94LEEudG9wTGVmdEJvcmRlckRvdWJsZU91dGVyQm94KX19KG4sQiksdGhpcy5wYXRoKGUpLHRoaXMuY3R4LmZpbGxTdHlsZT1pZSh0KSx0aGlzLmN0eC5maWxsKCksZT1mdW5jdGlvbihBLGUpe3N3aXRjaChlKXtjYXNlIDA6cmV0dXJuIEhzKEEudG9wTGVmdEJvcmRlckRvdWJsZUlubmVyQm94LEEudG9wTGVmdFBhZGRpbmdCb3gsQS50b3BSaWdodEJvcmRlckRvdWJsZUlubmVyQm94LEEudG9wUmlnaHRQYWRkaW5nQm94KTtjYXNlIDE6cmV0dXJuIEhzKEEudG9wUmlnaHRCb3JkZXJEb3VibGVJbm5lckJveCxBLnRvcFJpZ2h0UGFkZGluZ0JveCxBLmJvdHRvbVJpZ2h0Qm9yZGVyRG91YmxlSW5uZXJCb3gsQS5ib3R0b21SaWdodFBhZGRpbmdCb3gpO2Nhc2UgMjpyZXR1cm4gSHMoQS5ib3R0b21SaWdodEJvcmRlckRvdWJsZUlubmVyQm94LEEuYm90dG9tUmlnaHRQYWRkaW5nQm94LEEuYm90dG9tTGVmdEJvcmRlckRvdWJsZUlubmVyQm94LEEuYm90dG9tTGVmdFBhZGRpbmdCb3gpO2RlZmF1bHQ6cmV0dXJuIEhzKEEuYm90dG9tTGVmdEJvcmRlckRvdWJsZUlubmVyQm94LEEuYm90dG9tTGVmdFBhZGRpbmdCb3gsQS50b3BMZWZ0Qm9yZGVyRG91YmxlSW5uZXJCb3gsQS50b3BMZWZ0UGFkZGluZ0JveCl9fShuLEIpLHRoaXMucGF0aChlKSx0aGlzLmN0eC5maWxsKCksWzJdfX0pfSl9LERzLnByb3RvdHlwZS5yZW5kZXJOb2RlQmFja2dyb3VuZEFuZEJvcmRlcnM9ZnVuY3Rpb24oYyl7cmV0dXJuIGEodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIGUsdCxyLEIsbixzLG8saSxRPXRoaXM7cmV0dXJuIEgodGhpcyxmdW5jdGlvbihBKXtzd2l0Y2goQS5sYWJlbCl7Y2FzZSAwOnJldHVybih0aGlzLmFwcGx5RWZmZWN0cyhjLmdldEVmZmVjdHMoMikpLGU9Yy5jb250YWluZXIuc3R5bGVzLHQ9IW9lKGUuYmFja2dyb3VuZENvbG9yKXx8ZS5iYWNrZ3JvdW5kSW1hZ2UubGVuZ3RoLHI9W3tzdHlsZTplLmJvcmRlclRvcFN0eWxlLGNvbG9yOmUuYm9yZGVyVG9wQ29sb3Isd2lkdGg6ZS5ib3JkZXJUb3BXaWR0aH0se3N0eWxlOmUuYm9yZGVyUmlnaHRTdHlsZSxjb2xvcjplLmJvcmRlclJpZ2h0Q29sb3Isd2lkdGg6ZS5ib3JkZXJSaWdodFdpZHRofSx7c3R5bGU6ZS5ib3JkZXJCb3R0b21TdHlsZSxjb2xvcjplLmJvcmRlckJvdHRvbUNvbG9yLHdpZHRoOmUuYm9yZGVyQm90dG9tV2lkdGh9LHtzdHlsZTplLmJvcmRlckxlZnRTdHlsZSxjb2xvcjplLmJvcmRlckxlZnRDb2xvcix3aWR0aDplLmJvcmRlckxlZnRXaWR0aH1dLEI9TXMoRXMoZS5iYWNrZ3JvdW5kQ2xpcCwwKSxjLmN1cnZlcyksdHx8ZS5ib3hTaGFkb3cubGVuZ3RoKT8odGhpcy5jdHguc2F2ZSgpLHRoaXMucGF0aChCKSx0aGlzLmN0eC5jbGlwKCksb2UoZS5iYWNrZ3JvdW5kQ29sb3IpfHwodGhpcy5jdHguZmlsbFN0eWxlPWllKGUuYmFja2dyb3VuZENvbG9yKSx0aGlzLmN0eC5maWxsKCkpLFs0LHRoaXMucmVuZGVyQmFja2dyb3VuZEltYWdlKGMuY29udGFpbmVyKV0pOlszLDJdO2Nhc2UgMTpBLnNlbnQoKSx0aGlzLmN0eC5yZXN0b3JlKCksZS5ib3hTaGFkb3cuc2xpY2UoMCkucmV2ZXJzZSgpLmZvckVhY2goZnVuY3Rpb24oQSl7US5jdHguc2F2ZSgpO3ZhciB0LHIsQixuLGU9dHMoYy5jdXJ2ZXMpLHM9QS5pbnNldD8wOjFlNCxvPSh0PS1zKyhBLmluc2V0PzE6LTEpKkEuc3ByZWFkLm51bWJlcixyPShBLmluc2V0PzE6LTEpKkEuc3ByZWFkLm51bWJlcixCPUEuc3ByZWFkLm51bWJlciooQS5pbnNldD8tMjoyKSxuPUEuc3ByZWFkLm51bWJlciooQS5pbnNldD8tMjoyKSxlLm1hcChmdW5jdGlvbihBLGUpe3N3aXRjaChlKXtjYXNlIDA6cmV0dXJuIEEuYWRkKHQscik7Y2FzZSAxOnJldHVybiBBLmFkZCh0K0Iscik7Y2FzZSAyOnJldHVybiBBLmFkZCh0K0IscituKTtjYXNlIDM6cmV0dXJuIEEuYWRkKHQscituKX1yZXR1cm4gQX0pKTtBLmluc2V0PyhRLnBhdGgoZSksUS5jdHguY2xpcCgpLFEubWFzayhvKSk6KFEubWFzayhlKSxRLmN0eC5jbGlwKCksUS5wYXRoKG8pKSxRLmN0eC5zaGFkb3dPZmZzZXRYPUEub2Zmc2V0WC5udW1iZXIrcyxRLmN0eC5zaGFkb3dPZmZzZXRZPUEub2Zmc2V0WS5udW1iZXIsUS5jdHguc2hhZG93Q29sb3I9aWUoQS5jb2xvciksUS5jdHguc2hhZG93Qmx1cj1BLmJsdXIubnVtYmVyLFEuY3R4LmZpbGxTdHlsZT1BLmluc2V0P2llKEEuY29sb3IpOiJyZ2JhKDAsMCwwLDEpIixRLmN0eC5maWxsKCksUS5jdHgucmVzdG9yZSgpfSksQS5sYWJlbD0yO2Nhc2UgMjpzPW49MCxvPXIsQS5sYWJlbD0zO2Nhc2UgMzpyZXR1cm4gczxvLmxlbmd0aD8wIT09KGk9b1tzXSkuc3R5bGUmJiFvZShpLmNvbG9yKSYmMDxpLndpZHRoPzIhPT1pLnN0eWxlP1szLDVdOls0LHRoaXMucmVuZGVyRGFzaGVkRG90dGVkQm9yZGVyKGkuY29sb3IsaS53aWR0aCxuLGMuY3VydmVzLDIpXTpbMywxMV06WzMsMTNdO2Nhc2UgNDpyZXR1cm4gQS5zZW50KCksWzMsMTFdO2Nhc2UgNTpyZXR1cm4gMyE9PWkuc3R5bGU/WzMsN106WzQsdGhpcy5yZW5kZXJEYXNoZWREb3R0ZWRCb3JkZXIoaS5jb2xvcixpLndpZHRoLG4sYy5jdXJ2ZXMsMyldO2Nhc2UgNjpyZXR1cm4gQS5zZW50KCksWzMsMTFdO2Nhc2UgNzpyZXR1cm4gNCE9PWkuc3R5bGU/WzMsOV06WzQsdGhpcy5yZW5kZXJEb3VibGVCb3JkZXIoaS5jb2xvcixpLndpZHRoLG4sYy5jdXJ2ZXMpXTtjYXNlIDg6cmV0dXJuIEEuc2VudCgpLFszLDExXTtjYXNlIDk6cmV0dXJuWzQsdGhpcy5yZW5kZXJTb2xpZEJvcmRlcihpLmNvbG9yLG4sYy5jdXJ2ZXMpXTtjYXNlIDEwOkEuc2VudCgpLEEubGFiZWw9MTE7Y2FzZSAxMTpuKyssQS5sYWJlbD0xMjtjYXNlIDEyOnJldHVybiBzKyssWzMsM107Y2FzZSAxMzpyZXR1cm5bMl19fSl9KX0sRHMucHJvdG90eXBlLnJlbmRlckRhc2hlZERvdHRlZEJvcmRlcj1mdW5jdGlvbihnLHcsVSxsLEMpe3JldHVybiBhKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciBlLHQscixCLG4scyxvLGksUSxjLGE7cmV0dXJuIEgodGhpcyxmdW5jdGlvbihBKXtyZXR1cm4gdGhpcy5jdHguc2F2ZSgpLFE9ZnVuY3Rpb24oQSxlKXtzd2l0Y2goZSl7Y2FzZSAwOnJldHVybiBmcyhBLnRvcExlZnRCb3JkZXJTdHJva2UsQS50b3BSaWdodEJvcmRlclN0cm9rZSk7Y2FzZSAxOnJldHVybiBmcyhBLnRvcFJpZ2h0Qm9yZGVyU3Ryb2tlLEEuYm90dG9tUmlnaHRCb3JkZXJTdHJva2UpO2Nhc2UgMjpyZXR1cm4gZnMoQS5ib3R0b21SaWdodEJvcmRlclN0cm9rZSxBLmJvdHRvbUxlZnRCb3JkZXJTdHJva2UpO2RlZmF1bHQ6cmV0dXJuIGZzKEEuYm90dG9tTGVmdEJvcmRlclN0cm9rZSxBLnRvcExlZnRCb3JkZXJTdHJva2UpfX0obCxVKSxlPXdzKGwsVSksMj09PUMmJih0aGlzLnBhdGgoZSksdGhpcy5jdHguY2xpcCgpKSxzPSRuKGVbMF0pPyh0PWVbMF0uc3RhcnQueCxlWzBdLnN0YXJ0LnkpOih0PWVbMF0ueCxlWzBdLnkpLG89JG4oZVsxXSk/KHI9ZVsxXS5lbmQueCxlWzFdLmVuZC55KToocj1lWzFdLngsZVsxXS55KSxCPTA9PT1VfHwyPT09VT9NYXRoLmFicyh0LXIpOk1hdGguYWJzKHMtbyksdGhpcy5jdHguYmVnaW5QYXRoKCksMz09PUM/dGhpcy5mb3JtYXRQYXRoKFEpOnRoaXMuZm9ybWF0UGF0aChlLnNsaWNlKDAsMikpLG49dzwzPzMqdzoyKncscz13PDM/Mip3OncsMz09PUMmJihzPW49dyksbz0hMCxCPD0yKm4/bz0hMTpCPD0yKm4rcz8obio9aT1CLygyKm4rcykscyo9aSk6KFE9TWF0aC5mbG9vcigoQitzKS8obitzKSksaT0oQi1RKm4pLyhRLTEpLHM9KFE9KEItKFErMSkqbikvUSk8PTB8fE1hdGguYWJzKHMtaSk8TWF0aC5hYnMocy1RKT9pOlEpLG8mJigzPT09Qz90aGlzLmN0eC5zZXRMaW5lRGFzaChbMCxuK3NdKTp0aGlzLmN0eC5zZXRMaW5lRGFzaChbbixzXSkpLDM9PT1DPyh0aGlzLmN0eC5saW5lQ2FwPSJyb3VuZCIsdGhpcy5jdHgubGluZVdpZHRoPXcpOnRoaXMuY3R4LmxpbmVXaWR0aD0yKncrMS4xLHRoaXMuY3R4LnN0cm9rZVN0eWxlPWllKGcpLHRoaXMuY3R4LnN0cm9rZSgpLHRoaXMuY3R4LnNldExpbmVEYXNoKFtdKSwyPT09QyYmKCRuKGVbMF0pJiYoYz1lWzNdLGE9ZVswXSx0aGlzLmN0eC5iZWdpblBhdGgoKSx0aGlzLmZvcm1hdFBhdGgoW25ldyBabihjLmVuZC54LGMuZW5kLnkpLG5ldyBabihhLnN0YXJ0LngsYS5zdGFydC55KV0pLHRoaXMuY3R4LnN0cm9rZSgpKSwkbihlWzFdKSYmKGM9ZVsxXSxhPWVbMl0sdGhpcy5jdHguYmVnaW5QYXRoKCksdGhpcy5mb3JtYXRQYXRoKFtuZXcgWm4oYy5lbmQueCxjLmVuZC55KSxuZXcgWm4oYS5zdGFydC54LGEuc3RhcnQueSldKSx0aGlzLmN0eC5zdHJva2UoKSkpLHRoaXMuY3R4LnJlc3RvcmUoKSxbMl19KX0pfSxEcy5wcm90b3R5cGUucmVuZGVyPWZ1bmN0aW9uKEIpe3JldHVybiBhKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3JldHVybiBIKHRoaXMsZnVuY3Rpb24oQSl7c3dpdGNoKEEubGFiZWwpe2Nhc2UgMDpyZXR1cm4gdGhpcy5vcHRpb25zLmJhY2tncm91bmRDb2xvciYmKHRoaXMuY3R4LmZpbGxTdHlsZT1pZSh0aGlzLm9wdGlvbnMuYmFja2dyb3VuZENvbG9yKSx0aGlzLmN0eC5maWxsUmVjdCh0aGlzLm9wdGlvbnMueCx0aGlzLm9wdGlvbnMueSx0aGlzLm9wdGlvbnMud2lkdGgsdGhpcy5vcHRpb25zLmhlaWdodCkpLHQ9bmV3IGFzKGU9QixudWxsKSxyPW5ldyBjcyh0KSxocyh0LHIscixlPVtdKSxkcyh0LmNvbnRhaW5lcixlKSxbNCx0aGlzLnJlbmRlclN0YWNrKHIpXTtjYXNlIDE6cmV0dXJuIEEuc2VudCgpLHRoaXMuYXBwbHlFZmZlY3RzKFtdKSxbMix0aGlzLmNhbnZhc119dmFyIGUsdCxyfSl9KX0sRHMpO2Z1bmN0aW9uIERzKEEsZSl7QT1Mcy5jYWxsKHRoaXMsQSxlKXx8dGhpcztyZXR1cm4gQS5fYWN0aXZlRWZmZWN0cz1bXSxBLmNhbnZhcz1lLmNhbnZhc3x8ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiY2FudmFzIiksQS5jdHg9QS5jYW52YXMuZ2V0Q29udGV4dCgiMmQiKSxlLmNhbnZhc3x8KEEuY2FudmFzLndpZHRoPU1hdGguZmxvb3IoZS53aWR0aCplLnNjYWxlKSxBLmNhbnZhcy5oZWlnaHQ9TWF0aC5mbG9vcihlLmhlaWdodCplLnNjYWxlKSxBLmNhbnZhcy5zdHlsZS53aWR0aD1lLndpZHRoKyJweCIsQS5jYW52YXMuc3R5bGUuaGVpZ2h0PWUuaGVpZ2h0KyJweCIpLEEuZm9udE1ldHJpY3M9bmV3IEtzKGRvY3VtZW50KSxBLmN0eC5zY2FsZShBLm9wdGlvbnMuc2NhbGUsQS5vcHRpb25zLnNjYWxlKSxBLmN0eC50cmFuc2xhdGUoLWUueCwtZS55KSxBLmN0eC50ZXh0QmFzZWxpbmU9ImJvdHRvbSIsQS5fYWN0aXZlRWZmZWN0cz1bXSxBLmNvbnRleHQubG9nZ2VyLmRlYnVnKCJDYW52YXMgcmVuZGVyZXIgaW5pdGlhbGl6ZWQgKCIrZS53aWR0aCsieCIrZS5oZWlnaHQrIikgd2l0aCBzY2FsZSAiK2Uuc2NhbGUpLEF9dmFyIHZzLHhzPWZ1bmN0aW9uKEEpe3JldHVybiBBIGluc3RhbmNlb2YgTEJ8fChBIGluc3RhbmNlb2YgeUJ8fEEgaW5zdGFuY2VvZiBwQiYmQS50eXBlIT09ZEImJkEudHlwZSE9PWhCKX0sTXM9ZnVuY3Rpb24oQSxlKXtzd2l0Y2goQSl7Y2FzZSAwOnJldHVybiB0cyhlKTtjYXNlIDI6cmV0dXJuW2UudG9wTGVmdENvbnRlbnRCb3gsZS50b3BSaWdodENvbnRlbnRCb3gsZS5ib3R0b21SaWdodENvbnRlbnRCb3gsZS5ib3R0b21MZWZ0Q29udGVudEJveF07ZGVmYXVsdDpyZXR1cm4gcnMoZSl9fSxTcz1mdW5jdGlvbihBKXtzd2l0Y2goQSl7Y2FzZSAxOnJldHVybiJjZW50ZXIiO2Nhc2UgMjpyZXR1cm4icmlnaHQiO2RlZmF1bHQ6cmV0dXJuImxlZnQifX0sVHM9WyItYXBwbGUtc3lzdGVtIiwic3lzdGVtLXVpIl0sR3M9ZnVuY3Rpb24oQSl7cmV0dXJuL2lQaG9uZSBPUyAxNV8oMHwxKS8udGVzdCh3aW5kb3cubmF2aWdhdG9yLnVzZXJBZ2VudCk/QS5maWx0ZXIoZnVuY3Rpb24oQSl7cmV0dXJuLTE9PT1Ucy5pbmRleE9mKEEpfSk6QX0sT3M9KEEoVnMsdnM9aGUpLFZzLnByb3RvdHlwZS5yZW5kZXI9ZnVuY3Rpb24odCl7cmV0dXJuIGEodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIGU7cmV0dXJuIEgodGhpcyxmdW5jdGlvbihBKXtzd2l0Y2goQS5sYWJlbCl7Y2FzZSAwOnJldHVybiBlPU5yKHRoaXMub3B0aW9ucy53aWR0aCp0aGlzLm9wdGlvbnMuc2NhbGUsdGhpcy5vcHRpb25zLmhlaWdodCp0aGlzLm9wdGlvbnMuc2NhbGUsdGhpcy5vcHRpb25zLnNjYWxlLHRoaXMub3B0aW9ucy5zY2FsZSx0KSxbNCxrcyhlKV07Y2FzZSAxOnJldHVybiBlPUEuc2VudCgpLHRoaXMub3B0aW9ucy5iYWNrZ3JvdW5kQ29sb3ImJih0aGlzLmN0eC5maWxsU3R5bGU9aWUodGhpcy5vcHRpb25zLmJhY2tncm91bmRDb2xvciksdGhpcy5jdHguZmlsbFJlY3QoMCwwLHRoaXMub3B0aW9ucy53aWR0aCp0aGlzLm9wdGlvbnMuc2NhbGUsdGhpcy5vcHRpb25zLmhlaWdodCp0aGlzLm9wdGlvbnMuc2NhbGUpKSx0aGlzLmN0eC5kcmF3SW1hZ2UoZSwtdGhpcy5vcHRpb25zLngqdGhpcy5vcHRpb25zLnNjYWxlLC10aGlzLm9wdGlvbnMueSp0aGlzLm9wdGlvbnMuc2NhbGUpLFsyLHRoaXMuY2FudmFzXX19KX0pfSxWcyk7ZnVuY3Rpb24gVnMoQSxlKXtBPXZzLmNhbGwodGhpcyxBLGUpfHx0aGlzO3JldHVybiBBLmNhbnZhcz1lLmNhbnZhc3x8ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiY2FudmFzIiksQS5jdHg9QS5jYW52YXMuZ2V0Q29udGV4dCgiMmQiKSxBLm9wdGlvbnM9ZSxBLmNhbnZhcy53aWR0aD1NYXRoLmZsb29yKGUud2lkdGgqZS5zY2FsZSksQS5jYW52YXMuaGVpZ2h0PU1hdGguZmxvb3IoZS5oZWlnaHQqZS5zY2FsZSksQS5jYW52YXMuc3R5bGUud2lkdGg9ZS53aWR0aCsicHgiLEEuY2FudmFzLnN0eWxlLmhlaWdodD1lLmhlaWdodCsicHgiLEEuY3R4LnNjYWxlKEEub3B0aW9ucy5zY2FsZSxBLm9wdGlvbnMuc2NhbGUpLEEuY3R4LnRyYW5zbGF0ZSgtZS54LC1lLnkpLEEuY29udGV4dC5sb2dnZXIuZGVidWcoIkVYUEVSSU1FTlRBTCBGb3JlaWduT2JqZWN0IHJlbmRlcmVyIGluaXRpYWxpemVkICgiK2Uud2lkdGgrIngiK2UuaGVpZ2h0KyIgYXQgIitlLngrIiwiK2UueSsiKSB3aXRoIHNjYWxlICIrZS5zY2FsZSksQX12YXIga3M9ZnVuY3Rpb24ocil7cmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKEEsZSl7dmFyIHQ9bmV3IEltYWdlO3Qub25sb2FkPWZ1bmN0aW9uKCl7QSh0KX0sdC5vbmVycm9yPWUsdC5zcmM9ImRhdGE6aW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PXV0Zi04LCIrZW5jb2RlVVJJQ29tcG9uZW50KChuZXcgWE1MU2VyaWFsaXplcikuc2VyaWFsaXplVG9TdHJpbmcocikpfSl9LFJzPShOcy5wcm90b3R5cGUuZGVidWc9ZnVuY3Rpb24oKXtmb3IodmFyIEE9W10sZT0wO2U8YXJndW1lbnRzLmxlbmd0aDtlKyspQVtlXT1hcmd1bWVudHNbZV07dGhpcy5lbmFibGVkJiYoInVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3cmJndpbmRvdy5jb25zb2xlJiYiZnVuY3Rpb24iPT10eXBlb2YgY29uc29sZS5kZWJ1Zz9jb25zb2xlLmRlYnVnLmFwcGx5KGNvbnNvbGUsdChbdGhpcy5pZCx0aGlzLmdldFRpbWUoKSsibXMiXSxBKSk6dGhpcy5pbmZvLmFwcGx5KHRoaXMsQSkpfSxOcy5wcm90b3R5cGUuZ2V0VGltZT1mdW5jdGlvbigpe3JldHVybiBEYXRlLm5vdygpLXRoaXMuc3RhcnR9LE5zLnByb3RvdHlwZS5pbmZvPWZ1bmN0aW9uKCl7Zm9yKHZhciBBPVtdLGU9MDtlPGFyZ3VtZW50cy5sZW5ndGg7ZSsrKUFbZV09YXJndW1lbnRzW2VdO3RoaXMuZW5hYmxlZCYmInVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3cmJndpbmRvdy5jb25zb2xlJiYiZnVuY3Rpb24iPT10eXBlb2YgY29uc29sZS5pbmZvJiZjb25zb2xlLmluZm8uYXBwbHkoY29uc29sZSx0KFt0aGlzLmlkLHRoaXMuZ2V0VGltZSgpKyJtcyJdLEEpKX0sTnMucHJvdG90eXBlLndhcm49ZnVuY3Rpb24oKXtmb3IodmFyIEE9W10sZT0wO2U8YXJndW1lbnRzLmxlbmd0aDtlKyspQVtlXT1hcmd1bWVudHNbZV07dGhpcy5lbmFibGVkJiYoInVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3cmJndpbmRvdy5jb25zb2xlJiYiZnVuY3Rpb24iPT10eXBlb2YgY29uc29sZS53YXJuP2NvbnNvbGUud2Fybi5hcHBseShjb25zb2xlLHQoW3RoaXMuaWQsdGhpcy5nZXRUaW1lKCkrIm1zIl0sQSkpOnRoaXMuaW5mby5hcHBseSh0aGlzLEEpKX0sTnMucHJvdG90eXBlLmVycm9yPWZ1bmN0aW9uKCl7Zm9yKHZhciBBPVtdLGU9MDtlPGFyZ3VtZW50cy5sZW5ndGg7ZSsrKUFbZV09YXJndW1lbnRzW2VdO3RoaXMuZW5hYmxlZCYmKCJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93JiZ3aW5kb3cuY29uc29sZSYmImZ1bmN0aW9uIj09dHlwZW9mIGNvbnNvbGUuZXJyb3I/Y29uc29sZS5lcnJvci5hcHBseShjb25zb2xlLHQoW3RoaXMuaWQsdGhpcy5nZXRUaW1lKCkrIm1zIl0sQSkpOnRoaXMuaW5mby5hcHBseSh0aGlzLEEpKX0sTnMuaW5zdGFuY2VzPXt9LE5zKTtmdW5jdGlvbiBOcyhBKXt2YXIgZT1BLmlkLEE9QS5lbmFibGVkO3RoaXMuaWQ9ZSx0aGlzLmVuYWJsZWQ9QSx0aGlzLnN0YXJ0PURhdGUubm93KCl9dmFyIFBzPShYcy5pbnN0YW5jZUNvdW50PTEsWHMpO2Z1bmN0aW9uIFhzKEEsZSl7dGhpcy53aW5kb3dCb3VuZHM9ZSx0aGlzLmluc3RhbmNlTmFtZT0iIyIrWHMuaW5zdGFuY2VDb3VudCsrLHRoaXMubG9nZ2VyPW5ldyBScyh7aWQ6dGhpcy5pbnN0YW5jZU5hbWUsZW5hYmxlZDpBLmxvZ2dpbmd9KSx0aGlzLmNhY2hlPW51bGwhPT0oZT1BLmNhY2hlKSYmdm9pZCAwIT09ZT9lOm5ldyBPbih0aGlzLEEpfSJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93JiZUbi5zZXRDb250ZXh0KHdpbmRvdyk7dmFyIEpzPWZ1bmN0aW9uKHUsRil7cmV0dXJuIGEodm9pZCAwLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgZSx0LHIsQixuLHMsbyxpLFEsYyxhLGcsdyxVLGwsQztyZXR1cm4gSCh0aGlzLGZ1bmN0aW9uKEEpe3N3aXRjaChBLmxhYmVsKXtjYXNlIDA6aWYoIXV8fCJvYmplY3QiIT10eXBlb2YgdSlyZXR1cm5bMixQcm9taXNlLnJlamVjdCgiSW52YWxpZCBlbGVtZW50IHByb3ZpZGVkIGFzIGZpcnN0IGFyZ3VtZW50IildO2lmKCEoZT11Lm93bmVyRG9jdW1lbnQpKXRocm93IG5ldyBFcnJvcigiRWxlbWVudCBpcyBub3QgYXR0YWNoZWQgdG8gYSBEb2N1bWVudCIpO2lmKCEodD1lLmRlZmF1bHRWaWV3KSl0aHJvdyBuZXcgRXJyb3IoIkRvY3VtZW50IGlzIG5vdCBhdHRhY2hlZCB0byBhIFdpbmRvdyIpO3JldHVybiB3PXthbGxvd1RhaW50Om51bGwhPT0oVT1GLmFsbG93VGFpbnQpJiZ2b2lkIDAhPT1VJiZVLGltYWdlVGltZW91dDpudWxsIT09KGM9Ri5pbWFnZVRpbWVvdXQpJiZ2b2lkIDAhPT1jP2M6MTVlMyxwcm94eTpGLnByb3h5LHVzZUNPUlM6bnVsbCE9PShhPUYudXNlQ09SUykmJnZvaWQgMCE9PWEmJmF9LFU9aCh7bG9nZ2luZzpudWxsPT09KGc9Ri5sb2dnaW5nKXx8dm9pZCAwPT09Z3x8ZyxjYWNoZTpGLmNhY2hlfSx3KSxjPXt3aW5kb3dXaWR0aDpudWxsIT09KGM9Ri53aW5kb3dXaWR0aCkmJnZvaWQgMCE9PWM/Yzp0LmlubmVyV2lkdGgsd2luZG93SGVpZ2h0Om51bGwhPT0oYT1GLndpbmRvd0hlaWdodCkmJnZvaWQgMCE9PWE/YTp0LmlubmVySGVpZ2h0LHNjcm9sbFg6bnVsbCE9PShnPUYuc2Nyb2xsWCkmJnZvaWQgMCE9PWc/Zzp0LnBhZ2VYT2Zmc2V0LHNjcm9sbFk6bnVsbCE9PSh3PUYuc2Nyb2xsWSkmJnZvaWQgMCE9PXc/dzp0LnBhZ2VZT2Zmc2V0fSxhPW5ldyBkKGMuc2Nyb2xsWCxjLnNjcm9sbFksYy53aW5kb3dXaWR0aCxjLndpbmRvd0hlaWdodCksZz1uZXcgUHMoVSxhKSxjPW51bGwhPT0odz1GLmZvcmVpZ25PYmplY3RSZW5kZXJpbmcpJiZ2b2lkIDAhPT13JiZ3LHc9e2FsbG93VGFpbnQ6bnVsbCE9PShVPUYuYWxsb3dUYWludCkmJnZvaWQgMCE9PVUmJlUsb25jbG9uZTpGLm9uY2xvbmUsaWdub3JlRWxlbWVudHM6Ri5pZ25vcmVFbGVtZW50cyxpbmxpbmVJbWFnZXM6Yyxjb3B5U3R5bGVzOmN9LGcubG9nZ2VyLmRlYnVnKCJTdGFydGluZyBkb2N1bWVudCBjbG9uZSB3aXRoIHNpemUgIithLndpZHRoKyJ4IithLmhlaWdodCsiIHNjcm9sbGVkIHRvICIrLWEubGVmdCsiLCIrLWEudG9wKSxVPW5ldyBkbihnLHUsdyksKHc9VS5jbG9uZWRSZWZlcmVuY2VFbGVtZW50KT9bNCxVLnRvSUZyYW1lKGUsYSldOlsyLFByb21pc2UucmVqZWN0KCJVbmFibGUgdG8gZmluZCBlbGVtZW50IGluIGNsb25lZCBpZnJhbWUiKV07Y2FzZSAxOnJldHVybihyPUEuc2VudCgpLGw9akIodyl8fCJIVE1MIj09PXcudGFnTmFtZT9mdW5jdGlvbihBKXt2YXIgZT1BLmJvZHksdD1BLmRvY3VtZW50RWxlbWVudDtpZighZXx8IXQpdGhyb3cgbmV3IEVycm9yKCJVbmFibGUgdG8gZ2V0IGRvY3VtZW50IHNpemUiKTtBPU1hdGgubWF4KE1hdGgubWF4KGUuc2Nyb2xsV2lkdGgsdC5zY3JvbGxXaWR0aCksTWF0aC5tYXgoZS5vZmZzZXRXaWR0aCx0Lm9mZnNldFdpZHRoKSxNYXRoLm1heChlLmNsaWVudFdpZHRoLHQuY2xpZW50V2lkdGgpKSx0PU1hdGgubWF4KE1hdGgubWF4KGUuc2Nyb2xsSGVpZ2h0LHQuc2Nyb2xsSGVpZ2h0KSxNYXRoLm1heChlLm9mZnNldEhlaWdodCx0Lm9mZnNldEhlaWdodCksTWF0aC5tYXgoZS5jbGllbnRIZWlnaHQsdC5jbGllbnRIZWlnaHQpKTtyZXR1cm4gbmV3IGQoMCwwLEEsdCl9KHcub3duZXJEb2N1bWVudCk6ZihnLHcpLEI9bC53aWR0aCxuPWwuaGVpZ2h0LHM9bC5sZWZ0LG89bC50b3AsaT1ZcyhnLHcsRi5iYWNrZ3JvdW5kQ29sb3IpLGw9e2NhbnZhczpGLmNhbnZhcyxiYWNrZ3JvdW5kQ29sb3I6aSxzY2FsZTpudWxsIT09KGw9bnVsbCE9PShsPUYuc2NhbGUpJiZ2b2lkIDAhPT1sP2w6dC5kZXZpY2VQaXhlbFJhdGlvKSYmdm9pZCAwIT09bD9sOjEseDoobnVsbCE9PShsPUYueCkmJnZvaWQgMCE9PWw/bDowKStzLHk6KG51bGwhPT0obD1GLnkpJiZ2b2lkIDAhPT1sP2w6MCkrbyx3aWR0aDpudWxsIT09KGw9Ri53aWR0aCkmJnZvaWQgMCE9PWw/bDpNYXRoLmNlaWwoQiksaGVpZ2h0Om51bGwhPT0obD1GLmhlaWdodCkmJnZvaWQgMCE9PWw/bDpNYXRoLmNlaWwobil9LGMpPyhnLmxvZ2dlci5kZWJ1ZygiRG9jdW1lbnQgY2xvbmVkLCB1c2luZyBmb3JlaWduIG9iamVjdCByZW5kZXJpbmciKSxbNCxuZXcgT3MoZyxsKS5yZW5kZXIodyldKTpbMywzXTtjYXNlIDI6cmV0dXJuIFE9QS5zZW50KCksWzMsNV07Y2FzZSAzOnJldHVybiBnLmxvZ2dlci5kZWJ1ZygiRG9jdW1lbnQgY2xvbmVkLCBlbGVtZW50IGxvY2F0ZWQgYXQgIitzKyIsIitvKyIgd2l0aCBzaXplICIrQisieCIrbisiIHVzaW5nIGNvbXB1dGVkIHJlbmRlcmluZyIpLGcubG9nZ2VyLmRlYnVnKCJTdGFydGluZyBET00gcGFyc2luZyIpLEM9a0IoZyx3KSxpPT09Qy5zdHlsZXMuYmFja2dyb3VuZENvbG9yJiYoQy5zdHlsZXMuYmFja2dyb3VuZENvbG9yPUxlLlRSQU5TUEFSRU5UKSxnLmxvZ2dlci5kZWJ1ZygiU3RhcnRpbmcgcmVuZGVyZXIgZm9yIGVsZW1lbnQgYXQgIitsLngrIiwiK2wueSsiIHdpdGggc2l6ZSAiK2wud2lkdGgrIngiK2wuaGVpZ2h0KSxbNCxuZXcgYnMoZyxsKS5yZW5kZXIoQyldO2Nhc2UgNDpRPUEuc2VudCgpLEEubGFiZWw9NTtjYXNlIDU6cmV0dXJuIG51bGwhPT0oQz1GLnJlbW92ZUNvbnRhaW5lcikmJnZvaWQgMCE9PUMmJiFDfHxkbi5kZXN0cm95KHIpfHxnLmxvZ2dlci5lcnJvcigiQ2Fubm90IGRldGFjaCBjbG9uZWQgaWZyYW1lIGFzIGl0IGlzIG5vdCBpbiB0aGUgRE9NIGFueW1vcmUiKSxnLmxvZ2dlci5kZWJ1ZygiRmluaXNoZWQgcmVuZGVyaW5nIiksWzIsUV19fSl9KX0sWXM9ZnVuY3Rpb24oQSxlLHQpe3ZhciByPWUub3duZXJEb2N1bWVudCxCPXIuZG9jdW1lbnRFbGVtZW50P2ZlKEEsZ2V0Q29tcHV0ZWRTdHlsZShyLmRvY3VtZW50RWxlbWVudCkuYmFja2dyb3VuZENvbG9yKTpMZS5UUkFOU1BBUkVOVCxuPXIuYm9keT9mZShBLGdldENvbXB1dGVkU3R5bGUoci5ib2R5KS5iYWNrZ3JvdW5kQ29sb3IpOkxlLlRSQU5TUEFSRU5ULHQ9InN0cmluZyI9PXR5cGVvZiB0P2ZlKEEsdCk6bnVsbD09PXQ/TGUuVFJBTlNQQVJFTlQ6NDI5NDk2NzI5NTtyZXR1cm4gZT09PXIuZG9jdW1lbnRFbGVtZW50P29lKEIpP29lKG4pP3Q6bjpCOnR9O3JldHVybiBmdW5jdGlvbihBLGUpe3JldHVybiBKcyhBLGU9dm9pZCAwPT09ZT97fTplKX19KTsKLyog57uE5Y23572R6K+V5Y235a+85Ye677ya5pys5paH5Lu25Lya5ZKM5pys5ZywIGh0bWwyY2FudmFzIOS4gOi1t+aJk+WMheS4uuS5puetvuiEmuacrOOAgiAqLw0KKCgpID0+IHsNCiAgY29uc3Qgb2xkID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3hrdy1sb2NhbC1leHBvcnQtcGFuZWwnKTsNCiAgaWYgKG9sZCkgeyBpZiAob2xkLmRhdGFzZXQudmVyc2lvbiA9PT0gJzE0LjEnKSB7IG9sZC5yZW1vdmUoKTsgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3hrdy1sb2NhbC1jb250cmFzdC1zdHlsZScpPy5yZW1vdmUoKTsgcmV0dXJuOyB9IG9sZC5yZW1vdmUoKTsgfQ0KDQogIGNvbnN0IHJvb3RzID0gWydhcnRpY2xlLmV4YW0tY250JywgJ2FydGljbGUucGFwZXItY250JywgJ2Rpdi5xbWxfcGFwZXIucXVlcy1saXN0JywgJ2Rpdi5xbWxfcGFwZXInLCAnc2VjdGlvbiNxdWVzTGlzdEJveCcsICcucXVlcy1saXN0J107DQogIGNvbnN0IHNvdXJjZSA9IHJvb3RzLm1hcChzID0+IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IocykpLmZpbmQoQm9vbGVhbik7DQogIGlmICghc291cmNlKSB7IGFsZXJ0KCfmsqHmnInmib7liLDlvZPliY3pobXpnaLnmoTor5XljbfmraPmlofjgILor7flhYjmiZPlvIDor5Xljbfor6bmg4XpobXlkI7lho3ov5DooYzjgIInKTsgcmV0dXJuOyB9DQoNCiAgY29uc3QgcGFuZWwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsNCiAgcGFuZWwuaWQgPSAneGt3LWxvY2FsLWV4cG9ydC1wYW5lbCc7DQogIHBhbmVsLmRhdGFzZXQudmVyc2lvbiA9ICcxNC4xJzsNCiAgcGFuZWwuc3R5bGUuY3NzVGV4dCA9ICdwb3NpdGlvbjpmaXhlZDtyaWdodDoxOHB4O3RvcDoxOHB4O3otaW5kZXg6MjE0NzQ4MzY0NztwYWRkaW5nOjEycHg7YmFja2dyb3VuZDojZmZmO2NvbG9yOiMxMTE7Ym9yZGVyOjFweCBzb2xpZCAjYmJiO2JvcmRlci1yYWRpdXM6OHB4O2JveC1zaGFkb3c6MCA0cHggMjBweCAjMDAwMztmb250OjE0cHggTWljcm9zb2Z0IFlhSGVpLEFyaWFsLHNhbnMtc2VyaWY7bWF4LXdpZHRoOjMwMHB4JzsNCiAgcGFuZWwuaW5uZXJIVE1MID0gJzxkaXYgc3R5bGU9ImZvbnQtd2VpZ2h0OmJvbGQ7bWFyZ2luLWJvdHRvbTo4cHgiPue7hOWNt+e9keivleWNt+WvvOWHuiB2MTQuMTwvZGl2PjxsYWJlbCBzdHlsZT0iZGlzcGxheTpibG9jazttYXJnaW4tYm90dG9tOjhweDtjdXJzb3I6cG9pbnRlciI+PGlucHV0IHR5cGU9ImNoZWNrYm94IiBkYXRhLWFuc3dlcnM+IOWMheWQq+etlOahiOWSjOino+aekO+8iFdvcmQg572u5LqO5paH5pyr77yJPC9sYWJlbD48bGFiZWwgc3R5bGU9ImRpc3BsYXk6YmxvY2s7bWFyZ2luLWJvdHRvbTo4cHgiPldvcmQg5qih5byP77yaPHNlbGVjdCBkYXRhLXdvcmQtbW9kZSBhcmlhLWxhYmVsPSJXb3JkIOaooeW8jyIgc3R5bGU9Im1heC13aWR0aDoxOTBweCI+PG9wdGlvbiB2YWx1ZT0iaHlicmlkIj7lj6/nvJbovpHmloflrZfvvIvlsYDpg6jlm77niYc8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJpbWFnZSI+5pW06aKY5Zu+54mH77yI5YW85a6577yJPC9vcHRpb24+PC9zZWxlY3Q+PC9sYWJlbD48ZGl2IHN0eWxlPSJkaXNwbGF5OmZsZXg7Z2FwOjZweCI+PGJ1dHRvbiBkYXRhLWFjdGlvbj0icGRmIj7miZPljbAgLyBQREY8L2J1dHRvbj48YnV0dG9uIGRhdGEtYWN0aW9uPSJkb2N4Ij7lr7zlh7ogV29yZDwvYnV0dG9uPjxidXR0b24gZGF0YS1hY3Rpb249ImNsb3NlIj7lhbPpl608L2J1dHRvbj48L2Rpdj48ZGl2IGRhdGEtc3RhdHVzIHN0eWxlPSJtYXJnaW4tdG9wOjhweDt3aGl0ZS1zcGFjZTpub3JtYWwiPldvcmQg6aKY55uu5bC96YeP5Y+v57yW6L6R77yb6Kej5p6Q5Lul5Y6f5Zu+572u5LqO5paH5pyr44CCPC9kaXY+JzsNCiAgcGFuZWwucXVlcnlTZWxlY3RvckFsbCgnYnV0dG9uJykuZm9yRWFjaChiID0+IGIuc3R5bGUuY3NzVGV4dCA9ICdwYWRkaW5nOjZweCA5cHg7Ym9yZGVyOjFweCBzb2xpZCAjYWFhO2JvcmRlci1yYWRpdXM6NXB4O2JhY2tncm91bmQ6I2Y3ZjdmNztjdXJzb3I6cG9pbnRlcicpOw0KICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHBhbmVsKTsNCiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3hrdy1sb2NhbC1jb250cmFzdC1zdHlsZScpPy5yZW1vdmUoKTsNCiAgY29uc3QgY29udHJhc3RTdHlsZT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzdHlsZScpOw0KICBjb250cmFzdFN0eWxlLmlkPSd4a3ctbG9jYWwtY29udHJhc3Qtc3R5bGUnOw0KICBjb250cmFzdFN0eWxlLnRleHRDb250ZW50PSdhcnRpY2xlLmV4YW0tY250IC5zZWxlY3RlZC1tYXNre29wYWNpdHk6MSFpbXBvcnRhbnR9JzsNCiAgZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChjb250cmFzdFN0eWxlKTsNCiAgY29uc3QgY2xvc2VQYW5lbD0oKT0+e3BhbmVsLnJlbW92ZSgpO2NvbnRyYXN0U3R5bGUucmVtb3ZlKCk7fTsNCiAgY29uc3Qgc3RhdHVzID0gcyA9PiB7IHBhbmVsLnF1ZXJ5U2VsZWN0b3IoJ1tkYXRhLXN0YXR1c10nKS50ZXh0Q29udGVudCA9IHM7IH07DQogIGNvbnN0IHdhbnRzQW5zd2VycyA9ICgpID0+IHBhbmVsLnF1ZXJ5U2VsZWN0b3IoJ1tkYXRhLWFuc3dlcnNdJykuY2hlY2tlZDsNCiAgbGV0IHdvcmtpbmcgPSBmYWxzZTsNCiAgY29uc3Qgc3luY0J1dHRvbnMgPSAoKSA9PiB7DQogICAgcGFuZWwucXVlcnlTZWxlY3RvcignW2RhdGEtd29yZC1tb2RlXScpLmRpc2FibGVkID0gd29ya2luZzsNCiAgICBwYW5lbC5xdWVyeVNlbGVjdG9yKCdbZGF0YS1hbnN3ZXJzXScpLmRpc2FibGVkID0gd29ya2luZzsNCiAgICBmb3IgKGNvbnN0IGJ1dHRvbiBvZiBwYW5lbC5xdWVyeVNlbGVjdG9yQWxsKCdidXR0b24nKSkgew0KICAgICAgYnV0dG9uLmRpc2FibGVkID0gd29ya2luZyAmJiBidXR0b24uZGF0YXNldC5hY3Rpb24gIT09ICdjbG9zZSc7DQogICAgICBidXR0b24uc3R5bGUub3BhY2l0eSA9IGJ1dHRvbi5kaXNhYmxlZCA/ICcwLjQ1JyA6ICcxJzsNCiAgICAgIGJ1dHRvbi5zdHlsZS5jdXJzb3IgPSBidXR0b24uZGlzYWJsZWQgPyAnbm90LWFsbG93ZWQnIDogJ3BvaW50ZXInOw0KICAgIH0NCiAgfTsNCiAgY29uc3QgYnVzeSA9IHZhbHVlID0+IHsgd29ya2luZyA9IHZhbHVlOyBzeW5jQnV0dG9ucygpOyB9Ow0KICBwYW5lbC5xdWVyeVNlbGVjdG9yKCdbZGF0YS1hbnN3ZXJzXScpLmFkZEV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsICgpID0+IHsNCiAgICBzdGF0dXMod2FudHNBbnN3ZXJzKCkgPyAnV29yZCDkvJrlsIbljp/lm77op6PmnpDmjInpopjnm67pobrluo/nva7kuo7mlofmnKvjgIInIDogJ1dvcmQg5Y+q5a+85Ye66aKY55uu44CCJyk7DQogICAgc3luY0J1dHRvbnMoKTsNCiAgfSk7DQoNCiAgZnVuY3Rpb24gcHJpbnRDdXJyZW50UGFnZVdpdGhBbnN3ZXJzKHF1ZXN0aW9ucykgew0KICAgIGNvbnN0IHVubG9hZGVkID0gWy4uLnNvdXJjZS5xdWVyeVNlbGVjdG9yQWxsKCcuZXhhbS1saXN0IGltZycpXS5maW5kKGltYWdlID0+ICFpbWFnZS5jb21wbGV0ZSB8fCAhaW1hZ2UubmF0dXJhbFdpZHRoKTsNCiAgICBpZiAodW5sb2FkZWQpIHRocm93IG5ldyBFcnJvcign6K+V5Y235Lit55qE5YWs5byP5oiW5Zu+54mH5bCa5pyq5Yqg6L295a6M5oiQ77yM6K+356iN562J6aG16Z2i5pi+56S65a6M5pW05ZCO6YeN6K+V44CCJyk7DQogICAgZm9yIChsZXQgaSA9IDA7IGkgPCBxdWVzdGlvbnMubGVuZ3RoOyBpKyspIHsNCiAgICAgIGNvbnN0IGltYWdlID0gcXVlc3Rpb25zW2ldLmFuc3dlcjsNCiAgICAgIGlmICghaW1hZ2U/LmNvbXBsZXRlIHx8IGltYWdlLm5hdHVyYWxXaWR0aCA8IDEwMDAgfHwgaW1hZ2UubmF0dXJhbEhlaWdodCA8IDgwKSB7DQogICAgICAgIHRocm93IG5ldyBFcnJvcihg56ysICR7aSArIDF9IOmimOino+aekOWwmuacquato+W4uOaYvuekuuOAguivt+WFiOWcqOe9kemhteaJk+W8gOKAnOaYvuekuuWFqOmDqOetlOahiOWSjOino+aekOKAneOAgmApOw0KICAgICAgfQ0KICAgIH0NCiAgICB3aW5kb3cuX19adWp1YW5QcmludENsZWFudXA/LigpOw0KICAgIGNvbnN0IHBhdGggPSBbXTsNCiAgICBmb3IgKGxldCBub2RlID0gc291cmNlOyBub2RlICYmIG5vZGUgIT09IGRvY3VtZW50LmJvZHk7IG5vZGUgPSBub2RlLnBhcmVudEVsZW1lbnQpIHsNCiAgICAgIHBhdGgucHVzaChub2RlKTsNCiAgICAgIG5vZGUuY2xhc3NMaXN0LmFkZCgneGt3LWxvY2FsLXByaW50LXBhdGgnKTsNCiAgICB9DQogICAgc291cmNlLmNsYXNzTGlzdC5hZGQoJ3hrdy1sb2NhbC1wcmludC1zb3VyY2UnKTsNCiAgICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5hZGQoJ3hrdy1sb2NhbC1wcmludGluZycpOw0KICAgIGNvbnN0IG9yaWdpbmFsVGl0bGUgPSBkb2N1bWVudC50aXRsZTsNCiAgICBkb2N1bWVudC50aXRsZSA9IG9yaWdpbmFsVGl0bGUucmVwbGFjZSgvLee7hOWNt+e9kVxzKiQvLCAnJykgKyAnLeWQq+etlOahiOino+aekCc7DQogICAgY29uc3Qgc3R5bGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzdHlsZScpOw0KICAgIHN0eWxlLmlkID0gJ3hrdy1sb2NhbC1wcmludC1zdHlsZSc7DQogICAgc3R5bGUudGV4dENvbnRlbnQgPSBgQHBhZ2V7c2l6ZTpBNCBwb3J0cmFpdDttYXJnaW46MTJtbX0NCiAgICAgIEBtZWRpYSBwcmludHsNCiAgICAgICAgYm9keS54a3ctbG9jYWwtcHJpbnRpbmd7bWFyZ2luOjAhaW1wb3J0YW50O3BhZGRpbmc6MCFpbXBvcnRhbnQ7d2lkdGg6YXV0byFpbXBvcnRhbnQ7bWluLXdpZHRoOjAhaW1wb3J0YW50O2JhY2tncm91bmQ6I2ZmZiFpbXBvcnRhbnQ7Y29sb3I6IzExMSFpbXBvcnRhbnR9DQogICAgICAgIGJvZHkueGt3LWxvY2FsLXByaW50aW5nPjpub3QoLnhrdy1sb2NhbC1wcmludC1wYXRoKXtkaXNwbGF5Om5vbmUhaW1wb3J0YW50fQ0KICAgICAgICBib2R5Lnhrdy1sb2NhbC1wcmludGluZyAueGt3LWxvY2FsLXByaW50LXBhdGg6bm90KC54a3ctbG9jYWwtcHJpbnQtc291cmNlKT46bm90KC54a3ctbG9jYWwtcHJpbnQtcGF0aCl7ZGlzcGxheTpub25lIWltcG9ydGFudH0NCiAgICAgICAgYm9keS54a3ctbG9jYWwtcHJpbnRpbmcgLnhrdy1sb2NhbC1wcmludC1wYXRoe2Rpc3BsYXk6YmxvY2shaW1wb3J0YW50O3Bvc2l0aW9uOnN0YXRpYyFpbXBvcnRhbnQ7ZmxvYXQ6bm9uZSFpbXBvcnRhbnQ7dHJhbnNmb3JtOm5vbmUhaW1wb3J0YW50O3dpZHRoOjEwMCUhaW1wb3J0YW50O21heC13aWR0aDpub25lIWltcG9ydGFudDttaW4td2lkdGg6MCFpbXBvcnRhbnQ7aGVpZ2h0OmF1dG8haW1wb3J0YW50O21pbi1oZWlnaHQ6MCFpbXBvcnRhbnQ7b3ZlcmZsb3c6dmlzaWJsZSFpbXBvcnRhbnQ7bWFyZ2luOjAhaW1wb3J0YW50O3BhZGRpbmc6MCFpbXBvcnRhbnQ7YmFja2dyb3VuZDojZmZmIWltcG9ydGFudH0NCiAgICAgICAgYm9keS54a3ctbG9jYWwtcHJpbnRpbmcgLnhrdy1sb2NhbC1wcmludC1zb3VyY2UgLmV4YW0taXRlbV9faW5mbywNCiAgICAgICAgYm9keS54a3ctbG9jYWwtcHJpbnRpbmcgLnhrdy1sb2NhbC1wcmludC1zb3VyY2UgLnF1ZXMtY3RybCwNCiAgICAgICAgYm9keS54a3ctbG9jYWwtcHJpbnRpbmcgLnhrdy1sb2NhbC1wcmludC1zb3VyY2UgLmJ0bi1ib3gsDQogICAgICAgIGJvZHkueGt3LWxvY2FsLXByaW50aW5nIC54a3ctbG9jYWwtcHJpbnQtc291cmNlIC5jdHJsLWJveCwNCiAgICAgICAgYm9keS54a3ctbG9jYWwtcHJpbnRpbmcgLnhrdy1sb2NhbC1wcmludC1zb3VyY2UgLnRvcC1tc2csDQogICAgICAgIGJvZHkueGt3LWxvY2FsLXByaW50aW5nIC54a3ctbG9jYWwtcHJpbnQtc291cmNlIC5tc2ctYm94LA0KICAgICAgICBib2R5Lnhrdy1sb2NhbC1wcmludGluZyAueGt3LWxvY2FsLXByaW50LXNvdXJjZSAuaW5mby1saXN0LA0KICAgICAgICBib2R5Lnhrdy1sb2NhbC1wcmludGluZyAueGt3LWxvY2FsLXByaW50LXNvdXJjZSAuYWRkLXNlYy1xdWVzLA0KICAgICAgICAgYm9keS54a3ctbG9jYWwtcHJpbnRpbmcgLnhrdy1sb2NhbC1wcmludC1zb3VyY2UgLmV4YW0tYW5hbHl6ZSwNCiAgICAgICAgYm9keS54a3ctbG9jYWwtcHJpbnRpbmcgLnhrdy1sb2NhbC1wcmludC1zb3VyY2UgW2NsYXNzKj0iZG93bmxvYWQiXSwNCiAgICAgICAgYm9keS54a3ctbG9jYWwtcHJpbnRpbmcgLnhrdy1sb2NhbC1wcmludC1zb3VyY2UgW2NsYXNzKj0iY29sbGVjdCJdLA0KICAgICAgICAgYm9keS54a3ctbG9jYWwtcHJpbnRpbmcgLnhrdy1sb2NhbC1wcmludC1zb3VyY2UgW2NsYXNzKj0ic2hhcmUiXXtkaXNwbGF5Om5vbmUhaW1wb3J0YW50fQ0KICAgICAgICAgYm9keS54a3ctbG9jYWwtcHJpbnRpbmcgLnhrdy1sb2NhbC1wcmludC1zb3VyY2UgLnNlbGVjdGVkLW1hc2t7b3BhY2l0eToxIWltcG9ydGFudH0NCiAgICAgICAgYm9keS54a3ctbG9jYWwtcHJpbnRpbmcgLnhrdy1sb2NhbC1wcmludC1zb3VyY2UgaW1nLA0KICAgICAgICBib2R5Lnhrdy1sb2NhbC1wcmludGluZyAueGt3LWxvY2FsLXByaW50LXNvdXJjZSBzdmcsDQogICAgICAgIGJvZHkueGt3LWxvY2FsLXByaW50aW5nIC54a3ctbG9jYWwtcHJpbnQtc291cmNlIGNhbnZhc3ttYXgtd2lkdGg6MTAwJSFpbXBvcnRhbnQ7aGVpZ2h0OmF1dG8haW1wb3J0YW50fQ0KICAgICAgICBib2R5Lnhrdy1sb2NhbC1wcmludGluZyAueGt3LWxvY2FsLXByaW50LXNvdXJjZSB0YWJsZXttYXgtd2lkdGg6MTAwJSFpbXBvcnRhbnR9DQogICAgICAgIGJvZHkueGt3LWxvY2FsLXByaW50aW5nIC54a3ctbG9jYWwtcHJpbnQtc291cmNlIGF7Y29sb3I6aW5oZXJpdCFpbXBvcnRhbnQ7dGV4dC1kZWNvcmF0aW9uOm5vbmUhaW1wb3J0YW50fQ0KICAgICAgfWA7DQogICAgZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChzdHlsZSk7DQogICAgY29uc3QgY2xlYW51cCA9ICgpID0+IHsNCiAgICAgIHN0eWxlLnJlbW92ZSgpOw0KICAgICAgZG9jdW1lbnQudGl0bGUgPSBvcmlnaW5hbFRpdGxlOw0KICAgICAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QucmVtb3ZlKCd4a3ctbG9jYWwtcHJpbnRpbmcnKTsNCiAgICAgIHNvdXJjZS5jbGFzc0xpc3QucmVtb3ZlKCd4a3ctbG9jYWwtcHJpbnQtc291cmNlJyk7DQogICAgICBwYXRoLmZvckVhY2gobm9kZSA9PiBub2RlLmNsYXNzTGlzdC5yZW1vdmUoJ3hrdy1sb2NhbC1wcmludC1wYXRoJykpOw0KICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2FmdGVycHJpbnQnLCBjbGVhbnVwKTsNCiAgICAgIGlmICh3aW5kb3cuX19adWp1YW5QcmludENsZWFudXAgPT09IGNsZWFudXApIGRlbGV0ZSB3aW5kb3cuX19adWp1YW5QcmludENsZWFudXA7DQogICAgfTsNCiAgICB3aW5kb3cuX19adWp1YW5QcmludENsZWFudXAgPSBjbGVhbnVwOw0KICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdhZnRlcnByaW50JywgY2xlYW51cCk7DQogICAgdHJ5IHsNCiAgICAgIGlmICh0eXBlb2Ygd2luZG93Ll9fWnVqdWFuQXBwUHJpbnRDdXJyZW50ID09PSAnZnVuY3Rpb24nKSB3aW5kb3cuX19adWp1YW5BcHBQcmludEN1cnJlbnQoKTsNCiAgICAgIGVsc2Ugd2luZG93LnByaW50KCk7DQogICAgfSBjYXRjaCAoZXJyb3IpIHsgY2xlYW51cCgpOyB0aHJvdyBlcnJvcjsgfQ0KICB9DQoNCiAgYXN5bmMgZnVuY3Rpb24gcGRmKCkgew0KICAgIGNvbnN0IGluY2x1ZGVBbnN3ZXJzID0gd2FudHNBbnN3ZXJzKCk7DQogICAgaWYgKGluY2x1ZGVBbnN3ZXJzKSB7DQogICAgICBjb25zdCBxdWVzdGlvbnMgPSBjb2xsZWN0KHRydWUpOw0KICAgICAgc3RhdHVzKGDmraPlnKjmiZPljbAgJHtxdWVzdGlvbnMubGVuZ3RofSDpgZPpopjlj4rop6PmnpDigKZgKTsNCiAgICAgIHByaW50Q3VycmVudFBhZ2VXaXRoQW5zd2VycyhxdWVzdGlvbnMpOw0KICAgICAgc3RhdHVzKCfmiZPljbDnqpflj6Plt7LmiZPlvIDvvIzor7fpgInmi6nigJzlj6blrZjkuLogUERG4oCd44CCJyk7DQogICAgICByZXR1cm47DQogICAgfQ0KICAgIGNvbnN0IG5hdGl2ZVByaW50ID0gdHlwZW9mIHdpbmRvdy5fX1p1anVhbkFwcFByaW50UGRmID09PSAnZnVuY3Rpb24nOw0KICAgIGNvbnN0IHBvcHVwID0gbmF0aXZlUHJpbnQgPyBudWxsIDogd2luZG93Lm9wZW4oJycsICdfYmxhbmsnKTsNCiAgICBpZiAoIW5hdGl2ZVByaW50ICYmICFwb3B1cCkgdGhyb3cgbmV3IEVycm9yKCfmtY/op4jlmajmi6bmiKrkuobmiZPljbDnqpflj6PvvIzor7flhYHorrjmraTnvZHpobXlvLnlh7rnqpflj6PlkI7ph43or5XjgIInKTsNCiAgICBidXN5KHRydWUpOw0KICAgIHN0YXR1cygn5q2j5Zyo5YeG5aSHIFBERuKApicpOw0KICAgIHRyeSB7DQogICAgY29uc3QgY29weSA9IHNvdXJjZS5jbG9uZU5vZGUodHJ1ZSk7DQogICAgY29weS5xdWVyeVNlbGVjdG9yQWxsKCcuc2VsZWN0ZWQtbWFzaycpLmZvckVhY2gobm9kZT0+bm9kZS5jbGFzc0xpc3QucmVtb3ZlKCdzZWxlY3RlZC1tYXNrJykpOw0KICAgIGNvcHkucXVlcnlTZWxlY3RvckFsbCgnc2NyaXB0LGlmcmFtZSwucXVlcy1jdHJsLC5idG4tYm94LC5jdHJsLWJveCwuZXhhbS1pdGVtX19pbmZvLC50b3AtbXNnLC5tc2ctYm94LC5pbmZvLWxpc3Qsc2VjdGlvbi5leGFtLWFuYWx5emUsLmFkZC1zZWMtcXVlcyxbY2xhc3MqPSJkb3dubG9hZCJdLFtjbGFzcyo9ImNvbGxlY3QiXSxbY2xhc3MqPSJzaGFyZSJdJykuZm9yRWFjaChuID0+IG4ucmVtb3ZlKCkpOw0KICAgIGNvcHkucXVlcnlTZWxlY3RvckFsbCgnLmV4YW0taXRlbV9fb3B0ID4gLml0ZW0uYW5zd2VyLC5leGFtLWl0ZW1fX29wdCA+IC5pdGVtLm5vLWxvZ2luJykuZm9yRWFjaChuID0+IG4ucmVtb3ZlKCkpOw0KICAgIGNvbnN0IHN0eWxlcyA9IFsuLi5kb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdsaW5rW3JlbD0ic3R5bGVzaGVldCJdLHN0eWxlJyldLm1hcChuID0+IG4ub3V0ZXJIVE1MKS5qb2luKCcnKTsNCiAgICBjb25zdCB0aXRsZSA9IGRvY3VtZW50LnRpdGxlLnJlcGxhY2UoL1s8Pl0vZywgJycpOw0KICAgIGNvbnN0IGJhc2UgPSBsb2NhdGlvbi5ocmVmLnJlcGxhY2UoLyIvZywgJyZxdW90OycpOw0KICAgIGNvbnN0IGh0bWwgPSBgPCFkb2N0eXBlIGh0bWw+PGh0bWwgbGFuZz0iemgtQ04iPjxoZWFkPjxtZXRhIGNoYXJzZXQ9InV0Zi04Ij48YmFzZSBocmVmPSIke2Jhc2V9Ij48dGl0bGU+JHt0aXRsZX08L3RpdGxlPiR7c3R5bGVzfTxzdHlsZT5AcGFnZXttYXJnaW46MTJtbX1ib2R5e2JhY2tncm91bmQ6I2ZmZiFpbXBvcnRhbnQ7cGFkZGluZzoxNG1tIWltcG9ydGFudDtjb2xvcjojMTExIWltcG9ydGFudH0ucHJpbnQtdG9vbHN7cG9zaXRpb246Zml4ZWQ7cmlnaHQ6MThweDt0b3A6MThweDt6LWluZGV4Ojk5OTl9LnByaW50LXRvb2xzIGJ1dHRvbntwYWRkaW5nOjEwcHggMTRweDtiYWNrZ3JvdW5kOiMyNTYzZWI7Y29sb3I6I2ZmZjtib3JkZXI6MDtib3JkZXItcmFkaXVzOjZweDtmb250LXNpemU6MTRweDtjdXJzb3I6cG9pbnRlcn1AbWVkaWEgcHJpbnR7LnByaW50LXRvb2xze2Rpc3BsYXk6bm9uZSFpbXBvcnRhbnR9YXtjb2xvcjppbmhlcml0IWltcG9ydGFudDt0ZXh0LWRlY29yYXRpb246bm9uZSFpbXBvcnRhbnR9fTwvc3R5bGU+PC9oZWFkPjxib2R5PjxkaXYgY2xhc3M9InByaW50LXRvb2xzIj48YnV0dG9uIG9uY2xpY2s9IndpbmRvdy5wcmludCgpIj7miZPljbAgLyDlj6blrZjkuLogUERGPC9idXR0b24+PC9kaXY+PG1haW4+JHtjb3B5LmlubmVySFRNTH08L21haW4+PC9ib2R5PjwvaHRtbD5gOw0KICAgIGlmIChuYXRpdmVQcmludCkgeyB3aW5kb3cuX19adWp1YW5BcHBQcmludFBkZihodG1sKTsgc3RhdHVzKCdQREYg5omT5Y2w6aG16Z2i5bey5omT5byA44CCJyk7IHJldHVybjsgfQ0KICAgIHBvcHVwLmRvY3VtZW50Lm9wZW4oKTsNCiAgICBwb3B1cC5kb2N1bWVudC53cml0ZShodG1sKTsNCiAgICBwb3B1cC5kb2N1bWVudC5jbG9zZSgpOw0KICAgIHN0YXR1cygnUERGIOaJk+WNsOmhtemdouW3suaJk+W8gOOAgicpOw0KICAgIH0gY2F0Y2ggKGVycm9yKSB7IGlmIChwb3B1cCAmJiAhcG9wdXAuY2xvc2VkKSBwb3B1cC5jbG9zZSgpOyB0aHJvdyBlcnJvcjsgfQ0KICAgIGZpbmFsbHkgeyBidXN5KGZhbHNlKTsgfQ0KICB9DQoNCiAgY29uc3QgZXNjID0gcyA9PiBTdHJpbmcocykucmVwbGFjZSgvWyY8PiInXS9nLCBjID0+ICh7JyYnOicmYW1wOycsJzwnOicmbHQ7JywnPic6JyZndDsnLCciJzonJnF1b3Q7JywiJyI6JyZhcG9zOyd9W2NdKSk7DQogIGNvbnN0IHU4ID0gcyA9PiBuZXcgVGV4dEVuY29kZXIoKS5lbmNvZGUocyk7DQogIGNvbnN0IGNyY1RhYmxlID0gQXJyYXkuZnJvbSh7bGVuZ3RoOjI1Nn0sIChfLGkpID0+IHsgZm9yKGxldCBqPTA7ajw4O2orKykgaT0oaSYxKT8oMHhlZGI4ODMyMF4oaT4+PjEpKTooaT4+PjEpOyByZXR1cm4gaT4+PjA7IH0pOw0KICBmdW5jdGlvbiBjcmMzMihieXRlcykgeyBsZXQgYz0weGZmZmZmZmZmOyBmb3IoY29uc3QgeCBvZiBieXRlcykgYz1jcmNUYWJsZVsoY154KSYyNTVdXihjPj4+OCk7IHJldHVybiAoY14weGZmZmZmZmZmKT4+PjA7IH0NCiAgZnVuY3Rpb24gemlwKGZpbGVzKSB7DQogICAgY29uc3QgY2h1bmtzPVtdLCBkaXJlY3Rvcnk9W107IGxldCBvZmZzZXQ9MDsNCiAgICBjb25zdCBsZTE2PShkLG8sdik9PmQuc2V0VWludDE2KG8sdix0cnVlKSwgbGUzMj0oZCxvLHYpPT5kLnNldFVpbnQzMihvLHYsdHJ1ZSk7DQogICAgZm9yKGNvbnN0IGZpbGUgb2YgZmlsZXMpIHsNCiAgICAgIGNvbnN0IG5hbWU9dTgoZmlsZS5uYW1lKSwgZGF0YT1maWxlLmRhdGEsIGNyYz1jcmMzMihkYXRhKTsNCiAgICAgIGNvbnN0IGg9bmV3IFVpbnQ4QXJyYXkoMzArbmFtZS5sZW5ndGgpLCBkPW5ldyBEYXRhVmlldyhoLmJ1ZmZlcik7DQogICAgICBsZTMyKGQsMCwweDA0MDM0YjUwKTtsZTE2KGQsNCwyMCk7bGUxNihkLDYsMHgwODAwKTtsZTE2KGQsOCwwKTtsZTE2KGQsMTAsMCk7bGUxNihkLDEyLDApO2xlMzIoZCwxNCxjcmMpO2xlMzIoZCwxOCxkYXRhLmxlbmd0aCk7bGUzMihkLDIyLGRhdGEubGVuZ3RoKTtsZTE2KGQsMjYsbmFtZS5sZW5ndGgpO2xlMTYoZCwyOCwwKTtoLnNldChuYW1lLDMwKTsNCiAgICAgIGNodW5rcy5wdXNoKGgsZGF0YSk7DQogICAgICBjb25zdCBjPW5ldyBVaW50OEFycmF5KDQ2K25hbWUubGVuZ3RoKSx2PW5ldyBEYXRhVmlldyhjLmJ1ZmZlcik7DQogICAgICBsZTMyKHYsMCwweDAyMDE0YjUwKTtsZTE2KHYsNCwyMCk7bGUxNih2LDYsMjApO2xlMTYodiw4LDB4MDgwMCk7bGUxNih2LDEwLDApO2xlMTYodiwxMiwwKTtsZTE2KHYsMTQsMCk7bGUzMih2LDE2LGNyYyk7bGUzMih2LDIwLGRhdGEubGVuZ3RoKTtsZTMyKHYsMjQsZGF0YS5sZW5ndGgpO2xlMTYodiwyOCxuYW1lLmxlbmd0aCk7bGUxNih2LDMwLDApO2xlMTYodiwzMiwwKTtsZTE2KHYsMzQsMCk7bGUxNih2LDM2LDApO2xlMzIodiwzOCwwKTtsZTMyKHYsNDIsb2Zmc2V0KTtjLnNldChuYW1lLDQ2KTtkaXJlY3RvcnkucHVzaChjKTsNCiAgICAgIG9mZnNldCs9aC5sZW5ndGgrZGF0YS5sZW5ndGg7DQogICAgfQ0KICAgIGNvbnN0IGRpclNpemU9ZGlyZWN0b3J5LnJlZHVjZSgobixjKT0+bitjLmxlbmd0aCwwKSwgZW5kPW5ldyBVaW50OEFycmF5KDIyKSxlPW5ldyBEYXRhVmlldyhlbmQuYnVmZmVyKTsNCiAgICBsZTMyKGUsMCwweDA2MDU0YjUwKTtsZTE2KGUsNCwwKTtsZTE2KGUsNiwwKTtsZTE2KGUsOCxmaWxlcy5sZW5ndGgpO2xlMTYoZSwxMCxmaWxlcy5sZW5ndGgpO2xlMzIoZSwxMixkaXJTaXplKTtsZTMyKGUsMTYsb2Zmc2V0KTtsZTE2KGUsMjAsMCk7DQogICAgcmV0dXJuIG5ldyBCbG9iKFsuLi5jaHVua3MsLi4uZGlyZWN0b3J5LGVuZF0se3R5cGU6J2FwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC53b3JkcHJvY2Vzc2luZ21sLmRvY3VtZW50J30pOw0KICB9DQogIGZ1bmN0aW9uIHBhcmEodGV4dCxzaXplPTIyLGJvbGQ9ZmFsc2UsYWxpZ249JycpIHsgcmV0dXJuIGA8dzpwPjx3OnBQcj48dzpzcGFjaW5nIHc6YmVmb3JlPSI4MCIgdzphZnRlcj0iODAiLz4ke2FsaWduP2A8dzpqYyB3OnZhbD0iJHthbGlnbn0iLz5gOicnfTwvdzpwUHI+PHc6cj48dzpyUHI+PHc6ckZvbnRzIHc6YXNjaWk9Ik1pY3Jvc29mdCBZYUhlaSIgdzpoQW5zaT0iTWljcm9zb2Z0IFlhSGVpIiB3OmVhc3RBc2lhPSLlvq7ova/pm4Xpu5EiLz48dzpzeiB3OnZhbD0iJHtzaXplfSIvPiR7Ym9sZD8nPHc6Yi8+JzonJ308L3c6clByPjx3OnQgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+JHtlc2ModGV4dCl9PC93OnQ+PC93OnI+PC93OnA+YDsgfQ0KICBmdW5jdGlvbiBpbWFnZVJ1bihpZCxjeCxjeSxuYW1lLGV4dD0ncG5nJykgeyByZXR1cm4gYDx3OnI+PHc6ZHJhd2luZz48d3A6aW5saW5lIGRpc3RUPSIwIiBkaXN0Qj0iMCIgZGlzdEw9IjAiIGRpc3RSPSIwIj48d3A6ZXh0ZW50IGN4PSIke2N4fSIgY3k9IiR7Y3l9Ii8+PHdwOmRvY1ByIGlkPSIke2lkfSIgbmFtZT0iJHtlc2MobmFtZSl9Ii8+PGE6Z3JhcGhpYyB4bWxuczphPSJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvZHJhd2luZ21sLzIwMDYvbWFpbiI+PGE6Z3JhcGhpY0RhdGEgdXJpPSJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvZHJhd2luZ21sLzIwMDYvcGljdHVyZSI+PHBpYzpwaWMgeG1sbnM6cGljPSJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvZHJhd2luZ21sLzIwMDYvcGljdHVyZSI+PHBpYzpudlBpY1ByPjxwaWM6Y052UHIgaWQ9IiR7aWR9IiBuYW1lPSIke2VzYyhuYW1lKX0uJHtleHR9Ii8+PHBpYzpjTnZQaWNQci8+PC9waWM6bnZQaWNQcj48cGljOmJsaXBGaWxsPjxhOmJsaXAgcjplbWJlZD0icklkJHtpZH0iLz48YTpzdHJldGNoPjxhOmZpbGxSZWN0Lz48L2E6c3RyZXRjaD48L3BpYzpibGlwRmlsbD48cGljOnNwUHI+PGE6eGZybT48YTpvZmYgeD0iMCIgeT0iMCIvPjxhOmV4dCBjeD0iJHtjeH0iIGN5PSIke2N5fSIvPjwvYTp4ZnJtPjxhOnByc3RHZW9tIHByc3Q9InJlY3QiPjxhOmF2THN0Lz48L2E6cHJzdEdlb20+PC9waWM6c3BQcj48L3BpYzpwaWM+PC9hOmdyYXBoaWNEYXRhPjwvYTpncmFwaGljPjwvd3A6aW5saW5lPjwvdzpkcmF3aW5nPjwvdzpyPmA7IH0NCiAgZnVuY3Rpb24gaW1hZ2VQYXJhKGlkLGN4LGN5LG5hbWUsZXh0PSdwbmcnKSB7IHJldHVybiBgPHc6cD48dzpwUHI+PHc6c3BhY2luZyB3OmFmdGVyPSIxMjAiLz48L3c6cFByPiR7aW1hZ2VSdW4oaWQsY3gsY3ksbmFtZSxleHQpfTwvdzpwPmA7IH0NCiAgZnVuY3Rpb24gcmljaFBhcmEobm9kZXMsIGJsb2NrKSB7DQogICAgY29uc3QgcnVucz1bXTsNCiAgICBjb25zdCB3YWxrPShub2RlLCBmb3JtYXQ9e30pPT57DQogICAgICBpZihub2RlLm5vZGVUeXBlPT09Tm9kZS5URVhUX05PREUpew0KICAgICAgICBjb25zdCB2YWx1ZT0obm9kZS5ub2RlVmFsdWV8fCcnKS5yZXBsYWNlKC9bXHJcblx0XSsvZywnICcpLnJlcGxhY2UoLyB7Mix9L2csJyAnKTsNCiAgICAgICAgaWYoIXZhbHVlKSByZXR1cm47DQogICAgICAgIGNvbnN0IGZvbnQ9ZXNjKGZvcm1hdC5mb250fHwnTWljcm9zb2Z0IFlhSGVpJyk7DQogICAgICAgIGNvbnN0IHByb3BzPWA8dzpyRm9udHMgdzphc2NpaT0iJHtmb250fSIgdzplYXN0QXNpYT0iJHtmb250fSIvPjx3OnN6IHc6dmFsPSIyMiIvPiR7Zm9ybWF0LmJvbGQ/Jzx3OmIvPic6Jyd9JHtmb3JtYXQuaXRhbGljPyc8dzppLz4nOicnfSR7Zm9ybWF0LnVuZGVybGluZT9gPHc6dSB3OnZhbD0iJHtmb3JtYXQudW5kZXJsaW5lfSIvPmA6Jyd9JHtmb3JtYXQudmVydD9gPHc6dmVydEFsaWduIHc6dmFsPSIke2Zvcm1hdC52ZXJ0fSIvPmA6Jyd9YDsNCiAgICAgICAgcnVucy5wdXNoKGA8dzpyPjx3OnJQcj4ke3Byb3BzfTwvdzpyUHI+PHc6dCB4bWw6c3BhY2U9InByZXNlcnZlIj4ke2VzYyh2YWx1ZSl9PC93OnQ+PC93OnI+YCk7DQogICAgICAgIHJldHVybjsNCiAgICAgIH0NCiAgICAgIGlmKG5vZGUubm9kZVR5cGUhPT1Ob2RlLkVMRU1FTlRfTk9ERSkgcmV0dXJuOw0KICAgICAgY29uc3QgdGFnPW5vZGUudGFnTmFtZS50b0xvd2VyQ2FzZSgpOw0KICAgICAgaWYodGFnPT09J2JyJyl7cnVucy5wdXNoKCc8dzpyPjx3OmJyLz48L3c6cj4nKTtyZXR1cm47fQ0KICAgICAgY29uc3Qgc3R5bGU9bm9kZS5zdHlsZXx8e307DQogICAgICBjb25zdCBuZXh0PXsuLi5mb3JtYXR9Ow0KICAgICAgaWYodGFnPT09J2InfHx0YWc9PT0nc3Ryb25nJ3x8c3R5bGUuZm9udFdlaWdodD09PSdib2xkJ3x8TnVtYmVyKHN0eWxlLmZvbnRXZWlnaHQpPj02MDApIG5leHQuYm9sZD10cnVlOw0KICAgICAgaWYodGFnPT09J2knfHx0YWc9PT0nZW0nfHxzdHlsZS5mb250U3R5bGU9PT0naXRhbGljJykgbmV4dC5pdGFsaWM9dHJ1ZTsNCiAgICAgIGlmKHRhZz09PSd1J3x8U3RyaW5nKHN0eWxlLnRleHREZWNvcmF0aW9ufHwnJykuaW5jbHVkZXMoJ3VuZGVybGluZScpKSBuZXh0LnVuZGVybGluZT0nc2luZ2xlJzsNCiAgICAgIGlmKHRhZz09PSd3YXZlJykgbmV4dC51bmRlcmxpbmU9J3dhdmUnOw0KICAgICAgaWYodGFnPT09J2RvdCcpIG5leHQudW5kZXJsaW5lPSdkb3R0ZWQnOw0KICAgICAgaWYodGFnPT09J3N1cCcpIG5leHQudmVydD0nc3VwZXJzY3JpcHQnOw0KICAgICAgaWYodGFnPT09J3N1YicpIG5leHQudmVydD0nc3Vic2NyaXB0JzsNCiAgICAgIGlmKHN0eWxlLmZvbnRGYW1pbHkpIG5leHQuZm9udD1zdHlsZS5mb250RmFtaWx5LnNwbGl0KCcsJylbMF0ucmVwbGFjZSgvWyInXS9nLCcnKS50cmltKCk7DQogICAgICBmb3IoY29uc3QgY2hpbGQgb2Ygbm9kZS5jaGlsZE5vZGVzKSB3YWxrKGNoaWxkLG5leHQpOw0KICAgIH07DQogICAgZm9yKGNvbnN0IG5vZGUgb2Ygbm9kZXMpIHdhbGsobm9kZSk7DQogICAgaWYoIXJ1bnMubGVuZ3RofHwhbm9kZXMubWFwKG49Pm4udGV4dENvbnRlbnR8fCcnKS5qb2luKCcnKS50cmltKCkpIHJldHVybiAnJzsNCiAgICBjb25zdCBhbGlnbj1ibG9jaz8uc3R5bGU/LnRleHRBbGlnbjsNCiAgICBjb25zdCBpbmRlbnQ9YmxvY2s/LnN0eWxlPy50ZXh0SW5kZW50Ow0KICAgIGNvbnN0IHBQcj1gPHc6c3BhY2luZyB3OmJlZm9yZT0iMCIgdzphZnRlcj0iNzAiIHc6bGluZT0iMzAwIiB3OmxpbmVSdWxlPSJhdXRvIi8+JHthbGlnbj09PSdjZW50ZXInfHxhbGlnbj09PSdyaWdodCc/YDx3OmpjIHc6dmFsPSIke2FsaWdufSIvPmA6Jyd9JHtpbmRlbnQmJmluZGVudCE9PScwcHgnPyc8dzppbmQgdzpmaXJzdExpbmU9IjQyMCIvPic6Jyd9YDsNCiAgICByZXR1cm4gYDx3OnA+PHc6cFByPiR7cFByfTwvdzpwUHI+JHtydW5zLmpvaW4oJycpfTwvdzpwPmA7DQogIH0NCiAgZnVuY3Rpb24gZWRpdGFibGVDb250ZW50KG5vZGUpIHsNCiAgICBjb25zdCBwYXJhZ3JhcGhzPVtdOw0KICAgIGNvbnN0IGVtaXRDb250YWluZXI9Y29udGFpbmVyPT57DQogICAgICBsZXQgcGVuZGluZz1bXTsNCiAgICAgIGNvbnN0IGZsdXNoPSgpPT57Y29uc3QgcD1yaWNoUGFyYShwZW5kaW5nLGNvbnRhaW5lcik7aWYocClwYXJhZ3JhcGhzLnB1c2gocCk7cGVuZGluZz1bXTt9Ow0KICAgICAgZm9yKGNvbnN0IGNoaWxkIG9mIGNvbnRhaW5lci5jaGlsZE5vZGVzKXsNCiAgICAgICAgaWYoY2hpbGQubm9kZVR5cGU9PT1Ob2RlLkVMRU1FTlRfTk9ERSl7DQogICAgICAgICAgY29uc3QgdGFnPWNoaWxkLnRhZ05hbWUudG9Mb3dlckNhc2UoKTsNCiAgICAgICAgICBpZih0YWc9PT0nYnInKXtmbHVzaCgpO2NvbnRpbnVlO30NCiAgICAgICAgICBpZih0YWc9PT0ncCd8fHRhZz09PSdsaSd8fHRhZz09PSdibG9ja3F1b3RlJyl7DQogICAgICAgICAgICBmbHVzaCgpO2NvbnN0IHA9cmljaFBhcmEoWy4uLmNoaWxkLmNoaWxkTm9kZXNdLGNoaWxkKTtpZihwKXBhcmFncmFwaHMucHVzaChwKTtjb250aW51ZTsNCiAgICAgICAgICB9DQogICAgICAgICAgaWYodGFnPT09J3RhYmxlJyl7DQogICAgICAgICAgICBmbHVzaCgpOw0KICAgICAgICAgICAgZm9yKGNvbnN0IHJvdyBvZiBjaGlsZC5yb3dzKSBmb3IoY29uc3QgY2VsbCBvZiByb3cuY2VsbHMpew0KICAgICAgICAgICAgICBjb25zdCBwPXJpY2hQYXJhKFsuLi5jZWxsLmNoaWxkTm9kZXNdLGNlbGwpO2lmKHApcGFyYWdyYXBocy5wdXNoKHApOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgY29udGludWU7DQogICAgICAgICAgfQ0KICAgICAgICAgIGlmKHRhZz09PSdkaXYnJiZjaGlsZC5xdWVyeVNlbGVjdG9yKCdwLHRhYmxlLGRpdixsaScpKXtmbHVzaCgpO2VtaXRDb250YWluZXIoY2hpbGQpO2NvbnRpbnVlO30NCiAgICAgICAgfQ0KICAgICAgICBwZW5kaW5nLnB1c2goY2hpbGQpOw0KICAgICAgfQ0KICAgICAgZmx1c2goKTsNCiAgICB9Ow0KICAgIGVtaXRDb250YWluZXIobm9kZSk7DQogICAgcmV0dXJuIHBhcmFncmFwaHM7DQogIH0NCiAgLy8gQ29udmVydCBET00gYmxvY2tzIHRvIG5hdGl2ZSBXb3JkIHBhcmFncmFwaHMvdGFibGVzOyByYXN0ZXJpemUgb25seSBncmFwaGljYWwgbGVhdmVzLg0KICBhc3luYyBmdW5jdGlvbiBoeWJyaWRDb250ZW50KHJvb3QsIHJlZ2lzdGVySW1hZ2UsIG1heFdpZHRoKSB7DQogICAgY29uc3Qgcm9vdEZvbnQ9cGFyc2VGbG9hdChnZXRDb21wdXRlZFN0eWxlKHJvb3QpLmZvbnRTaXplKXx8MTQ7DQogICAgY29uc3QgdW5pdD0yMio2MzUwL3Jvb3RGb250OyAvLyBweCAtPiBFTVUsIG1hdGNoaW5nIDExcHQgYm9keSB0ZXh0LiBPbmUgdHdpcCBpcyA2MzUgRU1VLg0KICAgIGNvbnN0IGhpZGRlbj1uPT5uLm5vZGVUeXBlPT09MSYmKG4uaGlkZGVufHxnZXRDb21wdXRlZFN0eWxlKG4pLmRpc3BsYXk9PT0nbm9uZSd8fGdldENvbXB1dGVkU3R5bGUobikudmlzaWJpbGl0eT09PSdoaWRkZW4nKTsNCiAgICBjb25zdCBjams9Zj0+L+Wui+S9k3xzaW1zdW58bnNpbXN1bnzpu5HkvZN8aGVpdGl85qW35L2TfGthaXRpfOS7v+Wui3xmYW5nc29uZ3zpm4Xpu5F8eWFoZWl85b6u6L2vfOiLueaWuXxwaW5nZmFuZ3zmgJ3mupB8c291cmNlIGhhbnxub3RvIHNhbnMgY2prfHN0a2FpdGl8c3Rzb25nL2kudGVzdChmKTsNCiAgICBjb25zdCBwYWludD0oc291cmNlLHcsaCxzY2FsZSk9PnsNCiAgICAgIGNvbnN0IGNhbnZhcz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKTsNCiAgICAgIGNhbnZhcy53aWR0aD1NYXRoLm1heCgxLE1hdGguY2VpbCh3KnNjYWxlKSk7Y2FudmFzLmhlaWdodD1NYXRoLm1heCgxLE1hdGguY2VpbChoKnNjYWxlKSk7DQogICAgICBjb25zdCBjdHg9Y2FudmFzLmdldENvbnRleHQoJzJkJyk7Y3R4LmZpbGxTdHlsZT0nI2ZmZmZmZic7Y3R4LmZpbGxSZWN0KDAsMCxjYW52YXMud2lkdGgsY2FudmFzLmhlaWdodCk7DQogICAgICBjdHguZHJhd0ltYWdlKHNvdXJjZSwwLDAsY2FudmFzLndpZHRoLGNhbnZhcy5oZWlnaHQpOw0KICAgICAgcmV0dXJuIGRhdGFCeXRlcyhjYW52YXMudG9EYXRhVVJMKCdpbWFnZS9wbmcnKSk7DQogICAgfTsNCiAgICBjb25zdCBjb21wbGV4PW49PnsNCiAgICAgIGlmKG4ubm9kZVR5cGUhPT0xKSByZXR1cm4gZmFsc2U7DQogICAgICBpZihuLm1hdGNoZXMoJ3N2ZyxjYW52YXMsbWF0aCxtangtY29udGFpbmVyLC5NYXRoSmF4LC5rYXRleCxydWJ5LG9iamVjdCxlbWJlZCxpZnJhbWUnKSkgcmV0dXJuIHRydWU7DQogICAgICBjb25zdCB0ZXh0PShuLnRleHRDb250ZW50fHwnJykucmVwbGFjZSgvXHMrL2csJycpLmxlbmd0aDsNCiAgICAgIGNvbnN0IGJnPWdldENvbXB1dGVkU3R5bGUobikuYmFja2dyb3VuZEltYWdlfHwnJzsNCiAgICAgIGlmKC91cmxcKC9pLnRlc3QoYmcpJiZ0ZXh0PDEyKSByZXR1cm4gdHJ1ZTsNCiAgICAgIGNvbnN0IGFicz1bLi4ubi5jaGlsZHJlbl0uc29tZShjPT5bJ2Fic29sdXRlJywnZml4ZWQnXS5pbmNsdWRlcyhnZXRDb21wdXRlZFN0eWxlKGMpLnBvc2l0aW9uKSk7DQogICAgICByZXR1cm4gYWJzJiYobi5xdWVyeVNlbGVjdG9yKCdpbWcsc3ZnLGNhbnZhcycpfHx0ZXh0PDEyKTsNCiAgICB9Ow0KICAgIGNvbnN0IGNvbG9yPXY9Pntjb25zdCBtPVN0cmluZyh2KS5tYXRjaCgvXnJnYmE/XCgoXGQrKSxccyooXGQrKSxccyooXGQrKS8pO3JldHVybiBtP20uc2xpY2UoMSkubWFwKHg9PigreCkudG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDIsJzAnKSkuam9pbignJyk6JzAwMDAwMCc7fTsNCiAgICBjb25zdCB0ZXh0UnVuPSh2YWx1ZSxlbCxleHRyYT0nJyk9PnsNCiAgICAgIGNvbnN0IHM9Z2V0Q29tcHV0ZWRTdHlsZShlbCk7DQogICAgICBjb25zdCB2ZXJ0PWVsLmNsb3Nlc3QoJ3N1cCxzdWInKTsNCiAgICAgIGNvbnN0IGZhbWlsaWVzPShlbC5nZXRBdHRyaWJ1dGUoJ3dvcmQtZm9udCcpfHxlbC5jbG9zZXN0KCdbd29yZC1mb250XScpPy5nZXRBdHRyaWJ1dGUoJ3dvcmQtZm9udCcpfHxzLmZvbnRGYW1pbHl8fCcnKS5zcGxpdCgnLCcpLm1hcCh4PT54LnJlcGxhY2UoL1siJ10vZywnJykudHJpbSgpKS5maWx0ZXIoQm9vbGVhbik7DQogICAgICBjb25zdCBhc2NpaT1lc2MoZmFtaWxpZXMuZmluZChmPT5mJiYhY2prKGYpKXx8J1RpbWVzIE5ldyBSb21hbicpOw0KICAgICAgY29uc3QgZWFzdFJhdz1mYW1pbGllcy5maW5kKGNqayl8fCflrovkvZMnOw0KICAgICAgY29uc3QgZWFzdD1lc2MoL3NpbXN1bnxuc2ltc3VuL2kudGVzdChlYXN0UmF3KT8n5a6L5L2TJzoveWFoZWkvaS50ZXN0KGVhc3RSYXcpPyflvq7ova/pm4Xpu5EnOmVhc3RSYXcpOw0KICAgICAgY29uc3QgZm9udFNpemU9dmVydD8yMjpNYXRoLm1heCgxMixNYXRoLm1pbig0OCxNYXRoLnJvdW5kKChwYXJzZUZsb2F0KHMuZm9udFNpemUpfHxyb290Rm9udCkvcm9vdEZvbnQqMjIpKSk7DQogICAgICBjb25zdCBkZWNvPXMudGV4dERlY29yYXRpb25MaW5lfHwnJzsNCiAgICAgIGNvbnN0IHU9ZWwuY2xvc2VzdCgnd2F2ZScpPyd3YXZlJzooZWwuY2xvc2VzdCgndScpfHxkZWNvLmluY2x1ZGVzKCd1bmRlcmxpbmUnKSk/J3NpbmdsZSc6Jyc7DQogICAgICBjb25zdCBlbT1lbC5jbG9zZXN0KCdkb3QnKT8nPHc6ZW0gdzp2YWw9InVuZGVyRG90Ii8+JzonJzsNCiAgICAgIGNvbnN0IHByb3BzPWA8dzpyRm9udHMgdzphc2NpaT0iJHthc2NpaX0iIHc6aEFuc2k9IiR7YXNjaWl9IiB3OmVhc3RBc2lhPSIke2Vhc3R9IiB3OmNzPSIke2FzY2lpfSIvPiR7K3MuZm9udFdlaWdodD49NjAwfHxlbC5jbG9zZXN0KCdiLHN0cm9uZycpPyc8dzpiLz4nOicnfSR7cy5mb250U3R5bGU9PT0naXRhbGljJ3x8ZWwuY2xvc2VzdCgnaSxlbScpPyc8dzppLz4nOicnfSR7ZGVjby5pbmNsdWRlcygnbGluZS10aHJvdWdoJyk/Jzx3OnN0cmlrZS8+JzonJ308dzpjb2xvciB3OnZhbD0iJHtjb2xvcihzLmNvbG9yKX0iLz48dzpzeiB3OnZhbD0iJHtmb250U2l6ZX0iLz4ke3U/YDx3OnUgdzp2YWw9IiR7dX0iLz5gOicnfSR7ZW19JHt2ZXJ0P2A8dzp2ZXJ0QWxpZ24gdzp2YWw9IiR7dmVydC50YWdOYW1lPT09J1NVUCc/J3N1cGVyc2NyaXB0Jzonc3Vic2NyaXB0J30iLz5gOicnfSR7ZXh0cmF9YDsNCiAgICAgIHJldHVybiBgPHc6cj48dzpyUHI+JHtwcm9wc308L3c6clByPjx3OnQgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+JHtlc2ModmFsdWUpfTwvdzp0PjwvdzpyPmA7DQogICAgfTsNCiAgICBjb25zdCBncmFwaGljPWFzeW5jKGVsLHdpZHRoKT0+ew0KICAgICAgY29uc3QgcmVjdD1lbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsNCiAgICAgIGlmKCFyZWN0LndpZHRofHwhcmVjdC5oZWlnaHQpIHRocm93IG5ldyBFcnJvcign5pyJ5Zu+5b2i5rKh5pyJ5Y+v55So5bC65a+477yM6K+35b6F6aG16Z2i5a6M5pW05pi+56S65ZCO5YaN5a+85Ye644CCJyk7DQogICAgICBsZXQgZGF0YSxleHRlbnNpb249J3BuZyc7DQogICAgICBpZihlbC50YWdOYW1lPT09J0lNRycpew0KICAgICAgICBpZighZWwuY29tcGxldGV8fCFlbC5uYXR1cmFsV2lkdGgpIHRocm93IG5ldyBFcnJvcign5pyJ5YWs5byP5oiW5Zu+54mH5pyq6IO95Yqg6L2977yM5bey5YGc5q2i5a+85Ye65Lul5YWN5ryP6aKY44CCJyk7DQogICAgICAgIGNvbnN0IHNyYz1lbC5jdXJyZW50U3JjfHxlbC5zcmN8fCcnOw0KICAgICAgICBpZigvXmRhdGE6aW1hZ2VcLyhwbmd8anBlZyk7YmFzZTY0LC9pLnRlc3Qoc3JjKSl7DQogICAgICAgICAgZGF0YT1kYXRhQnl0ZXMoc3JjKTtleHRlbnNpb249L2pwZWcvaS50ZXN0KHNyYyk/J2pwZyc6J3BuZyc7DQogICAgICAgIH1lbHNlew0KICAgICAgICAgIGNvbnN0IGlzU3ZnPS9zdmcvaS50ZXN0KHNyYyk7DQogICAgICAgICAgY29uc3Qgc2NhbGU9TWF0aC5taW4oNDA5Ni9yZWN0LndpZHRoLDQwOTYvcmVjdC5oZWlnaHQsTWF0aC5tYXgoMyxpc1N2Zz8zOmVsLm5hdHVyYWxXaWR0aC9yZWN0LndpZHRoKSk7DQogICAgICAgICAgZGF0YT1wYWludChlbCxyZWN0LndpZHRoLHJlY3QuaGVpZ2h0LHNjYWxlKTsNCiAgICAgICAgfQ0KICAgICAgfWVsc2UgaWYoZWwudGFnTmFtZS50b0xvd2VyQ2FzZSgpPT09J3N2Zycpew0KICAgICAgICBjb25zdCBzdmc9ZWwuY2xvbmVOb2RlKHRydWUpO3N2Zy5zZXRBdHRyaWJ1dGUoJ3htbG5zJywnaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnKTsNCiAgICAgICAgY29uc3Qgb3JpZ2luYWw9W2VsLC4uLmVsLnF1ZXJ5U2VsZWN0b3JBbGwoJyonKV0sY29waWVzPVtzdmcsLi4uc3ZnLnF1ZXJ5U2VsZWN0b3JBbGwoJyonKV07DQogICAgICAgIG9yaWdpbmFsLmZvckVhY2goKG4saSk9PnsNCiAgICAgICAgICBjb25zdCBzPWdldENvbXB1dGVkU3R5bGUobik7DQogICAgICAgICAgZm9yKGNvbnN0IHAgb2YgWydmb250LWZhbWlseScsJ2ZvbnQtc2l6ZScsJ2ZvbnQtd2VpZ2h0JywnZm9udC1zdHlsZScsJ2ZpbGwnLCdzdHJva2UnLCdzdHJva2Utd2lkdGgnLCdjb2xvcicsJ29wYWNpdHknLCd0ZXh0LWFuY2hvciddKXsNCiAgICAgICAgICAgIGNvbnN0IHY9cy5nZXRQcm9wZXJ0eVZhbHVlKHApO2lmKHYpY29waWVzW2ldLnN0eWxlLnNldFByb3BlcnR5KHAsdik7DQogICAgICAgICAgfQ0KICAgICAgICAgIGNvbnN0IGZpbGw9cy5nZXRQcm9wZXJ0eVZhbHVlKCdmaWxsJyk7DQogICAgICAgICAgaWYoIWZpbGx8fGZpbGw9PT0nbm9uZSd8fGZpbGw9PT0ndHJhbnNwYXJlbnQnKSBjb3BpZXNbaV0uc3R5bGUuc2V0UHJvcGVydHkoJ2ZpbGwnLHMuY29sb3J8fCcjMDAwJyk7DQogICAgICAgIH0pOw0KICAgICAgICBpZighc3ZnLmdldEF0dHJpYnV0ZSgndmlld0JveCcpKSBzdmcuc2V0QXR0cmlidXRlKCd2aWV3Qm94JywnMCAwICcrcmVjdC53aWR0aCsnICcrcmVjdC5oZWlnaHQpOw0KICAgICAgICBzdmcuc2V0QXR0cmlidXRlKCd3aWR0aCcscmVjdC53aWR0aCk7c3ZnLnNldEF0dHJpYnV0ZSgnaGVpZ2h0JyxyZWN0LmhlaWdodCk7DQogICAgICAgIGNvbnN0IGJnPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygnaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnLCdyZWN0Jyk7DQogICAgICAgIGJnLnNldEF0dHJpYnV0ZSgnd2lkdGgnLCcxMDAlJyk7Ymcuc2V0QXR0cmlidXRlKCdoZWlnaHQnLCcxMDAlJyk7Ymcuc2V0QXR0cmlidXRlKCdmaWxsJywnI2ZmZmZmZicpOw0KICAgICAgICBzdmcuaW5zZXJ0QmVmb3JlKGJnLHN2Zy5maXJzdENoaWxkKTsNCiAgICAgICAgY29uc3QgaW1nPW5ldyBJbWFnZSgpO2ltZy5zcmM9J2RhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsJytidG9hKHVuZXNjYXBlKGVuY29kZVVSSUNvbXBvbmVudChuZXcgWE1MU2VyaWFsaXplcigpLnNlcmlhbGl6ZVRvU3RyaW5nKHN2ZykpKSk7DQogICAgICAgIGF3YWl0IGltZy5kZWNvZGUoKTsNCiAgICAgICAgZGF0YT1wYWludChpbWcscmVjdC53aWR0aCxyZWN0LmhlaWdodCwzKTsNCiAgICAgIH1lbHNlIGlmKGVsLnRhZ05hbWU9PT0nQ0FOVkFTJyl7DQogICAgICAgIGRhdGE9cGFpbnQoZWwscmVjdC53aWR0aCxyZWN0LmhlaWdodCxNYXRoLm1pbigzLGVsLndpZHRoL01hdGgubWF4KDEscmVjdC53aWR0aCkpfHwzKTsNCiAgICAgIH1lbHNlew0KICAgICAgICBpZihlbC5tYXRjaGVzKCdpZnJhbWUsb2JqZWN0LGVtYmVkJykpIHRocm93IG5ldyBFcnJvcign5b2T5YmN6aKY55uu5ZCr5bWM5YWl5byP5YaF5a6577yM6K+35pS555So5pW06aKY5Zu+54mH5qih5byP5bm25qOA5p+l57uT5p6c44CCJyk7DQogICAgICAgIGNvbnN0IGNhbnZhcz1hd2FpdCBodG1sMmNhbnZhcyhlbCx7YmFja2dyb3VuZENvbG9yOicjZmZmZmZmJyxzY2FsZTozLHVzZUNPUlM6dHJ1ZSxhbGxvd1RhaW50OmZhbHNlLGxvZ2dpbmc6ZmFsc2V9KTsNCiAgICAgICAgZGF0YT1kYXRhQnl0ZXMoY2FudmFzLnRvRGF0YVVSTCgnaW1hZ2UvcG5nJykpOw0KICAgICAgfQ0KICAgICAgY29uc3QgcmF0aW89TWF0aC5taW4odW5pdCx3aWR0aC9yZWN0LndpZHRoLDkuNCo5MTQ0MDAvcmVjdC5oZWlnaHQpOw0KICAgICAgY29uc3QgY3g9TWF0aC5tYXgoMSxNYXRoLnJvdW5kKHJlY3Qud2lkdGgqcmF0aW8pKSxjeT1NYXRoLm1heCgxLE1hdGgucm91bmQocmVjdC5oZWlnaHQqcmF0aW8pKTsNCiAgICAgIGNvbnN0IGlkPXJlZ2lzdGVySW1hZ2UoZGF0YSxleHRlbnNpb24pOw0KICAgICAgbGV0IGRyYXdpbmc9aW1hZ2VSdW4oaWQsY3gsY3ksJ+WFrOW8j+aIluaPkuWbvicsZXh0ZW5zaW9uKTsNCiAgICAgIGNvbnN0IHZhPWdldENvbXB1dGVkU3R5bGUoZWwpLnZlcnRpY2FsQWxpZ247DQogICAgICBpZih2YT09PSdtaWRkbGUnJiZyZWN0LmhlaWdodDw0Mil7DQogICAgICAgIGNvbnN0IHBvcz1NYXRoLnJvdW5kKGN5LzEyNzAwLTExKTsNCiAgICAgICAgaWYocG9zKSBkcmF3aW5nPWRyYXdpbmcucmVwbGFjZSgnPHc6cj4nLCc8dzpyPjx3OnJQcj48dzpwb3NpdGlvbiB3OnZhbD0iJysoLXBvcykrJyIvPjwvdzpyUHI+Jyk7DQogICAgICB9DQogICAgICByZXR1cm4gZHJhd2luZzsNCiAgICB9Ow0KICAgIGNvbnN0IGlubGluZT1hc3luYyhub2RlLHdpZHRoKT0+ew0KICAgICAgaWYobm9kZS5ub2RlVHlwZT09PTMpew0KICAgICAgICBjb25zdCBwYXJlbnQ9bm9kZS5wYXJlbnRFbGVtZW50O2lmKCFwYXJlbnQpIHJldHVybiAnJzsNCiAgICAgICAgY29uc3Qgcz1nZXRDb21wdXRlZFN0eWxlKHBhcmVudCk7DQogICAgICAgIGNvbnN0IHJhdz1ub2RlLm5vZGVWYWx1ZXx8Jyc7DQogICAgICAgIGxldCB0ZXh0PS9wcmUvLnRlc3Qocy53aGl0ZVNwYWNlKT9yYXc6cmF3LnJlcGxhY2UoL1tcclxuXHRdKy9nLCcgJykucmVwbGFjZSgvIHsyLH0vZywnICcpOw0KICAgICAgICBpZighL3ByZS8udGVzdChzLndoaXRlU3BhY2UpKXsNCiAgICAgICAgICBpZigvXltcclxuXHRdLy50ZXN0KHJhdykpIHRleHQ9dGV4dC5yZXBsYWNlKC9eIC8sJycpOw0KICAgICAgICAgIGlmKC9bXHJcblx0XSQvLnRlc3QocmF3KSkgdGV4dD10ZXh0LnJlcGxhY2UoLyAkLywnJyk7DQogICAgICAgIH0NCiAgICAgICAgaWYoIXRleHR8fHRleHQ9PT0nICcpIHJldHVybiAnJzsNCiAgICAgICAgcmV0dXJuIHRleHRSdW4odGV4dCxwYXJlbnQpOw0KICAgICAgfQ0KICAgICAgaWYobm9kZS5ub2RlVHlwZSE9PTF8fGhpZGRlbihub2RlKXx8bm9kZS5tYXRjaGVzKCdzY3JpcHQsc3R5bGUsbm9zY3JpcHQnKSkgcmV0dXJuICcnOw0KICAgICAgaWYobm9kZS50YWdOYW1lPT09J0JSJykgcmV0dXJuICc8dzpyPjx3OmJyLz48L3c6cj4nOw0KICAgICAgaWYobm9kZS50YWdOYW1lPT09J0JLJyl7DQogICAgICAgIGNvbnN0IG49TWF0aC5tYXgoNixOdW1iZXIobm9kZS5nZXRBdHRyaWJ1dGUoJ3NpemUnKSl8fDEwKTsNCiAgICAgICAgbGV0IGZpbGw9KG5vZGUudGV4dENvbnRlbnR8fCcnKS5yZXBsYWNlKC9ccysvZywnJyk7DQogICAgICAgIGlmKCFmaWxsKSBmaWxsPSdfJy5yZXBlYXQobik7DQogICAgICAgIGVsc2UgaWYoL15cZHsxLDN9JC8udGVzdChmaWxsKSl7DQogICAgICAgICAgY29uc3QgcGFkPU1hdGgubWF4KDIsbi1maWxsLmxlbmd0aCksbGVmdD1NYXRoLmNlaWwocGFkLzIpOw0KICAgICAgICAgIGZpbGw9J18nLnJlcGVhdChsZWZ0KStmaWxsKydfJy5yZXBlYXQocGFkLWxlZnQpOw0KICAgICAgICB9DQogICAgICAgIHJldHVybiB0ZXh0UnVuKGZpbGwsbm9kZSwnPHc6dSB3OnZhbD0ic2luZ2xlIi8+Jyk7DQogICAgICB9DQogICAgICBpZihub2RlLnRhZ05hbWU9PT0nSU1HJ3x8Y29tcGxleChub2RlKSkgcmV0dXJuIGdyYXBoaWMobm9kZSx3aWR0aCk7DQogICAgICBsZXQgb3V0PScnO2Zvcihjb25zdCBjaGlsZCBvZiBub2RlLmNoaWxkTm9kZXMpIG91dCs9YXdhaXQgaW5saW5lKGNoaWxkLHdpZHRoKTtyZXR1cm4gb3V0Ow0KICAgIH07DQogICAgY29uc3QgbGV0dGVyQXRvbT0vXltBLUhdW++8ji7jgIEp77yJXS8sbnVtQXRvbT0vXlxkezEsM31bLu+8juOAgSnvvIldXHMqJC87DQogICAgY29uc3QgcGxhaW49bj0+KG4udGV4dENvbnRlbnR8fCcnKS5yZXBsYWNlKC9ccysvZywnICcpLnRyaW0oKTsNCiAgICBjb25zdCBvcHRNYXJrcz10PT4oU3RyaW5nKHQpLm1hdGNoKC9bQS1IXVvvvI4u44CBKe+8iV0vZyl8fFtdKTsNCiAgICBjb25zdCBudW1NYXJrcz10PT4oU3RyaW5nKHQpLm1hdGNoKC9cZHsxLDN9Wy7vvI7jgIEp77yJXS9nKXx8W10pOw0KICAgIC8vIEEgY29udGFpbmVyIHRoYXQgbWVyZWx5IHN0YXJ0cyB3aXRoICJB77yOIiBtYXkgaG9sZCBldmVyeSBvcHRpb24gb2YgdGhlIHJvdy4NCiAgICAvLyBUcmVhdGluZyB0aGF0IHdob2xlIGNvbnRhaW5lciBhcyBvbmUgb3B0aW9uIGlzIHdoYXQgZ2x1ZWQg5a6M5b2iIGNob2ljZXMgdG9nZXRoZXIuDQogICAgY29uc3QgYXRvbUtpbmQ9bj0+ew0KICAgICAgaWYobi5ub2RlVHlwZT09PTMpew0KICAgICAgICBjb25zdCB0PXBsYWluKG4pOw0KICAgICAgICBpZihudW1BdG9tLnRlc3QodCkpIHJldHVybiAnbnVtJzsNCiAgICAgICAgaWYobGV0dGVyQXRvbS50ZXN0KHQpJiZvcHRNYXJrcyh0KS5sZW5ndGg9PT0xJiZudW1NYXJrcyh0KS5sZW5ndGg9PT0wKSByZXR1cm4gJ29wdCc7DQogICAgICAgIHJldHVybiAnJzsNCiAgICAgIH0NCiAgICAgIGlmKG4ubm9kZVR5cGUhPT0xfHxoaWRkZW4obil8fG4ubWF0Y2hlcygnYnIsdGFibGUsYmssaW1nLHNjcmlwdCxzdHlsZSxub3NjcmlwdCcpKSByZXR1cm4gJyc7DQogICAgICBpZihjb21wbGV4KG4pKSByZXR1cm4gJyc7DQogICAgICBjb25zdCB0PXBsYWluKG4pOw0KICAgICAgaWYob3B0TWFya3ModCkubGVuZ3RoPjF8fChudW1NYXJrcyh0KS5sZW5ndGg+PTEmJm9wdE1hcmtzKHQpLmxlbmd0aD49MSkpIHJldHVybiAnJzsNCiAgICAgIGlmKG51bUF0b20udGVzdCh0KSkgcmV0dXJuICdudW0nOw0KICAgICAgaWYobGV0dGVyQXRvbS50ZXN0KHQpJiZvcHRNYXJrcyh0KS5sZW5ndGg9PT0xJiYhbi5xdWVyeVNlbGVjdG9yKCd0YWJsZSxwLGRpdix1bCxvbCxiaycpKSByZXR1cm4gJ29wdCc7DQogICAgICByZXR1cm4gJyc7DQogICAgfTsNCiAgICBjb25zdCBwYXJzZUNsb3plU3RyaW5nPXJhdz0+ew0KICAgICAgY29uc3QgdGV4dD1TdHJpbmcocmF3KS5yZXBsYWNlKC9bXHUyMDBiXHUwMGFkXHVmZWZmXS9nLCcnKS5yZXBsYWNlKC9b77yQLe+8mV0vZyxjaD0+U3RyaW5nLmZyb21DaGFyQ29kZShjaC5jaGFyQ29kZUF0KDApLTB4RkYxMCs0OCkpLnJlcGxhY2UoL1x1MDBhMHxcdTMwMDAvZywnICcpLnJlcGxhY2UoL1sgXHRcclxuXSsvZywnICcpLnRyaW0oKTsNCiAgICAgIGlmKCF0ZXh0fHx0ZXh0Lmxlbmd0aD44MDAwKSByZXR1cm4gbnVsbDsNCiAgICAgIGNvbnN0IHJlPS8oXGR7MSwzfSlccyooWy7vvI7Ct+ODu+OAgSnvvIldKVxzKnwoW0EtSF0pXHMqKFsu77yOwrfjg7vjgIEp77yJXSlccyovZzsNCiAgICAgIGNvbnN0IG1hcmtzPVtdOyBsZXQgbTsNCiAgICAgIHdoaWxlKChtPXJlLmV4ZWModGV4dCkpKSBtYXJrcy5wdXNoKHtpOm0uaW5kZXgsZW5kOnJlLmxhc3RJbmRleCxudW06bVsxXSxsZXR0ZXI6bVszXSxwdW5jdDptWzJdfHxtWzRdfSk7DQogICAgICBpZihtYXJrcy5sZW5ndGg8NCkgcmV0dXJuIG51bGw7DQogICAgICBpZih0ZXh0LnNsaWNlKDAsbWFya3NbMF0uaSkudHJpbSgpKSByZXR1cm4gbnVsbDsNCiAgICAgIGNvbnN0IGl0ZW1zPVtdOw0KICAgICAgZm9yKGxldCBrPTA7azxtYXJrcy5sZW5ndGg7aysrKXsNCiAgICAgICAgY29uc3QgYm9keT10ZXh0LnNsaWNlKG1hcmtzW2tdLmVuZCxrKzE8bWFya3MubGVuZ3RoP21hcmtzW2srMV0uaTp0ZXh0Lmxlbmd0aCkucmVwbGFjZSgvXHMrL2csJyAnKS50cmltKCk7DQogICAgICAgIGNvbnN0IG1rPW1hcmtzW2tdOw0KICAgICAgICBpZihtay5udW0pew0KICAgICAgICAgIGlmKGJvZHkpIHJldHVybiBudWxsOw0KICAgICAgICAgIGl0ZW1zLnB1c2goe2tpbmQ6J251bScsdGV4dDptay5udW0rKG1rLnB1bmN0PT09Jy4nfHxtay5wdW5jdD09PSfvvI4nP21rLnB1bmN0OifvvI4nKX0pOw0KICAgICAgICB9ZWxzZXsNCiAgICAgICAgICBpZighYm9keXx8Ym9keS5sZW5ndGg+NDgpIHJldHVybiBudWxsOw0KICAgICAgICAgIGNvbnN0IHB1bmN0PW1rLnB1bmN0PT09Jy4nfHxtay5wdW5jdD09PSfvvI4nP21rLnB1bmN0OifvvI4nOw0KICAgICAgICAgIGl0ZW1zLnB1c2goe2tpbmQ6J29wdCcsdGV4dDptay5sZXR0ZXIrcHVuY3QrYm9keX0pOw0KICAgICAgICB9DQogICAgICB9DQogICAgICBjb25zdCByb3dzPVtdOyBsZXQgaT0wOw0KICAgICAgd2hpbGUoaTxpdGVtcy5sZW5ndGgpew0KICAgICAgICBpZihpdGVtc1tpXS5raW5kIT09J251bScpIHJldHVybiBudWxsOw0KICAgICAgICBjb25zdCBudW09aXRlbXNbaSsrXTsgY29uc3Qgb3B0cz1bXTsNCiAgICAgICAgd2hpbGUoaTxpdGVtcy5sZW5ndGgmJml0ZW1zW2ldLmtpbmQ9PT0nb3B0Jykgb3B0cy5wdXNoKGl0ZW1zW2krK10pOw0KICAgICAgICBpZihvcHRzLmxlbmd0aDwzfHxvcHRzLmxlbmd0aD43KSByZXR1cm4gbnVsbDsNCiAgICAgICAgaWYob3B0c1swXS50ZXh0WzBdIT09J0EnfHxvcHRzLnNvbWUoKG8sayk9Pm8udGV4dC5jaGFyQ29kZUF0KDApIT09NjUraykpIHJldHVybiBudWxsOw0KICAgICAgICByb3dzLnB1c2goe251bSxvcHRzfSk7DQogICAgICB9DQogICAgICByZXR1cm4gcm93cy5sZW5ndGg/cm93czpudWxsOw0KICAgIH07DQogICAgY29uc3Qgc3BsaXRPcHRpb25UZXh0PSh0LG5vZGUpPT57DQogICAgICBjb25zdCByb3dzPXBhcnNlQ2xvemVTdHJpbmcodCk7DQogICAgICBpZighcm93cykgcmV0dXJuIG51bGw7DQogICAgICBjb25zdCBvdXQ9W107DQogICAgICBmb3IoY29uc3Qgcm93IG9mIHJvd3Mpew0KICAgICAgICBvdXQucHVzaCh7a2luZDonbnVtJyxub2RlLHRleHQ6cm93Lm51bS50ZXh0fSk7DQogICAgICAgIGZvcihjb25zdCBvIG9mIHJvdy5vcHRzKSBvdXQucHVzaCh7a2luZDonb3B0Jyxub2RlLHRleHQ6by50ZXh0fSk7DQogICAgICB9DQogICAgICByZXR1cm4gb3V0Lmxlbmd0aD49ND9vdXQ6bnVsbDsNCiAgICB9Ow0KICAgIGNvbnN0IGNvbGxlY3RBdG9tcz1ub2Rlcz0+ew0KICAgICAgY29uc3Qgb3V0PVtdOw0KICAgICAgY29uc3Qgd2Fsaz1uPT57DQogICAgICAgIGlmKG4ubm9kZVR5cGU9PT0zKXsNCiAgICAgICAgICBjb25zdCB0PShuLm5vZGVWYWx1ZXx8JycpLnJlcGxhY2UoL1tcclxuXHRdKy9nLCcgJykucmVwbGFjZSgvIHsyLH0vZywnICcpLnRyaW0oKTsNCiAgICAgICAgICBpZighdCkgcmV0dXJuOw0KICAgICAgICAgIGNvbnN0IGtpbmQ9YXRvbUtpbmQobik7DQogICAgICAgICAgaWYoa2luZCl7b3V0LnB1c2goe2tpbmQsbm9kZTpufSk7cmV0dXJuO30NCiAgICAgICAgICBjb25zdCBwaWVjZXM9c3BsaXRPcHRpb25UZXh0KHQsbi5wYXJlbnRFbGVtZW50fHxuKTsNCiAgICAgICAgICBpZihwaWVjZXMpe291dC5wdXNoKC4uLnBpZWNlcyk7cmV0dXJuO30NCiAgICAgICAgICBvdXQucHVzaCh7a2luZDondGV4dCcsbm9kZTpufSk7DQogICAgICAgICAgcmV0dXJuOw0KICAgICAgICB9DQogICAgICAgIGlmKG4ubm9kZVR5cGUhPT0xfHxoaWRkZW4obikpIHJldHVybjsNCiAgICAgICAgaWYobi50YWdOYW1lPT09J0JSJyl7b3V0LnB1c2goe2tpbmQ6J2JyJyxub2RlOm59KTtyZXR1cm47fQ0KICAgICAgICBjb25zdCBraW5kPWF0b21LaW5kKG4pOw0KICAgICAgICBpZihraW5kKXtvdXQucHVzaCh7a2luZCxub2RlOm59KTtyZXR1cm47fQ0KICAgICAgICBpZighY29tcGxleChuKSYmbi50YWdOYW1lIT09J0lNRycmJm4udGFnTmFtZSE9PSdCSycmJm4udGFnTmFtZSE9PSdUQUJMRScpew0KICAgICAgICAgIGZvcihjb25zdCBjIG9mIG4uY2hpbGROb2Rlcykgd2FsayhjKTsNCiAgICAgICAgICByZXR1cm47DQogICAgICAgIH0NCiAgICAgICAgb3V0LnB1c2goe2tpbmQ6J3RleHQnLG5vZGU6bn0pOw0KICAgICAgfTsNCiAgICAgIGZvcihjb25zdCBuIG9mIG5vZGVzKSB3YWxrKG4pOw0KICAgICAgcmV0dXJuIG91dDsNCiAgICB9Ow0KICAgIGNvbnN0IG9wdGlvbkxhYmVsPW89PihvLnRleHR8fHBsYWluKG8ubm9kZSkpLnJlcGxhY2UoL1xzKy9nLCcgJykudHJpbSgpOw0KICAgIGNvbnN0IG5vcm1hbGl6ZUF0b21zPWF0b21zPT57DQogICAgICBjb25zdCBvdXQ9W107DQogICAgICBmb3IobGV0IGk9MDtpPGF0b21zLmxlbmd0aDtpKyspew0KICAgICAgICBjb25zdCBhPWF0b21zW2ldOw0KICAgICAgICBpZihhLmtpbmQhPT0nb3B0Jyl7b3V0LnB1c2goYSk7Y29udGludWU7fQ0KICAgICAgICBjb25zdCBsYWJlbD1vcHRpb25MYWJlbChhKTsNCiAgICAgICAgaWYoL15bQS1IXVvvvI4u44CBKe+8iV0kLy50ZXN0KGxhYmVsKSl7DQogICAgICAgICAgY29uc3Qgd29yZHM9W107DQogICAgICAgICAgd2hpbGUoaSsxPGF0b21zLmxlbmd0aCYmYXRvbXNbaSsxXS5raW5kPT09J3RleHQnKXsNCiAgICAgICAgICAgIGNvbnN0IG5leHQ9YXRvbXNbaSsxXTsNCiAgICAgICAgICAgIGNvbnN0IHB0PXBsYWluKG5leHQubm9kZSk7DQogICAgICAgICAgICBpZighcHQpeyBpZihuZXh0Lm5vZGUubm9kZVR5cGU9PT0xKSBicmVhazsgaSsrOyBjb250aW51ZTsgfQ0KICAgICAgICAgICAgaWYocHQubGVuZ3RoPjgwKSBicmVhazsNCiAgICAgICAgICAgIHdvcmRzLnB1c2gocHQpO2krKzsNCiAgICAgICAgICB9DQogICAgICAgICAgY29uc3QgZ2FwPS9b77yO44CBXSQvLnRlc3QobGFiZWwpPycnOicgJzsNCiAgICAgICAgICBjb25zdCBub2RlPWEubm9kZS5ub2RlVHlwZT09PTE/YS5ub2RlOihhLm5vZGUucGFyZW50RWxlbWVudHx8YS5ub2RlKTsNCiAgICAgICAgICBvdXQucHVzaCh7a2luZDonb3B0Jyxub2RlLHRleHQ6KGxhYmVsK2dhcCt3b3Jkcy5qb2luKCcgJykpLnRyaW0oKX0pOw0KICAgICAgICB9ZWxzZSBvdXQucHVzaCh7a2luZDonb3B0Jyxub2RlOmEubm9kZSx0ZXh0OmEudGV4dHx8bGFiZWx9KTsNCiAgICAgIH0NCiAgICAgIHJldHVybiBvdXQ7DQogICAgfTsNCiAgICBjb25zdCBzZXF1ZW50aWFsPW9wdHM9PnsNCiAgICAgIGNvbnN0IGxldHRlcnM9b3B0cy5tYXAobz0+b3B0aW9uTGFiZWwobylbMF0pOw0KICAgICAgcmV0dXJuIGxldHRlcnNbMF09PT0nQScmJmxldHRlcnMuZXZlcnkoKGNoLGspPT5jaC5jaGFyQ29kZUF0KDApPT09NjUrayk7DQogICAgfTsNCiAgICBjb25zdCBvcHRpb25Cb2R5PW89Pm9wdGlvbkxhYmVsKG8pLnJlcGxhY2UoL15bQS1IXVvvvI4u44CBKe+8iV1ccyovLCcnKS50cmltKCk7DQogICAgY29uc3QgcGFyc2VDbG96ZVJvd3M9YXRvbXM9PnsNCiAgICAgIGNvbnN0IHJvd3M9W107bGV0IGk9MDsNCiAgICAgIGNvbnN0IHNraXA9KCk9Pnt3aGlsZShpPGF0b21zLmxlbmd0aCYmKGF0b21zW2ldLmtpbmQ9PT0nYnInfHwoYXRvbXNbaV0ua2luZD09PSd0ZXh0JyYmIXBsYWluKGF0b21zW2ldLm5vZGUpKSkpaSsrO307DQogICAgICBza2lwKCk7DQogICAgICB3aGlsZShpPGF0b21zLmxlbmd0aCl7DQogICAgICAgIGlmKGF0b21zW2ldLmtpbmQhPT0nbnVtJykgYnJlYWs7DQogICAgICAgIGNvbnN0IHNhdmU9aSxudW09YXRvbXNbaSsrXTtjb25zdCBvcHRzPVtdOw0KICAgICAgICBza2lwKCk7DQogICAgICAgIHdoaWxlKGk8YXRvbXMubGVuZ3RoJiZhdG9tc1tpXS5raW5kPT09J29wdCcpe29wdHMucHVzaChhdG9tc1tpKytdKTtza2lwKCk7fQ0KICAgICAgICBpZihvcHRzLmxlbmd0aDwzfHwhc2VxdWVudGlhbChvcHRzKXx8b3B0cy5zb21lKG89Pm9wdGlvbkJvZHkobykubGVuZ3RoPjgwKSl7aT1zYXZlO2JyZWFrO30NCiAgICAgICAgcm93cy5wdXNoKHtudW0sb3B0c30pOw0KICAgICAgICBza2lwKCk7DQogICAgICB9DQogICAgICBpZighcm93cy5sZW5ndGgpIHJldHVybiBudWxsOw0KICAgICAgaWYocm93cy5sZW5ndGg9PT0xJiZpPGF0b21zLmxlbmd0aCYmYXRvbXMuc2xpY2UoaSkuc29tZShhPT5hLmtpbmQhPT0nYnInJiYoYS5raW5kIT09J3RleHQnfHxwbGFpbihhLm5vZGUpKSkpIHJldHVybiBudWxsOw0KICAgICAgcmV0dXJuIHtyb3dzLGVuZDppfTsNCiAgICB9Ow0KICAgIGNvbnN0IHNwbGl0Q2xvemU9bm9kZXM9PnsNCiAgICAgIGNvbnN0IGF0b21zPW5vcm1hbGl6ZUF0b21zKGNvbGxlY3RBdG9tcyhub2RlcykpOw0KICAgICAgaWYoYXRvbXMubGVuZ3RoPDQpIHJldHVybiBudWxsOw0KICAgICAgZm9yKGxldCBzdGFydD0wO3N0YXJ0PGF0b21zLmxlbmd0aDtzdGFydCsrKXsNCiAgICAgICAgaWYoYXRvbXNbc3RhcnRdLmtpbmQhPT0nbnVtJykgY29udGludWU7DQogICAgICAgIGNvbnN0IHBhcnNlZD1wYXJzZUNsb3plUm93cyhhdG9tcy5zbGljZShzdGFydCkpOw0KICAgICAgICBpZighcGFyc2VkKSBjb250aW51ZTsNCiAgICAgICAgcmV0dXJuIHtwcmVmaXg6YXRvbXMuc2xpY2UoMCxzdGFydCkscm93czpwYXJzZWQucm93cyxzdWZmaXg6YXRvbXMuc2xpY2Uoc3RhcnQrcGFyc2VkLmVuZCl9Ow0KICAgICAgfQ0KICAgICAgcmV0dXJuIG51bGw7DQogICAgfTsNCiAgICBjb25zdCBleHRyYWN0Q2xvemVSb3c9ZWw9PnsNCiAgICAgIGlmKCFlbHx8ZWwubm9kZVR5cGUhPT0xfHxoaWRkZW4oZWwpKSByZXR1cm4gbnVsbDsNCiAgICAgIGxldCBudW1FbD1lbC5xdWVyeVNlbGVjdG9yKCdbbmFtZT0ic3VicXVlc251YiJdLCAuc3VicXVlc251YiwgLnN1YnF1ZXMtbnVtLCAuc3VicXVlc19udWIsIFtjbGFzcyo9InN1YnF1ZXMiXScpOw0KICAgICAgbGV0IG51bVRleHQ9Jyc7DQogICAgICBpZihudW1FbCl7DQogICAgICAgIG51bVRleHQ9cGxhaW4obnVtRWwpOw0KICAgICAgfWVsc2V7DQogICAgICAgIGNvbnN0IGZpcnN0VGV4dD0oZWwuZmlyc3RDaGlsZD8ubm9kZVR5cGU9PT0zP2VsLmZpcnN0Q2hpbGQubm9kZVZhbHVlOmVsLmZpcnN0RWxlbWVudENoaWxkPy50ZXh0Q29udGVudHx8JycpLnRyaW0oKTsNCiAgICAgICAgY29uc3QgbT1maXJzdFRleHQubWF0Y2goL15cKD9cZHsxLDN9Wy7vvI7jgIEp77yJXS8pOw0KICAgICAgICBpZihtKSBudW1UZXh0PW1bMF07DQogICAgICB9DQogICAgICBpZighbnVtVGV4dCkgcmV0dXJuIG51bGw7DQogICAgICBjb25zdCBvcHRUYWJsZT1lbC5xdWVyeVNlbGVjdG9yKCd0YWJsZVtuYW1lPSJvcHRpb25zVGFibGUiXSwgdGFibGUnKTsNCiAgICAgIGlmKG9wdFRhYmxlKXsNCiAgICAgICAgY29uc3QgdGRzPVsuLi5vcHRUYWJsZS5xdWVyeVNlbGVjdG9yQWxsKCd0ZCcpXS5maWx0ZXIodGQ9PiFoaWRkZW4odGQpKTsNCiAgICAgICAgaWYodGRzLmxlbmd0aD49MyYmdGRzLmV2ZXJ5KHRkPT5sZXR0ZXJBdG9tLnRlc3QocGxhaW4odGQpKSkpew0KICAgICAgICAgIHJldHVybiB7DQogICAgICAgICAgICBudW06e2tpbmQ6J251bScsbm9kZTpudW1FbHx8ZWwsdGV4dDpudW1UZXh0fSwNCiAgICAgICAgICAgIG9wdHM6dGRzLm1hcCh0ZD0+KHtraW5kOidvcHQnLG5vZGU6dGQsdGV4dDpwbGFpbih0ZCl9KSkNCiAgICAgICAgICB9Ow0KICAgICAgICB9DQogICAgICB9DQogICAgICBjb25zdCBvcHROb2Rlcz1bLi4uZWwucXVlcnlTZWxlY3RvckFsbCgnc3BhbixkaXYnKV0uZmlsdGVyKG49PmxldHRlckF0b20udGVzdChwbGFpbihuKSkmJm9wdE1hcmtzKHBsYWluKG4pKS5sZW5ndGg9PT0xJiYhbi5xdWVyeVNlbGVjdG9yKCdzcGFuLGRpdix0YWJsZScpKTsNCiAgICAgIGlmKG9wdE5vZGVzLmxlbmd0aD49MyYmb3B0Tm9kZXNbMF0udGV4dENvbnRlbnQudHJpbSgpWzBdPT09J0EnKXsNCiAgICAgICAgcmV0dXJuIHsNCiAgICAgICAgICBudW06e2tpbmQ6J251bScsbm9kZTpudW1FbHx8ZWwsdGV4dDpudW1UZXh0fSwNCiAgICAgICAgICBvcHRzOm9wdE5vZGVzLm1hcChuPT4oe2tpbmQ6J29wdCcsbm9kZTpuLHRleHQ6cGxhaW4obil9KSkNCiAgICAgICAgfTsNCiAgICAgIH0NCiAgICAgIGNvbnN0IHQ9cGxhaW4oZWwpOw0KICAgICAgY29uc3QgcGFyc2VkPXBhcnNlQ2xvemVTdHJpbmcodCk7DQogICAgICBpZihwYXJzZWQmJnBhcnNlZC5sZW5ndGg9PT0xKXsNCiAgICAgICAgY29uc3Qgcm93PXBhcnNlZFswXTsNCiAgICAgICAgcmV0dXJuIHsNCiAgICAgICAgICBudW06e2tpbmQ6J251bScsbm9kZTpudW1FbHx8ZWwsdGV4dDpyb3cubnVtLnRleHR9LA0KICAgICAgICAgIG9wdHM6cm93Lm9wdHMubWFwKG89Pih7a2luZDonb3B0Jyxub2RlOmVsLHRleHQ6by50ZXh0fSkpDQogICAgICAgIH07DQogICAgICB9DQogICAgICByZXR1cm4gbnVsbDsNCiAgICB9Ow0KICAgIGNvbnN0IGNsb3plVGFibGU9YXN5bmMocm93cyxjb250YWluZXIsd2lkdGgpPT57DQogICAgICBjb25zdCBjb2xzPTErTWF0aC5tYXgoLi4ucm93cy5tYXAocj0+ci5vcHRzLmxlbmd0aCkpOw0KICAgICAgY29uc3Qgcm9vbT1NYXRoLm1heChjb2xzLE1hdGgucm91bmQod2lkdGgvNjM1KSk7DQogICAgICBjb25zdCBudW1XPU1hdGgubWluKE1hdGgubWF4KDcyMCxNYXRoLnJvdW5kKHJvb20qMC4xKSksMTEwMCk7DQogICAgICBjb25zdCB0d2lwcz1bbnVtV107DQogICAgICBjb25zdCBlYWNoPU1hdGgubWF4KDEsTWF0aC5mbG9vcigocm9vbS1udW1XKS8oY29scy0xKSkpOw0KICAgICAgZm9yKGxldCBpPTE7aTxjb2xzO2krKykgdHdpcHMucHVzaChlYWNoKTsNCiAgICAgIHR3aXBzW3R3aXBzLmxlbmd0aC0xXSs9cm9vbS10d2lwcy5yZWR1Y2UoKGEsYik9PmErYiwwKTsNCiAgICAgIGNvbnN0IG5pbD0nPHc6dG9wIHc6dmFsPSJuaWwiLz48dzpsZWZ0IHc6dmFsPSJuaWwiLz48dzpib3R0b20gdzp2YWw9Im5pbCIvPjx3OnJpZ2h0IHc6dmFsPSJuaWwiLz4nOw0KICAgICAgbGV0IHhtbD1gPHc6dGJsPjx3OnRibFByPjx3OnRibENhcHRpb24gdzp2YWw9ImNsb3plIi8+PHc6dGJsVyB3Onc9IjUwMDAiIHc6dHlwZT0icGN0Ii8+PHc6dGJsTGF5b3V0IHc6dHlwZT0iZml4ZWQiLz48dzp0YmxDZWxsTWFyPjx3OnRvcCB3Onc9IjQwIiB3OnR5cGU9ImR4YSIvPjx3OmxlZnQgdzp3PSI2MCIgdzp0eXBlPSJkeGEiLz48dzpib3R0b20gdzp3PSI0MCIgdzp0eXBlPSJkeGEiLz48dzpyaWdodCB3Onc9IjYwIiB3OnR5cGU9ImR4YSIvPjwvdzp0YmxDZWxsTWFyPjx3OnRibEJvcmRlcnM+JHtuaWx9PHc6aW5zaWRlSCB3OnZhbD0ibmlsIi8+PHc6aW5zaWRlViB3OnZhbD0ibmlsIi8+PC93OnRibEJvcmRlcnM+PC93OnRibFByPjx3OnRibEdyaWQ+JHt0d2lwcy5tYXAobj0+YDx3OmdyaWRDb2wgdzp3PSIke259Ii8+YCkuam9pbignJyl9PC93OnRibEdyaWQ+YDsNCiAgICAgIGNvbnN0IGNlbGw9YXN5bmMoYXRvbSxjdyk9PnsNCiAgICAgICAgbGV0IHA9Jzx3OnAvPic7DQogICAgICAgIGlmKGF0b20pew0KICAgICAgICAgIGNvbnN0IG49YXRvbS5ub2RlPy5ub2RlVHlwZT09PTE/YXRvbS5ub2RlOmNvbnRhaW5lcjsNCiAgICAgICAgICBpZihhdG9tLm5vZGUmJmF0b20ubm9kZS5ub2RlVHlwZT09PTEmJmF0b20ubm9kZS5xdWVyeVNlbGVjdG9yKCdpbWcsc3ZnLGNhbnZhcyxtYXRoJykpew0KICAgICAgICAgICAgcD1hd2FpdCBwYXJhZ3JhcGhQbGFpbihbLi4uYXRvbS5ub2RlLmNoaWxkTm9kZXNdLG4sTWF0aC5tYXgoNjM1LGN3KjYzNSkpOw0KICAgICAgICAgIH1lbHNlIGlmKGF0b20udGV4dCl7DQogICAgICAgICAgICBwPWA8dzpwPjx3OnBQcj48dzpzcGFjaW5nIHc6YWZ0ZXI9IjAiLz48L3c6cFByPiR7dGV4dFJ1bihhdG9tLnRleHQsbil9PC93OnA+YDsNCiAgICAgICAgICB9ZWxzZSBpZihhdG9tLm5vZGUpew0KICAgICAgICAgICAgcD1hd2FpdCBwYXJhZ3JhcGhQbGFpbihbYXRvbS5ub2RlXSxuLE1hdGgubWF4KDYzNSxjdyo2MzUpKTsNCiAgICAgICAgICB9DQogICAgICAgIH0NCiAgICAgICAgaWYoIXApIHA9Jzx3OnAvPic7DQogICAgICAgIHJldHVybiBgPHc6dGM+PHc6dGNQcj48dzp0Y1cgdzp3PSIke2N3fSIgdzp0eXBlPSJkeGEiLz48dzp0Y0JvcmRlcnM+JHtuaWx9PC93OnRjQm9yZGVycz48dzp2QWxpZ24gdzp2YWw9ImNlbnRlciIvPjwvdzp0Y1ByPiR7cH08L3c6dGM+YDsNCiAgICAgIH07DQogICAgICBmb3IoY29uc3Qgcm93IG9mIHJvd3Mpew0KICAgICAgICB4bWwrPSc8dzp0cj4nOw0KICAgICAgICB4bWwrPWF3YWl0IGNlbGwocm93Lm51bSx0d2lwc1swXSk7DQogICAgICAgIGZvcihsZXQgaT0wO2k8Y29scy0xO2krKykgeG1sKz1hd2FpdCBjZWxsKHJvdy5vcHRzW2ldLHR3aXBzW2krMV0pOw0KICAgICAgICB4bWwrPSc8L3c6dHI+JzsNCiAgICAgIH0NCiAgICAgIHJldHVybiB4bWwrJzwvdzp0Ymw+JzsNCiAgICB9Ow0KICAgIGNvbnN0IHBhcmFncmFwaFBsYWluPWFzeW5jKG5vZGVzLGNvbnRhaW5lcix3aWR0aCk9PnsNCiAgICAgIGlmKCFub2Rlcy5zb21lKG49Pm4ubm9kZVR5cGU9PT0xfHwobi50ZXh0Q29udGVudHx8JycpLnRyaW0oKSkpcmV0dXJuICcnOw0KICAgICAgbGV0IHJ1bnM9Jyc7Zm9yKGNvbnN0IG4gb2Ygbm9kZXMpcnVucys9YXdhaXQgaW5saW5lKG4sd2lkdGgpOw0KICAgICAgaWYoIXJ1bnMpcmV0dXJuICcnOw0KICAgICAgY29uc3Qgcz1nZXRDb21wdXRlZFN0eWxlKGNvbnRhaW5lciksYWxpZ25tZW50PXtjZW50ZXI6J2NlbnRlcicscmlnaHQ6J3JpZ2h0JyxqdXN0aWZ5Oidib3RoJ31bcy50ZXh0QWxpZ25dOw0KICAgICAgY29uc3QgaW5kZW50PU1hdGgubWF4KDAsTWF0aC5yb3VuZCgocGFyc2VGbG9hdChzLnRleHRJbmRlbnQpfHwwKSp1bml0LzYzNSkpOw0KICAgICAgbGV0IHByZWZpeD0nJztpZihjb250YWluZXIudGFnTmFtZT09PSdMSScpew0KICAgICAgICBjb25zdCBsaXN0PWNvbnRhaW5lci5wYXJlbnRFbGVtZW50Ow0KICAgICAgICBjb25zdCBpbmRleD1bLi4ubGlzdC5jaGlsZHJlbl0uZmlsdGVyKG49Pm4udGFnTmFtZT09PSdMSScpLmluZGV4T2YoY29udGFpbmVyKSsoTnVtYmVyKGxpc3QuZ2V0QXR0cmlidXRlKCdzdGFydCcpKXx8MSk7DQogICAgICAgIHByZWZpeD10ZXh0UnVuKGxpc3QudGFnTmFtZT09PSdPTCc/aW5kZXgrJy4gJzon4oCiICcsY29udGFpbmVyKTsNCiAgICAgIH0NCiAgICAgIHJldHVybiBgPHc6cD48dzpwUHI+PHc6d2lkb3dDb250cm9sLz48dzpzcGFjaW5nIHc6YWZ0ZXI9IjgwIiB3OmxpbmU9IjMwMCIgdzpsaW5lUnVsZT0iYXV0byIvPiR7aW5kZW50P2A8dzppbmQgdzpmaXJzdExpbmU9IiR7aW5kZW50fSIvPmA6Jyd9JHthbGlnbm1lbnQ/YDx3OmpjIHc6dmFsPSIke2FsaWdubWVudH0iLz5gOicnfTwvdzpwUHI+JHtwcmVmaXh9JHtydW5zfTwvdzpwPmA7DQogICAgfTsNCiAgICBjb25zdCBjbG96ZVJvd3NGcm9tTm9kZXM9KG5vZGVzLGNvbnRhaW5lcik9PnsNCiAgICAgIGxldCB0ZXh0PScnLCBibG9ja2VkPWZhbHNlOw0KICAgICAgY29uc3Qgd2Fsaz1uPT57DQogICAgICAgIGlmKGJsb2NrZWR8fCFuKSByZXR1cm47DQogICAgICAgIGlmKG4ubm9kZVR5cGU9PT0zKXsgdGV4dCs9bi5ub2RlVmFsdWV8fCcnOyByZXR1cm47IH0NCiAgICAgICAgaWYobi5ub2RlVHlwZSE9PTF8fGhpZGRlbihuKSkgcmV0dXJuOw0KICAgICAgICBpZihuLnRhZ05hbWU9PT0nQlInKXsgdGV4dCs9J1xuJzsgcmV0dXJuOyB9DQogICAgICAgIGlmKG4udGFnTmFtZT09PSdCSyd8fG4udGFnTmFtZT09PSdJTUcnfHxuLnRhZ05hbWU9PT0nVEFCTEUnfHxuLnRhZ05hbWU9PT0nU1ZHJ3x8Y29tcGxleChuKSl7IGJsb2NrZWQ9dHJ1ZTsgcmV0dXJuOyB9DQogICAgICAgIGZvcihjb25zdCBjaGlsZCBvZiBuLmNoaWxkTm9kZXMpIHdhbGsoY2hpbGQpOw0KICAgICAgfTsNCiAgICAgIGZvcihjb25zdCBuIG9mIG5vZGVzKSB3YWxrKG4pOw0KICAgICAgaWYoYmxvY2tlZCkgcmV0dXJuIG51bGw7DQogICAgICBjb25zdCByb3dzPXBhcnNlQ2xvemVTdHJpbmcodGV4dCk7DQogICAgICBpZighcm93cykgcmV0dXJuIG51bGw7DQogICAgICBjb25zdCBob3N0PWNvbnRhaW5lciYmY29udGFpbmVyLm5vZGVUeXBlPT09MT9jb250YWluZXI6bm9kZXMuZmluZChuPT5uLm5vZGVUeXBlPT09MSl8fGNvbnRhaW5lcjsNCiAgICAgIHJldHVybiByb3dzLm1hcChyPT4oe251bTp7a2luZDonbnVtJyxub2RlOmhvc3QsdGV4dDpyLm51bS50ZXh0fSxvcHRzOnIub3B0cy5tYXAobz0+KHtraW5kOidvcHQnLG5vZGU6aG9zdCx0ZXh0Om8udGV4dH0pKX0pKTsNCiAgICB9Ow0KICAgIGNvbnN0IHBhcmFncmFwaD1hc3luYyhub2Rlcyxjb250YWluZXIsd2lkdGgpPT57DQogICAgICBjb25zdCBlbWl0U3BsaXQ9YXN5bmMgc3BsaXQ9PnsNCiAgICAgICAgbGV0IHhtbD0nJzsNCiAgICAgICAgaWYoc3BsaXQucHJlZml4Lmxlbmd0aCl7DQogICAgICAgICAgY29uc3QgcHJlZml4Tm9kZXM9c3BsaXQucHJlZml4LmZpbHRlcihhPT5hLmtpbmQhPT0nYnInKS5tYXAoYT0+YS5ub2RlKTsNCiAgICAgICAgICB4bWwrPWF3YWl0IHBhcmFncmFwaFBsYWluKHByZWZpeE5vZGVzLGNvbnRhaW5lcix3aWR0aCk7DQogICAgICAgIH0NCiAgICAgICAgeG1sKz1hd2FpdCBjbG96ZVRhYmxlKHNwbGl0LnJvd3MsY29udGFpbmVyLHdpZHRoKTsNCiAgICAgICAgaWYoc3BsaXQuc3VmZml4JiZzcGxpdC5zdWZmaXgubGVuZ3RoKXsNCiAgICAgICAgICBjb25zdCBzdWZmaXhOb2Rlcz1zcGxpdC5zdWZmaXguZmlsdGVyKGE9PmEua2luZCE9PSdicicpLm1hcChhPT5hLm5vZGUpOw0KICAgICAgICAgIHhtbCs9YXdhaXQgcGFyYWdyYXBoUGxhaW4oc3VmZml4Tm9kZXMsY29udGFpbmVyLHdpZHRoKTsNCiAgICAgICAgfQ0KICAgICAgICByZXR1cm4geG1sOw0KICAgICAgfTsNCiAgICAgIGNvbnN0IHNwbGl0PXNwbGl0Q2xvemUobm9kZXMpOw0KICAgICAgaWYoc3BsaXQpIHJldHVybiBlbWl0U3BsaXQoc3BsaXQpOw0KICAgICAgY29uc3QgcGxhaW5Sb3dzPWNsb3plUm93c0Zyb21Ob2Rlcyhub2Rlcyxjb250YWluZXIpOw0KICAgICAgaWYocGxhaW5Sb3dzKSByZXR1cm4gY2xvemVUYWJsZShwbGFpblJvd3MsY29udGFpbmVyLHdpZHRoKTsNCiAgICAgIHJldHVybiBwYXJhZ3JhcGhQbGFpbihub2Rlcyxjb250YWluZXIsd2lkdGgpOw0KICAgIH07DQogICAgY29uc3QgbG9va3NMaWtlT3B0aW9ucz1lbD0+ew0KICAgICAgaWYoIWVsfHxlbC5ub2RlVHlwZSE9PTEpIHJldHVybiBmYWxzZTsNCiAgICAgIGNvbnN0IHQ9cGxhaW4oZWwpOw0KICAgICAgaWYob3B0TWFya3ModCkubGVuZ3RoPDN8fHQubGVuZ3RoPjQwMDApIHJldHVybiBmYWxzZTsNCiAgICAgIGlmKGVsLnF1ZXJ5U2VsZWN0b3IoJ3AsdGFibGUsYmssLnFtbC1zdGVtLGltZyxzdmcsY2FudmFzJykpIHJldHVybiBmYWxzZTsNCiAgICAgIHJldHVybiB0cnVlOw0KICAgIH07DQogICAgY29uc3QgbWVyZ2VBZGphY2VudENsb3plPXBhcnRzPT57DQogICAgICBjb25zdCBvdXQ9W10sYnVmPVtdOw0KICAgICAgY29uc3QgaXNDbG96ZT1zPT50eXBlb2Ygcz09PSdzdHJpbmcnJiZzLnN0YXJ0c1dpdGgoJzx3OnRibD4nKSYmcy5pbmNsdWRlcygndzp0YmxDYXB0aW9uIHc6dmFsPSJjbG96ZSInKTsNCiAgICAgIGNvbnN0IGNvbHM9cz0+KHMubWF0Y2goLzx3OmdyaWRDb2xcYi9nKXx8W10pLmxlbmd0aDsNCiAgICAgIGNvbnN0IGZsdXNoPSgpPT57DQogICAgICAgIGlmKCFidWYubGVuZ3RoKSByZXR1cm47DQogICAgICAgIGlmKGJ1Zi5sZW5ndGg9PT0xKXtvdXQucHVzaChidWZbMF0pO2J1Zi5sZW5ndGg9MDtyZXR1cm47fQ0KICAgICAgICBjb25zdCByb3dzPWJ1Zi5tYXAocz0+KHMubWF0Y2goLzx3OnRyPltcc1xTXSo/PFwvdzp0cj4vZyl8fFtdKS5qb2luKCcnKSkuam9pbignJyk7DQogICAgICAgIGNvbnN0IG9wZW49YnVmWzBdLnNsaWNlKDAsYnVmWzBdLmluZGV4T2YoJzx3OnRyPicpKTsNCiAgICAgICAgb3V0LnB1c2gob3Blbityb3dzKyc8L3c6dGJsPicpOw0KICAgICAgICBidWYubGVuZ3RoPTA7DQogICAgICB9Ow0KICAgICAgZm9yKGNvbnN0IHBhcnQgb2YgcGFydHMpew0KICAgICAgICBpZihpc0Nsb3plKHBhcnQpJiYoIWJ1Zi5sZW5ndGh8fGNvbHMocGFydCk9PT1jb2xzKGJ1ZlswXSkpKSBidWYucHVzaChwYXJ0KTsNCiAgICAgICAgZWxzZSB7Zmx1c2goKTtvdXQucHVzaChwYXJ0KTt9DQogICAgICB9DQogICAgICBmbHVzaCgpOw0KICAgICAgcmV0dXJuIG91dDsNCiAgICB9Ow0KICAgIGNvbnN0IGJsb2Nrcz1hc3luYyhjb250YWluZXIsd2lkdGgpPT57DQogICAgICBjb25zdCBvdXQ9W107bGV0IHBlbmRpbmc9W107DQogICAgICBjb25zdCBmbHVzaD1hc3luYygpPT57Y29uc3QgcD1hd2FpdCBwYXJhZ3JhcGgocGVuZGluZyxjb250YWluZXIsd2lkdGgpO2lmKHApb3V0LnB1c2gocCk7cGVuZGluZz1bXTt9Ow0KICAgICAgZm9yKGNvbnN0IGNoaWxkIG9mIGNvbnRhaW5lci5jaGlsZE5vZGVzKXsNCiAgICAgICAgaWYoaGlkZGVuKGNoaWxkKSljb250aW51ZTsNCiAgICAgICAgaWYoY2hpbGQubm9kZVR5cGU9PT0xKXsNCiAgICAgICAgICBjb25zdCB0YWc9Y2hpbGQudGFnTmFtZTsNCiAgICAgICAgICBjb25zdCBjbG96ZVJvdz1leHRyYWN0Q2xvemVSb3coY2hpbGQpOw0KICAgICAgICAgIGlmKGNsb3plUm93KXsNCiAgICAgICAgICAgIGF3YWl0IGZsdXNoKCk7DQogICAgICAgICAgICBvdXQucHVzaChhd2FpdCBjbG96ZVRhYmxlKFtjbG96ZVJvd10sY29udGFpbmVyLHdpZHRoKSk7DQogICAgICAgICAgICBjb250aW51ZTsNCiAgICAgICAgICB9DQogICAgICAgICAgaWYoY2hpbGQucXVlcnlTZWxlY3RvciYmY2hpbGQucXVlcnlTZWxlY3RvcignW25hbWU9InN1YnF1ZXNudWIiXSwgLnN1YnF1ZXNudWInKSl7DQogICAgICAgICAgICBhd2FpdCBmbHVzaCgpOw0KICAgICAgICAgICAgb3V0LnB1c2goLi4uYXdhaXQgYmxvY2tzKGNoaWxkLHdpZHRoKSk7DQogICAgICAgICAgICBjb250aW51ZTsNCiAgICAgICAgICB9DQogICAgICAgICAgaWYodGFnPT09J1RBQkxFJyl7YXdhaXQgZmx1c2goKTtvdXQucHVzaChhd2FpdCB0YWJsZShjaGlsZCx3aWR0aCkpO2NvbnRpbnVlO30NCiAgICAgICAgICBpZih0YWc9PT0nQlInKXthd2FpdCBmbHVzaCgpO2NvbnRpbnVlO30NCiAgICAgICAgICBpZihjb21wbGV4KGNoaWxkKSl7cGVuZGluZy5wdXNoKGNoaWxkKTtjb250aW51ZTt9DQogICAgICAgICAgY29uc3QgZGlzcGxheT1nZXRDb21wdXRlZFN0eWxlKGNoaWxkKS5kaXNwbGF5Ow0KICAgICAgICAgIGlmKChkaXNwbGF5PT09J3RhYmxlJ3x8ZGlzcGxheT09PSdpbmxpbmUtdGFibGUnKSYmbG9va3NMaWtlT3B0aW9ucyhjaGlsZCkpew0KICAgICAgICAgICAgYXdhaXQgZmx1c2goKTsNCiAgICAgICAgICAgIGNvbnN0IHJvd05vZGVzPVsuLi5jaGlsZC5jaGlsZHJlbl0uZmlsdGVyKG49Pm4ubm9kZVR5cGU9PT0xJiYhaGlkZGVuKG4pKTsNCiAgICAgICAgICAgIGNvbnN0IGxpbmVzPXJvd05vZGVzLmxlbmd0aCYmcm93Tm9kZXMuZXZlcnkocj0+Z2V0Q29tcHV0ZWRTdHlsZShyKS5kaXNwbGF5PT09J3RhYmxlLXJvdycpP3Jvd05vZGVzLm1hcChyPT5bLi4uci5jaGlsZE5vZGVzXSk6W1suLi5jaGlsZC5jaGlsZE5vZGVzXV07DQogICAgICAgICAgICBmb3IoY29uc3QgbGluZSBvZiBsaW5lcyl7Y29uc3QgcD1hd2FpdCBwYXJhZ3JhcGgobGluZSxjaGlsZCx3aWR0aCk7aWYocClvdXQucHVzaChwKTt9DQogICAgICAgICAgICBjb250aW51ZTsNCiAgICAgICAgICB9DQogICAgICAgICAgaWYoL14oUHxESVZ8TEl8VUx8T0x8QkxPQ0tRVU9URXxIWzEtNl18U0VDVElPTnxGSUdVUkV8U1BBTikkLy50ZXN0KHRhZykpew0KICAgICAgICAgICAgaWYoL2lubGluZS8udGVzdChkaXNwbGF5KSYmdGFnIT09J0RJVicmJnRhZyE9PSdQJyl7DQogICAgICAgICAgICAgIGlmKGRpc3BsYXkhPT0ndGFibGUtcm93JyYmZGlzcGxheSE9PSd0YWJsZS1jZWxsJyYmZGlzcGxheSE9PSdibG9jaycmJmRpc3BsYXkhPT0naW5saW5lLWJsb2NrJyl7DQogICAgICAgICAgICAgICAgcGVuZGluZy5wdXNoKGNoaWxkKTtjb250aW51ZTsNCiAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgaWYobG9va3NMaWtlT3B0aW9ucyhjaGlsZCkmJnBlbmRpbmcubGVuZ3RoKXtwZW5kaW5nLnB1c2goY2hpbGQpO2NvbnRpbnVlO30NCiAgICAgICAgICAgIGF3YWl0IGZsdXNoKCk7b3V0LnB1c2goLi4uYXdhaXQgYmxvY2tzKGNoaWxkLHdpZHRoKSk7Y29udGludWU7DQogICAgICAgICAgfQ0KICAgICAgICB9DQogICAgICAgIHBlbmRpbmcucHVzaChjaGlsZCk7DQogICAgICB9DQogICAgICBhd2FpdCBmbHVzaCgpO3JldHVybiBtZXJnZUFkamFjZW50Q2xvemUob3V0KTsNCiAgICB9Ow0KICAgIGNvbnN0IHRhYmxlPWFzeW5jKGVsLGF2YWlsYWJsZSk9PnsNCiAgICAgIGNvbnN0IHJvd3M9Wy4uLmVsLnJvd3NdLmZpbHRlcihyPT4haGlkZGVuKHIpKSxncmlkPVtdOw0KICAgICAgY29uc3QgaXNPcHRpb25zPWVsLmdldEF0dHJpYnV0ZSgnbmFtZScpPT09J29wdGlvbnNUYWJsZSc7DQogICAgICBjb25zdCByZWN0PWVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOw0KICAgICAgY29uc3QgdGFibGVQeD1lbC5vZmZzZXRXaWR0aHx8cmVjdC53aWR0aDsNCiAgICAgIGNvbnN0IHdpZHRoPWF2YWlsYWJsZTsNCiAgICAgIHJvd3MuZm9yRWFjaCgocm93LHIpPT57DQogICAgICAgIGdyaWRbcl18fD1bXTtsZXQgYz0wOw0KICAgICAgICBmb3IoY29uc3QgY2VsbCBvZiByb3cuY2VsbHMpew0KICAgICAgICAgIHdoaWxlKGdyaWRbcl1bY10pYysrOw0KICAgICAgICAgIGNvbnN0IHJzPWNlbGwucm93U3Bhbj09PTA/cm93cy5sZW5ndGgtcjpNYXRoLm1pbihjZWxsLnJvd1NwYW58fDEscm93cy5sZW5ndGgtciksY3M9TWF0aC5tYXgoMSxjZWxsLmNvbFNwYW58fDEpOw0KICAgICAgICAgIGZvcihsZXQgeT0wO3k8cnM7eSsrKXtncmlkW3IreV18fD1bXTtmb3IobGV0IHg9MDt4PGNzO3grKylncmlkW3IreV1bYyt4XT17Y2VsbCxzcGFuOmNzLGNvbnRpbnVlZDp5PjAscnN9O30NCiAgICAgICAgICBjKz1jczsNCiAgICAgICAgfQ0KICAgICAgfSk7DQogICAgICBjb25zdCBjb3VudD1NYXRoLm1heCgwLC4uLmdyaWQubWFwKHI9PnIubGVuZ3RoKSk7aWYoIWNvdW50KXJldHVybiAnPHc6cC8+JzsNCiAgICAgIGNvbnN0IHJvb209TWF0aC5tYXgoY291bnQsTWF0aC5yb3VuZCh3aWR0aC82MzUpKTsNCiAgICAgIGxldCB0d2lwczsNCiAgICAgIGlmKGlzT3B0aW9ucyl7DQogICAgICAgIHR3aXBzPUFycmF5KGNvdW50KS5maWxsKE1hdGgubWF4KDEsTWF0aC5mbG9vcihyb29tL2NvdW50KSkpOw0KICAgICAgICB0d2lwc1t0d2lwcy5sZW5ndGgtMV0rPXJvb20tdHdpcHMucmVkdWNlKChhLGIpPT5hK2IsMCk7DQogICAgICB9ZWxzZXsNCiAgICAgICAgY29uc3QgYm91bmRhcmllcz1bMCxyZWN0LndpZHRofHx0YWJsZVB4XTsNCiAgICAgICAgcm93cy5mb3JFYWNoKHJvdz0+e2Zvcihjb25zdCBjZWxsIG9mIHJvdy5jZWxscyl7Y29uc3QgY2VsbFJlY3Q9Y2VsbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtib3VuZGFyaWVzLnB1c2goY2VsbFJlY3QubGVmdC1yZWN0LmxlZnQsY2VsbFJlY3QucmlnaHQtcmVjdC5sZWZ0KTt9fSk7DQogICAgICAgIGNvbnN0IHN0b3BzPWJvdW5kYXJpZXMuc29ydCgoYSxiKT0+YS1iKS5maWx0ZXIoKHgsaSxhKT0+IWl8fHgtYVtpLTFdPjIpOw0KICAgICAgICBjb25zdCB3aWR0aHM9c3RvcHMubGVuZ3RoPT09Y291bnQrMT9zdG9wcy5zbGljZSgxKS5tYXAoKHgsaSk9Pih4LXN0b3BzW2ldKS9NYXRoLm1heCgxLHJlY3Qud2lkdGgpKndpZHRoKTpBcnJheShjb3VudCkuZmlsbCh3aWR0aC9jb3VudCk7DQogICAgICAgIHR3aXBzPXdpZHRocy5tYXAobj0+TWF0aC5tYXgoMSxNYXRoLnJvdW5kKG4vNjM1KSkpOw0KICAgICAgICBsZXQgc3VtPXR3aXBzLnJlZHVjZSgoYSxiKT0+YStiLDApOw0KICAgICAgICBpZihzdW0hPT1yb29tJiZzdW0+MCkgdHdpcHM9dHdpcHMubWFwKG49Pk1hdGgubWF4KDEsTWF0aC5yb3VuZChuKnJvb20vc3VtKSkpOw0KICAgICAgICB0d2lwc1t0d2lwcy5sZW5ndGgtMV0rPXJvb20tdHdpcHMucmVkdWNlKChhLGIpPT5hK2IsMCk7DQogICAgICAgIGNvbnN0IG1pbj04MDA7DQogICAgICAgIGZvcihsZXQgaT0wO2k8dHdpcHMubGVuZ3RoO2krKyl7DQogICAgICAgICAgaWYodHdpcHNbaV0+PW1pbikgY29udGludWU7DQogICAgICAgICAgbGV0IG5lZWQ9bWluLXR3aXBzW2ldOw0KICAgICAgICAgIGZvcihsZXQgaj0wO2o8dHdpcHMubGVuZ3RoJiZuZWVkPjA7aisrKXsNCiAgICAgICAgICAgIGlmKGo9PT1pfHx0d2lwc1tqXTw9bWluKSBjb250aW51ZTsNCiAgICAgICAgICAgIGNvbnN0IHRha2U9TWF0aC5taW4obmVlZCx0d2lwc1tqXS1taW4pOw0KICAgICAgICAgICAgdHdpcHNbal0tPXRha2U7dHdpcHNbaV0rPXRha2U7bmVlZC09dGFrZTsNCiAgICAgICAgICB9DQogICAgICAgIH0NCiAgICAgIH0NCiAgICAgIGNvbnN0IHRvdGFsPXR3aXBzLnJlZHVjZSgoYSxiKT0+YStiLDApOw0KICAgICAgbGV0IHhtbD1gPHc6dGJsPjx3OnRibFByPjx3OnRibFcgdzp3PSIke2lzT3B0aW9ucz81MDAwOnRvdGFsfSIgdzp0eXBlPSIke2lzT3B0aW9ucz8ncGN0JzonZHhhJ30iLz48dzp0YmxMYXlvdXQgdzp0eXBlPSJmaXhlZCIvPjx3OnRibENlbGxNYXI+PHc6dG9wIHc6dz0iJHtpc09wdGlvbnM/MjA6NDV9IiB3OnR5cGU9ImR4YSIvPjx3OmxlZnQgdzp3PSIke2lzT3B0aW9ucz8wOjYwfSIgdzp0eXBlPSJkeGEiLz48dzpib3R0b20gdzp3PSIke2lzT3B0aW9ucz8yMDo0NX0iIHc6dHlwZT0iZHhhIi8+PHc6cmlnaHQgdzp3PSIke2lzT3B0aW9ucz8wOjYwfSIgdzp0eXBlPSJkeGEiLz48L3c6dGJsQ2VsbE1hcj4ke2lzT3B0aW9ucz8nPHc6dGJsQm9yZGVycz48dzp0b3Agdzp2YWw9Im5pbCIvPjx3OmxlZnQgdzp2YWw9Im5pbCIvPjx3OmJvdHRvbSB3OnZhbD0ibmlsIi8+PHc6cmlnaHQgdzp2YWw9Im5pbCIvPjx3Omluc2lkZUggdzp2YWw9Im5pbCIvPjx3Omluc2lkZVYgdzp2YWw9Im5pbCIvPjwvdzp0YmxCb3JkZXJzPic6Jyd9PC93OnRibFByPjx3OnRibEdyaWQ+JHt0d2lwcy5tYXAobj0+YDx3OmdyaWRDb2wgdzp3PSIke259Ii8+YCkuam9pbignJyl9PC93OnRibEdyaWQ+YDsNCiAgICAgIGZvcihjb25zdCByb3cgb2YgZ3JpZCl7DQogICAgICAgIHhtbCs9Jzx3OnRyPic7DQogICAgICAgIGZvcihsZXQgYz0wO2M8Y291bnQ7KXsNCiAgICAgICAgICBjb25zdCBzbG90PXJvd1tjXTtpZighc2xvdCl7eG1sKz0nPHc6dGM+PHc6dGNQci8+PHc6cC8+PC93OnRjPic7YysrO2NvbnRpbnVlO30NCiAgICAgICAgICBjb25zdCB7Y2VsbCxzcGFuLGNvbnRpbnVlZCxyc309c2xvdCxzPWdldENvbXB1dGVkU3R5bGUoY2VsbCk7DQogICAgICAgICAgY29uc3QgY3c9dHdpcHMuc2xpY2UoYyxjK3NwYW4pLnJlZHVjZSgoYSxiKT0+YStiLDApOw0KICAgICAgICAgIGNvbnN0IGJvcmRlcnM9aXNPcHRpb25zPyc8dzp0b3Agdzp2YWw9Im5pbCIvPjx3OmxlZnQgdzp2YWw9Im5pbCIvPjx3OmJvdHRvbSB3OnZhbD0ibmlsIi8+PHc6cmlnaHQgdzp2YWw9Im5pbCIvPic6Wyd0b3AnLCdsZWZ0JywnYm90dG9tJywncmlnaHQnXS5tYXAoc2lkZT0+e2NvbnN0IHByZWZpeD0nYm9yZGVyJytzaWRlWzBdLnRvVXBwZXJDYXNlKCkrc2lkZS5zbGljZSgxKTtyZXR1cm4gYDx3OiR7c2lkZX0gdzp2YWw9IiR7cGFyc2VGbG9hdChzW3ByZWZpeCsnV2lkdGgnXSk+MCYmc1twcmVmaXgrJ1N0eWxlJ10hPT0nbm9uZSc/J3NpbmdsZSc6J25pbCd9IiB3OnN6PSI0IiB3OmNvbG9yPSIke2NvbG9yKHNbcHJlZml4KydDb2xvciddKX0iLz5gO30pLmpvaW4oJycpOw0KICAgICAgICAgIGxldCBjb250ZW50cz1jb250aW51ZWQ/W106YXdhaXQgYmxvY2tzKGNlbGwsTWF0aC5tYXgoNjM1LChjdy0oaXNPcHRpb25zPzA6MTIwKSkqNjM1KSk7DQogICAgICAgICAgaWYoIWNvbnRlbnRzLmxlbmd0aHx8IWNvbnRlbnRzW2NvbnRlbnRzLmxlbmd0aC0xXS5lbmRzV2l0aCgnPC93OnA+JykpY29udGVudHMucHVzaCgnPHc6cC8+Jyk7DQogICAgICAgICAgeG1sKz1gPHc6dGM+PHc6dGNQcj48dzp0Y1cgdzp3PSIke2N3fSIgdzp0eXBlPSJkeGEiLz4ke3NwYW4+MT9gPHc6Z3JpZFNwYW4gdzp2YWw9IiR7c3Bhbn0iLz5gOicnfSR7cnM+MT9gPHc6dk1lcmdlJHtjb250aW51ZWQ/Jyc6JyB3OnZhbD0icmVzdGFydCInfS8+YDonJ308dzp0Y0JvcmRlcnM+JHtib3JkZXJzfTwvdzp0Y0JvcmRlcnM+PHc6dkFsaWduIHc6dmFsPSIke3MudmVydGljYWxBbGlnbj09PSdtaWRkbGUnPydjZW50ZXInOnMudmVydGljYWxBbGlnbj09PSdib3R0b20nPydib3R0b20nOid0b3AnfSIvPjwvdzp0Y1ByPiR7Y29udGVudHMuam9pbignJyl9PC93OnRjPmA7DQogICAgICAgICAgYys9c3BhbjsNCiAgICAgICAgfQ0KICAgICAgICB4bWwrPSc8L3c6dHI+JzsNCiAgICAgIH0NCiAgICAgIHJldHVybiB4bWwrJzwvdzp0Ymw+JzsNCiAgICB9Ow0KICAgIHJldHVybiBibG9ja3Mocm9vdCxtYXhXaWR0aCk7DQogIH0NCg0KICBmdW5jdGlvbiBkYXRhQnl0ZXModXJsKSB7Y29uc3Qgcz1hdG9iKHVybC5zcGxpdCgnLCcpWzFdKSxhPW5ldyBVaW50OEFycmF5KHMubGVuZ3RoKTtmb3IobGV0IGk9MDtpPHMubGVuZ3RoO2krKylhW2ldPXMuY2hhckNvZGVBdChpKTtyZXR1cm4gYTt9DQogIGZ1bmN0aW9uIHRvRGF0YVVSTChibG9iKSB7cmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLHJlamVjdCk9Pntjb25zdCByPW5ldyBGaWxlUmVhZGVyKCk7ci5vbmxvYWQ9KCk9PnJlc29sdmUoci5yZXN1bHQpO3Iub25lcnJvcj0oKT0+cmVqZWN0KHIuZXJyb3IpO3IucmVhZEFzRGF0YVVSTChibG9iKTt9KTt9DQogIGZ1bmN0aW9uIGltYWdlRGF0YVVSTChzcmMsY2FjaGUscHJlZmVyTG9hZGVkPWZhbHNlKSB7DQogICAgaWYoL15kYXRhOi9pLnRlc3Qoc3JjKSkgcmV0dXJuIFByb21pc2UucmVzb2x2ZShzcmMpOw0KICAgIGNvbnN0IHVybD1uZXcgVVJMKHNyYyxsb2NhdGlvbi5ocmVmKS5ocmVmOw0KICAgIGlmKCFjYWNoZS5oYXModXJsKSkgY2FjaGUuc2V0KHVybCwoYXN5bmMoKT0+ew0KICAgICAgbGV0IHJlc3BvbnNlOw0KICAgICAgLy8gU2lnbmVkIGFuc3dlcnMgcHJlZmVyIHRoZSBsb2FkZWQgY2FjaGUuIE90aGVyIGltYWdlIHJlcXVlc3RzIHJldGFpbiB0aGVpcg0KICAgICAgLy8gQ09SUyBmZXRjaDsgYSBjYWNoZWQgbm8tQ09SUyBpbWFnZSBjYW4gbGFjayB0aGUgcmVxdWlyZWQgcmVzcG9uc2UgaGVhZGVycy4NCiAgICAgIHRyeSB7DQogICAgICAgIGNvbnN0IG9wdGlvbnM9e21vZGU6J2NvcnMnLGNyZWRlbnRpYWxzOidzYW1lLW9yaWdpbicsY2FjaGU6cHJlZmVyTG9hZGVkPydmb3JjZS1jYWNoZSc6J25vLXN0b3JlJ307DQogICAgICAgIHRyeSB7IHJlc3BvbnNlPWF3YWl0IGZldGNoKHVybCxvcHRpb25zKTsgfQ0KICAgICAgICBjYXRjaChlcnJvcikgeyBpZighcHJlZmVyTG9hZGVkKSB0aHJvdyBlcnJvcjsgcmVzcG9uc2U9YXdhaXQgZmV0Y2godXJsLHsuLi5vcHRpb25zLGNhY2hlOiduby1zdG9yZSd9KTsgfQ0KICAgICAgfQ0KICAgICAgY2F0Y2goZXJyb3IpIHsgdGhyb3cgbmV3IEVycm9yKGDlm77niYfor7vlj5blpLHotKXvvIgke25ldyBVUkwodXJsKS5wYXRobmFtZX3vvInvvJoke2Vycm9yLm1lc3NhZ2V9YCk7IH0NCiAgICAgIGlmKCFyZXNwb25zZS5vaykgdGhyb3cgbmV3IEVycm9yKGDlm77niYfor7vlj5blpLHotKXvvIgke3Jlc3BvbnNlLnN0YXR1c33vvInvvJoke25ldyBVUkwodXJsKS5wYXRobmFtZX1gKTsNCiAgICAgIHJldHVybiB0b0RhdGFVUkwoYXdhaXQgcmVzcG9uc2UuYmxvYigpKTsNCiAgICB9KSgpKTsNCiAgICByZXR1cm4gY2FjaGUuZ2V0KHVybCk7DQogIH0NCiAgYXN5bmMgZnVuY3Rpb24gcmVhZEFuc3dlckltYWdlKG9yaWdpbmFsLGNhY2hlLG51bWJlcikgew0KICAgIGNvbnN0IGRhdGFVUkw9YXdhaXQgaW1hZ2VEYXRhVVJMKG9yaWdpbmFsLmN1cnJlbnRTcmN8fG9yaWdpbmFsLmdldEF0dHJpYnV0ZSgnc3JjJyksY2FjaGUsdHJ1ZSk7DQogICAgY29uc3QgaW1hZ2U9bmV3IEltYWdlKCk7aW1hZ2Uuc3JjPWRhdGFVUkw7DQogICAgYXdhaXQgaW1hZ2UuZGVjb2RlKCkuY2F0Y2goKCk9Pnt0aHJvdyBuZXcgRXJyb3IoYOesrCAke251bWJlcn0g57uE6Kej5p6Q5Zu+54mH5peg5rOV6Kej56CB77yM5bey5YGc5q2i5a+85Ye644CCYCk7fSk7DQogICAgLy8gVGhlIGVuZHBvaW50IGNhbiByZXR1cm4gYW4gSFRUUCAyMDAgUE5HIGNvbnRhaW5pbmcgYSA0MDMvcGVybWlzc2lvbiBtZXNzYWdlLg0KICAgIC8vIFZhbGlkYXRlIGRvd25sb2FkZWQgcGl4ZWxzLCBub3Qgb25seSB0aGUgaW1hZ2UgcHJldmlvdXNseSBkaXNwbGF5ZWQgaW4gRE9NLg0KICAgIGlmKGltYWdlLm5hdHVyYWxXaWR0aDwxMDAwIHx8IGltYWdlLm5hdHVyYWxIZWlnaHQ8ODAgfHwNCiAgICAgICBpbWFnZS5uYXR1cmFsV2lkdGghPT1vcmlnaW5hbC5uYXR1cmFsV2lkdGggfHwgaW1hZ2UubmF0dXJhbEhlaWdodCE9PW9yaWdpbmFsLm5hdHVyYWxIZWlnaHQpew0KICAgICAgdGhyb3cgbmV3IEVycm9yKGDnrKwgJHtudW1iZXJ9IOe7hOino+aekOmHjeaWsOivu+WPluWQjuS4jue9kemhteS4jeS4gOiHtO+8jOWPr+iDvei/lOWbnuS6huadg+mZkOaPkOekuuWbvueJh+OAguW3suWBnOatouWvvOWHuu+8m+ivt+WIt+aWsOivleWNt+OAgeehruiupOW9k+WJjei0puWPt+iDveafpeeci+ino+aekO+8jOWGjemHjeaWsOaYvuekuuWFqOmDqOetlOahiOWSjOino+aekOWQjuWvvOWHuuOAgmApOw0KICAgIH0NCiAgICByZXR1cm4ge2RhdGFVUkwsaW1hZ2V9Ow0KICB9DQogIGFzeW5jIGZ1bmN0aW9uIGlubGluZUltYWdlcyhub2RlLGNhY2hlKSB7DQogICAgY29uc3QgaW1hZ2VzPVsuLi5ub2RlLnF1ZXJ5U2VsZWN0b3JBbGwoJ2ltZycpXTsNCiAgICBmb3IoY29uc3QgaW1nIG9mIGltYWdlcykgew0KICAgICAgY29uc3Qgc3JjPWltZy5jdXJyZW50U3JjfHxpbWcuZ2V0QXR0cmlidXRlKCdzcmMnKTsNCiAgICAgIGltZy5yZW1vdmVBdHRyaWJ1dGUoJ3NyY3NldCcpO2ltZy5yZW1vdmVBdHRyaWJ1dGUoJ2xvYWRpbmcnKTsNCiAgICAgIGltZy5zcmM9YXdhaXQgaW1hZ2VEYXRhVVJMKHNyYyxjYWNoZSk7DQogICAgfQ0KICAgIGF3YWl0IFByb21pc2UuYWxsKGltYWdlcy5tYXAoaW1nPT5pbWcuZGVjb2RlKCkuY2F0Y2goKCk9Pnt0aHJvdyBuZXcgRXJyb3IoJ+WbvueJh+ino+eggeWksei0peOAgicpfSkpKTsNCiAgfQ0KICBmdW5jdGlvbiBjb2xsZWN0KGluY2x1ZGVBbnN3ZXJzPWZhbHNlKSB7DQogICAgY29uc3Qgb3V0PVtdO2xldCBzZWN0aW9uPScnOw0KICAgIGNvbnN0IGFkZFF1ZXN0aW9uPShxLGNvbnRlbnQsYW5zd2VyKT0+ew0KICAgICAgaWYoIWNvbnRlbnQpIHJldHVybjsNCiAgICAgIGlmKGluY2x1ZGVBbnN3ZXJzICYmICghYW5zd2VyIHx8ICFhbnN3ZXIuZ2V0QXR0cmlidXRlKCdzcmMnKSkpIHRocm93IG5ldyBFcnJvcihg56ysICR7b3V0Lmxlbmd0aCsxfSDpopjmsqHmnInlj6/lr7zlh7rnmoTnrZTmoYjop6PmnpDjgILor7flhYjnmbvlvZXvvIzlubbmiZPlvIDnvZHnq5nnmoTigJzmmL7npLrlhajpg6jnrZTmoYjlkozop6PmnpDigJ3jgIJgKTsNCiAgICAgIG91dC5wdXNoKHtzZWN0aW9uLGlkOnEuZ2V0QXR0cmlidXRlKCdxdWVzdGlvbmlkJyksY29udGVudCxhbnN3ZXJ9KTsNCiAgICB9Ow0KICAgIGNvbnN0IGRldGFpbEdyb3Vwcz1bLi4uc291cmNlLnF1ZXJ5U2VsZWN0b3JBbGwoJy5leGFtLWxpc3QgPiAuc2VjLWl0ZW0nKV07DQogICAgaWYoZGV0YWlsR3JvdXBzLmxlbmd0aCkgew0KICAgICAgZm9yKGNvbnN0IGdyb3VwIG9mIGRldGFpbEdyb3VwcykgZm9yKGNvbnN0IGNoaWxkIG9mIGdyb3VwLmNoaWxkcmVuKSB7DQogICAgICAgIGlmKGNoaWxkLm1hdGNoZXMoJy5zZWMtdGl0bGUnKSkgc2VjdGlvbj1jaGlsZC5xdWVyeVNlbGVjdG9yKCdzcGFuJyk/LnRleHRDb250ZW50LnRyaW0oKXx8Y2hpbGQudGV4dENvbnRlbnQudHJpbSgpOw0KICAgICAgICBpZihjaGlsZC5tYXRjaGVzKCcuc2VjLWxpc3QnKSkgZm9yKGNvbnN0IHEgb2YgY2hpbGQucXVlcnlTZWxlY3RvckFsbCgnOnNjb3BlID4gLnRrLXF1ZXN0LWl0ZW0nKSkgew0KICAgICAgICAgIGFkZFF1ZXN0aW9uKHEscS5xdWVyeVNlbGVjdG9yKCc6c2NvcGUgPiAucXVlc2RpdiA+IC5leGFtLWl0ZW1fX2NudCcpLHEucXVlcnlTZWxlY3RvcignOnNjb3BlID4gLnF1ZXNkaXYgPiAuZXhhbS1pdGVtX19vcHQgPiAuaXRlbS5hbnN3ZXIgPiBpbWcnKSk7DQogICAgICAgIH0NCiAgICAgIH0NCiAgICB9IGVsc2UgaWYoc291cmNlLm1hdGNoZXMoJ2FydGljbGUucGFwZXItY250JykpIHsNCiAgICAgIGZvcihjb25zdCBncm91cCBvZiBzb3VyY2UucXVlcnlTZWxlY3RvckFsbCgnLnBhcGVyLWJvZHkgLnF1ZXMtdHlwZScpKSB7DQogICAgICAgIHNlY3Rpb249Z3JvdXAucXVlcnlTZWxlY3RvcignOnNjb3BlID4gLnF1ZXN0eXBlLWhlYWQgLnF1ZXN0eXBldGl0bGUnKT8udGV4dENvbnRlbnQudHJpbSgpfHwnJzsNCiAgICAgICAgZm9yKGNvbnN0IHEgb2YgZ3JvdXAucXVlcnlTZWxlY3RvckFsbCgnOnNjb3BlID4gLnF1ZXN0eXBlLWJvZHkgPiAucXVlcy1pdGVtJykpIHsNCiAgICAgICAgICBhZGRRdWVzdGlvbihxLHEucXVlcnlTZWxlY3RvcignOnNjb3BlID4gLnF1ZXNyb290ID4gLnF1ZXNkaXYgPiAuZXhhbS1pdGVtX19jbnQnKSxxLnF1ZXJ5U2VsZWN0b3IoJzpzY29wZSA+IC5xdWVzcm9vdCA+IC5xdWVzZGl2ID4gLmV4YW0taXRlbV9fb3B0ID4gLml0ZW0uYW5zd2VyID4gaW1nJykpOw0KICAgICAgICB9DQogICAgICB9DQogICAgfQ0KICAgIGlmKCFvdXQubGVuZ3RoKSB0aHJvdyBuZXcgRXJyb3IoJ+W9k+WJjemhtemdouayoeacieaJvuWIsOWPr+WvvOWHuueahOmimOebruOAguivt+aJk+W8gOaciemimOebrueahOivleWNt+ivpuaDhemhteaIlue7hOWNt+S4reW/g+OAgicpOw0KICAgIHJldHVybiBvdXQ7DQogIH0NCiAgYXN5bmMgZnVuY3Rpb24gZG9jeCgpIHsNCiAgICBpZih0eXBlb2YgaHRtbDJjYW52YXMhPT0nZnVuY3Rpb24nKSB0aHJvdyBuZXcgRXJyb3IoJ+acrOWcsOa4suafk+e7hOS7tuacqui9veWFpe+8jOivt+mHjeaWsOWkjeWItuWujOaVtOS5puetvuiEmuacrOOAgicpOw0KICAgIGNvbnN0IGluY2x1ZGVBbnN3ZXJzPXdhbnRzQW5zd2VycygpOw0KICAgIGNvbnN0IHF1ZXN0aW9ucz1jb2xsZWN0KGluY2x1ZGVBbnN3ZXJzKTsNCiAgICBpZihpbmNsdWRlQW5zd2VycykgZm9yKGxldCBpPTA7aTxxdWVzdGlvbnMubGVuZ3RoO2krKyl7DQogICAgICBjb25zdCBpbWFnZT1xdWVzdGlvbnNbaV0uYW5zd2VyOw0KICAgICAgaWYoIWltYWdlLmNvbXBsZXRlfHxpbWFnZS5uYXR1cmFsV2lkdGg8MTAwMHx8aW1hZ2UubmF0dXJhbEhlaWdodDw4MCl7DQogICAgICAgIHRocm93IG5ldyBFcnJvcihg56ysICR7aSsxfSDnu4Top6PmnpDlm77niYflsJrmnKrliqDovb3lrozmlbTjgILor7flhYjmiZPlvIDigJzmmL7npLrlhajpg6jnrZTmoYjlkozop6PmnpDigJ3vvIznqI3nrYnlkI7ph43or5XjgIJgKTsNCiAgICAgIH0NCiAgICB9DQogICAgY29uc3QgaHlicmlkPXBhbmVsLnF1ZXJ5U2VsZWN0b3IoJ1tkYXRhLXdvcmQtbW9kZV0nKS52YWx1ZT09PSdoeWJyaWQnOw0KICAgIGNvbnN0IHBhcGVyVGl0bGU9c291cmNlLnF1ZXJ5U2VsZWN0b3IoJyNwdWlfbWFpbnRpdGxlJyk/LnRleHRDb250ZW50LnRyaW0oKXx8ZG9jdW1lbnQudGl0bGUucmVwbGFjZSgvLee7hOWNt+e9kVxzKiQvLCcnKTsNCiAgICBidXN5KHRydWUpO3N0YXR1cyhg5YeG5aSH5a+85Ye6ICR7cXVlc3Rpb25zLmxlbmd0aH0g6YGT6aKY4oCmYCk7DQogICAgY29uc3QgaG9zdD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsNCiAgICBob3N0LmNsYXNzTmFtZT0nZXhhbS1jbnQnOw0KICAgIGhvc3Quc3R5bGUuY3NzVGV4dD0ncG9zaXRpb246Zml4ZWQ7bGVmdDotMTIwMDBweDt0b3A6MDt6LWluZGV4OjA7cG9pbnRlci1ldmVudHM6bm9uZTt3aWR0aDo4MjBweDtiYWNrZ3JvdW5kOiNmZmY7cGFkZGluZzowJzsNCiAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGhvc3QpOw0KICAgIGNvbnN0IGNhY2hlPW5ldyBNYXAoKSwgZmlsZXM9W10sIG1lZGlhPVtdLCBib2R5PVtdLGFuc3dlckltYWdlcz1bXTsNCiAgICBjb25zdCByZWdpc3RlckltYWdlPShkYXRhLGV4dGVuc2lvbj0ncG5nJyk9PnsNCiAgICAgIGNvbnN0IGlkPW1lZGlhLmxlbmd0aCsxLG5hbWU9J2lubGluZS0nK2lkKycuJytleHRlbnNpb247DQogICAgICBtZWRpYS5wdXNoKHtpZCxuYW1lfSk7ZmlsZXMucHVzaCh7bmFtZTond29yZC9tZWRpYS8nK25hbWUsZGF0YX0pO3JldHVybiBpZDsNCiAgICB9Ow0KICAgIGNvbnN0IG1heFc9Ni44KjkxNDQwMCxtYXhIPTkuNCo5MTQ0MDA7DQogICAgY29uc3QgYWRkSW1hZ2U9KG5hbWUsZGF0YSx3aWR0aCxoZWlnaHQsbGFiZWwpPT57DQogICAgICBjb25zdCBpZD1tZWRpYS5sZW5ndGgrMSxyYXRpbz1NYXRoLm1pbihtYXhXL3dpZHRoLG1heEgvaGVpZ2h0KTsNCiAgICAgIG1lZGlhLnB1c2goe2lkLG5hbWV9KTsNCiAgICAgIGZpbGVzLnB1c2goe25hbWU6YHdvcmQvbWVkaWEvJHtuYW1lfWAsZGF0YX0pOw0KICAgICAgYm9keS5wdXNoKGltYWdlUGFyYShpZCxNYXRoLnJvdW5kKHdpZHRoKnJhdGlvKSxNYXRoLnJvdW5kKGhlaWdodCpyYXRpbyksbGFiZWwpKTsNCiAgICB9Ow0KICAgIGNvbnN0IGFkZENhbnZhcz0oY2FudmFzLG51bWJlcik9PnsNCiAgICAgIGNvbnN0IG1heFNsaWNlPU1hdGguZmxvb3IoY2FudmFzLndpZHRoKm1heEgvbWF4Vyk7DQogICAgICBjb25zdCBjdHg9Y2FudmFzLmdldENvbnRleHQoJzJkJyx7d2lsbFJlYWRGcmVxdWVudGx5OnRydWV9KTsNCiAgICAgIGxldCB0b3A9MCxwYXJ0PTE7DQogICAgICB3aGlsZSh0b3A8Y2FudmFzLmhlaWdodCl7DQogICAgICAgIGxldCBib3R0b209TWF0aC5taW4odG9wK21heFNsaWNlLGNhbnZhcy5oZWlnaHQpOw0KICAgICAgICBpZihib3R0b208Y2FudmFzLmhlaWdodCl7DQogICAgICAgICAgY29uc3QgZnJvbT1NYXRoLm1heCh0b3ArTWF0aC5mbG9vcihtYXhTbGljZSowLjY1KSxib3R0b20tMTMwKTsNCiAgICAgICAgICBjb25zdCB0bz1NYXRoLm1pbihjYW52YXMuaGVpZ2h0LTEsYm90dG9tKzEzMCk7DQogICAgICAgICAgY29uc3QgYmFuZD1jdHguZ2V0SW1hZ2VEYXRhKDAsZnJvbSxjYW52YXMud2lkdGgsdG8tZnJvbSsxKS5kYXRhOw0KICAgICAgICAgIGxldCBiZXN0PWJvdHRvbSxsZWFzdD1JbmZpbml0eTsNCiAgICAgICAgICBmb3IobGV0IHk9ZnJvbTt5PD10bzt5Kz0yKXsNCiAgICAgICAgICAgIGxldCBkYXJrPTA7DQogICAgICAgICAgICBmb3IobGV0IHg9MDt4PGNhbnZhcy53aWR0aDt4Kz02KXsNCiAgICAgICAgICAgICAgY29uc3QgaT0oKHktZnJvbSkqY2FudmFzLndpZHRoK3gpKjQ7DQogICAgICAgICAgICAgIGlmKGJhbmRbaV08MjM1fHxiYW5kW2krMV08MjM1fHxiYW5kW2krMl08MjM1KSBkYXJrKys7DQogICAgICAgICAgICB9DQogICAgICAgICAgICBjb25zdCBzY29yZT1kYXJrK01hdGguYWJzKHktYm90dG9tKS8xMDA7DQogICAgICAgICAgICBpZihzY29yZTxsZWFzdCl7bGVhc3Q9c2NvcmU7YmVzdD15O30NCiAgICAgICAgICB9DQogICAgICAgICAgYm90dG9tPWJlc3Q7DQogICAgICAgIH0NCiAgICAgICAgY29uc3QgaGVpZ2h0PWJvdHRvbS10b3A7DQogICAgICAgIGNvbnN0IHRpbGU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY2FudmFzJyk7dGlsZS53aWR0aD1jYW52YXMud2lkdGg7dGlsZS5oZWlnaHQ9aGVpZ2h0Ow0KICAgICAgICB0aWxlLmdldENvbnRleHQoJzJkJykuZHJhd0ltYWdlKGNhbnZhcywwLHRvcCxjYW52YXMud2lkdGgsaGVpZ2h0LDAsMCxjYW52YXMud2lkdGgsaGVpZ2h0KTsNCiAgICAgICAgYWRkSW1hZ2UoYHF1ZXN0aW9uLSR7bnVtYmVyfS0ke3BhcnR9LnBuZ2AsZGF0YUJ5dGVzKHRpbGUudG9EYXRhVVJMKCdpbWFnZS9wbmcnKSksdGlsZS53aWR0aCx0aWxlLmhlaWdodCxg56ysJHtudW1iZXJ96aKY56ysJHtwYXJ0femDqOWIhmApOw0KICAgICAgICB0b3A9Ym90dG9tO3BhcnQrKzsNCiAgICAgIH0NCiAgICB9Ow0KICAgIGxldCBsYXN0U2VjdGlvbj0nJyxsYXN0UGFydD1udWxsOw0KICAgIGNvbnN0IGNlbnRlclBhcGVyPXNvdXJjZS5tYXRjaGVzKCdhcnRpY2xlLnBhcGVyLWNudCcpOw0KICAgIGNvbnN0IHNob3duPW5vZGU9PiEhbm9kZSAmJiAhbm9kZS5jbG9zZXN0KCdbaGlkZGVuXScpICYmIG5vZGUuZ2V0Q2xpZW50UmVjdHMoKS5sZW5ndGg+MCAmJiBnZXRDb21wdXRlZFN0eWxlKG5vZGUpLnZpc2liaWxpdHkhPT0naGlkZGVuJzsNCiAgICBjb25zdCB2aXNpYmxlVGV4dD1zZWxlY3Rvcj0+e2NvbnN0IG5vZGU9c291cmNlLnF1ZXJ5U2VsZWN0b3Ioc2VsZWN0b3IpO3JldHVybiBzaG93bihub2RlKT9ub2RlLnRleHRDb250ZW50LnRyaW0oKTonJzt9Ow0KICAgIHRyeSB7DQogICAgICBhd2FpdCBkb2N1bWVudC5mb250cy5yZWFkeTsNCiAgICAgIGlmKGluY2x1ZGVBbnN3ZXJzKSBmb3IobGV0IGk9MDtpPHF1ZXN0aW9ucy5sZW5ndGg7aSsrKXsNCiAgICAgICAgc3RhdHVzKGDmraPlnKjmoKHpqozop6PmnpDvvJrnrKwgJHtpKzF9LyR7cXVlc3Rpb25zLmxlbmd0aH0g57uEYCk7DQogICAgICAgIGFuc3dlckltYWdlcy5wdXNoKGF3YWl0IHJlYWRBbnN3ZXJJbWFnZShxdWVzdGlvbnNbaV0uYW5zd2VyLGNhY2hlLGkrMSkpOw0KICAgICAgfQ0KICAgICAgaWYoY2VudGVyUGFwZXIpew0KICAgICAgICBjb25zdCBtYXJrPXZpc2libGVUZXh0KCcjcHVpX21hcmt0YWcnKTsNCiAgICAgICAgaWYobWFyaykgYm9keS5wdXNoKHBhcmEobWFyaywyMCxmYWxzZSwncmlnaHQnKSk7DQogICAgICB9DQogICAgICBib2R5LnB1c2gocGFyYShwYXBlclRpdGxlLDMwLHRydWUsY2VudGVyUGFwZXI/J2NlbnRlcic6JycpKTsNCiAgICAgIGlmKGNlbnRlclBhcGVyKXsNCiAgICAgICAgY29uc3Qgc3VidGl0bGU9dmlzaWJsZVRleHQoJyNwdWlfc3VidGl0bGUnKSx0ZXN0SW5mbz12aXNpYmxlVGV4dCgnI3B1aV90ZXN0aW5mbycpOw0KICAgICAgICBpZihzdWJ0aXRsZSkgYm9keS5wdXNoKHBhcmEoc3VidGl0bGUsMjQsZmFsc2UsJ2NlbnRlcicpKTsNCiAgICAgICAgaWYodGVzdEluZm8pIGJvZHkucHVzaChwYXJhKHRlc3RJbmZvLDIyLGZhbHNlLCdjZW50ZXInKSk7DQogICAgICAgIGNvbnN0IHN0dWRlbnQ9dmlzaWJsZVRleHQoJyNwdWlfc3R1ZGVudGlucHV0Jyk7DQogICAgICAgIGlmKHN0dWRlbnQpIGJvZHkucHVzaChwYXJhKHN0dWRlbnQsMjApKTsNCiAgICAgICAgY29uc3Qgc2NvcmU9c291cmNlLnF1ZXJ5U2VsZWN0b3IoJyNwdWlfc2NvcmUnKTsNCiAgICAgICAgaWYoc2hvd24oc2NvcmUpKSBmb3IoY29uc3Qgcm93IG9mIHNjb3JlLnF1ZXJ5U2VsZWN0b3JBbGwoJ3RyJykpew0KICAgICAgICAgIGNvbnN0IGNlbGxzPVsuLi5yb3cuY2hpbGRyZW5dLm1hcChjZWxsPT5jZWxsLnRleHRDb250ZW50LnRyaW0oKSkuZmlsdGVyKEJvb2xlYW4pOw0KICAgICAgICAgIGlmKGNlbGxzLmxlbmd0aCkgYm9keS5wdXNoKHBhcmEoY2VsbHMuam9pbign44CAJyksMjApKTsNCiAgICAgICAgfQ0KICAgICAgICBjb25zdCBub3RpY2U9c291cmNlLnF1ZXJ5U2VsZWN0b3IoJyNwdWlfbm90aWNlJyk7DQogICAgICAgIGlmKHNob3duKG5vdGljZSkpew0KICAgICAgICAgIGNvbnN0IHRpcD1ub3RpY2UucXVlcnlTZWxlY3RvcignLm5vdGljZS10aXAnKSxub3RlPW5vdGljZS5xdWVyeVNlbGVjdG9yKCcjcHVpX25vdGljZXRleHQnKTsNCiAgICAgICAgICBpZihzaG93bih0aXApICYmIHRpcC50ZXh0Q29udGVudC50cmltKCkpIGJvZHkucHVzaChwYXJhKHRpcC50ZXh0Q29udGVudC50cmltKCksMjApKTsNCiAgICAgICAgICBpZihzaG93bihub3RlKSkgYm9keS5wdXNoKC4uLmVkaXRhYmxlQ29udGVudChub3RlKSk7DQogICAgICAgIH0NCiAgICAgIH0NCiAgICAgIGZvcihsZXQgaT0wO2k8cXVlc3Rpb25zLmxlbmd0aDtpKyspIHsNCiAgICAgICAgY29uc3QgcT1xdWVzdGlvbnNbaV07DQogICAgICAgIGlmKGNlbnRlclBhcGVyKXsNCiAgICAgICAgICBjb25zdCBwYXJ0PXEuY29udGVudC5jbG9zZXN0KCcucGFwZXItcGFydCcpOw0KICAgICAgICAgIGlmKHBhcnQgJiYgcGFydCE9PWxhc3RQYXJ0KXsNCiAgICAgICAgICAgIGNvbnN0IGhlYWRpbmc9cGFydC5xdWVyeVNlbGVjdG9yKCc6c2NvcGUgPiAucGFydC1oZWFkID4gLnBhcnQtaGVhZC1ib3gnKTsNCiAgICAgICAgICAgIGNvbnN0IG5hbWU9aGVhZGluZz8ucXVlcnlTZWxlY3RvcignLnBhcnQtbmFtZScpLG5vdGU9aGVhZGluZz8ucXVlcnlTZWxlY3RvcignLnBhcnQtbm90ZScpOw0KICAgICAgICAgICAgaWYoc2hvd24obmFtZSkgJiYgbmFtZS50ZXh0Q29udGVudC50cmltKCkpIGJvZHkucHVzaChwYXJhKG5hbWUudGV4dENvbnRlbnQudHJpbSgpLDI1LHRydWUsJ2NlbnRlcicpKTsNCiAgICAgICAgICAgIGlmKHNob3duKG5vdGUpICYmIG5vdGUudGV4dENvbnRlbnQudHJpbSgpKSBib2R5LnB1c2goLi4uZWRpdGFibGVDb250ZW50KG5vdGUpKTsNCiAgICAgICAgICAgIGxhc3RQYXJ0PXBhcnQ7DQogICAgICAgICAgICBsYXN0U2VjdGlvbj0nJzsNCiAgICAgICAgICB9DQogICAgICAgIH0NCiAgICAgICAgaWYocS5zZWN0aW9uIT09bGFzdFNlY3Rpb24pe2JvZHkucHVzaChwYXJhKHEuc2VjdGlvbiwyNSx0cnVlKSk7bGFzdFNlY3Rpb249cS5zZWN0aW9uO30NCiAgICAgICAgc3RhdHVzKGDmraPlnKjnlJ/miJAgV29yZO+8muesrCAke2krMX0vJHtxdWVzdGlvbnMubGVuZ3RofSDpophgKTsNCg0KICAgICAgICBob3N0LmlubmVySFRNTD0nJzsNCiAgICAgICAgY29uc3Qgd3JhcD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTt3cmFwLmNsYXNzTmFtZT0nc2VjLWxpc3QnOw0KICAgICAgICBjb25zdCBpdGVtPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO2l0ZW0uY2xhc3NOYW1lPSd0ay1xdWVzdC1pdGVtIHF1ZXNyb290JzsNCiAgICAgICAgY29uc3QgcXVlc3Rpb249ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7cXVlc3Rpb24uY2xhc3NOYW1lPSd3cmFwcGVyIHF1ZXNkaXYnOw0KICAgICAgICBjb25zdCBjb250ZW50PXEuY29udGVudC5jbG9uZU5vZGUodHJ1ZSk7Y29udGVudC5zdHlsZS5jc3NUZXh0Kz0nO3dpZHRoOjc4MHB4IWltcG9ydGFudDttYXgtd2lkdGg6NzgwcHghaW1wb3J0YW50O2JveC1zaXppbmc6Ym9yZGVyLWJveCFpbXBvcnRhbnQ7b3ZlcmZsb3c6dmlzaWJsZSFpbXBvcnRhbnQ7YmFja2dyb3VuZDojZmZmIWltcG9ydGFudDtjb2xvcjojMTExIWltcG9ydGFudCc7DQogICAgICAgIHF1ZXN0aW9uLmFwcGVuZENoaWxkKGNvbnRlbnQpO2l0ZW0uYXBwZW5kQ2hpbGQocXVlc3Rpb24pO3dyYXAuYXBwZW5kQ2hpbGQoaXRlbSk7aG9zdC5hcHBlbmRDaGlsZCh3cmFwKTsNCiAgICAgICAgY29uc3Qgb3JpZ2luYWxDYW52YXNlcz1bLi4ucS5jb250ZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2NhbnZhcycpXTsNCiAgICAgICAgWy4uLmNvbnRlbnQucXVlcnlTZWxlY3RvckFsbCgnY2FudmFzJyldLmZvckVhY2goKGMsaik9PntjLndpZHRoPW9yaWdpbmFsQ2FudmFzZXNbal0ud2lkdGg7Yy5oZWlnaHQ9b3JpZ2luYWxDYW52YXNlc1tqXS5oZWlnaHQ7Yy5nZXRDb250ZXh0KCcyZCcpLmRyYXdJbWFnZShvcmlnaW5hbENhbnZhc2VzW2pdLDAsMCk7fSk7DQogICAgICAgIGF3YWl0IGlubGluZUltYWdlcyhjb250ZW50LGNhY2hlKTsNCiAgICAgICAgaWYoaHlicmlkKXsNCiAgICAgICAgICBjb25zdCBwYXJ0cz1hd2FpdCBoeWJyaWRDb250ZW50KGNvbnRlbnQscmVnaXN0ZXJJbWFnZSxtYXhXKTsNCiAgICAgICAgICBpZighcGFydHMubGVuZ3RoKSB0aHJvdyBuZXcgRXJyb3IoJ+esrCAnKyhpKzEpKycg6aKY5pyq55Sf5oiQ5YaF5a6544CCJyk7DQogICAgICAgICAgYm9keS5wdXNoKCc8dzpzZHQ+PHc6c2R0UHI+PHc6YWxpYXMgdzp2YWw9IuesrCcrKGkrMSkrJ+mimCIvPjx3OnRhZyB3OnZhbD0icXVlc3Rpb24tJytlc2MocS5pZHx8aSsxKSsnIi8+PHc6aWQgdzp2YWw9IicrKDEwMDAwK2kpKyciLz48L3c6c2R0UHI+PHc6c2R0Q29udGVudD4nK3BhcnRzLmpvaW4oJycpKyc8L3c6c2R0Q29udGVudD48L3c6c2R0PicpOw0KICAgICAgICAgIGJvZHkucHVzaChwYXJhKCcnKSk7DQogICAgICAgICAgY29udGludWU7DQogICAgICAgIH0NCiAgICAgICAgY29uc3QgY2FudmFzPWF3YWl0IGh0bWwyY2FudmFzKGNvbnRlbnQse2JhY2tncm91bmRDb2xvcjonI2ZmZmZmZicsc2NhbGU6Mi41LHVzZUNPUlM6dHJ1ZSxhbGxvd1RhaW50OmZhbHNlLGxvZ2dpbmc6ZmFsc2Usc2Nyb2xsWDowLHNjcm9sbFk6MCx3aW5kb3dXaWR0aDoxMDAwfSk7DQogICAgICAgIGlmKCFjYW52YXMud2lkdGh8fCFjYW52YXMuaGVpZ2h0KSB0aHJvdyBuZXcgRXJyb3IoYOesrCAke2krMX0g6aKY55Sf5oiQ5LqG56m655m95Zu+54mH44CCYCk7DQogICAgICAgIGFkZENhbnZhcyhjYW52YXMsaSsxKTsNCiAgICAgICAgYm9keS5wdXNoKCc8dzpwPjx3OnBQcj48dzpzcGFjaW5nIHc6YWZ0ZXI9IjgwIi8+PC93OnBQcj48L3c6cD4nKTsNCiAgICAgIH0NCiAgICAgIGlmKGluY2x1ZGVBbnN3ZXJzKXsNCiAgICAgICAgYm9keS5wdXNoKCc8dzpwPjx3OnI+PHc6YnIgdzp0eXBlPSJwYWdlIi8+PC93OnI+PC93OnA+Jyk7DQogICAgICAgIGJvZHkucHVzaChwYXJhKCflj4LogIPnrZTmoYjkuI7op6PmnpAnLDMwLHRydWUsJ2NlbnRlcicpKTsNCiAgICAgICAgZm9yKGxldCBpPTA7aTxxdWVzdGlvbnMubGVuZ3RoO2krKyl7DQogICAgICAgICAgc3RhdHVzKGDmraPlnKjliqDlhaXop6PmnpDvvJrnrKwgJHtpKzF9LyR7cXVlc3Rpb25zLmxlbmd0aH0g57uEYCk7DQogICAgICAgICAgY29uc3Qge2RhdGFVUkwsaW1hZ2V9PWFuc3dlckltYWdlc1tpXTsNCiAgICAgICAgICBjb25zdCB3aWR0aD1pbWFnZS5uYXR1cmFsV2lkdGgsaGVpZ2h0PWltYWdlLm5hdHVyYWxIZWlnaHQ7DQogICAgICAgICAgYm9keS5wdXNoKHBhcmEoYOino+aekCAke2krMX1gLDIyLHRydWUpKTsNCiAgICAgICAgICBpZihoZWlnaHQvd2lkdGg8PW1heEgvbWF4VyAmJiAvXmRhdGE6aW1hZ2VcLyhwbmd8anBlP2cpO2Jhc2U2NCwvaS50ZXN0KGRhdGFVUkwpKXsNCiAgICAgICAgICAgIGNvbnN0IGV4dGVuc2lvbj0vXmRhdGE6aW1hZ2VcL2pwZT9nL2kudGVzdChkYXRhVVJMKT8nanBnJzoncG5nJzsNCiAgICAgICAgICAgIGFkZEltYWdlKGBhbnN3ZXItJHtpKzF9LiR7ZXh0ZW5zaW9ufWAsZGF0YUJ5dGVzKGRhdGFVUkwpLHdpZHRoLGhlaWdodCxg6Kej5p6QICR7aSsxfWApOw0KICAgICAgICAgIH1lbHNlew0KICAgICAgICAgICAgY29uc3QgY2FudmFzPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpO2NhbnZhcy53aWR0aD13aWR0aDtjYW52YXMuaGVpZ2h0PWhlaWdodDsNCiAgICAgICAgICAgIGNhbnZhcy5nZXRDb250ZXh0KCcyZCcpLmRyYXdJbWFnZShpbWFnZSwwLDApOw0KICAgICAgICAgICAgYWRkQ2FudmFzKGNhbnZhcyxgYW5zd2VyLSR7aSsxfWApOw0KICAgICAgICAgICAgY2FudmFzLndpZHRoPTE7Y2FudmFzLmhlaWdodD0xOw0KICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgICAgfQ0KICAgICAgYm9keS5wdXNoKCc8dzpzZWN0UHI+PHc6cGdTeiB3Onc9IjExOTA2IiB3Omg9IjE2ODM4Ii8+PHc6cGdNYXIgdzp0b3A9IjkwMCIgdzpyaWdodD0iODUwIiB3OmJvdHRvbT0iOTAwIiB3OmxlZnQ9Ijg1MCIgdzpoZWFkZXI9IjQ1MCIgdzpmb290ZXI9IjQ1MCIgdzpndXR0ZXI9IjAiLz48L3c6c2VjdFByPicpOw0KICAgICAgY29uc3QgZG9jPWA8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgc3RhbmRhbG9uZT0ieWVzIj8+PHc6ZG9jdW1lbnQgeG1sbnM6dz0iaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL3dvcmRwcm9jZXNzaW5nbWwvMjAwNi9tYWluIiB4bWxuczpyPSJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9yZWxhdGlvbnNoaXBzIiB4bWxuczp3cD0iaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL2RyYXdpbmdtbC8yMDA2L3dvcmRwcm9jZXNzaW5nRHJhd2luZyI+PHc6Ym9keT4ke2JvZHkuam9pbignJyl9PC93OmJvZHk+PC93OmRvY3VtZW50PmA7DQogICAgICBjb25zdCByZWxzPWA8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgc3RhbmRhbG9uZT0ieWVzIj8+PFJlbGF0aW9uc2hpcHMgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9wYWNrYWdlLzIwMDYvcmVsYXRpb25zaGlwcyI+JHttZWRpYS5tYXAobT0+YDxSZWxhdGlvbnNoaXAgSWQ9InJJZCR7bS5pZH0iIFR5cGU9Imh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9vZmZpY2VEb2N1bWVudC8yMDA2L3JlbGF0aW9uc2hpcHMvaW1hZ2UiIFRhcmdldD0ibWVkaWEvJHttLm5hbWV9Ii8+YCkuam9pbignJyl9PC9SZWxhdGlvbnNoaXBzPmA7DQogICAgICBmaWxlcy51bnNoaWZ0KHtuYW1lOidbQ29udGVudF9UeXBlc10ueG1sJyxkYXRhOnU4KCc8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgc3RhbmRhbG9uZT0ieWVzIj8+PFR5cGVzIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvcGFja2FnZS8yMDA2L2NvbnRlbnQtdHlwZXMiPjxEZWZhdWx0IEV4dGVuc2lvbj0icmVscyIgQ29udGVudFR5cGU9ImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1wYWNrYWdlLnJlbGF0aW9uc2hpcHMreG1sIi8+PERlZmF1bHQgRXh0ZW5zaW9uPSJ4bWwiIENvbnRlbnRUeXBlPSJhcHBsaWNhdGlvbi94bWwiLz48RGVmYXVsdCBFeHRlbnNpb249InBuZyIgQ29udGVudFR5cGU9ImltYWdlL3BuZyIvPjxEZWZhdWx0IEV4dGVuc2lvbj0ianBnIiBDb250ZW50VHlwZT0iaW1hZ2UvanBlZyIvPjxPdmVycmlkZSBQYXJ0TmFtZT0iL3dvcmQvZG9jdW1lbnQueG1sIiBDb250ZW50VHlwZT0iYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LndvcmRwcm9jZXNzaW5nbWwuZG9jdW1lbnQubWFpbit4bWwiLz48L1R5cGVzPicpfSx7bmFtZTonX3JlbHMvLnJlbHMnLGRhdGE6dTgoJzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiBzdGFuZGFsb25lPSJ5ZXMiPz48UmVsYXRpb25zaGlwcyB4bWxucz0iaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL3BhY2thZ2UvMjAwNi9yZWxhdGlvbnNoaXBzIj48UmVsYXRpb25zaGlwIElkPSJySWQxIiBUeXBlPSJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9yZWxhdGlvbnNoaXBzL29mZmljZURvY3VtZW50IiBUYXJnZXQ9IndvcmQvZG9jdW1lbnQueG1sIi8+PC9SZWxhdGlvbnNoaXBzPicpfSx7bmFtZTond29yZC9kb2N1bWVudC54bWwnLGRhdGE6dTgoZG9jKX0se25hbWU6J3dvcmQvX3JlbHMvZG9jdW1lbnQueG1sLnJlbHMnLGRhdGE6dTgocmVscyl9KTsNCiAgICAgIGNvbnN0IGJsb2I9emlwKGZpbGVzKSxmaWxlbmFtZT0ocGFwZXJUaXRsZS5yZXBsYWNlKC9bXFwvOio/Ijw+fF0vZywnXycpfHwn57uE5Y23572R6K+V5Y23JykrKGluY2x1ZGVBbnN3ZXJzPyct5ZCr562U5qGI6Kej5p6QJzonJykrJy5kb2N4JzsNCiAgICAgIGlmICh0eXBlb2Ygd2luZG93Ll9fWnVqdWFuQXBwU2F2ZURvY3ggPT09ICdmdW5jdGlvbicpIHsNCiAgICAgICAgYXdhaXQgd2luZG93Ll9fWnVqdWFuQXBwU2F2ZURvY3goYmxvYixmaWxlbmFtZSk7DQogICAgICB9IGVsc2Ugew0KICAgICAgICBjb25zdCB1cmw9VVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKSxhPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTsNCiAgICAgICAgYS5ocmVmPXVybDthLmRvd25sb2FkPWZpbGVuYW1lO2RvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoYSk7YS5jbGljaygpO2EucmVtb3ZlKCk7c2V0VGltZW91dCgoKT0+VVJMLnJldm9rZU9iamVjdFVSTCh1cmwpLDYwMDAwKTsNCiAgICAgIH0NCiAgICAgIHN0YXR1cyhg5a6M5oiQ77yaJHtxdWVzdGlvbnMubGVuZ3RofSDnu4Tpopjnm67lt7Llr7zlh7rjgIIke2h5YnJpZD8n5paH5a2X5ZKM6KGo5qC85Y+v57yW6L6R77yM5YWs5byP5ZKM5o+S5Zu+5L+d55WZ5Li65Zu+54mH44CCJzon5bey5L2/55So5YW85a655qih5byP44CCJ30ke2luY2x1ZGVBbnN3ZXJzPyfop6PmnpDlm77niYflt7Lnva7kuo7mlofmnKvjgIInOicnfWApOw0KICAgIH0gZmluYWxseSB7aG9zdC5yZW1vdmUoKTtidXN5KGZhbHNlKTt9DQogIH0NCiAgcGFuZWwuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLGFzeW5jIGU9Pntjb25zdCBhY3Rpb249ZS50YXJnZXQ/LmRhdGFzZXQ/LmFjdGlvbjtpZihhY3Rpb249PT0nY2xvc2UnKWNsb3NlUGFuZWwoKTtpZihhY3Rpb249PT0ncGRmJ3x8YWN0aW9uPT09J2RvY3gnKXRyeXthd2FpdCAoYWN0aW9uPT09J3BkZic/cGRmKCk6ZG9jeCgpKX1jYXRjaChlcnIpe2NvbnNvbGUuZXJyb3IoJ+e7hOWNt+e9keWvvOWHuuWksei0pScsZXJyKTtjb25zdCBtZXNzYWdlPWVycj8ubWVzc2FnZXx8U3RyaW5nKGVycik7c3RhdHVzKCflr7zlh7rlpLHotKXvvJonK21lc3NhZ2UpO2FsZXJ0KChhY3Rpb249PT0ncGRmJz8nUERGJzonV29yZCcpKycg5a+85Ye65aSx6LSl77yaJyttZXNzYWdlKTt9fSk7DQp9KSgpOw0K"),c=>c.charCodeAt(0))))})()