# HG changeset patch # User tduigou # Date 1748254246 0 # Node ID 7d1778f5e164245ad1c9ae79b79d463f249301be # Parent 556649b3f9bb1af20bc867248989b43fddb4bb0b planemo upload for repository https://github.com/Edinburgh-Genome-Foundry/DnaCauldron/tree/master commit 6ae809b563b40bcdb6be2e74fe2a84ddad5484ae diff -r 556649b3f9bb -r 7d1778f5e164 cloning_similation.xml --- a/cloning_similation.xml Mon May 26 09:57:55 2025 +0000 +++ b/cloning_similation.xml Mon May 26 10:10:46 2025 +0000 @@ -40,7 +40,7 @@ --output_simulation 'output_zip.zip' --enzyme '$adv.enzyme' --topology '$topology' && - cp 'output_zip.zip' '$output_zip' + cp 'output_zip.zip' '$output_zip' && echo DEBUG && ls 'outdir_gb' ]]> @@ -54,8 +54,8 @@ - - + +
diff -r 556649b3f9bb -r 7d1778f5e164 output.html --- a/output.html Mon May 26 09:57:55 2025 +0000 +++ b/output.html Mon May 26 10:10:46 2025 +0000 @@ -285,7 +285,7 @@ var md = window.markdownit({ html: true, }); - target.innerHTML = md.render(atob('IyMgVGVzdCBTdW1tYXJ5Cgo8ZGl2IGNsYXNzPSJwcm9ncmVzcyI+CiAgPGRpdiBjbGFzcz0icHJvZ3Jlc3MtYmFyIHByb2dyZXNzLWJhci1zdWNjZXNzIiBzdHlsZT0id2lkdGg6IDEwMC4wJSIgYXJpYS12YWx1ZW5vdz0iNyIgYXJpYS12YWx1ZW1pbj0iMCIgYXJpYS12YWx1ZW1heD0iNyIgZGF0YS10b2dnbGU9InRvb2x0aXAiIHRpdGxlPSI3IFBhc3NlZCI+CiAgPC9kaXY+CiAgPGRpdiBjbGFzcz0icHJvZ3Jlc3MtYmFyIHByb2dyZXNzLWJhci13YXJuaW5nIiBzdHlsZT0id2lkdGg6IDAuMCUiIGFyaWEtdmFsdWVub3c9IjAiIGFyaWEtdmFsdWVtaW49IjAiIGFyaWEtdmFsdWVtYXg9IjciIGRhdGEtdG9nZ2xlPSJ0b29sdGlwIiB0aXRsZT0iMCBTa2lwcGVkIj4KICA8L2Rpdj4KICA8ZGl2IGNsYXNzPSJwcm9ncmVzcy1iYXIgcHJvZ3Jlc3MtYmFyLWRhbmdlciIgc3R5bGU9IndpZHRoOiAwLjAlIiBhcmlhLXZhbHVlbm93PSIwIiBhcmlhLXZhbHVlbWluPSIwIiBhcmlhLXZhbHVlbWF4PSI3IiB0aXRsZT0iMCBGYWlsZWQgb3IgRXJyb3JlZCI+CiAgPC9kaXY+CjwvZGl2PgoKfCBUZXN0IFN0YXRlIHwgQ291bnQgfAp8IC0tLS0tLS0tLS0gfCAtLS0tLSB8CnwgVG90YWwgICAgICB8IDcgfAp8IFBhc3NlZCAgICAgfCA3IHwKfCBFcnJvciAgICAgIHwgMCB8CnwgRmFpbHVyZSAgICB8IDAgfAp8IFNraXBwZWQgICAgfCAwIHwKCgo8ZGV0YWlscyA+PHN1bW1hcnk+UGFzc2VkIFRlc3RzPC9zdW1tYXJ5PgoKKiA8ZGV0YWlscyBjbGFzcz0icmNvcm5lcnMgbGlnaHQtZ3JlZW4iPjxzdW1tYXJ5IGNsYXNzPSJsaWdodC1ncmVlbiI+JiM5OTg5OyBjbG9uaW5nX3NpbXVsYXRpb24gKFRlc3QgIyAxKTwvc3VtbWFyeT48ZGl2IGNsYXNzPSJwYWRkZWQiPgoKICAgICoqQ29tbWFuZCBMaW5lOioqCgogICAgKiBgYGBjb25zb2xlCiAgICAgIG1rZGlyICdvdXRkaXJfemlwJyAmJiBta2RpciAnb3V0ZGlyX2diJyAmJiBjcCAnL3RtcC90bXBoeHhvY2VhaC9maWxlcy82LzEvYS9kYXRhc2V0XzYxYWE0YjhhLWQ3MWEtNGU5ZC1hODc4LTVmMGQxNDk0YjM2ZC5kYXQnICdhc3NlbWJseV9jc3YuY3N2JyAmJiBweXRob24gJy9ob21lL3JraGFsZWQvZ2FsYXh5dG9vbHMvdG9vbHMvY2xvbmluZ19zaW11bGF0aW9uL2Nsb25pbmdfc2ltdWxhdGlvbi5weScgLS1wYXJ0c19maWxlcyAnL3RtcC90bXBoeHhvY2VhaC9maWxlcy9mL2MvZS9kYXRhc2V0X2ZjZTViNWExLTkyZTItNGMzOS05MGQ1LTBlZGRmNTY2MzVmMC5kYXQsL3RtcC90bXBoeHhvY2VhaC9maWxlcy9hLzYvNC9kYXRhc2V0X2E2NDAwYTgzLWU0ZmQtNDg4Yi05NGU4LTVlYzFmNDRkYjljYS5kYXQsL3RtcC90bXBoeHhvY2VhaC9maWxlcy9hLzYvNi9kYXRhc2V0X2E2NmM3YWM5LWY4MjgtNDA1ZC05YTQ5LTg0MmU5NzhiMDBhZi5kYXQsL3RtcC90bXBoeHhvY2VhaC9maWxlcy81LzQvYi9kYXRhc2V0XzU0Yjg3OGFiLTA1ZTYtNDIxMi1iMzk5LWFiMWY2MmM1OWUxNi5kYXQsL3RtcC90bXBoeHhvY2VhaC9maWxlcy8zLzkvMC9kYXRhc2V0XzM5MDIxZWZlLTZhNGYtNGI3Zi1iYTBkLWY4N2MyYjQzNmEwZi5kYXQsL3RtcC90bXBoeHhvY2VhaC9maWxlcy9iL2UvMi9kYXRhc2V0X2JlMjZjOWFiLTI4ZTgtNDQ5YS1iZDAxLTIwNDdhZjBkZmE1ZC5kYXQsL3RtcC90bXBoeHhvY2VhaC9maWxlcy9mLzcvZi9kYXRhc2V0X2Y3ZmQxOTc1LTgxYmMtNGE0Zi04OWM2LWQ5NDZkNTk3ODJlZS5kYXQsL3RtcC90bXBoeHhvY2VhaC9maWxlcy9mL2IvMS9kYXRhc2V0X2ZiMWYwODg4LTI0ODctNGYxNC1iY2RkLWZhMDY5MjNkNGNkOS5kYXQsL3RtcC90bXBoeHhvY2VhaC9maWxlcy8yLzUvMC9kYXRhc2V0XzI1MDUwMGE3LTI1Y2EtNGNiYS04ZDcxLTdkMTYwNTNhZmNhYS5kYXQsL3RtcC90bXBoeHhvY2VhaC9maWxlcy8zLzgvNy9kYXRhc2V0XzM4N2FkN2E2LTE5MzEtNGE0Ni05OWQ1LTQ1MTNiYTkzYTk5OS5kYXQsL3RtcC90bXBoeHhvY2VhaC9maWxlcy82LzgvMi9kYXRhc2V0XzY4MjlhNTg3LTY3M2EtNDRhNi04YmNmLWVjNjMzNGE5MTg0Zi5kYXQsL3RtcC90bXBoeHhvY2VhaC9maWxlcy80LzAvNC9kYXRhc2V0XzQwNDA1Y2VlLWQ3MGEtNDVkNi1hYzkxLTA1NjE2ZmU3OThiOS5kYXQnIC0tZG9tZXN0aWNhdGVkX3NlcSAnJyAtLWFzc2VtYmx5X2NzdiAnYXNzZW1ibHlfY3N2LmNzdicgLS1hc3NlbWJseV9wbGFuX25hbWUgJ1R5cGUyc1Jlc3RyaWN0aW9uQXNzZW1ibHknIC0tZmlsZV9uYW1lX21hcHBpbmcgJy90bXAvdG1waHh4b2NlYWgvZmlsZXMvZi9jL2UvZGF0YXNldF9mY2U1YjVhMS05MmUyLTRjMzktOTBkNS0wZWRkZjU2NjM1ZjAuZGF0OnBhcnRfQS5nYiwvdG1wL3RtcGh4eG9jZWFoL2ZpbGVzL2EvNi80L2RhdGFzZXRfYTY0MDBhODMtZTRmZC00ODhiLTk0ZTgtNWVjMWY0NGRiOWNhLmRhdDpwYXJ0X0IuZ2IsL3RtcC90bXBoeHhvY2VhaC9maWxlcy9hLzYvNi9kYXRhc2V0X2E2NmM3YWM5LWY4MjgtNDA1ZC05YTQ5LTg0MmU5NzhiMDBhZi5kYXQ6cGFydF9DLmdiLC90bXAvdG1waHh4b2NlYWgvZmlsZXMvNS80L2IvZGF0YXNldF81NGI4NzhhYi0wNWU2LTQyMTItYjM5OS1hYjFmNjJjNTllMTYuZGF0OnBhcnRfRC5nYiwvdG1wL3RtcGh4eG9jZWFoL2ZpbGVzLzMvOS8wL2RhdGFzZXRfMzkwMjFlZmUtNmE0Zi00YjdmLWJhMGQtZjg3YzJiNDM2YTBmLmRhdDpwYXJ0X0UuZ2IsL3RtcC90bXBoeHhvY2VhaC9maWxlcy9iL2UvMi9kYXRhc2V0X2JlMjZjOWFiLTI4ZTgtNDQ5YS1iZDAxLTIwNDdhZjBkZmE1ZC5kYXQ6cGFydF9GLmdiLC90bXAvdG1waHh4b2NlYWgvZmlsZXMvZi83L2YvZGF0YXNldF9mN2ZkMTk3NS04MWJjLTRhNGYtODljNi1kOTQ2ZDU5NzgyZWUuZGF0OnBhcnRfRy5nYiwvdG1wL3RtcGh4eG9jZWFoL2ZpbGVzL2YvYi8xL2RhdGFzZXRfZmIxZjA4ODgtMjQ4Ny00ZjE0LWJjZGQtZmEwNjkyM2Q0Y2Q5LmRhdDpwYXJ0X0guZ2IsL3RtcC90bXBoeHhvY2VhaC9maWxlcy8yLzUvMC9kYXRhc2V0XzI1MDUwMGE3LTI1Y2EtNGNiYS04ZDcxLTdkMTYwNTNhZmNhYS5kYXQ6cGFydF9JLmdiLC90bXAvdG1waHh4b2NlYWgvZmlsZXMvMy84LzcvZGF0YXNldF8zODdhZDdhNi0xOTMxLTRhNDYtOTlkNS00NTEzYmE5M2E5OTkuZGF0OnBhcnRfSi5nYiwvdG1wL3RtcGh4eG9jZWFoL2ZpbGVzLzYvOC8yL2RhdGFzZXRfNjgyOWE1ODctNjczYS00NGE2LThiY2YtZWM2MzM0YTkxODRmLmRhdDpwYXJ0X0suZ2IsL3RtcC90bXBoeHhvY2VhaC9maWxlcy80LzAvNC9kYXRhc2V0XzQwNDA1Y2VlLWQ3MGEtNDVkNi1hYzkxLTA1NjE2ZmU3OThiOS5kYXQ6cGFydF9MLmdiJyAtLWZpbGVfbmFtZV9tYXBwaW5nX2RvbSAnJyAtLXVzZV9maWxlX25hbWVzX2FzX2lkICd0cnVlJyAtLW91dGRpcl9zaW11bGF0aW9uICdvdXRkaXJfemlwJyAtLW91dGRpcl9nYiAnb3V0ZGlyX2diJyAtLW91dHB1dF9zaW11bGF0aW9uICdvdXRwdXRfemlwLnppcCcgLS1lbnp5bWUgJ2F1dG8nIC0tdG9wb2xvZ3kgJ2NpcmN1bGFyJyAmJiBjcCAnb3V0cHV0X3ppcC56aXAnICcvdG1wL3RtcGh4eG9jZWFoL2pvYl93b3JraW5nX2RpcmVjdG9yeS8wMDAvMTQvb3V0cHV0cy9kYXRhc2V0X2E4NDBiMGRlLTczNzQtNGZjMi1iYzljLWVlYzBmNjYxNWUyZi5kYXQnCiAgICAgIGBgYAogICAgKipFeGl0IENvZGU6KioKCiAgICAqIGBgYGNvbnNvbGUKICAgICAgMAogICAgICBgYGAKICAgICoqU3RhbmRhcmQgRXJyb3I6KioKCiAgICAqIGBgYGNvbnNvbGUKICAgICAgCiAgICAgIGFzc2VtYmx5OiAgIDAlfCAgICAgICAgICB8IDAvNCBbMDA6MDA8PywgP2l0L3MsIG5vdz1Ob25lXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKCiAgICAgIGFzc2VtYmx5OiAgIDAlfCAgICAgICAgICB8IDAvNCBbMDA6MDA8PywgP2l0L3MsIG5vdz1Ob25lXQogICAgICBhc3NlbWJseTogIDUwJXzilojilojilojilojiloggICAgIHwgMi80IFswMDowMDwwMDowMCwgIDIuNDJpdC9zLCBub3c9Tm9uZV0KICAgICAgYXNzZW1ibHk6ICA3NSV84paI4paI4paI4paI4paI4paI4paI4paMICB8IDMvNCBbMDA6MDE8MDA6MDAsICAyLjI1aXQvcywgbm93PU5vbmVdCiAgICAgIGFzc2VtYmx5OiAxMDAlfOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiHwgNC80IFswMDowMjwwMDowMCwgIDEuODNpdC9zLCBub3c9Tm9uZV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgYGBgCiAgICAqKlN0YW5kYXJkIE91dHB1dDoqKgoKICAgICogYGBgY29uc29sZQogICAgICBTaW11bGF0aW5nIGFzc2VtYmx5IHBsYW4gYXNzYW1ibHkuLi4KICAgICAgeydjYW5jZWxsZWRfYXNzZW1ibGllcyc6IDAsICdlcnJvcmVkX2Fzc2VtYmxpZXMnOiAwLCAndmFsaWRfYXNzZW1ibGllcyc6IDR9CiAgICAgIEdlbmVyYXRpbmcgYXNzZW1ibGllcyByZXBvcnRzLi4uCgogICAgICBgYGAKICAgICoqVHJhY2ViYWNrOioqCgogICAgKiBgYGBjb25zb2xlCiAgICAgIAogICAgICBgYGAKICAgKipKb2IgUGFyYW1ldGVyczoqKgoKICAgKiAgIHwgSm9iIHBhcmFtZXRlciB8IFBhcmFtZXRlciB2YWx1ZSB8CiAgICAgICB8IC0tLS0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0gfAogICAgICAgfCBnZW5iYW5rXF9maWxlcyB8IGAgeyJ2YWx1ZXMiOiBbeyJpZCI6IDEsICJzcmMiOiAiaGRjYSJ9XX0gYCB8CiAgICAgICB8IGRvbWVzdGljYXRlZFxfaW5wdXQgfCBgIE5vbmUgYCB8CiAgICAgICB8IGFzc2VtYmx5XF9wbGFuXF9uYW1lIHwgYCAiVHlwZTJzUmVzdHJpY3Rpb25Bc3NlbWJseSIgYCB8CiAgICAgICB8IHRvcG9sb2d5IHwgYCAiY2lyY3VsYXIiIGAgfAogICAgICAgfCBhZHYgfCBgIHsiZW56eW1lIjogImF1dG8iLCAidXNlX2ZpbGVfbmFtZXNfYXNfaWRzIjogdHJ1ZX0gYCB8CiAgICAgICB8IGNocm9tSW5mbyB8IGAgIi90bXAvdG1waHh4b2NlYWgvZ2FsYXh5LWRldi90b29sLWRhdGEvc2hhcmVkL3Vjc2MvY2hyb20vPy5sZW4iIGAgfAogICAgICAgfCBkYmtleSB8IGAgIj8iIGAgfAogICAgICAgfCBcX1xfaW5wdXRcX2V4dCB8IGAgImlucHV0IiBgIHwKCgoKICAgIDwvZGl2PjwvZGV0YWlscz4KCgoqIDxkZXRhaWxzIGNsYXNzPSJyY29ybmVycyBsaWdodC1ncmVlbiI+PHN1bW1hcnkgY2xhc3M9ImxpZ2h0LWdyZWVuIj4mIzk5ODk7IGNsb25pbmdfc2ltdWxhdGlvbiAoVGVzdCAjIDIpPC9zdW1tYXJ5PjxkaXYgY2xhc3M9InBhZGRlZCI+CgogICAgKipDb21tYW5kIExpbmU6KioKCiAgICAqIGBgYGNvbnNvbGUKICAgICAgbWtkaXIgJ291dGRpcl96aXAnICYmIG1rZGlyICdvdXRkaXJfZ2InICYmIGNwICcvdG1wL3RtcGh4eG9jZWFoL2ZpbGVzL2EvZS8xL2RhdGFzZXRfYWUxOWI5M2QtOTZkYy00NTc1LTkyMmUtMWMxYjEzY2RkYTAwLmRhdCcgJ2Fzc2VtYmx5X2Nzdi5jc3YnICYmIHB5dGhvbiAnL2hvbWUvcmtoYWxlZC9nYWxheHl0b29scy90b29scy9jbG9uaW5nX3NpbXVsYXRpb24vY2xvbmluZ19zaW11bGF0aW9uLnB5JyAtLXBhcnRzX2ZpbGVzICcvdG1wL3RtcGh4eG9jZWFoL2ZpbGVzLzYvNi9iL2RhdGFzZXRfNjZiZWNjNWItZDkwZS00YmNhLTg0NTYtODJkOWY3YzIwOWVhLmRhdCcgLS1kb21lc3RpY2F0ZWRfc2VxICcnIC0tYXNzZW1ibHlfY3N2ICdhc3NlbWJseV9jc3YuY3N2JyAtLWFzc2VtYmx5X3BsYW5fbmFtZSAnR2lic29uQXNzZW1ibHknIC0tZmlsZV9uYW1lX21hcHBpbmcgJy90bXAvdG1waHh4b2NlYWgvZmlsZXMvNi82L2IvZGF0YXNldF82NmJlY2M1Yi1kOTBlLTRiY2EtODQ1Ni04MmQ5ZjdjMjA5ZWEuZGF0OmdpYnNvbl9zZXF1ZW5jZXMuZmEnIC0tZmlsZV9uYW1lX21hcHBpbmdfZG9tICcnIC0tdXNlX2ZpbGVfbmFtZXNfYXNfaWQgJ3RydWUnIC0tb3V0ZGlyX3NpbXVsYXRpb24gJ291dGRpcl96aXAnIC0tb3V0ZGlyX2diICdvdXRkaXJfZ2InIC0tb3V0cHV0X3NpbXVsYXRpb24gJ291dHB1dF96aXAuemlwJyAtLWVuenltZSAnYXV0bycgLS10b3BvbG9neSAnY2lyY3VsYXInICYmIGNwICdvdXRwdXRfemlwLnppcCcgJy90bXAvdG1waHh4b2NlYWgvam9iX3dvcmtpbmdfZGlyZWN0b3J5LzAwMC8xNy9vdXRwdXRzL2RhdGFzZXRfY2YzZWE5OTAtYzYwOS00NWZlLWE4MjMtODc4NmZlZDg2M2Y5LmRhdCcKICAgICAgYGBgCiAgICAqKkV4aXQgQ29kZToqKgoKICAgICogYGBgY29uc29sZQogICAgICAwCiAgICAgIGBgYAogICAgKipTdGFuZGFyZCBFcnJvcjoqKgoKICAgICogYGBgY29uc29sZQogICAgICAKICAgICAgYXNzZW1ibHk6ICAgMCV8ICAgICAgICAgIHwgMC81IFswMDowMDw/LCA/aXQvcywgbm93PU5vbmVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAoKICAgICAgYXNzZW1ibHk6ICAgMCV8ICAgICAgICAgIHwgMC81IFswMDowMDw/LCA/aXQvcywgbm93PU5vbmVdCiAgICAgIGFzc2VtYmx5OiAgNDAlfOKWiOKWiOKWiOKWiCAgICAgIHwgMi81IFswMDowMDwwMDowMCwgIDQuMzVpdC9zLCBub3c9Tm9uZV0KICAgICAgYXNzZW1ibHk6ICA2MCV84paI4paI4paI4paI4paI4paIICAgIHwgMy81IFswMDowMDwwMDowMCwgIDQuMzRpdC9zLCBub3c9Tm9uZV0KICAgICAgYXNzZW1ibHk6ICA4MCV84paI4paI4paI4paI4paI4paI4paI4paIICB8IDQvNSBbMDA6MDA8MDA6MDAsICA0LjMxaXQvcywgbm93PU5vbmVdCiAgICAgIGFzc2VtYmx5OiAxMDAlfOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiHwgNS81IFswMDowMTwwMDowMCwgIDMuNTZpdC9zLCBub3c9Tm9uZV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgYGBgCiAgICAqKlN0YW5kYXJkIE91dHB1dDoqKgoKICAgICogYGBgY29uc29sZQogICAgICBTaW11bGF0aW5nIGFzc2VtYmx5IHBsYW4gYXNzYW1ibHkuLi4KICAgICAgeydjYW5jZWxsZWRfYXNzZW1ibGllcyc6IDAsICdlcnJvcmVkX2Fzc2VtYmxpZXMnOiAyLCAndmFsaWRfYXNzZW1ibGllcyc6IDN9CiAgICAgIEdlbmVyYXRpbmcgYXNzZW1ibGllcyByZXBvcnRzLi4uCgogICAgICBgYGAKICAgICoqVHJhY2ViYWNrOioqCgogICAgKiBgYGBjb25zb2xlCiAgICAgIAogICAgICBgYGAKICAgKipKb2IgUGFyYW1ldGVyczoqKgoKICAgKiAgIHwgSm9iIHBhcmFtZXRlciB8IFBhcmFtZXRlciB2YWx1ZSB8CiAgICAgICB8IC0tLS0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0gfAogICAgICAgfCBnZW5iYW5rXF9maWxlcyB8IGAgeyJ2YWx1ZXMiOiBbeyJpZCI6IDMsICJzcmMiOiAiaGRjYSJ9XX0gYCB8CiAgICAgICB8IGRvbWVzdGljYXRlZFxfaW5wdXQgfCBgIE5vbmUgYCB8CiAgICAgICB8IGFzc2VtYmx5XF9wbGFuXF9uYW1lIHwgYCAiR2lic29uQXNzZW1ibHkiIGAgfAogICAgICAgfCB0b3BvbG9neSB8IGAgImNpcmN1bGFyIiBgIHwKICAgICAgIHwgYWR2IHwgYCB7ImVuenltZSI6ICJhdXRvIiwgInVzZV9maWxlX25hbWVzX2FzX2lkcyI6IHRydWV9IGAgfAogICAgICAgfCBjaHJvbUluZm8gfCBgICIvdG1wL3RtcGh4eG9jZWFoL2dhbGF4eS1kZXYvdG9vbC1kYXRhL3NoYXJlZC91Y3NjL2Nocm9tLz8ubGVuIiBgIHwKICAgICAgIHwgZGJrZXkgfCBgICI/IiBgIHwKICAgICAgIHwgXF9cX2lucHV0XF9leHQgfCBgICJpbnB1dCIgYCB8CgoKCiAgICA8L2Rpdj48L2RldGFpbHM+CgoKKiA8ZGV0YWlscyBjbGFzcz0icmNvcm5lcnMgbGlnaHQtZ3JlZW4iPjxzdW1tYXJ5IGNsYXNzPSJsaWdodC1ncmVlbiI+JiM5OTg5OyBjbG9uaW5nX3NpbXVsYXRpb24gKFRlc3QgIyAzKTwvc3VtbWFyeT48ZGl2IGNsYXNzPSJwYWRkZWQiPgoKICAgICoqQ29tbWFuZCBMaW5lOioqCgogICAgKiBgYGBjb25zb2xlCiAgICAgIG1rZGlyICdvdXRkaXJfemlwJyAmJiBta2RpciAnb3V0ZGlyX2diJyAmJiBjcCAnL3RtcC90bXBoeHhvY2VhaC9maWxlcy84LzIvYy9kYXRhc2V0XzgyYzJkOTBiLTBjYTMtNDYzMy05MTViLWVhYTBhYjgxYjgwZi5kYXQnICdhc3NlbWJseV9jc3YuY3N2JyAmJiBweXRob24gJy9ob21lL3JraGFsZWQvZ2FsYXh5dG9vbHMvdG9vbHMvY2xvbmluZ19zaW11bGF0aW9uL2Nsb25pbmdfc2ltdWxhdGlvbi5weScgLS1wYXJ0c19maWxlcyAnL3RtcC90bXBoeHhvY2VhaC9maWxlcy9jL2IvZi9kYXRhc2V0X2NiZjI0NDg3LWJmOWQtNDY5YS05OWNkLWJjY2ViYjJiYzEzOS5kYXQsL3RtcC90bXBoeHhvY2VhaC9maWxlcy9kLzMvZC9kYXRhc2V0X2QzZDQyZTRiLTE5ODItNDY2MC04YWQ0LWYxMmM4YTA1OTljYi5kYXQnIC0tZG9tZXN0aWNhdGVkX3NlcSAnJyAtLWFzc2VtYmx5X2NzdiAnYXNzZW1ibHlfY3N2LmNzdicgLS1hc3NlbWJseV9wbGFuX25hbWUgJ0xpZ2FzZUN5Y2xpbmdSZWFjdGlvbkFzc2VtYmx5JyAtLWZpbGVfbmFtZV9tYXBwaW5nICcvdG1wL3RtcGh4eG9jZWFoL2ZpbGVzL2MvYi9mL2RhdGFzZXRfY2JmMjQ0ODctYmY5ZC00NjlhLTk5Y2QtYmNjZWJiMmJjMTM5LmRhdDpSRlBfR0ZQX3BsYXNtaWRfQk9zLmZhLC90bXAvdG1waHh4b2NlYWgvZmlsZXMvZC8zL2QvZGF0YXNldF9kM2Q0MmU0Yi0xOTgyLTQ2NjAtOGFkNC1mMTJjOGEwNTk5Y2IuZGF0OlJGUF9HRlBfcGxhc21pZF9wYXJ0cy5mYScgLS1maWxlX25hbWVfbWFwcGluZ19kb20gJycgLS11c2VfZmlsZV9uYW1lc19hc19pZCAndHJ1ZScgLS1vdXRkaXJfc2ltdWxhdGlvbiAnb3V0ZGlyX3ppcCcgLS1vdXRkaXJfZ2IgJ291dGRpcl9nYicgLS1vdXRwdXRfc2ltdWxhdGlvbiAnb3V0cHV0X3ppcC56aXAnIC0tZW56eW1lICdhdXRvJyAtLXRvcG9sb2d5ICdjaXJjdWxhcicgJiYgY3AgJ291dHB1dF96aXAuemlwJyAnL3RtcC90bXBoeHhvY2VhaC9qb2Jfd29ya2luZ19kaXJlY3RvcnkvMDAwLzIxL291dHB1dHMvZGF0YXNldF8yMzNlZDk4ZS1lZTliLTQ2OGYtODE0NS05YThjNDRlODAzNGYuZGF0JwogICAgICBgYGAKICAgICoqRXhpdCBDb2RlOioqCgogICAgKiBgYGBjb25zb2xlCiAgICAgIDAKICAgICAgYGBgCiAgICAqKlN0YW5kYXJkIEVycm9yOioqCgogICAgKiBgYGBjb25zb2xlCiAgICAgIAogICAgICBhc3NlbWJseTogICAwJXwgICAgICAgICAgfCAwLzIgWzAwOjAwPD8sID9pdC9zLCBub3c9Tm9uZV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCgogICAgICBhc3NlbWJseTogICAwJXwgICAgICAgICAgfCAwLzIgWzAwOjAwPD8sID9pdC9zLCBub3c9Tm9uZV0KICAgICAgYXNzZW1ibHk6IDEwMCV84paI4paI4paI4paI4paI4paI4paI4paI4paI4paIfCAyLzIgWzAwOjAwPDAwOjAwLCAgMi4zOGl0L3MsIG5vdz1Ob25lXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICBgYGAKICAgICoqU3RhbmRhcmQgT3V0cHV0OioqCgogICAgKiBgYGBjb25zb2xlCiAgICAgIFNpbXVsYXRpbmcgYXNzZW1ibHkgcGxhbiBhc3NhbWJseS4uLgogICAgICB7J2NhbmNlbGxlZF9hc3NlbWJsaWVzJzogMCwgJ2Vycm9yZWRfYXNzZW1ibGllcyc6IDIsICd2YWxpZF9hc3NlbWJsaWVzJzogMH0KICAgICAgR2VuZXJhdGluZyBhc3NlbWJsaWVzIHJlcG9ydHMuLi4KCiAgICAgIGBgYAogICAgKipUcmFjZWJhY2s6KioKCiAgICAqIGBgYGNvbnNvbGUKICAgICAgCiAgICAgIGBgYAogICAqKkpvYiBQYXJhbWV0ZXJzOioqCgogICAqICAgfCBKb2IgcGFyYW1ldGVyIHwgUGFyYW1ldGVyIHZhbHVlIHwKICAgICAgIHwgLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0tLSB8CiAgICAgICB8IGdlbmJhbmtcX2ZpbGVzIHwgYCB7InZhbHVlcyI6IFt7ImlkIjogNSwgInNyYyI6ICJoZGNhIn1dfSBgIHwKICAgICAgIHwgZG9tZXN0aWNhdGVkXF9pbnB1dCB8IGAgTm9uZSBgIHwKICAgICAgIHwgYXNzZW1ibHlcX3BsYW5cX25hbWUgfCBgICJMaWdhc2VDeWNsaW5nUmVhY3Rpb25Bc3NlbWJseSIgYCB8CiAgICAgICB8IHRvcG9sb2d5IHwgYCAiY2lyY3VsYXIiIGAgfAogICAgICAgfCBhZHYgfCBgIHsiZW56eW1lIjogImF1dG8iLCAidXNlX2ZpbGVfbmFtZXNfYXNfaWRzIjogdHJ1ZX0gYCB8CiAgICAgICB8IGNocm9tSW5mbyB8IGAgIi90bXAvdG1waHh4b2NlYWgvZ2FsYXh5LWRldi90b29sLWRhdGEvc2hhcmVkL3Vjc2MvY2hyb20vPy5sZW4iIGAgfAogICAgICAgfCBkYmtleSB8IGAgIj8iIGAgfAogICAgICAgfCBcX1xfaW5wdXRcX2V4dCB8IGAgImlucHV0IiBgIHwKCgoKICAgIDwvZGl2PjwvZGV0YWlscz4KCgoqIDxkZXRhaWxzIGNsYXNzPSJyY29ybmVycyBsaWdodC1ncmVlbiI+PHN1bW1hcnkgY2xhc3M9ImxpZ2h0LWdyZWVuIj4mIzk5ODk7IGNsb25pbmdfc2ltdWxhdGlvbiAoVGVzdCAjIDQpPC9zdW1tYXJ5PjxkaXYgY2xhc3M9InBhZGRlZCI+CgogICAgKipDb21tYW5kIExpbmU6KioKCiAgICAqIGBgYGNvbnNvbGUKICAgICAgbWtkaXIgJ291dGRpcl96aXAnICYmIG1rZGlyICdvdXRkaXJfZ2InICYmIGNwICcvdG1wL3RtcGh4eG9jZWFoL2ZpbGVzLzIvYy8zL2RhdGFzZXRfMmMzMTg2ZGYtOTNkOS00ZDI0LTg5NTYtYzZhMTdlN2Q4MjJhLmRhdCcgJ2Fzc2VtYmx5X2Nzdi5jc3YnICYmIHB5dGhvbiAnL2hvbWUvcmtoYWxlZC9nYWxheHl0b29scy90b29scy9jbG9uaW5nX3NpbXVsYXRpb24vY2xvbmluZ19zaW11bGF0aW9uLnB5JyAtLXBhcnRzX2ZpbGVzICcvdG1wL3RtcGh4eG9jZWFoL2ZpbGVzLzEvZC84L2RhdGFzZXRfMWQ4MjRkOWUtMGI0Zi00YTgxLWFmNDktMWFjYjUwNmU4ZjRiLmRhdCwvdG1wL3RtcGh4eG9jZWFoL2ZpbGVzLzUvNy9kL2RhdGFzZXRfNTdkNzgwYWUtMzc4My00Y2RmLWEyOTUtNjQyZWJjODhhNjBlLmRhdCwvdG1wL3RtcGh4eG9jZWFoL2ZpbGVzL2IvOC85L2RhdGFzZXRfYjg5YjUzNmUtZTMxMC00NzBkLWJkZGMtY2QyODQ3YzJjZmZmLmRhdCwvdG1wL3RtcGh4eG9jZWFoL2ZpbGVzL2IvYi9kL2RhdGFzZXRfYmJkYzJlZDktZjJmYS00ZTkyLWI5YWMtMjE0MGE4ZjgwZWE4LmRhdCwvdG1wL3RtcGh4eG9jZWFoL2ZpbGVzLzAvNi81L2RhdGFzZXRfMDY1ODdhOTUtOTUxYy00YzZmLWJkZWQtM2RmOWZkMzhhNWQxLmRhdCcgLS1kb21lc3RpY2F0ZWRfc2VxICcnIC0tYXNzZW1ibHlfY3N2ICdhc3NlbWJseV9jc3YuY3N2JyAtLWFzc2VtYmx5X3BsYW5fbmFtZSAnQkFTSUNBc3NlbWJseScgLS1maWxlX25hbWVfbWFwcGluZyAnL3RtcC90bXBoeHhvY2VhaC9maWxlcy8xL2QvOC9kYXRhc2V0XzFkODI0ZDllLTBiNGYtNGE4MS1hZjQ5LTFhY2I1MDZlOGY0Yi5kYXQ6R0ZQLmdiLC90bXAvdG1waHh4b2NlYWgvZmlsZXMvNS83L2QvZGF0YXNldF81N2Q3ODBhZS0zNzgzLTRjZGYtYTI5NS02NDJlYmM4OGE2MGUuZGF0OnAxNUFfa2FuLmdiLC90bXAvdG1waHh4b2NlYWgvZmlsZXMvYi84LzkvZGF0YXNldF9iODliNTM2ZS1lMzEwLTQ3MGQtYmRkYy1jZDI4NDdjMmNmZmYuZGF0OnByb21vdGVyLmdiLC90bXAvdG1waHh4b2NlYWgvZmlsZXMvYi9iL2QvZGF0YXNldF9iYmRjMmVkOS1mMmZhLTRlOTItYjlhYy0yMTQwYThmODBlYTguZGF0OlJGUC5nYiwvdG1wL3RtcGh4eG9jZWFoL2ZpbGVzLzAvNi81L2RhdGFzZXRfMDY1ODdhOTUtOTUxYy00YzZmLWJkZWQtM2RmOWZkMzhhNWQxLmRhdDpvbGlnb3MuZmEnIC0tZmlsZV9uYW1lX21hcHBpbmdfZG9tICcnIC0tdXNlX2ZpbGVfbmFtZXNfYXNfaWQgJ3RydWUnIC0tb3V0ZGlyX3NpbXVsYXRpb24gJ291dGRpcl96aXAnIC0tb3V0ZGlyX2diICdvdXRkaXJfZ2InIC0tb3V0cHV0X3NpbXVsYXRpb24gJ291dHB1dF96aXAuemlwJyAtLWVuenltZSAnYXV0bycgLS10b3BvbG9neSAnY2lyY3VsYXInICYmIGNwICdvdXRwdXRfemlwLnppcCcgJy90bXAvdG1waHh4b2NlYWgvam9iX3dvcmtpbmdfZGlyZWN0b3J5LzAwMC8yOC9vdXRwdXRzL2RhdGFzZXRfMDAzYWIxNTItYTU4Zi00NWFiLWEzYzUtMzhhODcxOTliNzdkLmRhdCcKICAgICAgYGBgCiAgICAqKkV4aXQgQ29kZToqKgoKICAgICogYGBgY29uc29sZQogICAgICAwCiAgICAgIGBgYAogICAgKipTdGFuZGFyZCBFcnJvcjoqKgoKICAgICogYGBgY29uc29sZQogICAgICAKICAgICAgYXNzZW1ibHk6ICAgMCV8ICAgICAgICAgIHwgMC8xMCBbMDA6MDA8PywgP2l0L3MsIG5vdz1Ob25lXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCgogICAgICBhc3NlbWJseTogICAwJXwgICAgICAgICAgfCAwLzggWzAwOjAwPD8sID9pdC9zLCBub3c9Tm9uZV0KICAgICAgYXNzZW1ibHk6ICA3NSV84paI4paI4paI4paI4paI4paI4paI4paMICB8IDYvOCBbMDA6MDA8MDA6MDAsIDQ5LjMyaXQvcywgbm93PU5vbmVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgIGBgYAogICAgKipTdGFuZGFyZCBPdXRwdXQ6KioKCiAgICAqIGBgYGNvbnNvbGUKICAgICAgU2ltdWxhdGluZyBhc3NlbWJseSBwbGFuIGFzc2FtYmx5Li4uCiAgICAgIHsnY2FuY2VsbGVkX2Fzc2VtYmxpZXMnOiAyLCAnZXJyb3JlZF9hc3NlbWJsaWVzJzogOCwgJ3ZhbGlkX2Fzc2VtYmxpZXMnOiAwfQogICAgICBHZW5lcmF0aW5nIGFzc2VtYmxpZXMgcmVwb3J0cy4uLgoKICAgICAgYGBgCiAgICAqKlRyYWNlYmFjazoqKgoKICAgICogYGBgY29uc29sZQogICAgICAKICAgICAgYGBgCiAgICoqSm9iIFBhcmFtZXRlcnM6KioKCiAgICogICB8IEpvYiBwYXJhbWV0ZXIgfCBQYXJhbWV0ZXIgdmFsdWUgfAogICAgICAgfCAtLS0tLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tIHwKICAgICAgIHwgZ2VuYmFua1xfZmlsZXMgfCBgIHsidmFsdWVzIjogW3siaWQiOiA3LCAic3JjIjogImhkY2EifV19IGAgfAogICAgICAgfCBkb21lc3RpY2F0ZWRcX2lucHV0IHwgYCBOb25lIGAgfAogICAgICAgfCBhc3NlbWJseVxfcGxhblxfbmFtZSB8IGAgIkJBU0lDQXNzZW1ibHkiIGAgfAogICAgICAgfCB0b3BvbG9neSB8IGAgImNpcmN1bGFyIiBgIHwKICAgICAgIHwgYWR2IHwgYCB7ImVuenltZSI6ICJhdXRvIiwgInVzZV9maWxlX25hbWVzX2FzX2lkcyI6IHRydWV9IGAgfAogICAgICAgfCBjaHJvbUluZm8gfCBgICIvdG1wL3RtcGh4eG9jZWFoL2dhbGF4eS1kZXYvdG9vbC1kYXRhL3NoYXJlZC91Y3NjL2Nocm9tLz8ubGVuIiBgIHwKICAgICAgIHwgZGJrZXkgfCBgICI/IiBgIHwKICAgICAgIHwgXF9cX2lucHV0XF9leHQgfCBgICJpbnB1dCIgYCB8CgoKCiAgICA8L2Rpdj48L2RldGFpbHM+CgoKKiA8ZGV0YWlscyBjbGFzcz0icmNvcm5lcnMgbGlnaHQtZ3JlZW4iPjxzdW1tYXJ5IGNsYXNzPSJsaWdodC1ncmVlbiI+JiM5OTg5OyBjbG9uaW5nX3NpbXVsYXRpb24gKFRlc3QgIyA1KTwvc3VtbWFyeT48ZGl2IGNsYXNzPSJwYWRkZWQiPgoKICAgICoqQ29tbWFuZCBMaW5lOioqCgogICAgKiBgYGBjb25zb2xlCiAgICAgIG1rZGlyICdvdXRkaXJfemlwJyAmJiBta2RpciAnb3V0ZGlyX2diJyAmJiBjcCAnL3RtcC90bXBoeHhvY2VhaC9maWxlcy8yL2EvZC9kYXRhc2V0XzJhZDBkODczLTg2YzYtNDVkOS1iN2QyLTEyNGRjYmMxYWY4OS5kYXQnICdhc3NlbWJseV9jc3YuY3N2JyAmJiBweXRob24gJy9ob21lL3JraGFsZWQvZ2FsYXh5dG9vbHMvdG9vbHMvY2xvbmluZ19zaW11bGF0aW9uL2Nsb25pbmdfc2ltdWxhdGlvbi5weScgLS1wYXJ0c19maWxlcyAnL3RtcC90bXBoeHhvY2VhaC9maWxlcy9kLzIvOS9kYXRhc2V0X2QyOTNiZGJiLTU1MjQtNGU4Mi1hNGEwLWQ2ODdhNDA3YTk2OC5kYXQsL3RtcC90bXBoeHhvY2VhaC9maWxlcy9lL2EvNS9kYXRhc2V0X2VhNWU0NmE2LTE0NGYtNGM1ZS1iNjI2LTZiY2E1MDU1ZjcxMC5kYXQsL3RtcC90bXBoeHhvY2VhaC9maWxlcy9iLzQvOS9kYXRhc2V0X2I0OTEwMzZlLTc4YWEtNDE0MC1iY2E2LTYzNDYyYjdkYmI1YS5kYXQsL3RtcC90bXBoeHhvY2VhaC9maWxlcy8xL2MvZi9kYXRhc2V0XzFjZjUxNGExLTIwNjItNDdjMS05OGIzLWQ4NmM0MDhkMzQ4ZC5kYXQsL3RtcC90bXBoeHhvY2VhaC9maWxlcy9kLzAvYS9kYXRhc2V0X2QwYWU3ZDA0LTU1NmQtNDhhYS1hODU5LTYzZDBlZmQ5YmMxYy5kYXQnIC0tZG9tZXN0aWNhdGVkX3NlcSAnJyAtLWFzc2VtYmx5X2NzdiAnYXNzZW1ibHlfY3N2LmNzdicgLS1hc3NlbWJseV9wbGFuX25hbWUgJ0Jpb0JyaWNrU3RhbmRhcmRBc3NlbWJseScgLS1maWxlX25hbWVfbWFwcGluZyAnL3RtcC90bXBoeHhvY2VhaC9maWxlcy9kLzIvOS9kYXRhc2V0X2QyOTNiZGJiLTU1MjQtNGU4Mi1hNGEwLWQ2ODdhNDA3YTk2OC5kYXQ6QkJhX0UwMDQwX0dGUC5nYiwvdG1wL3RtcGh4eG9jZWFoL2ZpbGVzL2UvYS81L2RhdGFzZXRfZWE1ZTQ2YTYtMTQ0Zi00YzVlLWI2MjYtNmJjYTUwNTVmNzEwLmRhdDpCQmFfSjIzMTE5X3Byb20uZ2IsL3RtcC90bXBoeHhvY2VhaC9maWxlcy9iLzQvOS9kYXRhc2V0X2I0OTEwMzZlLTc4YWEtNDE0MC1iY2E2LTYzNDYyYjdkYmI1YS5kYXQ6QkJhX0oyMzExOV9wcm9tX2ZsYXdlZC5nYiwvdG1wL3RtcGh4eG9jZWFoL2ZpbGVzLzEvYy9mL2RhdGFzZXRfMWNmNTE0YTEtMjA2Mi00N2MxLTk4YjMtZDg2YzQwOGQzNDhkLmRhdDpCQmFfSjYxMDQ4X3Rlcm0uZ2IsL3RtcC90bXBoeHhvY2VhaC9maWxlcy9kLzAvYS9kYXRhc2V0X2QwYWU3ZDA0LTU1NmQtNDhhYS1hODU5LTYzZDBlZmQ5YmMxYy5kYXQ6QkJhX0s2MTEwOTRfYmFyLmdiJyAtLWZpbGVfbmFtZV9tYXBwaW5nX2RvbSAnJyAtLXVzZV9maWxlX25hbWVzX2FzX2lkICd0cnVlJyAtLW91dGRpcl9zaW11bGF0aW9uICdvdXRkaXJfemlwJyAtLW91dGRpcl9nYiAnb3V0ZGlyX2diJyAtLW91dHB1dF9zaW11bGF0aW9uICdvdXRwdXRfemlwLnppcCcgLS1lbnp5bWUgJ2F1dG8nIC0tdG9wb2xvZ3kgJ2NpcmN1bGFyJyAmJiBjcCAnb3V0cHV0X3ppcC56aXAnICcvdG1wL3RtcGh4eG9jZWFoL2pvYl93b3JraW5nX2RpcmVjdG9yeS8wMDAvMzUvb3V0cHV0cy9kYXRhc2V0XzQ3MzE5MTViLTU1NjItNGFmZS1iMmYyLWNmODhiMmFmM2ViNS5kYXQnCiAgICAgIGBgYAogICAgKipFeGl0IENvZGU6KioKCiAgICAqIGBgYGNvbnNvbGUKICAgICAgMAogICAgICBgYGAKICAgICoqU3RhbmRhcmQgRXJyb3I6KioKCiAgICAqIGBgYGNvbnNvbGUKICAgICAgCiAgICAgIGFzc2VtYmx5OiAgIDAlfCAgICAgICAgICB8IDAvMyBbMDA6MDA8PywgP2l0L3MsIG5vdz1Ob25lXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKCiAgICAgIGFzc2VtYmx5OiAgIDAlfCAgICAgICAgICB8IDAvMyBbMDA6MDA8PywgP2l0L3MsIG5vdz1Ob25lXQogICAgICBhc3NlbWJseTogIDY3JXzilojilojilojilojilojilojilosgICB8IDIvMyBbMDA6MDE8MDA6MDAsICAxLjk2aXQvcywgbm93PU5vbmVdCiAgICAgIGFzc2VtYmx5OiAxMDAlfOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiHwgMy8zIFswMDowMTwwMDowMCwgIDEuNTlpdC9zLCBub3c9Tm9uZV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgYGBgCiAgICAqKlN0YW5kYXJkIE91dHB1dDoqKgoKICAgICogYGBgY29uc29sZQogICAgICBTaW11bGF0aW5nIGFzc2VtYmx5IHBsYW4gYXNzYW1ibHkuLi4KICAgICAgeydjYW5jZWxsZWRfYXNzZW1ibGllcyc6IDAsICdlcnJvcmVkX2Fzc2VtYmxpZXMnOiAwLCAndmFsaWRfYXNzZW1ibGllcyc6IDN9CiAgICAgIEdlbmVyYXRpbmcgYXNzZW1ibGllcyByZXBvcnRzLi4uCgogICAgICBgYGAKICAgICoqVHJhY2ViYWNrOioqCgogICAgKiBgYGBjb25zb2xlCiAgICAgIAogICAgICBgYGAKICAgKipKb2IgUGFyYW1ldGVyczoqKgoKICAgKiAgIHwgSm9iIHBhcmFtZXRlciB8IFBhcmFtZXRlciB2YWx1ZSB8CiAgICAgICB8IC0tLS0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0gfAogICAgICAgfCBnZW5iYW5rXF9maWxlcyB8IGAgeyJ2YWx1ZXMiOiBbeyJpZCI6IDksICJzcmMiOiAiaGRjYSJ9XX0gYCB8CiAgICAgICB8IGRvbWVzdGljYXRlZFxfaW5wdXQgfCBgIE5vbmUgYCB8CiAgICAgICB8IGFzc2VtYmx5XF9wbGFuXF9uYW1lIHwgYCAiQmlvQnJpY2tTdGFuZGFyZEFzc2VtYmx5IiBgIHwKICAgICAgIHwgdG9wb2xvZ3kgfCBgICJjaXJjdWxhciIgYCB8CiAgICAgICB8IGFkdiB8IGAgeyJlbnp5bWUiOiAiYXV0byIsICJ1c2VfZmlsZV9uYW1lc19hc19pZHMiOiB0cnVlfSBgIHwKICAgICAgIHwgY2hyb21JbmZvIHwgYCAiL3RtcC90bXBoeHhvY2VhaC9nYWxheHktZGV2L3Rvb2wtZGF0YS9zaGFyZWQvdWNzYy9jaHJvbS8/LmxlbiIgYCB8CiAgICAgICB8IGRia2V5IHwgYCAiPyIgYCB8CiAgICAgICB8IFxfXF9pbnB1dFxfZXh0IHwgYCAiaW5wdXQiIGAgfAoKCgogICAgPC9kaXY+PC9kZXRhaWxzPgoKCiogPGRldGFpbHMgY2xhc3M9InJjb3JuZXJzIGxpZ2h0LWdyZWVuIj48c3VtbWFyeSBjbGFzcz0ibGlnaHQtZ3JlZW4iPiYjOTk4OTsgY2xvbmluZ19zaW11bGF0aW9uIChUZXN0ICMgNik8L3N1bW1hcnk+PGRpdiBjbGFzcz0icGFkZGVkIj4KCiAgICAqKkNvbW1hbmQgTGluZToqKgoKICAgICogYGBgY29uc29sZQogICAgICBta2RpciAnb3V0ZGlyX3ppcCcgJiYgbWtkaXIgJ291dGRpcl9nYicgJiYgY3AgJy90bXAvdG1waHh4b2NlYWgvZmlsZXMvMC9kLzgvZGF0YXNldF8wZDgwZWM2NC03YzE0LTQ5ZWMtYmYwMC04YjEyNzQxM2I0MDIuZGF0JyAnYXNzZW1ibHlfY3N2LmNzdicgJiYgcHl0aG9uICcvaG9tZS9ya2hhbGVkL2dhbGF4eXRvb2xzL3Rvb2xzL2Nsb25pbmdfc2ltdWxhdGlvbi9jbG9uaW5nX3NpbXVsYXRpb24ucHknIC0tcGFydHNfZmlsZXMgJy90bXAvdG1waHh4b2NlYWgvZmlsZXMvYi9mL2UvZGF0YXNldF9iZmU2YzVhMC1iZWU5LTRmY2QtYmM0OC0xMDMwZmRkYWU5NGIuZGF0LC90bXAvdG1waHh4b2NlYWgvZmlsZXMvNS9iLzEvZGF0YXNldF81YjFlNDQ5Ny03ZTZiLTQyY2MtOGNiYi01ZjUzOGQ0MGY3YmIuZGF0LC90bXAvdG1waHh4b2NlYWgvZmlsZXMvYi8zL2UvZGF0YXNldF9iM2VjZDk2My01ZTdhLTRjODYtOTFmMy04ZDgzMjI0NzE0MDIuZGF0LC90bXAvdG1waHh4b2NlYWgvZmlsZXMvNi9mLzgvZGF0YXNldF82ZjhkMGI5NC02ZjBmLTQ3MGMtYjM2YS04NzI1NmFhNDI3YzYuZGF0LC90bXAvdG1waHh4b2NlYWgvZmlsZXMvMi9mL2QvZGF0YXNldF8yZmQ4YmEwZC1hNmFjLTQzNzktYTA5NC02ZGZjNGIzZjY3N2UuZGF0LC90bXAvdG1waHh4b2NlYWgvZmlsZXMvYy81L2YvZGF0YXNldF9jNWZkZTFkOC02MDc4LTRiMWMtOTQ2ZC1mZTU4Yzg2OGUxYTUuZGF0LC90bXAvdG1waHh4b2NlYWgvZmlsZXMvMC8yLzAvZGF0YXNldF8wMjAzY2UwOC04Yzk4LTRkY2YtYTI3NC1hYzY5ZjEyNmViNzguZGF0JyAtLWRvbWVzdGljYXRlZF9zZXEgJy90bXAvdG1waHh4b2NlYWgvZmlsZXMvOS8wLzcvZGF0YXNldF85MDczZjVlZC02MjE4LTQzNmUtOWM5MC00MDIzMWE3NzE0MTguZGF0LC90bXAvdG1waHh4b2NlYWgvZmlsZXMvMS9jLzIvZGF0YXNldF8xYzI3ODAzMy02YWRkLTRlODMtOTJlZS1lY2U2YjMwZDczYjIuZGF0LC90bXAvdG1waHh4b2NlYWgvZmlsZXMvNi84L2IvZGF0YXNldF82OGJhNTU2Ni0zZDVjLTRhYWYtOWYwMC1hNWRjM2YxZWM1ZjYuZGF0LC90bXAvdG1waHh4b2NlYWgvZmlsZXMvZS8yL2EvZGF0YXNldF9lMmFiZjM3My0zMjY4LTQ2YTAtYTZiZC04ODlmZTcwNjE5ODQuZGF0LC90bXAvdG1waHh4b2NlYWgvZmlsZXMvZC83LzEvZGF0YXNldF9kNzFkMGI3ZC1mYzk4LTRkOTctOGE2Yi1lOTJiYjIyOTU4MmUuZGF0JyAtLWFzc2VtYmx5X2NzdiAnYXNzZW1ibHlfY3N2LmNzdicgLS1hc3NlbWJseV9wbGFuX25hbWUgJ1R5cGUyc1Jlc3RyaWN0aW9uQXNzZW1ibHknIC0tZmlsZV9uYW1lX21hcHBpbmcgJy90bXAvdG1waHh4b2NlYWgvZmlsZXMvYi9mL2UvZGF0YXNldF9iZmU2YzVhMC1iZWU5LTRmY2QtYmM0OC0xMDMwZmRkYWU5NGIuZGF0OnBhcnRfQS5nYiwvdG1wL3RtcGh4eG9jZWFoL2ZpbGVzLzUvYi8xL2RhdGFzZXRfNWIxZTQ0OTctN2U2Yi00MmNjLThjYmItNWY1MzhkNDBmN2JiLmRhdDpwYXJ0X0IuZ2IsL3RtcC90bXBoeHhvY2VhaC9maWxlcy9iLzMvZS9kYXRhc2V0X2IzZWNkOTYzLTVlN2EtNGM4Ni05MWYzLThkODMyMjQ3MTQwMi5kYXQ6cGFydF9DLmdiLC90bXAvdG1waHh4b2NlYWgvZmlsZXMvNi9mLzgvZGF0YXNldF82ZjhkMGI5NC02ZjBmLTQ3MGMtYjM2YS04NzI1NmFhNDI3YzYuZGF0OnBhcnRfRC5nYiwvdG1wL3RtcGh4eG9jZWFoL2ZpbGVzLzIvZi9kL2RhdGFzZXRfMmZkOGJhMGQtYTZhYy00Mzc5LWEwOTQtNmRmYzRiM2Y2NzdlLmRhdDpwYXJ0X0UuZ2IsL3RtcC90bXBoeHhvY2VhaC9maWxlcy9jLzUvZi9kYXRhc2V0X2M1ZmRlMWQ4LTYwNzgtNGIxYy05NDZkLWZlNThjODY4ZTFhNS5kYXQ6cGFydF9GLmdiLC90bXAvdG1waHh4b2NlYWgvZmlsZXMvMC8yLzAvZGF0YXNldF8wMjAzY2UwOC04Yzk4LTRkY2YtYTI3NC1hYzY5ZjEyNmViNzguZGF0OnBhcnRfRy5nYicgLS1maWxlX25hbWVfbWFwcGluZ19kb20gJy90bXAvdG1waHh4b2NlYWgvZmlsZXMvOS8wLzcvZGF0YXNldF85MDczZjVlZC02MjE4LTQzNmUtOWM5MC00MDIzMWE3NzE0MTguZGF0OnBhcnRfSC5nYiwvdG1wL3RtcGh4eG9jZWFoL2ZpbGVzLzEvYy8yL2RhdGFzZXRfMWMyNzgwMzMtNmFkZC00ZTgzLTkyZWUtZWNlNmIzMGQ3M2IyLmRhdDpwYXJ0X0kuZ2IsL3RtcC90bXBoeHhvY2VhaC9maWxlcy82LzgvYi9kYXRhc2V0XzY4YmE1NTY2LTNkNWMtNGFhZi05ZjAwLWE1ZGMzZjFlYzVmNi5kYXQ6cGFydF9KLmdiLC90bXAvdG1waHh4b2NlYWgvZmlsZXMvZS8yL2EvZGF0YXNldF9lMmFiZjM3My0zMjY4LTQ2YTAtYTZiZC04ODlmZTcwNjE5ODQuZGF0OnBhcnRfSy5nYiwvdG1wL3RtcGh4eG9jZWFoL2ZpbGVzL2QvNy8xL2RhdGFzZXRfZDcxZDBiN2QtZmM5OC00ZDk3LThhNmItZTkyYmIyMjk1ODJlLmRhdDpwYXJ0X0wuZ2InIC0tdXNlX2ZpbGVfbmFtZXNfYXNfaWQgJ3RydWUnIC0tb3V0ZGlyX3NpbXVsYXRpb24gJ291dGRpcl96aXAnIC0tb3V0ZGlyX2diICdvdXRkaXJfZ2InIC0tb3V0cHV0X3NpbXVsYXRpb24gJ291dHB1dF96aXAuemlwJyAtLWVuenltZSAnYXV0bycgLS10b3BvbG9neSAnY2lyY3VsYXInICYmIGNwICdvdXRwdXRfemlwLnppcCcgJy90bXAvdG1waHh4b2NlYWgvam9iX3dvcmtpbmdfZGlyZWN0b3J5LzAwMC80OS9vdXRwdXRzL2RhdGFzZXRfZTc5MWVmYmMtYmU2Yi00NGM1LWExMjQtYTc0NGE4MTJiNTk3LmRhdCcKICAgICAgYGBgCiAgICAqKkV4aXQgQ29kZToqKgoKICAgICogYGBgY29uc29sZQogICAgICAwCiAgICAgIGBgYAogICAgKipTdGFuZGFyZCBFcnJvcjoqKgoKICAgICogYGBgY29uc29sZQogICAgICAKICAgICAgYXNzZW1ibHk6ICAgMCV8ICAgICAgICAgIHwgMC80IFswMDowMDw/LCA/aXQvcywgbm93PU5vbmVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAoKICAgICAgYXNzZW1ibHk6ICAgMCV8ICAgICAgICAgIHwgMC80IFswMDowMDw/LCA/aXQvcywgbm93PU5vbmVdCiAgICAgIGFzc2VtYmx5OiAgNTAlfOKWiOKWiOKWiOKWiOKWiCAgICAgfCAyLzQgWzAwOjAwPDAwOjAwLCAgMi40MWl0L3MsIG5vdz1Ob25lXQogICAgICBhc3NlbWJseTogIDc1JXzilojilojilojilojilojilojilojilowgIHwgMy80IFswMDowMTwwMDowMCwgIDIuMjFpdC9zLCBub3c9Tm9uZV0KICAgICAgYXNzZW1ibHk6IDEwMCV84paI4paI4paI4paI4paI4paI4paI4paI4paI4paIfCA0LzQgWzAwOjAyPDAwOjAwLCAgMS44Mml0L3MsIG5vdz1Ob25lXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICBgYGAKICAgICoqU3RhbmRhcmQgT3V0cHV0OioqCgogICAgKiBgYGBjb25zb2xlCiAgICAgIFNpbXVsYXRpbmcgYXNzZW1ibHkgcGxhbiBhc3NhbWJseS4uLgogICAgICB7J2NhbmNlbGxlZF9hc3NlbWJsaWVzJzogMCwgJ2Vycm9yZWRfYXNzZW1ibGllcyc6IDAsICd2YWxpZF9hc3NlbWJsaWVzJzogNH0KICAgICAgR2VuZXJhdGluZyBhc3NlbWJsaWVzIHJlcG9ydHMuLi4KCiAgICAgIGBgYAogICAgKipUcmFjZWJhY2s6KioKCiAgICAqIGBgYGNvbnNvbGUKICAgICAgCiAgICAgIGBgYAogICAqKkpvYiBQYXJhbWV0ZXJzOioqCgogICAqICAgfCBKb2IgcGFyYW1ldGVyIHwgUGFyYW1ldGVyIHZhbHVlIHwKICAgICAgIHwgLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0tLSB8CiAgICAgICB8IGdlbmJhbmtcX2ZpbGVzIHwgYCB7InZhbHVlcyI6IFt7ImlkIjogMTIsICJzcmMiOiAiaGRjYSJ9XX0gYCB8CiAgICAgICB8IGRvbWVzdGljYXRlZFxfaW5wdXQgfCBgIHsidmFsdWVzIjogW3siaWQiOiAxMSwgInNyYyI6ICJoZGNhIn1dfSBgIHwKICAgICAgIHwgYXNzZW1ibHlcX3BsYW5cX25hbWUgfCBgICJUeXBlMnNSZXN0cmljdGlvbkFzc2VtYmx5IiBgIHwKICAgICAgIHwgdG9wb2xvZ3kgfCBgICJjaXJjdWxhciIgYCB8CiAgICAgICB8IGFkdiB8IGAgeyJlbnp5bWUiOiAiYXV0byIsICJ1c2VfZmlsZV9uYW1lc19hc19pZHMiOiB0cnVlfSBgIHwKICAgICAgIHwgY2hyb21JbmZvIHwgYCAiL3RtcC90bXBoeHhvY2VhaC9nYWxheHktZGV2L3Rvb2wtZGF0YS9zaGFyZWQvdWNzYy9jaHJvbS8/LmxlbiIgYCB8CiAgICAgICB8IGRia2V5IHwgYCAiPyIgYCB8CiAgICAgICB8IFxfXF9pbnB1dFxfZXh0IHwgYCAiaW5wdXQiIGAgfAoKCgogICAgPC9kaXY+PC9kZXRhaWxzPgoKCiogPGRldGFpbHMgY2xhc3M9InJjb3JuZXJzIGxpZ2h0LWdyZWVuIj48c3VtbWFyeSBjbGFzcz0ibGlnaHQtZ3JlZW4iPiYjOTk4OTsgY2xvbmluZ19zaW11bGF0aW9uIChUZXN0ICMgNyk8L3N1bW1hcnk+PGRpdiBjbGFzcz0icGFkZGVkIj4KCiAgICAqKkNvbW1hbmQgTGluZToqKgoKICAgICogYGBgY29uc29sZQogICAgICBta2RpciAnb3V0ZGlyX3ppcCcgJiYgbWtkaXIgJ291dGRpcl9nYicgJiYgY3AgJy90bXAvdG1waHh4b2NlYWgvZmlsZXMvMC8xLzcvZGF0YXNldF8wMTdjY2ZkNC00ZDQ2LTQ0YzEtOTlhZC1hZjE4NzI0Y2ZhOWMuZGF0JyAnYXNzZW1ibHlfY3N2LmNzdicgJiYgcHl0aG9uICcvaG9tZS9ya2hhbGVkL2dhbGF4eXRvb2xzL3Rvb2xzL2Nsb25pbmdfc2ltdWxhdGlvbi9jbG9uaW5nX3NpbXVsYXRpb24ucHknIC0tcGFydHNfZmlsZXMgJy90bXAvdG1waHh4b2NlYWgvZmlsZXMvYy8yLzYvZGF0YXNldF9jMjZhZDM5Zi0xMjM3LTRjMDQtOGY3Zi03M2QyYzVkOWFkNTguZGF0LC90bXAvdG1waHh4b2NlYWgvZmlsZXMvYy82LzgvZGF0YXNldF9jNjhiZWViMy05NDlhLTRhM2UtYWI0My05ODc4MzE1MDQwMDEuZGF0LC90bXAvdG1waHh4b2NlYWgvZmlsZXMvOC9mLzYvZGF0YXNldF84ZjZhNGJkZC1jNmMwLTRiNzktOGRmZC03YTJlNWYwZThjNzIuZGF0LC90bXAvdG1waHh4b2NlYWgvZmlsZXMvMS8wLzYvZGF0YXNldF8xMDY5YmQ2MS00OWZiLTQ5MmEtOGVhZi1kOThlNDk2NTc2YTguZGF0LC90bXAvdG1waHh4b2NlYWgvZmlsZXMvMy8xLzEvZGF0YXNldF8zMTFkYjA2ZS04ODFjLTRhMzgtOWZlOS1hMTM3MTIwMDRlY2UuZGF0LC90bXAvdG1waHh4b2NlYWgvZmlsZXMvNy84LzEvZGF0YXNldF83ODFjZGQ5Mi02YmFmLTQ1MWUtOGU3Mi1mMDU5NjExNTRkYWUuZGF0LC90bXAvdG1waHh4b2NlYWgvZmlsZXMvNy8xLzcvZGF0YXNldF83MTdmN2ZlOC0xZmJmLTQzOTQtYWVmZi0xNGQ3YWE0MzAxOTMuZGF0LC90bXAvdG1waHh4b2NlYWgvZmlsZXMvMy9hLzgvZGF0YXNldF8zYTg4M2Q5Ni02MzgxLTQ1NjktYTg3Mi02NDkwYTQ3OTgwYjIuZGF0LC90bXAvdG1waHh4b2NlYWgvZmlsZXMvYy8xL2QvZGF0YXNldF9jMWQ0ODc0Ny04ZDE4LTQyNDktOGIxMS02MGE3M2FkNzQ0NmYuZGF0LC90bXAvdG1waHh4b2NlYWgvZmlsZXMvMC9lLzQvZGF0YXNldF8wZTRhNGEwNS03MjY1LTQ4NDQtOWQ3MC0xYWQ5NmZhY2ZkZjkuZGF0LC90bXAvdG1waHh4b2NlYWgvZmlsZXMvOS9mLzcvZGF0YXNldF85ZjcyZDE0MC0zOTQ2LTQ1NjctOGVjYi0wNTY0NThkN2JiNzAuZGF0LC90bXAvdG1waHh4b2NlYWgvZmlsZXMvYi82L2EvZGF0YXNldF9iNmEwNmFjNy0yMjQwLTRmNjgtOWU3NS02M2RlM2Y1ZDEwZjIuZGF0JyAtLWRvbWVzdGljYXRlZF9zZXEgJycgLS1hc3NlbWJseV9jc3YgJ2Fzc2VtYmx5X2Nzdi5jc3YnIC0tYXNzZW1ibHlfcGxhbl9uYW1lICdUeXBlMnNSZXN0cmljdGlvbkFzc2VtYmx5JyAtLWZpbGVfbmFtZV9tYXBwaW5nICcvdG1wL3RtcGh4eG9jZWFoL2ZpbGVzL2MvMi82L2RhdGFzZXRfYzI2YWQzOWYtMTIzNy00YzA0LThmN2YtNzNkMmM1ZDlhZDU4LmRhdDpwYXJ0X0EuZ2IsL3RtcC90bXBoeHhvY2VhaC9maWxlcy9jLzYvOC9kYXRhc2V0X2M2OGJlZWIzLTk0OWEtNGEzZS1hYjQzLTk4NzgzMTUwNDAwMS5kYXQ6cGFydF9CLmdiLC90bXAvdG1waHh4b2NlYWgvZmlsZXMvOC9mLzYvZGF0YXNldF84ZjZhNGJkZC1jNmMwLTRiNzktOGRmZC03YTJlNWYwZThjNzIuZGF0OnBhcnRfQy5nYiwvdG1wL3RtcGh4eG9jZWFoL2ZpbGVzLzEvMC82L2RhdGFzZXRfMTA2OWJkNjEtNDlmYi00OTJhLThlYWYtZDk4ZTQ5NjU3NmE4LmRhdDpwYXJ0X0QuZ2IsL3RtcC90bXBoeHhvY2VhaC9maWxlcy8zLzEvMS9kYXRhc2V0XzMxMWRiMDZlLTg4MWMtNGEzOC05ZmU5LWExMzcxMjAwNGVjZS5kYXQ6cGFydF9FLmdiLC90bXAvdG1waHh4b2NlYWgvZmlsZXMvNy84LzEvZGF0YXNldF83ODFjZGQ5Mi02YmFmLTQ1MWUtOGU3Mi1mMDU5NjExNTRkYWUuZGF0OnBhcnRfRi5nYiwvdG1wL3RtcGh4eG9jZWFoL2ZpbGVzLzcvMS83L2RhdGFzZXRfNzE3ZjdmZTgtMWZiZi00Mzk0LWFlZmYtMTRkN2FhNDMwMTkzLmRhdDpwYXJ0X0cuZ2IsL3RtcC90bXBoeHhvY2VhaC9maWxlcy8zL2EvOC9kYXRhc2V0XzNhODgzZDk2LTYzODEtNDU2OS1hODcyLTY0OTBhNDc5ODBiMi5kYXQ6cGFydF9ILmdiLC90bXAvdG1waHh4b2NlYWgvZmlsZXMvYy8xL2QvZGF0YXNldF9jMWQ0ODc0Ny04ZDE4LTQyNDktOGIxMS02MGE3M2FkNzQ0NmYuZGF0OnBhcnRfSS5nYiwvdG1wL3RtcGh4eG9jZWFoL2ZpbGVzLzAvZS80L2RhdGFzZXRfMGU0YTRhMDUtNzI2NS00ODQ0LTlkNzAtMWFkOTZmYWNmZGY5LmRhdDpwYXJ0X0ouZ2IsL3RtcC90bXBoeHhvY2VhaC9maWxlcy85L2YvNy9kYXRhc2V0XzlmNzJkMTQwLTM5NDYtNDU2Ny04ZWNiLTA1NjQ1OGQ3YmI3MC5kYXQ6cGFydF9LLmdiLC90bXAvdG1waHh4b2NlYWgvZmlsZXMvYi82L2EvZGF0YXNldF9iNmEwNmFjNy0yMjQwLTRmNjgtOWU3NS02M2RlM2Y1ZDEwZjIuZGF0OnBhcnRfTC5nYicgLS1maWxlX25hbWVfbWFwcGluZ19kb20gJycgLS11c2VfZmlsZV9uYW1lc19hc19pZCAndHJ1ZScgLS1vdXRkaXJfc2ltdWxhdGlvbiAnb3V0ZGlyX3ppcCcgLS1vdXRkaXJfZ2IgJ291dGRpcl9nYicgLS1vdXRwdXRfc2ltdWxhdGlvbiAnb3V0cHV0X3ppcC56aXAnIC0tZW56eW1lICdhdXRvJyAtLXRvcG9sb2d5ICdjaXJjdWxhcicgJiYgY3AgJ291dHB1dF96aXAuemlwJyAnL3RtcC90bXBoeHhvY2VhaC9qb2Jfd29ya2luZ19kaXJlY3RvcnkvMDAwLzYzL291dHB1dHMvZGF0YXNldF85NTkzYWJmYS1hOWJjLTRhNDUtODMzNC01MjAzMDUwYTZjYTUuZGF0JwogICAgICBgYGAKICAgICoqRXhpdCBDb2RlOioqCgogICAgKiBgYGBjb25zb2xlCiAgICAgIDAKICAgICAgYGBgCiAgICAqKlN0YW5kYXJkIEVycm9yOioqCgogICAgKiBgYGBjb25zb2xlCiAgICAgIAogICAgICBhc3NlbWJseTogICAwJXwgICAgICAgICAgfCAwLzQgWzAwOjAwPD8sID9pdC9zLCBub3c9Tm9uZV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCgogICAgICBhc3NlbWJseTogICAwJXwgICAgICAgICAgfCAwLzQgWzAwOjAwPD8sID9pdC9zLCBub3c9Tm9uZV0KICAgICAgYXNzZW1ibHk6ICA1MCV84paI4paI4paI4paI4paIICAgICB8IDIvNCBbMDA6MDA8MDA6MDAsICAyLjQxaXQvcywgbm93PU5vbmVdCiAgICAgIGFzc2VtYmx5OiAgNzUlfOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWjCAgfCAzLzQgWzAwOjAxPDAwOjAwLCAgMi4yMml0L3MsIG5vdz1Ob25lXQogICAgICBhc3NlbWJseTogMTAwJXzilojilojilojilojilojilojilojilojilojiloh8IDQvNCBbMDA6MDI8MDA6MDAsICAxLjc5aXQvcywgbm93PU5vbmVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgIGBgYAogICAgKipTdGFuZGFyZCBPdXRwdXQ6KioKCiAgICAqIGBgYGNvbnNvbGUKICAgICAgU2ltdWxhdGluZyBhc3NlbWJseSBwbGFuIGFzc2FtYmx5Li4uCiAgICAgIHsnY2FuY2VsbGVkX2Fzc2VtYmxpZXMnOiAwLCAnZXJyb3JlZF9hc3NlbWJsaWVzJzogMCwgJ3ZhbGlkX2Fzc2VtYmxpZXMnOiA0fQogICAgICBHZW5lcmF0aW5nIGFzc2VtYmxpZXMgcmVwb3J0cy4uLgoKICAgICAgYGBgCiAgICAqKlRyYWNlYmFjazoqKgoKICAgICogYGBgY29uc29sZQogICAgICAKICAgICAgYGBgCiAgICoqSm9iIFBhcmFtZXRlcnM6KioKCiAgICogICB8IEpvYiBwYXJhbWV0ZXIgfCBQYXJhbWV0ZXIgdmFsdWUgfAogICAgICAgfCAtLS0tLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tIHwKICAgICAgIHwgZ2VuYmFua1xfZmlsZXMgfCBgIE5vbmUgYCB8CiAgICAgICB8IGRvbWVzdGljYXRlZFxfaW5wdXQgfCBgIHsidmFsdWVzIjogW3siaWQiOiAxNCwgInNyYyI6ICJoZGNhIn1dfSBgIHwKICAgICAgIHwgYXNzZW1ibHlcX3BsYW5cX25hbWUgfCBgICJUeXBlMnNSZXN0cmljdGlvbkFzc2VtYmx5IiBgIHwKICAgICAgIHwgdG9wb2xvZ3kgfCBgICJjaXJjdWxhciIgYCB8CiAgICAgICB8IGFkdiB8IGAgeyJlbnp5bWUiOiAiYXV0byIsICJ1c2VfZmlsZV9uYW1lc19hc19pZHMiOiB0cnVlfSBgIHwKICAgICAgIHwgY2hyb21JbmZvIHwgYCAiL3RtcC90bXBoeHhvY2VhaC9nYWxheHktZGV2L3Rvb2wtZGF0YS9zaGFyZWQvdWNzYy9jaHJvbS8/LmxlbiIgYCB8CiAgICAgICB8IGRia2V5IHwgYCAiPyIgYCB8CiAgICAgICB8IFxfXF9pbnB1dFxfZXh0IHwgYCAiaW5wdXQiIGAgfAoKCgogICAgPC9kaXY+PC9kZXRhaWxzPgoKCjwvZGV0YWlscz4K')); + target.innerHTML = md.render(atob('IyMgVGVzdCBTdW1tYXJ5Cgo8ZGl2IGNsYXNzPSJwcm9ncmVzcyI+CiAgPGRpdiBjbGFzcz0icHJvZ3Jlc3MtYmFyIHByb2dyZXNzLWJhci1zdWNjZXNzIiBzdHlsZT0id2lkdGg6IDg1LjcxNDI4NTcxNDI4NTcxJSIgYXJpYS12YWx1ZW5vdz0iNiIgYXJpYS12YWx1ZW1pbj0iMCIgYXJpYS12YWx1ZW1heD0iNyIgZGF0YS10b2dnbGU9InRvb2x0aXAiIHRpdGxlPSI2IFBhc3NlZCI+CiAgPC9kaXY+CiAgPGRpdiBjbGFzcz0icHJvZ3Jlc3MtYmFyIHByb2dyZXNzLWJhci13YXJuaW5nIiBzdHlsZT0id2lkdGg6IDAuMCUiIGFyaWEtdmFsdWVub3c9IjAiIGFyaWEtdmFsdWVtaW49IjAiIGFyaWEtdmFsdWVtYXg9IjciIGRhdGEtdG9nZ2xlPSJ0b29sdGlwIiB0aXRsZT0iMCBTa2lwcGVkIj4KICA8L2Rpdj4KICA8ZGl2IGNsYXNzPSJwcm9ncmVzcy1iYXIgcHJvZ3Jlc3MtYmFyLWRhbmdlciIgc3R5bGU9IndpZHRoOiAxNC4yODU3MTQyODU3MTQyODUlIiBhcmlhLXZhbHVlbm93PSIxIiBhcmlhLXZhbHVlbWluPSIwIiBhcmlhLXZhbHVlbWF4PSI3IiB0aXRsZT0iMSBGYWlsZWQgb3IgRXJyb3JlZCI+CiAgPC9kaXY+CjwvZGl2PgoKfCBUZXN0IFN0YXRlIHwgQ291bnQgfAp8IC0tLS0tLS0tLS0gfCAtLS0tLSB8CnwgVG90YWwgICAgICB8IDcgfAp8IFBhc3NlZCAgICAgfCA2IHwKfCBFcnJvciAgICAgIHwgMCB8CnwgRmFpbHVyZSAgICB8IDEgfAp8IFNraXBwZWQgICAgfCAwIHwKCgo8ZGV0YWlscyBvcGVuPjxzdW1tYXJ5PkZhaWxlZCBUZXN0czwvc3VtbWFyeT4KCiogPGRldGFpbHMgY2xhc3M9InJjb3JuZXJzIGxpZ2h0LXJlZCI+PHN1bW1hcnkgY2xhc3M9ImxpZ2h0LXJlZCI+JiMxMDA2MDsgY2xvbmluZ19zaW11bGF0aW9uIChUZXN0ICMgMSk8L3N1bW1hcnk+PGRpdiBjbGFzcz0icGFkZGVkIj4KCiAgICAqKlByb2JsZW1zKio6CiAgICAqIGBgYAogICAgICBKb2IgaW4gZXJyb3Igc3RhdGUuLiB0b29sX2lkOiBjbG9uaW5nX3NpbXVsYXRpb24sIGV4aXRfY29kZTogMSwgc3RkZXJyOiAKICAgICAgYXNzZW1ibHk6ICAgMCV8ICAgICAgICAgIHwgMC81IFswMDowMDw/LCA/aXQvcywgbm93PU5vbmVdVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgogICAgICAgIEZpbGUgIi9ob21lL3JraGFsZWQvZ2FsYXh5dG9vbHMvdG9vbHMvY2xvbmluZ19zaW11bGF0aW9uL2Nsb25pbmdfc2ltdWxhdGlvbi5weSIsIGxpbmUgMTcxLCBpbiA8bW9kdWxlPgogICAgICAgICAgY2xvbmluZ19zaW11bGF0aW9uKAogICAgICAgICAgfn5+fn5+fn5+fn5+fn5+fn5+XgogICAgICAgICAgICAgIGFyZ3MucGFydHNfZmlsZXMsIGFyZ3MuZG9tZXN0aWNhdGVkX3NlcSwKICAgICAgICAgICAgICBeXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eCiAgICAgICAgICAuLi48MyBsaW5lcz4uLi4KICAgICAgICAgICAgICBhcmdzLm91dHB1dF9zaW11bGF0aW9uLCBhcmdzLmVuenltZSwgYXJncy5vdXRkaXJfZ2IKICAgICAgICAgICAgICBeXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl4KICAgICAgICAgICkKICAgICAgICAgIF4KICAgICAgICBGaWxlICIvaG9tZS9ya2hhbGVkL2dhbGF4eXRvb2xzL3Rvb2xzL2Nsb25pbmdfc2ltdWxhdGlvbi9jbG9uaW5nX3NpbXVsYXRpb24ucHkiLCBsaW5lIDk3LCBpbiBjbG9uaW5nX3NpbXVsYXRpb24KICAgICAgICAgIHNpbXVsYXRpb24gPSBhc3NlbWJseV9wbGFuLnNpbXVsYXRlKHNlcXVlbmNlX3JlcG9zaXRvcnk9cmVwb3NpdG9yeSkKICAgICAgICBGaWxlICIvaG9tZS9ya2hhbGVkL21pbmljb25kYTMvZW52cy9tdWxsZWQtdjEtNmMyYjllYmI0NzVhMzdiZDBkOWNhNzg1NzQ3NGU4NTc0NzE5ZTU0NmRlODgyODEwZjc4MjhmZTU5OTNhOGFkZi9saWIvcHl0aG9uMy4xMy9zaXRlLXBhY2thZ2VzL2RuYWNhdWxkcm9uL0Fzc2VtYmx5UGxhbi9Bc3NlbWJseVBsYW4ucHkiLCBsaW5lIDI1MSwgaW4gc2ltdWxhdGUKICAgICAgICAgIHNpbXVsYXRpb25fcmVzdWx0ID0gYXNzZW1ibHkuc2ltdWxhdGUoc2VxdWVuY2VfcmVwb3NpdG9yeSkKICAgICAgICBGaWxlICIvaG9tZS9ya2hhbGVkL21pbmljb25kYTMvZW52cy9tdWxsZWQtdjEtNmMyYjllYmI0NzVhMzdiZDBkOWNhNzg1NzQ3NGU4NTc0NzE5ZTU0NmRlODgyODEwZjc4MjhmZTU5OTNhOGFkZi9saWIvcHl0aG9uMy4xMy9zaXRlLXBhY2thZ2VzL2RuYWNhdWxkcm9uL0Fzc2VtYmx5L2J1aWx0aW5fYXNzZW1ibHlfY2xhc3Nlcy9UeXBlMnNSZXN0cmljdGlvbkFzc2VtYmx5LnB5IiwgbGluZSAxODEsIGluIHNpbXVsYXRlCiAgICAgICAgICByZWNvcmRzID0gc2VxdWVuY2VfcmVwb3NpdG9yeS5nZXRfcmVjb3JkcyhzZWxmLnBhcnRzKQogICAgICAgIEZpbGUgIi9ob21lL3JraGFsZWQvbWluaWNvbmRhMy9lbnZzL211bGxlZC12MS02YzJiOWViYjQ3NWEzN2JkMGQ5Y2E3ODU3NDc0ZTg1NzQ3MTllNTQ2ZGU4ODI4MTBmNzgyOGZlNTk5M2E4YWRmL2xpYi9weXRob24zLjEzL3NpdGUtcGFja2FnZXMvZG5hY2F1bGRyb24vU2VxdWVuY2VSZXBvc2l0b3J5LnB5IiwgbGluZSAxMjAsIGluIGdldF9yZWNvcmRzCiAgICAgICAgICByYWlzZSBOb3RJblJlcG9zaXRvcnlFcnJvcihub3RfaW5fcmVwb3NpdG9yeSwgcmVwb3NpdG9yeT1zZWxmKQogICAgICBkbmFjYXVsZHJvbi5TZXF1ZW5jZVJlcG9zaXRvcnkuTm90SW5SZXBvc2l0b3J5RXJyb3I6IFBhcnRzIG5vdCBmb3VuZCBpbiByZXBvOiBwYXJ0MSwgcGFydDIsIHBhcnQzLCBwYXJ0NCwgcGFydDUsIHBhcnQ2CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgLgogICAgICBgYGAKICAgICogYGBgCiAgICAgIEpvYiBpbiBlcnJvciBzdGF0ZS4uIHRvb2xfaWQ6IGNsb25pbmdfc2ltdWxhdGlvbiwgZXhpdF9jb2RlOiAxLCBzdGRlcnI6IAogICAgICBhc3NlbWJseTogICAwJXwgICAgICAgICAgfCAwLzUgWzAwOjAwPD8sID9pdC9zLCBub3c9Tm9uZV1UcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiAgICAgICAgRmlsZSAiL2hvbWUvcmtoYWxlZC9nYWxheHl0b29scy90b29scy9jbG9uaW5nX3NpbXVsYXRpb24vY2xvbmluZ19zaW11bGF0aW9uLnB5IiwgbGluZSAxNzEsIGluIDxtb2R1bGU+CiAgICAgICAgICBjbG9uaW5nX3NpbXVsYXRpb24oCiAgICAgICAgICB+fn5+fn5+fn5+fn5+fn5+fn5eCiAgICAgICAgICAgICAgYXJncy5wYXJ0c19maWxlcywgYXJncy5kb21lc3RpY2F0ZWRfc2VxLAogICAgICAgICAgICAgIF5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl4KICAgICAgICAgIC4uLjwzIGxpbmVzPi4uLgogICAgICAgICAgICAgIGFyZ3Mub3V0cHV0X3NpbXVsYXRpb24sIGFyZ3MuZW56eW1lLCBhcmdzLm91dGRpcl9nYgogICAgICAgICAgICAgIF5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXgogICAgICAgICAgKQogICAgICAgICAgXgogICAgICAgIEZpbGUgIi9ob21lL3JraGFsZWQvZ2FsYXh5dG9vbHMvdG9vbHMvY2xvbmluZ19zaW11bGF0aW9uL2Nsb25pbmdfc2ltdWxhdGlvbi5weSIsIGxpbmUgOTcsIGluIGNsb25pbmdfc2ltdWxhdGlvbgogICAgICAgICAgc2ltdWxhdGlvbiA9IGFzc2VtYmx5X3BsYW4uc2ltdWxhdGUoc2VxdWVuY2VfcmVwb3NpdG9yeT1yZXBvc2l0b3J5KQogICAgICAgIEZpbGUgIi9ob21lL3JraGFsZWQvbWluaWNvbmRhMy9lbnZzL211bGxlZC12MS02YzJiOWViYjQ3NWEzN2JkMGQ5Y2E3ODU3NDc0ZTg1NzQ3MTllNTQ2ZGU4ODI4MTBmNzgyOGZlNTk5M2E4YWRmL2xpYi9weXRob24zLjEzL3NpdGUtcGFja2FnZXMvZG5hY2F1bGRyb24vQXNzZW1ibHlQbGFuL0Fzc2VtYmx5UGxhbi5weSIsIGxpbmUgMjUxLCBpbiBzaW11bGF0ZQogICAgICAgICAgc2ltdWxhdGlvbl9yZXN1bHQgPSBhc3NlbWJseS5zaW11bGF0ZShzZXF1ZW5jZV9yZXBvc2l0b3J5KQogICAgICAgIEZpbGUgIi9ob21lL3JraGFsZWQvbWluaWNvbmRhMy9lbnZzL211bGxlZC12MS02YzJiOWViYjQ3NWEzN2JkMGQ5Y2E3ODU3NDc0ZTg1NzQ3MTllNTQ2ZGU4ODI4MTBmNzgyOGZlNTk5M2E4YWRmL2xpYi9weXRob24zLjEzL3NpdGUtcGFja2FnZXMvZG5hY2F1bGRyb24vQXNzZW1ibHkvYnVpbHRpbl9hc3NlbWJseV9jbGFzc2VzL1R5cGUyc1Jlc3RyaWN0aW9uQXNzZW1ibHkucHkiLCBsaW5lIDE4MSwgaW4gc2ltdWxhdGUKICAgICAgICAgIHJlY29yZHMgPSBzZXF1ZW5jZV9yZXBvc2l0b3J5LmdldF9yZWNvcmRzKHNlbGYucGFydHMpCiAgICAgICAgRmlsZSAiL2hvbWUvcmtoYWxlZC9taW5pY29uZGEzL2VudnMvbXVsbGVkLXYxLTZjMmI5ZWJiNDc1YTM3YmQwZDljYTc4NTc0NzRlODU3NDcxOWU1NDZkZTg4MjgxMGY3ODI4ZmU1OTkzYThhZGYvbGliL3B5dGhvbjMuMTMvc2l0ZS1wYWNrYWdlcy9kbmFjYXVsZHJvbi9TZXF1ZW5jZVJlcG9zaXRvcnkucHkiLCBsaW5lIDEyMCwgaW4gZ2V0X3JlY29yZHMKICAgICAgICAgIHJhaXNlIE5vdEluUmVwb3NpdG9yeUVycm9yKG5vdF9pbl9yZXBvc2l0b3J5LCByZXBvc2l0b3J5PXNlbGYpCiAgICAgIGRuYWNhdWxkcm9uLlNlcXVlbmNlUmVwb3NpdG9yeS5Ob3RJblJlcG9zaXRvcnlFcnJvcjogUGFydHMgbm90IGZvdW5kIGluIHJlcG86IHBhcnQxLCBwYXJ0MiwgcGFydDMsIHBhcnQ0LCBwYXJ0NSwgcGFydDYKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAuCiAgICAgIGBgYAogICAgKiBgYGAKICAgICAgT3V0cHV0IGNvbGxlY3Rpb24gJ2NvbnN0cnVjdF9nYic6IGV4cGVjdGVkIHRvIGhhdmUgNCBlbGVtZW50cywgYnV0IGl0IGhhZCAwLgogICAgICBgYGAKICAgICoqQ29tbWFuZCBMaW5lOioqCgogICAgKiBgYGBjb25zb2xlCiAgICAgIG1rZGlyICdvdXRkaXJfemlwJyAmJiBta2RpciAnb3V0ZGlyX2diJyAmJiBjcCAnL3RtcC90bXB5MnlzdjZ0bi9maWxlcy8xL2EvMS9kYXRhc2V0XzFhMWVlMzJkLWVlZDctNDdmZC1iNDkxLTRmMDc5OWI0NGE4NS5kYXQnICdhc3NlbWJseV9jc3YuY3N2JyAmJiBweXRob24gJy9ob21lL3JraGFsZWQvZ2FsYXh5dG9vbHMvdG9vbHMvY2xvbmluZ19zaW11bGF0aW9uL2Nsb25pbmdfc2ltdWxhdGlvbi5weScgLS1wYXJ0c19maWxlcyAnL3RtcC90bXB5MnlzdjZ0bi9maWxlcy80LzQvMS9kYXRhc2V0XzQ0MTI5MTkxLTU1MzEtNGNjOS1iMzdiLWZlYzRlM2M2NzdkNS5kYXQsL3RtcC90bXB5MnlzdjZ0bi9maWxlcy82LzEvZi9kYXRhc2V0XzYxZjVmMTlmLTE0N2ItNDZmZC04OTAwLWE4NTMwZjMxMTgzNS5kYXQsL3RtcC90bXB5MnlzdjZ0bi9maWxlcy80LzQvMC9kYXRhc2V0XzQ0MGIzNGU3LTQ5MGUtNDliZC05YjI5LTZhZmNhYmU1ZjZmNi5kYXQsL3RtcC90bXB5MnlzdjZ0bi9maWxlcy9hLzMvZi9kYXRhc2V0X2EzZmNhMjEyLWI4ZGMtNDU3OS05MDFjLTYxMmI4MDYyNDFhZi5kYXQsL3RtcC90bXB5MnlzdjZ0bi9maWxlcy81LzMvOS9kYXRhc2V0XzUzOThmMmNiLTFhMjUtNDVlNS05YmEwLWNkNzlhODhiNmU4OC5kYXQsL3RtcC90bXB5MnlzdjZ0bi9maWxlcy9mLzUvMC9kYXRhc2V0X2Y1MDUyOTNhLTgyMjMtNGRhMi1hMjJjLWFhMjYxZDQ5NTVlYy5kYXQsL3RtcC90bXB5MnlzdjZ0bi9maWxlcy9jLzUvMC9kYXRhc2V0X2M1MGU0YjFmLWM3MmEtNDI3Mi1iMzI0LWUxYzJjN2Q1MDI5My5kYXQsL3RtcC90bXB5MnlzdjZ0bi9maWxlcy8wLzAvZC9kYXRhc2V0XzAwZDc5NTYwLWY5NDQtNGQ4ZS05OGU3LWY1MTY2ODRhNjEwMC5kYXQsL3RtcC90bXB5MnlzdjZ0bi9maWxlcy8zL2QvNS9kYXRhc2V0XzNkNWJiMGZiLWQ2MTAtNDkzOS04ZmM1LTk5OTE3NGZlZTVjYS5kYXQsL3RtcC90bXB5MnlzdjZ0bi9maWxlcy9jLzcvYy9kYXRhc2V0X2M3Y2Y5NmFmLWFiMWMtNDE5OS04MjFmLTViYjViOTQ3NzUyZi5kYXQsL3RtcC90bXB5MnlzdjZ0bi9maWxlcy8wL2EvNS9kYXRhc2V0XzBhNTEzOWU3LTdkODMtNDhmMS1hMWM5LTQ1OGExZTcyNjg1Yy5kYXQsL3RtcC90bXB5MnlzdjZ0bi9maWxlcy9mL2IvMy9kYXRhc2V0X2ZiMzYxZjIyLTAyMGMtNDk3Mi04NjYxLWYxZjU3ZDFhN2FmYS5kYXQnIC0tZG9tZXN0aWNhdGVkX3NlcSAnJyAtLWFzc2VtYmx5X2NzdiAnYXNzZW1ibHlfY3N2LmNzdicgLS1hc3NlbWJseV9wbGFuX25hbWUgJ1R5cGUyc1Jlc3RyaWN0aW9uQXNzZW1ibHknIC0tZmlsZV9uYW1lX21hcHBpbmcgJy90bXAvdG1weTJ5c3Y2dG4vZmlsZXMvNC80LzEvZGF0YXNldF80NDEyOTE5MS01NTMxLTRjYzktYjM3Yi1mZWM0ZTNjNjc3ZDUuZGF0OnBhcnRfQS5nYiwvdG1wL3RtcHkyeXN2NnRuL2ZpbGVzLzYvMS9mL2RhdGFzZXRfNjFmNWYxOWYtMTQ3Yi00NmZkLTg5MDAtYTg1MzBmMzExODM1LmRhdDpwYXJ0X0IuZ2IsL3RtcC90bXB5MnlzdjZ0bi9maWxlcy80LzQvMC9kYXRhc2V0XzQ0MGIzNGU3LTQ5MGUtNDliZC05YjI5LTZhZmNhYmU1ZjZmNi5kYXQ6cGFydF9DLmdiLC90bXAvdG1weTJ5c3Y2dG4vZmlsZXMvYS8zL2YvZGF0YXNldF9hM2ZjYTIxMi1iOGRjLTQ1NzktOTAxYy02MTJiODA2MjQxYWYuZGF0OnBhcnRfRC5nYiwvdG1wL3RtcHkyeXN2NnRuL2ZpbGVzLzUvMy85L2RhdGFzZXRfNTM5OGYyY2ItMWEyNS00NWU1LTliYTAtY2Q3OWE4OGI2ZTg4LmRhdDpwYXJ0X0UuZ2IsL3RtcC90bXB5MnlzdjZ0bi9maWxlcy9mLzUvMC9kYXRhc2V0X2Y1MDUyOTNhLTgyMjMtNGRhMi1hMjJjLWFhMjYxZDQ5NTVlYy5kYXQ6cGFydF9GLmdiLC90bXAvdG1weTJ5c3Y2dG4vZmlsZXMvYy81LzAvZGF0YXNldF9jNTBlNGIxZi1jNzJhLTQyNzItYjMyNC1lMWMyYzdkNTAyOTMuZGF0OnBhcnRfRy5nYiwvdG1wL3RtcHkyeXN2NnRuL2ZpbGVzLzAvMC9kL2RhdGFzZXRfMDBkNzk1NjAtZjk0NC00ZDhlLTk4ZTctZjUxNjY4NGE2MTAwLmRhdDpwYXJ0X0guZ2IsL3RtcC90bXB5MnlzdjZ0bi9maWxlcy8zL2QvNS9kYXRhc2V0XzNkNWJiMGZiLWQ2MTAtNDkzOS04ZmM1LTk5OTE3NGZlZTVjYS5kYXQ6cGFydF9JLmdiLC90bXAvdG1weTJ5c3Y2dG4vZmlsZXMvYy83L2MvZGF0YXNldF9jN2NmOTZhZi1hYjFjLTQxOTktODIxZi01YmI1Yjk0Nzc1MmYuZGF0OnBhcnRfSi5nYiwvdG1wL3RtcHkyeXN2NnRuL2ZpbGVzLzAvYS81L2RhdGFzZXRfMGE1MTM5ZTctN2Q4My00OGYxLWExYzktNDU4YTFlNzI2ODVjLmRhdDpwYXJ0X0suZ2IsL3RtcC90bXB5MnlzdjZ0bi9maWxlcy9mL2IvMy9kYXRhc2V0X2ZiMzYxZjIyLTAyMGMtNDk3Mi04NjYxLWYxZjU3ZDFhN2FmYS5kYXQ6cGFydF9MLmdiJyAtLWZpbGVfbmFtZV9tYXBwaW5nX2RvbSAnJyAtLXVzZV9maWxlX25hbWVzX2FzX2lkICd0cnVlJyAtLW91dGRpcl9zaW11bGF0aW9uICdvdXRkaXJfemlwJyAtLW91dGRpcl9nYiAnb3V0ZGlyX2diJyAtLW91dHB1dF9zaW11bGF0aW9uICdvdXRwdXRfemlwLnppcCcgLS1lbnp5bWUgJ2F1dG8nIC0tdG9wb2xvZ3kgJ2NpcmN1bGFyJyAmJiBjcCAnb3V0cHV0X3ppcC56aXAnICcvdG1wL3RtcHkyeXN2NnRuL2pvYl93b3JraW5nX2RpcmVjdG9yeS8wMDAvMTQvb3V0cHV0cy9kYXRhc2V0X2FjYjA2NGQ3LTI3ODEtNDZmZS05OGRmLTcxNmZlZTAyNGM4ZC5kYXQnCiAgICAgIGBgYAogICAgKipFeGl0IENvZGU6KioKCiAgICAqIGBgYGNvbnNvbGUKICAgICAgMQogICAgICBgYGAKICAgICoqU3RhbmRhcmQgRXJyb3I6KioKCiAgICAqIGBgYGNvbnNvbGUKICAgICAgCiAgICAgIGFzc2VtYmx5OiAgIDAlfCAgICAgICAgICB8IDAvNSBbMDA6MDA8PywgP2l0L3MsIG5vdz1Ob25lXVRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICAgICAgICBGaWxlICIvaG9tZS9ya2hhbGVkL2dhbGF4eXRvb2xzL3Rvb2xzL2Nsb25pbmdfc2ltdWxhdGlvbi9jbG9uaW5nX3NpbXVsYXRpb24ucHkiLCBsaW5lIDE3MSwgaW4gPG1vZHVsZT4KICAgICAgICAgIGNsb25pbmdfc2ltdWxhdGlvbigKICAgICAgICAgIH5+fn5+fn5+fn5+fn5+fn5+fl4KICAgICAgICAgICAgICBhcmdzLnBhcnRzX2ZpbGVzLCBhcmdzLmRvbWVzdGljYXRlZF9zZXEsCiAgICAgICAgICAgICAgXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXgogICAgICAgICAgLi4uPDMgbGluZXM+Li4uCiAgICAgICAgICAgICAgYXJncy5vdXRwdXRfc2ltdWxhdGlvbiwgYXJncy5lbnp5bWUsIGFyZ3Mub3V0ZGlyX2diCiAgICAgICAgICAgICAgXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eCiAgICAgICAgICApCiAgICAgICAgICBeCiAgICAgICAgRmlsZSAiL2hvbWUvcmtoYWxlZC9nYWxheHl0b29scy90b29scy9jbG9uaW5nX3NpbXVsYXRpb24vY2xvbmluZ19zaW11bGF0aW9uLnB5IiwgbGluZSA5NywgaW4gY2xvbmluZ19zaW11bGF0aW9uCiAgICAgICAgICBzaW11bGF0aW9uID0gYXNzZW1ibHlfcGxhbi5zaW11bGF0ZShzZXF1ZW5jZV9yZXBvc2l0b3J5PXJlcG9zaXRvcnkpCiAgICAgICAgRmlsZSAiL2hvbWUvcmtoYWxlZC9taW5pY29uZGEzL2VudnMvbXVsbGVkLXYxLTZjMmI5ZWJiNDc1YTM3YmQwZDljYTc4NTc0NzRlODU3NDcxOWU1NDZkZTg4MjgxMGY3ODI4ZmU1OTkzYThhZGYvbGliL3B5dGhvbjMuMTMvc2l0ZS1wYWNrYWdlcy9kbmFjYXVsZHJvbi9Bc3NlbWJseVBsYW4vQXNzZW1ibHlQbGFuLnB5IiwgbGluZSAyNTEsIGluIHNpbXVsYXRlCiAgICAgICAgICBzaW11bGF0aW9uX3Jlc3VsdCA9IGFzc2VtYmx5LnNpbXVsYXRlKHNlcXVlbmNlX3JlcG9zaXRvcnkpCiAgICAgICAgRmlsZSAiL2hvbWUvcmtoYWxlZC9taW5pY29uZGEzL2VudnMvbXVsbGVkLXYxLTZjMmI5ZWJiNDc1YTM3YmQwZDljYTc4NTc0NzRlODU3NDcxOWU1NDZkZTg4MjgxMGY3ODI4ZmU1OTkzYThhZGYvbGliL3B5dGhvbjMuMTMvc2l0ZS1wYWNrYWdlcy9kbmFjYXVsZHJvbi9Bc3NlbWJseS9idWlsdGluX2Fzc2VtYmx5X2NsYXNzZXMvVHlwZTJzUmVzdHJpY3Rpb25Bc3NlbWJseS5weSIsIGxpbmUgMTgxLCBpbiBzaW11bGF0ZQogICAgICAgICAgcmVjb3JkcyA9IHNlcXVlbmNlX3JlcG9zaXRvcnkuZ2V0X3JlY29yZHMoc2VsZi5wYXJ0cykKICAgICAgICBGaWxlICIvaG9tZS9ya2hhbGVkL21pbmljb25kYTMvZW52cy9tdWxsZWQtdjEtNmMyYjllYmI0NzVhMzdiZDBkOWNhNzg1NzQ3NGU4NTc0NzE5ZTU0NmRlODgyODEwZjc4MjhmZTU5OTNhOGFkZi9saWIvcHl0aG9uMy4xMy9zaXRlLXBhY2thZ2VzL2RuYWNhdWxkcm9uL1NlcXVlbmNlUmVwb3NpdG9yeS5weSIsIGxpbmUgMTIwLCBpbiBnZXRfcmVjb3JkcwogICAgICAgICAgcmFpc2UgTm90SW5SZXBvc2l0b3J5RXJyb3Iobm90X2luX3JlcG9zaXRvcnksIHJlcG9zaXRvcnk9c2VsZikKICAgICAgZG5hY2F1bGRyb24uU2VxdWVuY2VSZXBvc2l0b3J5Lk5vdEluUmVwb3NpdG9yeUVycm9yOiBQYXJ0cyBub3QgZm91bmQgaW4gcmVwbzogcGFydDEsIHBhcnQyLCBwYXJ0MywgcGFydDQsIHBhcnQ1LCBwYXJ0NgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgIGBgYAogICAgKipTdGFuZGFyZCBPdXRwdXQ6KioKCiAgICAqIGBgYGNvbnNvbGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxICAgICAgIDIgICAgICAgMyAgICAgICA0ICAgICAgIDUgICAgICAgNgogICAgICAwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgIElEICAgICAgICAgICAgICAgICBwYXJ0MSAgIHBhcnQyICAgcGFydDMgICBwYXJ0NCAgIHBhcnQ1ICAgcGFydDYKICAgICAgY29uc3RydWN0XzMgIGNvbnN0cnVjdF8xICBwYXJ0X0wgIHBhcnRfSiAgcGFydF9LICAgICBOYU4gICAgIE5hTgogICAgICBjb25zdHJ1Y3RfNCAgY29uc3RydWN0XzIgIHBhcnRfTCAgcGFydF9KICBwYXJ0X0sgICAgIE5hTiAgICAgTmFOCiAgICAgIGNvbnN0cnVjdF8xICAgICAgIHBhcnRfQSAgcGFydF9CICBwYXJ0X0MgIHBhcnRfRCAgcGFydF9FICBwYXJ0X0YKICAgICAgY29uc3RydWN0XzIgICAgICAgcGFydF9BICBwYXJ0X0cgIHBhcnRfSCAgcGFydF9JICBwYXJ0X0YgICAgIE5hTgogICAgICBTaW11bGF0aW5nIGFzc2VtYmx5IHBsYW4gYXNzYW1ibHkuLi4KCiAgICAgIGBgYAogICAgKipUcmFjZWJhY2s6KioKCiAgICAqIGBgYGNvbnNvbGUKICAgICAgCiAgICAgIGBgYAogICAqKkpvYiBQYXJhbWV0ZXJzOioqCgogICAqICAgfCBKb2IgcGFyYW1ldGVyIHwgUGFyYW1ldGVyIHZhbHVlIHwKICAgICAgIHwgLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0tLSB8CiAgICAgICB8IGdlbmJhbmtcX2ZpbGVzIHwgYCB7InZhbHVlcyI6IFt7ImlkIjogMSwgInNyYyI6ICJoZGNhIn1dfSBgIHwKICAgICAgIHwgZG9tZXN0aWNhdGVkXF9pbnB1dCB8IGAgTm9uZSBgIHwKICAgICAgIHwgYXNzZW1ibHlcX3BsYW5cX25hbWUgfCBgICJUeXBlMnNSZXN0cmljdGlvbkFzc2VtYmx5IiBgIHwKICAgICAgIHwgdG9wb2xvZ3kgfCBgICJjaXJjdWxhciIgYCB8CiAgICAgICB8IGFkdiB8IGAgeyJlbnp5bWUiOiAiYXV0byIsICJ1c2VfZmlsZV9uYW1lc19hc19pZHMiOiB0cnVlfSBgIHwKICAgICAgIHwgY2hyb21JbmZvIHwgYCAiL3RtcC90bXB5MnlzdjZ0bi9nYWxheHktZGV2L3Rvb2wtZGF0YS9zaGFyZWQvdWNzYy9jaHJvbS8/LmxlbiIgYCB8CiAgICAgICB8IGRia2V5IHwgYCAiPyIgYCB8CiAgICAgICB8IFxfXF9pbnB1dFxfZXh0IHwgYCAiaW5wdXQiIGAgfAoKCgogICAgPC9kaXY+PC9kZXRhaWxzPgoKCjwvZGV0YWlscz4KPGRldGFpbHMgPjxzdW1tYXJ5PlBhc3NlZCBUZXN0czwvc3VtbWFyeT4KCiogPGRldGFpbHMgY2xhc3M9InJjb3JuZXJzIGxpZ2h0LWdyZWVuIj48c3VtbWFyeSBjbGFzcz0ibGlnaHQtZ3JlZW4iPiYjOTk4OTsgY2xvbmluZ19zaW11bGF0aW9uIChUZXN0ICMgMik8L3N1bW1hcnk+PGRpdiBjbGFzcz0icGFkZGVkIj4KCiAgICAqKkNvbW1hbmQgTGluZToqKgoKICAgICogYGBgY29uc29sZQogICAgICBta2RpciAnb3V0ZGlyX3ppcCcgJiYgbWtkaXIgJ291dGRpcl9nYicgJiYgY3AgJy90bXAvdG1weTJ5c3Y2dG4vZmlsZXMvNi9lL2IvZGF0YXNldF82ZWIyMGRlMy02NjJjLTQ0MjgtOTA3Zi0yOWNiZTBhNWNjMjAuZGF0JyAnYXNzZW1ibHlfY3N2LmNzdicgJiYgcHl0aG9uICcvaG9tZS9ya2hhbGVkL2dhbGF4eXRvb2xzL3Rvb2xzL2Nsb25pbmdfc2ltdWxhdGlvbi9jbG9uaW5nX3NpbXVsYXRpb24ucHknIC0tcGFydHNfZmlsZXMgJy90bXAvdG1weTJ5c3Y2dG4vZmlsZXMvYi82L2YvZGF0YXNldF9iNmZlMTQxZC1mMjdkLTQ3NWQtOTVmZC01MDFlMDMyZjBjM2IuZGF0JyAtLWRvbWVzdGljYXRlZF9zZXEgJycgLS1hc3NlbWJseV9jc3YgJ2Fzc2VtYmx5X2Nzdi5jc3YnIC0tYXNzZW1ibHlfcGxhbl9uYW1lICdHaWJzb25Bc3NlbWJseScgLS1maWxlX25hbWVfbWFwcGluZyAnL3RtcC90bXB5MnlzdjZ0bi9maWxlcy9iLzYvZi9kYXRhc2V0X2I2ZmUxNDFkLWYyN2QtNDc1ZC05NWZkLTUwMWUwMzJmMGMzYi5kYXQ6Z2lic29uX3NlcXVlbmNlcy5mYScgLS1maWxlX25hbWVfbWFwcGluZ19kb20gJycgLS11c2VfZmlsZV9uYW1lc19hc19pZCAndHJ1ZScgLS1vdXRkaXJfc2ltdWxhdGlvbiAnb3V0ZGlyX3ppcCcgLS1vdXRkaXJfZ2IgJ291dGRpcl9nYicgLS1vdXRwdXRfc2ltdWxhdGlvbiAnb3V0cHV0X3ppcC56aXAnIC0tZW56eW1lICdhdXRvJyAtLXRvcG9sb2d5ICdjaXJjdWxhcicgJiYgY3AgJ291dHB1dF96aXAuemlwJyAnL3RtcC90bXB5MnlzdjZ0bi9qb2Jfd29ya2luZ19kaXJlY3RvcnkvMDAwLzE3L291dHB1dHMvZGF0YXNldF80MWQ4NTNiNC1hZGI2LTQ2MDUtYmJhZi1kNzE3OGI5NjJkOTIuZGF0JwogICAgICBgYGAKICAgICoqRXhpdCBDb2RlOioqCgogICAgKiBgYGBjb25zb2xlCiAgICAgIDAKICAgICAgYGBgCiAgICAqKlN0YW5kYXJkIEVycm9yOioqCgogICAgKiBgYGBjb25zb2xlCiAgICAgIAogICAgICBhc3NlbWJseTogICAwJXwgICAgICAgICAgfCAwLzUgWzAwOjAwPD8sID9pdC9zLCBub3c9Tm9uZV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCgogICAgICBhc3NlbWJseTogICAwJXwgICAgICAgICAgfCAwLzUgWzAwOjAwPD8sID9pdC9zLCBub3c9Tm9uZV0KICAgICAgYXNzZW1ibHk6ICA0MCV84paI4paI4paI4paIICAgICAgfCAyLzUgWzAwOjAwPDAwOjAwLCAgNC4zMml0L3MsIG5vdz1Ob25lXQogICAgICBhc3NlbWJseTogIDYwJXzilojilojilojilojilojiloggICAgfCAzLzUgWzAwOjAwPDAwOjAwLCAgNC4yNGl0L3MsIG5vdz1Ob25lXQogICAgICBhc3NlbWJseTogIDgwJXzilojilojilojilojilojilojilojiloggIHwgNC81IFswMDowMDwwMDowMCwgIDQuMzVpdC9zLCBub3c9Tm9uZV0KICAgICAgYXNzZW1ibHk6IDEwMCV84paI4paI4paI4paI4paI4paI4paI4paI4paI4paIfCA1LzUgWzAwOjAxPDAwOjAwLCAgMy42M2l0L3MsIG5vdz1Ob25lXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICBgYGAKICAgICoqU3RhbmRhcmQgT3V0cHV0OioqCgogICAgKiBgYGBjb25zb2xlCiAgICAgICAgICAgICAgICAgICAgICAgIDEgICAgICAgMiAgICAgICAzICAgICAgICA0ICAgICAgICA1CiAgICAgIDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgIGNvbnN0cnVjdCAgICAgcGFydHMgICAgIE5hTiAgICAgTmFOICAgICAgTmFOICAgICAgTmFOCiAgICAgIGNvbnN0cnVjdF8xICBGcmFnXzEgIEZyYWdfMiAgRnJhZ18zICAgRnJhZ180ICAgRnJhZ181CiAgICAgIGNvbnN0cnVjdF8yICBGcmFnXzEgIEZyYWdfMiAgRnJhZ18zICBGcmFnXzRiICAgRnJhZ181CiAgICAgIGNvbnN0cnVjdF8zICBGcmFnXzEgIEZyYWdfMiAgRnJhZ18zICBGcmFnXzRjICBGcmFnXzViCiAgICAgIGNvbnN0cnVjdF80ICBGcmFnXzEgIEZyYWdfMiAgRnJhZ18zICAgRnJhZ180ICAgICAgTmFOCiAgICAgIGNvbnN0cnVjdF81ICBGcmFnXzEgIEZyYWdfMiAgRnJhZ18zICAgRnJhZ180ICBGcmFnXzRiCiAgICAgIFNpbXVsYXRpbmcgYXNzZW1ibHkgcGxhbiBhc3NhbWJseS4uLgogICAgICB7J2NhbmNlbGxlZF9hc3NlbWJsaWVzJzogMCwgJ2Vycm9yZWRfYXNzZW1ibGllcyc6IDIsICd2YWxpZF9hc3NlbWJsaWVzJzogM30KICAgICAgR2VuZXJhdGluZyBhc3NlbWJsaWVzIHJlcG9ydHMuLi4KCiAgICAgIGBgYAogICAgKipUcmFjZWJhY2s6KioKCiAgICAqIGBgYGNvbnNvbGUKICAgICAgCiAgICAgIGBgYAogICAqKkpvYiBQYXJhbWV0ZXJzOioqCgogICAqICAgfCBKb2IgcGFyYW1ldGVyIHwgUGFyYW1ldGVyIHZhbHVlIHwKICAgICAgIHwgLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0tLSB8CiAgICAgICB8IGdlbmJhbmtcX2ZpbGVzIHwgYCB7InZhbHVlcyI6IFt7ImlkIjogMywgInNyYyI6ICJoZGNhIn1dfSBgIHwKICAgICAgIHwgZG9tZXN0aWNhdGVkXF9pbnB1dCB8IGAgTm9uZSBgIHwKICAgICAgIHwgYXNzZW1ibHlcX3BsYW5cX25hbWUgfCBgICJHaWJzb25Bc3NlbWJseSIgYCB8CiAgICAgICB8IHRvcG9sb2d5IHwgYCAiY2lyY3VsYXIiIGAgfAogICAgICAgfCBhZHYgfCBgIHsiZW56eW1lIjogImF1dG8iLCAidXNlX2ZpbGVfbmFtZXNfYXNfaWRzIjogdHJ1ZX0gYCB8CiAgICAgICB8IGNocm9tSW5mbyB8IGAgIi90bXAvdG1weTJ5c3Y2dG4vZ2FsYXh5LWRldi90b29sLWRhdGEvc2hhcmVkL3Vjc2MvY2hyb20vPy5sZW4iIGAgfAogICAgICAgfCBkYmtleSB8IGAgIj8iIGAgfAogICAgICAgfCBcX1xfaW5wdXRcX2V4dCB8IGAgImlucHV0IiBgIHwKCgoKICAgIDwvZGl2PjwvZGV0YWlscz4KCgoqIDxkZXRhaWxzIGNsYXNzPSJyY29ybmVycyBsaWdodC1ncmVlbiI+PHN1bW1hcnkgY2xhc3M9ImxpZ2h0LWdyZWVuIj4mIzk5ODk7IGNsb25pbmdfc2ltdWxhdGlvbiAoVGVzdCAjIDMpPC9zdW1tYXJ5PjxkaXYgY2xhc3M9InBhZGRlZCI+CgogICAgKipDb21tYW5kIExpbmU6KioKCiAgICAqIGBgYGNvbnNvbGUKICAgICAgbWtkaXIgJ291dGRpcl96aXAnICYmIG1rZGlyICdvdXRkaXJfZ2InICYmIGNwICcvdG1wL3RtcHkyeXN2NnRuL2ZpbGVzLzQvNi85L2RhdGFzZXRfNDY5ZGYwNDgtMTYwOC00ZTI4LWE4YzMtNTc2NDMzYzcyYzdmLmRhdCcgJ2Fzc2VtYmx5X2Nzdi5jc3YnICYmIHB5dGhvbiAnL2hvbWUvcmtoYWxlZC9nYWxheHl0b29scy90b29scy9jbG9uaW5nX3NpbXVsYXRpb24vY2xvbmluZ19zaW11bGF0aW9uLnB5JyAtLXBhcnRzX2ZpbGVzICcvdG1wL3RtcHkyeXN2NnRuL2ZpbGVzLzEvOC85L2RhdGFzZXRfMTg5NTJjZWYtYzcxNS00Nzc2LTlmNTMtNjkxNTZkYTg5ZDAxLmRhdCwvdG1wL3RtcHkyeXN2NnRuL2ZpbGVzLzgvMS8zL2RhdGFzZXRfODEzMjIwNTYtNjllYi00ZGNkLTg4ZWUtNmNiNzhmZjYxN2RiLmRhdCcgLS1kb21lc3RpY2F0ZWRfc2VxICcnIC0tYXNzZW1ibHlfY3N2ICdhc3NlbWJseV9jc3YuY3N2JyAtLWFzc2VtYmx5X3BsYW5fbmFtZSAnTGlnYXNlQ3ljbGluZ1JlYWN0aW9uQXNzZW1ibHknIC0tZmlsZV9uYW1lX21hcHBpbmcgJy90bXAvdG1weTJ5c3Y2dG4vZmlsZXMvMS84LzkvZGF0YXNldF8xODk1MmNlZi1jNzE1LTQ3NzYtOWY1My02OTE1NmRhODlkMDEuZGF0OlJGUF9HRlBfcGxhc21pZF9CT3MuZmEsL3RtcC90bXB5MnlzdjZ0bi9maWxlcy84LzEvMy9kYXRhc2V0XzgxMzIyMDU2LTY5ZWItNGRjZC04OGVlLTZjYjc4ZmY2MTdkYi5kYXQ6UkZQX0dGUF9wbGFzbWlkX3BhcnRzLmZhJyAtLWZpbGVfbmFtZV9tYXBwaW5nX2RvbSAnJyAtLXVzZV9maWxlX25hbWVzX2FzX2lkICd0cnVlJyAtLW91dGRpcl9zaW11bGF0aW9uICdvdXRkaXJfemlwJyAtLW91dGRpcl9nYiAnb3V0ZGlyX2diJyAtLW91dHB1dF9zaW11bGF0aW9uICdvdXRwdXRfemlwLnppcCcgLS1lbnp5bWUgJ2F1dG8nIC0tdG9wb2xvZ3kgJ2NpcmN1bGFyJyAmJiBjcCAnb3V0cHV0X3ppcC56aXAnICcvdG1wL3RtcHkyeXN2NnRuL2pvYl93b3JraW5nX2RpcmVjdG9yeS8wMDAvMjEvb3V0cHV0cy9kYXRhc2V0X2QyZGY2MTkwLTk0NjItNDFhYS05MmQyLWQ0YTVjMWE2MDVkMy5kYXQnCiAgICAgIGBgYAogICAgKipFeGl0IENvZGU6KioKCiAgICAqIGBgYGNvbnNvbGUKICAgICAgMAogICAgICBgYGAKICAgICoqU3RhbmRhcmQgRXJyb3I6KioKCiAgICAqIGBgYGNvbnNvbGUKICAgICAgCiAgICAgIGFzc2VtYmx5OiAgIDAlfCAgICAgICAgICB8IDAvMiBbMDA6MDA8PywgP2l0L3MsIG5vdz1Ob25lXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKCiAgICAgIGFzc2VtYmx5OiAgIDAlfCAgICAgICAgICB8IDAvMiBbMDA6MDA8PywgP2l0L3MsIG5vdz1Ob25lXQogICAgICBhc3NlbWJseTogMTAwJXzilojilojilojilojilojilojilojilojilojiloh8IDIvMiBbMDA6MDA8MDA6MDAsICAyLjI3aXQvcywgbm93PU5vbmVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgIGBgYAogICAgKipTdGFuZGFyZCBPdXRwdXQ6KioKCiAgICAqIGBgYGNvbnNvbGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMSAgIC4uLiAgICAgICAgICAgMTQKICAgICAgMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLiAgICAgICAgICAgICAKICAgICAgQ29uc3RydWN0MSAgICAgICAgIFJGUF9HRlBfQk9fMTAyMzIgIC4uLiAgcDdfYmFja2JvbmUKICAgICAgQ29uc3RydWN0Ml9mbGF3ZWQgIFJGUF9HRlBfQk9fMTAyMzIgIC4uLiAgICAgICAgICBOYU4KCiAgICAgIFsyIHJvd3MgeCAxNCBjb2x1bW5zXQogICAgICBTaW11bGF0aW5nIGFzc2VtYmx5IHBsYW4gYXNzYW1ibHkuLi4KICAgICAgeydjYW5jZWxsZWRfYXNzZW1ibGllcyc6IDAsICdlcnJvcmVkX2Fzc2VtYmxpZXMnOiAyLCAndmFsaWRfYXNzZW1ibGllcyc6IDB9CiAgICAgIEdlbmVyYXRpbmcgYXNzZW1ibGllcyByZXBvcnRzLi4uCgogICAgICBgYGAKICAgICoqVHJhY2ViYWNrOioqCgogICAgKiBgYGBjb25zb2xlCiAgICAgIAogICAgICBgYGAKICAgKipKb2IgUGFyYW1ldGVyczoqKgoKICAgKiAgIHwgSm9iIHBhcmFtZXRlciB8IFBhcmFtZXRlciB2YWx1ZSB8CiAgICAgICB8IC0tLS0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0gfAogICAgICAgfCBnZW5iYW5rXF9maWxlcyB8IGAgeyJ2YWx1ZXMiOiBbeyJpZCI6IDUsICJzcmMiOiAiaGRjYSJ9XX0gYCB8CiAgICAgICB8IGRvbWVzdGljYXRlZFxfaW5wdXQgfCBgIE5vbmUgYCB8CiAgICAgICB8IGFzc2VtYmx5XF9wbGFuXF9uYW1lIHwgYCAiTGlnYXNlQ3ljbGluZ1JlYWN0aW9uQXNzZW1ibHkiIGAgfAogICAgICAgfCB0b3BvbG9neSB8IGAgImNpcmN1bGFyIiBgIHwKICAgICAgIHwgYWR2IHwgYCB7ImVuenltZSI6ICJhdXRvIiwgInVzZV9maWxlX25hbWVzX2FzX2lkcyI6IHRydWV9IGAgfAogICAgICAgfCBjaHJvbUluZm8gfCBgICIvdG1wL3RtcHkyeXN2NnRuL2dhbGF4eS1kZXYvdG9vbC1kYXRhL3NoYXJlZC91Y3NjL2Nocm9tLz8ubGVuIiBgIHwKICAgICAgIHwgZGJrZXkgfCBgICI/IiBgIHwKICAgICAgIHwgXF9cX2lucHV0XF9leHQgfCBgICJpbnB1dCIgYCB8CgoKCiAgICA8L2Rpdj48L2RldGFpbHM+CgoKKiA8ZGV0YWlscyBjbGFzcz0icmNvcm5lcnMgbGlnaHQtZ3JlZW4iPjxzdW1tYXJ5IGNsYXNzPSJsaWdodC1ncmVlbiI+JiM5OTg5OyBjbG9uaW5nX3NpbXVsYXRpb24gKFRlc3QgIyA0KTwvc3VtbWFyeT48ZGl2IGNsYXNzPSJwYWRkZWQiPgoKICAgICoqQ29tbWFuZCBMaW5lOioqCgogICAgKiBgYGBjb25zb2xlCiAgICAgIG1rZGlyICdvdXRkaXJfemlwJyAmJiBta2RpciAnb3V0ZGlyX2diJyAmJiBjcCAnL3RtcC90bXB5MnlzdjZ0bi9maWxlcy8xLzEvYi9kYXRhc2V0XzExYjE5MDgwLWQyMWYtNGEzZS1hNTE2LTc3YmI3ZjFlYjhmZi5kYXQnICdhc3NlbWJseV9jc3YuY3N2JyAmJiBweXRob24gJy9ob21lL3JraGFsZWQvZ2FsYXh5dG9vbHMvdG9vbHMvY2xvbmluZ19zaW11bGF0aW9uL2Nsb25pbmdfc2ltdWxhdGlvbi5weScgLS1wYXJ0c19maWxlcyAnL3RtcC90bXB5MnlzdjZ0bi9maWxlcy9jLzEvMy9kYXRhc2V0X2MxM2MzYmI1LTc0ZjMtNDliNC05NzllLTA4MDY0Y2JjZDk2ZS5kYXQsL3RtcC90bXB5MnlzdjZ0bi9maWxlcy8yLzIvMC9kYXRhc2V0XzIyMGQ4Y2UzLTY1YTItNDg4MC05OTI0LWU0MWY2ODVlMTM4Ni5kYXQsL3RtcC90bXB5MnlzdjZ0bi9maWxlcy8yLzYvNC9kYXRhc2V0XzI2NGQ3ZTk1LTgwN2QtNDVhYS1hZGE3LTI0NGU3ODk2ZGQ5NS5kYXQsL3RtcC90bXB5MnlzdjZ0bi9maWxlcy83L2UvZS9kYXRhc2V0XzdlZWRlODFjLWE3OTYtNDE4OS05NGRmLTgyMjQ1NzYzZTE5Zi5kYXQsL3RtcC90bXB5MnlzdjZ0bi9maWxlcy9jLzkvNS9kYXRhc2V0X2M5NTM3OTM4LWRiMGQtNGQwNy05ZWVlLTJjZmVlYzUwYTkwZC5kYXQnIC0tZG9tZXN0aWNhdGVkX3NlcSAnJyAtLWFzc2VtYmx5X2NzdiAnYXNzZW1ibHlfY3N2LmNzdicgLS1hc3NlbWJseV9wbGFuX25hbWUgJ0JBU0lDQXNzZW1ibHknIC0tZmlsZV9uYW1lX21hcHBpbmcgJy90bXAvdG1weTJ5c3Y2dG4vZmlsZXMvYy8xLzMvZGF0YXNldF9jMTNjM2JiNS03NGYzLTQ5YjQtOTc5ZS0wODA2NGNiY2Q5NmUuZGF0OkdGUC5nYiwvdG1wL3RtcHkyeXN2NnRuL2ZpbGVzLzIvMi8wL2RhdGFzZXRfMjIwZDhjZTMtNjVhMi00ODgwLTk5MjQtZTQxZjY4NWUxMzg2LmRhdDpwMTVBX2thbi5nYiwvdG1wL3RtcHkyeXN2NnRuL2ZpbGVzLzIvNi80L2RhdGFzZXRfMjY0ZDdlOTUtODA3ZC00NWFhLWFkYTctMjQ0ZTc4OTZkZDk1LmRhdDpwcm9tb3Rlci5nYiwvdG1wL3RtcHkyeXN2NnRuL2ZpbGVzLzcvZS9lL2RhdGFzZXRfN2VlZGU4MWMtYTc5Ni00MTg5LTk0ZGYtODIyNDU3NjNlMTlmLmRhdDpSRlAuZ2IsL3RtcC90bXB5MnlzdjZ0bi9maWxlcy9jLzkvNS9kYXRhc2V0X2M5NTM3OTM4LWRiMGQtNGQwNy05ZWVlLTJjZmVlYzUwYTkwZC5kYXQ6b2xpZ29zLmZhJyAtLWZpbGVfbmFtZV9tYXBwaW5nX2RvbSAnJyAtLXVzZV9maWxlX25hbWVzX2FzX2lkICd0cnVlJyAtLW91dGRpcl9zaW11bGF0aW9uICdvdXRkaXJfemlwJyAtLW91dGRpcl9nYiAnb3V0ZGlyX2diJyAtLW91dHB1dF9zaW11bGF0aW9uICdvdXRwdXRfemlwLnppcCcgLS1lbnp5bWUgJ2F1dG8nIC0tdG9wb2xvZ3kgJ2NpcmN1bGFyJyAmJiBjcCAnb3V0cHV0X3ppcC56aXAnICcvdG1wL3RtcHkyeXN2NnRuL2pvYl93b3JraW5nX2RpcmVjdG9yeS8wMDAvMjgvb3V0cHV0cy9kYXRhc2V0X2IwNTVlZGM5LWVhNzItNDZjYS04OTcxLTM1MmM0NmRiMzg3ZS5kYXQnCiAgICAgIGBgYAogICAgKipFeGl0IENvZGU6KioKCiAgICAqIGBgYGNvbnNvbGUKICAgICAgMAogICAgICBgYGAKICAgICoqU3RhbmRhcmQgRXJyb3I6KioKCiAgICAqIGBgYGNvbnNvbGUKICAgICAgCiAgICAgIGFzc2VtYmx5OiAgIDAlfCAgICAgICAgICB8IDAvMTAgWzAwOjAwPD8sID9pdC9zLCBub3c9Tm9uZV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAoKICAgICAgYXNzZW1ibHk6ICAgMCV8ICAgICAgICAgIHwgMC84IFswMDowMDw/LCA/aXQvcywgbm93PU5vbmVdCiAgICAgIGFzc2VtYmx5OiAgNjIlfOKWiOKWiOKWiOKWiOKWiOKWiOKWjiAgIHwgNS84IFswMDowMDwwMDowMCwgNDcuNTRpdC9zLCBub3c9Tm9uZV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgYGBgCiAgICAqKlN0YW5kYXJkIE91dHB1dDoqKgoKICAgICogYGBgY29uc29sZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEgICAgICAgICAgICAgICAgIDIgICAgICAgICAzICAgLi4uICAgICAxMCAgICAgICAgMTEgICAgIDEyCiAgICAgIDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4gICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgTDJSQlMtMVAgICAgIEwyUkJTLTFQX2Z3ZCAgTDJSQlMtMVBfYWRhcHRlciAgICAgICBOYU4gIC4uLiAgICBOYU4gICAgICAgTmFOICAgIE5hTgogICAgICBMTUEtUyAgICAgICAgICAgTE1BLVNfZndkICAgICBMTUEtU19hZGFwdGVyICAgICAgIE5hTiAgLi4uICAgIE5hTiAgICAgICBOYU4gICAgTmFOCiAgICAgIEwxUkJTLXhTICAgICBMMVJCUy14U19md2QgIEwxUkJTLXhTX2FkYXB0ZXIgICAgICAgTmFOICAuLi4gICAgTmFOICAgICAgIE5hTiAgICBOYU4KICAgICAgTDFSQlMtMVAgICAgIEwxUkJTLTFQX2Z3ZCAgTDFSQlMtMVBfYWRhcHRlciAgICAgICBOYU4gIC4uLiAgICBOYU4gICAgICAgTmFOICAgIE5hTgogICAgICBMMlJCUy14UyAgICAgTDJSQlMteFNfZndkICBMMlJCUy14U19hZGFwdGVyICAgICAgIE5hTiAgLi4uICAgIE5hTiAgICAgICBOYU4gICAgTmFOCiAgICAgIExNQS1QICAgICAgICAgICBMTUEtUF9md2QgICAgIExNQS1QX2FkYXB0ZXIgICAgICAgTmFOICAuLi4gICAgTmFOICAgICAgIE5hTiAgICBOYU4KICAgICAgTE1CLVMgICAgICAgICAgIExNQi1TX2Z3ZCAgICAgTE1CLVNfYWRhcHRlciAgICAgICBOYU4gIC4uLiAgICBOYU4gICAgICAgTmFOICAgIE5hTgogICAgICBMTUItUCAgICAgICAgICAgTE1CLVBfZndkICAgICBMTUItUF9hZGFwdGVyICAgICAgIE5hTiAgLi4uICAgIE5hTiAgICAgICBOYU4gICAgTmFOCiAgICAgIGFzbV9HRlBfUkZQICAgICAgICAgTE1BLVAgICAgICAgICAgcHJvbW90ZXIgIEwxUkJTLXhTICAuLi4gIExNQi1QICBwMTVBX2thbiAgTE1BLVMKICAgICAgYXNtX1JGUF9HRlAgICAgICAgICBMTUEtUCAgICAgICAgICBwcm9tb3RlciAgTDFSQlMteFMgIC4uLiAgTE1CLVAgIHAxNUFfa2FuICBMTUEtUwoKICAgICAgWzEwIHJvd3MgeCAxMiBjb2x1bW5zXQogICAgICBTaW11bGF0aW5nIGFzc2VtYmx5IHBsYW4gYXNzYW1ibHkuLi4KICAgICAgeydjYW5jZWxsZWRfYXNzZW1ibGllcyc6IDIsICdlcnJvcmVkX2Fzc2VtYmxpZXMnOiA4LCAndmFsaWRfYXNzZW1ibGllcyc6IDB9CiAgICAgIEdlbmVyYXRpbmcgYXNzZW1ibGllcyByZXBvcnRzLi4uCgogICAgICBgYGAKICAgICoqVHJhY2ViYWNrOioqCgogICAgKiBgYGBjb25zb2xlCiAgICAgIAogICAgICBgYGAKICAgKipKb2IgUGFyYW1ldGVyczoqKgoKICAgKiAgIHwgSm9iIHBhcmFtZXRlciB8IFBhcmFtZXRlciB2YWx1ZSB8CiAgICAgICB8IC0tLS0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0gfAogICAgICAgfCBnZW5iYW5rXF9maWxlcyB8IGAgeyJ2YWx1ZXMiOiBbeyJpZCI6IDcsICJzcmMiOiAiaGRjYSJ9XX0gYCB8CiAgICAgICB8IGRvbWVzdGljYXRlZFxfaW5wdXQgfCBgIE5vbmUgYCB8CiAgICAgICB8IGFzc2VtYmx5XF9wbGFuXF9uYW1lIHwgYCAiQkFTSUNBc3NlbWJseSIgYCB8CiAgICAgICB8IHRvcG9sb2d5IHwgYCAiY2lyY3VsYXIiIGAgfAogICAgICAgfCBhZHYgfCBgIHsiZW56eW1lIjogImF1dG8iLCAidXNlX2ZpbGVfbmFtZXNfYXNfaWRzIjogdHJ1ZX0gYCB8CiAgICAgICB8IGNocm9tSW5mbyB8IGAgIi90bXAvdG1weTJ5c3Y2dG4vZ2FsYXh5LWRldi90b29sLWRhdGEvc2hhcmVkL3Vjc2MvY2hyb20vPy5sZW4iIGAgfAogICAgICAgfCBkYmtleSB8IGAgIj8iIGAgfAogICAgICAgfCBcX1xfaW5wdXRcX2V4dCB8IGAgImlucHV0IiBgIHwKCgoKICAgIDwvZGl2PjwvZGV0YWlscz4KCgoqIDxkZXRhaWxzIGNsYXNzPSJyY29ybmVycyBsaWdodC1ncmVlbiI+PHN1bW1hcnkgY2xhc3M9ImxpZ2h0LWdyZWVuIj4mIzk5ODk7IGNsb25pbmdfc2ltdWxhdGlvbiAoVGVzdCAjIDUpPC9zdW1tYXJ5PjxkaXYgY2xhc3M9InBhZGRlZCI+CgogICAgKipDb21tYW5kIExpbmU6KioKCiAgICAqIGBgYGNvbnNvbGUKICAgICAgbWtkaXIgJ291dGRpcl96aXAnICYmIG1rZGlyICdvdXRkaXJfZ2InICYmIGNwICcvdG1wL3RtcHkyeXN2NnRuL2ZpbGVzLzUvNi9lL2RhdGFzZXRfNTZlODgwYmMtMWY5My00OTVmLWJmYTgtMDg3M2NiODE4MmE5LmRhdCcgJ2Fzc2VtYmx5X2Nzdi5jc3YnICYmIHB5dGhvbiAnL2hvbWUvcmtoYWxlZC9nYWxheHl0b29scy90b29scy9jbG9uaW5nX3NpbXVsYXRpb24vY2xvbmluZ19zaW11bGF0aW9uLnB5JyAtLXBhcnRzX2ZpbGVzICcvdG1wL3RtcHkyeXN2NnRuL2ZpbGVzL2QvZC9lL2RhdGFzZXRfZGRlZDc4ZTYtNWQzYS00NjZkLWEzNzgtNTc5M2M4MDFmMzJjLmRhdCwvdG1wL3RtcHkyeXN2NnRuL2ZpbGVzLzIvYS8wL2RhdGFzZXRfMmEwN2E5OTItNjUyNy00YWM3LTljNDktN2ZkOWFjYmRlYTU3LmRhdCwvdG1wL3RtcHkyeXN2NnRuL2ZpbGVzLzEvMi9mL2RhdGFzZXRfMTJmYWEzZDktYzk1ZC00YzM0LTlkZjctNmM1MzE3NGQ0Mjc2LmRhdCwvdG1wL3RtcHkyeXN2NnRuL2ZpbGVzLzUvOC8xL2RhdGFzZXRfNTgxYTRjNTUtMGNlMi00YzNiLWEzODAtNzU2NDQ4ODcxZjMyLmRhdCwvdG1wL3RtcHkyeXN2NnRuL2ZpbGVzL2EvYi9mL2RhdGFzZXRfYWJmMjU1ZjctOTg0MS00OTkxLTliNjUtNTk4ZGYzNjhmZjg1LmRhdCcgLS1kb21lc3RpY2F0ZWRfc2VxICcnIC0tYXNzZW1ibHlfY3N2ICdhc3NlbWJseV9jc3YuY3N2JyAtLWFzc2VtYmx5X3BsYW5fbmFtZSAnQmlvQnJpY2tTdGFuZGFyZEFzc2VtYmx5JyAtLWZpbGVfbmFtZV9tYXBwaW5nICcvdG1wL3RtcHkyeXN2NnRuL2ZpbGVzL2QvZC9lL2RhdGFzZXRfZGRlZDc4ZTYtNWQzYS00NjZkLWEzNzgtNTc5M2M4MDFmMzJjLmRhdDpCQmFfRTAwNDBfR0ZQLmdiLC90bXAvdG1weTJ5c3Y2dG4vZmlsZXMvMi9hLzAvZGF0YXNldF8yYTA3YTk5Mi02NTI3LTRhYzctOWM0OS03ZmQ5YWNiZGVhNTcuZGF0OkJCYV9KMjMxMTlfcHJvbS5nYiwvdG1wL3RtcHkyeXN2NnRuL2ZpbGVzLzEvMi9mL2RhdGFzZXRfMTJmYWEzZDktYzk1ZC00YzM0LTlkZjctNmM1MzE3NGQ0Mjc2LmRhdDpCQmFfSjIzMTE5X3Byb21fZmxhd2VkLmdiLC90bXAvdG1weTJ5c3Y2dG4vZmlsZXMvNS84LzEvZGF0YXNldF81ODFhNGM1NS0wY2UyLTRjM2ItYTM4MC03NTY0NDg4NzFmMzIuZGF0OkJCYV9KNjEwNDhfdGVybS5nYiwvdG1wL3RtcHkyeXN2NnRuL2ZpbGVzL2EvYi9mL2RhdGFzZXRfYWJmMjU1ZjctOTg0MS00OTkxLTliNjUtNTk4ZGYzNjhmZjg1LmRhdDpCQmFfSzYxMTA5NF9iYXIuZ2InIC0tZmlsZV9uYW1lX21hcHBpbmdfZG9tICcnIC0tdXNlX2ZpbGVfbmFtZXNfYXNfaWQgJ3RydWUnIC0tb3V0ZGlyX3NpbXVsYXRpb24gJ291dGRpcl96aXAnIC0tb3V0ZGlyX2diICdvdXRkaXJfZ2InIC0tb3V0cHV0X3NpbXVsYXRpb24gJ291dHB1dF96aXAuemlwJyAtLWVuenltZSAnYXV0bycgLS10b3BvbG9neSAnY2lyY3VsYXInICYmIGNwICdvdXRwdXRfemlwLnppcCcgJy90bXAvdG1weTJ5c3Y2dG4vam9iX3dvcmtpbmdfZGlyZWN0b3J5LzAwMC8zNS9vdXRwdXRzL2RhdGFzZXRfZDVlMmFmZmQtOTIyOC00YjIxLThlODktMzZhNDNjNTlhYjM3LmRhdCcgJiYgZWNobyBERUJVRyAmJiBscyAnb3V0ZGlyX2diJwogICAgICBgYGAKICAgICoqRXhpdCBDb2RlOioqCgogICAgKiBgYGBjb25zb2xlCiAgICAgIDAKICAgICAgYGBgCiAgICAqKlN0YW5kYXJkIEVycm9yOioqCgogICAgKiBgYGBjb25zb2xlCiAgICAgIAogICAgICBhc3NlbWJseTogICAwJXwgICAgICAgICAgfCAwLzMgWzAwOjAwPD8sID9pdC9zLCBub3c9Tm9uZV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCgogICAgICBhc3NlbWJseTogICAwJXwgICAgICAgICAgfCAwLzMgWzAwOjAwPD8sID9pdC9zLCBub3c9Tm9uZV0KICAgICAgYXNzZW1ibHk6ICA2NyV84paI4paI4paI4paI4paI4paI4paLICAgfCAyLzMgWzAwOjAxPDAwOjAwLCAgMS45OGl0L3MsIG5vdz1Ob25lXQogICAgICBhc3NlbWJseTogMTAwJXzilojilojilojilojilojilojilojilojilojiloh8IDMvMyBbMDA6MDE8MDA6MDAsICAxLjYwaXQvcywgbm93PU5vbmVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgIGBgYAogICAgKipTdGFuZGFyZCBPdXRwdXQ6KioKCiAgICAqIGBgYGNvbnNvbGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEgICAgICAgICAgICAgICAgMgogICAgICAwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgIGNvbnN0cnVjdCAgICAgICAgICAgICAgICAgIHBhcnRzICAgICAgICAgICAgICBOYU4KICAgICAgQzFfcHJvbV9iYXJjb2RlICBCQmFfSzYxMTA5NF9iYXIgIEJCYV9KMjMxMTlfcHJvbQogICAgICBDMl9nZnBfdGVybSAgICAgICAgQkJhX0UwMDQwX0dGUCAgQkJhX0o2MTA0OF90ZXJtCiAgICAgIEMzX2ZpbmFsICAgICAgICAgQzFfcHJvbV9iYXJjb2RlICAgICAgQzJfZ2ZwX3Rlcm0KICAgICAgU2ltdWxhdGluZyBhc3NlbWJseSBwbGFuIGFzc2FtYmx5Li4uCiAgICAgIHsnY2FuY2VsbGVkX2Fzc2VtYmxpZXMnOiAwLCAnZXJyb3JlZF9hc3NlbWJsaWVzJzogMCwgJ3ZhbGlkX2Fzc2VtYmxpZXMnOiAzfQogICAgICBHZW5lcmF0aW5nIGFzc2VtYmxpZXMgcmVwb3J0cy4uLgogICAgICBERUJVRwogICAgICBDMV9wcm9tX2JhcmNvZGUuZ2IKICAgICAgQzJfZ2ZwX3Rlcm0uZ2IKICAgICAgQzNfZmluYWwuZ2IKCiAgICAgIGBgYAogICAgKipUcmFjZWJhY2s6KioKCiAgICAqIGBgYGNvbnNvbGUKICAgICAgCiAgICAgIGBgYAogICAqKkpvYiBQYXJhbWV0ZXJzOioqCgogICAqICAgfCBKb2IgcGFyYW1ldGVyIHwgUGFyYW1ldGVyIHZhbHVlIHwKICAgICAgIHwgLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0tLSB8CiAgICAgICB8IGdlbmJhbmtcX2ZpbGVzIHwgYCB7InZhbHVlcyI6IFt7ImlkIjogOSwgInNyYyI6ICJoZGNhIn1dfSBgIHwKICAgICAgIHwgZG9tZXN0aWNhdGVkXF9pbnB1dCB8IGAgTm9uZSBgIHwKICAgICAgIHwgYXNzZW1ibHlcX3BsYW5cX25hbWUgfCBgICJCaW9Ccmlja1N0YW5kYXJkQXNzZW1ibHkiIGAgfAogICAgICAgfCB0b3BvbG9neSB8IGAgImNpcmN1bGFyIiBgIHwKICAgICAgIHwgYWR2IHwgYCB7ImVuenltZSI6ICJhdXRvIiwgInVzZV9maWxlX25hbWVzX2FzX2lkcyI6IHRydWV9IGAgfAogICAgICAgfCBjaHJvbUluZm8gfCBgICIvdG1wL3RtcHkyeXN2NnRuL2dhbGF4eS1kZXYvdG9vbC1kYXRhL3NoYXJlZC91Y3NjL2Nocm9tLz8ubGVuIiBgIHwKICAgICAgIHwgZGJrZXkgfCBgICI/IiBgIHwKICAgICAgIHwgXF9cX2lucHV0XF9leHQgfCBgICJpbnB1dCIgYCB8CgoKCiAgICA8L2Rpdj48L2RldGFpbHM+CgoKKiA8ZGV0YWlscyBjbGFzcz0icmNvcm5lcnMgbGlnaHQtZ3JlZW4iPjxzdW1tYXJ5IGNsYXNzPSJsaWdodC1ncmVlbiI+JiM5OTg5OyBjbG9uaW5nX3NpbXVsYXRpb24gKFRlc3QgIyA2KTwvc3VtbWFyeT48ZGl2IGNsYXNzPSJwYWRkZWQiPgoKICAgICoqQ29tbWFuZCBMaW5lOioqCgogICAgKiBgYGBjb25zb2xlCiAgICAgIG1rZGlyICdvdXRkaXJfemlwJyAmJiBta2RpciAnb3V0ZGlyX2diJyAmJiBjcCAnL3RtcC90bXB5MnlzdjZ0bi9maWxlcy82L2MvMi9kYXRhc2V0XzZjMjA4OWRlLTUyODUtNGFlNi04ZTA4LWFmYTM4ODEwYzBlZS5kYXQnICdhc3NlbWJseV9jc3YuY3N2JyAmJiBweXRob24gJy9ob21lL3JraGFsZWQvZ2FsYXh5dG9vbHMvdG9vbHMvY2xvbmluZ19zaW11bGF0aW9uL2Nsb25pbmdfc2ltdWxhdGlvbi5weScgLS1wYXJ0c19maWxlcyAnL3RtcC90bXB5MnlzdjZ0bi9maWxlcy9iLzYvOC9kYXRhc2V0X2I2OGQ4ZGJhLWYwOTgtNGYxNC1hYzlmLWI2OTU0MWE4MzRjOC5kYXQsL3RtcC90bXB5MnlzdjZ0bi9maWxlcy9hLzkvNC9kYXRhc2V0X2E5NDA0MmQ3LTJkNzAtNDI1Ny1iYmM1LWFjM2YyYmU5M2FmZi5kYXQsL3RtcC90bXB5MnlzdjZ0bi9maWxlcy8xL2QvZS9kYXRhc2V0XzFkZTcyMzQxLWY0YzEtNDhkZi05NDY2LWExYzgwZTIzZmRmYi5kYXQsL3RtcC90bXB5MnlzdjZ0bi9maWxlcy9jLzEvMS9kYXRhc2V0X2MxMTI4YWJkLTg2YTEtNDhiOS1iNjZjLTAxNTJkNzZjODVjOS5kYXQsL3RtcC90bXB5MnlzdjZ0bi9maWxlcy8yL2YvMi9kYXRhc2V0XzJmMmFiN2I3LWQ2ZWYtNGEyZS05MGI4LWYxNWNkZGY1NmVlYS5kYXQsL3RtcC90bXB5MnlzdjZ0bi9maWxlcy85LzAvNC9kYXRhc2V0XzkwNDg1ODI3LWQ4MzktNGUzMi1iNTQ2LTljMzJmNzdmZDI2NC5kYXQsL3RtcC90bXB5MnlzdjZ0bi9maWxlcy83L2MvNS9kYXRhc2V0XzdjNTZhMDcxLWU5ZmUtNDEzMy04YTk5LThhN2Q1OGU3YjFmZC5kYXQnIC0tZG9tZXN0aWNhdGVkX3NlcSAnL3RtcC90bXB5MnlzdjZ0bi9maWxlcy8wL2YvMy9kYXRhc2V0XzBmMzhkNDIwLWFmMmEtNDJiYS1hNmQzLWYxNjgwNzY1MzQwMi5kYXQsL3RtcC90bXB5MnlzdjZ0bi9maWxlcy8wL2IvNi9kYXRhc2V0XzBiNjUzZWQ0LWY0NTgtNDU2Ny1iOWI3LTA3NDI1NzkzNDQzMy5kYXQsL3RtcC90bXB5MnlzdjZ0bi9maWxlcy83LzAvZC9kYXRhc2V0XzcwZDdjODU5LTgzZjEtNGFhNy1iMWRiLWZlZTFiNGQzODRjMC5kYXQsL3RtcC90bXB5MnlzdjZ0bi9maWxlcy9jL2UvMi9kYXRhc2V0X2NlMjUwNWU2LTM1YzctNDg1OC1hMjdlLTZjNTc2MWEzNWJlMy5kYXQsL3RtcC90bXB5MnlzdjZ0bi9maWxlcy82LzgvYi9kYXRhc2V0XzY4YjhkMzBlLTZjMGMtNDY2Zi1hNzBjLTBlNThiY2MyN2UwZC5kYXQnIC0tYXNzZW1ibHlfY3N2ICdhc3NlbWJseV9jc3YuY3N2JyAtLWFzc2VtYmx5X3BsYW5fbmFtZSAnVHlwZTJzUmVzdHJpY3Rpb25Bc3NlbWJseScgLS1maWxlX25hbWVfbWFwcGluZyAnL3RtcC90bXB5MnlzdjZ0bi9maWxlcy9iLzYvOC9kYXRhc2V0X2I2OGQ4ZGJhLWYwOTgtNGYxNC1hYzlmLWI2OTU0MWE4MzRjOC5kYXQ6cGFydF9BLmdiLC90bXAvdG1weTJ5c3Y2dG4vZmlsZXMvYS85LzQvZGF0YXNldF9hOTQwNDJkNy0yZDcwLTQyNTctYmJjNS1hYzNmMmJlOTNhZmYuZGF0OnBhcnRfQi5nYiwvdG1wL3RtcHkyeXN2NnRuL2ZpbGVzLzEvZC9lL2RhdGFzZXRfMWRlNzIzNDEtZjRjMS00OGRmLTk0NjYtYTFjODBlMjNmZGZiLmRhdDpwYXJ0X0MuZ2IsL3RtcC90bXB5MnlzdjZ0bi9maWxlcy9jLzEvMS9kYXRhc2V0X2MxMTI4YWJkLTg2YTEtNDhiOS1iNjZjLTAxNTJkNzZjODVjOS5kYXQ6cGFydF9ELmdiLC90bXAvdG1weTJ5c3Y2dG4vZmlsZXMvMi9mLzIvZGF0YXNldF8yZjJhYjdiNy1kNmVmLTRhMmUtOTBiOC1mMTVjZGRmNTZlZWEuZGF0OnBhcnRfRS5nYiwvdG1wL3RtcHkyeXN2NnRuL2ZpbGVzLzkvMC80L2RhdGFzZXRfOTA0ODU4MjctZDgzOS00ZTMyLWI1NDYtOWMzMmY3N2ZkMjY0LmRhdDpwYXJ0X0YuZ2IsL3RtcC90bXB5MnlzdjZ0bi9maWxlcy83L2MvNS9kYXRhc2V0XzdjNTZhMDcxLWU5ZmUtNDEzMy04YTk5LThhN2Q1OGU3YjFmZC5kYXQ6cGFydF9HLmdiJyAtLWZpbGVfbmFtZV9tYXBwaW5nX2RvbSAnL3RtcC90bXB5MnlzdjZ0bi9maWxlcy8wL2YvMy9kYXRhc2V0XzBmMzhkNDIwLWFmMmEtNDJiYS1hNmQzLWYxNjgwNzY1MzQwMi5kYXQ6cGFydF9ILmdiLC90bXAvdG1weTJ5c3Y2dG4vZmlsZXMvMC9iLzYvZGF0YXNldF8wYjY1M2VkNC1mNDU4LTQ1NjctYjliNy0wNzQyNTc5MzQ0MzMuZGF0OnBhcnRfSS5nYiwvdG1wL3RtcHkyeXN2NnRuL2ZpbGVzLzcvMC9kL2RhdGFzZXRfNzBkN2M4NTktODNmMS00YWE3LWIxZGItZmVlMWI0ZDM4NGMwLmRhdDpwYXJ0X0ouZ2IsL3RtcC90bXB5MnlzdjZ0bi9maWxlcy9jL2UvMi9kYXRhc2V0X2NlMjUwNWU2LTM1YzctNDg1OC1hMjdlLTZjNTc2MWEzNWJlMy5kYXQ6cGFydF9LLmdiLC90bXAvdG1weTJ5c3Y2dG4vZmlsZXMvNi84L2IvZGF0YXNldF82OGI4ZDMwZS02YzBjLTQ2NmYtYTcwYy0wZTU4YmNjMjdlMGQuZGF0OnBhcnRfTC5nYicgLS11c2VfZmlsZV9uYW1lc19hc19pZCAndHJ1ZScgLS1vdXRkaXJfc2ltdWxhdGlvbiAnb3V0ZGlyX3ppcCcgLS1vdXRkaXJfZ2IgJ291dGRpcl9nYicgLS1vdXRwdXRfc2ltdWxhdGlvbiAnb3V0cHV0X3ppcC56aXAnIC0tZW56eW1lICdhdXRvJyAtLXRvcG9sb2d5ICdjaXJjdWxhcicgJiYgY3AgJ291dHB1dF96aXAuemlwJyAnL3RtcC90bXB5MnlzdjZ0bi9qb2Jfd29ya2luZ19kaXJlY3RvcnkvMDAwLzQ5L291dHB1dHMvZGF0YXNldF80NDViYWI0MS1iYWE0LTRkZTEtYWRmYy1kNGZkNTY4OTJjNWYuZGF0JyAmJiBlY2hvIERFQlVHICYmIGxzICdvdXRkaXJfZ2InCiAgICAgIGBgYAogICAgKipFeGl0IENvZGU6KioKCiAgICAqIGBgYGNvbnNvbGUKICAgICAgMAogICAgICBgYGAKICAgICoqU3RhbmRhcmQgRXJyb3I6KioKCiAgICAqIGBgYGNvbnNvbGUKICAgICAgCiAgICAgIGFzc2VtYmx5OiAgIDAlfCAgICAgICAgICB8IDAvNCBbMDA6MDA8PywgP2l0L3MsIG5vdz1Ob25lXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKCiAgICAgIGFzc2VtYmx5OiAgIDAlfCAgICAgICAgICB8IDAvNCBbMDA6MDA8PywgP2l0L3MsIG5vdz1Ob25lXQogICAgICBhc3NlbWJseTogIDUwJXzilojilojilojilojiloggICAgIHwgMi80IFswMDowMDwwMDowMCwgIDIuMzlpdC9zLCBub3c9Tm9uZV0KICAgICAgYXNzZW1ibHk6ICA3NSV84paI4paI4paI4paI4paI4paI4paI4paMICB8IDMvNCBbMDA6MDE8MDA6MDAsICAyLjIwaXQvcywgbm93PU5vbmVdCiAgICAgIGFzc2VtYmx5OiAxMDAlfOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiHwgNC80IFswMDowMjwwMDowMCwgIDEuNzlpdC9zLCBub3c9Tm9uZV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgYGBgCiAgICAqKlN0YW5kYXJkIE91dHB1dDoqKgoKICAgICogYGBgY29uc29sZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEgICAgICAgMiAgICAgICAzICAgICAgIDQgICAgICAgNSAgICAgICA2CiAgICAgIDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgY29uc3RydWN0XzMgIGNvbnN0cnVjdF8xICBwYXJ0X0wgIHBhcnRfSiAgcGFydF9LICAgICBOYU4gICAgIE5hTgogICAgICBjb25zdHJ1Y3RfNCAgY29uc3RydWN0XzIgIHBhcnRfTCAgcGFydF9KICBwYXJ0X0sgICAgIE5hTiAgICAgTmFOCiAgICAgIGNvbnN0cnVjdF8xICAgICAgIHBhcnRfQSAgcGFydF9CICBwYXJ0X0MgIHBhcnRfRCAgcGFydF9FICBwYXJ0X0YKICAgICAgY29uc3RydWN0XzIgICAgICAgcGFydF9BICBwYXJ0X0cgIHBhcnRfSCAgcGFydF9JICBwYXJ0X0YgICAgIE5hTgogICAgICBTaW11bGF0aW5nIGFzc2VtYmx5IHBsYW4gYXNzYW1ibHkuLi4KICAgICAgeydjYW5jZWxsZWRfYXNzZW1ibGllcyc6IDAsICdlcnJvcmVkX2Fzc2VtYmxpZXMnOiAwLCAndmFsaWRfYXNzZW1ibGllcyc6IDR9CiAgICAgIEdlbmVyYXRpbmcgYXNzZW1ibGllcyByZXBvcnRzLi4uCiAgICAgIERFQlVHCiAgICAgIGNvbnN0cnVjdF8xLmdiCiAgICAgIGNvbnN0cnVjdF8yLmdiCiAgICAgIGNvbnN0cnVjdF8zLmdiCiAgICAgIGNvbnN0cnVjdF80LmdiCgogICAgICBgYGAKICAgICoqVHJhY2ViYWNrOioqCgogICAgKiBgYGBjb25zb2xlCiAgICAgIAogICAgICBgYGAKICAgKipKb2IgUGFyYW1ldGVyczoqKgoKICAgKiAgIHwgSm9iIHBhcmFtZXRlciB8IFBhcmFtZXRlciB2YWx1ZSB8CiAgICAgICB8IC0tLS0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0gfAogICAgICAgfCBnZW5iYW5rXF9maWxlcyB8IGAgeyJ2YWx1ZXMiOiBbeyJpZCI6IDEyLCAic3JjIjogImhkY2EifV19IGAgfAogICAgICAgfCBkb21lc3RpY2F0ZWRcX2lucHV0IHwgYCB7InZhbHVlcyI6IFt7ImlkIjogMTEsICJzcmMiOiAiaGRjYSJ9XX0gYCB8CiAgICAgICB8IGFzc2VtYmx5XF9wbGFuXF9uYW1lIHwgYCAiVHlwZTJzUmVzdHJpY3Rpb25Bc3NlbWJseSIgYCB8CiAgICAgICB8IHRvcG9sb2d5IHwgYCAiY2lyY3VsYXIiIGAgfAogICAgICAgfCBhZHYgfCBgIHsiZW56eW1lIjogImF1dG8iLCAidXNlX2ZpbGVfbmFtZXNfYXNfaWRzIjogdHJ1ZX0gYCB8CiAgICAgICB8IGNocm9tSW5mbyB8IGAgIi90bXAvdG1weTJ5c3Y2dG4vZ2FsYXh5LWRldi90b29sLWRhdGEvc2hhcmVkL3Vjc2MvY2hyb20vPy5sZW4iIGAgfAogICAgICAgfCBkYmtleSB8IGAgIj8iIGAgfAogICAgICAgfCBcX1xfaW5wdXRcX2V4dCB8IGAgImlucHV0IiBgIHwKCgoKICAgIDwvZGl2PjwvZGV0YWlscz4KCgoqIDxkZXRhaWxzIGNsYXNzPSJyY29ybmVycyBsaWdodC1ncmVlbiI+PHN1bW1hcnkgY2xhc3M9ImxpZ2h0LWdyZWVuIj4mIzk5ODk7IGNsb25pbmdfc2ltdWxhdGlvbiAoVGVzdCAjIDcpPC9zdW1tYXJ5PjxkaXYgY2xhc3M9InBhZGRlZCI+CgogICAgKipDb21tYW5kIExpbmU6KioKCiAgICAqIGBgYGNvbnNvbGUKICAgICAgbWtkaXIgJ291dGRpcl96aXAnICYmIG1rZGlyICdvdXRkaXJfZ2InICYmIGNwICcvdG1wL3RtcHkyeXN2NnRuL2ZpbGVzL2EvYS9kL2RhdGFzZXRfYWFkYzJhYzUtYjkyZC00NDg5LWJhOWMtOWUzMGM3OWRhMjA3LmRhdCcgJ2Fzc2VtYmx5X2Nzdi5jc3YnICYmIHB5dGhvbiAnL2hvbWUvcmtoYWxlZC9nYWxheHl0b29scy90b29scy9jbG9uaW5nX3NpbXVsYXRpb24vY2xvbmluZ19zaW11bGF0aW9uLnB5JyAtLXBhcnRzX2ZpbGVzICcvdG1wL3RtcHkyeXN2NnRuL2ZpbGVzLzMvOC84L2RhdGFzZXRfMzg4Njc0ZDItMjRmZS00ZTc2LWIwYjgtMmRiNjQ2M2U3ODhmLmRhdCwvdG1wL3RtcHkyeXN2NnRuL2ZpbGVzLzcvNS9jL2RhdGFzZXRfNzVjMjdlZTUtZmQ5Yi00NmExLWJlMDctZjBjZGM0ZTE2YmMxLmRhdCwvdG1wL3RtcHkyeXN2NnRuL2ZpbGVzL2IvYi9iL2RhdGFzZXRfYmJiYTVmZjktNjllNy00ZDQxLWFmODItOTkyZGY1ZjA2NWZiLmRhdCwvdG1wL3RtcHkyeXN2NnRuL2ZpbGVzL2QvYy85L2RhdGFzZXRfZGM5ODJlOWQtNmQ5My00NjM4LWI0ZmMtNjdmYzgyMzhiMjk1LmRhdCwvdG1wL3RtcHkyeXN2NnRuL2ZpbGVzL2UvZC8yL2RhdGFzZXRfZWQyZDdiMzUtNjI1Zi00MjllLWFlNTAtY2UxMDk4YTIwYjg1LmRhdCwvdG1wL3RtcHkyeXN2NnRuL2ZpbGVzLzUvYS8yL2RhdGFzZXRfNWEyMDEwY2ItNjRjZi00ZmY5LTg4NTItZjg4M2Y3YWIwMjY5LmRhdCwvdG1wL3RtcHkyeXN2NnRuL2ZpbGVzLzAvZi9hL2RhdGFzZXRfMGZhOGVkNmEtYjg0OC00YjBkLTk0NzQtMTNjZDIyZDRhNDdlLmRhdCwvdG1wL3RtcHkyeXN2NnRuL2ZpbGVzL2EvYi9lL2RhdGFzZXRfYWJlYWQ0MTMtYzNkNC00MmQzLWJkOTctYzAyYTZiZDY5Nzc5LmRhdCwvdG1wL3RtcHkyeXN2NnRuL2ZpbGVzLzYvYS9iL2RhdGFzZXRfNmFiNmM0NzItYzY3Mi00YmRmLTk4MTQtOGUwNjlhOGEwN2UxLmRhdCwvdG1wL3RtcHkyeXN2NnRuL2ZpbGVzL2IvMC9lL2RhdGFzZXRfYjBlMmNlMDctY2NmMC00ODA1LTk1OGMtOGRlMTc0YzNkNGMxLmRhdCwvdG1wL3RtcHkyeXN2NnRuL2ZpbGVzLzMvMy9hL2RhdGFzZXRfMzNhZDIwNzItZmI3Ni00N2M0LWIzZjctNjBhMmEwOTdhYjg3LmRhdCwvdG1wL3RtcHkyeXN2NnRuL2ZpbGVzLzkvZC8xL2RhdGFzZXRfOWQxM2M0MTgtYmJiMS00NTdlLWJkYWYtMGYyYmY1MjMyZjc4LmRhdCcgLS1kb21lc3RpY2F0ZWRfc2VxICcnIC0tYXNzZW1ibHlfY3N2ICdhc3NlbWJseV9jc3YuY3N2JyAtLWFzc2VtYmx5X3BsYW5fbmFtZSAnVHlwZTJzUmVzdHJpY3Rpb25Bc3NlbWJseScgLS1maWxlX25hbWVfbWFwcGluZyAnL3RtcC90bXB5MnlzdjZ0bi9maWxlcy8zLzgvOC9kYXRhc2V0XzM4ODY3NGQyLTI0ZmUtNGU3Ni1iMGI4LTJkYjY0NjNlNzg4Zi5kYXQ6cGFydF9BLmdiLC90bXAvdG1weTJ5c3Y2dG4vZmlsZXMvNy81L2MvZGF0YXNldF83NWMyN2VlNS1mZDliLTQ2YTEtYmUwNy1mMGNkYzRlMTZiYzEuZGF0OnBhcnRfQi5nYiwvdG1wL3RtcHkyeXN2NnRuL2ZpbGVzL2IvYi9iL2RhdGFzZXRfYmJiYTVmZjktNjllNy00ZDQxLWFmODItOTkyZGY1ZjA2NWZiLmRhdDpwYXJ0X0MuZ2IsL3RtcC90bXB5MnlzdjZ0bi9maWxlcy9kL2MvOS9kYXRhc2V0X2RjOTgyZTlkLTZkOTMtNDYzOC1iNGZjLTY3ZmM4MjM4YjI5NS5kYXQ6cGFydF9ELmdiLC90bXAvdG1weTJ5c3Y2dG4vZmlsZXMvZS9kLzIvZGF0YXNldF9lZDJkN2IzNS02MjVmLTQyOWUtYWU1MC1jZTEwOThhMjBiODUuZGF0OnBhcnRfRS5nYiwvdG1wL3RtcHkyeXN2NnRuL2ZpbGVzLzUvYS8yL2RhdGFzZXRfNWEyMDEwY2ItNjRjZi00ZmY5LTg4NTItZjg4M2Y3YWIwMjY5LmRhdDpwYXJ0X0YuZ2IsL3RtcC90bXB5MnlzdjZ0bi9maWxlcy8wL2YvYS9kYXRhc2V0XzBmYThlZDZhLWI4NDgtNGIwZC05NDc0LTEzY2QyMmQ0YTQ3ZS5kYXQ6cGFydF9HLmdiLC90bXAvdG1weTJ5c3Y2dG4vZmlsZXMvYS9iL2UvZGF0YXNldF9hYmVhZDQxMy1jM2Q0LTQyZDMtYmQ5Ny1jMDJhNmJkNjk3NzkuZGF0OnBhcnRfSC5nYiwvdG1wL3RtcHkyeXN2NnRuL2ZpbGVzLzYvYS9iL2RhdGFzZXRfNmFiNmM0NzItYzY3Mi00YmRmLTk4MTQtOGUwNjlhOGEwN2UxLmRhdDpwYXJ0X0kuZ2IsL3RtcC90bXB5MnlzdjZ0bi9maWxlcy9iLzAvZS9kYXRhc2V0X2IwZTJjZTA3LWNjZjAtNDgwNS05NThjLThkZTE3NGMzZDRjMS5kYXQ6cGFydF9KLmdiLC90bXAvdG1weTJ5c3Y2dG4vZmlsZXMvMy8zL2EvZGF0YXNldF8zM2FkMjA3Mi1mYjc2LTQ3YzQtYjNmNy02MGEyYTA5N2FiODcuZGF0OnBhcnRfSy5nYiwvdG1wL3RtcHkyeXN2NnRuL2ZpbGVzLzkvZC8xL2RhdGFzZXRfOWQxM2M0MTgtYmJiMS00NTdlLWJkYWYtMGYyYmY1MjMyZjc4LmRhdDpwYXJ0X0wuZ2InIC0tZmlsZV9uYW1lX21hcHBpbmdfZG9tICcnIC0tdXNlX2ZpbGVfbmFtZXNfYXNfaWQgJ3RydWUnIC0tb3V0ZGlyX3NpbXVsYXRpb24gJ291dGRpcl96aXAnIC0tb3V0ZGlyX2diICdvdXRkaXJfZ2InIC0tb3V0cHV0X3NpbXVsYXRpb24gJ291dHB1dF96aXAuemlwJyAtLWVuenltZSAnYXV0bycgLS10b3BvbG9neSAnY2lyY3VsYXInICYmIGNwICdvdXRwdXRfemlwLnppcCcgJy90bXAvdG1weTJ5c3Y2dG4vam9iX3dvcmtpbmdfZGlyZWN0b3J5LzAwMC82My9vdXRwdXRzL2RhdGFzZXRfZmJlYjU3ZWQtMTcxOC00ZDJiLWEyMmItNWM0YTU3NzlkOWFiLmRhdCcgJiYgZWNobyBERUJVRyAmJiBscyAnb3V0ZGlyX2diJwogICAgICBgYGAKICAgICoqRXhpdCBDb2RlOioqCgogICAgKiBgYGBjb25zb2xlCiAgICAgIDAKICAgICAgYGBgCiAgICAqKlN0YW5kYXJkIEVycm9yOioqCgogICAgKiBgYGBjb25zb2xlCiAgICAgIAogICAgICBhc3NlbWJseTogICAwJXwgICAgICAgICAgfCAwLzQgWzAwOjAwPD8sID9pdC9zLCBub3c9Tm9uZV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCgogICAgICBhc3NlbWJseTogICAwJXwgICAgICAgICAgfCAwLzQgWzAwOjAwPD8sID9pdC9zLCBub3c9Tm9uZV0KICAgICAgYXNzZW1ibHk6ICA1MCV84paI4paI4paI4paI4paIICAgICB8IDIvNCBbMDA6MDA8MDA6MDAsICAyLjMxaXQvcywgbm93PU5vbmVdCiAgICAgIGFzc2VtYmx5OiAgNzUlfOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWjCAgfCAzLzQgWzAwOjAxPDAwOjAwLCAgMi4xMWl0L3MsIG5vdz1Ob25lXQogICAgICBhc3NlbWJseTogMTAwJXzilojilojilojilojilojilojilojilojilojiloh8IDQvNCBbMDA6MDI8MDA6MDAsICAxLjc1aXQvcywgbm93PU5vbmVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgIGBgYAogICAgKipTdGFuZGFyZCBPdXRwdXQ6KioKCiAgICAqIGBgYGNvbnNvbGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxICAgICAgIDIgICAgICAgMyAgICAgICA0ICAgICAgIDUgICAgICAgNgogICAgICAwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgIGNvbnN0cnVjdF8zICBjb25zdHJ1Y3RfMSAgcGFydF9MICBwYXJ0X0ogIHBhcnRfSyAgICAgTmFOICAgICBOYU4KICAgICAgY29uc3RydWN0XzQgIGNvbnN0cnVjdF8yICBwYXJ0X0wgIHBhcnRfSiAgcGFydF9LICAgICBOYU4gICAgIE5hTgogICAgICBjb25zdHJ1Y3RfMSAgICAgICBwYXJ0X0EgIHBhcnRfQiAgcGFydF9DICBwYXJ0X0QgIHBhcnRfRSAgcGFydF9GCiAgICAgIGNvbnN0cnVjdF8yICAgICAgIHBhcnRfQSAgcGFydF9HICBwYXJ0X0ggIHBhcnRfSSAgcGFydF9GICAgICBOYU4KICAgICAgU2ltdWxhdGluZyBhc3NlbWJseSBwbGFuIGFzc2FtYmx5Li4uCiAgICAgIHsnY2FuY2VsbGVkX2Fzc2VtYmxpZXMnOiAwLCAnZXJyb3JlZF9hc3NlbWJsaWVzJzogMCwgJ3ZhbGlkX2Fzc2VtYmxpZXMnOiA0fQogICAgICBHZW5lcmF0aW5nIGFzc2VtYmxpZXMgcmVwb3J0cy4uLgogICAgICBERUJVRwogICAgICBjb25zdHJ1Y3RfMS5nYgogICAgICBjb25zdHJ1Y3RfMi5nYgogICAgICBjb25zdHJ1Y3RfMy5nYgogICAgICBjb25zdHJ1Y3RfNC5nYgoKICAgICAgYGBgCiAgICAqKlRyYWNlYmFjazoqKgoKICAgICogYGBgY29uc29sZQogICAgICAKICAgICAgYGBgCiAgICoqSm9iIFBhcmFtZXRlcnM6KioKCiAgICogICB8IEpvYiBwYXJhbWV0ZXIgfCBQYXJhbWV0ZXIgdmFsdWUgfAogICAgICAgfCAtLS0tLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tIHwKICAgICAgIHwgZ2VuYmFua1xfZmlsZXMgfCBgIE5vbmUgYCB8CiAgICAgICB8IGRvbWVzdGljYXRlZFxfaW5wdXQgfCBgIHsidmFsdWVzIjogW3siaWQiOiAxNCwgInNyYyI6ICJoZGNhIn1dfSBgIHwKICAgICAgIHwgYXNzZW1ibHlcX3BsYW5cX25hbWUgfCBgICJUeXBlMnNSZXN0cmljdGlvbkFzc2VtYmx5IiBgIHwKICAgICAgIHwgdG9wb2xvZ3kgfCBgICJjaXJjdWxhciIgYCB8CiAgICAgICB8IGFkdiB8IGAgeyJlbnp5bWUiOiAiYXV0byIsICJ1c2VfZmlsZV9uYW1lc19hc19pZHMiOiB0cnVlfSBgIHwKICAgICAgIHwgY2hyb21JbmZvIHwgYCAiL3RtcC90bXB5MnlzdjZ0bi9nYWxheHktZGV2L3Rvb2wtZGF0YS9zaGFyZWQvdWNzYy9jaHJvbS8/LmxlbiIgYCB8CiAgICAgICB8IGRia2V5IHwgYCAiPyIgYCB8CiAgICAgICB8IFxfXF9pbnB1dFxfZXh0IHwgYCAiaW5wdXQiIGAgfAoKCgogICAgPC9kaXY+PC9kZXRhaWxzPgoKCjwvZGV0YWlscz4K')); \ No newline at end of file diff -r 556649b3f9bb -r 7d1778f5e164 output.json --- a/output.json Mon May 26 09:57:55 2025 +0000 +++ b/output.json Mon May 26 10:10:46 2025 +0000 @@ -1,7 +1,7 @@ { "summary": { "num_errors": 0, - "num_failures": 0, + "num_failures": 1, "num_skips": 0, "num_tests": 7 }, @@ -11,96 +11,104 @@ "inputs": { "adv|use_file_names_as_ids": true, "assembly_csv": { - "id": "7a37f3397bf88665", + "id": "41ca6db0600d7999", "src": "hda" }, "assembly_plan_name": "Type2sRestrictionAssembly", "genbank_files": { - "id": "b5f519d254c4f536", + "id": "66f8380583c086e1", "src": "hdca" }, "topology": "circular" }, "job": { - "command_line": "mkdir 'outdir_zip' && mkdir 'outdir_gb' && cp '/tmp/tmphxxoceah/files/6/1/a/dataset_61aa4b8a-d71a-4e9d-a878-5f0d1494b36d.dat' 'assembly_csv.csv' && python '/home/rkhaled/galaxytools/tools/cloning_simulation/cloning_simulation.py' --parts_files '/tmp/tmphxxoceah/files/f/c/e/dataset_fce5b5a1-92e2-4c39-90d5-0eddf56635f0.dat,/tmp/tmphxxoceah/files/a/6/4/dataset_a6400a83-e4fd-488b-94e8-5ec1f44db9ca.dat,/tmp/tmphxxoceah/files/a/6/6/dataset_a66c7ac9-f828-405d-9a49-842e978b00af.dat,/tmp/tmphxxoceah/files/5/4/b/dataset_54b878ab-05e6-4212-b399-ab1f62c59e16.dat,/tmp/tmphxxoceah/files/3/9/0/dataset_39021efe-6a4f-4b7f-ba0d-f87c2b436a0f.dat,/tmp/tmphxxoceah/files/b/e/2/dataset_be26c9ab-28e8-449a-bd01-2047af0dfa5d.dat,/tmp/tmphxxoceah/files/f/7/f/dataset_f7fd1975-81bc-4a4f-89c6-d946d59782ee.dat,/tmp/tmphxxoceah/files/f/b/1/dataset_fb1f0888-2487-4f14-bcdd-fa06923d4cd9.dat,/tmp/tmphxxoceah/files/2/5/0/dataset_250500a7-25ca-4cba-8d71-7d16053afcaa.dat,/tmp/tmphxxoceah/files/3/8/7/dataset_387ad7a6-1931-4a46-99d5-4513ba93a999.dat,/tmp/tmphxxoceah/files/6/8/2/dataset_6829a587-673a-44a6-8bcf-ec6334a9184f.dat,/tmp/tmphxxoceah/files/4/0/4/dataset_40405cee-d70a-45d6-ac91-05616fe798b9.dat' --domesticated_seq '' --assembly_csv 'assembly_csv.csv' --assembly_plan_name 'Type2sRestrictionAssembly' --file_name_mapping '/tmp/tmphxxoceah/files/f/c/e/dataset_fce5b5a1-92e2-4c39-90d5-0eddf56635f0.dat:part_A.gb,/tmp/tmphxxoceah/files/a/6/4/dataset_a6400a83-e4fd-488b-94e8-5ec1f44db9ca.dat:part_B.gb,/tmp/tmphxxoceah/files/a/6/6/dataset_a66c7ac9-f828-405d-9a49-842e978b00af.dat:part_C.gb,/tmp/tmphxxoceah/files/5/4/b/dataset_54b878ab-05e6-4212-b399-ab1f62c59e16.dat:part_D.gb,/tmp/tmphxxoceah/files/3/9/0/dataset_39021efe-6a4f-4b7f-ba0d-f87c2b436a0f.dat:part_E.gb,/tmp/tmphxxoceah/files/b/e/2/dataset_be26c9ab-28e8-449a-bd01-2047af0dfa5d.dat:part_F.gb,/tmp/tmphxxoceah/files/f/7/f/dataset_f7fd1975-81bc-4a4f-89c6-d946d59782ee.dat:part_G.gb,/tmp/tmphxxoceah/files/f/b/1/dataset_fb1f0888-2487-4f14-bcdd-fa06923d4cd9.dat:part_H.gb,/tmp/tmphxxoceah/files/2/5/0/dataset_250500a7-25ca-4cba-8d71-7d16053afcaa.dat:part_I.gb,/tmp/tmphxxoceah/files/3/8/7/dataset_387ad7a6-1931-4a46-99d5-4513ba93a999.dat:part_J.gb,/tmp/tmphxxoceah/files/6/8/2/dataset_6829a587-673a-44a6-8bcf-ec6334a9184f.dat:part_K.gb,/tmp/tmphxxoceah/files/4/0/4/dataset_40405cee-d70a-45d6-ac91-05616fe798b9.dat:part_L.gb' --file_name_mapping_dom '' --use_file_names_as_id 'true' --outdir_simulation 'outdir_zip' --outdir_gb 'outdir_gb' --output_simulation 'output_zip.zip' --enzyme 'auto' --topology 'circular' && cp 'output_zip.zip' '/tmp/tmphxxoceah/job_working_directory/000/14/outputs/dataset_a840b0de-7374-4fc2-bc9c-eec0f6615e2f.dat'", + "command_line": "mkdir 'outdir_zip' && mkdir 'outdir_gb' && cp '/tmp/tmpy2ysv6tn/files/1/a/1/dataset_1a1ee32d-eed7-47fd-b491-4f0799b44a85.dat' 'assembly_csv.csv' && python '/home/rkhaled/galaxytools/tools/cloning_simulation/cloning_simulation.py' --parts_files '/tmp/tmpy2ysv6tn/files/4/4/1/dataset_44129191-5531-4cc9-b37b-fec4e3c677d5.dat,/tmp/tmpy2ysv6tn/files/6/1/f/dataset_61f5f19f-147b-46fd-8900-a8530f311835.dat,/tmp/tmpy2ysv6tn/files/4/4/0/dataset_440b34e7-490e-49bd-9b29-6afcabe5f6f6.dat,/tmp/tmpy2ysv6tn/files/a/3/f/dataset_a3fca212-b8dc-4579-901c-612b806241af.dat,/tmp/tmpy2ysv6tn/files/5/3/9/dataset_5398f2cb-1a25-45e5-9ba0-cd79a88b6e88.dat,/tmp/tmpy2ysv6tn/files/f/5/0/dataset_f505293a-8223-4da2-a22c-aa261d4955ec.dat,/tmp/tmpy2ysv6tn/files/c/5/0/dataset_c50e4b1f-c72a-4272-b324-e1c2c7d50293.dat,/tmp/tmpy2ysv6tn/files/0/0/d/dataset_00d79560-f944-4d8e-98e7-f516684a6100.dat,/tmp/tmpy2ysv6tn/files/3/d/5/dataset_3d5bb0fb-d610-4939-8fc5-999174fee5ca.dat,/tmp/tmpy2ysv6tn/files/c/7/c/dataset_c7cf96af-ab1c-4199-821f-5bb5b947752f.dat,/tmp/tmpy2ysv6tn/files/0/a/5/dataset_0a5139e7-7d83-48f1-a1c9-458a1e72685c.dat,/tmp/tmpy2ysv6tn/files/f/b/3/dataset_fb361f22-020c-4972-8661-f1f57d1a7afa.dat' --domesticated_seq '' --assembly_csv 'assembly_csv.csv' --assembly_plan_name 'Type2sRestrictionAssembly' --file_name_mapping '/tmp/tmpy2ysv6tn/files/4/4/1/dataset_44129191-5531-4cc9-b37b-fec4e3c677d5.dat:part_A.gb,/tmp/tmpy2ysv6tn/files/6/1/f/dataset_61f5f19f-147b-46fd-8900-a8530f311835.dat:part_B.gb,/tmp/tmpy2ysv6tn/files/4/4/0/dataset_440b34e7-490e-49bd-9b29-6afcabe5f6f6.dat:part_C.gb,/tmp/tmpy2ysv6tn/files/a/3/f/dataset_a3fca212-b8dc-4579-901c-612b806241af.dat:part_D.gb,/tmp/tmpy2ysv6tn/files/5/3/9/dataset_5398f2cb-1a25-45e5-9ba0-cd79a88b6e88.dat:part_E.gb,/tmp/tmpy2ysv6tn/files/f/5/0/dataset_f505293a-8223-4da2-a22c-aa261d4955ec.dat:part_F.gb,/tmp/tmpy2ysv6tn/files/c/5/0/dataset_c50e4b1f-c72a-4272-b324-e1c2c7d50293.dat:part_G.gb,/tmp/tmpy2ysv6tn/files/0/0/d/dataset_00d79560-f944-4d8e-98e7-f516684a6100.dat:part_H.gb,/tmp/tmpy2ysv6tn/files/3/d/5/dataset_3d5bb0fb-d610-4939-8fc5-999174fee5ca.dat:part_I.gb,/tmp/tmpy2ysv6tn/files/c/7/c/dataset_c7cf96af-ab1c-4199-821f-5bb5b947752f.dat:part_J.gb,/tmp/tmpy2ysv6tn/files/0/a/5/dataset_0a5139e7-7d83-48f1-a1c9-458a1e72685c.dat:part_K.gb,/tmp/tmpy2ysv6tn/files/f/b/3/dataset_fb361f22-020c-4972-8661-f1f57d1a7afa.dat:part_L.gb' --file_name_mapping_dom '' --use_file_names_as_id 'true' --outdir_simulation 'outdir_zip' --outdir_gb 'outdir_gb' --output_simulation 'output_zip.zip' --enzyme 'auto' --topology 'circular' && cp 'output_zip.zip' '/tmp/tmpy2ysv6tn/job_working_directory/000/14/outputs/dataset_acb064d7-2781-46fe-98df-716fee024c8d.dat'", "command_version": "", "copied_from_job_id": null, - "create_time": "2025-05-26T09:44:56.264493", + "create_time": "2025-05-26T10:00:43.823779", "dependencies": [], - "exit_code": 0, - "external_id": "102136", + "exit_code": 1, + "external_id": "114506", "galaxy_version": "24.2", "handler": null, - "history_id": "b5f519d254c4f536", - "id": "dfd75d2f0da631b2", + "history_id": "66f8380583c086e1", + "id": "7f406d9538852eeb", "inputs": { "assembly_csv": { - "id": "7a37f3397bf88665", + "id": "41ca6db0600d7999", "src": "hda", - "uuid": "61aa4b8a-d71a-4e9d-a878-5f0d1494b36d" + "uuid": "1a1ee32d-eed7-47fd-b491-4f0799b44a85" }, "genbank_files1": { - "id": "b5f519d254c4f536", + "id": "66f8380583c086e1", "src": "hda", - "uuid": "fce5b5a1-92e2-4c39-90d5-0eddf56635f0" + "uuid": "44129191-5531-4cc9-b37b-fec4e3c677d5" }, "genbank_files10": { - "id": "2bdc7fcb2931f07b", + "id": "d3a48cfe9e5a1f02", "src": "hda", - "uuid": "387ad7a6-1931-4a46-99d5-4513ba93a999" + "uuid": "c7cf96af-ab1c-4199-821f-5bb5b947752f" }, "genbank_files11": { - "id": "dc7e3ab6a421767b", + "id": "4fffd7776804f395", "src": "hda", - "uuid": "6829a587-673a-44a6-8bcf-ec6334a9184f" + "uuid": "0a5139e7-7d83-48f1-a1c9-458a1e72685c" }, "genbank_files12": { - "id": "b1d9a1d43e36b679", + "id": "193b12b5837c3789", "src": "hda", - "uuid": "40405cee-d70a-45d6-ac91-05616fe798b9" + "uuid": "fb361f22-020c-4972-8661-f1f57d1a7afa" }, "genbank_files2": { - "id": "c5accd210dc5c9dd", + "id": "afa012b5b55ac394", "src": "hda", - "uuid": "a6400a83-e4fd-488b-94e8-5ec1f44db9ca" + "uuid": "61f5f19f-147b-46fd-8900-a8530f311835" }, "genbank_files3": { - "id": "10fbf206fb2087c4", + "id": "c1bc3f2cd94aab77", "src": "hda", - "uuid": "a66c7ac9-f828-405d-9a49-842e978b00af" + "uuid": "440b34e7-490e-49bd-9b29-6afcabe5f6f6" }, "genbank_files4": { - "id": "27fa0815bff520f2", + "id": "f1661b71781d8acc", "src": "hda", - "uuid": "54b878ab-05e6-4212-b399-ab1f62c59e16" + "uuid": "a3fca212-b8dc-4579-901c-612b806241af" }, "genbank_files5": { - "id": "f825d543d1b9cf39", + "id": "e1129f30c30438be", "src": "hda", - "uuid": "39021efe-6a4f-4b7f-ba0d-f87c2b436a0f" + "uuid": "5398f2cb-1a25-45e5-9ba0-cd79a88b6e88" }, "genbank_files6": { - "id": "24f234959abeadac", + "id": "abbaf1e2c3c282ad", "src": "hda", - "uuid": "be26c9ab-28e8-449a-bd01-2047af0dfa5d" + "uuid": "f505293a-8223-4da2-a22c-aa261d4955ec" }, "genbank_files7": { - "id": "67e443cb5516c0e0", + "id": "18bb6cd07b986e37", "src": "hda", - "uuid": "f7fd1975-81bc-4a4f-89c6-d946d59782ee" + "uuid": "c50e4b1f-c72a-4272-b324-e1c2c7d50293" }, "genbank_files8": { - "id": "5180b1a726879d60", + "id": "82689942017f4326", "src": "hda", - "uuid": "fb1f0888-2487-4f14-bcdd-fa06923d4cd9" + "uuid": "00d79560-f944-4d8e-98e7-f516684a6100" }, "genbank_files9": { - "id": "c3b441e1ed1e9870", + "id": "ecc2b8a59c690090", "src": "hda", - "uuid": "250500a7-25ca-4cba-8d71-7d16053afcaa" + "uuid": "3d5bb0fb-d610-4939-8fc5-999174fee5ca" } }, - "job_messages": [], + "job_messages": [ + { + "code_desc": "", + "desc": "Fatal error: Exit code 1 ()", + "error_level": 3, + "exit_code": 1, + "type": "exit_code" + } + ], "job_metrics": [], "job_runner_name": null, "job_stderr": "", @@ -108,60 +116,45 @@ "model_class": "Job", "output_collections": { "construct_gb": { - "id": "c5accd210dc5c9dd", + "id": "afa012b5b55ac394", "src": "hdca" } }, "outputs": { - "__new_primary_file_construct_gb|construct_1__": { - "id": "cecf675ce2a554e8", - "src": "hda", - "uuid": "3f70ca65-7fb8-4f83-b6e7-3f9893b1db5e" - }, - "__new_primary_file_construct_gb|construct_2__": { - "id": "9cc1fc667f1eccc7", + "output_zip": { + "id": "7f406d9538852eeb", "src": "hda", - "uuid": "723df0ab-a674-4b94-b805-15e38f56cbd5" - }, - "__new_primary_file_construct_gb|construct_3__": { - "id": "0b28ef6dfa05b9a4", - "src": "hda", - "uuid": "0225d884-89af-4b29-bf0c-d27e776614a3" - }, - "__new_primary_file_construct_gb|construct_4__": { - "id": "dd0a4ddfadd2b33c", - "src": "hda", - "uuid": "2495d80c-1c1d-4aa7-af8c-eac0dd199af2" - }, - "output_zip": { - "id": "dfd75d2f0da631b2", - "src": "hda", - "uuid": "a840b0de-7374-4fc2-bc9c-eec0f6615e2f" + "uuid": "acb064d7-2781-46fe-98df-716fee024c8d" } }, "params": { "__input_ext": "\"input\"", "adv": "{\"enzyme\": \"auto\", \"use_file_names_as_ids\": true}", "assembly_plan_name": "\"Type2sRestrictionAssembly\"", - "chromInfo": "\"/tmp/tmphxxoceah/galaxy-dev/tool-data/shared/ucsc/chrom/?.len\"", + "chromInfo": "\"/tmp/tmpy2ysv6tn/galaxy-dev/tool-data/shared/ucsc/chrom/?.len\"", "dbkey": "\"?\"", "domesticated_input": null, "genbank_files": "{\"values\": [{\"id\": 1, \"src\": \"hdca\"}]}", "topology": "\"circular\"" }, - "state": "ok", - "stderr": "\rassembly: 0%| | 0/4 [00:00\n cloning_simulation(\n ~~~~~~~~~~~~~~~~~~^\n args.parts_files, args.domesticated_seq,\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n ...<3 lines>...\n args.output_simulation, args.enzyme, args.outdir_gb\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n )\n ^\n File \"/home/rkhaled/galaxytools/tools/cloning_simulation/cloning_simulation.py\", line 97, in cloning_simulation\n simulation = assembly_plan.simulate(sequence_repository=repository)\n File \"/home/rkhaled/miniconda3/envs/mulled-v1-6c2b9ebb475a37bd0d9ca7857474e8574719e546de882810f7828fe5993a8adf/lib/python3.13/site-packages/dnacauldron/AssemblyPlan/AssemblyPlan.py\", line 251, in simulate\n simulation_result = assembly.simulate(sequence_repository)\n File \"/home/rkhaled/miniconda3/envs/mulled-v1-6c2b9ebb475a37bd0d9ca7857474e8574719e546de882810f7828fe5993a8adf/lib/python3.13/site-packages/dnacauldron/Assembly/builtin_assembly_classes/Type2sRestrictionAssembly.py\", line 181, in simulate\n records = sequence_repository.get_records(self.parts)\n File \"/home/rkhaled/miniconda3/envs/mulled-v1-6c2b9ebb475a37bd0d9ca7857474e8574719e546de882810f7828fe5993a8adf/lib/python3.13/site-packages/dnacauldron/SequenceRepository.py\", line 120, in get_records\n raise NotInRepositoryError(not_in_repository, repository=self)\ndnacauldron.SequenceRepository.NotInRepositoryError: Parts not found in repo: part1, part2, part3, part4, part5, part6\n\r \r", + "stdout": " 1 2 3 4 5 6\n0 \nID part1 part2 part3 part4 part5 part6\nconstruct_3 construct_1 part_L part_J part_K NaN NaN\nconstruct_4 construct_2 part_L part_J part_K NaN NaN\nconstruct_1 part_A part_B part_C part_D part_E part_F\nconstruct_2 part_A part_G part_H part_I part_F NaN\nSimulating assembly plan assambly...\n", "tool_id": "cloning_simulation", - "tool_stderr": "\rassembly: 0%| | 0/4 [00:00\n cloning_simulation(\n ~~~~~~~~~~~~~~~~~~^\n args.parts_files, args.domesticated_seq,\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n ...<3 lines>...\n args.output_simulation, args.enzyme, args.outdir_gb\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n )\n ^\n File \"/home/rkhaled/galaxytools/tools/cloning_simulation/cloning_simulation.py\", line 97, in cloning_simulation\n simulation = assembly_plan.simulate(sequence_repository=repository)\n File \"/home/rkhaled/miniconda3/envs/mulled-v1-6c2b9ebb475a37bd0d9ca7857474e8574719e546de882810f7828fe5993a8adf/lib/python3.13/site-packages/dnacauldron/AssemblyPlan/AssemblyPlan.py\", line 251, in simulate\n simulation_result = assembly.simulate(sequence_repository)\n File \"/home/rkhaled/miniconda3/envs/mulled-v1-6c2b9ebb475a37bd0d9ca7857474e8574719e546de882810f7828fe5993a8adf/lib/python3.13/site-packages/dnacauldron/Assembly/builtin_assembly_classes/Type2sRestrictionAssembly.py\", line 181, in simulate\n records = sequence_repository.get_records(self.parts)\n File \"/home/rkhaled/miniconda3/envs/mulled-v1-6c2b9ebb475a37bd0d9ca7857474e8574719e546de882810f7828fe5993a8adf/lib/python3.13/site-packages/dnacauldron/SequenceRepository.py\", line 120, in get_records\n raise NotInRepositoryError(not_in_repository, repository=self)\ndnacauldron.SequenceRepository.NotInRepositoryError: Parts not found in repo: part1, part2, part3, part4, part5, part6\n\r \r", + "tool_stdout": " 1 2 3 4 5 6\n0 \nID part1 part2 part3 part4 part5 part6\nconstruct_3 construct_1 part_L part_J part_K NaN NaN\nconstruct_4 construct_2 part_L part_J part_K NaN NaN\nconstruct_1 part_A part_B part_C part_D part_E part_F\nconstruct_2 part_A part_G part_H part_I part_F NaN\nSimulating assembly plan assambly...\n", + "update_time": "2025-05-26T10:00:52.817543", "user_email": "planemo@galaxyproject.org", - "user_id": "b5f519d254c4f536" + "user_id": "66f8380583c086e1" }, - "status": "success", + "output_problems": [ + "Job in error state.. tool_id: cloning_simulation, exit_code: 1, stderr: \rassembly: 0%| | 0/5 [00:00\n cloning_simulation(\n ~~~~~~~~~~~~~~~~~~^\n args.parts_files, args.domesticated_seq,\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n ...<3 lines>...\n args.output_simulation, args.enzyme, args.outdir_gb\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n )\n ^\n File \"/home/rkhaled/galaxytools/tools/cloning_simulation/cloning_simulation.py\", line 97, in cloning_simulation\n simulation = assembly_plan.simulate(sequence_repository=repository)\n File \"/home/rkhaled/miniconda3/envs/mulled-v1-6c2b9ebb475a37bd0d9ca7857474e8574719e546de882810f7828fe5993a8adf/lib/python3.13/site-packages/dnacauldron/AssemblyPlan/AssemblyPlan.py\", line 251, in simulate\n simulation_result = assembly.simulate(sequence_repository)\n File \"/home/rkhaled/miniconda3/envs/mulled-v1-6c2b9ebb475a37bd0d9ca7857474e8574719e546de882810f7828fe5993a8adf/lib/python3.13/site-packages/dnacauldron/Assembly/builtin_assembly_classes/Type2sRestrictionAssembly.py\", line 181, in simulate\n records = sequence_repository.get_records(self.parts)\n File \"/home/rkhaled/miniconda3/envs/mulled-v1-6c2b9ebb475a37bd0d9ca7857474e8574719e546de882810f7828fe5993a8adf/lib/python3.13/site-packages/dnacauldron/SequenceRepository.py\", line 120, in get_records\n raise NotInRepositoryError(not_in_repository, repository=self)\ndnacauldron.SequenceRepository.NotInRepositoryError: Parts not found in repo: part1, part2, part3, part4, part5, part6\n\r \r.", + "Job in error state.. tool_id: cloning_simulation, exit_code: 1, stderr: \rassembly: 0%| | 0/5 [00:00\n cloning_simulation(\n ~~~~~~~~~~~~~~~~~~^\n args.parts_files, args.domesticated_seq,\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n ...<3 lines>...\n args.output_simulation, args.enzyme, args.outdir_gb\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n )\n ^\n File \"/home/rkhaled/galaxytools/tools/cloning_simulation/cloning_simulation.py\", line 97, in cloning_simulation\n simulation = assembly_plan.simulate(sequence_repository=repository)\n File \"/home/rkhaled/miniconda3/envs/mulled-v1-6c2b9ebb475a37bd0d9ca7857474e8574719e546de882810f7828fe5993a8adf/lib/python3.13/site-packages/dnacauldron/AssemblyPlan/AssemblyPlan.py\", line 251, in simulate\n simulation_result = assembly.simulate(sequence_repository)\n File \"/home/rkhaled/miniconda3/envs/mulled-v1-6c2b9ebb475a37bd0d9ca7857474e8574719e546de882810f7828fe5993a8adf/lib/python3.13/site-packages/dnacauldron/Assembly/builtin_assembly_classes/Type2sRestrictionAssembly.py\", line 181, in simulate\n records = sequence_repository.get_records(self.parts)\n File \"/home/rkhaled/miniconda3/envs/mulled-v1-6c2b9ebb475a37bd0d9ca7857474e8574719e546de882810f7828fe5993a8adf/lib/python3.13/site-packages/dnacauldron/SequenceRepository.py\", line 120, in get_records\n raise NotInRepositoryError(not_in_repository, repository=self)\ndnacauldron.SequenceRepository.NotInRepositoryError: Parts not found in repo: part1, part2, part3, part4, part5, part6\n\r \r.", + "Output collection 'construct_gb': expected to have 4 elements, but it had 0." + ], + "status": "failure", "test_index": 0, - "time_seconds": 53.940672636032104, + "time_seconds": 51.33188271522522, "tool_id": "cloning_simulation", "tool_version": "0.1.0+galaxy0" }, @@ -173,21 +166,21 @@ "inputs": { "adv|use_file_names_as_ids": true, "assembly_csv": { - "id": "191f29e52861c771", + "id": "3abc48ca4f3e8d37", "src": "hda" }, "assembly_plan_name": "GibsonAssembly", "genbank_files": { - "id": "10fbf206fb2087c4", + "id": "c1bc3f2cd94aab77", "src": "hdca" }, "topology": "circular" }, "job": { - "command_line": "mkdir 'outdir_zip' && mkdir 'outdir_gb' && cp '/tmp/tmphxxoceah/files/a/e/1/dataset_ae19b93d-96dc-4575-922e-1c1b13cdda00.dat' 'assembly_csv.csv' && python '/home/rkhaled/galaxytools/tools/cloning_simulation/cloning_simulation.py' --parts_files '/tmp/tmphxxoceah/files/6/6/b/dataset_66becc5b-d90e-4bca-8456-82d9f7c209ea.dat' --domesticated_seq '' --assembly_csv 'assembly_csv.csv' --assembly_plan_name 'GibsonAssembly' --file_name_mapping '/tmp/tmphxxoceah/files/6/6/b/dataset_66becc5b-d90e-4bca-8456-82d9f7c209ea.dat:gibson_sequences.fa' --file_name_mapping_dom '' --use_file_names_as_id 'true' --outdir_simulation 'outdir_zip' --outdir_gb 'outdir_gb' --output_simulation 'output_zip.zip' --enzyme 'auto' --topology 'circular' && cp 'output_zip.zip' '/tmp/tmphxxoceah/job_working_directory/000/17/outputs/dataset_cf3ea990-c609-45fe-a823-8786fed863f9.dat'", + "command_line": "mkdir 'outdir_zip' && mkdir 'outdir_gb' && cp '/tmp/tmpy2ysv6tn/files/6/e/b/dataset_6eb20de3-662c-4428-907f-29cbe0a5cc20.dat' 'assembly_csv.csv' && python '/home/rkhaled/galaxytools/tools/cloning_simulation/cloning_simulation.py' --parts_files '/tmp/tmpy2ysv6tn/files/b/6/f/dataset_b6fe141d-f27d-475d-95fd-501e032f0c3b.dat' --domesticated_seq '' --assembly_csv 'assembly_csv.csv' --assembly_plan_name 'GibsonAssembly' --file_name_mapping '/tmp/tmpy2ysv6tn/files/b/6/f/dataset_b6fe141d-f27d-475d-95fd-501e032f0c3b.dat:gibson_sequences.fa' --file_name_mapping_dom '' --use_file_names_as_id 'true' --outdir_simulation 'outdir_zip' --outdir_gb 'outdir_gb' --output_simulation 'output_zip.zip' --enzyme 'auto' --topology 'circular' && cp 'output_zip.zip' '/tmp/tmpy2ysv6tn/job_working_directory/000/17/outputs/dataset_41d853b4-adb6-4605-bbaf-d7178b962d92.dat'", "command_version": "", "copied_from_job_id": null, - "create_time": "2025-05-26T09:45:19.833949", + "create_time": "2025-05-26T10:01:03.681089", "dependencies": [ { "cacheable": false, @@ -367,21 +360,21 @@ } ], "exit_code": 0, - "external_id": "102481", + "external_id": "114833", "galaxy_version": "24.2", "handler": null, - "history_id": "c5accd210dc5c9dd", - "id": "0b28ef6dfa05b9a4", + "history_id": "afa012b5b55ac394", + "id": "991084752433b654", "inputs": { "assembly_csv": { - "id": "191f29e52861c771", + "id": "3abc48ca4f3e8d37", "src": "hda", - "uuid": "ae19b93d-96dc-4575-922e-1c1b13cdda00" + "uuid": "6eb20de3-662c-4428-907f-29cbe0a5cc20" }, "genbank_files1": { - "id": "1bd551c439d3389f", + "id": "9677ca5db33658a1", "src": "hda", - "uuid": "66becc5b-d90e-4bca-8456-82d9f7c209ea" + "uuid": "b6fe141d-f27d-475d-95fd-501e032f0c3b" } }, "job_messages": [], @@ -392,55 +385,55 @@ "model_class": "Job", "output_collections": { "construct_gb": { - "id": "27fa0815bff520f2", + "id": "f1661b71781d8acc", "src": "hdca" } }, "outputs": { "__new_primary_file_construct_gb|construct_1__": { - "id": "a74d82facdf691d6", + "id": "400090ecd3303f56", "src": "hda", - "uuid": "d06a3b4e-424a-4af4-b067-8426c2170c90" + "uuid": "e24f4e4b-a2c0-4ebc-ac8a-e80cb0ce1266" }, "__new_primary_file_construct_gb|construct_2__": { - "id": "7d2e9c5805bbd6ea", + "id": "974cc872eaa7d6a0", "src": "hda", - "uuid": "1f95f8b0-5fc6-4b06-9550-06dd8233e6bd" + "uuid": "baec54da-c9df-4fb2-a156-7aaaabc3ee2d" }, "__new_primary_file_construct_gb|construct_3__": { - "id": "6c4aee794b3972b4", + "id": "8586d482e8f05e33", "src": "hda", - "uuid": "cfd50000-e85e-4b17-985e-f137dc59b08b" + "uuid": "8649dd5f-afe7-44fa-b07c-aba6fdb3c6fc" }, "output_zip": { - "id": "e670fc59d69da207", + "id": "991084752433b654", "src": "hda", - "uuid": "cf3ea990-c609-45fe-a823-8786fed863f9" + "uuid": "41d853b4-adb6-4605-bbaf-d7178b962d92" } }, "params": { "__input_ext": "\"input\"", "adv": "{\"enzyme\": \"auto\", \"use_file_names_as_ids\": true}", "assembly_plan_name": "\"GibsonAssembly\"", - "chromInfo": "\"/tmp/tmphxxoceah/galaxy-dev/tool-data/shared/ucsc/chrom/?.len\"", + "chromInfo": "\"/tmp/tmpy2ysv6tn/galaxy-dev/tool-data/shared/ucsc/chrom/?.len\"", "dbkey": "\"?\"", "domesticated_input": null, "genbank_files": "{\"values\": [{\"id\": 3, \"src\": \"hdca\"}]}", "topology": "\"circular\"" }, "state": "ok", - "stderr": "\rassembly: 0%| | 0/5 [00:00