82 lines
19 KiB
HTML
82 lines
19 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="ko">
|
|
<head>
|
|
<meta charset="UTF-8" />
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
<title>total</title>
|
|
<script src="https://cdn.tailwindcss.com"></script>
|
|
<script src="https://cdn.jsdelivr.net/npm/xlsx@0.18.5/dist/xlsx.full.min.js"></script>
|
|
<style>
|
|
@import url('https://fonts.googleapis.com/css2?family=Pretendard:wght@400;600;700;900&display=swap');
|
|
html { font-size: 14px; }
|
|
body { margin: 0; background: #f8fafc; font-family: 'Pretendard', sans-serif; font-size: 1rem; line-height: 1.45; letter-spacing: -0.02em; }
|
|
input, select, button, textarea { font: inherit; }
|
|
.top-wrap {
|
|
position: sticky;
|
|
top: 0;
|
|
z-index: 1000;
|
|
background: rgba(248,250,252,0.92);
|
|
backdrop-filter: blur(8px);
|
|
border-bottom: 1px solid #e2e8f0;
|
|
padding: 10px 16px;
|
|
}
|
|
.control-bar {
|
|
max-width: 1700px;
|
|
margin: 0 auto;
|
|
display: flex;
|
|
justify-content: space-between;
|
|
align-items: center;
|
|
gap: 8px;
|
|
min-height: 44px;
|
|
}
|
|
.tab-btn { font-size: 13px; font-weight: 800; padding: 8px 14px; border-radius: 12px; border: 1px solid #e2e8f0; color: #475569; background: #fff; }
|
|
.tab-btn.active { background: #4f46e5; color: #fff; border-color: #4f46e5; box-shadow: 0 4px 14px rgba(79,70,229,0.28); }
|
|
.tab-btn.uploaded { background: #eef2ff; color: #3730a3; border-color: #a5b4fc; box-shadow: 0 2px 8px rgba(79,70,229,0.18); }
|
|
.tab-wrap { display: inline-flex; align-items: center; gap: 8px; }
|
|
.pane { display: none; }
|
|
.pane.active { display: block; }
|
|
.frame { width: 100%; height: calc(100vh - 66px); border: 0; background: #fff; }
|
|
.date-box { display: inline-flex; align-items: center; gap: 8px; font-size: 13px; font-weight: 700; padding: 7px 10px; border: 1px solid #e2e8f0; border-radius: 12px; background: #fff; color: #334155; }
|
|
.date-input { border: none; outline: none; font-size: 13px; font-weight: 700; color: #1e293b; background: transparent; }
|
|
</style>
|
|
</head>
|
|
<body>
|
|
<input id="upload-expense" type="file" accept=".csv" class="hidden" />
|
|
<input id="upload-work" type="file" accept=".csv,.xlsx,.xls" class="hidden" />
|
|
|
|
<div class="top-wrap">
|
|
<div class="control-bar">
|
|
<div class="tab-wrap">
|
|
<button id="btn-tab-dash" class="tab-btn active" type="button">프로젝트별 분석</button>
|
|
<button id="btn-tab-mh" class="tab-btn" type="button">팀/개인별 분석</button>
|
|
</div>
|
|
<div class="flex flex-wrap items-center gap-2">
|
|
<div class="date-box">
|
|
<span class="text-indigo-600">기간</span>
|
|
<input id="global-start-date" type="date" class="date-input" value="2026-01-01" />
|
|
<span class="text-slate-300">~</span>
|
|
<input id="global-end-date" type="date" class="date-input" value="2026-01-31" />
|
|
</div>
|
|
<button id="btn-upload-expense" class="tab-btn" type="button">전표 데이터 업로드</button>
|
|
<button id="btn-upload-work" class="tab-btn" type="button">MH 데이터 업로드</button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<section id="pane-dash" class="pane active">
|
|
<iframe id="frame-dash" class="frame"></iframe>
|
|
</section>
|
|
<section id="pane-mh" class="pane">
|
|
<iframe id="frame-mh" class="frame"></iframe>
|
|
</section>
|
|
|
|
<script>
|
|
const paneDash = document.getElementById('pane-dash');
|
|
const paneMh = document.getElementById('pane-mh');
|
|
const btnTabDash = document.getElementById('btn-tab-dash');
|
|
const btnTabMh = document.getElementById('btn-tab-mh');
|
|
|
|
const frameDash = document.getElementById('frame-dash');
|
|
const frameMh = document.getElementById('frame-mh');
|
|
const DASH_HTML_B64='PCFET0NUWVBFIGh0bWw+CjxodG1sIGxhbmc9ImtvIj4KPGhlYWQ+CiAgPG1ldGEgY2hhcnNldD0iVVRGLTgiIC8+CiAgPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0aCwgaW5pdGlhbC1zY2FsZT0xLjAiIC8+CiAgPHRpdGxlPu2UhOuhnOygne2KuCDrjIDsi5zrs7Trk5w8L3RpdGxlPgogIDxzY3JpcHQgc3JjPSJodHRwczovL3VucGtnLmNvbS9yZWFjdEAxOC91bWQvcmVhY3QucHJvZHVjdGlvbi5taW4uanMiPjwvc2NyaXB0PgogIDxzY3JpcHQgc3JjPSJodHRwczovL3VucGtnLmNvbS9yZWFjdC1kb21AMTgvdW1kL3JlYWN0LWRvbS5wcm9kdWN0aW9uLm1pbi5qcyI+PC9zY3JpcHQ+CiAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vdW5wa2cuY29tL3JlYWN0LWlzL3VtZC9yZWFjdC1pcy5wcm9kdWN0aW9uLm1pbi5qcyI+PC9zY3JpcHQ+CiAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vdW5wa2cuY29tL3JlY2hhcnRzL3VtZC9SZWNoYXJ0cy5taW4uanMiPjwvc2NyaXB0PgogIDxzY3JpcHQgc3JjPSJodHRwczovL3VucGtnLmNvbS9AYmFiZWwvc3RhbmRhbG9uZS9iYWJlbC5taW4uanMiPjwvc2NyaXB0PgogIDxzY3JpcHQgc3JjPSJodHRwczovL2Nkbi50YWlsd2luZGNzcy5jb20iPjwvc2NyaXB0Pgo8L2hlYWQ+Cjxib2R5PgogIDxkaXYgaWQ9InJvb3QiPjwvZGl2PgogIDxzY3JpcHQgdHlwZT0idGV4dC9iYWJlbCI+CmNvbnN0IHsgdXNlU3RhdGUsIHVzZU1lbW8sIHVzZUVmZmVjdCB9ID0gUmVhY3Q7CmNvbnN0IFJlY2hhcnRzTGliID0gd2luZG93LlJlY2hhcnRzIHx8IHt9OwoKY29uc3QgaWNvbiA9IChnbHlwaCkgPT4gKHsgc2l6ZSA9IDE0LCBjbGFzc05hbWUgPSAnJyB9KSA9PiAoCiAgPHNwYW4gY2xhc3NOYW1lPXtjbGFzc05hbWV9IHN0eWxlPXt7IGZvbnRTaXplOiBgJHtzaXplfXB4YCwgbGluZUhlaWdodDogMSB9fT57Z2x5cGh9PC9zcGFuPgopOwpjb25zdCBMYXlvdXREYXNoYm9hcmQgPSBpY29uKCfilqYnKTsKY29uc3QgQ2xvY2sgPSBpY29uKCfil7cnKTsKY29uc3QgQnJpZWZjYXNlID0gaWNvbign4pajJyk7CmNvbnN0IENhbGVuZGFyID0gaWNvbign4perJyk7CmNvbnN0IExpc3QgPSBpY29uKCfiiaEnKTsKY29uc3QgVGFyZ2V0ID0gaWNvbign4peOJyk7CmNvbnN0IFVzZXJzID0gaWNvbign8J+RpScpOwpjb25zdCBVcGxvYWQgPSBpY29uKCfih6onKTsKY29uc3QgQ2hlY2tDaXJjbGUyID0gaWNvbign4pePJyk7CmNvbnN0IEZpbGVUZXh0ID0gaWNvbign4pakJyk7CmNvbnN0IFJlZnJlc2hDdyA9IGljb24oJ+KGuycpOwpjb25zdCBNYXBQaW4gPSBpY29uKCfijJYnKTsKY29uc3QgQ29mZmVlID0gaWNvbign4piVJyk7CmNvbnN0IFBhY2thZ2UgPSBpY29uKCfilqcnKTsKY29uc3QgV2FsbGV0ID0gaWNvbign4pauJyk7CmNvbnN0IFVzZXJDaGVjayA9IGljb24oJ+KckycpOwpjb25zdCBJbmZvID0gaWNvbign4pOYJyk7Cgpjb25zdCBBcHAgPSAoKSA9PiB7CiAgY29uc3QgW2V4cGVuc2VSYXcsIHNldEV4cGVuc2VSYXddID0gdXNlU3RhdGUoJycpOwogIGNvbnN0IFt3b3JrUmF3LCBzZXRXb3JrUmF3XSA9IHVzZVN0YXRlKCcnKTsKICBjb25zdCBbcHJvamVjdE9yZGVyQ3N2LCBzZXRQcm9qZWN0T3JkZXJDc3ZdID0gdXNlU3RhdGUoJycpOwogIGNvbnN0IFtzdGFydERhdGUsIHNldFN0YXJ0RGF0ZV0gPSB1c2VTdGF0ZSgnMjAyNi0wMS0wMScpOwogIGNvbnN0IFtlbmREYXRlLCBzZXRFbmREYXRlXSA9IHVzZVN0YXRlKCcyMDI2LTAxLTMxJyk7CgogIHVzZUVmZmVjdCgoKSA9PiB7CiAgICBjb25zdCBoYW5kbGVyID0gKGV2dCkgPT4gewogICAgICBjb25zdCB7IHNvdXJjZSwgdHlwZSwgdGV4dCwgc3RhcnREYXRlLCBlbmREYXRlIH0gPSBldnQuZGF0YSB8fCB7fTsKICAgICAgaWYgKHNvdXJjZSA9PT0gJ3RvdGFsLXVwbG9hZCcpIHsKICAgICAgICBpZiAodHlwZSA9PT0gJ2V4cGVuc2UnKSBzZXRFeHBlbnNlUmF3KHRleHQgfHwgJycpOwogICAgICAgIGVsc2UgaWYgKHR5cGUgPT09ICd3b3JrJykgc2V0V29ya1Jhdyh0ZXh0IHx8ICcnKTsKICAgICAgfSBlbHNlIGlmIChzb3VyY2UgPT09ICd0b3RhbC1jb250cm9sJykgewogICAgICAgIGlmICh0eXBlID09PSAncHJvamVjdC1vcmRlci1jc3YnKSBzZXRQcm9qZWN0T3JkZXJDc3YodGV4dCB8fCAnJyk7CiAgICAgICAgZWxzZSBpZiAodHlwZSA9PT0gJ2RhdGUtcmFuZ2UnKSB7CiAgICAgICAgICBpZiAoc3RhcnREYXRlKSBzZXRTdGFydERhdGUoc3RhcnREYXRlKTsKICAgICAgICAgIGlmIChlbmREYXRlKSBzZXRFbmREYXRlKGVuZERhdGUpOwogICAgICAgIH0KICAgICAgfQogICAgfTsKICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdtZXNzYWdlJywgaGFuZGxlcik7CiAgICByZXR1cm4gKCkgPT4gd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21lc3NhZ2UnLCBoYW5kbGVyKTsKICB9LCBbXSk7CgogIGNvbnN0IHBhcnNlQ3N2ID0gKHR4dCkgPT4gewogICAgaWYgKCF0eHQpIHJldHVybiBbXTsKICAgIGNvbnN0IHJvd3MgPSBbXTsKICAgIGxldCBjdXJyID0gW10sIGYgPSAnJywgcSA9IGZhbHNlOwogICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0eHQubGVuZ3RoOyBpKyspIHsKICAgICAgY29uc3QgYyA9IHR4dFtpXTsKICAgICAgaWYgKGMgPT09ICciJykgewogICAgICAgIGlmIChxICYmIHR4dFtpKzFdID09PSAnIicpIHsgZiArPSAnIic7IGkrKzsgfSBlbHNlIHEgPSAhcTsKICAgICAgfSBlbHNlIGlmIChjID09PSAnLCcgJiYgIXEpIHsgY3Vyci5wdXNoKGYpOyBmID0gJyc7IH0KICAgICAgZWxzZSBpZiAoKGMgPT09ICdcbicgfHwgYyA9PT0gJ1xyJykgJiYgIXEpIHsKICAgICAgICBpZiAoYyA9PT0gJ1xyJyAmJiB0eHRbaSsxXSA9PT0gJ1xuJykgaSsrOwogICAgICAgIGN1cnIucHVzaChmKTsgcm93cy5wdXNoKGN1cnIpOyBjdXJyID0gW107IGYgPSAnJzsKICAgICAgfSBlbHNlIGYgKz0gYzsKICAgIH0KICAgIGN1cnIucHVzaChmKTsgcm93cy5wdXNoKGN1cnIpOwogICAgcmV0dXJuIHJvd3MuZmlsdGVyKHIgPT4gci5sZW5ndGggPiAxIHx8IHIuWzBdLnRyaW0oKSkgLm1hcChyID0+IHIubWFwKHYgPT4gdi5yZXBsYWNlKC9eeXVCRUZGLywgJycpLnRyaW0oKSkpOwogIH07CgogIGNvbnN0IGV4cGVuc2VEYXRhID0gdXNlTWVtbygoKSA9PiBwYXJzZUNzdihleHBlbnNlUmF3KSwgW2V4cGVuc2VSYXddKTsKICBjb25zdCB3b3JrRGF0YSA9IHVzZU1lbW8oKCkgPT4gcGFyc2VDc3Yod29ya1JhdyksIFt3b3JrUmF3XSk7CgogIGNvbnN0IHByb2plY3RPcmRlciA9IHVzZU1lbW8oKCkgPT4gewogICAgaWYgKCFwcm9qZWN0T3JkZXJDc3YpIHJldHVybiBbXTsKICAgIGNvbnN0IHJvd3MgPSBwYXJzZUNzdihwcm9qZWN0T3JkZXJDc3YpLmZpbHRlcihyID0+IHIubGVuZ3RoID4gMCk7CiAgICByZXR1cm4gcm93cy5zbGljZSgxKS5tYXAociA9PiByWzRdKS5maWx0ZXIoQm9vbGVhbik7CiAgfSwgW3Byb2plY3RPcmRlckNzdl0pOwoKICBjb25zdCBwcm9qZWN0TWFwID0gdXNlTWVtbygoKSA9PiB7CiAgICBjb25zdCBtID0gbmV3IE1hcCgpOwogICAgaWYgKGV4cGVuc2VEYXRhLmxlbmd0aCA8IDIpIHJldHVybiBtOwogICAgY29uc3QgaCA9IGV4cGVuc2VEYXRhWzBdOwogICAgY29uc3QgaWR4ID0geyBuYW1lOiBoLmluZGV4T2YoJ0onKSwgY29zdDogaC5pbmRleE9mKCdSJykgfTsKICAgIGV4cGVuc2VEYXRhLnNsaWNlKDEpLmZvckVhY2gociA9PiB7CiAgICAgIGNvbnN0IG4gPSByW2lkeC5uYW1lXSwgYyA9IHBhcnNlRmxvYXQocltpZHguaW5kZXhdKSB8fCAwOwogICAgICBpZiAobiAmJiBjID4gMCkgbS5zZXQobiwgKG0uZ2V0KG4pIHx8IDApICsgYyk7CiAgICB9KTsKICAgIHJldHVybiBtOwogIH0sIFtleHBlbnNlRGF0YV0pOwoKICBjb25zdCB3b3JrTWFwID0gdXNlTWVtbygoKSA9PiB7CiAgICBjb25zdCBtID0gbmV3IE1hcCgpOwogICAgaWYgKHdvcmtEYXRhLmxlbmd0aCA8IDIpIHJldHVybiBtOwogICAgY29uc3QgaCA9IHdvcmtEYXRhWzBdOwogICAgY29uc3QgaWR4ID0geyBuYW1lOiBoLmluZGV4T2YoJ3Byb2plY3RfbmFtZScpLCBjb3N0OiBoLmluZGV4T2YoJ2xhYm9yX2Nvc3QnKSB9OwogICAgd29ya0RhdGEuc2xpY2UoMSkuZm9yRWFjaChyID0+IHsKICAgICAgY29uc3QgbiA9IHJbaWR4Lm5hbWVdLCBjID0gcGFyc2VGbG9hdChyW2lkeC5jb3N0XSkgfHwgMDsKICAgICAgaWYgKG4gJiYgYyA+IDApIG0uc2V0KG4sIChtLmdldChuKSB8fCAwKSArIGMpOwogICAgfSk7CiAgICByZXR1cm4gbTsKICB9LCBbd29ya0RhdGFdKTsKCiAgY29uc3Qgc3ortedGl0bGVzID0gdXNlTWVtbygoKSA9PiB7CiAgICBjb25zdCBhbGwgPSBBcnJheS5mcm9tKG5ldyBTZXQoWy4uLnByb2plY3RNYXAua2V5cygpLCAuLi53b3JrTWFwLmtleXMoKV0pKTsKICAgIHJldHVybiBhbGwuc29ydCgoYSwgYikgPT4gewogICAgICBjb25zdCBpYSA9IHByb2plY3RPcmRlci5pbmRleE9mKGEpLCBpYiA9IHByb2plY3RPcmRlci5pbmRleE9mKGIpOwogICAgICBpZiAoaWEgPj0gMCAmJiBpYiA+PSAwKSByZXR1cm4gaWEgLSBpYjsKICAgICAgaWYgKGlhID49IDApIHJldHVybiAtMTsKICAgICAgaWYgKGliID49IDApIHJldHVybiAxOwogICAgICByZXR1cm4gYS5sb2NhbGVDb21wYXJlKGIpOwogICAgfSk7CiAgfSwgW3Byb2plY3RNYXAsIHdvcmtNYXAsIHByb2plY3RPcmRlcl0pOwoKICBjb25zdCBjaGFydERhdGEgPSB1c2VNZW1vKCgpID0+IAogICAgc29ydGVkVGl0bGVzLm1hcChuID0+ICh7IG5hbWU6IG4sIGV4cGVuc2U6IHByb2plY3RNYXAuZ2V0KG4pIHx8IDAsIHdvcms6IHdvcmtNYXAuZ2V0KG4pIHx8IDAgfSkpLAogICAgW3NvcnRlZFRpdGxlcywgcHJvamVjdE1hcCwgd29ya01hcF0KICApOwoKICByZXR1cm4gKAogICAgPGRpdiBjbGFzc05hbWU9InAtNiBtYXgtdy03eGwg bXgtYXV0byI+CiAgICAgIDxoMSBjbGFzc05hbWU9InRleHQtMnhsIGZvbnQtYm9sZCBtYi02Ij7tlITroZ3soJ3Riggg7Iic7J217J20IOu2hOyEnTwvaDE+CiAgICAgIDxkaXYgY2xhc3NOYW1lPSJiaZy13aGl0ZSByb3VuZGVkLXhsIHNoYWRvdy1zbSBwLTYiPgogICAgICAgIDxkaXYgc3R5bGU9e3sgd2lkdGg6ICcxMDAlJywgaGVpZ2h0OiA1MDAgfX0+CiAgICAgICAgICA8UmVjaGFydHNMaWIuUmVzcG9uc2l2ZUNvbnRhaW5lcj4KICAgICAgICAgICAgPFJlY2hhcnRzTGliLkJhckNoYXJ0IGRhdGE9e2NoYXJ0RGF0YX0gbWFyZ2luPXt7IHRvcDogMjAsIHJpZ2h0OiAzMCwgbGVmdDogMjAsIGJvdHRvbTogMTIwIH19PgogICAgICAgICAgICAgIDxSZWNoYXJ0cExpYi5DYXJ0ZXNpYW5HcmlkIHN0cm9rZURhc2hhcnJheT0iMyAzIiAvPgogICAgICAgICAgICAgIDxSZWNoYXJ0cExpYi5YQXhpcyBkYXRhS2V5PSJuYW1lIiBhbmdsZT17LTQ1fSB0ZXh0QW5jaG9yPSJlbmQiIGludGVydmFsPTBvIGhlaWdodD17MTAwfSB0aWNrPXt7IGZvbnRTaXplOiAxMiB9fSAvPgogICAgICAgICAgICAgIDxSZWNoYXJ0cExpYi5ZQXhpcyAvPgogICAgICAgICAgICAgIDxSZWNoYXJ0cExpYi5Ub29sdGlwIC8+CiAgICAgICAgICAgICAgPFJlY2hhcnRzTGliLkxlZ2VuZCB2ZXJ0aWNhbEFsaWduPSJ0b3AiIGFsaWduPSJyaWdodCIgLz4KICAgICAgICAgICAgICA8UmVjaGFydHNMaWIuQmFyIGRhdGES2V5PSJleHBlbnNlIiBuYW1lPSLsoITtmZwg7KeA7LacIiBmaWxsPSIjNDY2ZWU1IiAvPgogICAgICAgICAgICAgIDxSZWNoYXJ0cExpYi5CYXIgZGF0YUtleT0id29yayIgbmFtZT0iTUgg7KeA7LacIiBmaWxsPSIjMTBlYmI5IiAvPgogICAgICAgICAgICA8L1JlY2hhcnRzTGliLkJhckNoYXJ0PgogICAgICAgICAgPC9SZWNoYXJ0cExpYi5SZXNwb25zaXZlQ29udGFpbmVyPgogICAgICAgIDwvZGl2PgogICAgICA8L2Rpdj4KICAgIDwvZGl2PgogICk7Cn07Cgpjb25zdCByb290ID0gUmVhY3RET00uY3JlYXRlUm9vdChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncm9vdCcpKTsKcm9vdC5yZW5kZXIoPEFwcCAvPik7CiAgPC9zY3JpcHQ+CjwvYm9keT4KPC9odG1sPgo=';
|
|
const MH_HTML_B64 = 'PCFET0NUWVBFIGh0bWw+Cgo8aHRtbCBsYW5nPSJrbyI+Cgo8aGVhZD4KCiAgICA8bWV0YSBjaGFyc2V0PSJVVEYtOCI+CgogICAgPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0aCwgaW5pdGlhbC1zY2FsZT0xLjAiPgoKICAgIDx0aXRsZT5EZk1BIO2MgOuzhC/qsJzsnbjrs4Qg642w7J207YSwIOu2hOyEnSDsi5zsiqTthZw8L3RpdGxlPgoKICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2Nkbi50YWlsd2luZGNzcy5jb20iPjwvc2NyaXB0PgoKICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy94bHN4LzAuMTguNS94bHN4LmZ1bGwubWluLmpzIj48L3NjcmlwdD4KCiAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nc3RhdGljLmNvbS9jaGFydHMvbG9hZGVyLmpzIj48L3NjcmlwdD4KCiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly91bnBrZy5jb20vbHVjaWRlQGxhdGVzdCI+PC9zY3JpcHQ+CgogICAgPHN0eWxlPgogICAgICAgIEBpbXBvcnQgdXJsKCdodHRwczovL2ZvbnRzLmdvb2dsZWFwaXMuY29tL2NzczI/ZmFtaWx5PVByZXRlbmRhcmQ6d2dodEA0MDA7NjAwOzcwMDs5MDAmZGlzcGxheT1zd2FwJyk7CiAgICAgICAgaHRtbCB7IGZvbnQtc2l6ZTogMTRweDsgfQogICAgICAgIGJvZHkgeyBmb250LWZhbWlseTogJ1ByZXRlbmRhcmQnLCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDFyZW07IGxpbmUtaGVpZ2h0OiAxLjQ1OyBiYWNrZ3JvdW5kLWNvbG9yOiAjZjhmYWZjOyBsZXR0ZXItc3BhY2luZzogLTAuMDJlbTsgfQogICAgICAgIGlucHV0LCBzZWxlY3QsIGJ1dHRvbiwgdGV4dGFyZWEgeyBmb250OiBpbmhlcml0OyB9CiAgICAgICAgLmdvb2dsZS12aXN1YWxpemF0aW9uLXRvb2x0aXAgewogICAgICAgICAgICBib3JkZXI6IG5vbmUgIWltcG9ydGFudDsKICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogMXJlbSAhaW1wb3J0YW50OwogICAgICAgICAgICBib3gtc2hhZG93OiAwIDIwcHggMjVweCAtNXB4IHJnYigwIDAgMCAvIDAuMSkgIWltcG9ydGFudDsKCiAgICAgICAgICAgIHBhZGRpbmc6IDFyZW0gIWltcG9ydGFudDsKCiAgICAgICAgfQoKICAgICAgICAuY3VzdG9tLXNjcm9sbGJhcjo6LXdlYmtpdC1zY3JvbGxiYXIgeyB3aWR0aDogNnB4OyB9CgogICAgICAgIC5jdXN0b20tc2Nyb2xsYmFyOjotd2Via2l0LXNjcm9sbGJhci10cmFjayB7IGJhY2tncm91bmQ6ICNmMWY1Zjk7IH0KCiAgICAgICAgLmN1c3RvbS1zY3JvbGxiYXI6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iIHsgYmFja2dyb3VuZDogI2NiZDVlMTsgYm9yZGVyLXJhZGl1czogMTBweDsgfQoKCgogICAgICAgICNzZWFyY2gtZHJvcGRvd24gewoKICAgICAgICAgICAgbWF4LWhlaWdodDogMzAwcHg7CgogICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOwoKICAgICAgICAgICAgei1pbmRleDogMTAwMDsKCiAgICAgICAgfQogICAgPC9zdHlsZT4KPC9oZWFkPgoKPGJvZHk+Cgo8ZGl2IGlkPSJzZWFyY2gtZHJvcGRvd24iIGNsYXNzPSJoaWRkZW4gYWJzb2x1dGUgYmctd2hpdGUgYm9yZGVyIGJvcmRlci1zbGF0ZS0yMDAgcm91bmRlZC1sZyBzaGFkb3ctbGcgbXQtMSI+PC9kaXY+CgoKPCEtLSBNb2RhbCAtLT4KCjxkaXYgaWQ9InByb2plY3RNb2RhbCIgY2xhc3M9ImhpZGRlbiBmaXhlZCBpbnNldC0wIGJnLXNsYXRlLTkwMC81MCBiYWNrZHJvcC1ibHVyLXNtIHote1szMCsyMDBdfSBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBwLTQiPgoKICAgIDxkaXYgY2xhc3M9ImJnLXdoaXRlIHJvdW5kZWQtMnhsIHNoYWRvdy0yemwgbWF4LXctNG5sIHctZnVsbCBtYXgtaC1bezgwcXRoXV0gZmxleCBmbGV4LWNvbCI+CgogICAgICAgIDxkaXYgY2xhc3M9InAtNiBib3JkZXItYiBib3JkZXItc2xhteUtMTAwIGZsZXgganVzdGlmeS1iZXR3ZWVuIGl0ZW1zLWNlbnRlciI+CgogICAgICAgICAgICA8ZGl2PgoKICAgICAgICAgICAgICAgIDxoMyBpZD0ibW9kYWxQcm9qZWN0TmFtZSIgY2xhc3M9InRleHQtbGcgaW5saW5lLWJsb2NrIGZvbnQtYm9sZCB0ZXh0LXNsYXRlLTkwMCI+7ZSE66Gc7KCd7Yq4PC9oMz4KCiAgICAgICAgICAgICAgICA8c3BhbiBpZD0ibW9kYWxQcm9qZWN0Q29kZSIgY2xhc3M9Im1sLTIgdGV4dC1zbSB0ZXh0LXNsYXRlLTUwMCBmb250LW1lZGl1bSI+PC9zcGFuPgoKICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICA8YnV0dG9uIG9uY2xpY2s9ImNsb3NlTW9kYWwoKSIgY2xhc3M9InAtMiBob3ZlcjpiZy1zbGF0ZS0xMDAgcm91bmRlZC1mZSB0cmFuc2l0aW9uLWNvbG9ycyI+CgogICAgICAgICAgICAgICAgPGkgZGF0YS1sdWNpZGU9IngiIGNsYXNzPSJ3LTUgaC01IHRleHQtc2xhteUtNTAwIj48L2k+CgogICAgICAgICAgICA8L2J1dHRvbj4KCiAgICAgICAgPC9kaXY+CgogICAgICAgIDxkaXYgaWQ9Im1vZGFsQ29udGVudCIgY2xhc3M9InAtNiBvdmVyZmxvdy15LWF1dG8gY3VzdG9tLXNjcm9sbGJhciI+PC9kaXY+CgogICAgPC9kaXY+CjwvZGl2PgoKCjxkaXYgY2xhc3M9Im1pbi1oLXNjcmVlbiI+CgogICAgPGRpdiBjbGFzcz0ic3RpY2t5IHRvcC0wIHote1szMCsyMDBdfSBiZy1zbGF0ZS01MC84MCBiYWNrZHJvcC1ibHVyLW1kIGJvcmRlci1iIGJvcmRlci1zbGF0ZS0yMDAiPgoKICAgICAgICA8ZGl2IGNsYXNzPSJtYXgtdy1bezE3MDArcHhdXSBteC1hdXRvIHB4LTQgcHktNCBmcmV4IGZsZXgtY29sIG1kOmZsZXgtcm93IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4gZ2FwLTQiPgoKICAgICAgICAgICAgPGRpdiBjbGFzcz0iZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTQiPgoKICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InAtMiBiZy1pbmRpZ28tNjAwIHJvdW5kZWQtb2ciPgoKICAgICAgICAgICAgICAgICAgICA8aSBkYXRhLWx1Y2lkZT0ibGF5b3V0LWRhc2hib2FyZCIgY2xhc3M9InctNiBoLTYgdGV4dC13aGl0ZSI+PC9pPgoKICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgIDxkaXY+CgogICAgICAgICAgICAgICAgICAgIDxoMSBjbGFzcz0idGV4dC14bCBmb250LWJvbGQgdGV4dC1zbGF0ZS05MDAgbGV0dGVyLXRpZ2h0ZXIiPkRmTUEg7KCE7LSI66ClL+qwnOynbOuMgOyLnOrs6TrrkzwvaDE+CgogICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJ0ZXh0LXhzIGZvbnQtbWVkaXVtIHRleHQtc2xhteUtNTAwIG10LTAuNSI+7ZSE66Gc7KCd7Yq4IOyImO2WhCDrrI8g66as7IaM7IqkIOq0gOumrCDsi5zsiqTthZw8L3A+CgogICAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZsZXggaXRlbXMtY2VudGVyIGdhcC0zIHctZnVsbCBtZDp3LWF1dG8iPgoKICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJlbGF0aXZlIGZsZXgtMSI+CgogICAgICAgICAgICAgICAgICAgIDxpIGRhdGEtbHVjaWRlPSJzZWFyY2giIGNsYXNzPSJhYnNvbHV0ZSBsZWZ0LTMgdG9wLTEvMiAtdHJhbnNsYXRlLXktMS8yIHctNCBoLTQgdGV4dC1zbGF0ZS00MDAiPjwvaT4KCiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIGlkPSJ0ZWFtU2VhcmNoIiBwbGFjZWhvbGRlcj0i7YWA7JygIOuYpCDsnbTrpoQg6rKA7ImicSIgY2xhc3M9InctZnVsbCBtZDp3LTY0IHBsLTEwIHByLTQgcHktMiBiZy13aGl0ZSBib3JkZXIgYm9yZGVyLXNsYXRlLTIwMCByb3VuZGVkLWxnIHRleHQtc20gZm9jdXM6b3V0bGluZS1ub25lIGZvY3VzOnJpbmctMiBmb2N1czpyaW5nLWluZGlnby01MDAvMjAgdHJhbnNpdGlvbi1hbGwiPgoKICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZsZXggaXRlbXMtY2VudGVyIGdhcC0yIGJnLXdoaXRlIGJvcmRlciBib3JkZXItc2xhteUtMjAwIHB4LTMgcHktMS41IHJvdW5kZWQtbGciPgoKICAgICAgICAgICAgICAgICAgICA8aSBkYXRhLWx1Y2lkZT0idXNlcnMiIGNsYXNzPSJ3LTQgaC00IHRleHQtc2xhteUtNDAwIis8L2k+CgogICAgICAgICAgICAgICAgICAgIDxzcGFuIGlkPSJ0b3RhbE1lbWJlcnNDb3VudCIgY2xhc3M9InRleHQtc20gZm9udC1ib2xkIHRleHQtc2xhteUtNTAwIj4wPC9zcGFuPgoKICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgPC9kaXY+CgogICAgICAgIDwvZGl2PgoKICAgIDwvZGl2PgoKICAgIDxtYWluIGNsYXNzPSJtYXgtdy1bezE3MDArcHhdXSBteC1hdXRvIHB4LTQgcHktOCI+CgogICAgICAgIDxkaXYgaWQ9ImRhc2hib2FyZENvbnRlbnQiIGNsYXNzPSJoaWRkZW4gc3BhY2UteS04Ij4KCiAgICAgICAgICAgIDwhLS0gU3RhdHMgR3JpZCAtLT4KCiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImdyaWQgZ3JpZC1jb2xzLTEgbWQ6Z3JpZC1jb2xzLTIgbGc6Z3JpZC1jb2xzLTQgZ2FwLTYiPgoKICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJnLXdoaXRlIHAtNiByb3VuZGVkLTJ4bCBzaGFkb3ctc20gYm9yZGVyIGJvcmRlci1zbGF0ZS0xMDAiPgoKICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4gbWItNCI+CgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwLTIuNSBiZy1pbmRpZ28tNTAgcm91bmRlZC1sciI+PGkgZGF0YS1sdWNpZGU9ImJyaWVmY2FzZSIgY2xhc3M9InctNSBoLTUgdGV4dC1pbmRpZ28tNjAwIj48L2k+PC9kaXY+CgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICA8ZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9InRleHQtc20gZm9udC1tZWRpdW0gdGV4dC1zbGF0ZS01MDAiPu2Zseq0keykkCDtlITroZ3soJ3RigjwL3A+CgogICAgICAgICAgICAgICAgICAgICAgICA8aDMgaWQ9InN0YXQtcHJvamVjdHMiIGNsYXNzPSJ0ZXh0LTMteGwgZm9udC1ib2xkIHRleHQtc2xhteUtOTAwIG10LTEiPjA8L2gzPgoKICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJiZy13aGl0ZSBwLTYgcm91bmRlZC0yeGwgc2hhZG93LXNtIGJvcmRlciBib3JkZXItc2xhteUtMTAwIj4KCiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuIG1iLTQiPgoKICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icC0yLjUgYmctYW1iZXItNTAgcm91bmRlZC1sciI+PGkgZGF0YS1sdWNpZGU9ImNsb2NrIiBjbGFzcz0idy01IGgtNSB0ZXh0LWFtYmVyLTYwMCI+PC9pPjwvZGl2PgoKICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibXQtMSI+CgogICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0idGV4dC1zbSBmb250LW1lZGl1bSIgdGV4dC1zbGF0ZS01MDAiPu2VqOqzhCDrrLTrrLTrp4gg7Yis7J6FPC9wPgoKICAgICAgICAgICAgICAgICAgICAgICAgPGgzIGlkPSJzdGF0LWhvdXJzIiBjbGFzcz0idGV4dC0zLXhsIGZvbnQtYm9sZCB0ZXh0LXNsYXRlLTkwMCBt dC0xIj4wPC9oMz4KCiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYmctd2hpdGUgcC02IHJvdW5kZWQtMnhsIHNoYWRvdy1zb>... [truncated] |