PCFET0NUWVBFIGh0bWw+CjxodG1sPgoKPGhlYWQ+CjxtZXRhIGNoYXJzZXQ9IkVVQy1KUCI+CjxzY3JpcHQ+CgpmdW5jdGlvbiB0ZXN0KCkKewogICAgLy8gWyBmb250TmFtZSwgZXhwZWN0YXRpb24sIGlzU3lzdGVtRm9udCBdCiAgICB2YXIgRk9OVF9BTkRfRVhQRUNUQVRJT05TID0gWwogICAgICAgIFsgbnVsbCwgInllbiBzaWduIiBdLAogICAgICAgIFsgIk1TIFBHb3RoaWMiLCAieWVuIHNpZ24iIF0sCiAgICAgICAgWyAiTVMgR290aGljIiwgInllbiBzaWduIiBdLAogICAgICAgIFsgIk1TIFBNaW5jaG8iLCAieWVuIHNpZ24iIF0sCiAgICAgICAgWyAiTVMgTWluY2hvIiwgInllbiBzaWduIiBdLAogICAgICAgIFsgIk1laXJ5byIsICJ5ZW4gc2lnbiIgXSwKICAgICAgICBbICKjzaPTIKPQpbSlt6XDpa8iLCAieWVuIHNpZ24iIF0sCiAgICAgICAgWyAio82j0yCltKW3pcOlryIsICJ5ZW4gc2lnbiIgXSwKICAgICAgICBbICKjzaPTIKPQzMDEqyIsICJ5ZW4gc2lnbiIgXSwKICAgICAgICBbICKjzaPTIMzAxKsiLCAieWVuIHNpZ24iIF0sCiAgICAgICAgWyAipeGlpKXqpaoiLCAieWVuIHNpZ24iIF0sCiAgICAgICAgWyAiVGltZXMiLCAiYmFja3NsYXNoIiBdLAogICAgICAgIFsgImZvb2JhciIsICJiYWNrc2xhc2giIF0sCiAgICAgICAgWyAiKklOVkFMSUQgRk9OVCBOQU1FKiIsICJ5ZW4gc2lnbiIgXSwKICAgICAgICBbICJzZXJpZiIsICJ5ZW4gc2lnbiIgXSwKICAgICAgICBbICJzYW5zLXNlcmlmIiwgInllbiBzaWduIiBdLAogICAgICAgIFsgImN1cnNpdmUiLCAieWVuIHNpZ24iIF0sCiAgICAgICAgWyAiZmFudGFzeSIsICJ5ZW4gc2lnbiIgXSwKICAgICAgICBbICJtb25vc3BhY2UiLCAieWVuIHNpZ24iIF0sCiAgICAgICAgWyAiLXdlYmtpdC1ib2R5IiwgImJhY2tzbGFzaCIgXSwKICAgICAgICBbICJjYXB0aW9uIiwgInllbiBzaWduIiwgdHJ1ZSBdLAogICAgICAgIFsgImljb24iLCAieWVuIHNpZ24iLCB0cnVlIF0sCiAgICAgICAgWyAibWVudSIsICJ5ZW4gc2lnbiIsIHRydWUgXSwKICAgICAgICBbICJtZXNzYWdlLWJveCIsICJ5ZW4gc2lnbiIsIHRydWUgXSwKICAgICAgICBbICJzbWFsbC1jYXB0aW9uIiwgInllbiBzaWduIiwgdHJ1ZSBdLAogICAgICAgIFsgInN0YXR1cy1iYXIiLCAieWVuIHNpZ24iLCB0cnVlIF0sCiAgICAgICAgWyAiLXdlYmtpdC1taW5pLWNvbnRyb2wiLCAieWVuIHNpZ24iLCB0cnVlIF0sCiAgICAgICAgWyAiLXdlYmtpdC1zbWFsbC1jb250cm9sIiwgInllbiBzaWduIiwgdHJ1ZSBdLAogICAgICAgIFsgIi13ZWJraXQtY29udHJvbCIsICJ5ZW4gc2lnbiIsIHRydWUgXSwKICAgICAgICBbICJNUyBHb3RoaWMsIFRpbWVzIiwgInllbiBzaWduIiBdLAogICAgICAgIFsgIlRpbWVzLCBNUyBHb3RoaWMiLCAiYmFja3NsYXNoIiBdLAogICAgICAgIFsgIk1TIEdvdGhpYywgZm9vYmFyIiwgInllbiBzaWduIiBdLAogICAgICAgIFsgImZvb2JhciwgTVMgR290aGljIiwgImJhY2tzbGFzaCIgXSwKICAgICAgICBbICJzZXJpZiwgVGltZXMiLCAieWVuIHNpZ24iIF0sCiAgICAgICAgWyAiVGltZXMsIHNlcmlmIiwgImJhY2tzbGFzaCIgXSwKICAgICAgICBbICJzZXJpZiwgc2VyaWYiLCAieWVuIHNpZ24iIF0sCiAgICAgICAgWyAiZm9vYmFyLCBUaW1lcyIsICJiYWNrc2xhc2giIF0sCiAgICAgICAgWyAiVGltZXMsIGZvb2JhciIsICJiYWNrc2xhc2giIF0KICAgIF07CgogICAgZm9yICh2YXIgaSA9IDA7IEZPTlRfQU5EX0VYUEVDVEFUSU9OU1tpXTsgaSsrKSB7CiAgICAgICAgdmFyIGZvbnROYW1lID0gRk9OVF9BTkRfRVhQRUNUQVRJT05TW2ldWzBdOwogICAgICAgIHZhciBleHBlY3RhdGlvbiA9IEZPTlRfQU5EX0VYUEVDVEFUSU9OU1tpXVsxXTsKICAgICAgICB2YXIgaXNTeXN0ZW1Gb250ID0gRk9OVF9BTkRfRVhQRUNUQVRJT05TW2ldWzJdOwogICAgICAgIHZhciBwYXJlbnRFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CgogICAgICAgIHZhciBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpOwogICAgICAgIGlmIChpc1N5c3RlbUZvbnQpCiAgICAgICAgICAgIGVsZW1lbnQuc3R5bGUuZm9udCA9IGZvbnROYW1lOwogICAgICAgIGVsc2UgaWYgKGZvbnROYW1lKQogICAgICAgICAgICBlbGVtZW50LnN0eWxlLmZvbnQgPSAiMWVtICIgKyBmb250TmFtZTsKCiAgICAgICAgaWYgKGZvbnROYW1lKQogICAgICAgICAgICB0ZXh0ID0gJ1VzaW5nIGZvbnQgIicgKyBmb250TmFtZSArICciLiAnOwogICAgICAgIGVsc2UKICAgICAgICAgICAgdGV4dCA9ICdObyBmb250IGlzIHNwZWNpZmllZC4gJzsKICAgICAgICB0ZXh0ICs9ICdleHBlY3RlZDogJyArIGV4cGVjdGF0aW9uICsgJywgYWN0dWFsOiAnICsgJ1xcJzsKICAgICAgICBlbGVtZW50LmlubmVySFRNTCA9IHRleHQ7CgogICAgICAgIC8vIENoZWNrIGluaGVyaXRhbmNlIHdpdGggZm9udCBwcm9wZXJ0eS4KICAgICAgICBjaGlsZEVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7CiAgICAgICAgY2hpbGRFbGVtZW50LnN0eWxlLmZvbnQgPSAiaW5oZXJpdCI7CiAgICAgICAgY2hpbGRFbGVtZW50LmlubmVyVGV4dCA9ICdcXCc7CiAgICAgICAgZWxlbWVudC5hcHBlbmRDaGlsZChjaGlsZEVsZW1lbnQpOwoKICAgICAgICAvLyBDaGVjayBpbmhlcml0YW5jZSB3aXRoIGZvbnQtZmFtaWx5IHByb3BlcnR5LgogICAgICAgIHZhciBjaGlsZEVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7CiAgICAgICAgY2hpbGRFbGVtZW50LnN0eWxlLmZvbnRGYW1pbHkgPSAiaW5oZXJpdCI7CiAgICAgICAgY2hpbGRFbGVtZW50LmlubmVyVGV4dCA9ICdcXCc7CiAgICAgICAgZWxlbWVudC5hcHBlbmRDaGlsZChjaGlsZEVsZW1lbnQpOwoKICAgICAgICBwYXJlbnRFbGVtZW50LmFwcGVuZENoaWxkKGVsZW1lbnQpOwoKICAgICAgICBpZiAoZm9udE5hbWUgJiYgIWlzU3lzdGVtRm9udCkgewogICAgICAgICAgICBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpOwogICAgICAgICAgICBlbGVtZW50LmlubmVyVGV4dCA9ICdcXCc7CiAgICAgICAgICAgIGVsZW1lbnQuc3R5bGUuZm9udEZhbWlseSA9IGZvbnROYW1lOwogICAgICAgICAgICBwYXJlbnRFbGVtZW50LmFwcGVuZENoaWxkKGVsZW1lbnQpOwogICAgICAgIH0KCiAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChwYXJlbnRFbGVtZW50KTsKICAgIH0KfQoKPC9zY3JpcHQ+CjwvaGVhZD4KCjxib2R5IG9ubG9hZD0idGVzdCgpOyI+CjwvYm9keT4KCjwvaHRtbD4K