--------_3FA3B7E3D08804AAF420_MULTIPART_MIXED_ Content-Type: text/plain; charset="ISO-2022-JP" Content-Transfer-Encoding: 7bit 西山和広です。 lib/test/unit/ui/tk/testrunner.rbを作ってみました。 良ければ取り込んでください。 test/ruby/test_signal.rbで例外がTk.mainloopが動いているメインスレッドに 来ているという問題もありましたが、これはTk.mainloopに来た例外をテスト 実行中の場合はテストを実行しているスレッドに投げ直すことで対応しました。 既知の問題点: : test/runner.rb --runner を実行するとfailureが4つある。 --runner頽と共通のfailure(test_add_failed_assertionと test_add_failure_nested)とtest_assert_nothing_thrownと test_assert_throws。 : progressbarの場 防 しているものがprogressbarではない。 TkCanvasで作ってみればいいかと思ったのですが、TkCanvasの使い方が わからなかったのでTkLabelで色が緑と赤になるだけでごまかしています。 : TkTextが折り返しをしているので横スクロールバーが無意味 TkTextがデフォルトで横のスクロールバー付きでしかも折り返し してくれているので、横スクロールバーに意味がないと思うのですが、 デフォルトの動作のようなのでままにしています。 (変更方法がわからなかったという理由もあります。) -- |ZnZ(ゼット エヌ ゼット) |西山和広(Kazuhiro NISHIYAMA) --------_3FA3B7E3D08804AAF420_MULTIPART_MIXED_ Content-Type: application/octet-stream; name="testrunner.rb" Content-Disposition: attachment; filename estrunner.rb" Content-Transfer-Encoding: base64 IyA6bm9kb2M6CiMKIyBPcmlnaW5hbCBBdXRob3I6OiBOYXRoYW5pZWwgVGFsYm90dC4KIyBBdXRo b3I6OiBLYXp1aGlybyBOSVNISVlBTUEuCiMgQ29weXJpZ2h0OjogQ29weXJpZ2h0IChjKSAyMDAw LTIwMDIgTmF0aGFuaWVsIFRhbGJvdHQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiMgQ29weXJpZ2h0 OjogQ29weXJpZ2h0IChjKSAyMDAzIEthenVoaXJvIE5JU0hJWUFNQS4gQWxsIHJpZ2h0cyByZXNl cnZlZC4KIyBMaWNlbnNlOjogUnVieSBsaWNlbnNlLgoKcmVxdWlyZSAndGsnCnJlcXVpcmUgJ3Rl c3QvdW5pdC91aS90ZXN0cnVubmVybWVkaWF0b3InCnJlcXVpcmUgJ3Rlc3QvdW5pdC91aS90ZXN0 cnVubmVydXRpbGl0aWVzJwoKbW9kdWxlIFRlc3QKICBtb2R1bGUgVW5pdAogICAgbW9kdWxlIFVJ CiAgICAgIG1vZHVsZSBUayAjIDpub2RvYzoKCiAgICAgICAgIyBSdW5zIGEgVGVzdDo6VW5pdDo6 VGVzdFN1aXRlIGluIGEgVGsgVUkuIE9idmlvdXNseSwKICAgICAgICAjIHRoaXMgb25lIHJlcXVp cmVzIHlvdSB0byBoYXZlIFRrCiAgICAgICAgIyBhbmQgdGhlIFJ1YnkgVGsgZXh0ZW5zaW9uIGlu c3RhbGxlZC4KICAgICAgICBjbGFzcyBUZXN0UnVubmVyCiAgICAgICAgICBleHRlbmQgVGVzdFJ1 bm5lclV0aWxpdGllcwoKICAgICAgICAgICMgQ3JlYXRlcyBhIG5ldyBUZXN0UnVubmVyIGFuZCBy dW5zIHRoZSBzdWl0ZS4KICAgICAgICAgIGRlZiBzZWxmLnJ1bihzdWl0ZSkKICAgICAgICAgICAg bmV3KHN1aXRlKS5zdGFydAoKICAgICAgICAgIGVuZAoKICAgICAgICAgICMgQ3JlYXRlcyBhIG5l dyBUZXN0UnVubmVyIGZvciBydW5uaW5nIHRoZSBwYXNzZWQKICAgICAgICAgICMgc3VpdGUuCiAg ICAgICAgICBkZWYgaW5pdGlhbGl6ZShzdWl0ZSkKICAgICAgICAgICAgaWYgKHN1aXRlLnJlc3Bv bmRfdG8/KDpzdWl0ZSkpCiAgICAgICAgICAgICAgQHN1aXRlID0gc3VpdGUuc3VpdGUKICAgICAg ICAgICAgZWxzZQogICAgICAgICAgICAgIEBzdWl0ZSA9IHN1aXRlCiAgICAgICAgICAgIGVuZAoK ICAgICAgICAgICAgQHJlZCA9IGZhbHNlCiAgICAgICAgICAgIEBmYXVsdF9kZXRhaWxfbGlzdCA9 IFtdCiAgICAgICAgICAgIEBydW5fc3VpdGVfdGhyZWFkID0gbmlsCiAgICAgICAgICBlbmQKCiAg ICAgICAgICAjIEJlZ2lucyB0aGUgdGVzdCBydW4uCiAgICAgICAgICBkZWYgc3RhcnQKICAgICAg ICAgICAgc2V0dXBfdWkKICAgICAgICAgICAgc2V0dXBfbWVkaWF0b3IKICAgICAgICAgICAgYXR0 YWNoX3RvX21lZGlhdG9yCiAgICAgICAgICAgIHN0YXJ0X3VpCiAgICAgICAgICBlbmQKCiAgICAg ICAgICBwcml2YXRlCiAgICAgICAgICBkZWYgc2V0dXBfbWVkaWF0b3IgIyA6bm9kb2M6CiAgICAg ICAgICAgIEBtZWRpYXRvciA9IFRlc3RSdW5uZXJNZWRpYXRvci5uZXcoQHN1aXRlKQogICAgICAg ICAgICBzdWl0ZV9uYW1lID0gQHN1aXRlLnRvX3MKICAgICAgICAgICAgaWYgKCBAc3VpdGUua2lu ZF9vZj8oTW9kdWxlKSApCiAgICAgICAgICAgICAgc3VpdGVfbmFtZSA9IEBzdWl0ZS5uYW1lCiAg ICAgICAgICAgIGVuZAogICAgICAgICAgICBAc3VpdGVfbmFtZV9lbnRyeS52YWx1ZSA9IHN1aXRl X25hbWUKICAgICAgICAgIGVuZAoKICAgICAgICAgIGRlZiBhdHRhY2hfdG9fbWVkaWF0b3IgIyA6 bm9kb2M6CiAgICAgICAgICAgIEBydW5fYnV0dG9uLmNvbW1hbmQobWV0aG9kKDpydW5fc3VpdGUp KQogICAgICAgICAgICBAZmF1bHRfbGlzdC5iaW5kKCdCdXR0b25QcmVzcy0xJywgcHJvY3t8eXwK ICAgICAgICAgICAgICBmYXVsdCA9IEBmYXVsdF9kZXRhaWxfbGlzdFtAZmF1bHRfbGlzdC5uZWFy ZXN0KHkpXQogICAgICAgICAgICAgIGlmIGZhdWx0CiAgICAgICAgICAgICAgICBzaG93X2ZhdWx0 KGZhdWx0KQogICAgICAgICAgICAgIGVuZAogICAgICAgICAgICB9LCAnJXknKQogICAgICAgICAg ICBAbWVkaWF0b3IuYWRkX2xpc3RlbmVyKFRlc3RSdW5uZXJNZWRpYXRvcjo6UkVTRVQsICZtZXRo b2QoOnJlc2V0X3VpKSkKICAgICAgICAgICAgQG1lZGlhdG9yLmFkZF9saXN0ZW5lcihUZXN0UmVz dWx0OjpGQVVMVCwgJm1ldGhvZCg6YWRkX2ZhdWx0KSkKICAgICAgICAgICAgQG1lZGlhdG9yLmFk ZF9saXN0ZW5lcihUZXN0UmVzdWx0OjpDSEFOR0VELCAmbWV0aG9kKDpyZXN1bHRfY2hhbmdlZCkp CiAgICAgICAgICAgIEBtZWRpYXRvci5hZGRfbGlzdGVuZXIoVGVzdFJ1bm5lck1lZGlhdG9yOjpT VEFSVEVELCAmbWV0aG9kKDpzdGFydGVkKSkKICAgICAgICAgICAgQG1lZGlhdG9yLmFkZF9saXN0 ZW5lcihUZXN0Q2FzZTo6U1RBUlRFRCwgJm1ldGhvZCg6dGVzdF9zdGFydGVkKSkKICAgICAgICAg ICAgQG1lZGlhdG9yLmFkZF9saXN0ZW5lcihUZXN0UnVubmVyTWVkaWF0b3I6OkZJTklTSEVELCAm bWV0aG9kKDpmaW5pc2hlZCkpCiAgICAgICAgICBlbmQKCiAgICAgICAgICBkZWYgc3RhcnRfdWkg IyA6bm9kb2M6CiAgICAgICAgICAgIHJ1bl9zdWl0ZQogICAgICAgICAgICBiZWdpbgogICAgICAg ICAgICAgIDo6VGsubWFpbmxvb3AKICAgICAgICAgICAgcmVzY3VlIEV4Y2VwdGlvbgogICAgICAg ICAgICAgIGlmIEBydW5fc3VpdGVfdGhyZWFkIGFuZCBAcnVuX3N1aXRlX3RocmVhZC5hbGl2ZT8K ICAgICAgICAgICAgICAgIEBydW5fc3VpdGVfdGhyZWFkLnJhaXNlICQhCiAgICAgICAgICAgICAg ICByZXRyeQogICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgIHJhaXNlCiAgICAgICAg ICAgICAgZW5kCiAgICAgICAgICAgIGVuZAogICAgICAgICAgZW5kCgogICAgICAgICAgZGVmIHN0 b3AgIyA6bm9kb2M6CiAgICAgICAgICAgIDo6VGsuZXhpdAogICAgICAgICAgZW5kCgogICAgICAg ICAgZGVmIHJlc2V0X3VpKGNvdW50KSAjIDpub2RvYzoKICAgICAgICAgICAgQHRlc3RfcHJvZ3Jl c3NfYmFyLmNvbmZpZ3VyZSgnYmFja2dyb3VuZCc9PidncmVlbicpCiAgICAgICAgICAgIEByZWQg PSBmYWxzZQoKICAgICAgICAgICAgQHRlc3RfY291bnRfbGFiZWwudmFsdWUgPSAwCiAgICAgICAg ICAgIEBhc3NlcnRpb25fY291bnRfbGFiZWwudmFsdWUgPSAwCiAgICAgICAgICAgIEBmYWlsdXJl X2NvdW50X2xhYmVsLnZhbHVlID0gMAogICAgICAgICAgICBAZXJyb3JfY291bnRfbGFiZWwudmFs dWUgPSAwCgogICAgICAgICAgICBAZmF1bHRfbGlzdC5kZWxldGUoMCwgJ2VuZCcpCiAgICAgICAg ICAgIEBmYXVsdF9kZXRhaWxfbGlzdCA9IFtdCiAgICAgICAgICAgIGNsZWFyX2ZhdWx0CiAgICAg ICAgICBlbmQKCiAgICAgICAgICBkZWYgYWRkX2ZhdWx0KGZhdWx0KSAjIDpub2RvYzoKICAgICAg ICAgICAgaWYgKCAhIEByZWQgKQogICAgICAgICAgICAgIEB0ZXN0X3Byb2dyZXNzX2Jhci5jb25m aWd1cmUoJ2JhY2tncm91bmQnPT4ncmVkJykKICAgICAgICAgICAgICBAcmVkID0gdHJ1ZQogICAg ICAgICAgICBlbmQKICAgICAgICAgICAgQGZhdWx0X2RldGFpbF9saXN0LnB1c2ggZmF1bHQKICAg ICAgICAgICAgQGZhdWx0X2xpc3QuaW5zZXJ0KCdlbmQnLCBmYXVsdC5zaG9ydF9kaXNwbGF5KQog ICAgICAgICAgZW5kCgogICAgICAgICAgZGVmIHNob3dfZmF1bHQoZmF1bHQpICMgOm5vZG9jOgog ICAgICAgICAgICByYXdfc2hvd19mYXVsdChmYXVsdC5sb25nX2Rpc3BsYXkpCiAgICAgICAgICBl bmQKCiAgICAgICAgICBkZWYgcmF3X3Nob3dfZmF1bHQoc3RyaW5nKSAjIDpub2RvYzoKICAgICAg ICAgICAgQGRldGFpbF90ZXh0LnZhbHVlID0gc3RyaW5nCiAgICAgICAgICBlbmQKCiAgICAgICAg ICBkZWYgY2xlYXJfZmF1bHQgIyA6bm9kb2M6CiAgICAgICAgICAgIHJhd19zaG93X2ZhdWx0KCIi KQogICAgICAgICAgZW5kCgogICAgICAgICAgZGVmIHJlc3VsdF9jaGFuZ2VkKHJlc3VsdCkgIyA6 bm9kb2M6CiAgICAgICAgICAgIEB0ZXN0X2NvdW50X2xhYmVsLnZhbHVlID0gcmVzdWx0LnJ1bl9j b3VudC50b19zCiAgICAgICAgICAgIEBhc3NlcnRpb25fY291bnRfbGFiZWwudmFsdWUgPSByZXN1 bHQuYXNzZXJ0aW9uX2NvdW50LnRvX3MKICAgICAgICAgICAgQGZhaWx1cmVfY291bnRfbGFiZWwu dmFsdWUgPSByZXN1bHQuZmFpbHVyZV9jb3VudC50b19zCiAgICAgICAgICAgIEBlcnJvcl9jb3Vu dF9sYWJlbC52YWx1ZSA9IHJlc3VsdC5lcnJvcl9jb3VudC50b19zCiAgICAgICAgICBlbmQKCiAg ICAgICAgICBkZWYgc3RhcnRlZChyZXN1bHQpICMgOm5vZG9jOgogICAgICAgICAgICBvdXRwdXRf c3RhdHVzKCJTdGFydGVkLi4uIikKICAgICAgICAgIGVuZAoKICAgICAgICAgIGRlZiB0ZXN0X3N0 YXJ0ZWQodGVzdF9uYW1lKQogICAgICAgICAgICBvdXRwdXRfc3RhdHVzKCJSdW5uaW5nICN7dGVz dF9uYW1lfS4uLiIpCiAgICAgICAgICBlbmQKCiAgICAgICAgICBkZWYgZmluaXNoZWQoZWxhcHNl ZF90aW1lKQogICAgICAgICAgICBvdXRwdXRfc3RhdHVzKCJGaW5pc2hlZCBpbiAje2VsYXBzZWRf dGltZX0gc2Vjb25kcyIpCiAgICAgICAgICBlbmQKCiAgICAgICAgICBkZWYgb3V0cHV0X3N0YXR1 cyhzdHJpbmcpICMgOm5vZG9jOgogICAgICAgICAgICBAc3RhdHVzX2VudHJ5LnZhbHVlID0gc3Ry aW5nCiAgICAgICAgICBlbmQKCiAgICAgICAgICBkZWYgc2V0dXBfdWkgIyA6bm9kb2M6CiAgICAg ICAgICAgIEBzdGF0dXNfZW50cnkgPSBUa1ZhcmlhYmxlLm5ldwogICAgICAgICAgICBsID0gVGtM YWJlbC5uZXcobmlsLCAndGV4dHZhcmlhYmxlJz0+QHN0YXR1c19lbnRyeSwgJ3JlbGllZic9Pidz dW5rZW4nKQogICAgICAgICAgICBsLnBhY2soJ3NpZGUnPT4nYm90dG9tJywgJ2ZpbGwnPT4neCcp CgogICAgICAgICAgICBzdWl0ZV9mcmFtZSA9IFRrRnJhbWUubmV3LnBhY2soJ2ZpbGwnPT4neCcp CgogICAgICAgICAgICBAcnVuX2J1dHRvbiA9IFRrQnV0dG9uLm5ldyhzdWl0ZV9mcmFtZSwgJ3Rl eHQnPT4nUnVuJykKICAgICAgICAgICAgQHJ1bl9idXR0b24ucGFjaygnc2lkZSc9PidyaWdodCcp CgogICAgICAgICAgICBUa0xhYmVsLm5ldyhzdWl0ZV9mcmFtZSwgJ3RleHQnPT4nU3VpdGU6Jyku cGFjaygnc2lkZSc9PidsZWZ0JykKICAgICAgICAgICAgQHN1aXRlX25hbWVfZW50cnkgPSBUa1Zh cmlhYmxlLm5ldwogICAgICAgICAgICBsID0gVGtMYWJlbC5uZXcoc3VpdGVfZnJhbWUsICd0ZXh0 dmFyaWFibGUnPT5Ac3VpdGVfbmFtZV9lbnRyeSwgJ3JlbGllZic9PidzdW5rZW4nKQogICAgICAg ICAgICBsLnBhY2soJ3NpZGUnPT4nbGVmdCcsICdmaWxsJz0+J3gnLCAnZXhwYW5kJz0+dHJ1ZSkK CiAgICAgICAgICAgIEB0ZXN0X3Byb2dyZXNzX2JhciA9IFRrTGFiZWwubmV3KG5pbCwgJ2JhY2tn cm91bmQnPT4nZ3JlZW4nKQogICAgICAgICAgICBAdGVzdF9wcm9ncmVzc19iYXIucGFjaygnZmls bCc9Pid4JykKCgogICAgICAgICAgICBpbmZvX2ZyYW1lID0gVGtGcmFtZS5uZXcucGFjaygnZmls bCc9Pid4JywgJ2V4cGFuZCc9PnRydWUpCiAgICAgICAgICAgIEB0ZXN0X2NvdW50X2xhYmVsID0g Y3JlYXRlX2NvdW50X2xhYmVsKGluZm9fZnJhbWUsICdUZXN0czonKQogICAgICAgICAgICBAYXNz ZXJ0aW9uX2NvdW50X2xhYmVsID0gY3JlYXRlX2NvdW50X2xhYmVsKGluZm9fZnJhbWUsICdBc3Nl cnRpb25zOicpCiAgICAgICAgICAgIEBmYWlsdXJlX2NvdW50X2xhYmVsID0gY3JlYXRlX2NvdW50 X2xhYmVsKGluZm9fZnJhbWUsICdGYWlsdXJlczonKQogICAgICAgICAgICBAZXJyb3JfY291bnRf bGFiZWwgPSBjcmVhdGVfY291bnRfbGFiZWwoaW5mb19mcmFtZSwgJ0Vycm9yczonKQoKICAgICAg ICAgICAgZmF1bHRfbGlzdF9mcmFtZSA9IFRrRnJhbWUubmV3LnBhY2soJ2ZpbGwnPT4nYm90aCcs ICdleHBhbmQnPT50cnVlKQoKICAgICAgICAgICAgZmF1bHRfc2Nyb2xsYmFyID0gVGtTY3JvbGxi YXIubmV3KGZhdWx0X2xpc3RfZnJhbWUpCiAgICAgICAgICAgIGZhdWx0X3Njcm9sbGJhci5wYWNr KCdzaWRlJz0+J3JpZ2h0JywgJ2ZpbGwnPT4neScpCiAgICAgICAgICAgIEBmYXVsdF9saXN0ID0g VGtMaXN0Ym94Lm5ldyhmYXVsdF9saXN0X2ZyYW1lKQogICAgICAgICAgICBAZmF1bHRfbGlzdC5w YWNrKCdmaWxsJz0+J2JvdGgnLCAnZXhwYW5kJz0+dHJ1ZSkKICAgICAgICAgICAgQGZhdWx0X2xp c3QueXNjcm9sbGJhcihmYXVsdF9zY3JvbGxiYXIpCgogICAgICAgICAgICBkZXRhaWxfZnJhbWUg PSBUa0ZyYW1lLm5ldy5wYWNrKCdmaWxsJz0+J2JvdGgnLCAnZXhwYW5kJz0+dHJ1ZSkKICAgICAg ICAgICAgZGV0YWlsX3Njcm9sbGJhcl95ID0gVGtTY3JvbGxiYXIubmV3KGRldGFpbF9mcmFtZSkK ICAgICAgICAgICAgZGV0YWlsX3Njcm9sbGJhcl95LnBhY2soJ3NpZGUnPT4ncmlnaHQnLCAnZmls bCc9Pid5JykKICAgICAgICAgICAgZGV0YWlsX3Njcm9sbGJhcl94ID0gVGtTY3JvbGxiYXIubmV3 KGRldGFpbF9mcmFtZSkKICAgICAgICAgICAgZGV0YWlsX3Njcm9sbGJhcl94LnBhY2soJ3NpZGUn PT4nYm90dG9tJywgJ2ZpbGwnPT4neCcpCiAgICAgICAgICAgIEBkZXRhaWxfdGV4dCA9IFRrVGV4 dC5uZXcoZGV0YWlsX2ZyYW1lLCAnaGVpZ2h0Jz0+MTApIHsKICAgICAgICAgICAgICBiaW5kdGFn cyhiaW5kdGFncyAtIFtUa1RleHRdKQogICAgICAgICAgICB9CiAgICAgICAgICAgIEBkZXRhaWxf dGV4dC5wYWNrKCdmaWxsJz0+J2JvdGgnLCAnZXhwYW5kJz0+dHJ1ZSkKICAgICAgICAgICAgQGRl dGFpbF90ZXh0LnlzY3JvbGxiYXIoZGV0YWlsX3Njcm9sbGJhcl95KQogICAgICAgICAgICBAZGV0 YWlsX3RleHQueHNjcm9sbGJhcihkZXRhaWxfc2Nyb2xsYmFyX3gpCiAgICAgICAgICBlbmQKCiAg ICAgICAgICBkZWYgY3JlYXRlX2NvdW50X2xhYmVsKHBhcmVudCwgbGFiZWwpICMgOm5vZG9jOgog ICAgICAgICAgICBUa0xhYmVsLm5ldyhwYXJlbnQsICd0ZXh0Jz0+bGFiZWwpLnBhY2soJ3NpZGUn PT4nbGVmdCcsICdleHBhbmQnPT50cnVlKQogICAgICAgICAgICB2ID0gVGtWYXJpYWJsZS5uZXco MCkKICAgICAgICAgICAgVGtMYWJlbC5uZXcocGFyZW50LCAndGV4dHZhcmlhYmxlJz0+dikucGFj aygnc2lkZSc9PidsZWZ0JywgJ2V4cGFuZCc9PnRydWUpCiAgICAgICAgICAgIHYKICAgICAgICAg IGVuZAoKICAgICAgICAgIGRlZiBydW5fc3VpdGUgIyA6bm9kb2M6CiAgICAgICAgICAgIHJ1bl9w cm9jID0gcHJvYyB7CiAgICAgICAgICAgICAgQHJ1bl9zdWl0ZV90aHJlYWQgPSBUaHJlYWQuc3Rh cnQgewogICAgICAgICAgICAgICAgQG1lZGlhdG9yLnJ1bl9zdWl0ZQogICAgICAgICAgICAgIH0K ICAgICAgICAgICAgfQogICAgICAgICAgICBUa0FmdGVyLm5ldygxMDAwLCAxLCBydW5fcHJvYyku c3RhcnQKICAgICAgICAgIGVuZAogICAgICAgIGVuZAogICAgICBlbmQKICAgIGVuZAogIGVuZApl bmQKCmlmIF9fRklMRV9fID09ICQwCiAgVGVzdDo6VW5pdDo6VUk6OlRrOjpUZXN0UnVubmVyLnN0 YXJ0X2NvbW1hbmRfbGluZV90ZXN0CmVuZAo-------_3FA3B7E3D08804AAF420_MULTIPART_MIXED_ Content-Type: application/octet-stream; name="autorunner.rb.diff" Content-Disposition: attachment; filename utorunner.rb.diff" Content-Transfer-Encoding: base64 ZGlmZiAtdSAtcCAtcjEuMiBhdXRvcnVubmVyLnJiCi0tLSBsaWIvdGVzdC91bml0L2F1dG9ydW5u ZXIucmIJMzAgT2N0IDIwMDMgMDE6MTc6NDAgLTAwMDAJMS4yCisrKyBsaWIvdGVzdC91bml0L2F1 dG9ydW5uZXIucmIJMzAgT2N0IDIwMDMgMTc6MDA6NTMgLTAwMDAKQEAgLTI5LDYgKzI5LDEwIEBA IG1vZHVsZSBUZXN0CiAgICAgICAgICAgcmVxdWlyZSAndGVzdC91bml0L3VpL2ZveC90ZXN0cnVu bmVyJwogICAgICAgICAgIFRlc3Q6OlVuaXQ6OlVJOjpGb3g6OlRlc3RSdW5uZXIucnVuKHIuc3Vp dGUpCiAgICAgICAgIGVuZCwKKyAgICAgICAgOnRrID0+IHByb2MgZG8gfHJ8CisgICAgICAgICAg cmVxdWlyZSAndGVzdC91bml0L3VpL3RrL3Rlc3RydW5uZXInCisgICAgICAgICAgVGVzdDo6VW5p dDo6VUk6OlRrOjpUZXN0UnVubmVyLnJ1bihyLnN1aXRlKQorICAgICAgICBlbmQsCiAgICAgICB9 CiAKICAgICAgIE9VVFBVVF9MRVZFTFMgPSB7Cg --------_3FA3B7E3D08804AAF420_MULTIPART_MIXED_--