{"id":6,"date":"2026-10-10T12:47:12","date_gmt":"2026-10-10T09:47:12","guid":{"rendered":"http:\/\/ai-workers.ru\/?page_id=6"},"modified":"2026-10-10T12:53:54","modified_gmt":"2026-10-10T09:53:54","slug":"calculator","status":"publish","type":"page","link":"https:\/\/ai-workers.ru\/?page_id=6","title":{"rendered":"\u041a\u0430\u043b\u044c\u043a\u0443\u043b\u044f\u0442\u043e\u0440"},"content":{"rendered":"\n<p>\n\u041e\u0431\u044b\u0447\u043d\u044b\u0439 \u0440\u0435\u0436\u0438\u043c, \u043a\u0430\u043a \u0432 Windows: \u043f\u0430\u043c\u044f\u0442\u044c, \u043f\u0440\u043e\u0446\u0435\u043d\u0442\u044b, \u043a\u043e\u0440\u0435\u043d\u044c, \u0441\u0442\u0435\u043f\u0435\u043d\u0438 \u0438 \u0433\u043e\u0440\u044f\u0447\u0438\u0435 \u043a\u043b\u0430\u0432\u0438\u0448\u0438.\n<\/p>\n<style>\n\/*\n * \u0421\u0442\u0438\u043b\u0438 \u0432\u0438\u0434\u0436\u0435\u0442\u0430 \u043a\u0430\u043b\u044c\u043a\u0443\u043b\u044f\u0442\u043e\u0440\u0430. \u0412\u0441\u0451 \u0438\u0437\u043e\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u043e \u0432\u043d\u0443\u0442\u0440\u0438 .awc-calc,\n * \u0447\u0442\u043e\u0431\u044b \u0442\u0435\u043c\u0430 \u0441\u0430\u0439\u0442\u0430 (WordPress \u0438 \u043b\u044e\u0431\u0430\u044f \u0434\u0440\u0443\u0433\u0430\u044f) \u043d\u0435 \u0432\u043b\u0438\u044f\u043b\u0430 \u043d\u0430 \u043a\u0430\u043b\u044c\u043a\u0443\u043b\u044f\u0442\u043e\u0440,\n * \u0430 \u043a\u0430\u043b\u044c\u043a\u0443\u043b\u044f\u0442\u043e\u0440 \u043d\u0435 \u0432\u043b\u0438\u044f\u043b \u043d\u0430 \u0441\u0430\u0439\u0442.\n *\/\n\n.awc-calc {\n    \/* \u0441\u0432\u0435\u0442\u043b\u0430\u044f \u0442\u0435\u043c\u0430 \u2014 \u043a\u0430\u043a \u0432 \u043a\u0430\u043b\u044c\u043a\u0443\u043b\u044f\u0442\u043e\u0440\u0435 Windows *\/\n    --awc-card: #e6e6e6;\n    --awc-titlebar: #ededed;\n    --awc-titlebar-border: #dcdcdc;\n    --awc-titlebar-text: #333333;\n    --awc-display: #1a1a1a;\n    --awc-muted: #6b6b6b;\n    --awc-num: #fcfcfc;\n    --awc-num-hover: #f2f2f2;\n    --awc-num-active: #e2e2e2;\n    --awc-func: #e6e6e6;\n    --awc-func-hover: #d8d8d8;\n    --awc-func-active: #c8c8c8;\n    --awc-accent: #0067c0;\n    --awc-accent-hover: #1876cd;\n    --awc-accent-active: #0054a0;\n    --awc-accent-text: #ffffff;\n    --awc-text: #1a1a1a;\n    --awc-disabled: #9b9b9b;\n    --awc-shadow: 0 18px 40px rgba(19, 38, 60, .22), 0 2px 8px rgba(19, 38, 60, .14);\n\n    box-sizing: border-box;\n    position: relative;\n    width: 100%;\n    max-width: 344px;\n    margin: 0 auto;\n    background: var(--awc-card);\n    border-radius: 8px;\n    box-shadow: var(--awc-shadow);\n    overflow: hidden;\n    font-family: \"Segoe UI\", system-ui, -apple-system, \"Helvetica Neue\", Arial, sans-serif;\n    font-size: 15px;\n    font-weight: 400;\n    font-style: normal;\n    line-height: normal;\n    letter-spacing: normal;\n    word-spacing: normal;\n    text-transform: none;\n    text-align: left;\n    color: var(--awc-text);\n}\n\n.awc-calc[data-awc-theme=\"dark\"] {\n    --awc-card: #1f1f1f;\n    --awc-titlebar: #191919;\n    --awc-titlebar-border: #2c2c2c;\n    --awc-titlebar-text: #e6e6e6;\n    --awc-display: #ffffff;\n    --awc-muted: #a0a0a0;\n    --awc-num: #3b3b3b;\n    --awc-num-hover: #454545;\n    --awc-num-active: #4f4f4f;\n    --awc-func: #1f1f1f;\n    --awc-func-hover: #2e2e2e;\n    --awc-func-active: #3a3a3a;\n    --awc-accent: #4cc2ff;\n    --awc-accent-hover: #5fc9ff;\n    --awc-accent-active: #35a8e6;\n    --awc-accent-text: #101010;\n    --awc-text: #ffffff;\n    --awc-disabled: #6f6f6f;\n    --awc-shadow: 0 18px 40px rgba(0, 0, 0, .5), 0 2px 8px rgba(0, 0, 0, .3);\n}\n\n.awc-calc *,\n.awc-calc *::before,\n.awc-calc *::after {\n    box-sizing: border-box;\n}\n\n\/* ---------- \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a \u043e\u043a\u043d\u0430 ---------- *\/\n\n.awc-calc .awc-titlebar {\n    display: flex;\n    align-items: center;\n    justify-content: space-between;\n    gap: 8px;\n    height: 36px;\n    margin: 0;\n    padding: 0 6px 0 12px;\n    background: var(--awc-titlebar);\n    border: 0;\n    border-bottom: 1px solid var(--awc-titlebar-border);\n    font-size: 12.5px;\n    line-height: 1;\n    color: var(--awc-titlebar-text);\n    user-select: none;\n    -webkit-user-select: none;\n}\n\n.awc-calc .awc-titlebar__title {\n    display: flex;\n    align-items: center;\n    gap: 8px;\n    min-width: 0;\n    overflow: hidden;\n    white-space: nowrap;\n    font-weight: 400;\n}\n\n.awc-calc .awc-titlebar__icon {\n    flex: none;\n    width: 15px;\n    height: 15px;\n    max-width: none;\n    margin: 0;\n    opacity: .85;\n}\n\n.awc-calc .awc-window-controls {\n    display: flex;\n    align-items: center;\n    gap: 2px;\n    flex: none;\n}\n\n.awc-calc .awc-window-control {\n    display: grid;\n    place-items: center;\n    width: 30px;\n    height: 28px;\n    min-width: 0;\n    margin: 0;\n    padding: 0;\n    border: 0;\n    border-radius: 4px;\n    background: transparent;\n    box-shadow: none;\n    color: inherit;\n    font-family: inherit;\n    font-size: 11px;\n    line-height: 1;\n    text-decoration: none;\n    opacity: .7;\n    cursor: default;\n    appearance: none;\n}\n\n.awc-calc .awc-window-control--theme {\n    font-size: 14px;\n    opacity: .8;\n    cursor: pointer;\n}\n\n.awc-calc .awc-window-control--theme:hover {\n    background: var(--awc-func-hover);\n    opacity: 1;\n}\n\n.awc-calc .awc-window-control--close:hover {\n    background: #e81123;\n    color: #fff;\n    opacity: 1;\n}\n\n\/* ---------- \u0434\u0438\u0441\u043f\u043b\u0435\u0439 ---------- *\/\n\n.awc-calc .awc-display {\n    position: relative;\n    display: flex;\n    flex-direction: column;\n    justify-content: flex-end;\n    gap: 2px;\n    min-height: 108px;\n    margin: 0;\n    padding: 10px 14px 12px;\n    background: transparent;\n    border: 0;\n    text-align: right;\n}\n\n.awc-calc .awc-memory {\n    position: absolute;\n    top: 9px;\n    left: 14px;\n    font-size: 12px;\n    font-weight: 600;\n    line-height: 1;\n    color: var(--awc-muted);\n}\n\n.awc-calc .awc-memory[hidden] {\n    display: none;\n}\n\n.awc-calc .awc-expression {\n    min-height: 18px;\n    margin: 0;\n    font-size: 13px;\n    line-height: 18px;\n    color: var(--awc-muted);\n    text-align: right;\n    white-space: nowrap;\n    overflow: hidden;\n    text-overflow: ellipsis;\n}\n\n.awc-calc .awc-result {\n    display: block;\n    margin: 0;\n    padding: 0;\n    border: 0;\n    background: transparent;\n    font-family: inherit;\n    font-size: clamp(30px, 9vw, 40px);\n    font-weight: 300;\n    line-height: 1.12;\n    letter-spacing: -.5px;\n    color: var(--awc-display);\n    text-align: right;\n    white-space: nowrap;\n    overflow: hidden;\n    font-variant-numeric: tabular-nums;\n}\n\n\/* ---------- \u043a\u043b\u0430\u0432\u0438\u0448\u0438 ---------- *\/\n\n.awc-calc .awc-keypad {\n    display: flex;\n    flex-direction: column;\n    gap: 4px;\n    margin: 0;\n    padding: 0 8px 8px;\n}\n\n.awc-calc .awc-keypad__memory {\n    display: grid;\n    grid-template-columns: repeat(5, 1fr);\n    gap: 4px;\n    padding: 0 10px;\n}\n\n.awc-calc .awc-keypad__grid {\n    display: grid;\n    grid-template-columns: repeat(4, 1fr);\n    gap: 4px;\n}\n\n.awc-calc button.awc-btn {\n    display: grid;\n    place-items: center;\n    width: auto;\n    min-width: 0;\n    height: clamp(38px, 10.5vw, 46px);\n    margin: 0;\n    padding: 0;\n    border: 0;\n    border-radius: 4px;\n    background: var(--awc-func);\n    box-shadow: none;\n    color: var(--awc-text);\n    font-family: inherit;\n    font-size: clamp(13px, 3.6vw, 15px);\n    font-weight: 400;\n    line-height: 1;\n    letter-spacing: normal;\n    text-transform: none;\n    text-decoration: none;\n    text-shadow: none;\n    cursor: pointer;\n    user-select: none;\n    -webkit-user-select: none;\n    touch-action: manipulation;\n    appearance: none;\n    transition: background-color .09s ease;\n}\n\n.awc-calc .awc-keypad__memory button.awc-btn {\n    height: clamp(28px, 7.5vw, 34px);\n    font-size: clamp(11.5px, 3.2vw, 13px);\n}\n\n.awc-calc button.awc-btn--num {\n    background: var(--awc-num);\n}\n\n.awc-calc button.awc-btn--func:hover,\n.awc-calc .awc-keypad__memory button.awc-btn:hover {\n    background: var(--awc-func-hover);\n}\n\n.awc-calc button.awc-btn--func:active,\n.awc-calc .awc-keypad__memory button.awc-btn:active {\n    background: var(--awc-func-active);\n}\n\n.awc-calc button.awc-btn--num:hover {\n    background: var(--awc-num-hover);\n}\n\n.awc-calc button.awc-btn--num:active {\n    background: var(--awc-num-active);\n}\n\n.awc-calc button.awc-btn--accent {\n    background: var(--awc-accent);\n    color: var(--awc-accent-text);\n}\n\n.awc-calc button.awc-btn--accent:hover {\n    background: var(--awc-accent-hover);\n}\n\n.awc-calc button.awc-btn--accent:active {\n    background: var(--awc-accent-active);\n}\n\n.awc-calc button.awc-btn:disabled {\n    background: var(--awc-func);\n    color: var(--awc-disabled);\n    cursor: default;\n}\n\n.awc-calc button.awc-btn--num:disabled,\n.awc-calc button.awc-btn--accent:disabled {\n    background: var(--awc-num);\n    color: var(--awc-disabled);\n}\n\n.awc-calc button.awc-btn:focus-visible {\n    outline: 2px solid var(--awc-accent);\n    outline-offset: 2px;\n}\n\n\/* ---------- \u0443\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u0435 ---------- *\/\n\n.awc-calc .awc-toast {\n    position: absolute;\n    left: 50%;\n    bottom: 16px;\n    transform: translate(-50%, 12px);\n    margin: 0;\n    padding: 6px 14px;\n    border-radius: 20px;\n    background: var(--awc-accent);\n    color: var(--awc-accent-text);\n    font-size: 12.5px;\n    line-height: 1.4;\n    white-space: nowrap;\n    opacity: 0;\n    pointer-events: none;\n    transition: opacity .18s ease, transform .18s ease;\n}\n\n.awc-calc .awc-toast.is-visible {\n    opacity: 1;\n    transform: translate(-50%, 0);\n}\n\n\/* ---------- \u043f\u043e\u0434\u0441\u043a\u0430\u0437\u043a\u0438 \u043f\u043e \u043a\u043b\u0430\u0432\u0438\u0448\u0430\u043c (\u043d\u0435\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0431\u043b\u043e\u043a) ---------- *\/\n\n.awc-hints {\n    box-sizing: border-box;\n    width: 100%;\n    max-width: 344px;\n    margin: 12px auto 0;\n    padding: 10px 14px;\n    border: 1px solid rgba(128, 128, 128, .28);\n    border-radius: 10px;\n    background: rgba(128, 128, 128, .07);\n    font-family: \"Segoe UI\", system-ui, -apple-system, \"Helvetica Neue\", Arial, sans-serif;\n    font-size: 13px;\n    line-height: 1.5;\n    color: inherit;\n}\n\n.awc-hints summary {\n    cursor: pointer;\n    font-weight: 600;\n}\n\n.awc-hints table {\n    width: 100%;\n    margin: 8px 0 0;\n    border-collapse: collapse;\n    font-size: 12.5px;\n}\n\n.awc-hints td {\n    padding: 2px 0;\n    border: 0;\n    vertical-align: top;\n}\n\n.awc-hints td:first-child {\n    width: 42%;\n    white-space: nowrap;\n}\n\n.awc-hints kbd {\n    display: inline-block;\n    padding: 1px 5px;\n    border: 1px solid rgba(128, 128, 128, .45);\n    border-bottom-width: 2px;\n    border-radius: 4px;\n    background: rgba(255, 255, 255, .35);\n    font-family: inherit;\n    font-size: 11.5px;\n    line-height: 1.4;\n    color: inherit;\n}\n\n@media (prefers-reduced-motion: reduce) {\n    .awc-calc * {\n        transition-duration: 0ms !important;\n    }\n}\n\n<\/style>\n<div class=\"awc-calc\" data-awc-theme=\"light\">\n        <div class=\"awc-titlebar\">\n            <span class=\"awc-titlebar__title\">\n                <svg class=\"awc-titlebar__icon\" viewBox=\"0 0 16 16\" aria-hidden=\"true\">\n                    <rect x=\"1.5\" y=\"1.5\" width=\"13\" height=\"13\" rx=\"2\" fill=\"none\" stroke=\"currentColor\"\/>\n                    <rect x=\"3.5\" y=\"3.5\" width=\"9\" height=\"3\" rx=\".6\" fill=\"currentColor\"\/>\n                    <rect x=\"3.5\" y=\"8\" width=\"2.6\" height=\"2.4\" rx=\".5\" fill=\"currentColor\"\/>\n                    <rect x=\"6.9\" y=\"8\" width=\"2.6\" height=\"2.4\" rx=\".5\" fill=\"currentColor\"\/>\n                    <rect x=\"10.3\" y=\"8\" width=\"2.6\" height=\"2.4\" rx=\".5\" fill=\"currentColor\"\/>\n                    <rect x=\"3.5\" y=\"11.4\" width=\"2.6\" height=\"2.4\" rx=\".5\" fill=\"currentColor\"\/>\n                    <rect x=\"6.9\" y=\"11.4\" width=\"2.6\" height=\"2.4\" rx=\".5\" fill=\"currentColor\"\/>\n                    <rect x=\"10.3\" y=\"11.4\" width=\"2.6\" height=\"2.4\" rx=\".5\" fill=\"currentColor\"\/>\n                <\/svg>\n                \u041a\u0430\u043b\u044c\u043a\u0443\u043b\u044f\u0442\u043e\u0440\n            <\/span>\n            <span class=\"awc-window-controls\">\n                <button type=\"button\" class=\"awc-window-control awc-window-control--theme\" data-action=\"theme\"\n                        aria-pressed=\"false\" aria-label=\"\u0422\u0451\u043c\u043d\u0430\u044f \u0442\u0435\u043c\u0430\" title=\"\u0422\u0451\u043c\u043d\u0430\u044f \u0442\u0435\u043c\u0430\">&#9789;<\/button>\n                <span class=\"awc-window-control\" aria-hidden=\"true\">&#8211;<\/span>\n                <span class=\"awc-window-control\" aria-hidden=\"true\">&#9723;<\/span>\n                <span class=\"awc-window-control awc-window-control--close\" aria-hidden=\"true\">&#10005;<\/span>\n            <\/span>\n        <\/div>\n\n        <div class=\"awc-display\" aria-label=\"\u0414\u0438\u0441\u043f\u043b\u0435\u0439 \u043a\u0430\u043b\u044c\u043a\u0443\u043b\u044f\u0442\u043e\u0440\u0430\">\n            <span class=\"awc-memory\" hidden>M<\/span>\n            <div class=\"awc-expression\"><\/div>\n            <output class=\"awc-result\" aria-live=\"polite\">0<\/output>\n        <\/div>\n\n        <div class=\"awc-keypad\">\n            <div class=\"awc-keypad__memory\">\n                <button type=\"button\" class=\"awc-btn awc-btn--func\" data-action=\"memory-clear\">MC<\/button>\n                <button type=\"button\" class=\"awc-btn awc-btn--func\" data-action=\"memory-recall\">MR<\/button>\n                <button type=\"button\" class=\"awc-btn awc-btn--func\" data-action=\"memory-add\">M+<\/button>\n                <button type=\"button\" class=\"awc-btn awc-btn--func\" data-action=\"memory-subtract\">M-<\/button>\n                <button type=\"button\" class=\"awc-btn awc-btn--func\" data-action=\"memory-store\">MS<\/button>\n            <\/div>\n\n            <div class=\"awc-keypad__grid\">\n                <button type=\"button\" class=\"awc-btn awc-btn--func\" data-action=\"percent\">%<\/button>\n                <button type=\"button\" class=\"awc-btn awc-btn--func\" data-action=\"clear-entry\">CE<\/button>\n                <button type=\"button\" class=\"awc-btn awc-btn--func\" data-action=\"clear\">C<\/button>\n                <button type=\"button\" class=\"awc-btn awc-btn--func\" data-action=\"backspace\" aria-label=\"\u0423\u0434\u0430\u043b\u0438\u0442\u044c \u0441\u0438\u043c\u0432\u043e\u043b\">&#9003;<\/button>\n\n                <button type=\"button\" class=\"awc-btn awc-btn--func\" data-action=\"unary\" data-arg=\"recip\">1\/x<\/button>\n                <button type=\"button\" class=\"awc-btn awc-btn--func\" data-action=\"unary\" data-arg=\"sqr\">x&#178;<\/button>\n                <button type=\"button\" class=\"awc-btn awc-btn--func\" data-action=\"unary\" data-arg=\"sqrt\">&#8730;x<\/button>\n                <button type=\"button\" class=\"awc-btn awc-btn--func\" data-action=\"operator\" data-arg=\"&#247;\" aria-label=\"\u0420\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u044c\">&#247;<\/button>\n\n                <button type=\"button\" class=\"awc-btn awc-btn--num\" data-action=\"digit\" data-arg=\"7\">7<\/button>\n                <button type=\"button\" class=\"awc-btn awc-btn--num\" data-action=\"digit\" data-arg=\"8\">8<\/button>\n                <button type=\"button\" class=\"awc-btn awc-btn--num\" data-action=\"digit\" data-arg=\"9\">9<\/button>\n                <button type=\"button\" class=\"awc-btn awc-btn--func\" data-action=\"operator\" data-arg=\"&#215;\" aria-label=\"\u0423\u043c\u043d\u043e\u0436\u0438\u0442\u044c\">&#215;<\/button>\n\n                <button type=\"button\" class=\"awc-btn awc-btn--num\" data-action=\"digit\" data-arg=\"4\">4<\/button>\n                <button type=\"button\" class=\"awc-btn awc-btn--num\" data-action=\"digit\" data-arg=\"5\">5<\/button>\n                <button type=\"button\" class=\"awc-btn awc-btn--num\" data-action=\"digit\" data-arg=\"6\">6<\/button>\n                <button type=\"button\" class=\"awc-btn awc-btn--func\" data-action=\"operator\" data-arg=\"&#8722;\" aria-label=\"\u0412\u044b\u0447\u0435\u0441\u0442\u044c\">&#8722;<\/button>\n\n                <button type=\"button\" class=\"awc-btn awc-btn--num\" data-action=\"digit\" data-arg=\"1\">1<\/button>\n                <button type=\"button\" class=\"awc-btn awc-btn--num\" data-action=\"digit\" data-arg=\"2\">2<\/button>\n                <button type=\"button\" class=\"awc-btn awc-btn--num\" data-action=\"digit\" data-arg=\"3\">3<\/button>\n                <button type=\"button\" class=\"awc-btn awc-btn--func\" data-action=\"operator\" data-arg=\"+\" aria-label=\"\u041f\u0440\u0438\u0431\u0430\u0432\u0438\u0442\u044c\">+<\/button>\n\n                <button type=\"button\" class=\"awc-btn awc-btn--num\" data-action=\"sign\" aria-label=\"\u0421\u043c\u0435\u043d\u0438\u0442\u044c \u0437\u043d\u0430\u043a\">&#177;<\/button>\n                <button type=\"button\" class=\"awc-btn awc-btn--num\" data-action=\"digit\" data-arg=\"0\">0<\/button>\n                <button type=\"button\" class=\"awc-btn awc-btn--num\" data-action=\"separator\">,<\/button>\n                <button type=\"button\" class=\"awc-btn awc-btn--accent\" data-action=\"equals\" aria-label=\"\u0420\u0430\u0432\u043d\u043e\">=<\/button>\n            <\/div>\n        <\/div>\n\n        <div class=\"awc-toast\" role=\"status\" aria-live=\"polite\"><\/div>\n    <\/div>\n<details class=\"awc-hints\" open>\n            <summary>\u0413\u043e\u0440\u044f\u0447\u0438\u0435 \u043a\u043b\u0430\u0432\u0438\u0448\u0438<\/summary>\n            <table>\n                <tbody>\n                    <tr><td><kbd>0<\/kbd>&ndash;<kbd>9<\/kbd>, <kbd>,<\/kbd><\/td><td>\u0432\u0432\u043e\u0434 \u0447\u0438\u0441\u043b\u0430<\/td><\/tr>\n                    <tr><td><kbd>+<\/kbd> <kbd>-<\/kbd> <kbd>*<\/kbd> <kbd>\/<\/kbd><\/td><td>\u0430\u0440\u0438\u0444\u043c\u0435\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f<\/td><\/tr>\n                    <tr><td><kbd>Enter<\/kbd> \u0438\u043b\u0438 <kbd>=<\/kbd><\/td><td>\u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u044c<\/td><\/tr>\n                    <tr><td><kbd>Backspace<\/kbd><\/td><td>\u0443\u0434\u0430\u043b\u0438\u0442\u044c \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 \u0441\u0438\u043c\u0432\u043e\u043b<\/td><\/tr>\n                    <tr><td><kbd>Delete<\/kbd><\/td><td><kbd>CE<\/kbd> \u2014 \u043e\u0447\u0438\u0441\u0442\u0438\u0442\u044c \u0432\u0432\u043e\u0434<\/td><\/tr>\n                    <tr><td><kbd>Esc<\/kbd><\/td><td><kbd>C<\/kbd> \u2014 \u0441\u0431\u0440\u043e\u0441\u0438\u0442\u044c \u0432\u0441\u0451<\/td><\/tr>\n                    <tr><td><kbd>F9<\/kbd><\/td><td>\u0441\u043c\u0435\u043d\u0438\u0442\u044c \u0437\u043d\u0430\u043a<\/td><\/tr>\n                    <tr><td><kbd>%<\/kbd><\/td><td>\u043f\u0440\u043e\u0446\u0435\u043d\u0442 \u043e\u0442 \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u043e\u043f\u0435\u0440\u0430\u043d\u0434\u0430<\/td><\/tr>\n                    <tr><td><kbd>R<\/kbd><\/td><td><kbd>1\/x<\/kbd><\/td><\/tr>\n                    <tr><td><kbd>Q<\/kbd><\/td><td><kbd>x&#178;<\/kbd><\/td><\/tr>\n                    <tr><td><kbd>Shift<\/kbd>+<kbd>2<\/kbd><\/td><td><kbd>&#8730;x<\/kbd><\/td><\/tr>\n                    <tr><td><kbd>Ctrl<\/kbd>+<kbd>C<\/kbd> \/ <kbd>Ctrl<\/kbd>+<kbd>V<\/kbd><\/td><td>\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \/ \u0432\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0447\u0438\u0441\u043b\u043e<\/td><\/tr>\n                <\/tbody>\n            <\/table>\n        <\/details>\n<p><small>\n\u0421\u0447\u0438\u0442\u0430\u0435\u0442 \u0432 \u0434\u0435\u0441\u044f\u0442\u0438\u0447\u043d\u043e\u0439 \u0430\u0440\u0438\u0444\u043c\u0435\u0442\u0438\u043a\u0435: <code>0,1 + 0,2 = 0,3<\/code> \u0431\u0435\u0437 \u0445\u0432\u043e\u0441\u0442\u043e\u0432.\n            \u0420\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u0435\u043b\u044c \u0440\u0430\u0437\u0440\u044f\u0434\u043e\u0432 \u0438 \u0437\u0430\u043f\u044f\u0442\u0430\u044f \u0431\u0435\u0440\u0443\u0442\u0441\u044f \u0438\u0437 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430.\n<\/small><\/p>\n<script>\n(function () {\n    function decode(b64) {\n        var bin = atob(b64);\n        if (window.TextDecoder) {\n            var bytes = new Uint8Array(bin.length);\n            for (var i = 0; i < bin.length; i++) bytes[i] = bin.charCodeAt(i);\n            return new TextDecoder('utf-8').decode(bytes);\n        }\n        return decodeURIComponent(escape(bin));\n    }\n    function inject(code) {\n        var el = document.createElement('script');\n        el.text = code;\n        document.body.appendChild(el);\n    }\n    var engineCode = decode('LyoKICog0JrQsNC70YzQutGD0LvRj9GC0L7RgCDQtNCy0LjQttC60LA6INGH0LjRgdGC0LDRjyDQu9C+0LPQuNC60LAg0LHQtdC3IERPTS4KICog0KDQsNCx0L7RgtCw0LXRgiDQsiDQsdGA0LDRg9C30LXRgNC1ICh3aW5kb3cuQUlXb3JrZXJzQ2FsYykg0Lgg0LIgTm9kZSAobW9kdWxlLmV4cG9ydHMpLgogKgogKiDQktC90YPRgtGA0Lgg0YfQuNGB0LvQsCDRhdGA0LDQvdGP0YLRgdGPINC60LDQuiDQvtCx0YvRh9C90YvQtSDRgdGC0YDQvtC60Lgg0YEg0YLQvtGH0LrQvtC5INCyINC60LDRh9C10YHRgtCy0LUg0YDQsNC30LTQtdC70LjRgtC10LvRjzsKICog0LPRgNGD0L\/Qv9C40YDQvtCy0LrQsCDRgNCw0LfRgNGP0LTQvtCyINC4INC30LDQv9GP0YLQsNGPL9GC0L7Rh9C60LAg0L\/QvtC00YHRgtCw0LLQu9GP0Y7RgtGB0Y8g0L\/RgNC4INCy0YvQstC+0LTQtS4KICovCihmdW5jdGlvbiAocm9vdCwgZmFjdG9yeSkgewogICAgaWYgKHR5cGVvZiBtb2R1bGUgPT09ICdvYmplY3QnICYmIG1vZHVsZS5leHBvcnRzKSB7CiAgICAgICAgbW9kdWxlLmV4cG9ydHMgPSBmYWN0b3J5KCk7CiAgICB9IGVsc2UgewogICAgICAgIHJvb3QuQUlXb3JrZXJzQ2FsYyA9IGZhY3RvcnkoKTsKICAgICAgICByb290LkNhbGNFbmdpbmUgPSByb290LkFJV29ya2Vyc0NhbGM7ICAgLy8g0YHQvtCy0LzQtdGB0YLQuNC80L7RgdGC0Ywg0YHQviDRgdGC0LDRgNC+0Lkg0LLQtdGA0YHQuNC10Lkg0YHRgtGA0LDQvdC40YbRiwogICAgfQp9KHR5cGVvZiBzZWxmICE9PSAndW5kZWZpbmVkJyA\/IHNlbGYgOiB0aGlzLCBmdW5jdGlvbiAoKSB7CiAgICAndXNlIHN0cmljdCc7CgogICAgdmFyIE1BWF9ESUdJVFMgPSAxNjsgICAvLyDRgdC60L7Qu9GM0LrQviDRhtC40YTRgCDQvNC+0LbQvdC+INCy0LLQtdGB0YLQuCDQstGA0YPRh9C90YPRjgogICAgdmFyIFNJR19ESUdJVFMgPSAxNjsgICAvLyDQt9C90LDRh9Cw0YnQuNGFINGG0LjRhNGAINCyINGA0LXQt9GD0LvRjNGC0LDRgtC1CgogICAgdmFyIEVSUk9SUyA9IHsKICAgICAgICBkaXYwOiAn0JTQtdC70LXQvdC40LUg0L3QsCDQvdC+0LvRjCDQvdC10LLQvtC30LzQvtC20L3QvicsCiAgICAgICAgaW52YWxpZDogJ9Cd0LXQtNC+0L\/Rg9GB0YLQuNC80YvQuSDQstCy0L7QtCcsCiAgICAgICAgb3ZlcmZsb3c6ICfQn9C10YDQtdC\/0L7Qu9C90LXQvdC40LUnCiAgICB9OwoKICAgIGZ1bmN0aW9uIGNvdW50RGlnaXRzKHRleHQpIHsKICAgICAgICB2YXIgY291bnQgPSAwOwogICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGV4dC5sZW5ndGg7IGkrKykgewogICAgICAgICAgICBpZiAodGV4dC5jaGFyQXQoaSkgPj0gJzAnICYmIHRleHQuY2hhckF0KGkpIDw9ICc5JykgY291bnQrKzsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIGNvdW50OwogICAgfQoKICAgIGZ1bmN0aW9uIHRyaW1OdW1iZXIodGV4dCkgewogICAgICAgIGlmICh0ZXh0LmluZGV4T2YoJy4nKSA8IDApIHJldHVybiB0ZXh0OwogICAgICAgIHRleHQgPSB0ZXh0LnJlcGxhY2UoLzArJC8sICcnKTsKICAgICAgICBpZiAodGV4dC5jaGFyQXQodGV4dC5sZW5ndGggLSAxKSA9PT0gJy4nKSB0ZXh0ID0gdGV4dC5zbGljZSgwLCAtMSk7CiAgICAgICAgcmV0dXJuIHRleHQgPT09ICcnIHx8IHRleHQgPT09ICctMCcgPyAnMCcgOiB0ZXh0OwogICAgfQoKICAgIGZ1bmN0aW9uIG5vcm1hbGl6ZUV4cG9uZW50aWFsKHRleHQpIHsKICAgICAgICB2YXIgcGFydHMgPSB0ZXh0LnNwbGl0KCdlJyk7CiAgICAgICAgdmFyIG1hbnRpc3NhID0gdHJpbU51bWJlcihwYXJ0c1swXSk7CiAgICAgICAgdmFyIGV4cG9uZW50ID0gcGFyc2VJbnQocGFydHNbMV0sIDEwKTsKICAgICAgICByZXR1cm4gbWFudGlzc2EgKyAnZScgKyAoZXhwb25lbnQgPCAwID8gJy0nIDogJysnKSArIE1hdGguYWJzKGV4cG9uZW50KTsKICAgIH0KCiAgICAvKiog0KfQuNGB0LvQviDQsiDQutCw0L3QvtC90LjRh9C10YHQutGD0Y4g0YHRgtGA0L7QutGDINGBINGC0L7Rh9C60L7QuSwg0LTQviAxNiDQt9C90LDRh9Cw0YnQuNGFINGG0LjRhNGALiAqLwogICAgZnVuY3Rpb24gZm9ybWF0TnVtYmVyKHZhbHVlKSB7CiAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ251bWJlcicgfHwgIWlzRmluaXRlKHZhbHVlKSkgcmV0dXJuICcnOwogICAgICAgIGlmICh2YWx1ZSA9PT0gMCkgcmV0dXJuICcwJzsKCiAgICAgICAgdmFyIGFicyA9IE1hdGguYWJzKHZhbHVlKTsKICAgICAgICBpZiAoYWJzID49IDFlMTYgfHwgYWJzIDwgMWUtMTUpIHsKICAgICAgICAgICAgcmV0dXJuIG5vcm1hbGl6ZUV4cG9uZW50aWFsKHZhbHVlLnRvRXhwb25lbnRpYWwoU0lHX0RJR0lUUyAtIDEpKTsKICAgICAgICB9CgogICAgICAgIHZhciB0ZXh0ID0gdmFsdWUudG9QcmVjaXNpb24oU0lHX0RJR0lUUyk7CiAgICAgICAgaWYgKHRleHQuaW5kZXhPZignZScpID49IDApIHsKICAgICAgICAgICAgLy8g0LTQu9GPINC+0YfQtdC90Ywg0LzQsNC70LXQvdGM0LrQuNGFINGH0LjRgdC10LsgdG9QcmVjaXNpb24g0YPRhdC+0LTQuNGCINCyINGN0LrRgdC\/0L7QvdC10L3RgtGDIOKAlCDQstC10YDQvdGR0Lwg0L7QsdGL0YfQvdGD0Y4g0LfQsNC\/0LjRgdGMCiAgICAgICAgICAgIHZhciBkZWNpbWFscyA9IE1hdGgubWluKDIwLCBNYXRoLmNlaWwoLU1hdGgubG9nMTAoYWJzKSkgKyBTSUdfRElHSVRTIC0gMSk7CiAgICAgICAgICAgIHRleHQgPSB2YWx1ZS50b0ZpeGVkKGRlY2ltYWxzKTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIHRyaW1OdW1iZXIodGV4dCk7CiAgICB9CgogICAgLyoqINCT0L7RgtC+0LLQsNGPINC00LvRjyDQv9C+0LrQsNC30LAg0YHRgtGA0L7QutCwOiDQs9GA0YPQv9C\/0LjRgNC+0LLQutCwINGA0LDQt9GA0Y\/QtNC+0LIgKyDQvNC10YHRgtC90YvQuSDRgNCw0LfQtNC10LvQuNGC0LXQu9GMLiAqLwogICAgZnVuY3Rpb24gZm9ybWF0RGlzcGxheShyYXcsIGRlY2ltYWxTZXBhcmF0b3IsIGdyb3VwU2VwYXJhdG9yKSB7CiAgICAgICAgdmFyIGRlY2ltYWwgPSBkZWNpbWFsU2VwYXJhdG9yIHx8ICcuJzsKICAgICAgICB2YXIgZ3JvdXAgPSB0eXBlb2YgZ3JvdXBTZXBhcmF0b3IgPT09ICdzdHJpbmcnID8gZ3JvdXBTZXBhcmF0b3IgOiAnICc7CiAgICAgICAgdmFyIHRleHQgPSBTdHJpbmcocmF3KTsKCiAgICAgICAgaWYgKHRleHQuaW5kZXhPZignZScpID49IDAgfHwgdGV4dC5pbmRleE9mKCdFJykgPj0gMCkgewogICAgICAgICAgICByZXR1cm4gZGVjaW1hbCA9PT0gJy4nID8gdGV4dCA6IHRleHQucmVwbGFjZSgnLicsIGRlY2ltYWwpOwogICAgICAgIH0KCiAgICAgICAgdmFyIHNpZ24gPSAnJzsKICAgICAgICBpZiAodGV4dC5jaGFyQXQoMCkgPT09ICctJykgewogICAgICAgICAgICBzaWduID0gJy0nOwogICAgICAgICAgICB0ZXh0ID0gdGV4dC5zbGljZSgxKTsKICAgICAgICB9CgogICAgICAgIHZhciBkb3QgPSB0ZXh0LmluZGV4T2YoJy4nKTsKICAgICAgICB2YXIgaW50UGFydCA9IGRvdCA8IDAgPyB0ZXh0IDogdGV4dC5zbGljZSgwLCBkb3QpOwogICAgICAgIHZhciBmcmFjUGFydCA9IGRvdCA8IDAgPyAnJyA6IHRleHQuc2xpY2UoZG90KTsKCiAgICAgICAgaWYgKGdyb3VwICYmIGludFBhcnQubGVuZ3RoID4gMykgewogICAgICAgICAgICB2YXIgZ3JvdXBlZCA9ICcnOwogICAgICAgICAgICB2YXIgY291bnRlciA9IDA7CiAgICAgICAgICAgIGZvciAodmFyIGkgPSBpbnRQYXJ0Lmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7CiAgICAgICAgICAgICAgICBncm91cGVkID0gaW50UGFydC5jaGFyQXQoaSkgKyBncm91cGVkOwogICAgICAgICAgICAgICAgY291bnRlcisrOwogICAgICAgICAgICAgICAgaWYgKGNvdW50ZXIgJSAzID09PSAwICYmIGkgPiAwKSBncm91cGVkID0gZ3JvdXAgKyBncm91cGVkOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGludFBhcnQgPSBncm91cGVkOwogICAgICAgIH0KCiAgICAgICAgdmFyIHJlc3VsdCA9IHNpZ24gKyBpbnRQYXJ0ICsgZnJhY1BhcnQ7CiAgICAgICAgcmV0dXJuIGRlY2ltYWwgPT09ICcuJyA\/IHJlc3VsdCA6IHJlc3VsdC5yZXBsYWNlKCcuJywgZGVjaW1hbCk7CiAgICB9CgogICAgZnVuY3Rpb24gY29tcHV0ZShhLCBiLCBvcCkgewogICAgICAgIHZhciByZXN1bHQ7CiAgICAgICAgaWYgKG9wID09PSAnXHUwMEY3JyAmJiBiID09PSAwKSByZXR1cm4geyBlcnJvcjogJ2RpdjAnIH07CiAgICAgICAgc3dpdGNoIChvcCkgewogICAgICAgICAgICBjYXNlICcrJzogcmVzdWx0ID0gYSArIGI7IGJyZWFrOwogICAgICAgICAgICBjYXNlICdcdTIyMTInOiByZXN1bHQgPSBhIC0gYjsgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgJ1x1MDBENyc6IHJlc3VsdCA9IGEgKiBiOyBicmVhazsKICAgICAgICAgICAgY2FzZSAnXHUwMEY3JzogcmVzdWx0ID0gYSAvIGI7IGJyZWFrOwogICAgICAgICAgICBkZWZhdWx0OiByZXR1cm4geyB2YWx1ZTogYiB9OwogICAgICAgIH0KICAgICAgICBpZiAoIWlzRmluaXRlKHJlc3VsdCkpIHJldHVybiB7IGVycm9yOiAnb3ZlcmZsb3cnIH07CiAgICAgICAgcmV0dXJuIHsgdmFsdWU6IHJlc3VsdCB9OwogICAgfQoKICAgIGZ1bmN0aW9uIENhbGNFbmdpbmUoKSB7CiAgICAgICAgdGhpcy5jbGVhckFsbCgpOwogICAgfQoKICAgIENhbGNFbmdpbmUuRVJST1JTID0gRVJST1JTOwogICAgQ2FsY0VuZ2luZS5mb3JtYXROdW1iZXIgPSBmb3JtYXROdW1iZXI7CiAgICBDYWxjRW5naW5lLmZvcm1hdERpc3BsYXkgPSBmb3JtYXREaXNwbGF5OwoKICAgIENhbGNFbmdpbmUucHJvdG90eXBlLmNsZWFyQWxsID0gZnVuY3Rpb24gKCkgewogICAgICAgIHRoaXMuZGlzcGxheSA9ICcwJzsKICAgICAgICB0aGlzLmV4cHJlc3Npb24gPSAnJzsKICAgICAgICB0aGlzLm5ld0VudHJ5ID0gdHJ1ZTsKICAgICAgICB0aGlzLnBlbmRpbmdPcCA9IG51bGw7CiAgICAgICAgdGhpcy5maXJzdE9wZXJhbmQgPSAwOwogICAgICAgIHRoaXMubGFzdE9wID0gbnVsbDsKICAgICAgICB0aGlzLmxhc3RPcGVyYW5kID0gMDsKICAgICAgICB0aGlzLmVycm9yID0gZmFsc2U7CiAgICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgPSAnJzsKICAgICAgICBpZiAodGhpcy5tZW1vcnkgPT09IHVuZGVmaW5lZCkgdGhpcy5tZW1vcnkgPSBudWxsOwogICAgICAgIHJldHVybiB0aGlzOwogICAgfTsKCiAgICBDYWxjRW5naW5lLnByb3RvdHlwZS5jbGVhckVudHJ5ID0gZnVuY3Rpb24gKCkgewogICAgICAgIHRoaXMuZXJyb3IgPSBmYWxzZTsKICAgICAgICB0aGlzLmVycm9yTWVzc2FnZSA9ICcnOwogICAgICAgIHRoaXMuZGlzcGxheSA9ICcwJzsKICAgICAgICB0aGlzLm5ld0VudHJ5ID0gdHJ1ZTsKICAgICAgICByZXR1cm4gdGhpczsKICAgIH07CgogICAgQ2FsY0VuZ2luZS5wcm90b3R5cGUuc2V0VmFsdWUgPSBmdW5jdGlvbiAodmFsdWUpIHsKICAgICAgICBpZiAodHlwZW9mIHZhbHVlICE9PSAnbnVtYmVyJyB8fCAhaXNGaW5pdGUodmFsdWUpKSByZXR1cm4gdGhpczsKICAgICAgICB0aGlzLmVycm9yID0gZmFsc2U7CiAgICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgPSAnJzsKICAgICAgICB0aGlzLmRpc3BsYXkgPSBmb3JtYXROdW1iZXIodmFsdWUpOwogICAgICAgIHRoaXMuZXhwcmVzc2lvbiA9ICcnOwogICAgICAgIHRoaXMubmV3RW50cnkgPSB0cnVlOwogICAgICAgIHJldHVybiB0aGlzOwogICAgfTsKCiAgICBDYWxjRW5naW5lLnByb3RvdHlwZS52YWx1ZSA9IGZ1bmN0aW9uICgpIHsKICAgICAgICB2YXIgcGFyc2VkID0gcGFyc2VGbG9hdCh0aGlzLmRpc3BsYXkpOwogICAgICAgIHJldHVybiBpc0Zpbml0ZShwYXJzZWQpID8gcGFyc2VkIDogMDsKICAgIH07CgogICAgQ2FsY0VuZ2luZS5wcm90b3R5cGUuZmFpbCA9IGZ1bmN0aW9uIChjb2RlKSB7CiAgICAgICAgdGhpcy5lcnJvciA9IHRydWU7CiAgICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgPSBFUlJPUlNbY29kZV0gfHwgRVJST1JTLmludmFsaWQ7CiAgICAgICAgdGhpcy5leHByZXNzaW9uID0gJyc7CiAgICAgICAgcmV0dXJuIHRoaXM7CiAgICB9OwoKICAgIENhbGNFbmdpbmUucHJvdG90eXBlLmlucHV0RGlnaXQgPSBmdW5jdGlvbiAoZGlnaXQpIHsKICAgICAgICBpZiAodGhpcy5lcnJvcikgcmV0dXJuIHRoaXM7CiAgICAgICAgZGlnaXQgPSBTdHJpbmcoZGlnaXQpOwogICAgICAgIGlmICh0aGlzLm5ld0VudHJ5KSB7CiAgICAgICAgICAgIGlmICh0aGlzLnBlbmRpbmdPcCA9PT0gbnVsbCkgdGhpcy5leHByZXNzaW9uID0gJyc7CiAgICAgICAgICAgIHRoaXMuZGlzcGxheSA9IGRpZ2l0ID09PSAnMCcgPyAnMCcgOiBkaWdpdDsKICAgICAgICAgICAgdGhpcy5uZXdFbnRyeSA9IGZhbHNlOwogICAgICAgIH0gZWxzZSBpZiAodGhpcy5kaXNwbGF5ID09PSAnMCcpIHsKICAgICAgICAgICAgdGhpcy5kaXNwbGF5ID0gZGlnaXQ7CiAgICAgICAgfSBlbHNlIGlmIChjb3VudERpZ2l0cyh0aGlzLmRpc3BsYXkpIDwgTUFYX0RJR0lUUyAmJgogICAgICAgICAgICAgICAgICAgdGhpcy5kaXNwbGF5LmluZGV4T2YoJ2UnKSA8IDAgJiYgdGhpcy5kaXNwbGF5LmluZGV4T2YoJ0UnKSA8IDApIHsKICAgICAgICAgICAgdGhpcy5kaXNwbGF5ICs9IGRpZ2l0OwogICAgICAgIH0KICAgICAgICByZXR1cm4gdGhpczsKICAgIH07CgogICAgQ2FsY0VuZ2luZS5wcm90b3R5cGUuaW5wdXRTZXBhcmF0b3IgPSBmdW5jdGlvbiAoKSB7CiAgICAgICAgaWYgKHRoaXMuZXJyb3IpIHJldHVybiB0aGlzOwogICAgICAgIGlmICh0aGlzLm5ld0VudHJ5KSB7CiAgICAgICAgICAgIGlmICh0aGlzLnBlbmRpbmdPcCA9PT0gbnVsbCkgdGhpcy5leHByZXNzaW9uID0gJyc7CiAgICAgICAgICAgIHRoaXMuZGlzcGxheSA9ICcwLic7CiAgICAgICAgICAgIHRoaXMubmV3RW50cnkgPSBmYWxzZTsKICAgICAgICB9IGVsc2UgaWYgKHRoaXMuZGlzcGxheS5pbmRleE9mKCcuJykgPCAwICYmCiAgICAgICAgICAgICAgICAgICB0aGlzLmRpc3BsYXkuaW5kZXhPZignZScpIDwgMCAmJiB0aGlzLmRpc3BsYXkuaW5kZXhPZignRScpIDwgMCkgewogICAgICAgICAgICB0aGlzLmRpc3BsYXkgKz0gJy4nOwogICAgICAgIH0KICAgICAgICByZXR1cm4gdGhpczsKICAgIH07CgogICAgQ2FsY0VuZ2luZS5wcm90b3R5cGUuYmFja3NwYWNlID0gZnVuY3Rpb24gKCkgewogICAgICAgIGlmICh0aGlzLmVycm9yKSByZXR1cm4gdGhpczsKICAgICAgICBpZiAodGhpcy5uZXdFbnRyeSkgewogICAgICAgICAgICB0aGlzLmRpc3BsYXkgPSAnMCc7CiAgICAgICAgICAgIHRoaXMubmV3RW50cnkgPSBmYWxzZTsKICAgICAgICB9IGVsc2UgaWYgKHRoaXMuZGlzcGxheS5pbmRleE9mKCdlJykgPj0gMCB8fCB0aGlzLmRpc3BsYXkuaW5kZXhPZignRScpID49IDApIHsKICAgICAgICAgICAgdGhpcy5kaXNwbGF5ID0gJzAnOwogICAgICAgIH0gZWxzZSBpZiAodGhpcy5kaXNwbGF5Lmxlbmd0aCA+IDEpIHsKICAgICAgICAgICAgdGhpcy5kaXNwbGF5ID0gdGhpcy5kaXNwbGF5LnNsaWNlKDAsIC0xKTsKICAgICAgICAgICAgaWYgKHRoaXMuZGlzcGxheSA9PT0gJy0nIHx8IHRoaXMuZGlzcGxheSA9PT0gJycpIHRoaXMuZGlzcGxheSA9ICcwJzsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICB0aGlzLmRpc3BsYXkgPSAnMCc7CiAgICAgICAgfQogICAgICAgIHJldHVybiB0aGlzOwogICAgfTsKCiAgICBDYWxjRW5naW5lLnByb3RvdHlwZS5zZXRPcGVyYXRvciA9IGZ1bmN0aW9uIChvcCkgewogICAgICAgIGlmICh0aGlzLmVycm9yKSByZXR1cm4gdGhpczsKICAgICAgICB2YXIgb3BlcmFuZCA9IHRoaXMudmFsdWUoKTsKCiAgICAgICAgaWYgKHRoaXMucGVuZGluZ09wICE9PSBudWxsICYmICF0aGlzLm5ld0VudHJ5KSB7CiAgICAgICAgICAgIHZhciByZXN1bHQgPSBjb21wdXRlKHRoaXMuZmlyc3RPcGVyYW5kLCBvcGVyYW5kLCB0aGlzLnBlbmRpbmdPcCk7CiAgICAgICAgICAgIGlmIChyZXN1bHQuZXJyb3IpIHJldHVybiB0aGlzLmZhaWwocmVzdWx0LmVycm9yKTsKICAgICAgICAgICAgdGhpcy5maXJzdE9wZXJhbmQgPSByZXN1bHQudmFsdWU7CiAgICAgICAgICAgIHRoaXMuZGlzcGxheSA9IGZvcm1hdE51bWJlcihyZXN1bHQudmFsdWUpOwogICAgICAgIH0gZWxzZSBpZiAodGhpcy5wZW5kaW5nT3AgPT09IG51bGwpIHsKICAgICAgICAgICAgdGhpcy5maXJzdE9wZXJhbmQgPSBvcGVyYW5kOwogICAgICAgIH0KCiAgICAgICAgdGhpcy5wZW5kaW5nT3AgPSBvcDsKICAgICAgICB0aGlzLm5ld0VudHJ5ID0gdHJ1ZTsKICAgICAgICB0aGlzLmV4cHJlc3Npb24gPSBmb3JtYXROdW1iZXIodGhpcy5maXJzdE9wZXJhbmQpICsgJyAnICsgb3A7CiAgICAgICAgcmV0dXJuIHRoaXM7CiAgICB9OwoKICAgIENhbGNFbmdpbmUucHJvdG90eXBlLmVxdWFscyA9IGZ1bmN0aW9uICgpIHsKICAgICAgICBpZiAodGhpcy5lcnJvcikgcmV0dXJuIHRoaXM7CgogICAgICAgIGlmICh0aGlzLnBlbmRpbmdPcCAhPT0gbnVsbCkgewogICAgICAgICAgICB2YXIgb3BlcmFuZCA9IHRoaXMubmV3RW50cnkgPyB0aGlzLmZpcnN0T3BlcmFuZCA6IHRoaXMudmFsdWUoKTsKICAgICAgICAgICAgdmFyIGZpcnN0ID0gdGhpcy5maXJzdE9wZXJhbmQ7CiAgICAgICAgICAgIHZhciBvcCA9IHRoaXMucGVuZGluZ09wOwogICAgICAgICAgICB2YXIgcmVzdWx0ID0gY29tcHV0ZShmaXJzdCwgb3BlcmFuZCwgb3ApOwogICAgICAgICAgICBpZiAocmVzdWx0LmVycm9yKSByZXR1cm4gdGhpcy5mYWlsKHJlc3VsdC5lcnJvcik7CgogICAgICAgICAgICB0aGlzLmV4cHJlc3Npb24gPSBmb3JtYXROdW1iZXIoZmlyc3QpICsgJyAnICsgb3AgKyAnICcgKyBmb3JtYXROdW1iZXIob3BlcmFuZCkgKyAnID0nOwogICAgICAgICAgICB0aGlzLmxhc3RPcCA9IG9wOwogICAgICAgICAgICB0aGlzLmxhc3RPcGVyYW5kID0gb3BlcmFuZDsKICAgICAgICAgICAgdGhpcy5wZW5kaW5nT3AgPSBudWxsOwogICAgICAgICAgICB0aGlzLmRpc3BsYXkgPSBmb3JtYXROdW1iZXIocmVzdWx0LnZhbHVlKTsKICAgICAgICAgICAgdGhpcy5maXJzdE9wZXJhbmQgPSByZXN1bHQudmFsdWU7CiAgICAgICAgICAgIHRoaXMubmV3RW50cnkgPSB0cnVlOwogICAgICAgIH0gZWxzZSBpZiAodGhpcy5sYXN0T3AgIT09IG51bGwpIHsKICAgICAgICAgICAgdmFyIGN1cnJlbnQgPSB0aGlzLnZhbHVlKCk7CiAgICAgICAgICAgIHZhciByZXBlYXQgPSBjb21wdXRlKGN1cnJlbnQsIHRoaXMubGFzdE9wZXJhbmQsIHRoaXMubGFzdE9wKTsKICAgICAgICAgICAgaWYgKHJlcGVhdC5lcnJvcikgcmV0dXJuIHRoaXMuZmFpbChyZXBlYXQuZXJyb3IpOwoKICAgICAgICAgICAgdGhpcy5leHByZXNzaW9uID0gZm9ybWF0TnVtYmVyKGN1cnJlbnQpICsgJyAnICsgdGhpcy5sYXN0T3AgKyAnICcgKyBmb3JtYXROdW1iZXIodGhpcy5sYXN0T3BlcmFuZCkgKyAnID0nOwogICAgICAgICAgICB0aGlzLmRpc3BsYXkgPSBmb3JtYXROdW1iZXIocmVwZWF0LnZhbHVlKTsKICAgICAgICAgICAgdGhpcy5maXJzdE9wZXJhbmQgPSByZXBlYXQudmFsdWU7CiAgICAgICAgICAgIHRoaXMubmV3RW50cnkgPSB0cnVlOwogICAgICAgIH0KICAgICAgICByZXR1cm4gdGhpczsKICAgIH07CgogICAgQ2FsY0VuZ2luZS5wcm90b3R5cGUucGVyY2VudCA9IGZ1bmN0aW9uICgpIHsKICAgICAgICBpZiAodGhpcy5lcnJvcikgcmV0dXJuIHRoaXM7CiAgICAgICAgdmFyIHBlcmNlbnQgPSB0aGlzLnZhbHVlKCk7CgogICAgICAgIGlmICh0aGlzLnBlbmRpbmdPcCA9PT0gbnVsbCkgewogICAgICAgICAgICB0aGlzLmRpc3BsYXkgPSAnMCc7CiAgICAgICAgICAgIHRoaXMubmV3RW50cnkgPSB0cnVlOwogICAgICAgICAgICByZXR1cm4gdGhpczsKICAgICAgICB9CgogICAgICAgIHZhciBvcGVyYW5kOwogICAgICAgIGlmICh0aGlzLnBlbmRpbmdPcCA9PT0gJysnIHx8IHRoaXMucGVuZGluZ09wID09PSAnXHUyMjEyJykgewogICAgICAgICAgICBvcGVyYW5kID0gdGhpcy5maXJzdE9wZXJhbmQgKiBwZXJjZW50IC8gMTAwOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIG9wZXJhbmQgPSBwZXJjZW50IC8gMTAwOwogICAgICAgIH0KICAgICAgICBpZiAoIWlzRmluaXRlKG9wZXJhbmQpKSByZXR1cm4gdGhpcy5mYWlsKCdvdmVyZmxvdycpOwoKICAgICAgICB0aGlzLmRpc3BsYXkgPSBmb3JtYXROdW1iZXIob3BlcmFuZCk7CiAgICAgICAgdGhpcy5uZXdFbnRyeSA9IGZhbHNlOwogICAgICAgIHRoaXMuZXhwcmVzc2lvbiA9IGZvcm1hdE51bWJlcih0aGlzLmZpcnN0T3BlcmFuZCkgKyAnICcgKyB0aGlzLnBlbmRpbmdPcCArICcgJyArIGZvcm1hdE51bWJlcihwZXJjZW50KSArICclJzsKICAgICAgICByZXR1cm4gdGhpczsKICAgIH07CgogICAgQ2FsY0VuZ2luZS5wcm90b3R5cGUudG9nZ2xlU2lnbiA9IGZ1bmN0aW9uICgpIHsKICAgICAgICBpZiAodGhpcy5lcnJvcikgcmV0dXJuIHRoaXM7CiAgICAgICAgdGhpcy5kaXNwbGF5ID0gdGhpcy5kaXNwbGF5LmNoYXJBdCgwKSA9PT0gJy0nID8gdGhpcy5kaXNwbGF5LnNsaWNlKDEpIDogJy0nICsgdGhpcy5kaXNwbGF5OwogICAgICAgIHJldHVybiB0aGlzOwogICAgfTsKCiAgICBDYWxjRW5naW5lLnByb3RvdHlwZS51bmFyeSA9IGZ1bmN0aW9uIChraW5kKSB7CiAgICAgICAgaWYgKHRoaXMuZXJyb3IpIHJldHVybiB0aGlzOwogICAgICAgIHZhciB2YWx1ZSA9IHRoaXMudmFsdWUoKTsKICAgICAgICB2YXIgcmVzdWx0OwoKICAgICAgICBpZiAoa2luZCA9PT0gJ3NxcicpIHsKICAgICAgICAgICAgcmVzdWx0ID0gdmFsdWUgKiB2YWx1ZTsKICAgICAgICAgICAgaWYgKCFpc0Zpbml0ZShyZXN1bHQpKSByZXR1cm4gdGhpcy5mYWlsKCdvdmVyZmxvdycpOwogICAgICAgICAgICB0aGlzLmV4cHJlc3Npb24gPSAnc3FyKCcgKyBmb3JtYXROdW1iZXIodmFsdWUpICsgJyknOwogICAgICAgIH0gZWxzZSBpZiAoa2luZCA9PT0gJ3NxcnQnKSB7CiAgICAgICAgICAgIGlmICh2YWx1ZSA8IDApIHJldHVybiB0aGlzLmZhaWwoJ2ludmFsaWQnKTsKICAgICAgICAgICAgcmVzdWx0ID0gTWF0aC5zcXJ0KHZhbHVlKTsKICAgICAgICAgICAgdGhpcy5leHByZXNzaW9uID0gJ1x1MjIxQSgnICsgZm9ybWF0TnVtYmVyKHZhbHVlKSArICcpJzsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBpZiAodmFsdWUgPT09IDApIHJldHVybiB0aGlzLmZhaWwoJ2RpdjAnKTsKICAgICAgICAgICAgcmVzdWx0ID0gMSAvIHZhbHVlOwogICAgICAgICAgICB0aGlzLmV4cHJlc3Npb24gPSAnMS8oJyArIGZvcm1hdE51bWJlcih2YWx1ZSkgKyAnKSc7CiAgICAgICAgfQoKICAgICAgICB0aGlzLmRpc3BsYXkgPSBmb3JtYXROdW1iZXIocmVzdWx0KTsKICAgICAgICB0aGlzLm5ld0VudHJ5ID0gdHJ1ZTsKICAgICAgICByZXR1cm4gdGhpczsKICAgIH07CgogICAgQ2FsY0VuZ2luZS5wcm90b3R5cGUubWVtb3J5U3RvcmUgPSBmdW5jdGlvbiAoKSB7CiAgICAgICAgaWYgKHRoaXMuZXJyb3IpIHJldHVybiB0aGlzOwogICAgICAgIHRoaXMubWVtb3J5ID0gdGhpcy52YWx1ZSgpOwogICAgICAgIHJldHVybiB0aGlzOwogICAgfTsKCiAgICBDYWxjRW5naW5lLnByb3RvdHlwZS5tZW1vcnlSZWNhbGwgPSBmdW5jdGlvbiAoKSB7CiAgICAgICAgaWYgKHRoaXMuZXJyb3IgfHwgdGhpcy5tZW1vcnkgPT09IG51bGwpIHJldHVybiB0aGlzOwogICAgICAgIHRoaXMuZGlzcGxheSA9IGZvcm1hdE51bWJlcih0aGlzLm1lbW9yeSk7CiAgICAgICAgdGhpcy5leHByZXNzaW9uID0gJyc7CiAgICAgICAgdGhpcy5uZXdFbnRyeSA9IHRydWU7CiAgICAgICAgcmV0dXJuIHRoaXM7CiAgICB9OwoKICAgIENhbGNFbmdpbmUucHJvdG90eXBlLm1lbW9yeUNsZWFyID0gZnVuY3Rpb24gKCkgewogICAgICAgIHRoaXMubWVtb3J5ID0gbnVsbDsKICAgICAgICByZXR1cm4gdGhpczsKICAgIH07CgogICAgQ2FsY0VuZ2luZS5wcm90b3R5cGUubWVtb3J5QWRkID0gZnVuY3Rpb24gKCkgewogICAgICAgIGlmICh0aGlzLmVycm9yKSByZXR1cm4gdGhpczsKICAgICAgICB2YXIgcmVzdWx0ID0gKHRoaXMubWVtb3J5ID09PSBudWxsID8gMCA6IHRoaXMubWVtb3J5KSArIHRoaXMudmFsdWUoKTsKICAgICAgICBpZiAoIWlzRmluaXRlKHJlc3VsdCkpIHJldHVybiB0aGlzLmZhaWwoJ292ZXJmbG93Jyk7CiAgICAgICAgdGhpcy5tZW1vcnkgPSByZXN1bHQ7CiAgICAgICAgdGhpcy5uZXdFbnRyeSA9IHRydWU7CiAgICAgICAgcmV0dXJuIHRoaXM7CiAgICB9OwoKICAgIENhbGNFbmdpbmUucHJvdG90eXBlLm1lbW9yeVN1YnRyYWN0ID0gZnVuY3Rpb24gKCkgewogICAgICAgIGlmICh0aGlzLmVycm9yKSByZXR1cm4gdGhpczsKICAgICAgICB2YXIgcmVzdWx0ID0gKHRoaXMubWVtb3J5ID09PSBudWxsID8gMCA6IHRoaXMubWVtb3J5KSAtIHRoaXMudmFsdWUoKTsKICAgICAgICBpZiAoIWlzRmluaXRlKHJlc3VsdCkpIHJldHVybiB0aGlzLmZhaWwoJ292ZXJmbG93Jyk7CiAgICAgICAgdGhpcy5tZW1vcnkgPSByZXN1bHQ7CiAgICAgICAgdGhpcy5uZXdFbnRyeSA9IHRydWU7CiAgICAgICAgcmV0dXJuIHRoaXM7CiAgICB9OwoKICAgIHJldHVybiBDYWxjRW5naW5lOwp9KSk7Cg==');\n    var widgetCode = decode('LyoKICog0JLQuNC00LbQtdGCINC60LDQu9GM0LrRg9C70Y\/RgtC+0YDQsDog0L3QsNGF0L7QtNC40YIg0L3QsCDRgdGC0YDQsNC90LjRhtC1INCy0YHQtSAuYXdjLWNhbGMg0Lgg0L7QttC40LLQu9GP0LXRgiDQuNGFLgogKiDQoNCw0LHQvtGC0LDQtdGCINCyINC70Y7QsdC+0Lkg0YLQtdC80LUgKFdvcmRQcmVzcyDQsiDRgtC+0Lwg0YfQuNGB0LvQtSk6INGB0YLQuNC70Lgg0LjQt9C+0LvQuNGA0L7QstCw0L3RiywKICog0LrQu9Cw0LLQuNCw0YLRg9GA0LAg0L3QtSDQvNC10YjQsNC10YIg0L\/QvtC70Y\/QvCDQstCy0L7QtNCwINC4INGB0YHRi9C70LrQsNC8INGB0LDQudGC0LAuCiAqLwooZnVuY3Rpb24gKHdpbmRvdywgZG9jdW1lbnQpIHsKICAgICd1c2Ugc3RyaWN0JzsKCiAgICB2YXIgRW5naW5lID0gd2luZG93LkFJV29ya2Vyc0NhbGM7CiAgICBpZiAoIUVuZ2luZSB8fCAhZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCkgcmV0dXJuOwoKICAgIHZhciBTVE9SQUdFX0tFWSA9ICdhd2MtdGhlbWUnOwogICAgdmFyIHdpZGdldHMgPSBbXTsKICAgIHZhciBhY3RpdmVXaWRnZXQgPSBudWxsOwogICAgdmFyIHRoZW1lID0gcmVhZFN0b3JlZFRoZW1lKCk7CgogICAgLyogLS0tLS0tLS0tLSDRgNC10LPQuNC+0L3QsNC70YzQvdGL0LUg0YDQsNC30LTQtdC70LjRgtC10LvQuCAtLS0tLS0tLS0tICovCgogICAgZnVuY3Rpb24gcmVhZFNlcGFyYXRvcnMoKSB7CiAgICAgICAgdmFyIHJlc3VsdCA9IHsgZGVjaW1hbDogJy4nLCBncm91cDogJywnIH07CiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgdmFyIHBhcnRzID0gbmV3IEludGwuTnVtYmVyRm9ybWF0KCkuZm9ybWF0VG9QYXJ0cygxMjM0LjUpOwogICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHBhcnRzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgICAgICBpZiAocGFydHNbaV0udHlwZSA9PT0gJ2RlY2ltYWwnKSByZXN1bHQuZGVjaW1hbCA9IHBhcnRzW2ldLnZhbHVlOwogICAgICAgICAgICAgICAgaWYgKHBhcnRzW2ldLnR5cGUgPT09ICdncm91cCcpIHJlc3VsdC5ncm91cCA9IHBhcnRzW2ldLnZhbHVlOwogICAgICAgICAgICB9CiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHsKICAgICAgICAgICAgLyog0LfQvdCw0YfQtdC90LjRjyDQv9C+INGD0LzQvtC70YfQsNC90LjRjiAqLwogICAgICAgIH0KICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgfQoKICAgIHZhciBzZXBhcmF0b3JzID0gcmVhZFNlcGFyYXRvcnMoKTsKCiAgICBmdW5jdGlvbiByZWFkU3RvcmVkVGhlbWUoKSB7CiAgICAgICAgdmFyIHN0b3JlZCA9IG51bGw7CiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgc3RvcmVkID0gd2luZG93LmxvY2FsU3RvcmFnZS5nZXRJdGVtKFNUT1JBR0VfS0VZKTsKICAgICAgICB9IGNhdGNoIChlcnJvcikgewogICAgICAgICAgICBzdG9yZWQgPSBudWxsOwogICAgICAgIH0KICAgICAgICBpZiAoc3RvcmVkID09PSAnbGlnaHQnIHx8IHN0b3JlZCA9PT0gJ2RhcmsnKSByZXR1cm4gc3RvcmVkOwogICAgICAgIGlmICh3aW5kb3cubWF0Y2hNZWRpYSAmJiB3aW5kb3cubWF0Y2hNZWRpYSgnKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKScpLm1hdGNoZXMpIHJldHVybiAnZGFyayc7CiAgICAgICAgcmV0dXJuICdsaWdodCc7CiAgICB9CgogICAgLyogLS0tLS0tLS0tLSDQstC40LTQttC10YIgLS0tLS0tLS0tLSAqLwoKICAgIGZ1bmN0aW9uIFdpZGdldChyb290KSB7CiAgICAgICAgdGhpcy5yb290ID0gcm9vdDsKICAgICAgICB0aGlzLmVuZ2luZSA9IG5ldyBFbmdpbmUoKTsKICAgICAgICB0aGlzLnJlc3VsdEVsID0gcm9vdC5xdWVyeVNlbGVjdG9yKCcuYXdjLXJlc3VsdCcpOwogICAgICAgIHRoaXMuZXhwcmVzc2lvbkVsID0gcm9vdC5xdWVyeVNlbGVjdG9yKCcuYXdjLWV4cHJlc3Npb24nKTsKICAgICAgICB0aGlzLm1lbW9yeUVsID0gcm9vdC5xdWVyeVNlbGVjdG9yKCcuYXdjLW1lbW9yeScpOwogICAgICAgIHRoaXMua2V5cGFkRWwgPSByb290LnF1ZXJ5U2VsZWN0b3IoJy5hd2Mta2V5cGFkJyk7CiAgICAgICAgdGhpcy50b2FzdEVsID0gcm9vdC5xdWVyeVNlbGVjdG9yKCcuYXdjLXRvYXN0Jyk7CiAgICAgICAgdGhpcy5idXR0b25zID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwocm9vdC5xdWVyeVNlbGVjdG9yQWxsKCdbZGF0YS1hY3Rpb25dJykpOwogICAgICAgIHRoaXMudG9hc3RUaW1lciA9IG51bGw7CiAgICAgICAgdGhpcy5zZXBhcmF0b3JzID0gc2VwYXJhdG9yczsKICAgICAgICB0aGlzLmVuZ2luZUluc3RhbmNlID0gdGhpcy5lbmdpbmU7CiAgICB9CgogICAgV2lkZ2V0LnByb3RvdHlwZS5pbml0ID0gZnVuY3Rpb24gKCkgewogICAgICAgIHZhciBzZWxmID0gdGhpczsKCiAgICAgICAgdGhpcy5rZXlwYWRFbC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uIChldmVudCkgewogICAgICAgICAgICB2YXIgYnV0dG9uID0gZXZlbnQudGFyZ2V0LmNsb3Nlc3QoJ1tkYXRhLWFjdGlvbl0nKTsKICAgICAgICAgICAgaWYgKCFidXR0b24gfHwgYnV0dG9uLmRpc2FibGVkKSByZXR1cm47CiAgICAgICAgICAgIC8vINC\/0L7RgdC70LUg0YnQtdC70YfQutCwINC80YvRiNGM0Y4g0YHQvdC40LzQsNC10Lwg0YTQvtC60YPRgSwg0YfRgtC+0LHRiyBFbnRlciDQvtC30L3QsNGH0LDQuyDCqz3Cuywg0LAg0L3QtSDQvdCw0LbQsNGC0LjQtSDRjdGC0L7QuSDQttC1INC60L3QvtC\/0LrQuDsKICAgICAgICAgICAgLy8g0L\/RgNC4INGA0LDQsdC+0YLQtSDRgSDQutC70LDQstC40LDRgtGD0YDRiyAoVGFiLCDQt9Cw0YLQtdC8IEVudGVyKSDRhNC+0LrRg9GBINGB0L7RhdGA0LDQvdGP0LXRgtGB0Y8KICAgICAgICAgICAgaWYgKGV2ZW50LmRldGFpbCA+IDApIGJ1dHRvbi5ibHVyKCk7CiAgICAgICAgICAgIHNlbGYuaGFuZGxlKGJ1dHRvbi5kYXRhc2V0LmFjdGlvbiwgYnV0dG9uLmRhdGFzZXQuYXJnKTsKICAgICAgICB9KTsKCiAgICAgICAgdGhpcy5yb290LmFkZEV2ZW50TGlzdGVuZXIoJ3BvaW50ZXJkb3duJywgZnVuY3Rpb24gKCkgeyBzZXRBY3RpdmUoc2VsZik7IH0pOwogICAgICAgIHRoaXMucm9vdC5hZGRFdmVudExpc3RlbmVyKCdmb2N1c2luJywgZnVuY3Rpb24gKCkgeyBzZXRBY3RpdmUoc2VsZik7IH0pOwoKICAgICAgICB2YXIgdGhlbWVCdXR0b24gPSB0aGlzLnJvb3QucXVlcnlTZWxlY3RvcignW2RhdGEtYWN0aW9uPSJ0aGVtZSJdJyk7CiAgICAgICAgaWYgKHRoZW1lQnV0dG9uKSB7CiAgICAgICAgICAgIHRoZW1lQnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24gKCkgeyB0b2dnbGVUaGVtZSgpOyB9KTsKICAgICAgICB9CgogICAgICAgIHRoaXMuYXBwbHlUaGVtZSgpOwogICAgICAgIHRoaXMuc2V0U2VwYXJhdG9yTGFiZWwoKTsKICAgICAgICB0aGlzLnJlbmRlcigpOwogICAgfTsKCiAgICBXaWRnZXQucHJvdG90eXBlLnNldFNlcGFyYXRvckxhYmVsID0gZnVuY3Rpb24gKCkgewogICAgICAgIHZhciBrZXkgPSB0aGlzLnJvb3QucXVlcnlTZWxlY3RvcignW2RhdGEtYWN0aW9uPSJzZXBhcmF0b3IiXScpOwogICAgICAgIGlmIChrZXkpIGtleS50ZXh0Q29udGVudCA9IHNlcGFyYXRvcnMuZGVjaW1hbDsKICAgIH07CgogICAgV2lkZ2V0LnByb3RvdHlwZS5kaXNwbGF5VGV4dCA9IGZ1bmN0aW9uICgpIHsKICAgICAgICBpZiAodGhpcy5lbmdpbmUuZXJyb3IpIHJldHVybiB0aGlzLmVuZ2luZS5lcnJvck1lc3NhZ2U7CiAgICAgICAgcmV0dXJuIEVuZ2luZS5mb3JtYXREaXNwbGF5KHRoaXMuZW5naW5lLmRpc3BsYXksIHNlcGFyYXRvcnMuZGVjaW1hbCwgc2VwYXJhdG9ycy5ncm91cCk7CiAgICB9OwoKICAgIFdpZGdldC5wcm90b3R5cGUuaXNEaXNhYmxlZCA9IGZ1bmN0aW9uIChhY3Rpb24pIHsKICAgICAgICBpZiAoYWN0aW9uID09PSAndGhlbWUnKSByZXR1cm4gZmFsc2U7CiAgICAgICAgaWYgKHRoaXMuZW5naW5lLmVycm9yKSByZXR1cm4gYWN0aW9uICE9PSAnY2xlYXInICYmIGFjdGlvbiAhPT0gJ2NsZWFyLWVudHJ5JzsKICAgICAgICBpZiAoYWN0aW9uID09PSAnbWVtb3J5LWNsZWFyJyB8fCBhY3Rpb24gPT09ICdtZW1vcnktcmVjYWxsJykgcmV0dXJuIHRoaXMuZW5naW5lLm1lbW9yeSA9PT0gbnVsbDsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9OwoKICAgIFdpZGdldC5wcm90b3R5cGUucmVuZGVyID0gZnVuY3Rpb24gKCkgewogICAgICAgIHRoaXMucmVzdWx0RWwudGV4dENvbnRlbnQgPSB0aGlzLmRpc3BsYXlUZXh0KCk7CiAgICAgICAgdGhpcy5leHByZXNzaW9uRWwudGV4dENvbnRlbnQgPSB0aGlzLmVuZ2luZS5leHByZXNzaW9uOwogICAgICAgIHRoaXMubWVtb3J5RWwuaGlkZGVuID0gdGhpcy5lbmdpbmUubWVtb3J5ID09PSBudWxsOwoKICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuYnV0dG9ucy5sZW5ndGg7IGkrKykgewogICAgICAgICAgICB2YXIgYnV0dG9uID0gdGhpcy5idXR0b25zW2ldOwogICAgICAgICAgICBidXR0b24uZGlzYWJsZWQgPSB0aGlzLmlzRGlzYWJsZWQoYnV0dG9uLmRhdGFzZXQuYWN0aW9uKTsKICAgICAgICB9CgogICAgICAgIHRoaXMuZml0UmVzdWx0KCk7CiAgICB9OwoKICAgIC8qKiDQo9C80LXQvdGM0YjQsNC10YIg0YjRgNC40YTRgiwg0L\/QvtC60LAg0LTQu9C40L3QvdC+0LUg0YfQuNGB0LvQviDQvdC1INC\/0L7QvNC10YHRgtC40YLRgdGPINCyINGB0YLRgNC+0LrRgy4gKi8KICAgIFdpZGdldC5wcm90b3R5cGUuZml0UmVzdWx0ID0gZnVuY3Rpb24gKCkgewogICAgICAgIHZhciBlbCA9IHRoaXMucmVzdWx0RWw7CiAgICAgICAgZWwuc3R5bGUuZm9udFNpemUgPSAnJzsKICAgICAgICB2YXIgc2l6ZSA9IHBhcnNlRmxvYXQod2luZG93LmdldENvbXB1dGVkU3R5bGUoZWwpLmZvbnRTaXplKTsKICAgICAgICB2YXIgZ3VhcmQgPSAwOwogICAgICAgIHdoaWxlIChlbC5zY3JvbGxXaWR0aCA+IGVsLmNsaWVudFdpZHRoICYmIHNpemUgPiAxNSAmJiBndWFyZCA8IDQwKSB7CiAgICAgICAgICAgIHNpemUgLT0gMTsKICAgICAgICAgICAgZWwuc3R5bGUuZm9udFNpemUgPSBzaXplICsgJ3B4JzsKICAgICAgICAgICAgZ3VhcmQrKzsKICAgICAgICB9CiAgICB9OwoKICAgIFdpZGdldC5wcm90b3R5cGUuaGFuZGxlID0gZnVuY3Rpb24gKGFjdGlvbiwgYXJnKSB7CiAgICAgICAgdmFyIGVuZ2luZSA9IHRoaXMuZW5naW5lOwogICAgICAgIHN3aXRjaCAoYWN0aW9uKSB7CiAgICAgICAgICAgIGNhc2UgJ2RpZ2l0JzogZW5naW5lLmlucHV0RGlnaXQoYXJnKTsgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgJ3NlcGFyYXRvcic6IGVuZ2luZS5pbnB1dFNlcGFyYXRvcigpOyBicmVhazsKICAgICAgICAgICAgY2FzZSAnb3BlcmF0b3InOiBlbmdpbmUuc2V0T3BlcmF0b3IoYXJnKTsgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgJ2VxdWFscyc6IGVuZ2luZS5lcXVhbHMoKTsgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgJ3BlcmNlbnQnOiBlbmdpbmUucGVyY2VudCgpOyBicmVhazsKICAgICAgICAgICAgY2FzZSAnc2lnbic6IGVuZ2luZS50b2dnbGVTaWduKCk7IGJyZWFrOwogICAgICAgICAgICBjYXNlICd1bmFyeSc6IGVuZ2luZS51bmFyeShhcmcpOyBicmVhazsKICAgICAgICAgICAgY2FzZSAnYmFja3NwYWNlJzogZW5naW5lLmJhY2tzcGFjZSgpOyBicmVhazsKICAgICAgICAgICAgY2FzZSAnY2xlYXItZW50cnknOiBlbmdpbmUuY2xlYXJFbnRyeSgpOyBicmVhazsKICAgICAgICAgICAgY2FzZSAnY2xlYXInOiBlbmdpbmUuY2xlYXJBbGwoKTsgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgJ21lbW9yeS1jbGVhcic6IGVuZ2luZS5tZW1vcnlDbGVhcigpOyBicmVhazsKICAgICAgICAgICAgY2FzZSAnbWVtb3J5LXJlY2FsbCc6IGVuZ2luZS5tZW1vcnlSZWNhbGwoKTsgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgJ21lbW9yeS1hZGQnOiBlbmdpbmUubWVtb3J5QWRkKCk7IGJyZWFrOwogICAgICAgICAgICBjYXNlICdtZW1vcnktc3VidHJhY3QnOiBlbmdpbmUubWVtb3J5U3VidHJhY3QoKTsgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgJ21lbW9yeS1zdG9yZSc6IGVuZ2luZS5tZW1vcnlTdG9yZSgpOyBicmVhazsKICAgICAgICB9CiAgICAgICAgdGhpcy5yZW5kZXIoKTsKICAgIH07CgogICAgV2lkZ2V0LnByb3RvdHlwZS5zaG93VG9hc3QgPSBmdW5jdGlvbiAodGV4dCkgewogICAgICAgIHZhciBzZWxmID0gdGhpczsKICAgICAgICB0aGlzLnRvYXN0RWwudGV4dENvbnRlbnQgPSB0ZXh0OwogICAgICAgIHRoaXMudG9hc3RFbC5jbGFzc0xpc3QuYWRkKCdpcy12aXNpYmxlJyk7CiAgICAgICAgd2luZG93LmNsZWFyVGltZW91dCh0aGlzLnRvYXN0VGltZXIpOwogICAgICAgIHRoaXMudG9hc3RUaW1lciA9IHdpbmRvdy5zZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgc2VsZi50b2FzdEVsLmNsYXNzTGlzdC5yZW1vdmUoJ2lzLXZpc2libGUnKTsKICAgICAgICB9LCAxNDAwKTsKICAgIH07CgogICAgV2lkZ2V0LnByb3RvdHlwZS5jb3B5UmVzdWx0ID0gZnVuY3Rpb24gKCkgewogICAgICAgIHZhciBzZWxmID0gdGhpczsKICAgICAgICB2YXIgZW5naW5lID0gdGhpcy5lbmdpbmU7CiAgICAgICAgdmFyIHRleHQgPSBFbmdpbmUuZm9ybWF0RGlzcGxheShlbmdpbmUuZGlzcGxheSwgc2VwYXJhdG9ycy5kZWNpbWFsLCAnJyk7CiAgICAgICAgdmFyIGRvbmUgPSBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgIHNlbGYuc2hvd1RvYXN0KCfQodC60L7Qv9C40YDQvtCy0LDQvdC+OiAnICsgdGV4dCk7CiAgICAgICAgfTsKICAgICAgICBpZiAod2luZG93Lm5hdmlnYXRvci5jbGlwYm9hcmQgJiYgd2luZG93Lm5hdmlnYXRvci5jbGlwYm9hcmQud3JpdGVUZXh0KSB7CiAgICAgICAgICAgIHdpbmRvdy5uYXZpZ2F0b3IuY2xpcGJvYXJkLndyaXRlVGV4dCh0ZXh0KS50aGVuKGRvbmUsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgIHNlbGYubGVnYWN5Q29weSh0ZXh0LCBkb25lKTsKICAgICAgICAgICAgfSk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgdGhpcy5sZWdhY3lDb3B5KHRleHQsIGRvbmUpOwogICAgICAgIH0KICAgIH07CgogICAgV2lkZ2V0LnByb3RvdHlwZS5sZWdhY3lDb3B5ID0gZnVuY3Rpb24gKHRleHQsIGRvbmUpIHsKICAgICAgICB0cnkgewogICAgICAgICAgICB2YXIgYXJlYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RleHRhcmVhJyk7CiAgICAgICAgICAgIGFyZWEudmFsdWUgPSB0ZXh0OwogICAgICAgICAgICBhcmVhLnNldEF0dHJpYnV0ZSgncmVhZG9ubHknLCAnJyk7CiAgICAgICAgICAgIGFyZWEuc3R5bGUucG9zaXRpb24gPSAnZml4ZWQnOwogICAgICAgICAgICBhcmVhLnN0eWxlLnRvcCA9ICctMTAwMHB4JzsKICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChhcmVhKTsKICAgICAgICAgICAgYXJlYS5zZWxlY3QoKTsKICAgICAgICAgICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoJ2NvcHknKTsKICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChhcmVhKTsKICAgICAgICAgICAgZG9uZSgpOwogICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7CiAgICAgICAgICAgIHRoaXMuc2hvd1RvYXN0KCfQndC1INGD0LTQsNC70L7RgdGMINGB0LrQvtC\/0LjRgNC+0LLQsNGC0YwnKTsKICAgICAgICB9CiAgICB9OwoKICAgIFdpZGdldC5wcm90b3R5cGUucGFzdGVWYWx1ZSA9IGZ1bmN0aW9uICgpIHsKICAgICAgICB2YXIgc2VsZiA9IHRoaXM7CiAgICAgICAgaWYgKCF3aW5kb3cubmF2aWdhdG9yLmNsaXBib2FyZCB8fCAhd2luZG93Lm5hdmlnYXRvci5jbGlwYm9hcmQucmVhZFRleHQpIHJldHVybjsKICAgICAgICB3aW5kb3cubmF2aWdhdG9yLmNsaXBib2FyZC5yZWFkVGV4dCgpLnRoZW4oZnVuY3Rpb24gKHJhdykgewogICAgICAgICAgICB2YXIgdGV4dCA9IFN0cmluZyhyYXcpLnRyaW0oKS5yZXBsYWNlKC9bXHNcdTAwQTBdL2csICcnKTsKICAgICAgICAgICAgaWYgKHNlcGFyYXRvcnMuZ3JvdXApIHRleHQgPSB0ZXh0LnNwbGl0KHNlcGFyYXRvcnMuZ3JvdXApLmpvaW4oJycpOwogICAgICAgICAgICBpZiAoc2VwYXJhdG9ycy5kZWNpbWFsICE9PSAnLicpIHRleHQgPSB0ZXh0LnNwbGl0KHNlcGFyYXRvcnMuZGVjaW1hbCkuam9pbignLicpOwogICAgICAgICAgICB0ZXh0ID0gdGV4dC5yZXBsYWNlKC9bXjAtOS5lRSstXS9nLCAnJyk7CiAgICAgICAgICAgIHZhciB2YWx1ZSA9IHBhcnNlRmxvYXQodGV4dCk7CiAgICAgICAgICAgIGlmIChpc0Zpbml0ZSh2YWx1ZSkpIHsKICAgICAgICAgICAgICAgIHNlbGYuZW5naW5lLnNldFZhbHVlKHZhbHVlKTsKICAgICAgICAgICAgICAgIHNlbGYucmVuZGVyKCk7CiAgICAgICAgICAgICAgICBzZWxmLnNob3dUb2FzdCgn0JLRgdGC0LDQstC70LXQvdC+OiAnICsgRW5naW5lLmZvcm1hdERpc3BsYXkoc2VsZi5lbmdpbmUuZGlzcGxheSwgc2VwYXJhdG9ycy5kZWNpbWFsLCAnJykpOwogICAgICAgICAgICB9CiAgICAgICAgfSwgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAvKiDRh9GC0LXQvdC40LUg0LHRg9GE0LXRgNCwINC90LXQtNC+0YHRgtGD0L\/QvdC+IOKAlCDQvNC+0LvRh9CwINCy0YvRhdC+0LTQuNC8ICovCiAgICAgICAgfSk7CiAgICB9OwoKICAgIFdpZGdldC5wcm90b3R5cGUuYXBwbHlUaGVtZSA9IGZ1bmN0aW9uICgpIHsKICAgICAgICB0aGlzLnJvb3Quc2V0QXR0cmlidXRlKCdkYXRhLWF3Yy10aGVtZScsIHRoZW1lKTsKICAgICAgICB2YXIgYnV0dG9uID0gdGhpcy5yb290LnF1ZXJ5U2VsZWN0b3IoJ1tkYXRhLWFjdGlvbj0idGhlbWUiXScpOwogICAgICAgIGlmICghYnV0dG9uKSByZXR1cm47CiAgICAgICAgYnV0dG9uLnRleHRDb250ZW50ID0gdGhlbWUgPT09ICdkYXJrJyA\/ICdcdTI2MDAnIDogJ1x1MjYzRCc7CiAgICAgICAgYnV0dG9uLnNldEF0dHJpYnV0ZSgnYXJpYS1wcmVzc2VkJywgdGhlbWUgPT09ICdkYXJrJyA\/ICd0cnVlJyA6ICdmYWxzZScpOwogICAgICAgIGJ1dHRvbi5zZXRBdHRyaWJ1dGUoJ2FyaWEtbGFiZWwnLCB0aGVtZSA9PT0gJ2RhcmsnID8gJ9Ch0LLQtdGC0LvQsNGPINGC0LXQvNCwJyA6ICfQotGR0LzQvdCw0Y8g0YLQtdC80LAnKTsKICAgICAgICBidXR0b24udGl0bGUgPSB0aGVtZSA9PT0gJ2RhcmsnID8gJ9Ch0LLQtdGC0LvQsNGPINGC0LXQvNCwJyA6ICfQotGR0LzQvdCw0Y8g0YLQtdC80LAnOwogICAgfTsKCiAgICAvKiAtLS0tLS0tLS0tINC+0LHRidC10LUg0YHQvtGB0YLQvtGP0L3QuNC1IC0tLS0tLS0tLS0gKi8KCiAgICBmdW5jdGlvbiBzZXRBY3RpdmUod2lkZ2V0KSB7CiAgICAgICAgYWN0aXZlV2lkZ2V0ID0gd2lkZ2V0OwogICAgfQoKICAgIGZ1bmN0aW9uIHRvZ2dsZVRoZW1lKCkgewogICAgICAgIHRoZW1lID0gdGhlbWUgPT09ICdkYXJrJyA\/ICdsaWdodCcgOiAnZGFyayc7CiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgd2luZG93LmxvY2FsU3RvcmFnZS5zZXRJdGVtKFNUT1JBR0VfS0VZLCB0aGVtZSk7CiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHsKICAgICAgICAgICAgLyog0L\/RgNC40LLQsNGC0L3Ri9C5INGA0LXQttC40Lwg4oCUINC\/0YDQvtGB0YLQviDQvdC1INC30LDQv9C+0LzQuNC90LDQtdC8ICovCiAgICAgICAgfQogICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgd2lkZ2V0cy5sZW5ndGg7IGkrKykgewogICAgICAgICAgICB3aWRnZXRzW2ldLmFwcGx5VGhlbWUoKTsKICAgICAgICB9CiAgICB9CgogICAgZnVuY3Rpb24gaXNUeXBpbmdUYXJnZXQoZWxlbWVudCkgewogICAgICAgIGlmICghZWxlbWVudCB8fCAhZWxlbWVudC50YWdOYW1lKSByZXR1cm4gZmFsc2U7CiAgICAgICAgdmFyIHRhZyA9IGVsZW1lbnQudGFnTmFtZS50b0xvd2VyQ2FzZSgpOwogICAgICAgIHJldHVybiB0YWcgPT09ICdpbnB1dCcgfHwgdGFnID09PSAndGV4dGFyZWEnIHx8IHRhZyA9PT0gJ3NlbGVjdCcgfHwgZWxlbWVudC5pc0NvbnRlbnRFZGl0YWJsZSA9PT0gdHJ1ZTsKICAgIH0KCiAgICBmdW5jdGlvbiBpc1Zpc2libGUod2lkZ2V0KSB7CiAgICAgICAgdmFyIHJlY3QgPSB3aWRnZXQucm9vdC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsKICAgICAgICB2YXIgaGVpZ2h0ID0gd2luZG93LmlubmVySGVpZ2h0IHx8IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRIZWlnaHQ7CiAgICAgICAgcmV0dXJuIHJlY3QuYm90dG9tID4gMCAmJiByZWN0LnRvcCA8IGhlaWdodCAmJiByZWN0LndpZHRoID4gMDsKICAgIH0KCiAgICAvKiog0JrQu9Cw0LLQuNGI0Lgg0LrQsNC70YzQutGD0LvRj9GC0L7RgNCwINC90LUg0LTQvtC70LbQvdGLINC\/0LXRgNC10YXQstCw0YLRi9Cy0LDRgtGMIEVudGVyINGDINGB0YHRi9C70L7QuiDQuCDQutC90L7Qv9C+0Log0YHQsNC50YLQsC4gKi8KICAgIGZ1bmN0aW9uIGtleUJlbG9uZ3NUb0NhbGN1bGF0b3Iod2lkZ2V0LCBldmVudCkgewogICAgICAgIGlmICh3aWRnZXQucm9vdC5jb250YWlucyhldmVudC50YXJnZXQpKSByZXR1cm4gdHJ1ZTsKICAgICAgICB2YXIgZm9jdXNlZCA9IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQ7CiAgICAgICAgaWYgKGZvY3VzZWQgJiYgZm9jdXNlZCAhPT0gZG9jdW1lbnQuYm9keSAmJiBmb2N1c2VkLnRhZ05hbWUpIHsKICAgICAgICAgICAgdmFyIHRhZyA9IGZvY3VzZWQudGFnTmFtZS50b0xvd2VyQ2FzZSgpOwogICAgICAgICAgICBpZiAodGFnID09PSAnYScgfHwgdGFnID09PSAnYnV0dG9uJyB8fCB0YWcgPT09ICdzdW1tYXJ5JyB8fCB0YWcgPT09ICdpbnB1dCcgfHwKICAgICAgICAgICAgICAgIHRhZyA9PT0gJ3RleHRhcmVhJyB8fCB0YWcgPT09ICdzZWxlY3QnIHx8IGZvY3VzZWQuaXNDb250ZW50RWRpdGFibGUgPT09IHRydWUpIHsKICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICByZXR1cm4gaXNWaXNpYmxlKHdpZGdldCk7CiAgICB9CgogICAgZnVuY3Rpb24gb25LZXlEb3duKGV2ZW50KSB7CiAgICAgICAgdmFyIHdpZGdldCA9IGFjdGl2ZVdpZGdldCB8fCB3aWRnZXRzWzBdOwogICAgICAgIGlmICghd2lkZ2V0KSByZXR1cm47CiAgICAgICAgaWYgKGlzVHlwaW5nVGFyZ2V0KGV2ZW50LnRhcmdldCkpIHJldHVybjsKICAgICAgICBpZiAoIWtleUJlbG9uZ3NUb0NhbGN1bGF0b3Iod2lkZ2V0LCBldmVudCkpIHJldHVybjsKCiAgICAgICAgaWYgKGV2ZW50LmN0cmxLZXkgfHwgZXZlbnQubWV0YUtleSkgewogICAgICAgICAgICB2YXIgc2hvcnRjdXQgPSBldmVudC5rZXkudG9Mb3dlckNhc2UoKTsKICAgICAgICAgICAgaWYgKHNob3J0Y3V0ID09PSAnYycpIHsKICAgICAgICAgICAgICAgIHdpZGdldC5jb3B5UmVzdWx0KCk7CiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOwogICAgICAgICAgICB9IGVsc2UgaWYgKHNob3J0Y3V0ID09PSAndicpIHsKICAgICAgICAgICAgICAgIHdpZGdldC5wYXN0ZVZhbHVlKCk7CiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgIC8vIEVudGVyINC4INC\/0YDQvtCx0LXQuyDQvdCwINC60L3QvtC\/0LrQtSDQutCw0LvRjNC60YPQu9GP0YLQvtGA0LAg0LTQvtC70LbQvdGLINC90LDQttC40LzQsNGC0Ywg0YHQsNC80YMg0LrQvdC+0L\/QutGDCiAgICAgICAgdmFyIGFjdGl2ZSA9IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQ7CiAgICAgICAgaWYgKGFjdGl2ZSAmJiBhY3RpdmUuaGFzQXR0cmlidXRlICYmIGFjdGl2ZS5oYXNBdHRyaWJ1dGUoJ2RhdGEtYWN0aW9uJykgJiYKICAgICAgICAgICAgd2lkZ2V0LnJvb3QuY29udGFpbnMoYWN0aXZlKSAmJiAoZXZlbnQua2V5ID09PSAnRW50ZXInIHx8IGV2ZW50LmtleSA9PT0gJyAnKSkgewogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICB2YXIgaGFuZGxlZCA9IHRydWU7CiAgICAgICAgaWYgKGV2ZW50LmtleSA+PSAnMCcgJiYgZXZlbnQua2V5IDw9ICc5JykgewogICAgICAgICAgICB3aWRnZXQuaGFuZGxlKCdkaWdpdCcsIGV2ZW50LmtleSk7CiAgICAgICAgfSBlbHNlIGlmIChldmVudC5rZXkgPT09ICcsJyB8fCBldmVudC5rZXkgPT09ICcuJykgewogICAgICAgICAgICB3aWRnZXQuaGFuZGxlKCdzZXBhcmF0b3InKTsKICAgICAgICB9IGVsc2UgaWYgKGV2ZW50LmtleSA9PT0gJysnKSB7CiAgICAgICAgICAgIHdpZGdldC5oYW5kbGUoJ29wZXJhdG9yJywgJysnKTsKICAgICAgICB9IGVsc2UgaWYgKGV2ZW50LmtleSA9PT0gJy0nIHx8IGV2ZW50LmtleSA9PT0gJ1x1MjIxMicpIHsKICAgICAgICAgICAgd2lkZ2V0LmhhbmRsZSgnb3BlcmF0b3InLCAnXHUyMjEyJyk7CiAgICAgICAgfSBlbHNlIGlmIChldmVudC5rZXkgPT09ICcqJyB8fCBldmVudC5rZXkgPT09ICd4JyB8fCBldmVudC5rZXkgPT09ICdYJykgewogICAgICAgICAgICB3aWRnZXQuaGFuZGxlKCdvcGVyYXRvcicsICdcdTAwRDcnKTsKICAgICAgICB9IGVsc2UgaWYgKGV2ZW50LmtleSA9PT0gJy8nKSB7CiAgICAgICAgICAgIHdpZGdldC5oYW5kbGUoJ29wZXJhdG9yJywgJ1x1MDBGNycpOwogICAgICAgIH0gZWxzZSBpZiAoZXZlbnQua2V5ID09PSAnRW50ZXInIHx8IGV2ZW50LmtleSA9PT0gJz0nKSB7CiAgICAgICAgICAgIHdpZGdldC5oYW5kbGUoJ2VxdWFscycpOwogICAgICAgIH0gZWxzZSBpZiAoZXZlbnQua2V5ID09PSAnQmFja3NwYWNlJykgewogICAgICAgICAgICB3aWRnZXQuaGFuZGxlKCdiYWNrc3BhY2UnKTsKICAgICAgICB9IGVsc2UgaWYgKGV2ZW50LmtleSA9PT0gJ0RlbGV0ZScpIHsKICAgICAgICAgICAgd2lkZ2V0LmhhbmRsZSgnY2xlYXItZW50cnknKTsKICAgICAgICB9IGVsc2UgaWYgKGV2ZW50LmtleSA9PT0gJ0VzY2FwZScpIHsKICAgICAgICAgICAgd2lkZ2V0LmhhbmRsZSgnY2xlYXInKTsKICAgICAgICB9IGVsc2UgaWYgKGV2ZW50LmtleSA9PT0gJ0Y5JykgewogICAgICAgICAgICB3aWRnZXQuaGFuZGxlKCdzaWduJyk7CiAgICAgICAgfSBlbHNlIGlmIChldmVudC5rZXkgPT09ICclJykgewogICAgICAgICAgICB3aWRnZXQuaGFuZGxlKCdwZXJjZW50Jyk7CiAgICAgICAgfSBlbHNlIGlmIChldmVudC5rZXkgPT09ICdyJyB8fCBldmVudC5rZXkgPT09ICdSJykgewogICAgICAgICAgICB3aWRnZXQuaGFuZGxlKCd1bmFyeScsICdyZWNpcCcpOwogICAgICAgIH0gZWxzZSBpZiAoZXZlbnQua2V5ID09PSAncScgfHwgZXZlbnQua2V5ID09PSAnUScpIHsKICAgICAgICAgICAgd2lkZ2V0LmhhbmRsZSgndW5hcnknLCAnc3FyJyk7CiAgICAgICAgfSBlbHNlIGlmIChldmVudC5rZXkgPT09ICdAJyB8fCBldmVudC5rZXkgPT09ICcjJyB8fCAoZXZlbnQuc2hpZnRLZXkgJiYgZXZlbnQuY29kZSA9PT0gJ0RpZ2l0MicpKSB7CiAgICAgICAgICAgIHdpZGdldC5oYW5kbGUoJ3VuYXJ5JywgJ3NxcnQnKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBoYW5kbGVkID0gZmFsc2U7CiAgICAgICAgfQoKICAgICAgICBpZiAoaGFuZGxlZCkgewogICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOwogICAgICAgICAgICBzZXRBY3RpdmUod2lkZ2V0KTsKICAgICAgICB9CiAgICB9CgogICAgLyogLS0tLS0tLS0tLSDQt9Cw0L\/Rg9GB0LogLS0tLS0tLS0tLSAqLwoKICAgIGZ1bmN0aW9uIGluaXRBbGwoc2NvcGUpIHsKICAgICAgICB2YXIgcm9vdHMgPSAoc2NvcGUgfHwgZG9jdW1lbnQpLnF1ZXJ5U2VsZWN0b3JBbGwoJy5hd2MtY2FsYycpOwogICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcm9vdHMubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgdmFyIHJvb3QgPSByb290c1tpXTsKICAgICAgICAgICAgaWYgKHJvb3QuZ2V0QXR0cmlidXRlKCdkYXRhLWF3Yy1yZWFkeScpID09PSAnMScpIGNvbnRpbnVlOwogICAgICAgICAgICByb290LnNldEF0dHJpYnV0ZSgnZGF0YS1hd2MtcmVhZHknLCAnMScpOwogICAgICAgICAgICB2YXIgd2lkZ2V0ID0gbmV3IFdpZGdldChyb290KTsKICAgICAgICAgICAgd2lkZ2V0LmluaXQoKTsKICAgICAgICAgICAgd2lkZ2V0cy5wdXNoKHdpZGdldCk7CiAgICAgICAgICAgIGlmICghYWN0aXZlV2lkZ2V0KSBhY3RpdmVXaWRnZXQgPSB3aWRnZXQ7CiAgICAgICAgfQogICAgICAgIHJldHVybiB3aWRnZXRzOwogICAgfQoKICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCBvbktleURvd24pOwoKICAgIHdpbmRvdy5BV0MgPSB7CiAgICAgICAgaW5pdDogaW5pdEFsbCwKICAgICAgICB3aWRnZXRzOiB3aWRnZXRzLAogICAgICAgIHNlcGFyYXRvcnM6IHNlcGFyYXRvcnMsCiAgICAgICAgZ2V0VGhlbWU6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoZW1lOyB9CiAgICB9OwoKICAgIGlmIChkb2N1bWVudC5yZWFkeVN0YXRlID09PSAnbG9hZGluZycpIHsKICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdET01Db250ZW50TG9hZGVkJywgZnVuY3Rpb24gKCkgeyBpbml0QWxsKCk7IH0pOwogICAgfSBlbHNlIHsKICAgICAgICBpbml0QWxsKCk7CiAgICB9Cn0od2luZG93LCBkb2N1bWVudCkpOwo=');\n\n    inject(engineCode);\n    if (typeof window.AIWorkersCalc === 'undefined') {\n        (new Function(engineCode))();\n    }\n\n    inject(widgetCode);\n    if (typeof window.AWC === 'undefined') {\n        (new Function(widgetCode))();\n    }\n}());\n<\/script>\n","protected":false},"excerpt":{"rendered":"<p>\u041e\u0431\u044b\u0447\u043d\u044b\u0439 \u0440\u0435\u0436\u0438\u043c, \u043a\u0430\u043a \u0432 Windows: \u043f\u0430\u043c\u044f\u0442\u044c, \u043f\u0440\u043e\u0446\u0435\u043d\u0442\u044b, \u043a\u043e\u0440\u0435\u043d\u044c, \u0441\u0442\u0435\u043f\u0435\u043d\u0438 \u0438 \u0433\u043e\u0440\u044f\u0447\u0438\u0435 \u043a\u043b\u0430\u0432\u0438\u0448\u0438. \u041a\u0430\u043b\u044c\u043a\u0443\u043b\u044f\u0442\u043e\u0440 &#9789; &#8211; &#9723; &#10005; M 0 MC MR M+ M- MS % CE C &#9003; 1\/x x&#178; &#8730;x &#247; 7 8 9 &#215; 4 5 6 &#8722; 1 2 3 + &#177; 0 , = \u0413\u043e\u0440\u044f\u0447\u0438\u0435 \u043a\u043b\u0430\u0432\u0438\u0448\u0438 0&ndash;9, , \u0432\u0432\u043e\u0434 \u0447\u0438\u0441\u043b\u0430 + [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-6","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/ai-workers.ru\/index.php?rest_route=\/wp\/v2\/pages\/6","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ai-workers.ru\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/ai-workers.ru\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/ai-workers.ru\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/ai-workers.ru\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=6"}],"version-history":[{"count":5,"href":"https:\/\/ai-workers.ru\/index.php?rest_route=\/wp\/v2\/pages\/6\/revisions"}],"predecessor-version":[{"id":12,"href":"https:\/\/ai-workers.ru\/index.php?rest_route=\/wp\/v2\/pages\/6\/revisions\/12"}],"wp:attachment":[{"href":"https:\/\/ai-workers.ru\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=6"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}