From 7cf4f53ec3d702368a77cf11fe0c4e21084e4813 Mon Sep 17 00:00:00 2001 From: lys <971387674@qq.com> Date: Mon, 10 Feb 2025 14:36:59 +0800 Subject: [PATCH] master-hiprint --- package.json | 2 + public/js/hiprint/css/hiprint.css | 816 ++ public/js/hiprint/css/image/hi.png | Bin 0 -> 363070 bytes .../hiprint/css/image/jquery.minicolors.png | Bin 0 -> 68627 bytes public/js/hiprint/css/image/l_img.svg | 1 + public/js/hiprint/css/image/v_img.svg | 1 + public/js/hiprint/css/print-lock.css | 279 + public/js/hiprint/hiprint.bundle.js | 10192 +++++++++++++++ public/js/hiprint/hiprint.config.js | 754 ++ .../js/hiprint/plugins/JsBarcode.all.min.js | 2 + public/js/hiprint/plugins/jq-3.31.js | 10364 ++++++++++++++++ public/js/hiprint/plugins/jquery.hiwprint.js | 113 + .../js/hiprint/plugins/jquery.jqprint-0.3.js | 77 + .../hiprint/plugins/jquery.minicolors.min.js | 8 + .../js/hiprint/plugins/jspdf/canvas2image.js | 265 + public/js/hiprint/plugins/jspdf/canvg.min.js | 1 + .../hiprint/plugins/jspdf/html2canvas.min.js | 22 + public/js/hiprint/plugins/jspdf/jspdf.min.js | 286 + public/js/hiprint/plugins/qrcode.js | 615 + public/js/hiprint/plugins/socket.io.js | 9 + src/layouts/HiPrintLayout/index.tsx | 20 + src/layouts/config.js | 1 + src/layouts/index.tsx | 4 + .../components/custom/provider.ts | 71 + .../components/preview/index.less | 8 + .../components/preview/index.tsx | 57 + src/pages/hiprintDesign/config.ts | 17 + src/pages/hiprintDesign/index.less | 92 + src/pages/hiprintDesign/index.tsx | 161 + src/store/HiprintStore.ts | 14 + src/store/index.js | 6 +- src/utils/hiprint.ts | 29 + typings.d.ts | 2 + 33 files changed, 24287 insertions(+), 2 deletions(-) create mode 100644 public/js/hiprint/css/hiprint.css create mode 100644 public/js/hiprint/css/image/hi.png create mode 100644 public/js/hiprint/css/image/jquery.minicolors.png create mode 100644 public/js/hiprint/css/image/l_img.svg create mode 100644 public/js/hiprint/css/image/v_img.svg create mode 100644 public/js/hiprint/css/print-lock.css create mode 100644 public/js/hiprint/hiprint.bundle.js create mode 100644 public/js/hiprint/hiprint.config.js create mode 100644 public/js/hiprint/plugins/JsBarcode.all.min.js create mode 100644 public/js/hiprint/plugins/jq-3.31.js create mode 100644 public/js/hiprint/plugins/jquery.hiwprint.js create mode 100644 public/js/hiprint/plugins/jquery.jqprint-0.3.js create mode 100644 public/js/hiprint/plugins/jquery.minicolors.min.js create mode 100644 public/js/hiprint/plugins/jspdf/canvas2image.js create mode 100644 public/js/hiprint/plugins/jspdf/canvg.min.js create mode 100644 public/js/hiprint/plugins/jspdf/html2canvas.min.js create mode 100644 public/js/hiprint/plugins/jspdf/jspdf.min.js create mode 100644 public/js/hiprint/plugins/qrcode.js create mode 100644 public/js/hiprint/plugins/socket.io.js create mode 100644 src/layouts/HiPrintLayout/index.tsx create mode 100644 src/pages/hiprintDesign/components/custom/provider.ts create mode 100644 src/pages/hiprintDesign/components/preview/index.less create mode 100644 src/pages/hiprintDesign/components/preview/index.tsx create mode 100644 src/pages/hiprintDesign/config.ts create mode 100644 src/pages/hiprintDesign/index.less create mode 100644 src/pages/hiprintDesign/index.tsx create mode 100644 src/store/HiprintStore.ts create mode 100644 src/utils/hiprint.ts diff --git a/package.json b/package.json index 57f28d1..e3ac2ba 100644 --- a/package.json +++ b/package.json @@ -22,6 +22,7 @@ "dependencies": { "@ant-design/pro-layout": "6.32.1", "@types/lodash": "^4.14.172", + "@wtto00/html2canvas": "^1.4.3", "@ztree/ztree_v3": "^3.5.42", "ahooks": "^3.1.3", "antd": "^4.24.10", @@ -31,6 +32,7 @@ "js-cookie": "^2.2.1", "jsencrypt": "^3.2.1", "jsonwebtoken": "^8.5.1", + "jspdf": "^2.5.1", "lodash": "^4.17.21", "mobx": "^6.3.2", "mobx-react": "^7.2.0", diff --git a/public/js/hiprint/css/hiprint.css b/public/js/hiprint/css/hiprint.css new file mode 100644 index 0000000..f9a6776 --- /dev/null +++ b/public/js/hiprint/css/hiprint.css @@ -0,0 +1,816 @@ +.hiprint-printPaper.design.grid { + background-image: linear-gradient(90deg, rgba(0, 0, 0, 0.1) 3%, rgba(0, 0, 0, 0) 3%), linear-gradient(360deg, rgba(0, 0, 0, 0.1) 3%, rgba(0, 0, 0, 0) 3%); + background-size: 5mm 5mm; + background-position: left top; +} + +/* hiprint-pagination */ +.hiprint-pagination { + display: inline-block; + padding-left: 0; +} + +.hiprint-pagination > li { + border: 1px solid #bdc3c7; + -moz-border-radius: 2px; + -webkit-border-radius: 2px; + display: block; + float: left; + padding: 5px; + text-decoration: none; + margin-right: 5px; + margin-bottom: 5px; + font-family: helvetica; + font-size: 13px; + cursor: pointer +} + +.hiprint-pagination > li > span { + padding: 0 10px 0 10px; +} + +.hiprint-pagination > li > a { + color: #bdc3c7; + font-weight: bold; + text-decoration: none; + font-size: 11px; + padding: 3px; +} + +.hiprint-pagination > li > a:hover { + color: red; +} + + +.hiprint-pagination-sm > li > a { + padding: 5px 10px; + font-size: 12px; + line-height: 1.5; +} + +/*rect-printElement-type hiprint-printElement-type */ +.rect-printElement-types .hiprint-printElement-type { + display: block; +} + +.rect-printElement-types .hiprint-printElement-type { + padding: 0 0 0 0; + list-style: none; +} + +.rect-printElement-types .hiprint-printElement-type > li > .title { + display: block; + padding: 4px 0px; + clear: both; +} + +.rect-printElement-types .hiprint-printElement-type > li > ul { + padding: 0 0 0 0; + display: block; + list-style: none; +} + +.rect-printElement-types .hiprint-printElement-type > li > ul > li { + display: block; + width: 50%; + float: left; + max-width: 100px; +} + +.rect-printElement-types .hiprint-printElement-type > li > ul > li > a { + height: 92px; + padding: 12px 6px; + margin-left: -1px; + line-height: 1.42857143; + color: #337ab7; + text-decoration: none; + background-color: #fff; + border: 1px solid #ddd; + margin-right: 5px; + width: 95%; + max-width: 100px; + display: inline-block; + text-align: center; + margin-bottom: 7px; + box-sizing: border-box; + color: #b9a5a6; + border: 1px solid rgba(0, 0, 0, 0.2); + border-radius: 3px; + box-shadow: 0 1px 0 0 rgba(0, 0, 0, 0.15); +} + + +/*small-printElement-type hiprint-printElement-type */ + +/*.hiprint-printElement :focus { + outline: none; +}*/ + +.small-printElement-types .hiprint-printElement-type { + display: block; +} + +.small-printElement-types .hiprint-printElement-type { + padding: 0 0 0 0; + list-style: none; +} + +.small-printElement-types .hiprint-printElement-type > li > .title { + display: block; + padding: 4px 0px; + clear: both; +} + +.small-printElement-types .hiprint-printElement-type > li > ul { + padding: 0 0 0 0; + display: block; + list-style: none; + width: 100%; +} + +.small-printElement-types .hiprint-printElement-type > li > ul > li { + display: block; + width: 50%; + float: left; + padding: 0 4px; +} + +.small-printElement-types .hiprint-printElement-type > li > ul > li > a { + height: 22px; + /* padding: 12px 6px; */ + /* margin-left: -1px; */ + line-height: 20px; + color: #337ab7; + text-decoration: none; + background-color: #fff; + border: 1px solid #ddd; + margin-right: 5px; + width: 100%; + display: block; + text-align: center; + margin-bottom: 7px; + box-sizing: border-box; + color: #b9a5a6; + border: 1px solid rgba(0, 0, 0, 0.2); + border-radius: 3px; + box-shadow: 0 1px 0 0 rgba(0, 0, 0, 0.15); +} + + +/* hiprint-toolbar*/ + +.hiprint-toolbar { +} + +.hiprint-toolbar > ul { + padding: 0px; + margin-bottom: 5px; +} + +.hiprint-toolbar > ul > li { + display: inline-block; +} + +.hiprint-toolbar > ul > li > a { + position: relative; + float: left; + padding: 3px 10px; + margin-left: -1px; + line-height: 1.42857143; + color: #337ab7; + text-decoration: none; + background-color: #fff; + border: 1px solid #ddd; + margin-right: 4px; + cursor: pointer; +} + + +.hiprint-printElement-type .glyphicon-class { + display: block; + text-align: center; + word-wrap: break-word; + /*font-size: 0.65rem; +font-weight: normal;*/ + font-family: Helvetica, sans-serif; +} + +.hiprint-printElement-type .glyphicon { + margin-top: 5px; + margin-bottom: 10px; + font-size: 37px; +} + + +/* + + +*/ + +/*option css*/ +/*option css*/ +.hiprint-option-items { + font-size: .75rem; + padding: 10px 5px; + display: flex; + flex-wrap: wrap; + align-items: flex-end; + box-sizing: border-box; + width: 100%; +} + +.hiprint-option-items .hiprint-option-item { + box-sizing: border-box; + float: left; + width: 50%; + margin-bottom: 5px; + padding: 0 5px; + font-size: 14px; +} + +.hiprint-option-items .hiprint-option-item-row { + width: 100%; +} + +.hiprint-option-item-label { + margin: 5px 5px 3px 0; +} + +.hiprint-option-items .hiprint-option-item-field input, .hiprint-option-items .hiprint-option-item-field select, .hiprint-option-items .hiprint-option-item-field textarea { + color: inherit; + background-color: transparent; + box-sizing: border-box; + width: 100%; + position: relative; + padding: 3px; + z-index: 1; + border: 1px solid rgb(169, 169, 169); + height: 19pt; +} + +.hiprint-option-item-settingBtn { + height: 19pt; + line-height: 19pt; + font-size: 12px; + padding: 0 24px; + background: #00c1de; + border-color: transparent; + color: #fff; + display: inline-block; + margin: 5px; + font-weight: 400; + border: 1px solid transparent; + font-family: PingFangSC, helvetica neue, hiragino sans gb, arial, microsoft yahei ui, microsoft yahei, simsun, "sans-serif"; + vertical-align: middle; + transition: .3s cubic-bezier(.4, 0, .2, 1); + transform: translateZ(0); +} + +.hiprint-option-item-deleteBtn { + background: red; +} + +.hiprint-option-items .minicolors { + position: relative; +} + +.hiprint-option-items .minicolors-sprite { + background-image: url(./image/jquery.minicolors.png); +} + +.hiprint-option-items .minicolors-swatch { + position: absolute; + vertical-align: middle; + background-position: -80px 0; + cursor: text; + padding: 0; + margin: 0; + display: inline-block; +} + +.hiprint-option-items .minicolors-swatch-color { + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0; +} + +.hiprint-option-items .minicolors input[type=hidden] + .minicolors-swatch { + width: 28px; + position: static; + cursor: pointer; +} + +.hiprint-option-items .minicolors input[type=hidden][disabled] + .minicolors-swatch { + cursor: default; +} + +/* Panel */ +.hiprint-option-items .minicolors-panel { + position: absolute; + width: 173px; + background: white; + border: solid 1px #CCC; + box-shadow: 0 0 20px rgba(0, 0, 0, .2); + z-index: 99999; + box-sizing: content-box; + display: none; +} + +.hiprint-option-items .minicolors-panel.minicolors-visible { + display: block; +} + +/* Panel positioning */ +.hiprint-option-items .minicolors-position-top .minicolors-panel { + top: -154px; +} + +.hiprint-option-items .minicolors-position-right .minicolors-panel { + right: 0; +} + +.hiprint-option-items .minicolors-position-bottom .minicolors-panel { + top: auto; +} + +.hiprint-option-items .minicolors-position-left .minicolors-panel { + left: 0; +} + +.hiprint-option-items .minicolors-with-opacity .minicolors-panel { + width: 194px; +} + +.hiprint-option-items .minicolors .minicolors-grid { + position: relative; + top: 1px; + left: 1px; /* LTR */ + width: 150px; + height: 150px; + margin-bottom: 2px; + background-position: -120px 0; + cursor: crosshair; +} + +.hiprint-option-items .minicolors .minicolors-grid-inner { + position: absolute; + top: 0; + left: 0; + width: 150px; + height: 150px; +} + +.hiprint-option-items .minicolors-slider-saturation .minicolors-grid { + background-position: -420px 0; +} + +.hiprint-option-items .minicolors-slider-saturation .minicolors-grid-inner { + background-position: -270px 0; + background-image: inherit; +} + +.hiprint-option-items .minicolors-slider-brightness .minicolors-grid { + background-position: -570px 0; +} + +.hiprint-option-items .minicolors-slider-brightness .minicolors-grid-inner { + background-color: black; +} + +.hiprint-option-items .minicolors-slider-wheel .minicolors-grid { + background-position: -720px 0; +} + +.hiprint-option-items .minicolors-slider, +.hiprint-option-items .minicolors-opacity-slider { + position: absolute; + top: 1px; + left: 152px; /* LTR */ + width: 20px; + height: 150px; + background-color: white; + background-position: 0 0; + cursor: row-resize; +} + +.hiprint-option-items .minicolors-slider-saturation .minicolors-slider { + background-position: -60px 0; +} + +.hiprint-option-items .minicolors-slider-brightness .minicolors-slider { + background-position: -20px 0; +} + +.hiprint-option-items .minicolors-slider-wheel .minicolors-slider { + background-position: -20px 0; +} + +.hiprint-option-items .minicolors-opacity-slider { + left: 173px; /* LTR */ + background-position: -40px 0; + display: none; +} + + +.hiprint-option-items .minicolors-with-opacity .minicolors-opacity-slider { + display: block; +} + +/* Pickers */ +.hiprint-option-items .minicolors-grid .minicolors-picker { + position: absolute; + top: 70px; + left: 70px; + width: 12px; + height: 12px; + border: solid 1px black; + border-radius: 10px; + margin-top: -6px; + margin-left: -6px; + background: none; +} + +.hiprint-option-items .minicolors-grid .minicolors-picker > div { + position: absolute; + top: 0; + left: 0; + width: 8px; + height: 8px; + border-radius: 8px; + border: solid 2px white; + box-sizing: content-box; +} + +.hiprint-option-items .minicolors-picker { + position: absolute; + top: 0; + left: 0; + width: 18px; + height: 2px; + background: white; + border: solid 1px black; + margin-top: -2px; + box-sizing: content-box; +} + +/* Swatches */ +.hiprint-option-items .minicolors-swatches, +.hiprint-option-items .minicolors-swatches li { + margin: 5px 0 3px 5px; /* LTR */ + padding: 0; + list-style: none; + overflow: hidden; +} + +.hiprint-option-items .minicolors-swatches .minicolors-swatch { + position: relative; + float: left; /* LTR */ + cursor: pointer; + margin: 0 4px 0 0; /* LTR */ +} + + +.hiprint-option-items .minicolors-with-opacity .minicolors-swatches .minicolors-swatch { + margin-right: 7px; /* LTR */ +} + + +.hiprint-option-items .minicolors-swatch.selected { + border-color: #000; +} + +/* Inline controls */ +.hiprint-option-items .minicolors-inline { + display: inline-block; +} + +.hiprint-option-items .minicolors-inline .minicolors-input { + display: none !important; +} + +.hiprint-option-items .minicolors-inline .minicolors-panel { + position: relative; + top: auto; + left: auto; /* LTR */ + box-shadow: none; + z-index: auto; + display: inline-block; +} + + +/* Bootstrap theme */ +.hiprint-option-items .minicolors-theme-bootstrap .minicolors-swatch { + z-index: 2; + top: 3px; + left: 3px; + width: 17px; + height: 17px; +} + +.hiprint-option-items .minicolors-theme-bootstrap .minicolors-swatches .minicolors-swatch { + margin-bottom: 2px; + top: 0; + left: 0; /* LTR */ + width: 20px; + height: 20px; +} + +.hiprint-option-items .minicolors-theme-bootstrap .minicolors-swatch-color { + border-radius: inherit; +} + +.hiprint-option-items .minicolors-theme-bootstrap.minicolors-position-right > .minicolors-swatch { + left: auto; /* LTR */ + right: 3px; /* LTR */ +} + +.hiprint-option-items .minicolors-theme-bootstrap .minicolors-input { + float: none; + padding-left: 23px; /* LTR */ +} + +.hiprint-option-items .minicolors-theme-bootstrap.minicolors-position-right .minicolors-input { + padding-right: 44px; /* LTR */ + padding-left: 12px; /* LTR */ +} + +.hiprint-option-items .minicolors-theme-bootstrap .minicolors-input.input-lg + .minicolors-swatch { + top: 4px; + left: 4px; /* LTR */ + width: 37px; + height: 37px; + border-radius: 5px; +} + +.hiprint-option-items .minicolors-theme-bootstrap .minicolors-input.input-sm + .minicolors-swatch { + width: 24px; + height: 24px; +} + +.hiprint-option-items .minicolors-theme-bootstrap .minicolors-input.input-xs + .minicolors-swatch { + width: 18px; + height: 18px; +} + +.hiprint-option-items .input-group .minicolors-theme-bootstrap:not(:first-child) .minicolors-input { + border-top-left-radius: 0; /* LTR */ + border-bottom-left-radius: 0; /* LTR */ +} + + +/*hitable reizer*/ +.hitable { +} + + +.hitable .selected { + background: #3e66ad; +} + + +/*resizer*/ +.hitable tr.resizerRow, +.hitable .resizerRow td { + border: 0pt dashed; + height: 0pt; + background: #fff; +} + +.hitable tr.resizerRow + tr, +.hitable tr.resizerRow + tr td { + border-top: 0px !important; +} + +.hitable td.resizerColumn { + border: 0pt dashed; + width: 0.000001px !important; + background: #fff; +} + + +.hitable td.resizerColumn + td { + border-left: 0px !important; +} + + +/*GRIP*/ + +.columngrips { + height: 0px; + position: absolute; +} + +.columngrip { + margin-left: -5px; + position: absolute; + z-index: 5; + width: 10px; +} + +.columngrip .gripResizer { + position: absolute; + filter: alpha(opacity=1); + opacity: 0; + width: 10px; + height: 100%; + cursor: col-resize; + top: 0px; +} + +.columngripDraging { + border-left: 1px dotted black; +} + +.rowgrips { + height: 0px; + width: 0px; + position: absolute; +} + +.rowgrip { + margin-top: -5px; + position: absolute; + z-index: 5; + height: 10px; +} + +.rowgrip .gripResizer { + position: absolute; + filter: alpha(opacity=1); + opacity: 0; + height: 10px; + width: 100%; + cursor: row-resize; + left: 0px; +} + +.rowgripDraging { + border-top: 1px dotted black; +} + +.hitable .hitable-editor-text { + border: 1px solid; + width: 95%; + height: 80%; +} + + +.hipanel-disable { + height: 0px; + display: block !important; + top: 8500px; + width: 0px; + overflow: hidden; + position: absolute; +} + +.hiprint_rul_wrapper { + position: absolute; + height: 100%; + width: 100%; + overflow: hidden; + pointer-events: none; + border: 0; + border-top: 1px solid rgb(201, 190, 190); + border-left: 1px solid rgb(201, 190, 190); + padding-left: 15px; + margin: -10px -20px -10px -20px +} + +.hiprint_rul_wrapper .h_img { + position: absolute; + top: 0px; + left: 15px; + width: 400mm; + height: 15px; +} + +.hiprint_rul_wrapper .v_img { + width: 400mm; + transform: rotate(90deg); + transform-origin: 0 100%; + height: 15px; + position: absolute; + top: -2px; + left: 0px; + +} + +/*hiprint-option-table*/ + +.hiprint-option-table-selected-columns { + color: inherit; + background-color: transparent; + box-sizing: border-box; + width: 100%; + position: relative; + padding: 0px; + list-style: none; +} + +.hiprint-option-table-selected-columns .hiprint-option-table-selected-item { + color: inherit; + background-color: transparent; + box-sizing: border-box; + width: 100%; + padding: 0 3px; + border: 1px solid rgb(169, 169, 169); + line-height: 19pt; + margin: 3px 0; +} + +/*hi-pretty */ +.hi-pretty * { + box-sizing: border-box; +} + +.hi-pretty input:not([type='checkbox']):not([type='radio']) { + display: none; +} + +.hi-pretty { + position: relative; + display: inline-block; + margin-right: 1em; + white-space: nowrap; + line-height: 1; +} + +.hi-pretty input { + position: absolute; + left: 0; + top: 0; + min-width: 1em; + width: 100%; + height: 100%; + z-index: 2; + opacity: 0; + margin: 0; + padding: 0; + cursor: pointer; +} + +.hi-pretty .state label { + position: initial; + display: inline-block; + font-weight: normal; + margin: 0; + text-indent: 1.5em; + min-width: calc(1em + 2px); +} + +.hi-pretty .state label:before, +.hi-pretty .state label:after { + content: ''; + width: calc(1em + 2px); + height: calc(1em + 2px); + display: block; + box-sizing: border-box; + border-radius: 0; + border: 1px solid transparent; + z-index: 0; + position: absolute; + left: 0; + top: calc((0% - (100% - 1em)) - 8%); + background-color: transparent; +} + +.hi-pretty .state label:before { + border-color: #bdc3c7; +} + +.hi-pretty .state.p-is-hover, +.hi-pretty .state.p-is-indeterminate { + display: none; +} + + +.hi-pretty.p-default.p-fill .state label:after { + -webkit-transform: scale(1); + -ms-transform: scale(1); + transform: scale(1); +} + +.hi-pretty.p-default .state label:after { + -webkit-transform: scale(0.6); + -ms-transform: scale(0.6); + transform: scale(0.6); +} + +.hi-pretty.p-default input:checked ~ .state label:after { + background-color: #bdc3c7 !important; +} + +.hi-pretty.p-default.p-thick .state label:before, +.hi-pretty.p-default.p-thick .state label:after { + border-width: calc(1em / 7); +} + +.hi-pretty.p-default.p-thick .state label:after { + -webkit-transform: scale(0.4) !important; + -ms-transform: scale(0.4) !important; + transform: scale(0.4) !important; +} + diff --git a/public/js/hiprint/css/image/hi.png b/public/js/hiprint/css/image/hi.png new file mode 100644 index 0000000000000000000000000000000000000000..9522631aaf5cb9bf7385bc8a5c27b8db9e50af58 GIT binary patch literal 363070 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 z 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Μ#)JdmC=P_r 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≻jMRWlyrGoYYgyse)*7jX$Cp$O<=ScL4Cd{OMLMpFG=R40Iu{ATM zbOO+9zEH;^AOK&%WXjVjhb&fT&%S zK4e3phmNgJ?YvnOoN4CgbkGJx+Z~>s&yQB!th#wNaJ8372uH2?}*Y>Gg##xe!U zsM7lMi9O-#Y5NEAC#w3O zitJZz;KVdMfi0f}P@Mt?GXQAN4_g--4am?#MiAx5t?Wk`O7JLB1f1q*Tk#E#DU>(Q zw%PZQ1KD|jX}>xcU7lB6T+c1T?9X5BLS^q(V8rs0I(E+7ZH@Ui*G3$^v*t|itU$*A z-z6{m_mz)Wz^xXy`n`s*u8x^E82SLpMVSIA04h0sosojBXS*RE1a6F5DxysW82Zf_ zWeqrx4v0Q92U0LS&yGRpDbttL7Y8o2X2!?MbKP|u-tVjj%MnWlYQw^J9{d9MAV=vp zM0mU1_04-;mKl>i`^U~e$;w(fPm(7YNZNBBecjYLK6)V1sUSx6w$5hkyCgrQ?I3Ib zeVH1DYKyyyUmaiO6~1mH@Z3g~epLq$Ykr8m^8T3N2G3c)H`vonct=#%AD(idc5(|k zDgFQPkAIZDBf2Y2S#5;bsRyvuYVgC6I6yPTAAN>B={Mcs)*uWQ7f@Q{+JNM%>W}dX zXcG3K90|#>VE*fRYNctkH-aCo<7;z2(3rt7SB``J<%%E7V_XON3SdKDB|Yf8m+@kO z0(JhhZ8w~xMu-!|Sz+_hcDy1`yc+biqw5qVSM^w*gErxN3#otVIacd5DKh}~q3%1{ zoAQAID-HR>%ReF)&i-5ay)wW@(S*v|+JjMw4kEoiW?knE>!}Fk#He!Bt%^&Dk@0Ro zv^>3_m{@2HyKxBZqh0FcF1>aghE^z*om z;;l4w<9!sc!JPmamb#&!OBWh{?)UHC+Y~R;5aZMZd~II=4+eQMDs|%ofCDP1w@uMSWO zG?%p^-5~;Eq;W$>oISxUWuXSdiTZ)Q87cl6mWX<&V`rX%?P?0_+19`KZ^&?AHSsQSpx0Ss?C zX%l*p90+neT!c%P9Y_aAv6+Hd3D_H?1ay9vl0|%u&4U2!vOJtRhGV7}+PI|t=;dE6 zkaG{4X}rBxa0lbF$RnH=*p+PKa5{9yv`VBY;84KI{81pc^AIr4!?BUdnrw~`e-Zr* zLb?H1qIC4UHA?MXtYkZ!`QS-)BLX0Ysk@JWu73ae`soRxKiPJ`8Xe6cPnxh$okuzQ zmmt>fz3wu$rij3^XXVCp!%BOu(6CMc57>7+pNw$QBv#wnIm*8o>tFwv6 zeEs&-??I93f%0!79Gm0Fn$4!Ov9nfH@Y2WdvGgo&zxDj&1P1%#iO0oE*JU0NYo{ zwj6FhP?e|j-Wr9bcGF9bHKh$X-KkSThjZ#6-;Zg((md&Tpu)x$)hv+Srn=8_=^<-% zt$=~#^=U7#VT_g(1@Lo+&d-~ZgpBSnqyzd>8=L;aJAk(H2Xgq8M|Eb^f3&> zCWbU$RY|3siKADq*sFcoPqk5BpWs=?`2FoY<>BRJHXT?xx||r+2{_hkcs8K}-=c@v z@xXEWwzqpUr&D16d`1etm!2ugmW)QAvsEC;9;K~HnI&0U9e?fvQd}{6uLqZ(Wj?4h zjN>E&dN5`~Y8-Z9{yBci@k5{abf!=T8aGxjsmuJ|{&=(P3Rm#F3gA^;UiMm6z=zKW ztFIC1HGQKQ)$|rb`U?1d0MPV$#AgA5kx~!$x8HtkOwI&%z~Hf^4xncV%%Zda>X3)M zDwM-jk!2vy$!Mfy#({P6AqLoHVNUet*xM1NC{n6QR>jOM+>1 z*A{aI@Whl;^uqs*shcg7nzhx0|IHO%>%Z-M7sD>^gl6&LNl^09EYy4NkTV;SoISe$`Fl?Ht^H3p<#W)t(*#Zox zQQdgMf&#s`Pg7{2IF1>MiH2`(0Nc_X27SgF;SKw0`Y8MnTCkiY}nW&XaFPLHyLr|JGP1@H1IsOsCypc9gfSEa>+AgSY$Rb zg~PfMAY1})TieL+9r5mwF^=r{8UT)z0ASbK$mf*w_k$xNxDI_sec^IMFwMNunEAZV zDz*SY8err%mwQzVI-z1t#!nx*$VRGaO!Yv3S( zk418f87M#pbAZRY3pu9#4|Q-S>4+m1&hNEty4>3$8c zZeV}LERa55>fEh8Kln%O#i!2^SP-*Um|?P+)a2)&ZSb*(ocdDyPQMdr@DbHeDsT~z zSGAAw;=J+%(b|@Eh8oDZ{bzZ|SeMlKam7Z;lgfu0WU@%=6F?(cUmH^4IW(SBU4+L@ zNG|ZswYFOzB6J>P9l#l52*+i8zRRE2b@v`}8tzPof^9mtv&Ny@5AH`j_u77N-}E!; z?8BbIUUN0BwdOe29k21IG$TAm_219!r)+n1E`0oM2{81*rr>_G&^Uybb3<78@Xkrz zdhnEX4OV$K44BUbqZ66)QL{78m!@_gcbP$XZ9`g7?zMiS8&98>czFUlOB{bP?c4iX zF%2=#AP-KG*r*A!Ak=OVb)+S7rcJk3 zSus;&TH`f}-rpY)Dax{(4#4F7Vb@`Sn-x;u5ee~$801H5Zjd_Fy6PP%AEiwFz6vrw zA&Ec7VitIYQW0PD69XxT*qgGPBZYFK@da&a27*(50CcaSC$qgXppM7qIQVrH{Zrts zhY9GcXcI?9W{xYOTBGuENx|T`t}yAr%wGXkO2O21c$&51aZY*Y=LN8x<=uDX2nSF9$2n?IfDPO4mXgo*Qh$qPSg3T?bKWOZ(-1i#<)l)Q z5P6z8#w-gACi}~;VLgR0KbHG!p>MPw*aggg+ic5Zi;4=#;kM;igI~9pSwrfaPK)ad z!vMdHavbkE6{`Sup#2>T&M8gbBgN#jc0uKXWCmbZ(^?=Cn4+&~{?6M@hh@#d7_op6 zj@L-t1-*_tK_A1}eqg&p?LH4a4JyyIZUUy_!Pznn=vDu)$$#aq@K42Se`qn{a$=CBk-v_+C;40`yg z=tGPJ>n)7u830SlLju#$W!r0+&#YhtOU2FQ=OB2HvytAMg*IJI6El%Rf|;~QGMu#2 z&nWSh_S8S8JjC~_L!ESFXU-xtB3Vvg1}2~~s7TrId(`D< z`5bG%d_1$V0$;|btAps{d)9#rv~eDTYR12Me0u)3?{`c4)8ocral6sCXUE^4H{P6K zRgw7$<);r8-jR$b8#Q7ta;@1Yp3{jG4^@)LO98;SVw6?zk-UzEqw2>o`UV<0h??7~ zD~HbjnxhBOp6`*ok;Zt7Hh=%)yG3M?>r)SAAw7 zNw19zA($=!^x?V6*it(UE?T;KnH?SUg^QgP$MS8T* zJ#$RG^0cf*!M!G=(=)3zkOJ+%52L*bYZ!JCe4mzlzHZL5kNepGu)+&`AQ@p5FKRi7CByFB3d z5h#LO)`kFHpIDFEi_eg7L}<>U)uo~o=i4>6-}<2|wU0-DpXhT?XD;__`IVT_5sAtl zdu}v@R3$_ZA=jw*fm8*oUI!rUW6?nyNEJ*Vndm5`4~8vhDgNx6b+9w}aZWY#=K5Va zAwfR@Abx(fC>aG+tWIv|bVLmC?4;8yj?}=%+fy!IVtTac#L%P2!PaQ>*j6yu`4)f& zi{Bd!Wn^U*1`q5YJD?>{g>?gDcp0#vAC?Mt?`1pdg-Q!E<;3VI_n68*9BfPvLV!jh zB%|a60uXcbj2#7b5|jUqV;Rp!f_L6N`^*;wRD&ba`Rr>w9)jHzF^yiS4dqan99RzV zo;CqAw*S~s<%lGRAzopncE+7Ho1kfJ!vZ-6MLB0)6HRwhLNvPU_mmpn1p1P6Lf}bf zt4c1*UWd^vFc`Q40SZoUMOv8Cru0K@ypl6IFPT2jeuv$aN}(!13VApK#+6SX-v{gA zEWNod%I9*Jw`j9F8K(Qx{vK6!5p~E{%;Ob3jx5v2!NZEAyS}q^BTbhT;3q??!~LbC-ABjfRlc&6*$2tjWqD9z|2ry zHdUq5GQpU8q$0SoB!wtl(IZ^T^XOf6KDh$BA`)S7}YW*Q>_G=w#- z&d!+<3;;a>PR#)&af`)-TWU(%xhoVwMp3m+=lzh+fBq`pk9RYCwZoOcRTorC^~Gvj zO!-f9sO&5#fT-E(Iig!AP;a-bslm)gPUELvDsOiv$#NKM(b5k3R)PAWyKms&5vMA5 z##?&Et@6HM^G+ZW=i2z0gEb9Im{3L;DC~%q7`(kAD))T8Eojt;uF#6)h$fg~2n#lH zB;ai6UwiT-7N^L4%AFLsgT4hw0ALPje0e+$L9YE(2{cYSfzsS={#;Bo-sfFvOLDfn z9knsNtDbS?qIxuAShW<*1x#b{Y!_;G>H-^AuG1L01E%hr0BF4Z@w;7TQ@^@xwr&iv zWAUd0f0$DMJ)fb06B@c}Rx~0Nu0#ZMPe!WTK?8zekT4~W#WNJqcD|xYK}E6V7-R%} zU%Hq;B(`!1Y%z9j&qr7)^>Gf3ykjx%ou2B zFiLg&n)1f|)`Qak0B)*uBj{iH-2)7Fa>Rw`Ls8w}YkS8mV|pu(i>N#nbB+ia_yzL= zy~7)`bdcm@UJ={^z*r!kGq;oK{b#T%+B2}gt%8A=*#KVJWBY2%!0GS68)&PZ_i6i- z{nIhg6x;Gk++b*sQfWnV4wzaWcpC?u#Hz zZ<9k2EpVDdg!wi^c!mTrSZ%GpA2f5M2hy$77SzIV$D0Vg0!u<3m=Ad01?2a$j(`r~ z4OUiO+RQ>;ImA$a5gZ7y0E0p1(eY^T*@e0Fy@uZl2qDe|RFj<(m56 ztSlJF@C|g003gurZRR$41)O* zFoe*lVOPL_#V`d}-~@m^k7!>9#O1L{obMhc6cXBvckZt;jMI0NqA9n#7-4LsP_5*b zX{hJthcKL;IbAY57@&7X#QE^+;K`1_+2(ABzk79PkHYHv9@CLCjmC3zmh=XO8<3h?LYtd&+@mw{jJge_4Oq@;;Sjd zJ{};o>&-s46Zg~c{3nr}K4SfQ%aIJ3u!V1tYNPL}Ky}j=tFs-8S-N2qfih42UkpM& zAfpAay&mk{XsER0>9#)QRuKvwlWnVdLr(SZtohHm}+_umbW>T3nT3@G^Z zW@{1N(m~>T>j6D}yNCp{(OT*C(RkKaJ3p3wyHg$C;)iYPo6Y!m-jj|;I5EtB+g3c- z^#Q5MV*mgk07*naRO(E==;K%XsXW9%m--z5I>tZVdF-~6z1UCvDLdF5xhpV>{==9< zUYO_B{8cQH!g!fIvK-~Ufzt|@&*SlE`spfA(0R~b`YgA@ROg?L11Pqh6d_~vfyuID?z zo^6Le=qi0#ncSam8P!!=gZ{Pv;(wxlY>$plpJmk_(D^)$s~uq74+k9Yie-#{_UoDQ z72mD&N?kKBOEg=%R{9{|fIfnbo;v%U>k)iE3Fou%c+Ix!p>)-IDOlHcb^1`H1p7>& z0tcK-)~k#Q^;pxNa1KYe`8ONir<3^Q<$3Sl|4nWdam=l4J$j~p?*gT}g{Lo}L~Cc7 zQh-hv^@!A4LT)mkB^nKarg9pi871Vf6mTSPk%C=>EtcY&8?GjfzNuu0K`4mfS#|c3%(9 zo6KqOA+g^`DeK%CcdLkg_itt@cyn5gu7IwNoUV(zDY(GST~?oa)}oS210gka4F$Ns zcA3kf4Lxs<`m?N5O1@lPJtB-eK!Bl&aNGT;`bsm?5hNGT~q-Ih(uX9@acLfk# zuPSePprSAST0v5=8KTER{jASSyP8t&3zV<=$9i==inpZkA$Z7j8&&-wnt8kQbLBaX z;0Xp6`mZ{4=Qb7a9Rq19-hb{#j-Pa=tOXu&y+yVVM5X7D-6DWq7j+r?*a7WnhM*ni zZZZf$Ti5fw-`z1nV5jV0PhVkB-NAnKV+BZktR=5wI_fRc5zu>AKs|M{^~D7}W-C|w z&18=hq>x><`w7Hwey9}VH_&-<`~2**8L`IXYBs#d3IYNncnJZAS^6#Yx^zbq{H`fz zD`2Yto40F=?b#b{p|R1@uR6;Kyvz~y5%#2&$;6%8c=7CMk5U9x}bk1C%rX+z4eA zMoa4#->tUf!x6RYnM$HjYi%2VQJU{Gid()EK!SmDi*xUMuBOLfv|?ZyZF+nANmFk= zbf#bj#stdC4*-!geA4wuRl}HqRFM=iQ{okkuci#E0qaw=6iG2fNQylA26kab%N7(Z z;JMm~RF%!A4`(Q9ID97%E!;XwiGfmD>754V{m8WreHAzx_fqr>5JO@Lw1ph#hpkQP z@$;)deku928VG}fSj4x@oQgvf4^gp4Y)xyGAuyx#h*YV^k-LHE?JVN9?XCRMob}91 ztpV?={$RdA%9c3KGO)<{^J%~;)#&kf6YSvk(b^H_E9Y5#Zpe7(g)8t}_v`t;iDMdF zef;WKPb0Z{+MY^wG+9 zo3D;b@C`?qXDKQLsGRwx4_$&6z*+$oY^ag|Iw}a^I<$%P8T1b?gwJbcm1F~WW_@bo zCA}~~Vbub)tE1Lf&q~R++rY*-DQBQRJB@hR7Us$4=bF!W z9#Vz%&`3YNgRRixqdL&dQCS!qW5$(ApwDz0Z@ccTQfhAiryC;B5;?1*%70)(0(3+T z3Osr!P8|Tv$I)Bp3hVvWbDu#lTXh6+5G-#0TlTrvrOF(V-aX7FcBJxyhgG0A z=`=mpJq0)h(5Dt3-JmU`ZGvW?nD__4UmcUXFMcbf>uWGM_Y*+MO=JCsspaBJ%y z7)IQi`IEtfC)t!SMqb#6nSd-6MDm8u>(nGWP3*|^TwGH2M7(qYz?*PRs#AGh0!Z4B z0lW_W;u)A!+_FaH9E^{f=Q^tn=@Fk$ALiKIe41Bk@gEj5;rA9f+(uR?vvV4t+^nn- ztT|*kd8V}yGgiLX3c2TyYbbo>CFD@*E|eU>Vuz{Ilp~Mcw#>O46=``qD)$dSE%|EM zYWM79l^m_(S%$r)T>bZIKWLCVlKtq;D?5_qR>1GYhP<331_0H@H8RZY>ke4Ybw)q{ z@{Lpt%s30ey;3v-O&oCUVNWY^m$DP~$i7FU`Zz2_1A!MACI2zX_F01`t~)#Zx&MBh zzsf<3I`F&(DrC3-m5&bxLN>A!srQDLO$`vTIHlzbORNDxpu^W#P$WEti>p+)-S3Or z^+aEo>^mSbo+^1QnX2|k8=HKGWX+;$@-u9_(7LSL=m_@{x*tG~^zmZ-JiF7*vWDy2 z$PKb3TR0-FBb8s?k4l+A5V2DFMuKP1jdu_PP1q?}tHZ5MJv%o5;4GipTi}i;YH^$J zD3p*Hj8hOM=9z%$QKt}{alzt6Mu%6jcrwhFFTX^juRQV=DU%Upo_wBXl1HsXwcMk} zk*jX?-g}e_n^MfJHqpcNUW+h2$B2r>B2HI}F+;`55FUF9OGuXy?dVEe|Mwlv)+mZI z(<}s?9<`(~bg-p4I=TTtf?zTr7JVPIcyWvv%twJKN%@tqc45%{J{y#@d6Bz8sr!L4 zHk*S}i^kjx;5);_RAzu;Q!X0DPBhp7Q_j;MS74M&7ffj9f6sVEWXDOh3pcsxAm=!$F za5j#k6b7Q!r8oeyivFxj^~rlUR+!%7h#t0SPXL_}j*)!XoX!P6_w%_Ay#!o})vUUki z;4NElb~ZMtNhahwLqC+$jC*1FnJcFN#4)WqfbM~na*}%gitg7DIHU^Vygg=uQD>Uz z%43hz%be-CJ8m!=IN)H0zI{Gd$)SJ0MV;x?jiFnF=^J23%h+{!r-){Zy=_(%vraxe z?-iH|uN<`~kmMTgcdgo_$~oF>Puh?RKcWtL%}g@SjDq9+`)tqRo4?wU$!8Po>9=w3C z)=5=#8=zaSLwX0=W#jNZ9njCar!Z$|U}og1WpFcS!q^MmGi!)2ncxLTSRIVkHRKN^mwX$h$>fag&1-`QuUL zg9bB%wP$!Gi!s{PzPhN=$}DYFVhIc>5ve_5S{g2|0l+5!(S&(`B>b%4Ky$`5M^`~M z?#Do*m~!{y-m9E)c25tV56JRes^Gzy2zJ|NGz5kV=4D$T6oxp}N5~O7_b@vD`tQ z6>tUJjAj_4l+9Tu0Ynqs&E3HQxr?y_O?c+vs$IN+Oo8WNMhKuw7al4vs_w3-V~$9! zPlkaDeKGlYcrOR2M+BLMZVb5|`+9zR>cF~!h(w_dYytq>+eRb|Fz;F5e4+Nqt3ZiB zhdL=b?a=m#oz8&O1 z8C57n1J_kQK`(&*UIsFOLh8py(=P?k=Sk;q6wtV41K=tkTtN&!2mJlZmoH`m)&3!( zID;;_euwLhSHOuJ340&{D81}!M&2U`$addK(QZ`s>_PpU?$qkNfBg8v^bZz27N=Aj zYKAxhgcS8IC#IL#70nx#Bm1_d8|dLV;Cs>p&t>re&s-lhi^0brnd0Cj+a7Bp>;ko^ z?tHp!j_s90o3~!h`s0a};_HtmF zz;jQ1sG!h6IJ^MP&0{#;ixH;BJxi(7A}8;Qp9h1vdajcgR#P{Ufnew$9hRh>#O|bmsbPsntJiCfBGc9|BpY*@85sQ?>~OZufP9zzP>+| z;}b*=UDf&o;QOG~O4ipc2{%-H@M>$RKxZwnp!KlbDlwd~(xaN?A|3nYg2*ncQ zm`#++Lqr1JGVbHxZj&lMq}3B}pYHM0xYqBbY@vzL<6q93LNhso`xtyBHKkZls+rdk zN$TV5h7r%LC`YXW03YR}M=3~mdT$BlS}Fw50fsfJ@kp<`%8^%9oR<+;896He0H8AY z`SUFerIC|>^EL>efN!?zsYnKjN#TkFoPLv}aV|?Ev|Th}uzT(NNK@VnoI7v&)H&z` z@XU+CG_?*98t6q%6X0hu=({q!0Hg)vkaAGJmu?*aHaUfcBjX*suRBR9c-E4GzT;@+ zbaT6kMllm)dk4Hkc`w{|7tSL-)3J1k(3^w~9m|GT+zwv!nK)!tdPq5W*y_DFJ8yEAp#BXT;J9GikGB41A&RuVWD>zsDrj! z*g*~Yn4S!Kl=a(#wy3Uv``8)~TH|(*Oxg2}+4^PYObVFAZnbJ_u=tI^BETy6Oac5C zlv~V5Jcl?4{LKLVB)daa@Z9SxqpH|dK*ZLB-S+<6aBLk*6@V_g*c~49tJ*z?$5R@T zpviw}5)06_G0eVWoMi#v>p6Jjq?FgPWmo(5Tfm8?1T>-08$bGd=L06O}^(W)7w?;f!)CV6@EZz$w{Zf2Fbm zW6$yek&o+g~yAwFOK>%V=K|M}Oy$p8HBf40}le3#qv_4@geEs|1 z{x1Kf@H|pYe!d@~f%!k4it>-2@A6Y?Pd`DqE=tkq**RV$BWCdr7IBOq4TJ_c*c}-{ zNP;(v)`%vT0OifeK*Kn@7d|7mZCdnv!mtD69^v3@HCEfCMGFn*(xO_7pMUVrqFWF9 z*5Gg^S&q^>HYIZq--hBEq_~BR`|?gCDnnN@ABdD&#QmT;sACV6TQ^Dvnv4&F@g}2? zV;#q>A}H9L#L~9*aguLVvIU6izDdUk03!mB0pJWr)q~0uVVpg+2GMSt9g68do|Y{A zbfi9N;~VeTEwsAsoi8190nP9|!l>ZN>ArKh6)Qi2OvZYRNFRuHQBqb8ktG6{k=kH??lvpIh|rAi?zb zLci(<+n?=pPwq2UwZx*v0!na%^qD)2Bg<=niausFF5b3IyDNFY!HXO5y+_`VBVNFH z1?D`1$98(eLILQoY(u;Vx3z|oiOUZ&um$g!XsHUQ4n>YQzk6kgzWAPVo|RXN4oj4D z78U`odH(&~fV8C=g3p)E0DSAMu~eS`KQZ50RaiNOHa`gwn3I^84? zjB}$^smp!Cg+aeX%SlCXkVa;;kM#mO98CMVzHnoc^NALT0nI@)tb64bc|WeKff9B| z>Ch@AHM7u5G{Pa}O;gy3hcnoMG7Atd-k9>fzl%=wZrXBd2MX&4DKCV2%D3#TBw4)nLJ7IJYkrM=H$1m7CA za_7LKBO_9AFHDI>GQCErA9R0@{EZX@Y^@urFb(mRAgsUC!O(iaKO< zpXJlj6aMu4+fqATzR8!DT|Pfw|El2mum4@XKEd+Wmxp|Q8valFCofrN{k=c?`}E}h z{8|3;b#E9GV|Gb@zPz?bko#KYsf|{-6K%|C8|q=~kfq*%I66Y=4dQ zhor0pMkD~t?)-2J`QY#w1-r+pEErh^ZznH6o+(Gs8FEo5be|j}DwmWhkd!YJTY=vi z|Mz?G$9S#jKvt#>1WB3aQTIDV?#MytM!yy@K~YaEJhW1Tp6d-KkdcSU|FJCAYyDXO z1}SHeQHCz7Bm`g>h(MM;p&q7_3EGtMUxDCA;LJdn#|!B_Ya|Cs8|_KQR_ff8;ouE( z(9F4+CI{K)B^HBxn8v-|ITv#Q6G{{^2cw#%IlMG|MI6V z&(}9AD6Z%J_1i9g{rm*Z&)+_41%u~3Z@QC_twi1Ai2yOqCuE?zU-)>@mxkVFSO( zNYD~EykSm^l>xo2q9+h*ds(gQDPE56yqey@c|`xFxhJ;WtOMyuwX4NvE6h50dX0Xc zxvVk%=DgK_bt9DGR8C#;v$$MA(c$+=<&K~vDsoXrD#H<_C9T<*0r>wJd-Enqb{tO( zbdNKS%B3xgU0x@7en$$|GToaT5mRopw`+Kn zvS%pEzA(z8e^BI*HISJBd@yJD`@S~rNTaJI`Q$7J;#`9*IA5{?>kNlvaG_6;IUn~1 ze<~eN`x^I(6&G^Q#AC_NoUDJQFQ$mQjy7n2GQH4Fv}d!KQ+xWOGul$u&Kb7!R2?{ffhA;Ey3%+2HAE9P;zWITisnr236l(Fubg>$l(~dro(Kaxxfy z`)biV8*r|@oa>s@^C+H$gg8ItMqK|0qQ}012iVC2tTM(NXGeh2dAXt~w?$!97_hO8 zdGYr0;pI&SBMuJF0O}?ut!jol6$mS%dT(HwnlH2$y|68KLynY(SsBJ=|QT*v0R{&#L$8Ti%D-B+pbv~B;m62O_G zEj$##05rp_sb1W2k{em*MtCD2xWW=g6$vDQDL_$8TtS!w;M{|=t`_fF+>%43kJZYX zNnO_S(gX1l15oW9y9QS5qfTTsjE$fMpgE>(YgQUsHdX;xQJ`+gB9%+S%<}r>@sWP!xaM~Gk(Z;kY}AwnplAB|(?{BG z8=&58Xu0K=+cz;>;L^{`X66@Z#UanLYXPFqH)>SdRJ<>O!_PZ+QwH2U`TmA#FpE{ zqQuJutmze85b6V(+dGfxyn*&@=WJ5FOy<8;Vz$IrS|gmqhQTUZRI4G55RRI59Mq&g z?0}W!9YAgfuuyyyAB|u29RjbU`7&ll0}%K4Rz3ASFzc;yWSIw`*d&38c3hWS%SQm^ z2+6_sGy&vQ2M%K`yZAiIAV_OGR|1%)#HZE^f?x~9p_{Zs$wtiE1XLUd1?@+GLU%2E8^R<80&85V+7AR9(kVkKUDZR#3vuUk<^cGzWztw zYa5ot6Q%nd^LMd|JyY#-cp_ZEa){Qb!;Tnh%#&E93nM~n2h8qqOoSz(I5+pr-)k7H zV|Z2Im|NcufYo#~KbH3qfRnGN@JxCJY60bc`_L?aL4>0?-*Y+|uOx4Bci>(|&R)catWghpgao^u0KPGr z7sG&oWFn*&_uAl}?>Fx5py&B^_eWVZ1&w8KA$%gOf$UB6wcTmc>al?6h8Z)zp zZIUz~-I&GtC(oCnC>kZt{a|Bb*FeRdW2TQYoxZ=P%S#*g*Ghl+dXilTSCCH}NyZ1Y zS}uu#Xf>Qd@x!yhsod&`pQxm9aDln5Q7%smA_e3?zKBw%iJQ(cU-|%z_lz+tPU;-GEUePRbWHp*nYljJXREAdop{G4UeE*L5&jAQR$z zaU75u04wE{f-sIc4^rx%w>R-gPI$|JFz6rS(C=V5jEB>U=vF=BTb|AF`y7(c(ZHTF z5p+zW!IWb_LkR=G2w18;z~Zx4b8vu8tbF;!31P>B*5jA!79`X49%Gly?p3Um<12Ni z$XK0->mVC?AnbtL45`fXF>m{w1C?g6Eism>^F9ng&loSXW1M@VL6bu|^7zNIxjI2E zZ&xihAceTCIv31)=Ad$|C7JQJJ3PU$tJOq(hLx<&%sXO4&j7kQPTk?#ORfdxjJmp z#zv(XLK_AQmwKU7J=0!Rre|k2Oh70cPx`Atd`WI62x9@vzVB*5!5`36B+mT(mV3!dhclTbFgT46qV3EvRo%4mlWqNN!tr?<0KYcX%X_t(7? zu_N1NXFF|*FtOhW+0;D$P9aFe!+oOcDJ&Ed9v}^fA{3k@1I|IW5PYLYIIEEmd=OT! z+%rIp-M|8n0(j<8Q<4?g!v%qcYRYwWwAt{kemKTbx9}xiJ?ShNL}r$m;pmIgFlzpRM}Br zY-aFtBQOJ^G&k)@blJWm2DRwNJ-2Vv_;9M(-vcsG2a% zi#^c#1HB|p0CG?UMUMmHBmBAQeBu&VvYId@{;CM;fya94wq@@XYA%zw`ywdbP_^!U81@kz2S`b88%ENECu@P$9OCqXw) zGe}h687mYl4;i%a81A;ac5e$SrI;^LMdX~S|5$r7K-DDwIgNK(={7#i$+sxECaWe> z+W5wvx1^O2pJ#AT5O|@VTUmC?$0egW`Bz6?7y`M{ij(SbZ1B!A~Q#Mfu9GU%Ck4Q&zU^5#POx|g||^EpI+ zGl2HZFU)d*Iwp!(wQBGWjD(xum96s3lwj-8@VPz95%vi7XvJ0 z79InV?S3b**$mdE4Ojor5Q43gqpQRU9ZMB0CB}#fTB>jJ!Z|8 z8nMqY)3u~qMU8GImxPNfdOp8jIO&gp!YqA|P#gwGRj8og$b<624k#9R{pLUrVy!B_Ug(>^$epsR5oLz z-Q%IXfBf){?*IL-^trX?T$>PCSwhb;=Eg<>Y?(}=V@W{)Oax}|+WN?0B9|gaSA+lq z-3|BU+<2pn`BW{0W!})#_(03=E%f=zXBnsc;V89bR|7Oq0vz@vp-&PQwej!|Zrlo% zCI$5Z%GC-Ix-3wbFhnbaXJm|LPXHH{FOz~D@mA-R9&)^9yhRdc>jJL!F{`6jD!^fY z9zGwnGyznzbcB!%1EF^9Ee5c|+Zjs!_3b;oo!(RtwU@U7*Ns5Gk^^+Iq%8r|r6e$Y zEr2B_!>Ss{Ih|)Ob6zL+{T|s{Z__4}w*8HS@`XsUIUAaa+$@k5?bmcI)I&OJ3i;s8a zk$gCS4?_9C8M_7FI1$5KZ_>JE2Zscn9WXEtS zMG~&u$3iFJHJ15VHXTllzJ;t2J&%xuxv%HFm~#uiZIPE!@;z{01!K^yPRk^lmSy$p zZt)uCZEpyXhSouzkcLC5^XJF>F6}K_8mseQOwn%4JEu!Gb^+!YryxYGtH_g#h*8e2 zb?xZjeIrB^EDq-R&^)hrI?8%xP#JPoX;iI>kv@|;+JdjLH#g)(@V}N}h0My}x##3; z)Q@reIi?vvI42d3f8$=c9Nzeh4AhmrdL38c*qv6(k*gL1O)AifEju~ZF$*6W1`mr2 zbtN1Mkh`T-%%fsT1j+{SWUFQNqfmOWQhItl1I41X9nIrC&+2t5hSXN`7IM8$UgQ)2 zJueb7wUuR3E-BZ3;Y`WPNuI%%Zrc4egk+KiIPaTKdOFDR@RrNU*;0svWQdiYgn0Yk zx0gy^+v}}8@|E@ZMPsuWJTC_D*9NG*pDqHR-72f(9%KbrQBE)K!X_X)z56tlJ}1w* zQb$YmtQt?z;G1<878)5DnZFg-f_U-eh#{)faVZ+l) zyVpUI0mV-uV3p}$9)fAI4Q43CUK@%w4{b4^jO4vaNdd>KaA6@gVT*Uy+A{CxzR~~F z@yFAc==YRxJJkE|d}T2FEoPxY3$CUf@AURSLkRp#nTl`tpz_?vepRHsO=uK$kB85Ugoz$q-VWyjdydI>D3J34F5BT90(8xR*yO{L=IiGvo$ASI{MCW^` zKE?0k{5hOqz&YL1PpuB@VCZYen(}GhSuhMXau8Ul_XcOc^CN=+fDnKk{Er>e@ELM{ zG)Mx(kAF-EyJn8eYNma9ht3oBw$=Y5(Z6sg2^%;aEc z4(C7$l?;z8xtsy$wuz#J0gx1z=7DxCd9V{N01W1Y)7Ur#+d9Vz#e`(-?oI*B3uLr} zp%l>(8R%!HL0ns$7A*f{zla)DiNIeNr#`eNAx0<-`@q#BIFVVe3!t0lRF<gfz8P^#yj+JVQbN4=K^1?Sh|O&dWpoU_@`95*@1xiM%z z+K3IfGOuS3Gd$NBi07@t^ZD}3w3Ro@lkh->QyIB`cW z^x@qjy>G951KhiPvy7Pl?7`k_1%%%>27S1{r?20>(zmZ)T|i)fv5fa`|Kl_L+v^vJ zk-eO&#FE!dl^ypqv9H+1)*9Pes`{WOX=l_~7BBK*JHBP%T`7U+Fh~RdlhrkafkV2r zwbW}aRjQ{PHe5cA=;N=S#E3XIYyCf$?c@G=lf4x)=2PBDK03QPKqe3EmwF6%|S`lm%V zV3`}yj;%w7*12c#KC4%=PQ}KbBsp={{+L&Nb~OV|f>kue!{Vd$Z_e@9Hy(IA9wbrn zw};0@lPa4Te1CnD*Qp7sxAuCs=PkpVLBznC>t46Nw~gN!T%U_7hDEn~kiZmF=MZWX z;{#LHe3tJjwdS3~*t1_Gj7gNdOR=CCpM#?Bn9w2=9BlaoG%A5Ce2Czw>cMiJx}CR= zVo5Qd ze(hJu5}?g}4caLU6liH;Drz|+>6#BH7`gwcFGr_ztmHdVIpqLs0MPB(5RwIsgc!TU z%2+W&-HIv4vL!Zn%D^y(y6F8@sEG(pvQ!qZsa>74?KiEjzBuVPX4|J&!Ja( zff3Fa0O_pAx}y}!zX-Zidrt5!ynhB5R;_~yz>F=X!-MI!cF>z+EwiUKgAh+#8$faX zeKahtkA8k&d{wzm-8C6N_1BmZEWi_^o$JM|Z1 zFFYloQGMO%jN|g$lzkyM3PAR)=r=CWyf-2kKl%A^Y=HiVoreLbb8`~o1iC8AUp{_h zu*OPU@$I|OCOpr_d<67%0A$DNU4)il^QSy-_>ho}bKGweplH(ASqzGqh_R(E6e5_Z zM%4lnfLXZuAfxUsk$8ypdi4Uk$AIAJF6Q~M&cZTo?+ldKdps8;DilJ&y)tnE+d@wb z2){qx(ewTwFFKz%K!%?0+jk8hACJ5C+Bf2yWM{*j$E4{5J|7?G{Iqw_>UCqya%Euo zz5&eNU(WR9`kIw+AFmBeRSD~mSXl$n>@QPaW3|3kqi2MhR_va)So{>t^3KYgTMKYgH=ufNmjf!HOrvd3psmZ>JF8@pcT$^DGEVh=g9hbhzeCn>AK|&e_jx&x6Z~XZ&wwk! z1rTFfeCv1}muiHA7hRW!BdH4WOzD6!SJoFZuGFyT#|(651$XffwD1t+eM-GR`Ks?j!wsF$aCOl%wyHMuSH2ZTh9maN`z0vnIyu=i;Aum(I*wI+) zSl-SCgN~_sjW5P0lHkkb!VGjE$E0f$nYz)wwhm6t!TNzl6d^pT49;bTob8ppY_K=AR@BCuB7LL>+ zAZdGUgtp~*7}#v`&z;N`(Ni2txtwOtGLo|E5*yP|a#~owbvMMVRW%xDt1 zo`3gXOP4s`Z?8du}7fMdcx%uyTJ;m?-Z8qoc`cbZ?vy( z^wK8ZOPiG6*t5>Hqucx8;htonE#CtCI5B%v)_V()IZp}R(dyVl;H+uy%6 z1LB^Ih6d30yQ%TcW4pyW;);pPr!NAePf~e>H+%Wg!1R}I-{`NOztCU5yinO6Y1-Y< z%el4dqCo1joEwezwk7Q zxh>EMo)#?QUIDI>Ja;hadX6O+`J>QYjfVWAgnW6>#{;vux#7WsQNP&QySA~ zybu7qwi^II|0eHKfQIZ@%u2T(m)^))Y+QQp<9ME7Oapd{I3cjnOc-wYdgbg}fLNc~ z$8O_!W9UTb8Pv}!PJ`a#J;wCr_{VI#L7$;5pn1oaHOdh7?Owaj8L-}JZve7!EJ9{x zFokd?#60IQz;!Sx)@{&c2;;U&9rA&RQSVn&GfpCWCHSCr zJMaM%+F5=LHuS*CibIrQN#uqr@;uP?MO6%xW$VY60+j0&asB|@sOAu$$2~A+LRWhV~&BXI)T2 za`IKbyka2XG8x#@urgU9DIGM#vvVEi96FNoIFMI>d-0JSIaiJ#>Oph{&>6UAIW?Xm zeVU{S$Lc$9xrJ5Xu?p{_?^u{(ovciT%6WY(4d-}(xBmLvgKQ)lN6QKNf*vmWda&H5Vck@DbbQaLeOX2eT z^P47t@p(28xl+ZtMCe9hBRO8CDj<%%zIXeHw)^+=`O6pj{Kr?_cDdT-FV%o>yAOl6 zJ(p?Y+Q!o7iPzCT#k;!vTyy^9_YTc_t-$?;qbm04|{rd zcc6y`G&vmOzR~HSywdj603+kcZ5sm)G1+e<=2sKg@Xqn#lYnyB%Z3dJsfe;z7>O=L z`6Mg3+#bfpIh1_#dQ&0v@;m+Q^PYZs*wgRt9~x*b^wP-m<@-ri zB)*;-fIeNM7aS8^bjKW70^`I*DZj_r*=rA*b@)yA)#?<{umL7-alvC4O*?2n67w%S zOe6{?Xdep0^A~L6gIrZ30DCf;JPs_zGy~}ntECf!9S4-*+9XUJ^tzE9$t80Bs{NLD zw)3e2ywX3@v11~$3qH$G&p;e}i3C8hy78FtkZaEWuHZ6|h$J-ia9x*Wss zT|*t5ml#(!y5O*w(~7*&2J&@G%oM}R>6g8$JB4o1#d28H3r1F(kSru*f;Yk#5nx6~zTHRLFt>hh zTid_CoatQy(jOm=RKKqhn!+Gj;+r{Eh=Do>8EmwcCdaz&Ti-9X)Pv9reLk1Td1iR^(-4((-{E`XIARjHO6GvcV_JqzV8{)On%N11K}hVg&(t7}Lmle6&3a zlT!o9HLhL$ZnSOveEzus*xi9%8jW7tec1E=uYdnS_l<^sG*hD4i7jU- zsdtghP2Szz(XaOp^y#>l*M4~v&-RmqtV}|y&3dv}ek-b6E=G9M;hSTTXF9A z4DhPJF~;HL<<+-ASKy)d?b@1bw$2bT51o54dqr-SW`l3_dn=B^c*MREa+ZPH%zqjR z5V8~7qq7|1Ft5>A)0pl>Xfnq72F;QTfL!u$WXJmG zbne34Ag6r8!EUapY>}K1&T-o4w(nVPb_NY(to&+k_^dV8i(?pc8ww5J={sm@=fLN*hSbEf12G8jw z9$P^XtxpVqFO@zVwrw)bQc>l&IndI^bk_`rcg-R{(wY9Rzx*rx{6g0${nCt+r`DY(iS=$Y=d4SvsLd5ROd#Q%tf)U(q63HDTx12J zG@hGVd+zDE0dw}0-|z3}zyI|!UH<)x$3D9Uy7EfIR@!!1mA1OAJO#q+6mx)8v)vu= z!CIGjwZwV3Ail%#63`rqZKA$@GlXF^V^OQ)P+XHWVFy+)&h@Gs-3T(q`=FWx+JHlM zGb1kthzc8=(S8l!dXEGEk|rLK*Q=NFxb)&&JC73_1RXeM8haHD&<#KeXAs$r(B|C^ zz}dAABbNaT=0pL2CO3v)go;97-bmpF;cYGC!W9Ejy;TknQC3gAD7TFt93$YYl{!V$ zk5L9=X6UfYYoKfNKI40?AkdGs<~L+TiZ-h^bRl@~0G`Lh#<4w)?FNvppkbAGUMSD( zk-{n~>fB0peM(NkJ@Yc}E#naFgr|`gJ~^}{bHn6bIMlt)?WXSDm@gRwx`W~dfFJ3e zK@?~nfV8J0du;KWZWy+|N(LV1o*S1G2CU4X0hs1Kj`srpPwD*Ne;6X+alL8>)QVvf z9zPiI*_Z(@qb_sM2y!NQq;D9EZshX)hR_%J-EvrJ#h67CK^NI@XFa9r4)Biiy(Ukt z!}BE8m_sV3tta=Qo-xK2;I~i!>GAhG)_MGWe}T^M_EEc1N!9M(ujmxp`8hnkcm~Tw zHW;KBgGDL;_*XarCe%T%K89Ubl|4M~Kai8bb4}))xSQvYg8Pft6vy9aZ%HPI70!%GP5r+Sd0#~lr}^f12#o$W_HPgMOQnA z%f+!rn_qx$4q#;O_y&e}H<|W+x8=}=4c)hnJg(pA9A8XCq6k|d(y;ex338g;C&mCrH#8J}x7{~@+-Q1k7FhfIm)~D#{rwBICepqE z=70M2nf~dQpXm8+-+o>^J>T6+0wjkNY#Xib zb`4NBoU*<(LC>Y;+V_kbXZ9vb1h>XZOIE8aNk<%#?lnjhiGGxD5ePM@(PCh#8*>NE z{mZ6YcbD;~6w5aR(1sUac!jVv@NQQM?B~zT;@gTPx|8r7rtjt9p6dC1WA-im{n8AS zKfZ{ezzjY$0DafMH}5$1>jPKZXvWN8*9@7N9@{Aoh2yI@HrcADR9lu|OVg}?0Mgns z-HZi}@=EU?j`Y5b$^LjpcTex>)PDcV?_Z_f^CEShGN+~22 zMoj-!`=?6#^tlmE&?%Uzl>=gzx{#0Xcsc;C@w5QR_Ic9XGqG*0-m9N$Svdj_^`7%< z5QOWpg6O@RSY{6|+UPyYbb}JiwB>Dd;mrv}o~T*1y{xzJy|xM2`Pe+<_V~$2Tp3p7 z>TeiYv78>+`MJ75^gZa1yPX0Q4>hnebPoB60Zc1(&v8S-9<_EW-W2V#B;t8S zc}2{Z09nW?nzvD#+GUYd9pNNA$o@j5E6?eDHb=*r926)?hsqgwo+4>9$4CP>W8C0< zhG&@*(z6E|&xgU10lOTpx4 zL6CqR1}`;P!^{v>lN(FLGBJ{HFk6uXX|Jl^S@q=*3W#A90KKD+54`clBw57E+jshQ z{?b6&9X&Mw{4c+}r~mTLzsM#hrS;?C<0Jj{bSIm_EGu~{761VWMqcQy_4EF?ml$Q< z;+o6Jan9tnzR~7wp;_X3PZDFj)u~Pj)A)|7#m=r4u0a}7gFyc56(})T4BZfrvIo={ zQciM>Jn*C@;GA%|Peh`tPhbU=sS$tY-f5|rq37#r0?FbyS5Dc}uF+#h`!+crSui&M zJ#*m1yr=b#7y9G#OQTccTwca$jQ)PJZ3fQ40rYb-z@D0Q^U&zYFDpVWl{~7|B^SVA z^}3N|uANseG)mL)zsu#dy(SUx48$3b@7n#()iz3z#!pg(HPNXn^mEh)AJ*% zJ^-eH5LbZ7qhj~$K=*LC{HQ9BIUEV?@b9Hx5$9TA_&Q*Sd-WbUvcAR=sUIcZJ7_$H zF68AvE!jte{`%LybwE3B4iftb=P;)@rjiX*^>pX) zbAF|A^%-so;k9Hikm+%J$o)PWlg_-y`0^&p%F}|Ok@9Dq(FaJQ#hb=uf;C$cud*9?N1L?}%*lD4c1}*GWFywJM_p5HZa_uJE+ z9+~kc-R*AKR^73%23%r#Y-I_2W8GdgVUj^I_k%-ANSBtmlE=mr!aVJD0!%6>ivdqb z((rfPyqmCzx0;pxj4>gJm^nwoz|RF1Ql*l>c7ZiK0`OZ98h{x<1r{@|%M;iXiU5BJ z`_NKf>!I<;mchYUO2V=Ad%q+46W4Lx-?#JsM&H|c-@g7q&yNrE`20*Co*wDr^8@|V z!1KEu*U4UGEEe80WvU*3T7jIvzpH_VMPCvCGZ&{{5rv@%pInRk&}KC;AVXppRI=;hlA3TuZ7pl7PJFA%x?>F!jnpxLyV)syXV4>zkIC(aA9>XI z#fv@I5jE3fJak@xZo0Y=8$89eKe|5WS*Z8kjBuOCG6!V$*;T_YA0O}Ot^wm?d6NlO=2+$sU~h(sV&(?wPHz&jQj*tI$Xb!4XQ4G@UPNSJTYIgH zwr(L^ifum{ebalaaZSat8#-J%diiE3Dk_taVTuZ0abKKyGl(vUhBYQ@O%uNc<#l`a z)%d8`mgVMQ&oyAG7tHy;Dn@3*87a*+yKx>?qlO!qbP<*B&(m9|jK4*X<^SA)SLWuU& z89K1&3d}s6^>#=DuF20S)-HIKC+jGLXy>`O^xzplL+Eb+N@ag2fDCA}w;G-c;U6=8 zAbbP-O`S0901}>13?vNCiih@N0)f9QH32DOer*B7>sq=*2I-o3|?6L>3SL`$8xXvCVX5d<`loczY47^96jq5rEWxxd0 zEv^A(%!S)VWbpXNn*h$sf~3>i=jrpJe_7ut#ws1(X62h{J{pEF5c2sWEdxZy91|U# zs*phW1BfD2BaaX6ub~GsA;CDe3)kU=)v2+LIOKq}1`5OhGrdl`g2yJ^)Jb)H6S?#ewCd-UEN` zl>ufn+H4{O1bPKkOk_N|`Iy7dC>b<){$<0CDDod-zV-c0^S7HmVTASaP3u3aTwXf= z7{D@e3#QFXc~@oB?Z$XQPIUkpV|gLpP$uG!t2ZzMbpY?a;#3$4W6U(dHO4q+@Ld4@ zwG01%A(EfPo2cy0JK3O*9byyT-{ZIJhAjLA!cJJKCh_)_^U@8LD}~Sv3N(Fy6=78a zVo1&bV3700IXdf7H(SZg3ZBlbkrT+HEKi=)>pMU$A9=Db5q$Hef*S%RMf3812 z3ByseimECQ0R3;}<|hc7-uep+tUKj#Rk(-aw)Lg8_UTTOn56GjfYk=&@UVmo{>^xW z=>t?%wFWFs1^Y=#Cmuew*oFZ~X*HjL=cJFQS~#e}1b(ee14)WKMEi&51mwu$k)iWQ zUd-Jxd@om3oD=;}Ia0JbMyYNrh$m#ytkC!OJNn=M*MFwnb|>|{8NfW=AL!xkAc>#5 zZ4pC8!SD*7yzxwR!yva-z^WNK8i!Vab){vO%HX)r>xt`vztG$1>|jI@G5PM2ATP$M zn1X@OhaoyDWi(2&rxOib0fR!-m9sp0P!_kqlnStTE>U=4h?eWKiO5A~v zqcbesCntx|cd3i>XI`Rrp0)SuiV_w>I%j~c-nTH;5~Z`uA%rK~3O(on_c&&`4VZsW z<|Dw(UZp&Sz2c1fMjSh(eqQ(G79hqwpvb942nP5z&g+-R736Y5QoL*yoRx+)xFU4G zH(SLlU#8}t&10A)a7~>S9y598za_cXH3IT1$s{ysMPEI3n*?;|*y`;w?_~g(0SvG5 zobn+jSjK{676y#(ayI=P)+?S@vDt1rPU-v0e~*0$>PQ zuaXSz-=j?~m&aTKoA-t%P=-_UWE5+uZm$k#GjD_=tA7t25Jc5dcc4KvT~S=V!yyo! z<9NokzN!8_q8DPEqf%1P(fXZMMmPo&TX@KVe z8iBJ5JgHz5O`?->S}a>O%JST>9mh0ta$qCMr@I|}YykD4T1H* z%9M~^O#Nun3Za)KT54oWA}Bl>1(Y#2DZLm#b8f@^#5)?!QmgrLISVsvS#a?{nPU@^ zHJ%88DErq5EwqMqUX~70dg94ITL;-iz0Z8FNERGATWRPw+F|`h8w(&rh|Hi-{>IU6 z&?zuq_Y}Rl20PF=Izy`f8eER)7?Z6AD7s~yY?Gkz?1%e3{rq@r##I}KH}>eCX}h0g zT*?duu3Vt^s}}Qb0`v;%7Y96gdMHfo#UzI2se$(w2GHN%+T=P%$dc6+j_uh?zOw<4 zzH$PDSPxY6JKicx8WF&w=b{Zx9DWxQdo%jJUp6anyP$kcpQ#Br&t)_wHf$NeI(m=Pwuh2ch zuQjA6R_}x-B)M-%GUbx|!8R{_6$YMlkzI(-A|`goPeRvGmol%>lCOV1Z*3;CRZo+E5$J?H>{KKHVYHYIC#7?0j!?ALI<}O9_ehH2q3;h z0$`>=Hh^(%<_VS`40eyl;}Aj>^yKe3ECgUXgKOMtyKG&4&F5Kj|HOH!_t`LE8FiQ4 zkv6<(2YZ@}dY{RvWX!(AoqdWXcraODsd!>p0t_x70ivzmW1CRrVwEGfbXfzST#Bx| zz0t$Fd-|tO&+YY|9y#Wj+u0h<)hOnw9z^j<7L83U1@O{@-4&2C?_pBbKIgGZV!9TC6-zGuT~b~G2^xwL`Ms|r$MpU2c2x$V-S!wELGRB1aDP` z84_<-19kDxnn#ODIyvce@~{ra{v|;7q`&v7V>ocH0c`hY#{h-5%=%woG?6@yYiX|+ zRS3t;tR7_s0$l%l(vS^Q6)9Fvv{-3G<(ITvpOi!)9pA9ZtCeenL?&y?MqW#K)1*)c zaDGGSM!VlMS_?)uE!Cs~G(5`s3MFtY%ww6bCoq6vB)znmy8#dN9vpyY)KTRP3Q*8q zH&#irM-uk*73JH)d!3iWWK&20FawmnF_8&r+5ObPQ;a|6pDv4%-?QFe=B$W7c@*vU zWn}6-QJ_)JkfuO0Z`)X-4lUP;?!1Ml`jNm2)kr!K7O;>3`E45MG|UbFsnjM1exSd+ zd!_8)4~&%EQsakptNGQ(JGvVuWBhBdb~+#63qU&0Xz|v<^Ryxa1wc*(5)#a&I&QGy zoxV9H@G#|P^`t5t|7&~K^mm+_4aMtY?fR|fkMHYnzn=GQUlZ-VRY63Q^k(h>sr|m# z_@Zir-^>2eVu7^Odw28_~X2|>{GoIwU}X) z^f?v!z?|%tlP4o2B$DX)@3A@%u8q*BNE*&D)BM`=z9Pf`e8YttczJtEyTg&z*Egz{ zMXeVi+wi2lq>k|H)iLny6G7hB7zkjD=p{M6cC(PTIo5=%sSVh~u`~^k?l_6?^qn3y z5A=@$pq~XmA6W<0YFkh1lBGFwWQtXL2L4aZjtK;mTZ%+Kmn4Ls1UieVrn?qR%d2a$ zVB6WZ2+&%mpp<=lpqVv zez|$@0`R{%V&1X`OiD%7YmaZ{X9#$1ORg-@AA{3Ylj-!mk{dn!?WtwC985 zy-x}?6dw7x#XLNydCvzD)@tqJiZ!GHAtuF*|2)xrsu?YpYVqL}^AXYrASx!9FPYmJ zE{_NKfK>%`Y^=`bh>gtv+H+!Rcwt$cv3`&Qa42*!Vo+_M2Ns!6J6St;l!9N@PWfff z3LXL232++Y8_$bsDcy=misg-G;%gwzgt&L)t%I^H+=y-wTd_(#s=&cj#b~BeD`> zI~u|;tO?g>`_15I9W>vFk+*R{2m^rjEuP~Sms`VFN`Dj3zv>rmPvL=fXGD@^BB!Rz zHo^Nj{y5V_bijhKQXRnH(mmavV={1i_MD`q|EPCha08IzP_TM%+POFVsuD;a1C1~b z_CD)#N4=omA*>4EJBNk@Erybm2i{U-)*Lmi;=zm{#j=>t+>nyOA8ffq;fBS4;y3C& zl?uHkOaCjXG}`qO@5ENB)zGaf#W$Pkq1J)8+eDT3)`=ygkrAzJH+K zo*rnsoYh*H@O(sO*A5(7sa%`SJ@Ab`9ie4doq7=eS5RHjbwJta_wK^*6lt7rv2)U0 zdwxPw;_CqnC?FdyC;^P~C4;=NIT~m%Uvu3EqRuUxfTY|DF_uF+uI@4P!R1}O@#G%0 zcQ-_gbxhu{Y$3c&UWw3_O$+KtABBlhG-+faER$8KSRz78Zka=3CLgZ~Kva8r^*zvs zOPthlYF4wpIGMEC&YGI=nTV7NYWC*V52?^BW=&FNI54c=l*Z2)WxiiE{@$7Y# zVNk+Kb0}6(!Ye%B6bfpf?O0~&$}@_1>LizH*Oua76Mzq4IRYGv7Ewoe3b1b8DU#&K zl`uy~@RGqZ=%KNe*Rh_iw1|xV17HQn3J@CCfbRqB=5z6$l`;4+d&V-r4UnEd@6990 zs*xYaD#t98R&Ww;r+fJI{Jy9+6CP04D<$ZgCJ_y2;9zV&26ZwehauIfug! zA(X~6sZ^)Q#^jL5;5Ua>1z$z&>qz*9*;vmvcZh=B#H2KN2m7hyu494 zaVgd1tB&703ZNKL_t)^0h%>8Cjr;X)uRFF+mGyM;Z-*hc}o9t*Sa6*k7|9n{j*J!n|;lv72V7wG?7nW85aj8 z8X|K+St{^n0!;wVN=b&alY(ap3Bg#GL~9p@=(k%E{Y$E5$Wqo>UaQn+TS)7A=5}-vBvXqNz3OxV~AZy86DP#q|`B->+k;F$H?f}3lfPPC_twR`T z(h`?x|D9h)!2eBDb45F(Kmx=)OwBQEgg_`5AUSwJ@c##lav2OgCYayYw&#y7;?pn z9|P#z*Eq&1FyNC83>c5go6$u}rD?1thpR2?8oY~St~6fY@yuz_CJm5>%DXS4wT3-dwGp#a0yKG21)M^&3Xx5}>IuO%% z>!1)TVAa z3yhfRhEoS)rI)+-8wLb)6WW_YHFA6TISiDu!@v^<2d}e_?TP4RexcooJ@Id{*F*x) z3vH|Jy2q!>f}X`Z&RBBlz)Mzhn24INvXS_^LiDLeM>DTw~CAN8989+bKw%zbScH~*59&$-Zj9zV`0uE3=@kaz*dpt;#0BwBg z1-yYcz|~Sc?|jV%qnsvIcco&x^&lQynGK3a(r{=;k61M zs(={+x|fi_~& z9ZXXH**!<3%9zVpfi$|+aKAy%X1D2h%r_1x$#}_9s*oEF^L%ZP;PaS7h3{^8mV0ku z{(Kui>va(>q(%wTYNhNEzxC>mkiZ>~r5@NbH6wH?fi%j2b8#r`X1Y7x$)-+|l$TBS zOLIZz2&vIj(585Ex}_LVJ>9?yLC+*_CFTcLviDHM0l=g=2yiu%l^81nKh?1gHbiMn ze`8!~H^%Hahs^Tp&6AsJe21|bawcMQL063(#=K@=ccxPsU+vLo_{Nw{9!hw1lz78x zL$@0#h37YKGIi4+vyfQCuycM7!lLp6Sx0QkHqj1-zUC8r4@aFh-mCGh+LhuB><9#U58Z zaW3Q`+Kg)ew#SWGGQcJ&zk1SZ3cu#?Kr`_rgrn&0cPb96#I5kMZFP?aS?}RBvg}3K zdV8^0v#9+!Wg$VD2B+eoOHO4$9wOn{4VWPmT7*I;U&92W|TW6pg3dw7N z1n|f6M2DLq$CraZ>cr`Y_xk1sz|N;6ke{d$CykFA1#Xt+b^N*v2`%o^OEv+{Ox*z+tq%I&rtpaCGk_SUz`QejNcw)|bCl%$rG zsP~o6zu18XhS1 zdLbl)z1=(ZkYYt*jXJJg?ke$K7{htl8U{#TgB9=C%Dndqg?Ihd!KXy5@il-}kgXuv z$J#)2)B*kxXjVQVig1WB%(?to+JSPemX86(9A>3|H<^KT8Fqo&VE$Y+r{4P053Ed_ zFIvYo*c|#4(k~1^^hG`9WcoJ@xv2VJ0N7${k&LX@rV?@~gk$s~f~Ht?L**pl<<0d@ zlvnb_R&fBDuoB0f`)*^8i9B?QkHrjVpO*mEYfY0SiAGrDsw@$#y+M6mkhG z2f;FK2w;nCccZSHJbUr^-IsyX4Ro?cJRFoEFEwtTy7uOcPjb>=uE2xu#~osCtr`JP z-?~o+=970{bl1GK;&JVt2twPe0?Bx~qungubDiDQCOuh<9$9jhBuZ5+2gU~7aa-t) zcVk)4;$Haa`JO&C;QSB2e58N)`IA)GU=QeIUT69Y~bO!`tv`qjbxR-k@2=B^^n&dk91~j>Y-n9RZo^->5Kazs?mkAd3yKS3b-S4Lc zpbzx$a7Qm+PgG84!%CCPpJk1(fp}M~3(sZsCB{YKy7@dT@jKwLHp%k213$F9I8Suv zCnCqNYN@IV|GVV6v_`H@Il)uA2FRyiCYQu?&v_{qE5z z0eUlV89jmd$U+kLga-`?!0>4Jl5q)8m%Uu@fa13d?i756gvcuk@Ze(;3ec)p2gcTO zc}ygO`E%1;fh~n+h3JX8!y1oi^cZ!b&7IvfJ>4EHQ8T@F!~{uM$ik zOst;F6O!9)3ve#s+Kgwe$Ir&}OMC5Pr`>JnC&Ij2t-iZn4>`ky7v==AZ`()xYD2A2 zATQGbF|^JriD$wv?_DJY-QAv^ z9}o1@9)6s7$F@Dq>?JyD<$}wqUS=)$hvyr|^JgoQG|5s-wdF&8tq@V>r4Gi=6Tt^2 z3CAC)R$(A`^wz}Ki1T5=t?Q1?V9B4|GgiR|EUo?Eq4HBglQxqbj3%JoF|XA}6YtUt zPnvp$cnkJw;5C{POzFPgfno9dtEK{sCd;Fv=3qS(&=3L`?X^DL7Ki}N-sSGR6=*p> z)Ae!)G+AkMBgf7zx$k{j;}Ij8r;gyT?fiM9LW}L(T~ivo6X9Ls^~d`=`u)_N{q2N@ z>&neaVZkSo!PC7g0ge!hCBk^s%HAXJH(Z+#ufpT~Dqx0ny z9dP1a0hJw?-`?|1o4RHcqh>c$~ z+aLFbK{kRzgad?O6}+OdxUc6CMVU5@zpoP*rX~bh`DzFLjkm< z?Y{ML_3`HAZI0P~d3}+UGg*;p-@)idH3%`_mod~RDpM@J<$C7l(uo~uldXDW-o*)d z6Cl4neslh+LBDJ$qL_m_6o}F|PZ|>q zKtIkW^vVH!0OSZi3NVZnP0*6ZVBF0V&&Bv<`IKck!aLx_=R@w*{yQC-F}nm0Y~X#6 z1!Wf04SaE-nTsV%cpYPAkYc64xRhMI(DAUPyUmWC@9ya7{=R|dl|CLTeR%&&A3i+G z_SXD5?6?fwi8z07tD>kiQn&1uWg5%tQp{Z87@*aby-!QC77QF|sj@2dfaTI^UhtZk zza(L=pG(Os*DJn$!1OQ4C`Va7FGmN@k9oaJ5d~IGpezIW{;BC{9V|`?Gur1%X}OK| zn=q9R{^S4*+59+)Be(qA9~%<44#mLL%LRJRM*Ljkd-7}2(=wROcTZ>`gi`!n?Y>#i zX#@_7zohLxA~7YYq!>~eyWDzno~@G@H7Dj(O>heQUBT z0C>JE+K%j*agr&0;Kj{~5k<-aK=fWzwHte{V$P5u`m^$Vd4ya|v1mdg@Jp6I*tLuyMB8vOev)eX+duM>F= z-t_spWN)$Nvf->YesbEBuFX(n@WvJc7(ToMKofAfNgh=2RyKsvIA%JQj?S^s2s~X2 zN`cjgA;s@dcDl`Y7?$~Pg(&)JB~4lizNkj4!3OMPFjk11Hm)mmWdi3ZDFg6k**hWZ zu!e_~P)pZjh{~?;zW1vON()N#>;QD;!A`A>G8TqPBvs*OozL((6KUciJoTCcHV^Y) za(lAGtZJdNBX|bi z<)k*(_cc7Jes$I#f=caglNH=P_V~WOz8SwnvReQ;GCt_%Pk2df<0pGI`iyWYO+<|i zmO@YThmW)I0-gbI$Eym zSs7(k<~Pj}-w+JztQ0ed7Fm(dRlbjVki4#RcznDK2}n7hq_p&Co6BU{I(UZcD#34j zNcDt)-wAvK5MX%~Fbd&KOoUDo4DBC0U+A;EO&&(a{}Ar6nt`r6y2Wz8tbS379riI> zt_&(4=k!?tTcI42&aX|~xRP7f1di)?bBR_$MZiO;|PTbD#-@j8Sv2A$fL+rN4xF6tTP`MS|0%+3Ig_AN#ApUc1+Kwpi_Y#5*qF%Q-yV#!^`Q-sr@&-{Y?$hDeB zCkXz|n+5R!y5~4^{*Fu5_3_!Y1J`1-Hyq155Q5M6Z?aN`0-!gN+@Q6f)#4}ulGSQn ztSpxDT9b`lbDF&pQUP!^7gG=3<*j6icWR0O%wl zmk1PqLV*#KiX!Pv*$9&$EhrKk6jVw=#*{)XT$vhxEP$+qB55Q9%N4{MgdyHgnk)v~ zq@96O2Wf?(jnoUZ@$)F~eh6KYQr3^UYA{vZ0wGcs(f>XX=SO!2c)osKy}klqJSz_L zs>B5Dp>ec5ydH4|Kri4I4QF`k5{OdehYfw~TnJ4H1%n*TI^2(7!H!)fc(MbethH}h z-%7_K!iNkhCBesH19^jq%jqQEoTaKziGX|~8^0t}qjZQ56O_Xy7AvuaTDz*K&Rs^a zf*GAlvNXD$eaTq_V2$~KxV9{Gw6Cj|8p=!h-qRAxza_<_UL6KRWGVNsr_Y~1%l)68 zo=BI_&)v4H`5l)_gpwHz05=MN=T10gfR=@-Cy~_PDED$EVcuuM_Pmh6s18@03%tQ& za=1H)Fy@#~UT&A=>z5akJqC)aCGt_KZ(1CxCf2l70dA|&k(;7Bk->vml9K6-9l3|a zY)fMJaxueaQLmxNEj-`(aDZXeEXvTESwWLOk97oM#jodm50u8fj(~w*y1WdJvjTR$ zmgyVUAXFp5n4F(TlU@5mpUrXF;*sK{N2?MOTiB1%F8By-&-0-J6vL%3EMPc|z)?4p zm|dp902^<%!l0$7(gM9xYu0xGB-b@RC;Ad^p<9E0N;rXVM(sncumh$VZh8l%vv@Ht zn!L-v1K}o%g@sVsXafdVZnO7wi4uXJ3G=*wcLAB?Thn7Dgm(g57X|Pro0kpUuJ1mL z!}ypc0AzCc0(r@C+|Z?&p0x&VU~DrlWW&1$zM!MhZ;Uh7okjy}xB+J8a1|WXbcO?k z=R}sDdA^{3MCD3eijG?~A3|4C*G_h-eh4RwkC*lB%3E&wvbZNa#$a@q9aZjHbi2mt*hbp_YaA~Y$<*9g>%|l{K z;NUZvyg?lG7*tPo?|t$PK+QEQ?#+iQB{&|nMt$bo zvh=9j#b{}Va0gIZhX+HD7B2@B?F|r7l4mB5T4rqq zDZD)R=Rf~h+WhI$Ck4_4Is)%jO3wlc|~G^ z>`Q&f{MH$46nPx8@2D6h3)dx*7m*vIMn@zV)-^&N3k@?d0cG@WjA72zH*T$>f+jiP zkmWZ2mJ^tB#f=QwT^C)771lr~NWt!b3SMPPVkQd9TWZ$2#7>;(`SFgPj}!gJpP%T% zaod3NhBnKoz0UNoT^e}cr3AgxM436@c~d30+6#a(lov!$Ksf1yc%Ua-uAQpz_`;*T zTKGnBp;RC=z=ULQ!#vQ%CqtT2K1o1)n+!>V`uTBTOoBA*=EDg+m3|*TuUT0oFlwKK;>YiNfo z#Y=o#QrIj+N~+#K0aSDomDv=gB}BBD?GO3@3E9>!VvtC_<(>ddwm;>2V)w|y7oUo*Bud@e?niHf zlRNQ#?l00cJ>09w-L9yFKSTvC}Hr2@g|8j5JTiWBM!&joJJ z($$d9p5ly!97vZ4Sx}HXR(Gh~+=)3@{XPg80x&t9-statKRM7sJ7CZ*7IW)kl2(6~ zH9{jggQKiLoP*3dR~PApWo89&?8}lt(}4Bo?-B%;}1;Nn1|3c-L)n3 z3g##PC+mO_=&gyiBk<$6b*%Cr85V?-4Q?om5hT6^LdqW2-a}0Wa$nzGJLdwXV;=YD zug1sc_JL0BgjuwT6zeSktQ8vvSxj}3M+nEjXBa=ga(H%53dFPdTIdm8@k8iF4$0_N zX-i+u4q=cPVDo_r9a0;5bD_;;(-|OaEJ?j{;rmHryXH#n(ST=XGq1F5uk~`G_YcqX z{x}POzNZG7+iNGAq;S&HMK@0=x(gIGV&;8~Kzcz2nFeyMW|7V-#3O&>*XziOOujlF~UL66Ne)z!Do)I{Y?R5J2X$idk2qoPB z(GFCTNUuE29bKRJv8!tY0io@a@3xgEpH+gOT|)jiOXprIaU6#%x;#C|8= zaml+28PF+-{|W?t4{G=eP53}ryGd4z$oVz|#at#|zK0hf3>Oj*uo!q-QiujTTk5gW zM3bpRNjlVJEhTxMO+gh9?#A(UI?-!Ws_Kq02Yrin+IOsX626bE49ns9|(%xH-D=PL@f!Hgt=)d02*{syXJx@vzX zV5>Avq4ybU5#mI5QE?Ff03ZNKL_t(Iwcq%J6*o3A3MFrIaB_{~o-K`!1*i!C zE8ckKT}o3Xqgx98>iPlzQ({L$8DHBXTgNj~a=cdpgjp~WRxrj25XPG}?|c=Pe{qFF zgb*iyyO)>m^!@t_-QVBQ-QB&9X#kzbVIa&SLQ-c=5bX_ti*4hbDbak7vXE=Ss@F@C_>7VI^ z=>hs|J~n~!<*hO4>4hX1onyB+>s1EnBwn=5rqKPa(9a* zE;FILeB$Hk2;A>p`O*209|3N;b&P-4Wh(+<`mqP4!{<1h^7h!A^bv^JH>Js!P~_!| zckJO<7$9q+5j@NCch!Djms0`Q)#`#9ugDx=k5&VWc(EsUf47$kkeBnDEXUWS@v;d1 zOD~{ISuZJ`PR6J4KG#y+V&f5H2;Uk56Zo2@3)+WSr%QjfIZMqRCMch3iMFv~5qwbG zl1G&X&>vgO*0T84vemrY8eg|cmNzTHxL@`DWN%`hbsjaCy(Ci&V;5BbU_^jsAVqlA z0|;QdZtvR~b753q{Q=EPE@b=pVpTXHz;QneQ^EX-5^CKDnn3_1oOwVL=#~|Lfx5+* z(f}sn-{p~IvYNe`=vgWoE83$=Q)&`R4><+};Yz;mEdkgN6iFF)X0kGWDa+pOh4Y9~ z#gH2m&G!wEm*!{H-PbZbuBAjaYC@4012ZBXSIrbbsXL9Wojt@PCp5miyowRTNo;q= zBjq^~9!85%Pg(y95`~L~N?qwd&`h{6D}(e-DWf!?c^NDgFh z#EEV+6Cr#d$EwC^PY;^&vV4v)_ASuuyu3k2Ud0LeL~>$yWVNB=ym8HLcn09sWeXbw zQbP0O9^vd29mkEIeLNi9h=~4~oT_jbXr&%D3dh>UlI%H?)4_Qx^PB%|PDYmrwVT^h z(avB%A1kXXJe0MLQYquB<&^2xV2>g3Xp!_xK-x{LzEmwbZdhiD#fmxAiIomB}q1DCtuA zEZy4w&%P^8*W8|fQZ;y@BzmK50AE0$zXm`7_5rNdTI0J)U0)bRb281D6O|Z1w>edI zceFopLRk}VuP4bmUL^aNt4k~fJoyHbc#pC36=;AYCoYZ0-WF|x8b%J763rllWb`wG zf+mv%S3z+l#uHvQK$$7FVl{?{5JEyk9sR|_-i+>ACI`;~^x4{9Y>9MDn}AH1q-kl- z%R5z9WU3^&9zC8H&^C;ZytJ12hkS60za|d}K_9SuA0Ei$aqH$~06kUg$w0;L?ip2n z(63?q#q+3QwT%2BQVk^mV%>6C>9(9NH1D|psK!56TiQo5C*))RY5-6bB7Ti8kr_XUZd^EA2G%O1%9NdQ2VP<{`}ezG0lJntveg3BC) z^zb}c+@K8rjP{f%ypFCh&6|Ujn9lnNL$@Y5@3L!k;Fp2PO?hw61u)KK!dxb#F~(GagB{@8ScfaCYmo^dX4$0G7S4Abnv4j>uxj6>gKBbpoc7iXWf zmub$1#`l-+O%I)&zj6r8rN)ki{d}bqQZpzIqh+l01)m1bp^RQl{A%|~^C$N+R+Kh< zNXrU6rw3Mm_&``8DrH~`ZmdXWK8A7Rd{}xXVcz~bSBe23&);PlkkOo-m7D+kr{Cz| z;Z&P-~=;gf1i)-4|##H-hq2s1q^!7sA-$)$f_7KRi4sO@}n8#UZVONw5ng(ClhD3Fr(o1A_I| zbOvlCJt;lKZ`gt4LRWq04hM++tL9j6>ra6osuq+_y|T_g+56@=ySh;Rk=MwHV#@9o zs0NIW`=-A~@cYA~=NF-=DOS)sdmUly#41IES7dAuBWHK5`Dp;pN?Y^+anY;OCV8Mu ziJ}e)SK!z;LH2NWq%W71zJC9s4aK%ApQa#aawS#(hK-(53);caqM=5w z^)7~|n}_%gya~Gt0(3I)D-*FAn8qu#oq6q67u>RSxZJpO;2GQM7QMLvQf(X(d;mZI z{>7_)72{g2`LPt25keo2Ev@O4;{1S-7iVM&Cvb&cifv2W`<{Kyci>NfzQpWx+=b`z z{jrsGplRG+p$@1~gAgI}9Myy`{91H}ZA@R0Dx9M}2t ztB*e)D{3M8DWDH{xWq~b|GWmU>1x>xWPD;ka92*Z^ zEh*g&Z`SiPh5^PHcrb{|przxg4%pW&v}@Q0C&GEvzXmwY^^Gtue;i`Aq;c@6cUO4M5W)ZPrT2;pfT%wIHDYz|r1ol6bar zpf(Wlq=Xl`VEHKov35e2RHluMDp7|vRl(8K5o+uDml&k<|C)ekK!&&v1e*6S4#4Or zemnrg2&y(k5fD2A=MhBv=VJH1>L-+wo+Qe&ORB{F6__9ny<@VbdpaZ6eBbM5YU2Vv zU@Y?`c$Tw4eq3gY+TZ2oLrp+bLxujg)4(QqFqV22C{_)~NC;!%dK59X0MGRrK(Eo4 zwI)DqwP~4`89*PJ@L~Y{`H!z{9(|?5_MZ0JU3wAQp{}T5mT9V^PcBp}*?-7xiRoy*3(rAwU|F@pbd72q@Etwe+zL5}YxdsEA zk=2^f!YZbR(@7Ak;o614EKZ1vPZXG7Ve8#4fyQxT;|;)N7@E3>6B(!1vO850qzEvQ z0pS@;UI2OtOgaE%GbL${3QOogK!h=oED#a^tjb2VC#S8hSa|!Q{~3`W?G@S$0Wh-J zPLBehui_m=CY~8=IWp890GnQGsr{|m8)hHJ0JN?Y61-_tIVw$I0!hj`L|_`;9kKP5=<$EdVA}Hka<;N_+E9)nyB(QHqB=ehTqi!$GSZdNAA&LfifJ7{ zw>GU%3}8MH-8^DBT!Wr;X*qyQ593u<2*_Bz(0BA9EjRC3(D5|Or*7(8ECTQNkS-K+ zud7gB*bI%o!KiCrt^qVAQLq-bQ(4sGPVXogbd zbM&6n%8H!ZcR}XHccA-7U!%cY&&8;K0KdIr8T-~6D8}D$6Dszw;Ch?`ut8SdG1vEy z&6CqClUcnbVIm`+pd7FTdFBZKh~)TF^6zdSVc(-! zkCzT$766QtEy|&!Q4seX)pHYpEm3VWe2>5g*(cph$v%abq|C%3K%;W;Hr<7}y8>6Q z$`9~truaRh${gF{tnS~!bEyKi?CpVyU2DWzpH;wz-&6lctPL=|@kGBQ2Qck;tzZ;_ zylUQhlQNj-4};coRt1tbckHH-4h1})4tsjO-RY@JI>*gf(wd>|`VMKT46bEjD!_)9 zkJ;XhO+f&lgf);TpqdxmZ9wi`$;^he43gQQ2K32oodR@84_b_IGXdmvL#eI|F|Ztr zfn;U&e$z>1Rt{qaQG33a}~H34u}^gAvfA)(e15;@H%SdadIi*<@l2 zwXx3Zd4mJ4aKD%&7?mnGRS|-JZv#;75(ciQQU&UZt}3JmTvKI`k@v?XWn-GXjnI!O zs}p)xm9xGfiE2ChI~H0pHOu8P9&!Z`%20w?%HH0+2>>5Rhe5(LEsdMR!6r)VY=_d8 zg3B+FFN-OZgE6T^;g!v%X3H!lGqFQjd6b|SykB`a1F*u_^!||{Bkx+~1twW7dt7@~ zolCLluddRx%(E-LoZm5QC^qGSk80yt+cGlOSVBix#FjMp1ork0AR_|t2PG819$;<> zF4XKkF+uv^h-MfLh&m+#VWC~F7!dCj8gFMJSCB+`M!IMx1HaL$1J?ttyZ*oGId^61Zgw-Xr}m(bqCnyRXoMyxl6y|yS~1fXTw_XCw?O{WuH=S?Rp>VDKl^#L$2P{B`S;GXnUT(>oP2@TNllxh% zIm!?Jw)xDSFCR!DPk5>}L#|OGY0c?JK-%5=R*Qj&m>!jjsC=}k82EL-lfpz(!C^B< zafYV&=q=jUVJ2Z4*~D}~LF29r=tJocr^8IoWqh38FLapR%7o65J?{#H0OL~#J!-Gm zAJ~uTiN1gTPUrV`o0K(6C+~#GleBQpw&Z;S;d9a7j@@`PUCH_zVY_9(5?X{NC4O6f&H=v_3%S=`P zupLB`wBg;{X^B1cs3t*E+R&ybF1jg@d~npj6azZ9PsD?Uy#bCwFmbpgXz$}R)u0HXEz8p)4b)>lPL@?&zc*&AU&iR3<6d0m=%#TdlB!&u9UJi)G7-%*us z|GjHp0np=A6->yJnVM&7N6@xjtgiwvgQKHv%3ssg$ok7D{kDT(#nDid4} z<#Y4cU+?#xL2eb^sJLR2x1?(uLa}1d_YL$Vc#3Jpifiq)I6m7#CW>NI!)wPpMLT7* zm8TOFk(S}FW-Le}Mk|DJ6hV8_oVoT9kVDguFSIG0m?!>)?VO85Kd`|$8?6fh+|X_} z(QaE#ZhZD0kQbX=W6{x6`mOR#mHGV95g=KUB87C2)}uK?ZvI4C?t-qn1;DsZqQa&4 zYem61obJuXL3H-=>tof-K%NO~RnJ?w#_1i$p2OtQ1Lu&ZrU-UZ0|vcZsmcEb*gG6S zAwb3C_`SAmeSbEkA+>!&uyY6C*AyUt=5Q}29LilEih4~m2r*!)A{S2ze@F1*?QVd_ z(~EV8zJ!5nh!O3v+mvxs1nlXs&~y3y<@HQ2`vbjQ%g;AuFh=o<2`37glfgp9^5FjV z{TtnR)0i`FSv+v;w(6G7H*m4$EfELJzKxyLCuPK!R3~vSb4HzT4cX?KP)1>$t&akz z*YT#z_G}&**cIO})rmwVsibA1R7Z~c{k+$X6F2h3CEo~~E8|kloWu@O{AVv}>pIo& zC;ybrE2ngLiEvpIIA5gS>y@XX{C_Db9qu)x~U+ z0)ahCb*$G;&8+Dp^{cB79J03nn86~~1z?g#wW-|kF02l z6Q1kO+85D=CcD*rMwp+pe&!iLNWz268Faq zY8Ctj&@pS?hXH*o03CRlU^%qk34_i`#myoC&U0l$VcxRF7E7NnTXHPdH^4R=y4i9o zCT3vqBoLeXl-B34dXWeU`lw2|kChYxa6ksMfs-Owf~kz<%)okj$X`_0c(tu(LE+&i zg3oF`QpYlYn7*H!wPe}Fo-fcCCN4sIw}5m_!9lQ-yj0VeY8nCg5bfRrj>+7p|Es8iG8SyfhiP=(DXw0@8`4MnP(M=?I8&rSUEmICNlX&>t_QAqJ?QYHF z-9kA)h0q7$8AF=KjiPAx=ocFD8h{xa2f;)~fDL$cD!(X!} z8*{nx0ujL36a-c%27u@a+)x7mn`^+-L7e4N%{Xcg^3u6L>1$}c$WenwyRALDR%LxQ zBh%4*_c;UYZI>~>hcZK`WSjg~J_?bd;DXt@1=gUGFERRE55h~-H! zuf`mZfz67*y?{l*EJB7E=yK&!#?$lhOwapwVh-$9z|<&9fExk6u%RUr4!k*x8B=DS zCoHkq=0SFwb2@D0cI?b&d2qXzblHdLebK08<=(s5-_De)(qfZ*WS3e>%epG1Rk#_*eF=6s1cm0QnPRghP z!n&-oh-n5eBWIwsi&Yj@CNSr2=Sap{E|p#N&3QvrXsRSn z?iLOcI+vlkz6-2iZeLgF91Fi}3JluW-N4yh?Aq(~_01Vf6xZh_9iR^Y8u!E2*^eB7 zYQ4QS90YR%)F%gy@p5`;f{?qz`%Ndkf4a9OY4qyd~8C z%AD(Gbw#Rm-Ou(bz`)W4Qw%q9a8H-R?^PigT+w3r!1m4X70u5_zziiKMly}A?s$B1 zAeB>A*Nmc!ZWlVFy|z>0Ab-i0VZC9n$)z>3;7?vO5w}R0B=8Erp?91*{@oQ^t&}>z z&y zYKsFPcO|!aaqvLldw;Zb^l;0{GX_Uot6wkeN;0+Z)m`Drow0Qv^B8_?UKq=ly{?-f zlw(dG-x3d98mp6ROxt<_VPjzJ57pN*B5@8j(A)M%I;lq`#G=-S#}nHa$CubQ`o0LN zeG!WLBAm7sm5@UfsrGtTa64-N3PuJJ2bAqwGl{#%O;K96o5}n>FJj=lDd1^04FS*E zBrzzPEEDLg<-_J)0O8csi%w?qLN;-w^^;SDS-^me9vU2C*r+Y?`Ryi~(U|FSMj-2Q z<=q%bdF2xP;B~F$OO3RmoKOHZHv6l8V}O(F@~0-5s=G5x!byFNCaSiy4s3EZ4?mc6 zGxdXZ0XWV%*j*-PEF!C=5&4oTKDK!**|W}KlFo*@QPY53!dB`0Ah71eD*+L%+&687T||B z5~ZM28ThVC;gub2`diX^m|!by4C8&dSLMsVm83P3DbE(vVOeZn#Ur3_{Wr{=QIUwk zTv=XZOT9fbK|M^2f~Cfo10$*P7l2^$cU52?Y-P>-1&RyCioSo5cB3KMEGM_|CaVVu zd6jxzS}zltUR!8RMJ^;03a!ri;+?A)Yr`$J>r=tY@QS*XWH@Qhqht1ObhIR%Kg;j+n8X*OR zTSQl`=AI^xb$+Ryg}iTu`isoH_cL#fOsQ*+_#E;(fM|%yBu)M|J`wl^t1A&e$8@>Q zz(V7i+j3ig707YOlu?MRn*(#QY6l=kzmWO7JU3yvb})gLj736lZ&V9dDVbaiL?aSg zoq)XeJ#@VIHwJOlu)BK!cEVf;mMOkO8xgap!&U-JO)i8|fMKoK!K3EWjG{Jg$udKA zX&IsoBxudW+5qhDX(#l6T)o`&-Kn|o_cGGJ1mSH~U8%`<^J@664Szo>IGRTMwaIS8 zztsKc@5{|KeQrfDNRRi%PtI&C-bV?tIQ3_>WkYyf8D8wS zxd^HKloddax@@~xcQxBA$IUu!ZzQayqwP*iqAfyf|s!0;nqJ3(FTsczK_u7U+c ze-F>P;I`l@aXbo~b$eg)Dzac#zcP)oI2GlI%{SPE=yv3A@TG2V3PSG8qOj=?e=@B&kom>UCgm1#hB~sr)B=!7 zDun$Y%^=L)f1L5-)JIN#lmZQ~=_U-D<^`?nq53|><}kylY^5@yi!AkH)g{^>vVHUr z+Km4dWrx9*EUk{77yf%Rf3aFt1s<#bK0iOv*RS7%O@)H$^M&;f@X`$tk+TOSg4;<% zeH4=b$wyuBktL%AUQ%>SAb?6TcX0{?>+tZhVgAc?EVtdimBLCM$0hH&bRWSL05oZh zRNw;8AD&gvK>~zO2K7HaR@T@uBxx<}hA)kbTfHtslMZ<%06vr{ZfJykYGuZ2|LUg3 ziZ8ked=(Ny!5r3p?eDesrV9M)2G%t%8Le;b$e51inhzTpVM+ldh35-4$>1>C40;*7 z^%eXz!Iw(LSJ zxp&@rL&&k^`vGBgM~_Q$u7KMFi;f$slm?)t@SxRee5NnRN+}vJ4G`+DK)KpXHd*+i z@-;VseMn&fq^4c^MB}6zK{T0NlVZA=YNmqqrSQ0+KZF9KUQ3H*fn1Ax^{CF_!5*%xY2) zx{urF8+a5UViRLd%6bhZ;45jHE5no&AS5u~gb9IfWC4FuR)Uwsf~zlOTQu$HRiPOa zVGtmIf&&)wEP_eEBO4|Sg*^>}`w&DIjgv0ozhX%@83WyDavARiV@biLvfhRXkZ%~U zDKiLQymuHCu)(JCZp;+wog!#KxwEqMi|xXn`CbFiveH++ZztZE%BFJ#?CmEy?)P-s zA1U9t-WPf=_5W7h^R@IVo@ld!EA#Pcz#l%v>ybh~icD}nlKUgDL#g^6_GNE^T%=ZM zjg=aJUtA`aiP#j-aSHWh^(#t}O?a~Tive8R7n9`(e#S`&w zzx^f*v@04ARwj@f9HN|&G_bLy%r`)x_EVUv)EU%(7gZLFBkZxV9Q$hnlF`rNIC0h; zvs(p;z1#)Z=anzuk67mb!0|mEI3iQy!6I&A?CV5<*dqg5Jsy}j4agcOuEXfStunZg zjI&8MQ{CIZ%4FCe=XW|Q-O2eFBq-ibbsS4y_B{lspEfN|(Jn>zaj2gM{16%ar1FgA z8_Z<*n3tBB*0cxlMWg5_$ia+^*TH)$181Wv~U$jj^nf zkfC3M{+5j}(P*SYQ)ez8LlwqVBXP57-ekm6$2`}%%jloV2*5Tuf?+5kV4XePP?xfy z_;z!XjR?A75`xWx(K|q*eP;IzL@80M z*R~sFMHs#c?gG2s7vJR37uXtS?0=Z4(Vc@z%r>1iL=&1cM)VVF|)1$!gI*ISh4oxEj>0XjTw!)x^ z52ToxKB4Tl=atX4E!WDvp0j51#>C+hP&lQS1~hq)W@}&9o-Hrv=c!JHd`W<4xiktQ zniW8Ez>2J_?RMggxFfxl36o7T7(DYco3WnTQ8(8CM61`0y0MR4o9k|W-`oTn*`X>x+@H7) zFas^#2XeKi1cRrWb<1RTRg;Z4W607j*HHoKY#;gk`>QVkV$@Ad4L|Bx=S_mHFAna|N6LO|@@3;7Zj4irXfe ziB8;v)z2BOJjFRZtBiy>0>Zs}KUgY&t~RJkRnVQStn!~_vQ@s(@d%+1%~-nP0o7eH7aO2za=vt31(D|U#Rx)kPgyn_h7^onp#(GCNm5U z$m>1T>x(}>X7RZ#78EHpGNEZj^k0)5&3lqE(_D8j&FF!*?7=bDb+RA9Rug*r`p9VC z#+$4pWixS}pot7VG`)Y-zk>wgiHfUC>_$a$S_dRd#J2IL>9`%}OSK^()P~gE6OIQE z6|TlKD{#y0&ufo9&Zi$}ovDJSm|Vn~QJ}cXxByCgLJK%@t&ZXVj@6a%{vUzoI)Eem zjDU-rJ@HW;3*MC`*LymktAFL@iQIl|zjPEpH+?=l=9+8hhY!q{w{?|u0iHD&KK7p| zG~-;w|1i`URb!w=MRK-$N-JovOL zgEh~_py@_5{%x>{V+?sXp-Ff2R|{4voNHb84hH$NovzQWo1ck?BqV#QXYpIPj@vZ znbmXvD^O~O*+#O9vz>s+W%0;(mD$mH7G{>+*zv}l<3_;x+z_f*HLLx=hYNaCR;i^d zq$&ejW_t2g^Onu6;1c#)AadepORba}^Ge+mX5(|7-Ma>-y&27GhEH6WoEG<{qFL0{ zJbph<7F@4m)-<_&xW4zB9X%hW(tmbzWM+ydj4U0HhF$4*%rFkTIjKw^`A-+SJN6mm9Tj z`#nL{VCfs)17iBoU0DS`V>NM*q)>(m&U45LfV|$1{NTM=yl1fTAfPN!VAW73@ORwi z1HjmUWzN0<7>W+g$}A^m0>Pwb8{?7L)bWsFw`stsgwv+#+g(hj0yxz9HHUn5z|Ye5 zd*j~}81Mjq`=bYt0JzPZLdp7J4sBk+F1&u^YYQ@~f|C8-Ilw^6LuT+@2gkZ{8qU}_OhUP}~xA>|Jm6_sBz7jbj*Ose2D+Q6>?=Lqq7(B@DX zyYh1tfD*!-8P=Tf8`U-I3DO|(k8Ixauz4`Gw^6`;glyjd> z+v=ELDZD#QflaM&|5;y0tQywA?f!rnU<-joQp7Q z1g2<0v^6tIG5@S1v()w`-drXCjh7Kq1&;XF?pdV75> z`8ui+KTusMBLmq6o(JG_ny487gPQkv>dwJWTK`9uNH8Fxd#w#?|joR{z!d!gjZHFyoW> zeRiOy46rWE-|r6n$z^n|;|3c!;U*FhLmfP)?949%_qVq<&yO&`ypm)#-LUP}I*W>x z4QR~$Ihzk-eV(SUagNiFCHfi-&yQ3U1}u;Fj4J-_8BZv=(G8o+6-?#^^8LMyGGb>| zp^HE!QE}<>p;=B3X;e3GwnxJ55$nG=`$WaY-N?<28HkvsAf5i*DcXKh1=6k{)%vL` z8P%gsob!727wH3wMK=9MD=x63#^yt$-4wa6%S?^mW^8I4#KxP##y}B962R-8?_RdJ zQs(V$X-C`V2%uS6go21r^Lz-aZ+jxphS4u{d?#cCd*oOyVB$3olL|?7iv>Xl!RS@t zvs5w$I)E&zyuQ0x4q`15VL2>?htU}m-WZn|iK@H^NWKAV@#apU>cDY-cNM7Nw@#Y` zqu@JJ8z!UujKDcX<~ii0cJ>tD8Aby^)~|wps3tAE^(I(7&;%Ko!2Mo1cx_YrP5Nt~ zxvy8S#);x10RdA}#9C|VF^yQ>hw^wjsLfQ%^Kjz_8%C{C;zqj))>kDT$D#WDBIEX{f#bf@3a{=G>vdi$E@!t%r7Dgp2~!OV&AVt;BCwKUWCxw4Oj70_xbas_$r!#s^iT-J z&N-c7=1|M!f?-AGE5i%97Gxp!Rq?HEtRiXssFRQ6lW7$?Er_dAR|@Zr+C>Xsr2hmD z4MZV$MGOay)Q6<2W?11#br$bgX!R1K;31|je|G^ksz(Rpv4SA5;J6lj^a8{!P{sn_ zbkYQ$OE$$lF3+c?%^DM#kd}m_Mt;3-WbX^eGwkJ|pg|!}8(izpOAF*3KsMON`Uwo|%P$1ZRVluz>^|6{(GNnDbP1DmhdHP1$u7i4>Vt?xKgtnOgK`HOr>`DIMy2+LS zX72;GCj~Ol=UsB81g0#N-R@EhbsEbJU)5D%&~^tf^)UBywLQLCbl&K70{}UCmYJKpV#y!gmeY-3~RF#I}RExkxzUdi9J^W)3UGMNEp@;W&sn|r_fM~+Cz#ABT z3sBbbfF~ootVgZOSiqW#N1lV~iww+@cLqD7U9zXyLTIZ5`_@)eb7y^(_k{*Lch5KV zz4mv5z5532>nAk|0WM|lxN-7Kq1FLf09?uZ`)YH*1Q!~O4E(GBhnLqGfH1rJR>16A z0XDxBF!`^q7y9+B0O$gq&({L1uj-R_HztoFCk!747$G&qFeeP=L_y&vzhhzmUCu27 zrE=4@Tw@onLzwhUw@SJbHX|_)7npa(3SB4x*sv0~| z*}1CpC$o_!U5%j?Al(gFU0$au?*}cvq&8p&e0Bh=li|=zmhp(L(7c~PLdx{Ac!DS9x3hli)M4 zvBD?3Z=`f{U>3ccxRT-hL;oETJ@o&!o;bfy_#f-j+cMWa?dDCP%AnwSU(IpM)bUcm zu8w1*=U~dp+cNeVSPHi6*txEOf$BKmJV{)H3GVCa>QGg*vjb*)hmYszI*`-gjk=Mo zjx2pN?}#Qe_&Y`|gjv(B%z-1X>fO(B&mx@*hjz%d7~D_Abn zqBZV%DKw3~EcNxN%LgVZ>dq7%ssjUmbj6P^r`6Eu0ko#rUa`J&U-`M-PgU07t^q#| zxq8Q-+*NY`%l<=tXp6K`XHY}xM4y7t2p}(bc~JXZ@(p=5;zg)m%K&_TztHz`zMtRA zpt}l)6hG>N3U9UxW=Hvxfk_5eB2V3cX`iPP?(rykeUF@V0IS8db=XDcIEe{-9*oOwx!+DbNTzr69dSjL>S$PSwoos z%Bh5GqThbcGSbOUtTuKPBNh1p6KP}N!Zp4yR<9szAUPwNJKexN0?_?36CE;yWSDt*& zm&3l4VMl*{InkdAaDF;&>FKa5!1gX169;yA!4V(dE_8o8OL=&6=3u-3=S58eW@AVt zgt;*#W8R9l6!oL6z!y=~b(ueFWBAT6Ef;L7`P!0VpDUoZJa;L7yx*>Lz3+?C!b(Kx z3!6kIW()`IlN|l>wk`M08#BFLpy0lomQv!<)@s{7yE{H?dSs&-v2o9Yh~(Y)(J|=5EhT4;M@6KSA%?jJo6cVu<-l&b9fB`G>iR>N%-PjaJH+ z8X#MP3L#I~%`os>jM7)b+*|l_84t7Y1n4W-=1}xuKG@s_F4REiUN4bhBb+4du-PYzVL-wIJgGoVuil zfT{ym9U_fm9vx$Vu%g=e8tuj2(<~W;q*Iq}pUuZc{QyOK_FLp9uQzn(;Gd}49QDAN zz_3t7XRbT|J;#ZrhvE_h(0->bNc%sKM@Q6|EdY&?8I zd*WLE2p()F5NE}?v*v6pZ~)M#mgc<=7YLJi>cD@B)rv?Cd2*`%OJP3oRZk=_2i{IyRZU!~i5XLbj`Mw?W z^He||`^01x@a=mRCUTt40?gPg-Za$yb?1$W9LRx90A^;J?{fY$J<-pn9sT@rEawxw z91rxV0CP4k*^2*Q-pnz<$pii4m-5v0h34B^`Fx|H0OoPK5w@Gpua_IWo^_Mtp`=wX zJ#Fr4)6Aj8^IVr-?~4UN5Z6^n!c_}vY~4h#Wl=uVj3bNh%^jPRh`?2b+nddR*&s^8 zBEGA6gX1+V0-(jc-^7f4qJ2s0SgM83zkb@&KmPQI{_*Ee^w*!Bi9Lw1N!;~PgzPyB zcwQ#mp!j~j(1kd_0ht}_C}ooH>6}$&*vvzTE@6+FpQLu^14o|Bbt9-a+!tmZjQFgZ zLX$>~R09?Z?vwP~IDo#;RW?mc8ZLff0Byj7l`zhC$>}ZY>cpp~U3un2w7Kz zXd`f_InGV~q!vPyLa=2B0X#esuG$=_^*A77rzm$%PtO)@?%qi`$hL=>+Lz-22vIKI z$eZi)0O8I|4p>$0&EU+<+O+Y_a%h`aKkz#p&z_OS#=+72Xx}ZAdi4TQf$m3sn%k9Y z3ab?=&xcS}6k{}xK9T*E6+tfx80NM{wZB%kemS%`-qADEbqtY)P@gMH3RAgkp!=a* z)*jXWa8>4DYK4t>a8u{3IyRkBV9SS*qT_z|iUC&e{ zw$>r1q0F+EvZ4U5Z^JGu7iAUj>fjmX8(^Iy$c<(q0MRflg1vlXpriZ7xRE!q-26A! zeSDVv#ZP4h*qMpUB)dpcazPZ}n1jeVG*h_nzW|~GU{PQP4Y5{XkZr-`9Yme&t|fZ3 zI_SQwL(Y%xj@b+UdVaG2mJ~jLCDX&3Tm`I}96E1bHyzk}$X!Hvd98FU2=}G50HW6z z=+&226y26RVA3^sT1yds$rWb@a1JFz?hYNEGE$BJx27uH+T2vRvQRNOg$`Tq3IAs6 zFsW-}TqC4upXR^9g;lc6Z{(9X1uqih8{)*H1_L(s_spC23UZp+mo3NDE~hM^^TxZR ztR=ImY{!~SLD-J$FFG5GOd8>kSm15M?)SjyZl?l>NI((e?pp!K!qzS~DXlU&3QlKp zys(|NCG8FUbRaoDosI&S^*oAey!~b|vkntri)`Z)_joU-E$zPSiV!=LN&H0b*G0UH zFoSu&urFegW%v|=Fo>`*PY-OWFsjkG0^}5!qWPxF|2D?4F;f5`nFoxuS}o`}};Qe<;erPrD6$*-b@hIMC0}d-`-7=w-O7xy)ia*9$n_ zrvg+8pk|=?%wc*Lsqpe{cGs809+~fF_k^SM7VZk8x$l#cxd7wK^_{k*!8pJVD+=ShRo8aqyz%M*hxaYzC=g8;{Bgi)Okg;f$!3#~Qdd{8 zSvRY2CpuaXCw^EK>kCWu*dXqax-hW&$Js&kpkpCDK4q9$X2 z11{Ghb5|vBWxnFBeaLqRO)%J%Y0fT_F#*>xqStsb=4f+Rslgj1Y`vK-@ckPLss!&7 z4&b7|4wHzBwh`{usy#DY4Wg2qSTV38a&NT2M(`+=ZJu-{zA}}l_2bbK5PgZpZBz@Gz)ZcKJsQL@nA;LHJlo8=wlYDN;rXh87gSj=?64FgqcV5^&B@FMmBuS(}w`@iQUuI>oWIDdabDbrW86r@{XYO z{FrVP6MkIQ(di)y##AUbxeI7lJhgHVT^Cku+fHVURx zBe}UumgRG10JCh^V1Lh>0=hT~A%ka`@Yy!D0I;Q;w>#Ui>SjQ8Nym(@ngsB71<*rQ zaF*1s98H@+SlHu^1F?((^mwy7FZD~fY>5zfQ&SP~H=P6&Gk9imhvRWer^Au{`DLPi z{xs2Pzw?tf4~lZa0%g(n38R#S(-jas+!tjhZ|4G{&zvZ21ihc>{(dfX#XFie@+^e6 zv%|u$VTrM>BnZ2|z$8H6h54h_{xnRZE1gp3ygU7_&v`qeO>8^!DD|4m);Q6pj!$Sv z001BWNklM+mDjt&Z- z3ovEy{8UaBmh+&|25-EP#@c6u?_rEL0s0#O&D@R~{uCgs<|XRWd(kL?BMBRSH{0fE z%cddhevZvwN_#FUu62gyiq%Lh=w^+|Op zS~o^jf58ey@lLAGJsgNY*a091adoL%fgYCUhfYDzcQD9BT1uCiNf^8fLvs zt*?k;m0N%u1E#=FaN~6&CGQ9hBFX025Iq;p5qu?#6%g?;oFDSNdSt2*BMq46xRM;( zI=61tVA~I-SR%J_d;kN;D#KK<24<)ylomDNh{~7Sy!W`v06PK>fvv?R%Em-yUT6&; z#d1Jlz;$V@TvueEhV4`r>OSxd@U*=V3Xm3u?N?< zH=1h1-|IUjSCFH^&EKy~v|QB=d*qGS8{Gp%i!$R=wYf=k17Xv#BCy7USiy{AYPmIB zrwDKZKyn!uE6ZNf2+G>2;u6D}nCO!G!A&*K5x{nvo5Pn>^9Ml)K@d7EKG4CEg%_{O zpD|-5s0^S-|7*~G>oRD4Zhe_VGq=V-dz}FA$A-vl+o-aXTh>1ziR2&_3Dh*Zyg-<@ z*{f-Io+<;}0@xf9!V)h94=sA=_hh*X?`i~k*pQJiIfM!z2>N>Jrlmmv)c`%OI_?X^yzpgz_5UVf)YP%_5z^)blB3Ljyw8!&kXdYw2=iSAvL$S8}q34+VlYK zx&74!TTM^qMWYPLW={hNd`{Cw&r(~=;qIlL%eyulikscZ-Gy=g{+j8vfZ3t+6*gfR zOFqZVu7KCMoD02`ezIk|`jH*>v-wD=S1$kgtyIgkwEc-r+l}?A2WGvVg~oQI17 z$x(owZmi`x!NdsfLsf$&XDOq5t)3}E2LNLwEbEZ#ST;ZeFyy8V84@x#@59_ClO&fT zSF-}7!Hi_Td@gAY0f4J7g7&#oBlgv${5p|DfC#w`z)Gacc_8eK zF<`RM7(jIWM|8jY_invspQ0AxU$zadb`!&CvEmn-BK5t{4VG?;7Q?EP2$7S+Bg z?;iq=vv;D;CbLy`tb*|<;C<7W8ToiH?;2jmRNDdXWhL-F+C&z?kFiqi;kRVzlGvCOpu0AHCX^i84)xFf?sge7P%Sjc`4pqWMHzzV!ve@{>r zt<}sMgW5)#pXIC`GZ>`g-BbqC!27TTJa2DV05Px4GmCj$?qrr~VqZF@$s*vf(7mfC z2b7xKofV*ZE$LoMer^TK%-0)B7x4vsCvMo$ygIpL?~l?D6>4MmSp|jnCDTbTA7r1Q(GE0vYCi^SvB(#U{X_ueF3$64$DpK(N9H_U^jVB$2~nA_H@6#m-8&< zBwXQ_^M%gk9Ht`J$1T0FcZ{NFZ5K5GxwDxEgI7+k^n>RDfdA{KFZAb^CrOth6#542 zlw2MUVhf%$)OS`^{$A2ycYWOI44w}>scd;-DN5VCh@y78vx_}mT4maq?eTYNlg~b< zcaylln~SFO%eOcB_1mkNW8B4_U;S3=d7IT+3ruOu2CI&HYBvv&0T%Z=4Ip81vl)i6SbWMpvvrID(}1SeX;3Dhk|dtL?1X zwz@xQtjLCG)$_wXsP7jC;6CBI_mXN_f;{pqvZ8d4d2QKRXZ-A%1BKk$-0vcos-Q|GJVJQSZcjZo3KZOyxw!&W+gm5&fHQ)k z7Ld9IILUKeDNay$MpyE@&OHCAzEj#r>!D6?wXE5IZfrlFf-^P!*6~kBAALUCR5lO- zw#1biRjj3lnZh9Zah6b@XzQ>U4|zcw0GtBo5@l~MsV6a?tD7?cpivLWl-9gp7Kh?F zt3UGqn$b?$_jPX9ji)zDPuXJt-;c*$>q#Rr$uXai$&USUO+j@Mt&Fw-rp1zV7jvu0T3sY46#8$?ZVrICUGi98mTNNQ3Xi>|yCF9q zItr6)EV*}HBDc<|ZvP(ZA$OG@zdO_H)ttPep!`}~{Y>V*1{;RdIe%P6fydqCrarZo zpr2OvSQNmsYO(-jRkPGAXeteWP8zg=1Bozr8GZAFy;n4U6;8T4UmeErZ3<}EH}Zz& zGT<3J?>5=pkg0*Iy71wp`+O^)g(DP>x}imEIm+yQJRInDKAT}eWW}cfhDL914y3{x z1;+x=b{yilJol*p>A^y#@J28`pPx_k@^qqInhVfe4Ct6rLP`BbXZ6^@W(C)Rl$mAz z{`w~8dDzo?ITx4}uv@;1vZV}`wmbGK%r?0bJr_`Uyw3E>o6{19pS_Do0Wa@!6|xWP z(I)B9K>K2DrJyJ$Yaf}IMzwtwK_{V^C$;xp)PE}jXl9d-MY&+F8vo_bU+DR`(93bA zr;;B&p9^SuW;2*lwp|GQ%S-x88qM7uy9^@%;?s>M<-2WAtN=PE3yuz#$OZWFLnAZJ zc@gG)Kd9|9n`^w33onN){q-+D$;!m#Jks?osZDx$?(%-2YXQw;`95rR^!@EZukUC2 z<@Fo=@||s;vnWRezEXkZMFBd{KYo6q|MCw%)0d}XxyJ2mj89M+C5ohYd{Je9S1@Lt z^lXLVz>1N0I#K5Jy(mQIYiaw5O-M%VZzY}6@hE+9TNIPcq2&Ks6uGOeEL<;Vdi{Q- zL#bP~w;pU%i~`=2nYGOWgz)FsVXtyN_?e~ZB}12emSA?|Q zs`(h$SKpjEA~IqG_Vp7R7Uxa@5fhIxo;gqz_bJ&BZnne=Rqr@LAeDE#y}!9x1o|F7 z7XhjKJtmV2T3$9+Vq0!LdEP+(#?c2flKODPvVz$N+5vi_OS>4X1%9ECCdRp!-QEWP z9itHTD?4$sA=x}SL9prO9|I)W+lT;{W0%52moW-#uwz|5g@1X;RB-7?O*Hvm|=3xB{XLg5psHr~bC8O+Gvx6@!`uU{6F#1CU1f zJy%JW{sFxmv|0vox7=5kQ21PGJNaWVqoG!fy>LL^P$7>3FriM+HmYG&^AGe3o4AtS zQa9weU3{o3t&2INufBC{+m_W4Jh@N^h++Z}dC8%U`D3w-P0rG2G(NFS7T0I9Y)oT2 z*1V~M$S08kGFY(jAlqy-sK+qRW>Sz{q!= zSOtXK*t~-SdK?NwIueW5SUdl5Y1gYu>Woq^Kfu%}c69sl<9 z^hEppjy4wciz6fs!%^~h)EI;`$^@l@euh?`)!*>>V#{hgF&BV*KbLgM=k4;9&ihga zBZK6v_+cK>PWs|*-U>Up-R%p=dX_q2&m6zL|0*`q_xYLLWYb}(XZAbGK!((}=Y6#I z@qgon_U!SR)18a*a7zN5Wb@%oUB_|DZ!a4CbYJReTb|t)Wd2m@?w?;?=%2oPq5sS_ z&YOEtDBkI%)X#CV&=UjPbSeuK;8`V0Fr zFN)vt?Hi332GB)$J8tFo*9-5GEp2=)tI~h2jOi?<7DV%g}m~ZL^jBgxl0(M$~qnNQ@axUwvN`;Iu zHjgTb3#Y^W)Oj^XHj*xj1p_L7Pg&Tnlr=si-?OlHl2R@OA*xL(_&ywDJ;r?<`pn9d|sEl8d{PSK20K+|pX&=lM^^)9u*DU4Q zin)q_Vjf=>fiMM7g{XI;o|*XsN8%KYRO(OVndE`gcXXP|GvYsbs-T27q6yk`26f(iA#66yq57f)925h#fP>b@vv&3 z@7fmGbe*pyosvESN^X}c_fPFV$ggg!)#p8`BHG3P-POELxcfDUDKLvU6|a)=+#!Z| zgL>!?pY+^E?<~g|xNf9Pxj#ys|e(KCir{5(XVB( z+s`NyktgZzVw$#TuAxsxX1WFf%B~1OR%_aeuRct^n)ipqL^^saIXei;s0j zia!KU_Hdv5zQ(Jb^@?C;I(*ET`q?7c%Ji#tFn+|}bW&`vB>Ic7f z$t=vuIjW8EfqgHR0n5weF9m449SguJbI5PsFZBAmMovoOjh^-gI_{6cQn7#E`~6S= zow7>|VxG%G81&PbH=zi0D$h+4^@{J=74W>336;w*ia7-sCkEBZR91$K-SEt5<9#Y> z{m|MOL|r!QN^a*&moN>?KyMCo-Ia-AyOiHXu@hvrc`y{f&mXsg0Onh+8#%T-F)X~< ztvbQq$%e>DLz43(RLa2^gMZ(NPiI@|E#=yzjpTh;?y`~Y^V6RG^5vO+{&bT1crF0( zspNmh{*njvuEBZA#{BVwc~5G}0(NIJZ)8V31J$KG$LX+A@|+a#58ES+$B}+}z0mOW zD@*mF{ESleL%HWP7G;T&OkNTtu=IuJ%`9O4kj?@u_Ux~_OdcHeoy(B-%=&6O$mX;% zvCc&i;eNt4=5zW?^G5p!w;x~sX}gznxZ_s#=aJn*`-vB50ZOG0Y?PT9v)WekWOOR$ zdqL1o<&%{IZeuJTO>%{r!#Jzy0b#I3}^*-O#nhA{s5g&R=`a1`0c#|fDr>r%m>$H+`JX-V*7gN$92Cs3fE#Apo|!o{YI4>krBq02SU7+qbWGqyanEep$X}8}VE;Wr^iR|KNPYO=sv=egBJ|Q~EZ? z8K1*5XlJnd@fqY7_1>2YZP7>QL?4TNq+x2i{u=vxG(X^Lu^n&^E4HX>&NGj3^wDS{ z#J}-%?z6EkM8Ju;Dz@VWrR*EAIb!>^?h z2sdEgm^(FR?5!HW?#uh+nJIk7W-~R5IBrYc*xcbzAVvXYe?C0Z*S9PE z`tmM9iw7vP$J-ZOVlUXu0Sbd@0nwA@X}Fe>?nVJ5TVoxRozSqN0!9a2-kV4RCqN)< zQe}T}+=E+-yvt(8%%E^$Kv)3Oekp){ITXNkaF;(a0bQBx8Vcw-s<2%~`u%pH-(SBg z&|>#?XJ#16{dWe57g{3FxL?J42CCLxh5_*t9fvEWQm&=6+xx60AM6YFpH5E#)}@Y0%EzL;d_HOWF(`kM$#Nrg z%NHcjdU z0@tER4cZFj;d^2vz6geqw+KLCy9;2-eKxv?cwA?)weyi|vPeMN^EpG8xO@WBASi&#GzeF7MQX%dCA*-Po;w z(oh%F@U#HS9Si;ABQUq=5AHXlmAd=>9^CvfH0)EtUoEJPDLuf*T(hnMBmk@CxgX@j z0Ava*^aI3g9<1Q>A-#~@4CE@&&ZwU8$+bv=YfN?nqSq9gMAcBby+fYM*%XE9Cj*Q! zOf~#8PZtAPBBE{Mlq(np>uj3?J)LS+qxV*|sMfQA(CBd^X)uGq*yPdbOF;Ah+pSu% zUf0ok?cJ_GYUpE$k&?2wtmD=8QyFmgB0xC`AOk*TOfebr;D#WX_IE;@1O~$lm?qyv zp9T1_jV;?A^Pz%?NTWO{`z#Yu`D6x@fuS(d<&Mp*27=&acLrwDZ4`5ceF00a!yAnf z{ja3E9R>8=_wwOtm%u*FPn*&u-sZCxVvflycE4Hz)u1OmU=sF73>`s_QAav7@x!mHiKyf z+_!0v4WYRJ;O(N|V8~kcya*~w+~N-IPVXrTFyA~E#U&r<`Zfqte>#;s6~$q`Y~_7y z5+Rez(?oxL`YcM$SkmP3aeecu!KswzFqiu`iz#PZPF+@4dquHODGJtAc6xI?AI$dh zF0K%Cf}1y6VbQrBwp;6S^J4jL89cU)Uc`s=pM{kjhF26a+E;1bWo_U+ll z2%h?DeLY3?7I}`KEBXh0cDGTm_tLyyu~!)3Pj8c`eU@&g_0D@7!`%M z$^dYOcL1FB%12+X4BElA!z>GFK+d9!{2dBr&&Z>nV|>Telvvjhv_}Od%J~RrBRk%& z!1QB0_SgQ1fI5!zxWW=wS&*Nol=NvuB^7NWZC2zu%RPCP$FmrnH;dj>X}ny)2#}1k zZ52U($bh1(*_qpQ(~KUcrT$W~=K#up;hH2q2G0U>Qf|`i%{EfVZwm?Ib=c1K+H!@P zo{x{Rv%);LDLs@vlrMt+{^+4>xE_7RMP=q8g+Ee2QvGZIJbnv;%>Xer_aSt91+U53 zXZNBJ-jTYrtN8|bx^-h=0MQh)hRvQfD2#2MjA>(Y4K-lO@;9E*aoz1wwsMhAc4Xk$ zlmhFJ>iA9TC-a6H$uX8;lLWFjZnnbW)=88n!z|1D>SsR7=Cox{Q07@FTJLpNmsc5h z#k@H)w96i-f_-5y0BR=X0?wHEyt6Q4zs4i8jV)uv=ZWoy1%xYe!C+FD3F4@Kqm-E$ z@hEIA?CxyR_TMJm;FQya-pt1Hi8<**1qG26icEljwrr*=R!%l;xzqPjhe<%%P!hfD zeQ3WhdPz>lr=-)~^Uf)FV__8_BL2P%`XEaBbtP|Z`%~8tx zt`hWS5qs7{RxdDw-jeir=F55PNO{d>a15R!z(k|{#S@2ZFdV35Vr2rSByB3+*(4_G z9t!?@lhum=@35c8(nm_2vT|@P0OC)jt@$2SzV_#Hsdtk5c-*k5P2MJYFX^*Av`pSb zc{&%UeVNrXNhZb1tGrhLypcwOw13@z6zxF8B#1q6h}mpq3FC4$Ko$2F|32!H>)H}- z57h7(S=BfJ%j(TIH9$17k$jy20hm&hfxn~9BN)fC=;slj^k)Rz09$eMR?oEc?z^J7 z2R{eqv1eannE`Zrg(TWpM_JM{vdCiu?EQVQK6-Y%FB|gOgKQ`!071R-fp}hq6Y+f$Id})cHC{kKR;=0V=mGgKV@f?nND=Jz_n^-*LUSAx3`&5X34-1oCUE z4gjLqY#KpuZ^ppC!A~{v)Nh{bO?+?wsK>Galq2mpwxi<3=_1@V6qU$a|2=&rDwDB4 zgQ$v1FUDm|H{Kh~tm5y|UY8`Y5&I>k!1cB4pr%d{jD5r%_v~EiZv^TMX*}2+uW1%| z9KQ*2t;tny9wFtB4BWv~VAulC9!#ecv(ba+%0lPd-~50kyUQsstN)S1a-2ROlXJKS z7gArfALk+a3C1e4;%yaS*)xXuFMU4)peLphDc*nXb;VTwar>KYce6x|U8~_hj2(8wq^Z)=L07*na zRPjN<(6wO>v~CU?-FT#Kd`2IAJo!8%n+FET`EB4LxjX#2S01e0z{eN zWKfwEG~vAy1Ja~I>%`9D7ZuJE-#BXMHwK(AjbJYm%q;HM{NY~Nm%5}~Ko{2?r?Xw? zJg8vhO)Q*eOz0D8QmPRxffu$t%|{U&h!_y`Tb%{OdietdsFQx zZzEkdJ35uJ?{*3xCJBZy`os|5wV2t>Se~24ySjx+>Q0LpWA!4#zEJNz9#P*@s-@ue zB?926n+c_zyU8@ZU!F~stsc!K);MS+%E)Z}g&jmsS5f}hMIW0Xaa+D!XW3ZEO4Fs} z_r0Y1G^&05!fke5=ym??%h$34|6YOD-Buj9ZSOQT3~QP%;)k3Mnb3#>4r$%vdGGU9 z2Po?t08?aqBf};AVY;i=5LSq8ZSVzsrz$VQMinnzA~0J6V|(-p1IifFLp|X-6b}Hx*v|2JnDd~#==Xd*GOV%8J#!ls0_2mQ zkKh#mIQH$nU0`yA6$Lzp@4bS9J{7?^HZr1a@UGq-+m-iDVeQ*D);oYb(g354_n^PW zd7)RJ;wn!MsBuQ~u;{f0#0@r1qpY!i#k8bvl=+QKI)sL>cTTonIRsIW$5xF|_^hU|J!J^+)C!U0%B4KIA3aWR+J~V$h>tJ}p59 zT`TX4>PhVck4*9kRDZ~K4kdKhn47Qd1O4UPo&C`(D=VBYzVWRvj~L8UW5lwWoub7t zeom&{;T7qzjvmXMY8Yq$XEN}N)4?%+&-LA-Z3b*g&~}*hZU8}$s5;?~PuSln)PuDt zJR0z%%**VP0Xw-*@}ueX>8;|3g0MxO(`!KP+ z@lH2U@KF-zGES))P@HKN)+@6`(dd(apRaODb8ATQKTT$vMAGqU+l<=`gF>WfeD ztXuY_Z3@VfjifB#d8yqdG@TT+?jyK}pW7=3pTRP>Dk}b z#j6Z=QId95Nxh8@d?NFSBQ6``9#N`oze8NEj(|@#@|Jo8I~SMl@i%}>{2R|lwi@q6 z-&qS^9GT~6`x@&`+RYf*oV1*37p+0)ny*Celt$qaNs6Q~Y_^r3ijpiR~z>$CB{u9k}VxNnq zG;vOeD)08}X`fFH$&PcqP*jlq5Z)%io<)O>TG{G;4H zeyeGB&*qQHA9>X5iU`aie3A^mTMcx-k-F+hkNL{sT8p0_A$!{|x_2}UVhnW32B66p zUoNQa#FhPSR`9I%N)lkAL)l@T0S4H6Df+7cX}GmZ2Hf#}TpK-ftuf=29xEQ12*rs? z4vJ1IeZWUaTGul-scwSX=GGQ-8Ky?tbs$86VPF%3Tgzl(659@#gxaMwq~9}BxX!h{ zDQz+v>kt{VaUN@s3(LbTSGIuV_4TR~6aU7h73>o_7qI)bs6ahz?lj-e96a0e9P=&$ zlmRU>v4>1gWE;{Z6{=fd=937o4THV$EH3rLGsVk+US3}0Z&3i~Tm)KOemgLT;`&SN zo(i=wCNb?mJurArD@<5qB-Vhac<&G;qTS6crXR90u-K->cB2nb1q?mw7t`;r|GmGh z9Y4B%jiJW%gH61r?VZlEn%}S;_)o6`y`F4y-K2`la@5UN*RNOlrGQNVsGC{MKfc}Q zzwK1nVt0eA{&f_93zck$PT?5#ZV|(A0ewxH4l_y4F_HN3iZp=UP zkggoRv82NuO9oLKM^o^)tZYC3Zh)7Smbj5Bg22g4lf-mpw{`CX?~A@G4^z_)y&Yu) zw9)JYiYkC<4>BVw2c{ap6#yx2cIw$aKB5hG+yEJEqtV`xVHPEXT`ZctHp+tEqqhct zjkxUI%a#agBm2qa;S&rg`dkDyNEb>5@``$ltada#h+{P}pOG0w{?_DdWHxbMR76mA zlsDD`>MXVa`V-z8fm#IVktL4#iRnSE@%6Y0f;4)THm)eFDHZYl2!7)=08HGA`i4RQ zB>`;}l@h!MX=0wh7(gDdCnD~DiDpzi+q_oRzE9(1S%H2N_e4ZRF1`c(#UpsKyt?lk z6AlzGRq(8AVa)X3nK!45=;J!Wd%C0_UlD#q`NFRcuc#QdO-~!5>tLzYTdW5U zar$8ayZ471Q?mEBxztzar-0|ACKE8%fJ1lb#LgfmSB_#IlWRG=HC20PVHE*H%olcL zz11aM8agK2qdTRC260T>^;L)R_FIk>miznK>irR*sYOZ;=bB*0z4195b)#B+2Et%X zfX2U7pbrh>v6deZM7gph%k@m}S)A3$(*CaebzK+~T?D*7o2@ekkpKfT29t_tLnyBM z*g@aGHrBWDc__kaBa!z$4O`jVmlAs_IhqHKt+=t1$#~TIIVKGWu3j;8WkZ%`J}*Q&yy~j{p{$yfX+V^@Or*$y4G|nYlG^iLylYu?JfKAOK7NWPN+} zU;^nymL0$p`HbHqfQZjU1uMEYi;R2kAtRbZMBoDtAGin1Zg0OE>nPgB_GJZl!zN7} z(OXK-UPs1pP1Z$_hB`qV^_w%JY^)*ETX5EU-4L?FSl(zV65FBgBXLy&bqW)asJO%x zh}bt`+e8KzY4&Z^D|9_*?aLqgWPHA_JERXV>+V@YpTe`q7xKBLH1>01>_4$D^ol}c zyw^4{Hyd`U7+}!o?Q5j}~I{~lwJ5snOf4qfF^V7jc zq~Eciz3Z{ufx9jT9aO8#qeJcvq=pjy@M~Lu=-I+A+5027&)x6s3sUo2t$Ivu^ zc^>di()O|HH75p9F)w9n~K>Fp^HDS~M7qdHMpiBi2?Vs4LcPA_Zd*irnINg)nb62XG z@;HfoH3JY%N0^AgHn~{-**t?+$)3wIPX)9bHwW>}%mAIi&F3fGl*WLDKSdadU+F9X zI>b-3v4b#whytIjw4==|erFqT*w@B-|D)qa?DUV0wTbQ{K=gm}=<|+Ak5?&p1w`7& zdg4Yl502t1I|8n>UFh?UBW4~YyfGgPq`$HkluvBV^F-g?3o!bXr=Q=XT{%*vn0s7# z>Ea+O4&w;(m78vOWWd8Nxn>SVbk&gbqj?9(${4e+^`C;N0-wB3;B9#mdug<0XQD-Y(ab z(Ezqk?>GQBVtd3s{UhbNU%rp_p1qj|-;3Xnr)UBY?Uwn7)7r+c#idld!l&^Kx|YX`g)8eGf;YZ6C12v^s)_o8~3BWppZrH zJZo|f`Hf0K51RXa5ZfU3f!I!HAD9xw=fRLiP|pFPwsVnTyh)qW;W>PVAAkP+$2u7KxS%cktvTzj#r~0-TJP@c z60GcOr{JKT_)~yw1x7j4O#SQyMg`I2FyGGpc5k@UT#sN;Im0is_@S{(R?+mrox z|K+-+zrD`%{W8jpMI* z5hYOEA!dnGBfopZ$4(If2*LNrBuYJv;{zChg2`zCSRfxU@Jj3t5h(U{w>?7%@DODX zAJLqk2T%au0OPoS4Z!zIB!7qJ5-j2K@9;JHCxx2+oC|1D3Dtn1P!~K}c8xZ~Bk^Q~?E!SMeNx#o;&2?J& z`^U%M#VS$6OS!4SkAT_-)!ZD?sKd}+(;w=m*I^EBn%7yxN3GlP+u`RvUn%7-!!3$d z5UcjZ7!VFJ9IsU%t7+Obq?W1MaN4}0o&z;e2*nlMkPJjea}N7^sAeEY!&zkm?CIfc z>v?Dj?B71Pf2H5_gFI@?Y8w6sv}6J^Zv}iP^W08|ecxX@{I}2sKLUC&P2`omKwu)^ zNQBHY%Vad}=)Sv)*~NG}(e>?}-b-S}4%pO}WY6PTo%3@NW%2`tBeq{Z*{p$K z)Cnsmy~4srWU1ELC4wrvYi(@)zdBa)Ou2EH#|ON)z{Z#lOqdL$c_St(HN1f{AGh@R zl*FXsHK_-We_DPP*LQ#8aLMNv*^tQBrEW{VVZ}z=zHxNJ125HY3+NifEa?56BV}?# z$R`?$qV<=bUg)1b{Y?M-)7H%e&UanL{pIV4{>N|M>Hquh|AT%nfPH3r%vsy$x?P;X z9%S?BR)90R4HWM$8&(b(K#{nb{LbUF06)oN>C5b<@G`53THMHlI*M+}_~`pZ+^Y)-H0vj9=u=jaEdE-XAXi9)U@(H<{#_BcMxY++tOvQ# zW;!z3C}Xcw#eDYtr8gakcEWw$d#^81cE!!4QL)3lu|6Y^?oFLy9#Ibf#=SXG?=2?w z%icaZdc2A6v$R(`wR?SMyu*xt{9U#9A*u6#MaR1z~-*^GYpRp>vnbR^dn$Ad}bNV_tF# zfTeL0Ro8#GDfPKtZ?|e}(t)`6V$Vu;Hd#QaG0t#Vr`G~FCS!rv=#%pV3e zrfJ^uLwfz;W;Pu-)Me+#(8su^zb5&iN2fZy2lz5uhd_I|iObF?^TF{k^1R zcECkDxMlV*GB@=YH}YY_BPM@L_+ZugrEM&CM^MEFzOS*89|3CQrB~Xc4K(t_-&tAd zO&tI%_!_(zfJKaXihX5m{IIeNK#KPOc*gw2_u`qjSq28s6ExrHt%l8bgy_WUv(~GpumV(K8`0N0QfvzU?4xB!)s^QZ+ zK$9b+S?zpt_~GI220(xC_v+k~AHS{%EaWBpZAExUDL2p5qhUBhxy0?;LpE}KkKy6e zCDgcQb7f}bMzXvxUajfaDj0Ak|uRTKy@&3^LY zbVQgf)scL>C))e=6EYuBpgB81)pidPXJi%FH*$W@vK-Im8@y5Mm#^>Qjp1v_2ZN#C zEkDQOk^Xx6B!GuEm9Z@~vx&_33DbPgB|#0HI*Lzc5xS-{sE_4V8E{rK@B+BMFKf@r z2wU2B2;h7QEp$ zdfR}p;&jpPuDRNJp2b^+dh3urHtamiGM|{Z894vx^NF6Hp9M6t;&lqXqL~?HR+~@u z^6}d_34s3Pt9l3_1JL}QfBF4iJklJe%O@*#u!p?N$z5}a|LX$Q__?=h7U0h=_fXFW zpUls3I*}cWQAjbCkY51Qr>7_PdI2*AER`dmM+CDBAo;+1qw6pRcQ~T`FaHjpj`u`Y zZ;=rO@a@4qA7C+IY7$+-MKIo{2>{u6h?3t!>hwv1kwj6j!a~< zb49(NJpj~u?^~-$CH7mE*A@XoZGc{RN?>HLv=27LqoC`9A-T-_yz+?cCXF z9?0?syrbQNhUwo@|BfIqf@grzKF`hl_5f57&o97h&TYC)Hdk_DR^PjPGKfBK&=YfI#>?uPv`8dLc@Jrj7d{-&yx6-W8v|4Of* zJp)Mw(j)h?o7l*IeJPXf=94l(6G9YE^pa+AeYcZ*gmA>=^Eed1%Hhgy?66q2AYBK3!8~7U+A}uvY6Zl)qG<^$4wGb6)qKf@4yz+k5(oyc6z&JJVW96xZ@u{ z0Kf+T8(=2-4dw$AyRQ7){JlsQfCby|O??Nt`Sww~u&-V7T z@I{Pg_~5d$jQIBLTjNy&^%EK1=psnAWuCDjJAkv6w`?95%UrOYBbA<;2vNSQ&rBNI;{~C#qG0hK5 zI4U}Gs09!$h^+#ml^j$g(Sg|9-4?IqII%Z>2a}FCdE}6450+QHSG(YkA?LqqY69Df zYy@RPvz@|y9pxOd+d$eB>L**`P1)KEq}2b={$0~wFL#@k-qV^xI5cik0YFYs^N3|^ zR}kzC4?SmHc@s@c?i~$0D}Y9D7JaR<)AdOO{?#wGU&}R*$w7PY$ng=5{#b2%$aVcp z)bv06_6OicLI=}Cy#U6uJzLpN$js>JvyTzOK04L}eh&!vU{4jitnN$?v$pK!i(0Q1 z0+7WEhfZRL`@y2VZDl7j1nkSO@ePE$EVdJ%G>N}wEG?@4WVJ^XA!*=wtvqWCabKQ~ z>i?s%|3|>;e-!Ng(Q3v2?&G6(^!+22N%|_KAQy52szre#HEp}+N!%4q0m!LGk6F{; zjmNxEv9$FpraB`nW$yp9aKBbJd0(jXp@a7E!&Kc{aX(?4fW9g3H<>x|hQfvOT|m-> z``$)2rV0?)sENS$v!-$Qex|R#474lxIxyJ!pS@k%mfI*01SDT(HYX4J|6iG$-O1RJ zSh}I0Xd#a$*@P2kY$0(MR2NOR7pE6jwZsv``p3G_2RlQhO$_UYvI(m#!5);td&%~8 z0a5`9nB@Z#&43!eSrq{Ju*C>mV_jwje;g-)Sv=Ge>>@jM0h0`dmUpsPpBZDvf*<)V zOe&t&F;!S%0AUCj0Iy)2ahMNGKMNoXXu)){w>efxz?d1a#8#b!*<1!-ux`R25Ajwn z*aCA_Q^5UbKfVXgV2oKOG$3sa&ud6H9wTgN&j{Lx_~}cCqsab0y?~N zY&qj#s&y5n)ydYiYxTblY7yRIw)FwqZE}qE?l^e%iFM5HzC3X+UBTfuZJz=x0e`M>!9L+Q3i01U68yhkVkgD#dr4+m0tU=JW>V4XF>ze9)sY+G5iP^S+G3P zZDVi)=6M8|KLTL(8GKha;;~HH;auw|-sNJM+-?a5onp^Ks_k4o47j+LNw)J}%EWta z;AzS>n`gJ`!NltX+nVqe=@d|-E%bS_TfvMd#~iUgpJ{_%4gWWI9Lrk|KfIr`qRs*~!p7WVh=vit2>8nQyG$rS!Q7X#f=Bid^ObnHOXpUW&c( ziztL8;QlHu?Wdsb-c=5B)d6M?nHgjdz~dM17Mp-$aAiROp5c6PjqgSI;Q5W!9+>4DvB^+* zuzkv^9wVXO0)4QjBaeP;jRS3L58W}a!?QZJjKdP{69#NtF9g<4wz|@`pDhSPu#7wB zX9Wrb7JM)cAmA{I&idm3zTCGAlDUi)z_RrX%O{GhasU7a^+`lQRFqqg36-Bwd*OYA zx(WJ;Ju2EfSe1kYbq2ZIZjajEj`@$~QGT!Ncgwcd_f6j0lI9#u;yo0F3W6t4N&uUI zhabZ;fMEuAcK(g@r2}VtFMv#pB`-RJrwE!EKi?-x_2KUTc(IFnZgJY*6%QjB!!~$` zlbq#|4*&B)?%l^QtjjIu;0cI!v7Rxli)7-gvAVt<%nP9%&~x7CnwRW6S2DV)wv)}- zmA}5&V0Hk|=xkCm@%cLBRN1o6AMe=0Mkw`AuwMXgt?ocTh>_ZTpf1vyDVirg7!78O z^;Tr^Slu)2CJzF?c!3qPlCG$oT^AlZce0Zy$;=b z>XnmgC$g^zRQxzC?tBaGF0Qo`2vToA_~*%c8Jj1pc>0zUFV zG*R8Cy4Z4HNWl4ac8hpO6ssb0&_jj_($WMZrqIQH_2SwXWu}m=Y#<&$QNSneW5yU| z$FuglfduGd^L@}4wQa#V$Q%!F0wBXC#`u64v!bj+3jodFpWh$UgVhK)o`E3itwOL6 zcA9mHtq?LI6;L;%Wtn*fji?9G2Vk}O%M1efU4)>+)9C#`A z#}Sy>x8Iq?X7-g?X4DI5bAR&A1ImSR@HpYJa35oQf*oc%)m4xt)fd)NJ`(C6$g$AD z{bs>0w}U;P$$_7>>9Ft$;jPvCF`B-$)yluJ@IR!}2{27Hk3hGf3~9kC>AAp6%(%AOi^l#Aa;E z>W6o=jEP;&;5pX6**ZqZpcPwwQncdLFGg2ccHX6Mb?|l>RrWfkQ|#=sz1ot%Zo9C;)()iEE7j(ssDcoaU%AU*3N@;)So6B{37?RT+2^JP0+G|#@VZntD_%XQVvChH=TZ=)QRoTE_7HnAk3F%p8 z+3qkvwZis?4Wo9#{dOF28qm>(F0`sDttoz)EPy@+i=%6g7`g!lMad2le6&b-bpfpm zD8tX#;8*N`^WO1^2iDso|MpBNM_(^bnEbem!J|lYGU6Wt%cJxpD66%FuAlfL;9RV4$N^;nn*CoHAJrTjtgxhy+H8((k=5v8jU$%4 zFZZ;7&#`!wI}PiM0Jd0xnQNW@EO@qU^vw02N$XL&{!E&G5>P)10LY#COsOm4>i05N zU@T02(*t?1$*nrl(^~=CCwp)amoTs{Q}$_baV{_0mz&}0_dt2 z-Nvzi(447^+#oX} z$mZq{r);V4JK0)NEW9is0RlSy@siYx{Vi=cUH-~DmP^#%QFb+CjHY)8yCck|b9r=5A(bSwy_zO`|ECH#@~%i( zMRichCHY9l!;(^7AM*H-UpSMYW1q~wq7Njnki?dOSO^d+K3~JvRL86H>AjFc7yki} W3I!Ud)b~XI0000=@e81q&tQhxD-q-&_5q#LDMy5ZwJ zz908K_V2y#wXU_!b?q-|s&9$#>F@yn0MYw*Z!`b^4A}EN6&L$?ZK%%l1)vcuyniFB z<&CzHftA28M%GtO{LRqscq}#_1bLMY3MhP2;hzA4K-}M$!2}p?ZLGPbTb$iKjzI!U zd`5UvqJ4eKy!_W69jl)X2b=oqnzn@L$;_7jk@J38SIaOvaw1F3_`CbM(URoJx5qJL z{jK!v1o<7m??jBCv-_5z;Q=nu{l+V4FeATr7r}u6%5UW?yWg|%KUOczK~|EMc2#<^ zFwxIMz4VvdjWgPn;1_%QQ;vs+-|T)YwU{yQ%VJkU;_Ow%pE`nopFM9nZ3di&gS*&X zCcR%2RPpohpv1w!Ib2yWX+a<+vqjxs2A*ZE)*pM%iYFY@&ugiEjkIw%TFRJT`8MyA zLBr#zj3wMF&ManCawh3`y~vr#`Gk~kf7sug^paR(lz_*jmdYKPEl>y0y9@sREq^d!urM7 zzVyH0!cnj_=XGOGrYHMBZ@Hm>9q4y1rVkP4pIOd1ruu)uqS_*QI(lC<794X6Caqf# z+=m%*{)Lrea|X)z)hf_Cgt0Uo%y`fB@~|KNXq-Yj98g$D)*W%r9W)JjI-RmW1qAH% zTd9y6=Ny{_4eYlQ28kaY|H)4JvXpt7D|9>K(Yu$UFc~sY|LlWJvw75cw>V> z@V|cleU$U8tim4I&KFTYExMz7kMV{YD9K)tvCQZHr^c(%|{Em#?CA)Kh_D!eV#9+zwB8ozT0!r{yEe z(?rLL+OH>1!JZr1Na1K78DTMfqgY5nB$^REY(TSs5XNCcqLAxN9tR1yM4;vaL58Z$ z;+vz%;6cv$;y8S7v^mTHj(7&9U2;e1JXUl|bZ2;i2!XRl_d;=3THwxzAM+&o&*0ev zt#+HKALBs*W}~JUeC7UYXM6z3PqhTzGXowsMdGO=$T~!ITQ%jJVDTe`UuQ)qdNe@% zUlXe#06`>fyMzU@;GpMD{34k_gPKc?O9ce6aO8gvUewNy|&ycGloU zd#W$@MT8+His=_EYDs)2l(&GNM#SQ7M4DQg(TUUd)8czQTq91Gfyxf4EG z?R>K!MeY<*O^%UB4M1?F^>#|3HRpdqcm2lL+v1%2WN7Zy{ZC`+{i;lk`PA29yro1o z5Cx0-OJ!uv*x!!}G*Szq`qQId8N>onjCB0_a+~E(r=s6udbJIMYjck0Ie+h?i zQ#k2Q4qHKAZ$C6&@lS1bwyIXl-aq*zV{Ti6lYSRT5XUAp;4Ug*QB``l z6v!R5trCCRhYbe@%i1fqZxe0-9o)f|EiE@@GebI|=`A=ylpk-abT#sI{{pW_j{aWPjd#&IWmYK0O^Rn+Cpt7v1kEn6JA zFclWXSGEJ955e4Zz~jJeK~VtC&mZ0CA%XU}YxNYwa^CX%ry>cI_afq99};o8c-x>Cdz>yYSVoceRvxpm*Gbv zeIm}fpEx;PMppi$R^Vptg`R8cPRxM;A35M{^(R3|d25Eub6k{bbg*CS3tS~PqEtBP z+{@|qwSr?EvFd4mYdJ6UpO&M7ST`rrpHzodMlfI>ecq4HT4Nl4NRz1{2iJ~?qdQd2o1VzpH@mT%y4uzr>d0rqRsO3gWg5lKt zO<3yD7s-IFy|Vh$mf<{Y2gSdB7aDX|?bV}gub8W##WIwkgd=|Ad9w)wj#8aBS2KPJ zW7;n|366U3r*yhvx6ehrKkAJ=bVC*FyNocMF<~<>(w+<2eh8dv1`TO2DMtfDDY78{ z!~`Q!Qc|#CDq#AM`R|`r^qqd~79S<)`Um3W$(|C`8-jF~Tti=@w`ePM(FLo(4YeHX z&gNHeD%#%U$$pyq#qu~PbuWQ|2&h!UEeO%6ZO^oRd1KYwwsX*hA&=dQAugjsdNe@a zyT~9+xecHHw1dOYhYE1xrJNCAj1=(28gIY{xLe6ks=ahWoz_}(mH&)YT^cKtnhkn9 zXon^+$BP{Hq?1^-Yox-K)f9PMg_Dx3g{}X@_V>KLIU_>BupD8+s3>jP$v_N9^cx*O zQnL*8o1lpyR{FFcur-^MY^~cpC2Tn*G+ho(iRX%$2u`+oG196xymZ^} z2-u_Rer1zaPRnCCLEqm+0XUY#UzxO7elcO*yjV$GrGLYv4cOVq23MV;Nd7`NuL0(o z+%Op7`t*Tg2+X}ba~WbV{CeDpgA@a}pc)Tk@)g49l*#V$Lr3CH$z;AOPUu8slectM zd+W&2%zmhz&f@^|@qoRtg17p_toCXA1_$w6RnPXh<|hh>_ud56bmu2TfDCX=Nd)k9 zqEAx}4YnI;w`*i1aH2@!kspff9gD{$9b&2fsG8KUIZ5nY@r09|6*QX^lgb;($mvpB zaZ#R%Xi?-$%K9cHDm)O=Bw2E40Lte!O?#DB|z@QTMqd*Z*3Q z<|yU$Cp-IeFDk*H?@1PodwDXT$VO{`oA}$O=0+gRLdSVPFodW{2SAXhND1k{tce7p zLEZ(QHFCnpO7B7pgt@a~+a&@3ur5=DI}S-1U=L6oCe>>4bjC>lyDI;8y4>*ayEs;x z6tc4i^ss%84J)v(#4f#26P^;4_E2{pq3i`YV;!m@#nBtwe0YU6z)wz$Ehm&%2;H>g zzTyg~@CWH@FVd%vCv~q6mRYx$0fhw=gs{URgH9e|<2Ta5+{W}F+HOY_Vd+xVm;oGm z^yR+aao(sEf^_dNWgdlmp8zQQu$1MN+~qBLhP*gYJfAm}tkHn?*ob^bZB&Kgb$%$2 zK2WfsqJh4U3LbYJEF^|o)fdQXA4M+UyQ(>WL_g{E5Ph29Ll!ncjsit-coZT>1U(n}fbgJ-MN7rP;iXC=YHXPqC( z+M$e|4zPdpvr)y^_*!((Q8a&FNl2!uxW8qE%YAsogNd)Wn|xm-5SKP`RRrBPslEFBLv1iYTfpfD`z6 zC+dnNrz@Ah1G6y-N27m89LSWE6&Kufs*c3YHDe~<_a0;*2ks$0-=+GAOpwBY-?*m9 z?lz!v$g}oUG+Abfe)}z*s!4=07@Z5MT(92KSXm7w#0NsT0g&B0p#_UFE2+fyl|#T= zdmZuMnJoj8h0MMC)tTC>ECc9ejq@9|CJSBd^Ky>HVYjpKQ>!P5hMrCb&>&RDJq!Rt zrvt+W#Uisuv}rC_UppWVHSvI*Kl~VK?+|2#^wiZLRI<=w2ji0C_4cnsPxNeP}WjKW^W6XJelI zCos40J%`2oV*cZQzp7n)b)dn7@}#)ReFr6n8AKSEZUQx-K4*bR=10Iu-0Ici3PTa*gfRd@thqtN+Rqak*4>b+d@I&gxU#n= z;^a3|&*eO_rgkR~Y2yEVwELS}OBPq2r8Pi4XLG4>A_J;|n81TxB0 z0=&c(MYy8?an?k~BUEW(@nI<_mkMBD-_f?R{yK`Y?QRNyhr_ zs?n6o4Nc?T&4tV7D3}pAej0@mjHhnUfvAz+aA0)p17*OFx$!+6P#VAr9absGK_A!P zq8L1{OS0neIaZ1%d1Arg5?ofK{KY&{NULcdXN|lRCJBo1|MH=j1;p>LUTNYK;5(?l zGBxP0s5+g#d0%(UUcynTznp&4Z-?%UhN{6!?fy+qDxJv)sM$#K z{kI+X%7(pM4x8X%gbGq>mWg~#WD|>$R@Rp1u&8A~JPt)u$8wc;4@gEfB0#%kUxv!s^B^#ujYdB7K0QqfPC2K{~G*qgiS?GV< ztiC@&5n~`yp0nl6jZbiTI0$)pY!aVt!W=GOE`e_vOY-sM4qh$^mu|V>Dxtf)W)1*a zxom6bj-qTYJ?1q3Ii{u!K?5JXik)baNFm&Ra8Urtg~?Haw?g$bhYVWcM4{NaNZ}Pg zr54EE2exeG-oy~wuFm%-CaxskRV6Q0q2N)^g}h0Th~&km8!RkD>(}IQrbi=8bPd{d zSSoNbFdjI+8TP_To;E?AK^q+AX!t6##vuoxv4vsSh8U{Y3SR6+D0H#*?^X%X>mXJ#;bkMTQZ;VgEg*UyMMdp7F zT8{&c2|(OrZ}4b$8FF7m{E4m=&;k6X`p(?D4FJE4n&Ok{y-{OtHgfvRKI2={$3+`f zUS^4IGQm3j<<{X}h*TAtKWB2@81y+C+sPC4(xTQn=Vn0g26T{oyZ#7-TWGA}Ztu_H z5ehtkE7DuBW5h(;iIY|{%Exe>L25)4hU1<&nI=+M;tJ*7gnzvVm}l9{ z3gL0j>59!$WqG}X!xDI zqkK;LC%Zzb^A{tbEU`MA4iU!bAE;;sO9|khkh)CH(z7^r(h1P9;Mu$c<%-;LMZZShIV9h$k$G{ zDCcN1medq=4qE>yXrsn2?ZSl=v6*$)(ZM<>`~`hOV=S4-9CW$EQNOz~4FL^hUVZr0JB8BhJKo7T4#6KslGDB-1z?J!_z;Y$^ z-K%TYPf6(2L=RBoirIm%U3~r0hN}2w;lJB){Fh_2@*HfkuVhdyCHI#eSSF?(H|=i^ zKAjG{XyCEi_fR=pn49qzSfc`Rz}on(SY;UiET~qH6WUl3AKymb4o=<%Zt=x*JBIfoGBckY~= z>=($C&OFpf`igS8=)RA6uA^rZYzTk8-0QzFZ=oOrliva$js5-l zuwXEO1q0pxdMRuxs?l+$GW}2Uf4?^s1Ic2v*fSUIH;Z>fj&!Sy52xj-VzcLZ@#%)@ z!~|g&5c-7G??kADeYq7J0LCaLR;DPCmfZs`%97$&B>6!NYbWr{%ONlYfnBh^IVj1$ zZi3-KR4L0qJ};I{gn~52{JWYp3F;sILg&E%*+YSv?!hr*f_ETz>?d&=mYN)mVq=ID z1aBgD)I-v=EC&yZG^biz7dJYNq^Ml&-Ew|fZGNd<_=2c+FeQJ*f8RW-l2&cKGrV-l z{a2Wgt{-mxyL~wFJJ>zSY%4qG_{H~}VU^th$1}g{{rCMLyl&rthb;cYde{r$P-=^~ z&~(iL-t{i*w9g_WhPyMSwqqf6{2vcegJT#)+&g2L+MPi&x*TVn6%7hP+?ClMcgNzD z(cx`{mq7*S^KA5q4Qj{*Rby%v`9(CaItq8?+sOBK90l!dM8QLrC((g=0?N z<>F3J;p0_N{l4Ut6kKvEf#7LY?7TeR3g2O8`x!;`sQWB_#x3e`pnA zk^I5wb+pB=hd3!>?&X|fKS7>AEErj`VEI7({iYLaGd5btC#3M~LV*NgIF)4OZ%13E zUbsPXQ3_|2^-tPK!em1cmGZmMJ# zp4eH?m`XUXr}_SPjRAI0+0CM4oZMG@8&+YSX4JYjkOLAwj5p$2~krz6i z2P9nZfa5j-Si;?YF+A?cF^jn!>ZNXsg?RFTW{ybTK5KXFa$aoIDq6U(Dhsw#?t}Y^eZEOr61nh%RDjZ$62ndPz@}ZAw~CqivUJn<^L8>`s~) zfi%xO>iq%(0+SZX|=T&!oQ=HdY`CAlrw|~u(1;ne%{WdMvY?+@0Ed2pW zTn^@SWUG!Hlc4`ka;jk}ZbMiR+GrifCwsQ$|FTmrWc)9lM7mfbK9}+qyBB}BY#9?< zv!w^O3#+*F-_eY+KIV_s34?(GynK}LpZ~ST;`F#Dy-1m+6}6(DlyA}wnG8@@W#Ufg zlVpy)WZ_Dyd};kgookcnyfs_yhuZFPlr*!7Lv{oTlI?*+s%>)JaR?k&hnW`xw%mwj z2pK?Urzm1ye&8@{xE4lc?;zJE67fQPuZp1jO5WSlb~I9*0R ztQK|(4%UD{g-JQW4B4WuXvDt#W?uDl4w;wVzm={cy<9S&3!kpl+3pS25rCGbpc+E; zEOV+s!d@KfGnJ1*Fn7WLEL>$6LEyu z6;6vc2d}eg{|Cqfr3b5GU$6QjNMOVjfMftgp^Yb@6}GNC2Hv@$*$1D0m`D5B#)@lw z!I}(rz8mpGjIR{|+1t^dMI*;ulKr%4Fc3NvfE*~{kUA9uO?>z7tvIW1^Oeix6YNeB+| z%X1EZKZLkZZ`kLyIW*qHFbvT~MvSaQyj`L-2FWwLA}cz}0Dva%YeOK7Wun%VDqc5p zQ*tj`?pu1^b<9|ImlL_bIu&lrF>TrXw>PBCK6dgni3L(A%(0~hyO<5}*pB7Ndv{sa zu>9_VSDI7Ahwh8~QYV2qd76pXO9%75)+W$&e7P9M`62pnl~H7ko*m532`7cWKn>RC z+eqXeB}@rpbn(c9z3ov`ui?!4^lD6j^vfMJmXN?r;wsqy)l)xN0%0iO8eODP5Jm;Y zyXbk`wP}>{sQ>Bw<;S{0L1WB;Q1YsE21q|l4xl`Zc=r~@>ocm9_Ag1rUW}U<^Lz~b z^Vi4`Y3#w9W34ITDFl1IiaTt{xdot+&!oGmiRCB;fN1t}gu8a)>u2I5HoP#4&CibO zrgek_c`vr1!B!1eDlxjW9o+g;*A!I z+}7sy#};Jbmk5^%)32Nc6xO2$W5B!ad!TV$4jx3E6*C}!Ep#Tp3KS$Muam8Q-OYe} z5Y--5%Z0P{*{wxDUeXQg5oCvmvvI=W>;=(fg6cx_{~WujcWYWt6zi$tps>@;2wAAx zcRo|v(369D621?)VROPd-)Rp_#etPuYEJ^i@T2+wLja4NGhb8sPEnX23Dddb&br#q zIi@GfFk%b(YsW9e=RKDmPbY!vZ@)a;t?#^T<1-O`B)PWBe3V<*UYY;cF~0H_4Q5;^ z{=odRa-MKzgDza)Ry{E9no>m2EwNeza(Q@P2bs1p>5zy{1_$vx3u>*5iu-4Z!g<3` zwgT*!{z&G9%k8;)i%K-095rW&gNz*z-v~JIQjI$pGW6O$^X9?u=shU&#|6ps=_J0T zRBnTpD*F|Bk#c|Yc~&BlvI|IzBFf_#;MWu(kOPYE;)q&lkmRLCuz!u7xf^`0)z!@$ zT*gA?lUA%u6Rfs7YO98mGD~9`ZYKG~{GvEvIM0gU)Ow=$j0gN{$r*&(*ssYu&j_Wi z#jZrhVSUQUwQE^m^`Wc<^|5?UR{sfx^3Muq1LsVws>CUmfXYN);bi~1&{}Mr9nCp& zYtOQaacBjU7^?GOc4kUy6oLWYOm)88?D}KhlND==tF*)IEek%QYOHGl6T%hR>lLo^ z@s&9o(wrY&f<}ajzi33{!mWn=IdI7`kbi#r${4P-#5DjQois}ECJqefj8p|G9I$U- zd-}aUEgmdIo1bs0t^2NoT)HX>10he)B8RirA|?cV$_{5VgsQrZ)KA^MJ1XtvQXH1Wh)Z1t%qs zg!EA_GEPv@jS^k-Y&qau|4V58XIG750f!wS%S7q8DY?{R2kZnnj29nHx92y7`^R$X zf&~KS7z`}lshIlCJZOkjmIJhNGk|c{?~OXeM^*63o9Ae=Ej5I42YDZF9FV~dNf9|2_S079Lp#@rOsEJR(aSQk>XQ$s-!cklGdJ~Nf{%gulxc!Ic zUgb0i1hh{P3rxg=t7i%)s}GxU@)w`Cyk6FX3Ttn#s^#tXVVYoDJ{Z(B6rG>i7{3K5 zS|@Yn=8gOE{*3=K9446DI(;v2UbJF>Yq2(fJ4a6HP6avopF~u1|LE`<3!YDs?iGb) zD3q@ioov!J+5bwGzBq9A`fMx(*sXeoIr~*D#C|Y6m%Ksn9}WQaQqN4iLFdqG^sWby zG{U@ibki!I0g<6JvA4dXF-+%p!9V;8MxQIRZ@M}=QL?Bo;c#|4({8#Lu}y;9IBIt( zeLp5C<%Lcni~f;oHd*#C4V}9ms`6m_3md{{Afb$%c);%5*YeZ)ENS7*U>#fs|H@~2 zxfdl6P4>CLYT2#MyzCj}&dvKNYW(g;`EqFD!!j(kI@2A7(ytU=ny0f0cYEEifB!mn z&$f^D8yxs&;w*pBw^eKu~ z7h*;%Ntw$k*BPL0xG9g78*PK`@?t!H)|$AokO9=iw7|_0?>?fDh|SmWT53NI`Z-w? z13XqI^$J@OTkF`Ui6@_K?8G#6Em=`0EgntpY_Trfeu$s<`&}zevEX;i-f<=aG7*Ag z2q&&p>UG#K+h|7{4)zVu?K2nYJ|+v$?x|0> z!?~h@E=eS-lXzWrGgvv=Y=n$`YvtGO?Utf5QB4o$7RaUIN2#9;jpJyU-HeMBW_kWp zCvV!HB|iNXMNh= z(HAknK>U$Eox504i(2}{pNWJ_fC8K_g+C}+I&{GoTIdiwD~9nNbN{vGoUdni2d6Y= zV#5rxx^D2G6%YApG8(LDbu=Skoe7te z#jE?XtmcUjwSl#$Ug5Wi2Uq409*wmclPro4eDGP2OT@j<5H9^Jzm|8M8s)pYt_+R+Ohu_8yLt%{(W8)kevc&58j9#I{j)|;EinfOIx#;(*3mUFz7(Tq>0L}>HXAQjk2`CFnv`E;nBkp>G~@52zh z8JZ4>O6+H?{9*A{X|JOqbiQAe4=#B)j19{VZay?1za`&;^Y$NDBuE5BF@gf_{%a9n z5^;g@fGF1EyZ?oP@58OXn2n-Am^7_M+Hx?AT6NIgNk!$XMsOIEjF&zSX{v*Zu5cI7 z?JxrgVLJq!K0a2U$6)Bp0@nAL>WDj{Zh(EwK>u^OCy5T;$PtPlgzDT84UrE0B!<}& z=-OoKy%-(;aUYIp*6NlIMsdI?=hYe&^ro{5zN7-NK_*k%A>bMzNNRknDC(?72L11zU$2RpYFZoTD+i-cZAgtE&v=gAciUX;M0jY5C zVEr$#iHbKSG5|58dv(?A!1nZUe@eOS+LKl08O~~p2U^eBkNysj5!uTyfenp zt%~@dxnBJ^X;>?ZjO5QaylL>0ng|6ODT+wK)G;#*bFQ<30z}`X$*Qa9XNLj$2__H6 zDw@k-gTT`lgjm8zIBaf_#Q{P%U8cM54*6rzRf?UPt^Bk8=DuxvAvGq_?o;z}6oIUl zn!RSGcyf4(JAWY|gjoI}5i?f!2kox~qFj0{=^}zZNTRKahF68x{;U{Igg4GWO3Slq>x*riq&aX1~!YQe)6fL&0r>5e~*rHv67?R&DB2*LfiNBWG1BWGGnx z4KaRhVIjkfZVeDvJ-~3UHSi*r2Ra_=JWqMv)0bJXV}oNAppiFhST0^}od;Xrd@mx| z->xpbHlzOXz`hcyAbSV}YY%(J^PXUhf~5Wv;l?%w;n^z9jj!=chxQcZ zeT%zQVZ|r~!vnk=Pq;I5Q`v-KyJAy>3^Z;0H{51K!v9p%i*bF6fkiLYrPGe;FFrYE zQVij8414ILrw(3?<->;UkazZwh|+d0z}I4YTt^@W|o2P2`!ninAK@o3(Fdo{(U z909xZlCz9BPg2R!__NAnY*=|R2EFA!)#sB}+H#d%@W|-msRkv>@=}QO^blhrElmOh zgDy@FaS)P3Lk8F8nnM6XwLw~x+JCdkP-WyhpoPrYh|J$aB<}c&VgJsV>u4Z8a>ihB zy-$N6QT>ZTl3C z4qCVAKv&KCgf$9bll_u_7S=LvWck>Y7b{}?YSLc*YZg%n$WczxUZ^uxxF^6qjRjR( zV}LCZLjs@C73K=An}O+NhRPN9%``PT`~m>Dy$va}<5C)^!eyiTxtKGE4P>w2_NTQ?|C@?{r=_QE%3u~gClD8Amj3QH zM#LdcMV?`8TKmmy!hsV?!Ug@=j?Zz%>Veg1a{RA>!%by2uq}b=>r9__xz^V8&BhAE&Fe`S&AW7+1fw9b9BtjaUzm3@`;tp8~3*RjpDMhQn3@GfGX^cYYK zNbERInGZNhtuNhH=@E^y)iWH=w z@Mn25tH9@D9L0paH!Qf{^eV~X&G8)WbU1@WdFGpYo$7gFH2kud>}wki@*CZQKWyoH zS^4*In}9J9gr5}?Q%4u=4Imn*Ew>>D-k>0EkmDVaYhI$h=ub@g2Mh6gPfR|i|HfV0 zGplebFx?HLgp+Hzt-`^FDQABt7Gfa4lFcPLG@v4p+X+cotFu!{r4^bJokLMh!hAJz! zeo64#PUG>ZVR7^6kS9ALEIml!>|S7do7hrgsNRbK{s(qv)N!&>ZERM~)Z1sLa`@o2 zDLFviRGbCo?+^K)e6x>Cn)-!Z?L{+~=^fl9&%2|J@x}Nc68uh!%mtpc=!dDq*eJ^UMbvIfZl)hdh5@yUJKOOJ)Iwb zSZ+=|c}r}OF`E$v>_Ttd}9!)oXbk4E@`OOcTD1zv_b=!rjy@hgRL<#_X#&pwHzhIawCc~^; zo|fm5815vd7R>wK^JlJyozF9vYPKt)XiYJ)?!-*uz)}y@wd$PLw-p%9Q4ns@e}4Ta00cN3Xi9 z&V#R#uL*@v2Ql$mTPcvJ2F@AI*qhfP$9HsdCvyf_HBU;xBnRZw0Wnmxq3$43)o^Qity&dbo5=59;o zqX^rT-uEp=_@SRf=xy;gst);4`SWv0G!OxKL2}*9FQrJyUQ5Y$eeyf^p)_ex)yXL_ zwH#M{=Dv)Y0~)x)^1%KrW|MUXL+GO!Xp1<`Yr%i1PE8Rp)Iax87Jk*FHO1p_@+LSn z6u7;G#+$8eaYHRcjdKD@IJI{EHO~p_3)?D3jaY zY4|8|Pj0MQ{T`C;B(#hxV>0&?JHCUj)fYlh>`~P+92O#QpVci~4bJ)-sS)~MNA#Fq zIm8xw`*h&-0S@moI@k}3f*CB+P!UdOK>G+@V}14Iqf^_3e!ucVRbsET#CaPw%n_eIx5o?d0Dv~$9mN?xA& z9K5s;!h?AydfGG2ltqcdf|Oo^2&B!)%E&f2(s3X_f3vtDeU^S@d|K^ViLF6FRr*)Z zOYV+u)NlDrSPUqN#uy#*Im7WO*(xT+VRpw#du)XlH;pB~6aVfw61cT4jmrguo1t@9 z?oF5$Z5JrCu4v9)O>w6O?y$3r$GbG__>gVw3ZFah-cLf+`YH=@oigP>LQRWNV{h$Y zv|E6F2ZVvslJ!K?7r*I|D|?oM+OajdqT>e==F|9afxd2aS;$2NhJm>5;)?WvnpeZc zT`MIdG`;CwQjt;Lao1PiHqLZh7<9MK2$$p+RTgH zFHRJK+bPj#)m;#QxC8jU1@2bWnddCX0cQmt|4DyBLxK7k5L7`?uI-mM`D#dvci#5l z{N_g91sqr{4Qfy zUR)J#eZgq8%MoM^O*Q-*71!o9Z&X=F6pWGwihAweXFOX;>)F=!_U4LbAxY#fb&)z*g3>N0841WbL)sPfHhgWB^E-2H+lYjijG?M)e;leCR zp_!`gRz^*k7dRG%{-a!zUJDKZl<=+EWNSleq>arkv~iC(o`$FYAb%77XA29)ICEd@ z_;KH!&>Be!e>mk|bp!Wp&kt|)D~ordy^uhL~r{Fs=A07L7?kzvbO&sM1x+CWP`O@KKCQj_#It|Q6Os8cW9 zp=8GF9$SGINPLJJG2T~s@%q8E_LgW0)ArgJ8?JJb@|0MjBbY+w_44RCpEJ^iD;n zcq}f;HQBTU8^-?9SGHF911z*~Mk&i!7xmbKG5q8|N{KL)ih&{n5YJ%Z?rQ|SuW4Q| zXKA{@)~xydnZD^P1HJ#oP{xtFS`H7Uj?uah^h-{JK(SK#NJ+!+Hv?FB)AG-pN@ny1 zuK+HaLrVDILBRzh>Q_;qkLrPR$!Ivo)=+vv`X}Tp8mjo^3t6LY){5*s99Jkp8Pbbc zWZDN3D-{0aUMV`{r@+k38{bYErUCLzC4Nw4re~Q}MKLm8J=6#WaBH3gh*bO`sg=0R z^cAY$(dfp`ixIV-OsVb75DVtCdCX09h81~zcv{e3)a^69@8gi|;^Nh=Q20i~$dh|M z@E@BSdzA*69AmW@M>?V2yUG0e12yw9(~#a*SaBAuq^Wlow0ebYL8hm1g6qNACA%n= zA|VgYskgl)e8xp(vW5dgBocm-ly4Vq7S+c`RxspBZo@mDPSuY?I?_QN6Fsz$3zR%v zQMPfMUL}3KIyj7WWz8PPtWEko+4Gal{@cUw)QZPVrcrMpK2MOin`OA27uw!DUo2Tb z*Fss(JXxWqT2IGqk3#RGCvJ-h*F2rhwS5RMI5wb;MB^8_4=hG#Kh0|8>%q38m@bwp z^^o4B4;>hNY8)L2a+WR0IlrF_o2O)E9`5_pFUZRi?m7-**~*Qq{f=$Be9uN=yJ7T< zFZtr4$SR#>bc|Rt%dLdzhrFlJM%GYMh|Dtm#@Y*IMhx$`&Wi6*i*PBa{QH3)T?bUo z{){M6)XvGZ$77$FrZM;~XUynv*8N$V4sCrLKXb~l+qV16`Cp)g5`{k8d zw!b7=8N(_0S%OSZduP2c%fZC0(%zV8}eH<3Hymhc(!bSf5qq-T)!# z%jV5wyZQ1y!M1SL7;zy7LK}HfglE-!tCkQ>ov4iX5#gmf3!2mOi={f*8 z9i9+8*E7Fldyyk9t$vA|{7F$&R!`0717=P$e#pU+nZECjN*(~qi&V5zvk zGFKaV8H3$x@K|YJ5(qzG zuZ5fNrhW+4C$AF$)PdowtAxC{M2ak5BHA}IzPFEitT2m$$w&W>qU(HQ!|kH>-mCVg z)=$w2F>6!Qs=c=myY}AHD6wkAs#UQmLG3M+*n8LByQux<&4>H}xp|&@&pG#;r>(Re zGjo=y=bNkiH7S}xF zV0+Izv}c(_WaAl$%%!~#1fy+uA&oN1q1@osDgZ_SkiA>=C&$MW?V>K#M|MD~)HMrP zNRpat5YoQmCQ_fA~|J5>D+53*(` z;I%70-R;v5a^fwdXk-BJ&E&1~39yWIFA5P1oj*Jo!xmigy@}Km<($I_OTcVzl*&&X zcs_r_68_v(5k_a7k-LD~%|mF9mH%5dNxNDJ++?u5xIkX?Q|4h1Uk{v!K8 zKLX@5Owub35X(pJ^JgK*l4aD_BzaN07sZl71s@floL3miM9}468;34(=U{(9CkFm}DlJo==Vlu}w zEX@72PyrC3CV7Wr_g{FOTmlm!P?hXb0}&=4j0=>Wn>L<)$It?Bhj>%NmX9pZ^jL|~VjqwVMSwgnJgsbP!RqY)-#!l92!KydqQk1c?J6_xsl`2VbHb>+)<#b}eV`5#m=OTpzYbO$>D%stutJS0=w^v%@B|i0)n0Jq?zx98ND4 zUtp`+MZNpyvKJD9P{ivy8z>?%&(f~l*X{RbP;}AUbei!PNp+{LbWn&p* z!I`I3K6;2aK9-*$o_M!z;0%2EWugczy_g$pL(*p<_BFeoxgIFLvbr1Q zp5m||Hc&{N>@ANR@H;#cs&)iB!qe|wJFum$s8$;yx1ebS=h0zwqlTBHV{dwma!SF5 zBv#c4qR?$edKN24`$1>W2S20bK27GEJF$ME^EI=8Ny@BCYg=k)@Go0l^J5ceNLTU` z3g|pNJ*kBmQY`MFA^h?{=49WvJazi>;m8*3kd5rt|fdy}5p4y+T@LixEy5ge_r$O?kK)wfrbuKc)-s=!p2~P0lM+B@Ul0 zvGO)ITvI6?Ru4~)enYYNAh_7->=njA7u4h*g(s~(MKLu#NR}Luv6~t;#0Vci`q7gx zs_AJ>vf`UjL6uf}N9IUCnc)i35kz|vA_og1m8ZU8`%2Me0t5i2g4UA?3 z&+br)DU!cq>$TfXf?MC8XDNhUdPqs$aYfLz;(zOLzoA`?Rta=>6$h5_OvsnGa7kQ1 zZyQ24;F~I}j)4%V{OfmOFxPyO5yCD{v2{|MmDmC%iZaE~5+bbA@gGI6-++t6s_s_^ zTc%&6j$oVVWUH%lfyDrD1{05WE{{Ix+;*{Jfj9RqILLQ>I>CZ8aUpK*fZ>~5Kx*ZKYrzB^9v1`fMWL;`Ev+(vYT+8i+#;Xxmw3{2{-B`3Zg2L{#axp;siTR9Nm;oJK|Su!h}725yvo>)&*{tESg&FK5Nhmv9DRic z9fH!jMcORbx@QP0G+aMyAUZ>*u1b*Ch415|8O%jFRPx`a$#@>Rl1fXF@&YN60wD{JJ z7z{gQ-;_f1p4kXprWd-1Id)mWYtA`upv>H>iuEhr_8X7 z_^OrBu*^3g<57@!QC5&y{6)N5Ptn8Rp;($diT5L=% zC2!oSf3s5$WHy^B75?Ida3=#E-{71VS0@cequX2aP%Na`b_jPeK@~{i5;-%&o=lqxk(5E7_bKF zCYswJXX?O1Wjb*ZlzZ05kHf|=*5j~RLS@sb^Acuza+9%PzZ{Ayz5Y2U@EtGGyBIrK zzyje-j&4_SF#x!bgvhK05#)(~G={ilQp zEYh~qAg~eWN3!&ULM~saU#yh-IIiFqGB8!j5Gr7Mx@-b;8i5GQ$(vEMHyb)kx43gIwBbP2rnG83{W@3byk+7I5Oa>CaX7dWZ%T?1P@sXr4FY< zI1$PqGov*S+M;0WTkGoBHv^STJ$W&?{b(boU<=oNtjX|868qItws@CdThZhd#WzxP z!~FrR1PW;ErQ~%FIl}j6b5!9*xLr0F*2~6=v`K=ZF_wX`vQrTc{MW>N%SV{k|N5uv zq&pj!5{Qso>qCnUWZojU)}J$60(jca2OLvLPkKR#7b7()08n_%e^`l60|rI2&VkpL z=`{f)NGZIJV`9S=-Zv{gq}`RjR(H)zL9-9NmraZaaZfkKYCE!MGDQ?g)x-3HsZKlt znOZwI&7T#LU*iU*c=_uCu7uIrl+hYB(8szm(<-X{OWgrTd))4ct*OWzaZb{Q1wIf4 z+~4jWOdUU`qVbQgd%8tRUSC`t&9(Cks8;boS_K`yIZ{k-Gd5LK&FyrB83;EuwH8geDSG1<@{tbMhJz5}B|6(Z1jW&v~Jj zgQ?Ad9!}o%-Xe|;3)_d-u)O=6Yer!QS9!KnG9QSRf2T-}Nc~DEm5&ThKYqVuDA_ui z#XWI7H&n>!i41poIZeODL*%4=Z-^W=vEbqcg3$K zznSR93~NOv__fFN&oEii{Dxcd(jT&1PBDsRf+kp5?8?EpgtAUh!3Cea_N?9T{|e^W zfa_khD%ZMzP8F_8)8cBnUdU!?L;`4F>Ew$&C|)52-Jmx3CzCveBo<)!q8Cda#na}A z)*==#fbHIf>qE4T4J5X-9toFEt%PjJF8}_fgf848tnPkO{Y+;RgT~9e)gMy0zTNDZ zTH^1HberP{MO^+ZfJ7|Uy&7;DK3CgK8)*fM8gJZx?@fuwp#o`0s=-2ao}R7ZI@fI3xU2Hm31hWb;o%-3WqqB$-T4ZM z`U~+#oULl?cci8Thga3rrv21R35RrK=Le9g-RAtP2TE4w81>6)Y#I+D_dWX1wFf9+_#<7LT@f7b5=9 z^A}HY^Dj%mDO&1(41(DHn}v=(U)F{HEsjNO=voR6E%Vcc9En0}odGmR(Zkrx=QwGz z%xL~{7soOf#2=hp4Hbn>{OxTxBLGY>&SJUXfN83IS*ej0$h(4CVB(`1*ezd-G0Tq@ zx~^z2jp7i3P!1F|jLLG%#l=wM4Tt4o&HXgR0Lw4=H)DzY8#C?zkACFrfHY#(A>(a9 z4EZFUmByI&4LUm+p^dnz9DM{^d^?IKriu7DcsVRSz(Z`ABm6*S;5JGu>6=KsNi;q` zHh}XPBoZJKe{si7*>iDQ1G3Qj`JUj2cUjxV;`(aLyrWyR0(5-@KN|YC8}hXK2HMbT zN(=WIV_`tg&HjR%;q&;Vzy+4%IQu8jQs|XqDtRNad@d>awKh8(f|QmWQ<>j@%KyNx zdE{*8EhXIgHnAl)S0DzG7M)@)vpn|nf_NNrzO5v`1y3Nb;3c2*^S%XEl>G8{&Aqk8 zbNo^lbxQ))kBgxF*U#om2JmSPuo0&%+VsZ3z!+V&`WBQy_;&qss|6l=*syW7$Kivd zP(KegP+TS|O#^{t8d@9PS=4GODN9!jwTIL|bGX~p-{w1fr-mCREWp1nT;{F_^xWaC zFTLODs}FeGsv)c?!S?z}bD|pO5L6ESSy6NHs*rgNC*?`i_(KV!?K`dUGR0y{>yR;~ z8KO%MbE2K#WRK;*2q5+i_6)fP$)|yi+pbjkqP8AJb6w>tf3SV*5<_6`ivyqJuHi5g z**@(aOeg}pI%;$_DaL)%&C@WXX@1$TbPzx-{TKz@((+YrG`LGU8T_Z;%lyff?ErjT&K@lh_g2Lsq}PPt^oTXJ-cgpt&`c`9}Rs zj{)8=v?Bv~i+-{d3YLb=WxEX;2y*B76C+>3idwjebIf?-TH;RwyD#EL>7Wvqs39Tm zX+Mvd5PVX%N0xpx(xv)#O$DvdtpV9fy>iQ^y)BZ#>ETfTDSD4uSTIj?%EQ#t(s&=) zf`y!(gIXwT$KBg;ZXD39tAK{(4+F$p8{`Cs{kgYQf5JSLt|^h<#Z7}K()b3szADe& zLx0U#uuuUN?zSJki3z=jYVr*epPKM_R0PUqd@2PU5C%Y`g$X10WV53A^~U56FU(me zk?&CMAa*8hKP|clc6N{7)8@6jfb6h3{%7s1F`Vf#M)=OlY%;?)X7_Q^{N^oA9UOn1 zupI!|A>F){wNbw~u4@YgGJl*QEE;v)YMz4IQ$Xb&q$lAowz%;!jznT3r5h5%OQY%S zu$E@4em{~`KNyN@Y3IvJPD!x&ka4|YOXYPR7!rQk;k{ynOIAB9%t>lbH-_?uW_1zC z|IiL#EXF@NZ0Nt+GKGi%jEQBwpQ3_fiGyxn*BZ3>Gxvyycvw)H z7>eml;viV@^T`K4nc3ax6hH)?Xs3Cn=EIO`QjOpBcThLS<$%Ht^DgJbv+LRIkFwDLj?t)yx{TxCo zi4jdNKX(awHO+m z+9y)Yrt@8iIi4CHcOs-z2g&GY@){^RBS-UVn3n_utqH9?xU~_%2ZQ>NJ+!#4JL;MN zVpzZkI3JX}tPE<}_WV>jqf6_iaCkN>LZI#wQ`*{YFwotDX#9hn<5H?VBaJ~}6#kXO zF;mtWiV8qR_@xz9gbZbWwQz5d3Hs!bj!{6#l1t*(RPGEw=G^vUr|LjfBD#HpGM)29Lk|0ZRyUVlQdR>bivv z`Vzj4VEu{_9dQ{*qvqU#X>IRVMXLMB@k>$oeLlY)zKS37V&GmO8mjefs8th5^Qo|KqS2|lm3o&!ELw-_!(UkCLfHdAtTnhjKHa5=At9>Isu-D<=&+oqa z(-ozm0HV{M2uy56wpt0jf7e`6U@P;7ZO^(#l4TqzHQRO@{?sP$QG|V%s2iezBd@w1 z_aJsRG<%(&W3Mh2hm`sQXX( zG#nF>hJ&O;A{KX={F11}%~JM|wZM2&aodB`d0WEod|uL95*M)EYNxSPx&Q7NCG~uY zk2W`&-O4PZjRF$8#wMgNL)^ZfrYEmu2hGi~I!(k{9+UTo>~byA)Rf#R9(5gQbOs>N zK2&7}(f)Lc59<(|{c44H;6GUYd@WPV1K_A6N9IHE>&Jc4AeW&v-xCp!-@#n1fnhVn zv$E$ylNr0S7oC^nNNZBRq&HSL78t->|9B}A$C?ihO9L5$i8iSh;opsC+3?vQt$aHI zQdmv3G9M=iMtL4;UlC;Gp<l00`v|Fj z5mZPljU1^o<(--VFYHePnIU*NE&kpDE-(hOA1wzOYaj<5g<=GhU=M%2%lw1 z^23axu$fLgITHX<_>qxh5scrK`zKspP4C7n92|s`mMLKgby0My4!0@dwhpdF>)rU0 zCUa@i(K7F)KQ~;nM7M`1hXj*t`4&CkH4x^h{9b1Bf_qkcVJI#*G7dbQ%jW0RB?6U# zVBgUZWId%%k=0PccMIrLaGo}|c)q!KOY5gv%tq(vcf6i#01vW?*&Vicl!7@xbT(ty zzs|#mtS>nokjrdllcig+sfFg#0jB;6?qu7OR%b+H_Ciy(!;}JPTQ_EpE}r{AyIn_* zD1G3ofj=`{n4>k$20+Nuq2A9p4>eTkD@517Z`MM%SxANf<0%`QMmbQ#U$v16+NH;= zAKw@oTyJ;38#za;Dq(vp!M>3|gzbRilPX@YerR zgPSbR|FUs_3T2Me|E`uXvB-7qO!^ZoybqXc7rQ@fI{+bvqLG z`}Sz=CuCx4-2Q*P{bCx#Xc*R#OY*jh7aXJ7nMcem`W{`J?OL5erHoIy>s`mzA@|d# z_v2EWB-WT3ptV#uIP+Op;)k2l(>dM_^xP4Xnc#v|X{xxl(WSL-s6S|L^g3BxT}rWFzl*}r@W{8xqCmIkIDvMv^jsuS z>(bJ^(O`X*Ce8k_JD>-~Oj_7XVa;sPH6vwOBG{rtMypLOf>>HI5S~ZisUO|weKji% z0joZ733pXf8O*%s;SQtDOT0j8VG~Qa1T*W_bT>TsIgZ6o(L=OW4{$pSm6Rl~YTuU@ zyw2A(UURQD-u~s-$Q%D!`}g>qksvGlC*p%{>*W2?JSt!DHHIFQ{@`Lxb}(8W*R)`G z4i$XkfOh?;Yxg$~gnp}S7djF1F$r64%?h%-L&!*vZ`m*Vvw|Cp#oOAwZsY=gyjr|X zJRR(=?0ZCw5BOnmp$NZG;-kNc>xrehQEmjzhUfNZ*=4p3gK2IDu@vqjIFT^*RP(5g zGSJUKpWei9f9sq$lszV4)9;`1Og)uk(4*^9mXAW;(g*j{IeQBQeT26Db0-OSEM(%s zc{J=67kz(sj2|j-U7PqCO6R)W3_h@}5e+kanoWaKE^gl+?&{Q1 zL3INh^dTFW`2Eq301tVqW=uH!FGX~%$>|6YL$3^2!gi$uI&ykr=j}5x4gOGJ=j?^7 z&TR-=nELMBtBS$qp1xOU_Cw-$A&cG0au5XgGRFE@*d1Uo!YhLH$(h&!5kOVz>=J62 z`5y1(m+=c+&#TFk)~3(4)B5*j=o;p~GSH$VDTO9Gp|DpFCTSP_H&9F4b zoAz6EV5JF9zVX1E$-T3!{5cW~L<0tOT-#qY|GJ$xMbo%S5gcyXac#6k(creTJETl4 zSk`3@v)5__C)+L8obxaGVa3qx%p&J15vQy36E7^`9Nn5ZUW@RBu4@Q)IgvHxtI<&+$D*Lt5bUxP5a}xPP!Wu*)Lzgvz4wnuWwn`6_BhJcjwn zv{^O_rU504yhn;$0J+;`&Q`2W!3 z7zI6;e3so%UgAMH57x^^`jXMFB=$G~GgTMB*JE<5e%6+W1|EXL$Jf!ZhVD&S9IjeY z*fQOT-&Y(`o!>^k#nTP{?=ZTD{a)!0rLQL6)QI5V#vvCIeE@^2!*W%_we5>&skc81 zeLb!JC70UkdVJw0wbvm8uwyhe)w^^dnxj=yZVyq3U6K^BbXDiCpYc%~mhTxvPdJX_ z8NKTc)9!Qb_pg>Q%rI_S5-`n>FFrPmA*p!*wd*`H$2>~Dc>ac}e zcak~ao*#(%ko^BE04lN9EyjEX_>Rt!NNOgITFi%RI-jO zoGmxaOwKG;zB)O%yGwk4yXrzDkslWee}n8T#VFKPs@GurW0DCbbnuYcv^Jk zW#l4f1gt)0qN-~f?SPC3V7hV7FF}SfPwa(+(=_KY%B)~fEcORhE&rj!P5bD)xolTN zrbf)Ir?s#8I2SVnpkByG+*3P75ImLaCG!#G0$4snly zk98&zi|UY%HmOWqfB7&{WJC*)R~Q6_WwyFwMCb1Bzs9*brsmdP3WEF7cdlDAzu@Eb zVv<=PUAOo`4GBOks}SeNT4YLsBeJ?(uLPvM|1qBZZ(8CDS9@ZsV+~*353l9!tOCkr zr&n^`qHF7UJ@FizK6ySen!BBfz5sJ@$WxC?lw|dl@vI(Tx=DOm8yw5AouBNlay>|zFHp*sBiTe7~@U^Gee&?*|7wRw`)gdE`C*)e zmCh54Hp5*gR6y{(Q9eg8bV2ccCK}TC?}1o}RU2=L{Z6ShE5u}4RhkQAH@8KJ4fk_I z_WkSq^H?L@*u0La3m#a)Qk7$K$^V^nBpiQ8V*~^Ffk4#OrU)8o1S^wGuH&p_iUxSt zzBnx6=)~~-QF(kYJ6N~KnwsTw;BB>A-HgD%X#Ct=Jga>|MoIF6e5Yp1D3Y+xfm5m2 z(*^3jcP9utto6ZK7a5#ZYVZ8`CUvP_kn%sJY&^r38Nu4G48Di=kTd6GNjG^D-e`el zsp=&aRvN#QeMag7m&;@y+4VY+zT^qVfaDGl#a2!`%M8*z+00OmtAFog4Q1j#$741) zT^Y|joMH9s)t1|Gfpv!MFtk4Z@RGDt?Jpe?=#eUZvMiGdn+dXt%PY}xtdqwa#{+*F zU&IEpe(K(i(f^2<<9xuPHP;qkI2Y1&w`vo#@cARiG~w3S*@Fy0Uk0)B$O_Y$K~j%T z%H`q-M%LP-bW+4UI05bZG(Jb5)&q>@o+y_V4~M*E9O#fI4m)`QZGnc=z-UuIPWjer z0;4*_(H80ii-D>kc@kiK1j}tQOC||eE)leY>^S@NrHFg>l8p z``MWWSZ~^y$(e%~RE&(#cS@oAb(L}Rold)06D9Pa z)5MGAgFgsUk?GXDW2ei%DyI|Iwoeak!xqrmxN_v_rVTyY={82K--Tu_?f&{|ly{4K zY7ReoU3{&vfay4zcKHi!k+pDxMfrl{zF6@<&0f2MFN=i5Wjw#_>&c4}(_4M>0eaCR z!}hshhF+JO^BWC5u`96o=h4ugoE6^`$k>~(r{9j~eW~HdsjcMvGeUedXWUQ3iX$QJ zX4v;b$GIJRq12`ba7GJns2d zPY9pjY9Z(LJ z@4I?3=2Z)@Hk_+{V_;)Jv&lY6JAjbc6M#uMute4^Mr(l4P3%B-g)n}F6{-2E)n6)) z?x9Ahxks|JMckVda}@fBxJ_4>1AU@I_fgvq!u=1rqU>pt??T9hX;Wl#x9FT-hgLQM zuae6k{Z8Ar^l*VR^7MaMPn1Cp_o6)v%=e73bR2Bekit^*Dw`mB4xR2J?L1}bOcR?0 z$L8b~!BO*`)V1Y@4Ek1;+oYNYnk&rt8|s`H|I_Pe7{%O!VZ)Tc=~>y0+*OaZ|SNO zx#%`0SWKqOztHPND)ar5rt^wuvTt!p8c2VQoc*0u8+Qc;eX9*wAnCDg|5&~md2=4J z#3Fdwv3B=#Gotq!&%#-k=!^p(+-QgjpV|3t>k2-aiZ4;|Z~>~>ylN8AqC*FLL(tmC zerqYc5>eMgUO?&7k-EcrMQ&^4Yd?UC=7MnZ#=DCrbLSB$0TQqxWL2NT=ALT4)fOMuG7{&Q9 z7XS3wX}-8jbYs5)>?HhlNl{x8THFVUo2SlGBZv|mqMS(8ucAPN>)b=b)!1oXX6Qu3xf`vYBS zfd}*2VHwpH@-+-e?{FaIPA?MT}u`95hp((>cBFDnxw1^r|dx^Gn8Q zTGY=6(qxsD{VY;B{5Z@j51rA!$m8OehNv-rBWTu|c{`HBITM z3nv4XC;r2R*QWL#Wf7>qbxjcjpLf(Y3tB?JEN+kUzVy=i_nVA6OqRvwbA`lcyo43O zp_$~%XrOa`3~0~%j;if|8rSCi{Z%XIa<7gGfD(!4MI~Q+pp&J%!-Y14I6LsD+qR(r zT2~QTGo#U~Sb(@xwiQn`Z{)SA5EiuT$cHb_f+FP#Oma#3+og1erE@seRQ9CBDkvn$xeJnJaCH>c}w(DfFrESxtC5@TUrTWdfoRR_d>eTUM^mtmc-Bm4m!4eLQO2 zkXmP{tG<^p{@ZEJ=2ZVKX=XV!3$*x0hyl4pWT3)G-wMD;j)!57;z=AX|0|NEN5${Z zR-uEj>K?mQ6K?~O8!V8!T?@RVJ0T0m;1wkD_;ZC7M;YWeuQ@*TtosP`C@~7<-c(Fj zNIO5Ms38HgD#^I{MCR~=pJa+lWvRyaqUJ~k3A_|*oauCCdUXt~GF|1+UWp6p2&`1_ zs41q_>U2hZkO!F#w~QIKNl5k5f{w;~O}MQz^>rc2rlGoDpo_F*B@8+q+76*6jBdHv zT}SPYcU;!zGe86Er0svsM*kqvQHH_mUO4E$Co@~s=BVSAiN7wIe2y^wr|K5lh2n+J z^Es>u?}8KtH$Nq7z>!rSH*D(v?zBuj8y9>O5@;vz0Srm#PK!uiy@uxbH}}MVYPkRYmVV*&!NY}Gy1(oIx$u8{Q#7$!=8RJ(YP zQs1PMP*YMEv1E7UTj*4H=lo*&m6(?Ec}8ZlcxMF2U6aO(7=JhdvmDKOMyN9{9yO zy@*gkgkeA;P{}5hKUCG?l{V6ItnQ`bFwX&o$wD)hfxN^CW-L^n@X0OU-a9}{s3Zu` zTAaC3&s(?jct{Ua!f~k{v0>R%KIlF==x_f&l-YxJAFZ4Q|2lb_UcxP8LAquV~e5cru(vT}|3v4MC~)DFLtxR$*uYgT&VnSS^gmCiB&`0PqJt4JVkH zvWp)0U@8%+I=YMJFw*%^F`)JnvsC0ezfoOa!x$;>i~t-*8tnS~Me=$?g52kpb?Bqo zU$ODG_Nr?E8!C$Xsxx8arnawfluMab{^zSCE$Su-)Qc`Y9X)%wrzj(HwR35_s5Wr~mCL5XsO|*|#8Xh@X zSYq)>G@zE_0^xxCRAs8(mv=h5 z?Khw~b2tXUTubI=^~)JY{rVd+7fbi!${_`&HRREV=ork7jl1_8Qqx2qhCccoJsJP< z4?sgXa_g*(K-1WN(45>jnTS+$k&Dto@+r5@acV{kyp?<^P8V0F^;p2~@=wNtAFQmz zELE)vvnCwAF{lF5k`o}}zP4Wk`ut|=e()cR^n5a(;iv!dGZ@{Xv9AAqEoAVham|lO zhRf1;wbjq;<~FMaO~d}6um{?$kVh89ug#WG+`^Azg5qGVc+jC&oRo`rD7ff(3`LCD zn^Hmx8oye3Yf=OG&e4{Bt|t-`M!807qmUttrKYR zBqQy=h5{M7`lhI2@XaLb()f~>Lx=WG8bK^TK^jX4D|Mh{b`z&n(U9S?4=M(bQJ_k* zrkND#mM0WMDw{;Bbavn?V6^fh1^(w%)sD9tRV(i5aHQx7iWMD zjVzzFm|v<~lH1_!t8#bU-e^j;^eM?7`?xB|72DY*TbE{z zV`0x|Ai?Cv(|5q?;bX^og{~Psnj8|N-hxb4p7;Z65{(7N0qw9;oIB>cyZKZ%O^Yy{ z7WG)M#SUkNlYCkI!g#SXm;f{c#IWYq>w@^GG<_2pT{Jh$vJreHYf!cB_&GdcM`62o zq;Yo;n)8!yX%BUR1NCmjVKTM=0KbyqfJFJG|! znA^SM%?i?ZEf;8EsKxqrHcei173f%Twk_CLePem}Hq6je+gqDXfpul+{wiBdm$$0o zJ;#Bep#v9)(JI4yD-2OoN%EJfP=`+&AlE&Uc3#)g!4vq14l0k@hdC`o^MB-GFHo7w z-bVJaYteB-mAL4s;3^EiKcQ^x5~B3}(%x__9Eg4EJY2{5Pan;xU*f|z(eM{1+nl*{ z3-;p9n)i%P)%Au9Bw|ilbGU(*&(kG-m85dH?nw8T4g!#WwZ&{WF9Oerz`bSvgA8LC zq*dSyjjyrzaQKy8;`{&-O^+u4A-q>Yrua&EE@c6N_<38=_kSgRZDRFR2Gn!%~Q-B0ifY5z>QxVJp$5wK$T!b`CYzL7jR*Z|HN zDy6xl0YrI$!Tl!G{9!+Fpi1|i#`nE7bSi5lrp&PmYXCTlYXCVaY{J|Cbp6mDF$y(( zYE48ywi$*XCp; z7dYXq^-B8s1dgB+szqRUW+ARlYQ_tFdq|DFi;;;z{Y3I0qW3WA! zo{^wbo!pb&QQw)WT}n_~nV_ys7co4Y$#-{tSKn@{Y}1vUj*0A3=nPQl4A#Cj1~wII z@X56@GY(&9bQ6u?@>Hm&rvsM)vEklaAcO4;rxK?ivW-5yaa3-d`>osp zauNx$oO)*urtW%2SP{rfVCHIRVl=^9JjYG&e&m(gVe$WX|G7)G1GCioD_2wm8g4NW?$tIiG?Ijw6+5>yxd*zDV6Z#qNc6o& z7f;<@=+Dnmi}jw0h008oj~=Rbjsi3=fOsCTfUT>jx;!^`Zyjx^XB z&HbzP=)wZ6i|?IiTS98RgW6850oqMj_Y{Ja)Flz@OL*@7qpAFj!gE=*pDF?yDUsDj zb1s0#6!0|mXkC#slSiMGJt{ASbjBgo#dBen*ruY?loT-h{PSdqN};o|+&bd~@VAr? z)W*g#tAntnh?xlIA0e2Ihk3=*2|Kw4 ziKg=dRmS8uiAh8si`%DSe6ZC^TJKcM4Z$5XHL8nHNd zxDjJ6eHfI}wk0HUg2Q|^4g1S}W>Q0E#fJF53pp+;(Do@WIArNK*N>|RW6`%Qe4&>n z@&AqQ8rAq}?ptaYaN(GFS9hqFv>c^#oy%J^_v_rw7CY7Mj-9`by*JnCaG2Q}qCI$# z57`cv7y2>3=96dftu0;qll~HRno3=yL=0T4nkJ~#E(_?;Ogc|bV({~{Cm?!x9gp*oU=47 zi}lNXz5_1nceM_0*r7+gQim^kzn@Zk821?pIiawLVBiWYS{h>nyHA~94#8$+Fi2!q*R^hLzr8ez zHE3;H>^vpSS}^wtcy7rGft(76TJ6_k!|$&X|F2rk{=eR+QCt&{jcrGhcCMoknbc?n zJHDKQPI#N00*4%W&7nem7J%WoWF=ISodgK8VFS713X`@0G`v3qQMm!W&rP#OMFDc1 z9X;XNO?o_G{OU{e<2e0JjOaS8L=v zeK(3SNMyEJFF#8@f@SpTb8pLso41=F!)amXVWQPIM|jrug#B{H)=&{|pt&9S&I zjq4|key2QA>JAtQNAvY#VLnxtC4mlPz@al2MZpgN$WcFrzI3;D8som4IsJ5HkUF!< z9-0o++b$ADj?;MH^Oe|Bhf4Aa+lgedxL}p}?V{&DWEoa+`x;1k44uEdABx^0YUq8ql^>p3{PTEFyQ&-b6zO- z<|;2I*vC+Or^}*I901K_oKHI+89=SwM+vvdbUXcB#(;~?vF7XvQf`vQf-zUe@bvFX zEf>|TGG7XlZGn3XhiUr?38{hD4LoVJ*wzqv6GnRbr&>y+#+(<}-?Qd$u4V$4-lfc@ zFv_qIM~xcjPDstS{i2aCo_rhSxk_KuX*g=54Ys?p+PP7`buEj{T=q=eH=wwMI;n4W z4?f9pv42m%L^^O4S#0lJNUn;qCB)LP#ZfBHeitNt>G^~IE_;aC{$KqmA38=5yT)l8D_tnslZR}2$MPpJ&^tb&WrJ>QdYfXpo=JR%+%hZN zn0QTe@R6eQkfdC6kG#h0mBWJGA6W7o&0=i!`hC;+!JQX;;Axsv7M-w3*6-^GJiT`( zhZB7CUsX50*Cyris|ucjJ7smw&?95H?-_7ZC}Yr|BB}j(>d^LrF>pln<^4S zHUI6J!eXaqFySKVe;i$PAl(1|7sK>SGd0s4$8=4{baOaPGmLGzJEuCS1!snc`1 zhjC)2KKggx-~adD`(Cft^ZCexvDv)kA514X7tK(?BO@5Ix177>d=olIf4U}grM$i) z%zM3@nPny;u1eb=*ye|Q4NMGbFNVVdTW(*LN$Y06p<;8M{6u(IqTGJJCU$Z`4*f+B zw4fq~UvI|MSZo5ZoUhN9`O6P%_K4gT5&B9u*KI75lnBVW?|BDiP7pV-%aex#zu!D+ zOGR4VbXLYLSEz}c=UNmv`sqx&T(L>;flp)aWlfuIg$K%Ty~7#NrKs}YX3kJo^m6o1 z6{6NWQ#1DkN ze)J!`5Q|S(%^5bV8UIyw;j$^N4E;v6Q6%7Ks&yfy(b>C#O;oQ1NU2i8S+N=&%sx=N z8mGLrihLZ`nk(ftn0|eNc13#x`ZIo<;4VyjHL5O~Bt}2?vlJ7Vug#0rfl35nO^2g- zQY4e}Bp>d4&XzXHeMM2}eQx+ca?L$NcTYA=9(~%G5fMPn>9y26F&RpECB7eCsZCH_ zrT;fDoIzP8*bZ)?Q`JDh5s9be(N)fw$Il>}=~#Gm*A&P-N7v5w?aUOa)^T|IU%{g_ zr_J5FKIRisxkOM|ofYi)7TrAI%I;82Gc+gI1eY}V16^Emm3_Ei{mGT-PWNvZ?KP>u zjW#&ObBLPx>~FR<{H=jbNHvzFdZ`%fy{FKC#%3<*Rtn0~De#;;=KrwpJl1*2rM&oE z)ejR|D(S-mGuuNzIPQ!0a&(bdIaYCw>Ex$1UZW#o(@);&KY8lXAjJnF=%n6; znkt&1|DJLZtO??{ZRyJ3!t!m61F!HJtgRlfj$ZA>sij|kOj9OZ@VJgDH3&FdXnnra ziLWMl@4L)~D&l(uKQdXPp5+Z@wPy+UB*m(^3hJfqS1aO)A!RUzsZADdDR$5pz%u5H zjywqJ_!Vc~E+!isQJI*vIj`Y{aOxnLtYFI1RQ9g~@-xjrFk0;fK^7GR?Uv!utwOzj z%GKk=g|HIObc`lW4|u$^$|^u8uSqA#)A!dT)Dau?nyn}5!;H=LyRJECrSyxkG0lG# z$sr3t4~lL;y+sJXHIK%5I<{2sX<|5anhMf$je=zX_1`pU;rn5b#5m*uBee0I1qqZ& z&-LHUM`v5b`*u+3Nb5*x6$B%VrP9j0dTho_jM1a4esVR_Y!qZI*k;V? zCaE_?Q%dbT6AKuK$JIK~(9?AP#b;5Ol*9IdH;*g{tijrx0Q88UyDS49bn6t!bse9B zwGptG4=2CvCpmDBKbD-RJ9bI43u}0@hMKq?6`!dGxX;=D{SADi4mFfKj6&KZ$n~0p z>y^mo6iI)OK!NCIiP6=O+}hA!iU3?sOt)|_gC$aXuEA5kcfvVGk@hYf53JQ;s%Wwx zfI&5l;e`IhxPG5&X*W}2IEf7Akja<%S7^0lgDIUvl)a@=*XoTLn=8H1m$Y9|MSx{2C5soCN%mZn|9BNf8wkP))X)p?~Jp(uYc zzU?9xMqDbutAdUJ9^ee-d#U-Ah_PF>lR432xF$5q!j!yO-E*2h{T5d7+4#3MENz(G zt2ld;%=>hr#u-iqANtFT)rhUk_Z=lR3X!*9oD!GQ#I=!;4n(C~KRQ`Rmqi@vW>)d0 z6PqI8>>P&@iJSOh#bp{Lgb>p#VFk4ZTYG8mRp!U!8Q4_v!iMEebw zdu;0kxDt+{)&p(79l1aF@0zs~zPY|ZYxm;DSyH99B<8PWx0sgs-#F*O=@h`gOM|ssw`~S-3J**s0L99a+PFWfv zc`8IMMm-Pnh?_5r@RoVvRe=cRgx1xo?D_hIUU$T*;k^@q;QM*%1de$9(XXtfzZs$Z zJ}>7JFwvIKLr&)1Hskb_He0{RjMErhB=t3Zy`%QB^Is6?5)2$R@*mdX&%rQ0rB7EV z6NFXU7D5+CPyWr{4*+u7?m9&@?>Vhn?_xqmE7USN1z9;wHKHHM{u+PW#&4|2MK>zW z-?O@I3VgHy(SXuO0Vv9+9Mcj+T^E0cO!3Yb;kk0}Z*(gcbW7rYjt+oli+rDWv9uN4 zbSj39)gUtO5SW@BY@WvU3r{E0^WG$IZAn`kQ(zmEU`CnRPt*MM;r9n&LsX@p_^JJV zThqT-qaECh)xc94-Mm-;xwq-P7hpqh+@^y4WDM$!^;M}mzdFALt4O2P`&3UC!Sy98@zOXI zyR~h5V={||Booy`)C>l*oofXr<1A2>T7Qlvgo+ihpe7Ns;NKovQy$Rk#u}n&bLcM!)DyaSz&*D_*}Nt8m-?*GSq{T%$&P&mlt!ciA#h zbT_R1>wK>UYe))S&9T(rm-x&HBJzy_PG__yjd=6qK*ij);azA#0uPMQbV1@fMIp6> zU>QAfp_^M|ARygC3i4Pv-2A^c>lpQBbt3Clal!X>VxT@H2@~c!qF^RXFBh>7RTfXS z4yeDxez{nizCceYjJ)MfU9@J&9*w62hDJB`N^9Rq^oX4Hyt6QQGvyZ~<>=YB+^gyQ zm5&A@nvQD-Bf6kGPh7*|{4s=;$=uo%`3&~Q0T){KOvCrPmUf?6$F5&$bK2!q#(VU` zK`dffkUv^i@z{)P*%=honhsCf{E-awctoA^>2~kf)SN&Tlq0|$LNUqcatd}3h!uIm+NT=4GS1-CfpSY^CZL_wuZ4A(BIg&-uKZ01sM zMTF?f-CK*+`}4b01Z4OiU0fK?3Rf0d8K=961r`*+X{Pi>9#Eo&q}t6~Uq+-m)1&jM zn$VMNg2`?pgQ-SZ%6NwmL-p#GhRZYoC5-y|YJA8ka0?!GoC zob!VPhxzWiwsS3ms2mxEEYjeL#UbeYR|TDj7vCKo-O#DJ`RZwO0( z;LtkeRT+yE*L$FQWAq(*UFMK+l&4`QkfxZ6dOM6?7W0LQr&+eDFM zme$AL+h&zL4;1Gq6gWyWgW2tNW{i<6^Vr3Nrt*@5ui*&3Zb^DLvt|PZ-VLI-sR2WXASAxSBtdBJ`={4l zi4~CiU`%GKv3!p<4$_Rhjh?>&m}<^dZ#N_uUx|`mQ~~3BA6F8S%ovG-bN#W=m*RoF zlCuSRg`uBNYanJT%LEleW&FRq*{2Jv#pFFJC`VEbReGa;0@bRi^W>}fr!dkgeQJf= z6AUoNz3f-h!*w-_9bYht&V&C4i}B0|GuHdZ#oqV(whGd^P$k@EKW-!KBV%`rre?M} z)%Ve$Y2n$Z;WHZf>E9bI{;qSFHr%B?b7ilfYZ!kTC9~N>VJly6_cC!_rI3RaOy{Ig z9s}~`MgTZ9kJ8(%)?*#JR$@60}PJk32Yj zApD_y#bslx$GR)bP{xf0CVDRf5Xgn_M|p!?FNi~_=c%&nD}%HaRaF8QA?Jm@ux1T4 zwh~V(x6GuzvM%Y~)-y|eA^Gf8HF`c=bFQxw=dddWc5tT5W({M^B$B2HEk^qbhP1rJ zcf#z{R_pRbPfpk3jTdty!FZPvpC)}=%%O?rdJDYc@+#ya2KcexUXa-k4ZoCL6A&k> z(KOR$m1cV<^j*tB@(@3n_mo50R27Y!DmW1MV!P- zs>5$*R8vv3aZ6921BKnKeA!WtDr03da9@7C04Q-J?K7;%Wm0D9v6r$yfZuNe1&&^Jv-j)OZPtlA&rrcb@De*T2fi9uWsI4#natUb6nf?4 ziiWUXeg9FqHXtizin(7O{4rfEkt3D+z#;e+(;A~muk?cwDl;q{O;#l}951R!HmmA7 z%UV#sIC)38F9=nb*1@c;V@K+cHko@%l+XXY<4{62?P4I#2+knmP*!{f4RB^L#YClU znJ`pFhjSZ@y;5dq<0FIDgqom3&Lx;p9i)8db`G1kUKrr-+0l@bNP)|A1wHC-LgD-{ zGrScip-65_elxj>w61&tYkG~mn-g+)DAn$M4=ny%gT-v@PVh}8@X68a@(Wc|`Xiy( zel?KCcx98{w$tLdNn9u&roL#MB#2I;eA|z=h|ZL}m&25P4l7XRWKKO#HEO%TAE{Xc zxBmy?``>1ki@F*QBoD-*FoZG=N(Etz8(~Eji;xpv;+%py$Vi!Mw>!nEj2j4LsCb;U zg$FP7qTCc-B+e#>)p(0C?X>xpKB1YT0*Cr6EFuRo?p@4lnrf(Kz zS2iaq_mfv&YJ2_kI}WmYTQqs|qfGmr>=+|6Q+~W8Y?r|i3;8=2h%uKyxMO*D?>4~p zO`hUuUP6}~7npD-Kfq1D_M%O2OJ1Va`P~Laa~TE=Yoy>Rt@yW?Hq^C(OQq+NGS-k_ zhrsXW)q{UBGWLsnzcLE<{RGpnBj`}mqe`d0Dl~;^-#kzn^5;0~1-)FoS6ZEPpX4*V zk9IADJJWzF(RRQ;w{OUDHUe{Bsqo)>aDp#@Yo9%-;BM#kz(DN(k8l!4DUz<63#5p^ zb5N&W#*!;*0dAZibpZtd99Ss>epro14!#?Ds)#^($|EHIJrUSdMTkzp>lLTN-FGT$ zw`3pEzfFJI@ZtIE#2@vPVtjqb5UmV0FWOqGO_&s+zF=B8`1TIfL{kTh`|%2ad! zP1NeEZbfH6iij{#pl2>mqR8pW463tr(;#Nhqp?j+z3+w4KY`(O?!lQnj>jc+F zUmeVZ1lDU$0njoI$2)uxLh`{jG?s2tquz=-|1iAa%wm!`fuj}=4J7!M$_taE@k&b&8+9=^!X za{axXqdOUlUCSq&X;1=0^0vG`BB3$-OEEDMpDy*ej72c~$6ZsIfO^iz6=d9j7n=bW zRw(t+P8$-}Njyax<;yA{Hn*fUR7Gx1ZE;4!P^(P+SeidnShzq4oeY8KXg6Za)jU4tLNb9wyvEdGVxj&+;e|}LFd#P$C8A8HPy8@g*4U4D=*Uzqg!oY zH;15kfsg;WKRoe3hPiNBY^NzrbX*Mwj_Z5=p~!k6l%6;L7H+R)2;a{M5?-in)Q2(c zL}|lUJm@6qq8r~EXp-)6MgZtmRa}Knaw_eZIZ_d54XA!=*=3Ao`|F>2G=(f4n!uVp ztVy|+ph146Or>vYi^dU6R9<1W&wCPk*Whxci>CAJQv<_kdRP64aAEcOfAr|wteL4` zPQiu1F&d$$wl74=Rk3!#8JDvFFqY_1cjF}&)QZ&=2ec~)QK7&`@5 z2Jdp@!RPPDpqGl5D);pA!xKsei~KQA${XSI&*n^TdX~F6K7Hq@e<QQSn>l-ww7Il0KL7r8GE-$MUe;qpg^M{2_*RoyRdY1N;B#VsW8UP4s9AMV6L6r~4< z!0P%27yvu|SKtG$i)XkURrU!r@k>~eyhvhCLNg85qnhu5ds?~Fv4KeI%XTkcn~ouM z^N{1C-#FtBwRMik?oi7;E;pEw;!|#R_^bc453cUZZ+@nd^_!|ejQI6b@DpPM?`@O* z`Obs{8VoUhXnWaJ)CBjPqiODpGI4zOK(6)r6UBKnVL*?-*s%HbTDHUfvBtPQf0z># z7xHa~g-Eig@)b?2$!Tv#)fKtn)SpQt`fdHSh13vBzaod?b_1sssI(55U0<9 z>0cxj)({a_6?u*_SQI2-t_bQa92OKAJ3MdklEZm#4~$TDBfoLf7!f6XS!7`a)`LqI3wjg4X6=#DML8(j>BIdUB{gI=R;U*mg8M9f_wv#OTLH>$&+s5UOyqR%%=1?sx{o#<^kmOmSVD$ab#csiEwnr}DlC5Zi(nAnbB5>-a0`wai< ztHy7R^Y8hOjOVm@Rhm(~KGoYy*;i9388kfIOXNZONx4;4_?*^+irnlWk6Cz?DC*=< zC-O%Wzg7a}^`b%}S_4azECp*}keg~aMe!tWjl;lj5+|n=I6hi{}ZjGqAoq@ z{|1N?Lzh2e5rVEi+6l{}fl#x*zL+Czf@Tz|IDHPOyZc_A8#v z*Ls(DmMRlG@W;cbkqfclWR_r-8CH$?=KL^|H)4ywqXtb%MX)D+*P}J#+3{+{M`#}*brcdM&mL*;6n0H>G?iVBCg$igA0y%+(SVFjLSk!;V z`X=N_p5vmc&U=@(S-vaW)e|e^sA9s~VN5*q1CZsnIhCh;!=T!fP?;31TX z2{sVJy~HV}3XJ+hM^PjDeS#85eH{2(&YJ zYPbS+E8(iSD|L2x`m}JGeMp?K^&r)FRiR=Y8b#soZyss2@pmi0GPLFqDc+VM{@g+= z@jRZko?=4(aBn5=+=5tjDur-CzRs9)k-C2JEA73Vb&U58=pRKs$%(j(n@h+V=z<7{ zwG)28j0NNdqzYF4ssrnHf23ShlFRVPnWcA7e{nGme*C>-DK)2z3tdvKC0k3N6$!;2 z_g!P~k+^{Pb${swYG7O>_|+8rgig>tjTdNcsmV?Jv`*2E6ukFz=@3-<$NQ+#gV3DD zvvH&;O{A@fvPgn5we^Lm7at)%hM);m*|v={p*qHGFkG{!cR0zKU$mjw-HuFCAH7G* z4b8fHLK+p7p8M-!xqb||s;xmvivk~4f@+QLO=;XOrx%1007P|c)ldctz{8(T73;Np zTn3gzO*-V{CH$v-m3_jmk)QPz65OMN;C9chzvni2tNUB(lTx+EXOR$aMRD z-h%oOdLf8Kz}12)zjKbS@ItFnUT#swZB<2?)3UiNh$Uyb!!B^656c~7SEcHX67 zXuJYBW{kM9srqzy@92`riNg8O>Vs@VC0AY=lEpdEO~10u1yaD8g7lpKz1y^Ip-y}890_OE-#Z=GlPtvxlwTFZx&1}#ug z01Vsa8IN85)OdGPEA6iIz=Yo(P47}kj7baia>CNr|AUPDigK=y-xpRTSVHT6@#<5Y zt*oiXLUkJm{Y3<=rq_inu@xtOJ=#m_pUAJEZs3rWGRcdvN5tzzg<~`9S8`RBGfa0B zRhl`?osw=l112BXmJ<^i4m*sv{wODN?ud^yA@@IZv{_H#fxUe{6E35pqTyVz8)PCD zL?2uGte_ts@k>In8TF{a^Fi8b{eU(QPTcb>Q4a*la9hA*_@_RAY%TWb6)0&356-Q9#8Yw%)aALm$c71{>xC{WiKCoQr{X=wp_Jv z-qZs3kAah}waB_GS7p>&>6>u#MT1`RcWs(YElGouq*2c65t*lR z4v1oi2gZzsHppT?Lrz1EXPj&XwoWy|q_L_@Jpq%T>!g>321C_oTu(K(J|2{Bk!Kpc zqO}NOb%s-&F>Deh2|lsv|93=+nXGuJ*UBA)pt8^0qNtN%P98I~BIw`clF4HOKpH;7_x4@AwI*5NkYcZLmLr@l<|EKZ%$e1f#gTVwq3(YJ? zOB|8oQN5n3EYl>N+?7?6`ftbq;{#fUV9GS!A|uv{q8?gk|BL$w!55)AdidA4wyDDg z0-P^LD;Wpw^3m*AaME{za~($fGH43_8Rh!x|MjrKGP~p=Ng=GV-qMjD;9RD75ecWM zidE|P-McYsAY&uX+pmsGgl9K!VA4n9{jhH>vR z+<}50JFpYB49VnLYLd$YO1XV6<<=@7DT;>gloG06rRSkLtJrDSGiztusDfDnBoPq1 zZyCK>`T}KYlM@=O*Wp}Gao+3RZGXBfsun&wI1if7mD4dq2_Me0EY6jvlc7if_S3ev z5NZqRqU?c}rN4Snh5@YRH=|@LFu7U_8ULf*OJr@e%{7q$93HzLk5uAfM@oY;B_CYv z;k?f&BLv{2fMbyIK)mbeRMaEcR#Rt}S%oDY@K41}@jfFS?>)xK`M24am=XqbE#S2RUP)*c8kIhOk=C!~_Z&j7 z&HtjKs)>8#4J@8tEU-2=v87U<9FyqBc@xP3eMa)emO6}v(85nu=xV&sMn@TB?U<4N zLUxr~;ybu=!u?6TN_O81?8V0!dk*d6ka9(2@39x1xY5WR;}pxY{dvPpe=dSn{~`LG zMRBdNX(>IfXMGHoA?m1R3j6+a<^=&mr${Q6-IqSC=8(w3&DNMH3)7j5Ey76|vZ>#! zUhkPl81t`o#hZqC_q{8lWXF0PgE+xmZo<>k8g4YCsjAZ3t(nM=P3g_} z+GHR_uAX$etIF-W$7Zrz8zU=%IukTiCSnF7vE>{IV#$s!#c{iG2_J~+TOL&e?#85*gZpxkwsD+4nTyLGEvR``&Raodw6LMy3cDCq9Pz5AC7jNWCHLFb zqUSi|4eSb1Ug7|G?WRB+xIp@BI!N2lfveMA$l}egjm?3N5k9-!!H{=jZEP87%-zfY z4G=y4M;6PJ1ieE=h1}aWTN{)Jv=Xxk@->eojL}S%9pj>%rCL?C?Q8`57L;_{aDMG? zLloXqsb3u6lL98U!w&&pN`h8pCzoq{%%o?QO=b251;6*|-1J+`Z+m)Bkzsj!57);j zRVqtIl^F|Uun2s3rCtdqSS+_vO$lM0Ye^l88+LWo<#%r(vG&<;WH=&}`Wddf%a1wx z-xk=!_pQ6(9Ie;2Dl1Cx7@{#N?Q+3f^6Mfgd#?;xPk2emAIEI+F;b9?=|`r`iH%%Y zQo!TBYtSG?oJ?K{=|iy>Ty)b9ZpVcNR>@12#JEn!YpK*p%r)q$>-Wp|{A zV%#Tdy)w`Fn{rPml!l*od(*<;VbdRfpoOL5RA<%0 zgQiwAl>;v$vAML5cIbZZoITh-GwRpT1u2lQo7w6okGx&*2)>K(w&uqoxzae|Cf)hU z``|`KHPPFQ&&V@A>}xQkFTh;QNSLyd5=^=Bjy0F`agOijCFD(2)Bn^bllsHP>KXD` zvSxYy$sBCYe?)!uuPu?3H+mf_?UL(og$WZEbB_5&3>#h40-_SPJ<^HK=#0`OkbF{N zXHHf$H>Ytn2kGg(`APCm+j)*CW9N^Lfq)-mHR1pZa)><#%IF=VX}0ls8b14Ci9_TVkvW*X8HPHGt*U8!&Xu3^ z3N_Ia&+0*BaQaz7VxsGpN@Iy+8%J3l^he_ztPs1Pbg)JLNwF_DzDv;QZ6PmY9u?FW zrg9}$F508Iode;vlYNseSdv6T&k0$$viot;Q!=FhLU(dICQXV%cfb-o6l`>0gWM*j z6*+Wm%MojQNMY8_p;?^rZyrtQU7nACUgp4*hSi8eJX@uQ#%6VAEcioo#iC*O8!-sxYTl z#f55^uNOT}kU10l>F3t#e;M(44=>0RfurBKTvMOWzv)m&k69B)Hj7j^twT{Z1-%X4Z3_3-qRmhV(Ow3%`$xSq_0rwU$MxxsG~nkF(}5+# zc_NM&?9hcs(sCQhHm?D!@Gu25o_=n{aUXwAhQMcQO=>rqR5f>s)F>M${vZ0lvYh3h zhTdm2q#pxNS;Xt7J&*JK`}l+(yl>MR?V>gnH($Vgxz;pH^{8=0!<$eN7pjnGb!J(V z`F$6g>E7(j`B)b5Km)9we9FsuWN1e+Skz<|*lJJdQ%?Z(;TyhJs2A-X^`iCc@wn^o zH#_|m;D~5Mx7RNr`}6WmXI;FvlFzP{f+& zXsClZJ*6K|RlIPcujtyM!SClFx&|cY4b2wFNpg&zgZ5b)2$+#{hT11DC0&jf2b(CRIZt1RX5CTM2)*yGnV|q8Vz$rzu;1uX z@K<|aH9s&#(rT-FW?Yg=G4>w^-q2;58C$#D?JxtbW|-zTfmN@@{uwdT{pPtSmbts(E=+PH+hYOV{^s0<$4elaZRo8F_^t3 zSRVRoA*Bk$`>Mz96`X~qdAMo&(kAzFU6XZ>si#qAoZRl{N~57>KLMvvU<(^e)!{j+ zZyn{k%vnuxL$Bbpn)J4NQCF4C(>eb{H{eX-O0~LxRIG6xSoQ}c)pY+n{^?Ik>s!h< zo`Rt|%gji~%7||FLMW8drZSY`s`y-TAq50mtT_A%yZIQ#4Gvm?2d18?P1W>t_U) zXB7I!z#V)?W*QhB$24=${w}Y44~h#igJGC1^%wcf(5(180xQ=_ zrz+QDP0h+V{Y{qFE{(wX_!8nmMsRp?kQZntEt@G#PnM_8@CZmJN!`YbJNp`oFL`Rmv850N>iD=h%NjLJ)wF?Z426j_Wf`J**A6zWCF)67#hbr0Ki~H} z_dVTzJ)(@kY7|MccEQDa#h?1yVmlpx@}~-4I-{Fz7w8CTN=(I{_fw&Q3KX|B`r((_ z0x<#JgKW#*FTtMWyg(>IW2WwkMKmobr-f9f$7$JP-f~(IJptz*fWem(k|%mo-`M-? zw~HJhD})ugn!8RAM@T~ae&bOi@$8(gLrR*_ohJ~|GU+L?%dtv~8!wvQ%#_w`0o+~{ zgJAPCt5+tjoBHsl+ANDtT~EAb{9fpSle_dc7?r4GtpB!9$HxzKd@R20rDK3G^f8Jx6=3S7E6|CiB2&1O*ukFK}4|Hw+S%Q$0WFHRa z&hfxS?~WcDB!gU0$^^`S4)=e`#^`*m?xhl}YAbkyI-Kuy#KLAi+c<<}VqZH?SvJxV zAri{erw=WQNz;1u;p}_Xdmg*Vsv|F|pJk+T(f0{Fa5!?mFm5Ppoa&owIpuw=~ z)=Mc>O*xx~tD8=Ht^n6SqPHNL7_W|Kha^FcVPHLMbTV0W6iEQ7$n@wUrWEJR99afnJJNsa@`&S-TTVuJN-EVT_TgIwU^{>%R+NI0&2$ zoW1nRCpO;P^m_w`A$MuzxcoiVjTajR%l~DBP_IbDd@D!EDm6@Xsp$UBYuJ&s5`2Pc zi;PO!AN^W-AvB~U#~szyy%BqBIde@f3JNflhC;VWZw9W(lF6XgqUTgb z>oftLf5!$OH`%qKTsD@=ZNH~M91RH^?tfNg`lI}C+Q0J2lOSTs@Tk#wtZ6$0)%Jl{ z{5Y%H=DJuscPnlF%z<)gAFhZugN(t^lcieNvDvS{u0KP?NC$uAP$W7IWSi;|s$uwPKOIZWh{e|y4qV`BLL%pD^P*j>Qt-yvPZVQ z5?CvA(Zw=THg!7CU0{574zQ6Q)#iNkd#GI|4I^rrzwTjsb<-2aJZmTxR_d-q!a~*@ z%p(@3V!4Yn*)kMPPZ5oT^>Pg`#L92g!hoF?_S z#LW9RYj}j{wrhaIZ**%zTl6$RQnGc|L0b~LW_$FAFAN9(SgaJV^4%Ckb>{yx#hgL& zKnF^4b;m3#v)hOH^&1CgaoTlmdlA`V#>=AFE1J{9wGU_nb4LjbtwzZj#@s#ii_ASw zfv;Is3rrWEtE(XCO7fDJcwmycg5S5#7qde9<6mz;K6c%kkEf#eaP54ePq%jfz;oeu zg|B+A^Z}~qB>+mmyp>;SdrKphkIv$?A<*;2rMXzY;&Ixsq}=D=f$;#Z@4RL=0^ z;p7E$*=JAyqJjsuzP29QTxh?duT0QM?Df6m7E0G4Z4q|WF`WKm)G)K2;tW6aG2-e= z&0NAB%Xto5x_q8kR6g@JV+Y|`#VcD(lwwslrmV1AwTbLLfAWQ}j`gyhQ}HF^@ax%e zN7X7;$vNg$QKOdLamj7S`%)r`SOEcPxXe-Bh%!}hgzral_+l!c>Cg7K%D8^$FV#OQ zf_d>1IG>)YciP8*&2{$_$omV`qwOJI1%UIJTt>Bx?`K>{%q@<7W1Cd3k)OY}&2gbI z){L+owHImf0-BK$yIp0vbV$vQeS(0O?w+a^t7$I6y+8njnio@ zY6%=)3pwa$uMpn|UYFO&={3JD{aUx(G%EJ@@%t6(IFO)MS>u!*_B!Y-G!F-KZqskD zA&0&umQc=ez!W#>@AJLOxtmXIzL7t5Qqa~a;q7Wqf6hx{_%Dx&$>t-ND?wig;CNj) z>g)5$zCB)5^@+6-fC`$Y(tFPpE*v7(nX^TM)~uz`LdzkKVnCK*A9&1)3y_*4CCqH; zCCxj{kO-IEg1(77;!NZAAn77RtE1#W(6j2_s`xWNV<<8lV_&>m3Rvr8d;JdJrO(!L z@+!UN=flU{-7j4V{>&~!X{08skJK4xw1X(ydbqR?4G~%4mH_M7;-1B6LS7-rADjAggJA1?-mt(9#jK- zn2^LG+4IoWGrJclJa>@K!hoP+I`tw5T-P*Kn9YE2nSWR2j-0zR_gOk}>WJ)CI@*O+ z9j4P3z_S&|9v=V)Q7w2IqMPA zT$juqZefUQU&+==kYHrSKngF9A}2{fgMh?TQ!4z%0)M9hQPZ|Wc!pD z{v~Pnz-}$N>#oN^ ztP>S}$sOdncmrW+&}8vb0~k);4`NPdvarWeb_B zSA9YF;KnI#bu;+7%#0HMee1_O^b2B)IXcvXcKU7FFA>!OI_ECllF&9QDKE#pQVhJ8 z%1#CcL#=bWv>kvzoF*WWhFcU}ciUi9{$X4$A>>>HOW8z5#EzkDSgLcImx57ImQ;iT z!;YixT|b30JWbtpByj8%8IZ6OKyi6>c`iQ6->;!d4JtkiOA0n;u*DmW56^P7#o%}) zipQx)0AfjRG`jaQnEdmTwK4(SQEJs{)IyJXo2?x?dOMQp=Pnc@$E#J-V5+X~=gEB3 z>5uMGS3GQ!g4?Vxzs@UX(S%kvXL0{lo(rAkoTE=OO z_FcNg=k5-{PR26ZgzF`4nq=%mEgPtnp{<26FXoY0f$`jd<=Mf{b08{}W11pv*cuTJ z(4(GL=;xLp8*173Vyp)pX>(mS>1~VWN320ibg9)R138-Nm-mxf!CnL0J4g|TqXw}7 z+Un!K#&3Nm`p>ahkMH~8gXyTAp}=Ao==$3|95pMhqGrYQ$I~zFp(a0TJ+6J5DgM(@ z)unxe0bm=z>B%+%vea)$mIYq3Z6qr5RB|x_0G-)st-HN(#2YJ86AsU%oBe8P`r zzhrgBrH#_AUloCorcZFpv!CTROZukUc>4Wqtnk@%0Zgs{?THlGr?p1RUms3hFAaVX z>I<9y4Ev*;hMVk+@rhHV-m}9dQ-f6 zc8)FzV*T;VhrAEs;Ad?Bkj@C_GuZqY=)f=@LN}wKE>-6V54uH4P7F9KWvA?1IA>;=(xr?^F-sGKYB3DnqyUi$@P7bN;dv zqVm{I5t$Oce1!|7Q`#F?);&XLpX~;6-LM352|e^SD(y`F?BcYr<8~~U4U(Hv%-hOn zh^Id1ipHc5up>Xrw-ga<#Il2hFGuId=?c?NZD->3h?8^XJ75_7$t^5h60ZHnBJEC3 z8!?e+Z@o%y$N|-y6if=f@2aU1YIt%<0R9Zj1rREu7N68(Qdm|D3)3I|2&6~w%7{t#j}@OZ1NIad}`5AWge zu4Qe=l_#-%6{;~2+1LOO{|LftTB$M_mrv1IDszT^|2!P}6)ktb2KXGG@-r8`O{t&D zO?yX>Rf0G>l|^H)t*A{WjfQNrSmRXnzpp>Z6doM{KFrjd_$JV+nbrt6PkhZSO}1ZB zoooHT=6yq4#ql$>=FD={aBQWY#d+el`8}JfSfO|P391Mw#FyQ^7=k`}^rNxyGS)E! z&kib!Xqawy=`nG`9_$>{Tm3=ep)7Idlp}9c*OY*<3WA^TL}s#s?@QzVV9)!UppK#0 z{}7L3JH8wY@QSdIw@yFaUTIP+7_{ibspa2CVHH#Ib_F&qw4w{()neXl&9Zn=>M85C zURBDb^bH7b^;oQ1lg1QOh(DP!Zbwe%O0t;*MO?SmOl(Ro$dsT=${pL}=LT zEsEj_z#UnY9a+-nJmUnM5%$fNeiyV|&mRod>JKKLzgf{I0r|+xn(ISh{5lECc&VxN zrxr4=p94~+mI5-b9$C=UjPC)nCMl0l30{$-A9PRA7jKjJ(W$>nO=xdQq91>5?)yUb^gBrvs9XK^+`|Y@M1E@MrM1Br)W7E(>r% zQ7ZN3qzOlx;)L8!?7}F>>BY=zn}GdGbrS^qdKPd zhPqr;C0jPr>^=XcZqI#chgK{Kghp1|h*)2whIlfvfwKl9J<5~d7B+sHBuy0%MX_%# z$QeEZ`1hC!qW%xO3z!wT=MT5fcfjNQZZ#I^c_({=z{)CjW!@ejZCEn`5W4)VptwvsPY8a;axOcI&p}e>llx|; z(DidMN?Gi!Gt~KRgQglU8`fH5A8K5Hnf1*cD@PS`W{4H2OKo-!K`G>~Ua7>T!7|jD zkz-kQ7!X7bBh(ex?RhN|x7;W6?UtcqV_en#0bg*QV1=*VLJh!80}s6F4!A`fp=VFH z)%6Z#-+P>9kq&mN1Ss!O7D3uoic^&@?q%!gs?RzXx-LvZ0v{gXY?EsjTq?Nl#9&S@ z7Rj50=TqgB$l;N?%kJER3;uFE?)ndhHUrdS+{ViMHEQ?ph#g)GiwJMj-PIoxW}d-< zUsleU$4gl~4CLtg3Tq__#B*4zg(ssn$ruf23ndhlTVs>9j&EBj2(5xl)#Z(kDj*;L zl{A4Wx4y@M=Tw*CHylnRT&PfZg1vqEO(6q24=hYoa^ddJqEy)I_~~y0Q1tKX$#S0> z0FmJy&jx2219B$-u*|0}_GZ(~?5!`?-TgXlWoI4lTT2O}uW^@(^&tJRxp#^IW2Tbk z)4%geegWD$p8k!wJ<@!)ErOG-QX57^4GGFep2=QiOtSl5x)-mPAyt!px9Q&*xwf4s8sOSp^Ll3LF zPgTdcOn2UB0=NMXEeK7mJ8@#^zN}|ykC=*4!S?Zd1Aj744_=_aSyv%5q zHt$at*AdJH@&9MSdfcGWr~sM(9#R?2dI78@Vt}m#(lCxO`SQkNBp*YW!f0qOY^&vn zMFN+mJpT57{EzWn9gqK#$QHmNnRI>%O-0v}as5-kkJqaf07LLz^v%#q;LE+D0f3DQ z*a{pWW9?dij%41|>z;y4@p>28VlKpD9C6Jn-Nm=R3$BzbnUdghI+=L8JeAVjyl}2w z%YndrHXVzz6#=4OXw6D+uf992{m^tn8 zse}n^nT<0|-ahcpEY!7=zkF%RB5pXw$oN_>u)H4<(82_SV{$M-U6`n z+vD5K?C+;M^)IitQo69P(S^ghmO4xM$GE}lYtGwOpRs++{=+f5GT!#Kx19uLhiun} z{=8rFat&x~?g6H7SeV|It5NOq7_jM>UGXF&pw-@5pmnRV*IL8}&RxL^?I~a?m`T6I z?Y#U~3vNN`qQi(#v->DGIqPU=-@)^AMO|+e@d1W~xkUvQ5@+%NQx^?}AD-r5Lh|c$ zQJqdqV5^=}Nf7PLwP$7#Q@i{wHTekWa*0{Q#g$PRS{1VaYsDhQHDRZo8spYoXt7ht6zmbWh?osnzIQk~dsU}~a(+o*G!d{+gSF+rK%#c6&f+M_?m z7S+%TZh&kuKmij4Erqje9Mm@X65uY##RRqBV}Y?00m8bM6Y0%A>bkOsWzc|FA-#O)bo_No-jZber{Iwmot(X=gIs0`cVbLZ`UoH4un ze|OAacI#W;It8<-E{rJW;}oFMb!E~`){QBUwB7@$gj#26VT|M2GJG^bSOx@*81H zFmrIr6q008p&-`5StbdQwp8Ozh6;{wRdn#LoD2LE`;0kD#VkOCTTZ(BzLFO}{4z}z z^q;@htv>#>jqxisHuvHt(yJ<20cPlH6M8Iw8C@9%Hj~!$_yS~bVf@FVT^Si?hSd20 zw7e(i0IdhJY{R)t4sv{oeIy3?qcD4nnZ3-4!(WN%@?F#T^2-*k?uPHwt=X4dw(q-O zVD_Bz3}*k~Km3PPFgsc`qn$PZ(rndz(UsiR)VQbsiSCP1ZvkrcT)iAwW}Pu*`!YHr zflAIf+f~79w=pQ;t7*?Ztz)W}{=!_{kD&YEWD_ura8CR10_J>MBV&h^YD;fZ zK2&RHL5pq9cZfuZFYf>N^=^9)e>dA~K9DK!nT?TM^gPY$y0@s8&95w_>>*Uzksga4WK zlu>k1%sk9Kt-|DO)p6=h5`H?u+H?rC|2b5zpU=Mnf5-;FDqXO;JY$ntE5k z3~Uok^Z?`2w7%V&l~G+48$V3?U$Q@B!7;4j7ywscBXMYOWz+>CT|Sa&7hYNlY=xr} z%lei%Ctp0ofoq=8j~KO(F)w@8GZIjgkaoUz$~gM3Df=S?v?8Xh7yr0qd|tbN6SvUr z2?_}#be+tyNJBz*;f{DOtU{mDTpGZgX0q>>Lwpl3NjjSL67w~o2%yE6X|_S!LxXa2 zAW98`p}$2WOewVGb4SicAU4cHV(-kdK9j#FZo9s>_Wkek?q;KatKnD9U>bm%fY^Qt zi2mcukH6Ttlw;OIYy`}TCl|=ldV?&@H6$xzhFcM?NSCUJxwMG2)u@$WbniW!tM*;pEQix7mhjiw1?QVxwXTLZIg@5(6c1T}&gZ5m)>U#ewp*O=Mg z?gg{Ax=qsM$D#YT$k*`p%H!i-(SGQR!EAHJV0L=OVD^mj3}!EW@rxDAj4@JLPn%Aa zk~V^iCblrz;;i7)JqOd|6Kv||tS;5KH^ROHo|Q4R8)maU)>U0hm9L473%V@sQ3Cm# z#XS2&D+*>W8Sz~F?}ut8eA0jz>S8aMm7=?;+4H4H*GIGi%nEuu5xP9VWILiP78V21 z!$I(>fvs3H7L3I-zdUp1JsY!M6*EN2aKdZ1q*~Vm;eY##rzeB}SwJQV7Sd)`sWx(@ z1U3^W5D;=D6o_ylpUtKQG{7NX55X7(P(Cl`Vp66;SfrMOQYiL-U%b`|s1zh+<&I?v z$O#xzSLAykkQtr>6}tAor&~CmCoIHDOF#Jj?@cAlY!n1Af&_49nO_519$_JXRsN-; zEVhUvGfkgkTLHBINSSVMLC{+HWJ4bh0W%X8sXyAXml^wtI+V6r@lx1g-W7fWtG&_2 z1kBqnR`I#SI~PTNfHq(H&2IhiZZ=Xi>*1_~E^Y|TYY@cxy~?1FK{@jYXtOVT>;W=~ zH8W{9o|$l%ab`GYtl2itjZ5Q}KxP*6c>^FOFjl)T63iOKtXI%lrA$@3cQCV$wC3=4 zy>0$a8Vj2~Mzf*h{9)olUeSK!jFW$C&N%tUsh#cdwDX*m@txoKodwML6p30tFy^eY zWt;Z3*Psg^A%t^L8+Bn6J5SJ{ZRegS&qr9Ht%7gH+c{k_xgT1!$61#yUzSdwYTs9R z?#{MNj*?*Zq7l!rL4nB3RVAx9MaqOXm;M;~g*nSX_|krLU#x%WQg6a7zrP%lO2rJs zDfC#WWAXxEp{F(%un)qJVlrx%#cHvd@L^+t+b*UD&~lHL1LsYtm~C6=Vx&zzR7umv z%bxaB!_jOojd-%K-lj<(56hx`?Z9MKjM-9WKwR4+42o615;m=`wzpgip6f@!Y-t9( zg4q1<2fZKvut@{TEVNU#O`y(ooJGYV{1iw%VQX7PZU*XfW$Zx<3xNCMu;|8yK$ogz z+lFzr@Ccmsa{TOXXU)f$a>0GI@qxi`OCGVa`0;G&v1|vpZHKiyBW=A) zqec(ci&3W}x+L<~X8ny_`@6Twb+UR!du!8x+smHvWTb&N3*G;#0up9z)RUI2I*^f& zSuZpnBNI&!z})9^#k6g98FTDsX0)w&)aU$Sop;(KCN66TW;X00Pu)y0cbC_|nd%v7 z@{O-G+GWP_y!w8tJ0=I@6@T=@K6ru^APe;@7vEVpBO3+cQ;JUk>MpvoLRn~8#<+qR zQv3`_<^i`vIwMb;99Qa4Q7?cA3q80nCi*Dr3T6!5odrT$#XD4Q6Op_*%=t=yYX-Z3$%4&NmjrCD})l9)CH$ zjO9i(s~_UZDCzUVELJS~UM-WuKk8Ns&zmA{|3UZ? zaMRm&g|oN2Y(IX%!0gHA8O+}P?cd(qT{G-uJ=K#Ipwy0MT%%1mp%8)gEGjJM{G2X+ z>fR^Ubseg6QHaa5@~Lz+85E6eeP0POt~L>&Af{kRcSFhRo^^UT$8rhMx}sR7Il9zEKd5p_}v%f?ZAx=B*5C0 zvDp1G_AJ`+Xaq{ke&Kia!CSmqF!v8 zXojTnYD2gI@+_=N_c8;tEgZ0Iq$xG7Ghd@Lt;IP$>EFuxnQ3z9J1l_zoP{+i8cE^+niiixGpwe1|XwNcc#1IfXzNI z^Ajfg&~*5HjF}ZNX5M9FEK=n+`V*HVbz%A9mCc)0Oc}FWXOEFfe=Kc?Yu&y4csLW_>z&Ucc|70>m+kE{|GvP1FHE zbOFjkHoIQ#(~8Vv@7`#|c!f1>GX+X)KOoR4W2H}E%me^=4FaV0RbY1VT#ski#*FTa zs+5UaBX<5IA*2VP*tvdTLLd?kzSAnbt@6&aCC32FMCOAU76365a%?e2iBo+VbTMCnRS{j|pVq;Upl*z4QGf|xBw3X$TJ@EB%BMu^A zpH0&HnXt;@8NVyBhbGsb_a{E)BcYg8f8>yE2wyC#(grZoa>FgQ?QPf(Exi2{OPzfH zIF1kB0awhkx15Gv3LypIvXE1x)w|(0sFx$gsY@pq~ zYqa)kC(P6k)XzmLj0NL07-!Y0fzq~55u`omq-XT?Y+Nf?EhJ*zv|o))W0`g*&l&bK z+w6g_p`b<@sLxc+%;6($fH84h1dO3iJpZzu?s0m=P%>oPSmCaSa)&c9WRg(Ia&b#% z-uc0mQJkDo=^7RVE=qaYuz#Puw-b{#^t)}5XHLorW{-bdk?4Y0(chT23~@BS@c$zx zn3@@%kNM;IeCtolTp?!#a+=(v#m?}R7rZxRf8aF;rh#Nz{~ojbr#|6h^dqWSCIDd) zL&lFaflTYeEiCAgDCbgVE>h{hUg}WH#8nZKlQy62A@4zzZrE z%azAps2c~|U^7Bn|C2fuvkt)4l`-Dl$!WSiEV zV_L;*;hPopRWPf|bXn9z!bF8%kx-wWh9Vs z&$8|C1Tj7LE{xf4v#jS%EvvIK)~WN=eNoHvoFUjz#+m`dSjV~B=S4f_9eDBFf*EE)XUnP& zb*2*-P|QMaFZ&73M=U99FT3G-C{j{j`gKinubUuSSU9pQhMPN5)SGF_eXTH2hCGkS z{N#CEXEKvhxSMm%nkb*jQMwaiKQ>AIFLMyv?8jzf9xlmI!gP~v-MrbPTx>IKA%W#; zpEeP0Vj`nvyS{&B+@o$5WA}Q=#o)?lk|rM_pYGK*ui+AV_OqY<$@4=Idw>h7*}%qH z<#(9ugEn12sdBX_u<$A2Sz&6I-d+GKR#B!X@4ziQCkBO#vZ&LcmIq}&F0^^Kp811r2Oa)iw%NR|ZJKoWePWL$>tg51NFc))pK4jU zFD8&dH7m0*8p?78m@UMa5zrd73^8Yms#zUlRs)%US>5-K4XBCjyPDgF*a3%s#{@GU zMKrQEbsllWmGOm_?H4W>m|b_C!R+Zze|oEcX>$)Cy$j@miyg~*ufKQ=+GbjM)3UlN z5eU?`KZ1WT%D9LoN^V8?dMt(#s4WzC>^Ji+W4!=4xwka<(5D&~wUQyaM%5m6~Z zVQZE{%T+vCp}fIAd(xvonIpzbl6(N-MD`Py6T28SghlT#<0L z2j=RDCIp;tlPT@lh94*TcnA6aU z^SKnZjqp1SC`d{%*HvEAEL`X4^SuxIh0p#B+|l#*6r=}qO$?%HSqXIcS`^7T_VA2o z#?inT$A)~u6Q*(^4xPJK)?g!0=LS}Z`a4L)r7XMhjXVmNt7pPC!rGqx5&Ur~k0qVaFx&@gug`JmD^5%DjfKdShvVSOaU0rF> z)(o*_d%;Y~0SF_coz8PeTp9K^%e4j7H0u>KCNBC*;AkT)Pr3U4|GrL%l)+oWllFgg)TEQ?h7^n z$E)X1cSKc|WREdkmta@LrrjlkX{!9vJ(B$_V-0Mg%}SZ;=xxh3EuTDf*yEK;Y~Vpw zDUyM>s%m1F8Rnz=_gVG%tOuRtFn0FK_Z$2zbzw4L_SH1X7eZ)IC{tY-xv&c0l1ytc zDvwg>sv}U`ylT%CW#SOIUMgmq=p*p%xP_=`0Ja5n?WV^*R&T_4qt1Uu3MFk2mekND z5aZI??)S`tDwFGQl)Lya1v*kFCctaJym>Ncb_6Kc>juvH96E->cr=i;egOqyFQ(g# z5BtT>`)qzkkzG^;n`ic+?h0l*z!E4!teJj#>Q4pg(@x+mG+u0$`$_Vl>GY|M=k-(t zW9(Q1Tq;O~Y^{4)*+rfwbJM+!2 z*k$Rc^JWMJBGR|Hb5rrdQOFm*%+5y85qIR06}J>@A+ zxoXHFh!o{|9FuBb9Bi~qkT@D7Sw1i0n%FfrGX=Ri){U?yz{xVlAroUe?>)-f$y0_s zZpSDEpU4AkG6oMoU3m`>jhkXfxk7+IpXouh%RJo~b#b(lN7EJxS(Nq=cNW;AEIKs} zVAeQR_Ooo-aogs&kqLQM+#=fmaLrvDT^S$y=#+JIdlq$UZ@ioF_LM)735qm_kaVdtl~AH6N0mUiV;=@s^20wi(~;q9UnVVXyOdL;jTL2eu-mMexKIfD_ zl+BxTGv7VmFMZ+XA<0Mo{bO!W*t{O=k}kjci$^(d-oiO}_mG>S6XR`ICx^YPN$n zv2XQo*r-GYS&!lp`=yTy*Yeov+c6)m-lp1)dipQKEW3K5PF9KeoCLG6H4Bjf1;9ie z)Ve@fp=CbhC*7{<@K?97`2r;W0FX`i(mlye2vwCUBl>(^%Qt&n8571zAR9H1Q8l|d zSH}9x$Ej{Oy)6MP+a<BR4nmzWi{ptlvm;dPVoR#s7-}sGtFl!(J)uUY!VOw4^+W~9~6VWQ?aQBrlm)5p} z9rj_ony(fsfCJzjz#a0Zt+nJ}ci zJX8M5iMmLBzE3feZ}kw8R8rJQ>mt2apwTvu#-nrJ*`{KJ{~S;35xwFnnud5xI*Up9jK zl`r{1N;Ex`Z3N6*T^i?WH9!vzo@sPpJVZ%Td-f-!WdaY44a*5rNpmiU3ta*;*Nlo} zn5_y+4UlblO;Njw_^_dMeYu-4`4)LpiWw#ud)mBvw~B>4>8IST?r^j5g|^weY64iN zhRL~A$eO*%_(%$sAGXNTZY}J)Q)9G2&QeS2U`GR1`V?+NF{6U!MzJtHt+t9n79E>^icDWmy@< z8$i>tGLD;VhX_q%l*qoq`)_;YA4x3hH4ZJa>0bl6H61Yf^^zxEYhD&ILi z0ShjS?pja#C78=2-KUKo;{(A=vowadHQpKP>PVgMl4;SIZL#=?rF+z1)wwUEoeE0| zZycNO{zD%Q9(ifWc~1fX@UjMCqO*}|sOZr>Ce`%lMY zqxCs-k@?+R5XGT{8tE>`hw4kOA13 z37C3s{sJ)?qnnps!e}#}qiAq+w0->D?;bIb~+MAmW z$h>uB^qhdE&8N#^)6PX!D%;B*{xAy@_cmxy(jp#y_;*z%t&)NirG@6w2Vz6^Kg^QQ zR$Liwm4*e=d$F3jJV|-ga3N9SEJTy4UmtX!2`XN*2ABY!w9>uyutT+ed-Vkj`}ME> zO7Kb0H;#3QA1e}qcmZ&5Pt;F9WLY9GcOQMR2K+KfBOvLfe8jBjL!nP6-A|y5_%wF&HUax}?RBahtnlh>fKi4sHAi(+Y*Y3-G*OGf@dx6H) zknLx^zOL`&#$k^&-q5%LS`$a+0%1_sGFzkR4*nXFrFB)x&=%q?s2Cu2h);6Kvgo>> znJyBO_8Nb<*bq32P>K{lE0|^5JzyiV@CENu*7>M}O}9`uOP5BCfLWVx6A9z8-#r1blW!LwZYbHCW-tl3F@h?~NkdW7Mc;Tdn3?&>_2wtvW@B@o|98`9 z!d9CepX~x;VlyEwWY01H8Peke%J{J6Oofc)=;5pfGrBV>ob|D0A#2)pu8gwAfMQmh z|1dW8;@H?P+mVO=-5sus8~L#d2Y-F!moC%gzrsE2cP<#1J>)!t+3UQ{>nz-)_X?WE zd$A98O-vJDMB19Y%hqGZ4vcN%MZ0=`jpcb9v6gyn^Ms@ycL|DH+R+dhEK4xEe%Pap zVGO9NkGfoF)PW_KI9Y0G3M~yMF327nmX6sN!TLH6&JP49eue?wxL8TegHuX(94t z!yzuRn7$mma^J=YuOE~ZSErqdos3_;0A`H2_wSR8D^$JT{>HCk0MlJVnj_AP0LQXy zC>^q)w7Mcj{qY8*8R0F*w4YW1E&($Wg>Cgy-+ojj>!QFIn8%}Y-6ojHxq6A&*LcK> zjU1#(Ol)7UT+l~TzMxYwy#7~?1+zJ0e|;O9&uGDHtn6F19$O|rCYcun$aLSbBjU@J z(&f{gk!4B#ArMw5W~!t$v1Wv_4$MsZT35!`GPln+x1$gLhno`2j{AWsCYYW4bNk(k z0A>P14?fRX8Lz$e+E&S8Uk_~^V669v(IL;tajnu*WP(I}4b140$hxR5&!?j0OUjrFc-8i9baqlOb9KN%d8Z5PU+lCAIDLiP^xy}X z&)*J05_C8cz1vJ0VK!5_69Gc(Op|=L#ja1%c1Y$#m*+K?4U`|sbl@VWZJvYbJI3dYb=JSjD zq$rp9S|?{>Q|jI8Gdt&dzD)|%gqx0pEcy>XI9Bt!$b5eHTfW)MLnweBhDt390-Dr0 zKFl&rK4Qigc^T5a&n8ps8@>t>zRFK8`nIOu29Av|DjLmCyDDVLFY4(BkHBD=U&ty- zr2@v873{m`W%nvH5a8wonBmo|;4Bx`yZ~~IYk$@4%#M?HvvKl)0%8EPEH|!F9GE+oE^GNp_K&?i&DY%3~R(3Mdiq3uP#$bzz%vEr=-Fr#CWi=&jAX|#&M7GMk$ zU4gXXCh6t}KEQ(iYF6T{q$E|keiSCWnA8i!#wyPejH^oR!S!L}{uxyvUc4A)F(ED2 z?FmF-d`7t@RjgvFv4-M3@?hNEsv3!Pz$JVj8ns{g(Wckp$CGhm zbDsUr7QhJfbrY3xV@F&4Bl@v9-Rm`v$YM1rI z+rDdl`7FWA%un9c{N#i7C}&j65Qnx`9b?-SHLQ*;tFtni*+14m#xj+%J^@G+XO;!f zPUo4a^A*wvXmzZaf)``Yns_sUSwh(*`v?@jW++j}oSKtqy{FsVazi`-Hyf87$X0j`M2IMN4rLl_r$2I=Kw;$BUx z>XSVG-OZ7@GDbASiF#`T&;yv!Ba496-pV!ozJJ2v(ijDpNe=F2!7qEj{mjfoElD*+ z_bC$vO;sC7AFnBdH7$I&B)^D4v0-X`-9O9Zc@n7RHO<^yt}kYu2h0dy0K*cv zT=r{ou?g3S=Nw()yJXVRcI74V6a;gHs_MxEvEj7TjewLYq?=rO&N>XxCpjElw+`5~ z;?_gA2*73q`UZ&N`3K+i?ZqE9()zinjr2)f{p*wpEKG0rfdkN%`IpaFGu4wrpSgt8O+h`3~SwqW+_%*xonn4`Z^%pPffbiu&ve&-p? z9`&e4H2`otoB=pi>sJL`tMx3>wQ(K9*44fv=D4)}BS3X^Ir|j47R(;y_K=-8M5rR; zSRH=l4&HIK>3Kze?<`y!xfM@wEgo`{lVk|Q>2apE&qeJ8tANA@s)V{Gfpt{OLcq*z zW14F+0A~)TsF-#xc9J?k##15Vt)*MkX$|z95LnA{M&-Qhe)r`+o867NAC!un2X6SA zWEN6JPM*QLTeYboh z0b*3{Yd{kkuvtf@iB5wl(&jM7sg6@XGf5n>R{;}8W`62j>_c4|cP@`()^dz6iN=j7 zmykT$b162}KOQ+5c+YD2*0E1hmwG5g7Q~s0LjWCYN&c*G-CK&-T>`l&iCsYMvG3KvJITd1F}YxHUt z>a7Yk%g#DgwZ-_g)xVXKN4h;IA<7-L3AN>Z%lAgFmqXnz!&1hytb8DhpbfX z$~!MOXBGW&3p%km#|Y4!+Aa6JuY_b}=nk?RN;H%lG60)SOR0k;a@g|!zy(_>IKH^a z7>f1S+DguxU!N_K)W*vkh^sy5g5Va8rTMV&kAC3$@DUgPw@yOVay355!0Ydzx{fj; zF6n5eKQg(hUeJd+lnHZYag;H%UsUnAm=v3Ij0#qvOd~2+5%Op1mZ%9a(IzXwTdMoR z^XEKc&>I)BzVJu>+}!|Xm-6wh=9>>{Tp1f66SYlLGl8)R$OOjFr!i)ZhoQYpm5=sd zx_kk#?CWC9W?$pRh<0&foa^ZUt&1@eD7$2K_kh`t6U>_L_D)HgirMDL_NNytE91S- zb5_PzdZkxd2aDc@SrpZVE`wz@$7)iUPG;mcI+b;d`%eF=T^8iCckoyh((hGA~}2YF=bB2Klza#njcMZT{P1& zT^yy32ix;|O)@ePuA=(+f}a?HGu;;16e;lYO0Cx00%f}HPKb0rX5N2!S3$qt6OZ$!FgxT0E3*c1~z#`$g*ese~#1H?OyA#aJ;^YdPoiL`X%f={a z^8L;+;jXFhk^EymR$LgfzmG3lOP9YMXVyQqb+$&TW;yrJbCU!l6wKy)W7s?RCHu&H zi|!sU`+kd|(UJr)L)~#Em_6J6?1F*Wz0Nb3{h$Bye;Vjohcz}cvtif9`dKPdecSoJ z&UzbFuw@&Us#4=IbGq~}xBHVv+$4q!P-d!>%`)4SEa=L({;zT`(4nk{BoH7o&@e{R@n!7yQtly1T*bj`Q2v*xcdT zcu(1%Ok&HRkO`1wJ$$NV3T9r^waw4Ml@Snjyenf3WCCMU%Cwz(n*~9v-+=m0w{9P3 zm+a&HlG)u0X5VfxyjI259N@EYx-!1l{^E?mY@9KeZS8E2e|Mh2?0^2x|4HRa)vU&C z4e@2Lvu5B@I{M?`=7{Gwr`K=Vt_H}m&NjM5@^akstZ4fu4{^Is@LoXO60Jy!pJfC4 zOj}cLLFE+B@0UF{F`8+f{ZTN{w1?~h70fyL^_wEsh0JoLc$rM5gtU+aLIO0jneSF$ zRkbfeKqMD?zm-PDtFkzWg@fs68s`qz0hV1_agV4-YiEA3I&*fCB9lf~pVbzd2$1~$PY))pXX^`%c!@ee9s z4y{if3SZ@_gMDV?UJZzLfbI_ znVkzMeEoUR;z~l&6@{_+wkvhr51%)5XJHTohs+k9u88emZP-4HXOaOT{{@)+} zp%gWS$s=G3?AO>uoe8t-XNEZd#m;llhS;DRQO5ZNlU?fD>j)ii-1uxAc@n z3^+-f0`r1{BWx6DyxfAZvK87|#LN^J)sBEsf>Lb5JaS3T_q)dhX4>q(+-CbV8unfX z5i(m*jy>ftKPGM{U8TV7uDUFPxAyU?lnAL?qa;T&*;@vab|E1j1 z2gQN@VzbrpfZ6vD%%)QrrFwm?rQscQ?`abMkaWwE!R)Qy`mK)@5GY_l;g4OP?=}7J#x#=xMOyBfcJXKV6#YM`s zWR~_J&ao{U%RPVoCsH7H4&}+;SyXG6?ramf1beLw>)3B?K!%W?N5y7*ht=C=8J4TZ z)0s9^*4r?hF;u%0z{W5Sotf)pjKr2;*e;KVGu=_i54>vG*>0 zAUguL^$-_F!G;!)S(z)LZ7P)!a5h&mf0eLx*Iwkzpv>B=V_K!L)PK7U^d7nQ42&Hc zn2q1A90mf|Wkk&0UH9)8%!VC<*?PySj5jS=mGQZs`?+@l06T*Vt6qRFurJY<{_$z< zwB6-re)!y>+Yn&FKEym^WkKvv%owzYmkiRf0c=@e9*d+YY`+d>aE#G0cTmiQng+Vu zuGt4I+7k+lg0z0b#dQELNmiD^1U)=rMhNr1!Bj|#bTQf`B}BmGQ8CErmjT26*v&T= zI|chxS7Iy`o)!mL`cmg?aZK05}FxAQgkGBajJy=Po?- zA2w1EzLZLzyxG9cQWG;24q(M;&RfQ@avaHb@(f5bM36cq z=Y31v`GA0^{_fWc}5C;;;l@0-D9Wxw;rgR-vo?*#2^OeETiSPje%i0% zIr>bui0eh$;oYHI82OS+pb*)C&)5NP+dkWNYNs+1zQ`}k^z(PpLdYPjDEhfW{gg)4 zp)A_{nqVebl*~jt(n&O&Kua61D}#2A@UB>NALYXLw_5}@(*UieF-JW*RpXN^r&0o> zJ$B;_^&6kEf0^wDEVpagt*jVjKhq3}38U3?cwQc+N2X9uIgF~$2IaN!QjwA^`ihUV zO%I!<_QmM+qoM9=?|k?F^NeeupwXjFQ<+x{xdhM!gZ zj&{4(wZJTrAm%Gl7G>|Gsq{m8W(LMIjIj>;U}*WuXH=#y_A$C|v;KGg#<7AKB4;nS zS-(%Q_e#~&#@N&7@08WVKf=pUX(WIV*fb4igt7K}X3edwX5%|%1hU#b1VLKSvJCx> z_VkY0*FSGo>1u%4`pcCeT6^k@SO{hxt_M%qJZ3j68O-jw>#pgCeat_`4s+@_SJ{LZ zNE6Ud=LH_SDLWq#@;a}cd4Bfk*G)&M*w4!`6;WIOtRCJOx;er*#sW+PHbNHzP?dYSI!GDeQLESnfK^!A zfoxq(atcpnl=_d5m%3J=?$H}=;IDv;lv%xl8k}d-U>UnS?&SPu2F+@R$`DKI`{k*U zLjN*OEGArnXqF$mYDoobaGgE31&Wj)jnRx&>m{C~d5N|WH9K~1Ds0ggQ=NR^@BbF? z<@ zM1-soDMNYNuQq>~DKB1cxp*QVo_T`r|KiY}Qf^@~n_T4xp9j9|XnC$nvEs3Qf{_$CQLj#D z@gaFozytnv&J;%io6HVuWlR8N69Tb1Jf5PD+aJH~Lh+zP<7I)EEH(B%l(sNnGWQZw z{faG21SE@p;d7;BW76oXOyFF0j91bkJJ9e~6lXIGw!`4Cw98Z@Ezyo8NlB0_WA=k? z`v=Bj=XcQaW5(7OKO7S;DM*r%DwB9egnMX{T-V=slk#Hxb8(c?nQAVaDuBa%_+S3H zLjVTZRWLJgk}x_@_9JG5Ev74$x_Z5ocI_SFq#%F+vT(-()Yymh5>poWDe2rw&shfVoiwVCs59r02IWFO|8YzvV^k?fqpBwx7uH08@Pg(|;eRKh{WKG>Rm2eebq(@KL zJZ9&YtjhSNZ~CUk2}k`l#}6ziDR$^{LTU0+)F`WIk~{tUj{h@0yhXYoXA-~_|954C zOx1Pq}v7O!M#r||Tx?cd%Sk>9*9097+s^FBeGQhO99Avoj{-9)r@V89x zhz74vZ#ImO@xkO3KwN-j-4=0ZTITcZVXwR6t-PmIDKl#oX55BB)}okmi2a) zEy~Mb_8>Q-oCLHMnb{z;T^r#*aUdOFyXBV_0%l&fcjuV#G2@{3978vcgM(Ln9<$Yy zDx&~wD%;k(W(2X|du7w9jBVNcN-Cqnmz7NzgrIiMX8&8p&==*t{%`xyEeFg#NEwq~ zvaofYf`_lsW2X$v&Mg_t-sDZ*Wbxp|c8dqcYoFJdo1}9L6a`Wdn@{?Luv%M2#ISAJ z$T^kv?ZHA~P3^(V+RxCmsBq!mluFyD7KA(}Y`&X&2 zA5&kslKyiH|5%pS8SrW%ZeMj+|f|mH})2!))-^*H z)l@|Bw{)b-G2uysIKD}PPn!u^Y3Fe}>)iI_*|U8HV0rdj!@HV#nt`F|m{?5La)189 z?)^yId|wG`bBF6ZNT^nd=_VXDtBVn`+=hH+Ghobj*O?g&{bVl9d$MFr-v zfLH+b7~}T+_P`Q0CNztWd5M%o1fCqkf^`$Wq(x47+_yCoFTmv}*gC`3+ur!|O9r!T zI^hefqz@cJ@BMTHjT21EB4-9|y~x>oHAdRn>WnMR0U8M9_eo`h_y^P)Es}Q6X8X;f z^tCJLU$)0zESTjx<9?m~!t5$H#&_w7QwC;dmJDWZ@CI*i*-)^oKG)8%fIergmk!c? zFeby4y1EudBJ)p7gG2<(7$j<7HkA78gIY;vq<#XavJ_da6J#6IL@2=B=U747%W zBn)z!-w1&W|4p2bRjpSY*y@*1YkzwNae=a$Ck|}v<1x0>Q)kYoz3{?O-LKxhYPCHI zfUvP&!m_~_f`0TpU?t1*79LjY}q~uY1RH5NE(v#-z5`&o~eEVNHqv!Fv)CIAFaMc9-m*%Lv${M z$kFu-Qr35t;)s}{IDfm{zy4T|Mg$L`>?%K z7+9j8y=en>-f#C~lcZgJCTA{4`_3$Vu0bG5Qx8b(K$Eb~fD_wro87QS-7%K?ZD{8} z=KQ~39ay`4%TvTkd`k$cw((>19p<+5^8J4Qrw$J><5uwSt_X0HffNn{+n%mQ=zc^+ z-JMG)wZ??WL9EmEKq0CsTGL3&$K!ZX8O3vR3JI1ocn&~StbP;@tvi4D$gA%NPj1DePlf3qxm?pHK&;m9+~8eG59K>%m^^$)Z(884%-5=}IgRm|#0OA^HT4fs(xHCC;GXhf?s7kdZKSu>yg@s{ihBNbTXD*M!K#I ziPM|ydU^7}2fDX1D8MPA-B$Hf#{PGZLm0sfa9lkGBVAQe%4 zl{V^jtZI5vYFT=t8lk!5m8p(dVf*#Dzo7IXgsC_=b#KNq45j!_i4lGP?r_>g3cI1* zUAnB`m}_ydy!ieU`}DJWo_geA0+*E$8B-0&vR>Dk)2&vx<0%8Py(NR$;o+frOGHq@ zJ-s|SA?gG2u(1~NL@WQEab^S-{UTOTzSz*fIqzfrOgo%B&R+R=XaW6u^a z^Xb0>%q&v_j|uL3(Q{SRbGV;*1HC?VaZ^2aB#5H=*-FW>zZHt z`>mSj+oQr9ttF#jpHITdS)zAy^G2TIr1KXjxs6 z5fQRS%J!F5sr$#!_iwiMjiKM%zBA_Md)9&3V=ty0E-{rc8O=}pryA0^zftZO%wor2 zmOBQsSTdOH?d@ryfS{ART>HF+_On^t9{o0Rd4}yGr9AeB>lqHVfuZhb&KpEup$Ywv zus3J4Xb;qze$e4axXp;&UqT$=+OjKNJUO59dR)yP-xXeRCKhGeF{Y&Ah;e1#B}~m; zBIlnxW(?ri2DA6Wrvc0~maUa0801602403504012020028039020100180260370601402203303001090170250360501302103202903011019027038070150230340310 \ No newline at end of file diff --git a/public/js/hiprint/css/image/v_img.svg b/public/js/hiprint/css/image/v_img.svg new file mode 100644 index 0000000..895b1fa --- /dev/null +++ b/public/js/hiprint/css/image/v_img.svg @@ -0,0 +1 @@ +801602403504012020028039020100180260370601402203303001090170250360501302103202903011019027038070150230340310 \ No newline at end of file diff --git a/public/js/hiprint/css/print-lock.css b/public/js/hiprint/css/print-lock.css new file mode 100644 index 0000000..f4035de --- /dev/null +++ b/public/js/hiprint/css/print-lock.css @@ -0,0 +1,279 @@ + +@media print { + body { + margin: 0px; + padding: 0px; + } +} + +@page { + margin: 0; +} + +.hiprint-printPaper * { + box-sizing: border-box; + -moz-box-sizing: border-box; /* Firefox */ + -webkit-box-sizing: border-box; /* Safari */ + +} + + .hiprint-printPaper *:focus { + outline: -webkit-focus-ring-color auto 0px; + } + + +.hiprint-page-break-avoid { + page-break-after: avoid; +} +.hiprint-printPaper { + position: relative; + padding: 0 0 0 0; + page-break-after: always; + overflow-x: hidden; + overflow: hidden; +} + .hiprint-printPaper .hiprint-printPaper-content { + position: relative; + } +.hiprint-printPaper.design { + overflow: visible; +} + + + +.hiprint-printTemplate .hiprint-printPanel { + page-break-after: always; +} + +.hiprint-printPaper, hiprint-printPanel { + box-sizing: border-box; + border: 0px; +} + +.hiprint-printPanel .hiprint-printPaper:last-child { + page-break-after: avoid; +} + +.hiprint-printTemplate .hiprint-printPanel:last-child { + page-break-after: avoid; +} + +.hiprint-printPaper .hideheaderLinetarget { + border-top: 0px dashed rgb(201, 190, 190) !important; +} + +.hiprint-printPaper .hidefooterLinetarget { + border-top: 0px dashed rgb(201, 190, 190) !important; +} + +.hiprint-printPaper.design { + border: 1px dashed rgba(170,170,170,0.7); +} + +.design .hiprint-printElement-table-content, .design .hiprint-printElement-longText-content { + overflow: hidden; + box-sizing: border-box; +} + +.design .resize-panel { + box-sizing: border-box; + border: 1px dotted; +} + +.hiprint-printElement-text { + background-color: transparent; + background-repeat: repeat; + padding: 0 0 0 0; + border: 0.75pt none rgb(0,0,0); + direction: ltr; + font-family: 'SimSun'; + font-size: 9pt; + font-style: normal; + font-weight: normal; + padding-bottom: 0pt; + padding-left: 0pt; + padding-right: 0pt; + padding-top: 0pt; + text-align: left; + text-decoration: none; + line-height: 9.75pt; + box-sizing: border-box; + word-wrap: break-word; + word-break: break-all; +} + +.design .hiprint-printElement-text-content { + border: 1px dashed rgb(206, 188, 188); + box-sizing: border-box; +} + +.hiprint-printElement-longText { + background-color: transparent; + background-repeat: repeat; + border: 0.75pt none rgb(0,0,0); + direction: ltr; + font-family: 'SimSun'; + font-size: 9pt; + font-style: normal; + font-weight: normal; + padding-bottom: 0pt; + padding-left: 0pt; + padding-right: 0pt; + padding-top: 0pt; + text-align: left; + text-decoration: none; + line-height: 9.75pt; + box-sizing: border-box; + word-wrap: break-word; + word-break: break-all; + /*white-space: pre-wrap*/ +} + + + +.hiprint-printElement-table { + background-color: transparent; + background-repeat: repeat; + color: rgb(0,0,0); + border-color: rgb(0,0,0); + border-style: none; + direction: ltr; + font-family: 'SimSun'; + font-size: 9pt; + font-style: normal; + font-weight: normal; + padding-bottom: 0pt; + padding-left: 0pt; + padding-right: 0pt; + padding-top: 0pt; + text-align: left; + text-decoration: none; + padding: 0 0 0 0; + box-sizing: border-box; + line-height: 9.75pt; +} + + .hiprint-printElement-table thead { + background: #e8e8e8; + font-weight: 700; + } + +.hiprint-printElement-tableTarget, .hiprint-printElement-tableTarget tr, .hiprint-printElement-tableTarget td { + border-color: rgb(0,0,0); + border-style: none; + border: 1px solid rgb(0,0,0); + font-weight: normal; + direction: ltr; + padding-bottom: 0pt; + padding-left: 0pt; + padding-right: 0pt; + padding-top: 0pt; + text-decoration: none; + vertical-align: middle; + box-sizing: border-box; + word-wrap: break-word; + word-break: break-all; + /*line-height: 9.75pt; + font-size: 9pt;*/ +} + + /*.hiprint-printElement-tableTarget tr,*/ + .hiprint-printElement-tableTarget td { + height: 18pt; + } + +.hiprint-printPaper .hiprint-paperNumber { + font-size: 9pt; +} + +.design .hiprint-printElement-table-handle { + position: absolute; + height: 21pt; + width: 21pt; + background: red; + z-index:1; +} + +.hiprint-printPaper .hiprint-paperNumber-disabled { + float: right !important; + right: 0 !important; + color: gainsboro !important; +} + +.hiprint-printElement-vline, .hiprint-printElement-hline { + border: 0px none rgb(0,0,0); + +} +.hiprint-printElement-vline { + border-left: 0.75pt solid #000; + border-right: 0px none rgb(0,0,0) !important; + border-bottom: 0px none rgb(0,0,0) !important; + border-top: 0px none rgb(0,0,0) !important; +} + +.hiprint-printElement-hline { + border-top: 0.75pt solid #000; + border-right: 0px none rgb(0,0,0) !important; + border-bottom: 0px none rgb(0,0,0) !important; + border-left: 0px none rgb(0,0,0) !important; +} + +.hiprint-printElement-oval, .hiprint-printElement-rect { + border: 0.75pt solid #000; +} + +.hiprint-text-content-middle { + display:table; +} +.hiprint-text-content-middle>div { + display: table-cell; + vertical-align:middle +} + +.hiprint-text-content-bottom { + display: table; +} + + .hiprint-text-content-bottom > div { + display: table-cell; + vertical-align: bottom + } + +/*hi-grid-row */ +.hi-grid-row { + position: relative; + height: auto; + margin-right: 0; + margin-left: 0; + zoom: 1; + display: block; + box-sizing: border-box; +} + + .hi-grid-row::after, .hi-grid-row::before { + display: table; + content: ''; + box-sizing: border-box; + } + +.hi-grid-col { + display: block; + box-sizing: border-box; + position: relative; + float: left; + flex: 0 0 auto; +} + +.table-grid-row { + margin-left: -0pt; + margin-right: -0pt; +} + +.tableGridColumnsGutterRow { + padding-left: 0pt; + padding-right: 0pt; +} +.hiprint-gridColumnsFooter { + text-align: left; + clear: both; +} \ No newline at end of file diff --git a/public/js/hiprint/hiprint.bundle.js b/public/js/hiprint/hiprint.bundle.js new file mode 100644 index 0000000..aab3e09 --- /dev/null +++ b/public/js/hiprint/hiprint.bundle.js @@ -0,0 +1,10192 @@ +/** + * jQuery Hiprint 2.5.4 + * + * Copyright (c) 2016-2021 www.hinnn.com. All rights reserved. + * + * Licensed under the LGPL or commercial licenses + * To use it on other terms please contact us: hinnn.com@gmail.com + * + */ + +"use strict"; + +function _instanceof(left, right) { + if (right != null && typeof Symbol !== "undefined" && right[Symbol.hasInstance]) { + return !!right[Symbol.hasInstance](left); + } else { + return left instanceof right; + } +} + +function _typeof(obj) { + if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { + _typeof = function _typeof(obj) { + return typeof obj; + }; + } else { + _typeof = function _typeof(obj) { + return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; + }; + } + return _typeof(obj); +} + +// js颜色选择 +import "./plugins/jquery.minicolors.min.js"; +//引入标尺 +import lImg from "./css/image/l_img.svg"; +import vImg from "./css/image/v_img.svg"; +// pdf +import {jsPDF} from "jspdf"; +import html2canvas from "@wtto00/html2canvas"; + +var hiprint = (function (t) { + var e = {}; + + function n(i) { + if (e[i]) return e[i].exports; + var o = (e[i] = { + i: i, + l: !1, + exports: {} + }); + return t[i].call(o.exports, o, o.exports, n), (o.l = !0), o.exports; + } + + return ( + (n.m = t), + (n.c = e), + (n.d = function (t, e, i) { + n.o(t, e) || + Object.defineProperty(t, e, { + enumerable: !0, + get: i + }); + }), + (n.r = function (t) { + "undefined" != typeof Symbol && + Symbol.toStringTag && + Object.defineProperty(t, Symbol.toStringTag, { + value: "Module" + }), + Object.defineProperty(t, "__esModule", { + value: !0 + }); + }), + (n.t = function (t, e) { + if ((1 & e && (t = n(t)), 8 & e)) return t; + if (4 & e && "object" == _typeof(t) && t && t.__esModule) return t; + var i = Object.create(null); + if ( + (n.r(i), + Object.defineProperty(i, "default", { + enumerable: !0, + value: t + }), + 2 & e && "string" != typeof t) + ) + for (var o in t) { + n.d( + i, + o, + function (e) { + return t[e]; + }.bind(null, o) + ); + } + return i; + }), + (n.n = function (t) { + var e = + t && t.__esModule + ? function () { + return t.default; + } + : function () { + return t; + }; + return n.d(e, "a", e), e; + }), + (n.o = function (t, e) { + return Object.prototype.hasOwnProperty.call(t, e); + }), + (n.p = "/"), + n((n.s = 21)) + ); +})([ + function (t, e, n) { + "use strict"; + + var i; + n.d(e, "a", function () { + return hinnn; + }), + (window.hinnn = {}), + (hinnn.event = + ((i = {}), + { + on: function on(t, e) { + i[t] || (i[t] = []), i[t].push(e); + }, + id: 0, + off: function off(t, e) { + var n = i[t]; + + if (n) { + for (var o = -1, r = 0; r < n.length; r++) { + if (n[r] === e) { + o = r; + break; + } + } + + o < 0 || i[t].splice(o, 1); + } + }, + trigger: function trigger(t) { + var e = i[t]; + if (e && e.length) + for (var n = Array.prototype.slice.call(arguments, 1), o = 0; o < e.length; o++) { + e[o].apply(this, n); + } + }, + clear: function clear(t) { + i[t] = []; + }, + getId: function getId() { + return (this.id += 1), this.id; + }, + getNameWithId: function getNameWithId(t) { + return t + "-" + this.getId(); + } + })), + (hinnn.form = { + serialize: function serialize(t) { + var e = $(t).serializeArray(), + n = {}; + return ( + $.each(e, function () { + n[this.name] + ? "[object Array]" == Object.prototype.toString.call(n[this.name]) + ? n[this.name].push(this.value) + : (n[this.name] = [n[this.name], this.value]) + : (n[this.name] = this.value); + }), + n + ); + } + }), + (hinnn.pt = { + toPx: function toPx(t) { + return t * (this.getDpi() / 72); + }, + dpi: 0, + getDpi: function getDpi() { + if (!this.dpi) { + var _t2 = document.createElement("DIV"); + + (_t2.style.cssText = "width:1in;height:1in;position:absolute;left:0px;top:0px;z-index:99;visibility:hidden"), document.body.appendChild(_t2), (this.dpi = _t2.offsetHeight); + } + + return this.dpi; + } + }), + (hinnn.px = { + toPt: function toPt(t) { + return t * (72 / this.getDpi()); + }, + dpi: 0, + getDpi: function getDpi() { + if (!this.dpi) { + var _t3 = document.createElement("DIV"); + + (_t3.style.cssText = "width:1in;height:1in;position:absolute;left:0px;top:0px;z-index:99;visibility:hidden"), document.body.appendChild(_t3), (this.dpi = _t3.offsetHeight); + } + + return this.dpi; + } + }), + (hinnn.mm = { + toPt: function toPt(t) { + return (72 / 25.4) * t; + }, + toPx: function toPx(t) { + return hinnn.pt.toPx(hinnn.mm.toPt(t)); + } + }), + (hinnn.throttle = function (t, e, n) { + var i, + o, + r, + a = null, + p = 0; + n || (n = {}); + + var s = function s() { + (p = !1 === n.leading ? 0 : _.now()), (a = null), (r = t.apply(i, o)), a || (i = o = null); + }; + + return function () { + var l = _.now(); + + p || !1 !== n.leading || (p = l); + var u = e - (l - p); + return ( + (i = this), (o = arguments), u <= 0 || u > e ? (a && (clearTimeout(a), (a = null)), (p = l), (r = t.apply(i, o)), a || (i = o = null)) : a || !1 === n.trailing || (a = setTimeout(s, u)), r + ); + }; + }), + (hinnn.debounce = function (t, e, n) { + var i, + o, + r, + a, + p, + s = function s() { + var l = _.now() - a; + l < e && l >= 0 ? (i = setTimeout(s, e - l)) : ((i = null), n || ((p = t.apply(r, o)), i || (r = o = null))); + }; + + return function () { + (r = this), (o = arguments), (a = _.now()); + var l = n && !i; + return i || (i = setTimeout(s, e)), l && ((p = t.apply(r, o)), (r = o = null)), p; + }; + }), + (hinnn.toUtf8 = function (t) { + var e, n, i, o; + + for (e = "", i = t.length, n = 0; n < i; n++) { + (o = t.charCodeAt(n)) >= 1 && o <= 127 + ? (e += t.charAt(n)) + : o > 2047 + ? ((e += String.fromCharCode(224 | ((o >> 12) & 15))), (e += String.fromCharCode(128 | ((o >> 6) & 63))), (e += String.fromCharCode(128 | ((o >> 0) & 63)))) + : ((e += String.fromCharCode(192 | ((o >> 6) & 31))), (e += String.fromCharCode(128 | ((o >> 0) & 63)))); + } + + return e; + }), + (hinnn.groupBy = function (t, e, n) { + var i = {}; + return ( + t.forEach(function (t) { + var o = JSON.stringify(n(t)); + i[o] || + ((i[o] = { + rows: [] + }), + e.forEach(function (e) { + i[o][e] = t[e]; + })), + i[o].rows.push(t); + }), + Object.keys(i).map(function (t) { + return i[t]; + }) + ); + }), + (hinnn.orderBy = function (t, e) { + if (t.length <= 1) return t; + var n = Math.floor(t.length / 2), + i = t.splice(n, 1)[0], + o = [], + r = []; + var _iteratorNormalCompletion = true; + var _didIteratorError = false; + var _iteratorError = undefined; + + try { + for (var _iterator = t[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { + var _n = _step.value; + e(_n) < e(i) ? o.push(_n) : r.push(_n); + } + } catch (err) { + _didIteratorError = true; + _iteratorError = err; + } finally { + try { + if (!_iteratorNormalCompletion && _iterator.return != null) { + _iterator.return(); + } + } finally { + if (_didIteratorError) { + throw _iteratorError; + } + } + } + + return this.orderBy(o, e).concat([i], this.orderBy(r, e)); + }), + (hinnn.dateFormat = function (t, e) { + if (t) + try { + var o = "string" == typeof t ? new Date(t) : t; + var n = { + "M+": o.getMonth() + 1, + "d+": o.getDate(), + "H+": o.getHours(), + "m+": o.getMinutes(), + "s+": o.getSeconds(), + "q+": Math.floor((o.getMonth() + 3) / 3), + S: o.getMilliseconds() + }; + + for (var i in (/(y+)/.test(e) && (e = e.replace(RegExp.$1, (o.getFullYear() + "").substr(4 - RegExp.$1.length))), n)) { + new RegExp("(" + i + ")").test(e) && (e = e.replace(RegExp.$1, 1 == RegExp.$1.length ? n[i] : ("00" + n[i]).substr(("" + n[i]).length))); + } + + return e; + } catch (t) { + return console.log(t), ""; + } + return ""; + }); + }, + function (t, e, n) { + "use strict"; + + n.d(e, "a", function () { + return o; + }); + + var i = n(9), + o = (function () { + function t() { + // see hiprint.config.js + } + + return ( + (t.prototype.init = function (t) { + t && $.extend(this, t); + }), + Object.defineProperty(t, "instance", { + get: function get() { + return ( + t._instance || + ((t._instance = new t()), + window.HIPRINT_CONFIG && $.extend(t._instance, HIPRINT_CONFIG), + t._instance.optionItems && + t._instance.optionItems.forEach(function (t) { + i.a.registerItem(t); + })), + t._instance + ); + }, + enumerable: !0, + configurable: !0 + }), + t + ); + })(); + }, + function (t, e, n) { + "use strict"; + + var i = (function () { + function t(t) { + this.printElement = t; + } + + return ( + (t.prototype.updatePosition = function (t, e) { + (this.left = t), (this.top = e); + }), + t + ); + })(); + + n.d(e, "a", function () { + return o; + }); + + var o = (function () { + function t() { + (this.printTemplateContainer = {}), + (this.A1 = { + width: 841, + height: 594 + }), + (this.A2 = { + width: 420, + height: 594 + }), + (this.A3 = { + width: 420, + height: 297 + }), + (this.A4 = { + width: 210, + height: 297 + }), + (this.A5 = { + width: 210, + height: 148 + }), + (this.A6 = { + width: 105, + height: 148 + }), + (this.A7 = { + width: 105, + height: 74 + }), + (this.A8 = { + width: 52, + height: 74 + }), + (this.B1 = { + width: 1e3, + height: 707 + }), + (this.B2 = { + width: 500, + height: 707 + }), + (this.B3 = { + width: 500, + height: 353 + }), + (this.B4 = { + width: 250, + height: 353 + }), + (this.B5 = { + width: 250, + height: 176 + }), + (this.B6 = { + width: 125, + height: 176 + }), + (this.B7 = { + width: 125, + height: 88 + }), + (this.B8 = { + width: 62, + height: 88 + }), + (this.dragLengthCNum = function (t, e) { + var n = 0.75 * t; + return e && (e = e), Math.round(n / e) * e; + }); + } + + return ( + Object.defineProperty(t, "instance", { + get: function get() { + return this._instance || (this._instance = new t()), this._instance; + }, + enumerable: !0, + configurable: !0 + }), + (t.prototype.getDragingPrintElement = function () { + return t.instance.dragingPrintElement; + }), + (t.prototype.setDragingPrintElement = function (e) { + t.instance.dragingPrintElement = new i(e); + }), + (t.prototype.guid = function () { + return "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g, function (t) { + var e = (16 * Math.random()) | 0; + return ("x" == t ? e : (3 & e) | 8).toString(16); + }); + }), + (t.prototype.imageToBase64 = function (t) { + if (-1 == $(t).attr("src").indexOf("base64")) + try { + var e = document.createElement("canvas"), + n = new Image(); + (n.src = t.attr("src")), (e.width = n.width), (e.height = n.height), e.getContext("2d").drawImage(n, 0, 0), t.attr("src", e.toDataURL("image/png")); + } catch (e) { + try { + this.xhrLoadImage(t); + } catch (t) { + console.log(t); + } + } + }), + (t.prototype.xhrLoadImage = function (t) {}), + (t.prototype.transformImg = function (t) { + var e = this; + t.map(function (t, n) { + e.imageToBase64($(n)); + }); + }), + (t.prototype.getPrintTemplateById = function (e) { + return t.instance.printTemplateContainer[e]; + }), + (t.prototype.setPrintTemplateById = function (e, n) { + return (t.instance.printTemplateContainer[e] = n); + }), + t + ); + })(); + }, + function (t, e, n) { + "use strict"; + + var i = (function () { + return function () {}; + })(); + + n.d(e, "a", function () { + return o; + }); + + var o = (function () { + function t(t) { + (t = t || {}), (this.left = t.left), (this.top = t.top), (this.topInDesign = this.top), (this.height = t.height), (this.width = t.width), this.init(t); + } + + return ( + (t.prototype.setDefault = function (t) { + (this.defaultOptions = t), this.initSize(); + }), + (t.prototype.initSize = function () { + this.width || this.setWidth(this.defaultOptions.width), this.height || this.setHeight(this.defaultOptions.height); + }), + (t.prototype.initSizeByHtml = function (t, e) { + this.width || this.setWidth(t), this.height || this.setHeight(e); + }), + (t.prototype.getLeft = function () { + return this.left; + }), + (t.prototype.displayLeft = function () { + return this.left + "pt"; + }), + (t.prototype.setLeft = function (t) { + null != t && (this.left = t); + }), + (t.prototype.getTop = function () { + return this.top; + }), + (t.prototype.getTopInDesign = function () { + return this.topInDesign; + }), + (t.prototype.displayTop = function () { + return this.top + "pt"; + }), + (t.prototype.setTop = function (t) { + null != t && (this.top = t); + }), + (t.prototype.copyDesignTopFromTop = function () { + this.topInDesign = this.top; + }), + (t.prototype.getHeight = function () { + return this.height; + }), + (t.prototype.displayHeight = function () { + return this.height + "pt"; + }), + (t.prototype.setHeight = function (t) { + null != t && (this.height = t); + }), + (t.prototype.getWidth = function () { + return this.width; + }), + (t.prototype.displayWidth = function () { + return this.width + "pt"; + }), + (t.prototype.setWidth = function (t) { + null != t && (this.width = t); + }), + (t.prototype.getValueFromOptionsOrDefault = function (t) { + return null == this[t] ? this.defaultOptions[t] : this[t]; + }), + (t.prototype.getPrintElementOptionEntity = function () { + var t = new i(), + e = this; + return ( + Object.keys(this) + .filter(function (t) { + return "topInDesign" != t; + }) + .forEach(function (n) { + if ((("number" != typeof e[n] && "string" != typeof e[n] && _typeof(e[n]) != _typeof(!0)) || (t[n] = e[n]), "style" == n)) { + t.style = {}; + var i = e[n]; + if (i) + Object.keys(i).forEach(function (e) { + ("number" != typeof i[e] && "string" != typeof i[e]) || (t.style[e] = i[e]); + }); + } + }), + t + ); + }), + (t.prototype.init = function (t) { + var e = this; + t && + Object.keys(t).forEach(function (n) { + e[n] = t[n]; + }); + }), + t + ); + })(); + }, + function (module, __webpack_exports__, __webpack_require__) { + "use strict"; + + __webpack_require__.d(__webpack_exports__, "a", function () { + return BasePrintElement; + }); + + var _entity_PrintElementEntity__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(17), + _HiPrintConfig__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(1), + _print_element_option_PrintElementOptionItemManager__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(9), + _dto_PaperHtmlResult__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(6), + _assets_plugins_hinnn__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(0), + _PrintReferenceElement__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(8), + _HiPrintlib__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(2), + BasePrintElement = (function () { + function BasePrintElement(t) { + (this.printElementType = t), (this.id = _HiPrintlib__WEBPACK_IMPORTED_MODULE_6__.a.instance.guid()); + } + + return ( + (BasePrintElement.prototype.getConfigOptionsByName = function (t) { + return _HiPrintConfig__WEBPACK_IMPORTED_MODULE_1__.a.instance[t]; + }), + (BasePrintElement.prototype.getProxyTarget = function (t) { + t && this.SetProxyTargetOption(t); + var e = this.getData(), + n = this.createTarget(this.getTitle(), e); + return this.updateTargetSize(n), this.css(n, e), n; + }), + (BasePrintElement.prototype.SetProxyTargetOption = function (t) { + this.options.getPrintElementOptionEntity(); + $.extend(this.options, t); + }), + (BasePrintElement.prototype.showInPage = function (t, e) { + var n = this.options.showInPage, + i = this.options.unShowInPage; + + if (n) { + if ("first" == n) return 0 == t; + if (t == e - 1 && "last" == i) return !1; + if ("odd" == n) return (0 != t || "first" != i) && t % 2 == 0; + if ("even" == n) return t % 2 == 1; + if ("last" == n) return t == e - 1; + } + + return (0 != t || "first" != i) && (t != e - 1 || "last" != i); + }), + (BasePrintElement.prototype.setTemplateId = function (t) { + this.templateId = t; + }), + (BasePrintElement.prototype.setPanel = function (t) { + this.panel = t; + }), + (BasePrintElement.prototype.getField = function () { + return this.options.field || this.printElementType.field; + }), + (BasePrintElement.prototype.getTitle = function () { + return this.printElementType.title; + }), + (BasePrintElement.prototype.updateSizeAndPositionOptions = function (t, e, n, i) { + this.options.setLeft(t), + this.options.setTop(e), + this.options.copyDesignTopFromTop(), + this.options.setWidth(n), + this.options.setHeight(i), + _assets_plugins_hinnn__WEBPACK_IMPORTED_MODULE_4__.a.event.trigger("hiprintTemplateDataChanged_" + this.templateId); + }), + (BasePrintElement.prototype.initSizeByHtml = function (t) { + if (t && t.length) { + this.createTempContainer(); + var e = t.clone(); + this.getTempContainer().append(e), + this.options.initSizeByHtml( + parseInt(_assets_plugins_hinnn__WEBPACK_IMPORTED_MODULE_4__.a.px.toPt(e.width()).toString()), + parseInt(_assets_plugins_hinnn__WEBPACK_IMPORTED_MODULE_4__.a.px.toPt(e.height()).toString()) + ), + this.removeTempContainer(); + } + }), + (BasePrintElement.prototype.updateTargetSize = function (t) { + t.css("width", this.options.displayWidth()), t.css("height", this.options.displayHeight()); + }), + (BasePrintElement.prototype.updateTargetWidth = function (t) { + t.css("width", this.options.displayWidth()); + }), + (BasePrintElement.prototype.getDesignTarget = function (t) { + var e = this; + return ( + (this.designTarget = this.getHtml(t)[0].target), + (this.designPaper = t), + this.designTarget.click(function () { + _assets_plugins_hinnn__WEBPACK_IMPORTED_MODULE_4__.a.event.trigger(e.getPrintElementSelectEventKey(), { + printElement: e + }); + }), + this.designTarget + ); + }), + (BasePrintElement.prototype.getPrintElementSelectEventKey = function () { + return "PrintElementSelectEventKey_" + this.templateId; + }), + (BasePrintElement.prototype.design = function (t, e) { + var n = this; + this.designTarget.hidraggable({ + axis: n.options.axis && t && t.axisEnabled ? n.options.axis : void 0, + onDrag: function onDrag(t, i, o) { + n.updateSizeAndPositionOptions(i, o), n.createLineOfPosition(e); + }, + moveUnit: "pt", + minMove: _HiPrintConfig__WEBPACK_IMPORTED_MODULE_1__.a.instance.movingDistance, + onBeforeDrag: function onBeforeDrag(t) { + (_HiPrintlib__WEBPACK_IMPORTED_MODULE_6__.a.instance.draging = !0), n.designTarget.focus(), n.createLineOfPosition(e); + }, + onStopDrag: function onStopDrag(t) { + (_HiPrintlib__WEBPACK_IMPORTED_MODULE_6__.a.instance.draging = !1), n.removeLineOfPosition(); + } + }), + this.designTarget.hireizeable({ + showPoints: n.getReizeableShowPoints(), + onBeforeResize: function onBeforeResize() { + _HiPrintlib__WEBPACK_IMPORTED_MODULE_6__.a.instance.draging = !0; + }, + onResize: function onResize(t, i, o, r, a) { + n.onResize(t, i, o, r, a), n.createLineOfPosition(e); + }, + onStopResize: function onStopResize() { + (_HiPrintlib__WEBPACK_IMPORTED_MODULE_6__.a.instance.draging = !1), n.removeLineOfPosition(); + } + }), + this.bingCopyEvent(this.designTarget), + this.bingKeyboardMoveEvent(this.designTarget, e); + }), + (BasePrintElement.prototype.getPrintElementEntity = function (t) { + return t + ? new _entity_PrintElementEntity__WEBPACK_IMPORTED_MODULE_0__.a(void 0, this.options.getPrintElementOptionEntity(), this.printElementType.getPrintElementTypeEntity()) + : new _entity_PrintElementEntity__WEBPACK_IMPORTED_MODULE_0__.a(this.printElementType.tid, this.options.getPrintElementOptionEntity()); + }), + (BasePrintElement.prototype.submitOption = function () { + var t = this; + this.getPrintElementOptionItems().forEach(function (e) { + var n = e.getValue(); + n && "object" == _typeof(n) + ? Object.keys(n).forEach(function (e) { + t.options[e] = n[e]; + }) + : (t.options[e.name] = n); + }), + this.updateDesignViewFromOptions(), + _assets_plugins_hinnn__WEBPACK_IMPORTED_MODULE_4__.a.event.trigger("hiprintTemplateDataChanged_" + this.templateId); + }), + (BasePrintElement.prototype.getReizeableShowPoints = function () { + return ["s", "e"]; + }), + (BasePrintElement.prototype.onResize = function (t, e, n, i, o) { + this.updateSizeAndPositionOptions(o, i, n, e); + }), + (BasePrintElement.prototype.getOrderIndex = function () { + return this.options.getTop(); + }), + (BasePrintElement.prototype.getHtml = function (t, e, n) { + var i = 0; + this.setCurrenttemplateData(e); + var o = [], + r = this.getBeginPrintTopInPaperByReferenceElement(t), + a = t.getPaperFooter(i); + this.isHeaderOrFooter() || + this.isFixed() || + (r > a && + (o.push( + new _dto_PaperHtmlResult__WEBPACK_IMPORTED_MODULE_3__.a({ + target: void 0, + printLine: void 0 + }) + ), + (r = r - a + t.paperHeader), + i++, + (a = t.getPaperFooter(i)))); + var p = this.getData(e), + s = this.createTarget(this.getTitle(), p, n); + return ( + this.updateTargetSize(s), + this.css(s, p), + s.css("position", "absolute"), + s.css("left", this.options.displayLeft()), + s.css("top", r + "pt"), + o.push( + new _dto_PaperHtmlResult__WEBPACK_IMPORTED_MODULE_3__.a({ + target: s, + printLine: r + this.options.getHeight() + }) + ), + o + ); + }), + (BasePrintElement.prototype.getHtml2 = function (t, e, n) { + var i = 0; + this.setCurrenttemplateData(e); + var o = [], + r = this.getBeginPrintTopInPaperByReferenceElement(t), + a = t.getPaperFooter(i); + this.isHeaderOrFooter() || + this.isFixed() || + (r > a && + (o.push( + new _dto_PaperHtmlResult__WEBPACK_IMPORTED_MODULE_3__.a({ + target: void 0, + printLine: void 0 + }) + ), + (r = r - a + t.paperHeader), + i++, + (a = t.getPaperFooter(i))), + r <= a && + r + this.options.getHeight() > a && + (o.push( + new _dto_PaperHtmlResult__WEBPACK_IMPORTED_MODULE_3__.a({ + target: void 0, + printLine: void 0 + }) + ), + (r = t.paperHeader), + i++, + (a = t.getPaperFooter(i)))); + var p = this.getData(e), + s = this.createTarget(this.getTitle(), p); + return ( + this.updateTargetSize(s), + this.css(s, p), + s.css("position", "absolute"), + s.css("left", this.options.displayLeft()), + s.css("top", r + "pt"), + o.push( + new _dto_PaperHtmlResult__WEBPACK_IMPORTED_MODULE_3__.a({ + target: s, + printLine: r + this.options.getHeight(), + referenceElement: new _PrintReferenceElement__WEBPACK_IMPORTED_MODULE_5__.a({ + top: this.options.getTop(), + left: this.options.getLeft(), + height: this.options.getHeight(), + width: this.options.getWidth(), + beginPrintPaperIndex: t.index, + bottomInLastPaper: r + this.options.getHeight(), + printTopInPaper: r + }) + }) + ), + o + ); + }), + (BasePrintElement.prototype.getBeginPrintTopInPaperByReferenceElement = function (t) { + var e = this.options.getTop(); + return this.isHeaderOrFooter() || this.isFixed() + ? e + : t.referenceElement.isPositionLeftOrRight(e) + ? t.referenceElement.printTopInPaper + (e - t.referenceElement.top) + : t.referenceElement.bottomInLastPaper + (e - (t.referenceElement.top + t.referenceElement.height)); + }), + (BasePrintElement.prototype.css = function (t, e) { + var n = this, + i = [], + o = this.getConfigOptions(); + + if (o) { + var r = o.supportOptions; + r && + r.forEach(function (e) { + var o = _print_element_option_PrintElementOptionItemManager__WEBPACK_IMPORTED_MODULE_2__.a.getItem(e.name); + + if (o && o.css) { + var r = o.css(t, n.options.getValueFromOptionsOrDefault(e.name)); + r && i.push(r); + } + }); + } + + this.stylerCss(t, e); + }), + (BasePrintElement.prototype.stylerCss = function (t, e) { + var n = this.getStyler(); + + if (n) { + var i = n(e, this.options, t, this._currenttemplateData); + if (i) + Object.keys(i).forEach(function (e) { + t.css(e, i[e]); + }); + } + }), + (BasePrintElement.prototype.getData = function (t) { + return t ? t[this.getField()] || "" : this.printElementType.getData(); + }), + (BasePrintElement.prototype.getPrintElementOptionItems = function () { + if (this._printElementOptionItems) return this._printElementOptionItems; + var t = [], + e = this.getConfigOptions(); + + if (e) { + var n = e.supportOptions; + n && + n + .filter(function (t) { + return !t.hidden; + }) + .forEach(function (e) { + var n = _print_element_option_PrintElementOptionItemManager__WEBPACK_IMPORTED_MODULE_2__.a.getItem(e.name); + + t.push(n); + }); + } + + return (this._printElementOptionItems = this.filterOptionItems(t.concat())), this._printElementOptionItems; + }), + (BasePrintElement.prototype.getPrintElementOptionItemsByName = function (t) { + var e = [], + n = this.getConfigOptionsByName(t); + + if (n) { + var i = n.supportOptions; + i && + i + .filter(function (t) { + return !t.hidden; + }) + .forEach(function (t) { + var n = _print_element_option_PrintElementOptionItemManager__WEBPACK_IMPORTED_MODULE_2__.a.getItem(t.name); + + e.push(n); + }); + } + + return e.concat(); + }), + (BasePrintElement.prototype.filterOptionItems = function (t) { + return this.printElementType.field + ? t.filter(function (t) { + return "field" != t.name; + }) + : t; + }), + (BasePrintElement.prototype.createTempContainer = function () { + this.removeTempContainer(), $("body").append($('
')); + }), + (BasePrintElement.prototype.removeTempContainer = function () { + $(".hiprint_temp_Container").remove(); + }), + (BasePrintElement.prototype.getTempContainer = function () { + return $(".hiprint_temp_Container"); + }), + (BasePrintElement.prototype.isHeaderOrFooter = function () { + return this.options.getTopInDesign() < this.panel.paperHeader || this.options.getTopInDesign() >= this.panel.paperFooter; + }), + (BasePrintElement.prototype.delete = function () { + this.designTarget && this.designTarget.remove(); + }), + (BasePrintElement.prototype.setCurrenttemplateData = function (t) { + this._currenttemplateData = t; + }), + (BasePrintElement.prototype.isFixed = function () { + return this.options.fixed; + }), + (BasePrintElement.prototype.onRendered = function (t, e) { + this.printElementType && this.printElementType.onRendered && this.printElementType.onRendered(e, this.options, t.getTarget()); + }), + (BasePrintElement.prototype.createLineOfPosition = function (t) { + var e = $(".toplineOfPosition" + this.id), + n = $(".leftlineOfPosition" + this.id), + i = $(".rightlineOfPosition" + this.id), + o = $(".bottomlineOfPosition" + this.id); + if ( + (e.length + ? e.css("top", this.options.displayTop()) + : ((e = $('
')).css( + "top", + this.options.displayTop() + ), + e.css("width", t.displayWidth()), + this.designTarget.parents(".hiprint-printPaper-content").append(e)), + n.length) + ) + n.css("left", this.options.displayLeft()); + else { + var r = $('
'); + r.css("left", this.options.displayLeft()), r.css("height", t.displayHeight()), this.designTarget.parents(".hiprint-printPaper-content").append(r); + } + if (i.length) i.css("left", this.options.getLeft() + this.options.getWidth() + "pt"); + else { + var a = $('
'); + a.css("left", this.options.getLeft() + this.options.getWidth() + "pt"), a.css("height", t.displayHeight()), this.designTarget.parents(".hiprint-printPaper-content").append(a); + } + if (o.length) o.css("top", this.options.getTop() + this.options.getHeight() + "pt"); + else { + var p = $('
'); + p.css("top", this.options.getTop() + this.options.getHeight() + "pt"), p.css("width", t.displayWidth()), this.designTarget.parents(".hiprint-printPaper-content").append(p); + } + }), + (BasePrintElement.prototype.removeLineOfPosition = function () { + $(".toplineOfPosition" + this.id).remove(), $(".leftlineOfPosition" + this.id).remove(), $(".rightlineOfPosition" + this.id).remove(), $(".bottomlineOfPosition" + this.id).remove(); + }), + (BasePrintElement.prototype.getFields = function () { + var t = this.printElementType.getFields(); + return t || (t = _HiPrintlib__WEBPACK_IMPORTED_MODULE_6__.a.instance.getPrintTemplateById(this.templateId).getFields()); + }), + (BasePrintElement.prototype.bingCopyEvent = function (t) {}), + (BasePrintElement.prototype.getFormatter = function () { + var formatter = void 0; + if ((this.printElementType.formatter && (formatter = this.printElementType.formatter), this.options.formatter)) + try { + var s = "formatter=" + this.options.formatter; + eval(s); + } catch (t) { + console.log(t); + } + return formatter; + }), + (BasePrintElement.prototype.getStyler = function () { + var fnstyler = void 0; + if ((this.printElementType.styler && (fnstyler = this.printElementType.styler), this.options.styler)) + try { + var s = "fnstyler=" + this.options.styler; + eval(s); + } catch (t) { + console.log(t); + } + return fnstyler; + }), + (BasePrintElement.prototype.bingKeyboardMoveEvent = function (t, e) { + var n = this, + i = void 0, + o = void 0; + t.attr("tabindex", "1"), + t.keydown(function (r) { + switch (r.keyCode) { + case 37: + (i = n.options.getLeft()), + n.updateSizeAndPositionOptions(i - _HiPrintConfig__WEBPACK_IMPORTED_MODULE_1__.a.instance.movingDistance), + t.css("left", n.options.displayLeft()), + n.createLineOfPosition(e), + r.preventDefault(); + break; + + case 38: + (o = n.options.getTop()), + n.updateSizeAndPositionOptions(void 0, o - _HiPrintConfig__WEBPACK_IMPORTED_MODULE_1__.a.instance.movingDistance), + t.css("top", n.options.displayTop()), + n.createLineOfPosition(e), + r.preventDefault(); + break; + + case 39: + (i = n.options.getLeft()), + n.updateSizeAndPositionOptions(i + _HiPrintConfig__WEBPACK_IMPORTED_MODULE_1__.a.instance.movingDistance), + t.css("left", n.options.displayLeft()), + n.createLineOfPosition(e), + r.preventDefault(); + break; + + case 40: + (o = n.options.getTop()), + n.updateSizeAndPositionOptions(void 0, o + _HiPrintConfig__WEBPACK_IMPORTED_MODULE_1__.a.instance.movingDistance), + t.css("top", n.options.displayTop()), + n.createLineOfPosition(e), + r.preventDefault(); + } + }); + }), + (BasePrintElement.prototype.inRect = function (t) { + var e = this.designTarget.offset().left, + n = this.designTarget.offset().top; + return t.minX < e && t.minY < n && t.maxX > e && t.maxY > n; + }), + (BasePrintElement.prototype.multipleSelect = function (t) { + t ? this.designTarget.addClass("multipleSelect") : this.designTarget.removeClass("multipleSelect"); + }), + (BasePrintElement.prototype.updatePositionByMultipleSelect = function (t, e) { + this.updateSizeAndPositionOptions(t + this.options.getLeft(), e + this.options.getTop()), + this.designTarget.css("left", this.options.displayLeft()), + this.designTarget.css("top", this.options.displayTop()); + }), + BasePrintElement + ); + })(); + }, + function (t, e, n) { + "use strict"; + + var i = (function () { + function t() {} + + return ( + (t.prototype.init = function (t) { + (this.target = $('')), t.getTarget().append(this.target), this.target.focus(); + }), + (t.prototype.getValue = function () { + return this.target.val(); + }), + (t.prototype.setValue = function (t) { + this.target.val(t); + }), + (t.prototype.destroy = function () { + this.target.remove(); + }), + t + ); + })(), + o = (function () { + function t() { + this.text = new i(); + } + + return ( + Object.defineProperty(t, "Instance", { + get: function get() { + return t._instance || (t._instance = new t()), t._instance; + }, + enumerable: !0, + configurable: !0 + }), + t + ); + })(), + r = (function () { + function t() {} + + return ( + Object.defineProperty(t, "Instance", { + get: function get() { + return o._instance || (t._instance = new t()), t._instance; + }, + enumerable: !0, + configurable: !0 + }), + (t.prototype.createEditor = function (t) { + return $.extend({}, o.Instance[t]); + }), + t + ); + })(), + a = n(10), + p = n(14), + s = n(11), + l = (function () { + function t() {} + + return ( + (t.prototype.init = function (t, e) { + var n = this; + (this.tableOptions = e), + (this.title = t.title), + (this.field = t.field), + t + .getTarget() + .unbind("dblclick.hitable") + .bind("dblclick.hitable", function () { + (t.isEditing = !0), n.beginEdit(t); + }); + }), + (t.prototype.getDisplayHtml = function () { + return this.title; + }), + (t.prototype.beginEdit = function (t) { + var e = this; + (this.editor = r.Instance.createEditor("text")), + t.getTarget().html(""), + this.editor.init(t), + (this.title || this.field) && + (this.tableOptions.options.isEnableEditField ? this.editor.setValue((this.title || "") + "#" + (this.field || "")) : this.editor.setValue(this.title || "")), + $(this.editor.target).keydown(function (n) { + 13 == n.keyCode && e.endEdit(t); + }), + $(this.editor.target).blur(function (n) { + e.endEdit(t); + }), + this.tableOptions.editingCell && this.tableOptions.editingCell.id != t.id && this.tableOptions.editingCell.innerElement.endEdit(this.tableOptions.editingCell), + (this.tableOptions.editingCell = t); + }), + (t.prototype.endEdit = function (t) { + var e = this.editor.getValue(); + if (e) { + if (this.tableOptions.options.isEnableEditField) { + var n = e.split("#"); + (t.title = this.title = n[0]), n.length > 0 && (t.field = this.field = n[1]); + } else t.title = this.title = e; + } else this.tableOptions.options.isEnableEditField ? ((t.title = this.title = ""), (t.field = this.field = "")) : (t.title = this.title = ""); + this.editor.destroy(), t.getTarget().html(this.title); + }), + t + ); + })(), + u = (function () { + return function (t) { + (this.title = t.title), + (this.field = t.field), + (this.width = t.width), + (this.align = t.align), + (this.halign = t.halign), + (this.vAlign = t.vAlign), + (this.colspan = t.colspan), + (this.rowspan = t.rowspan), + (this.checked = t.checked), + (this.columnId = t.columnId), + (this.formatter2 = t.formatter2), + (this.styler2 = t.styler2); + }; + })(), + d = (function () { + function t() { + this.id = s.a.createId(); + } + + return ( + (t.prototype.init = function (t, e, n, i) { + (this.isHead = i), (this.rowId = n), (this.isEditing = !1); + var o = /^[0-9]*$/; + (this.target = t), (this.tableOptions = e); + var r = this.target.attr("colspan"); + this.colspan = o.test(r) ? parseInt(r) : 1; + var a = this.target.attr("rowspan"); + (this.rowspan = o.test(a) ? parseInt(a) : 1), this.initEvent(), this.isHead && this.initInnerEelement(); + }), + (t.prototype.beginEdit = function () { + if (!this.isEditing && this.tableOptions.isEnableEdit && this.tableOptions.onBeforEdit(this)) { + var t = this.getValue(); + (this.editor = r.Instance.createEditor("text")), (this.isEditing = !0), (this.tableOptions.editingCell = this), this.target.html(""), this.editor.init(this), this.editor.setValue(t); + } + }), + (t.prototype.endEdit = function () { + this.isEditing = !1; + var t = this.editor.getValue(); + this.editor.destroy(), this.target.html(t); + }), + (t.prototype.getTarget = function () { + return this.target; + }), + (t.prototype.getValue = function () { + return this.target.html(); + }), + (t.prototype.setValue = function (t) {}), + (t.prototype.initInnerEelement = function () { + (this.innerElement = new l()), this.innerElement.init(this, this.tableOptions); + }), + (t.prototype.initEvent = function () {}), + (t.prototype.isXYinCell = function (t, e) { + var n = new a.b({ + x: t, + y: e, + height: 0, + width: 0 + }); + return this.isOverlap(n); + }), + (t.prototype.getTableRect = function () { + return new a.b({ + x: this.target.offset().left, + y: this.target.offset().top, + height: this.target[0].offsetHeight, + width: this.target[0].offsetWidth + }); + }), + (t.prototype.isOverlap = function (t) { + var e = this.getTableRect(); + return t.x + t.width > e.x && e.x + e.width > t.x && t.y + t.height > e.y && e.y + e.height > t.y; + }), + (t.prototype.isInRect = function (t) { + var e = t.rect, + n = this.getTableRect(); + + if (e.x + e.width > n.x && n.x + n.width > e.x && e.y + e.height > n.y && n.y + n.height > e.y) { + var i = p.a.mergeRect(e, n); + return JSON.stringify(e) == JSON.stringify(i) || ((t.changed = !0), (t.rect = i), !0); + } + + return !1; + }), + (t.prototype.isSelected = function () { + return this.target.hasClass("selected"); + }), + (t.prototype.select = function () { + this.target.addClass("selected"); + }), + (t.prototype.isHeader = function () { + return !1; + }), + (t.prototype.setAlign = function (t) { + (this.align = t), t ? this.target.css("text-align", t) : (this.target[0].style.textAlign = ""); + }), + (t.prototype.setVAlign = function (t) { + (this.vAlign = t), t ? this.target.css("vertical-align", t) : (this.target[0].style.verticalAlign = ""); + }), + (t.prototype.getEntity = function () { + return new u(this); + }), + t + ); + })(); + + n.d(e, "a", function () { + return f; + }); + + var _c, + h = + ((_c = function c(t, e) { + return (_c = + Object.setPrototypeOf || + (_instanceof( + { + __proto__: [] + }, + Array + ) && + function (t, e) { + t.__proto__ = e; + }) || + function (t, e) { + for (var n in e) { + e.hasOwnProperty(n) && (t[n] = e[n]); + } + })(t, e); + }), + function (t, e) { + function n() { + this.constructor = t; + } + + _c(t, e), (t.prototype = null === e ? Object.create(e) : ((n.prototype = e.prototype), new n())); + }), + f = (function (t) { + function e(e) { + var n = this; + return ( + (e = e || {}), + ((n = t.call(this) || this).width = e.width ? parseFloat(e.width.toString()) : 100), + (n.title = e.title), + (n.descTitle = e.descTitle), + (n.field = e.field), + (n.fixed = e.fixed), + (n.rowspan = e.rowspan ? parseInt(e.rowspan) : 1), + (n.colspan = e.colspan ? parseInt(e.colspan) : 1), + (n.align = e.align), + (n.halign = e.halign), + (n.vAlign = e.vAlign), + (n.formatter = e.formatter), + (n.styler = e.styler), + (n.formatter2 = e.formatter2), + (n.styler2 = e.styler2), + (n.checkbox = e.checkbox), + (n.checked = 0 != e.checked), + (n.columnId = e.columnId || e.field), + n + ); + } + + return h(e, t), (e.prototype.css = function (t) {}), e; + })(d); + }, + function (t, e, n) { + "use strict"; + + n.d(e, "a", function () { + return i; + }); + + var i = (function () { + return function (t) { + (this.printLine = t.printLine), (this.target = t.target), (this.referenceElement = t.referenceElement); + }; + })(); + }, + function (module, __webpack_exports__, __webpack_require__) { + "use strict"; + + __webpack_require__.d(__webpack_exports__, "a", function () { + return TableExcelHelper; + }); + + var _ReconsitutionTableColumns__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(19), + _assets_plugins_hinnn__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(0), + TableExcelHelper = (function () { + function TableExcelHelper() {} + + return ( + (TableExcelHelper.createTableHead = function (t, e) { + for ( + var n = TableExcelHelper.reconsitutionTableColumnTree(t), + i = $(""), + o = TableExcelHelper.getColumnsWidth(n, e), + r = function r(t) { + var e = $(""); + n[t].forEach(function (t) { + var n = $(""); + t.id && n.attr("id", t.id), + t.columnId && n.attr("column-id", t.columnId), + (t.align || t.halign) && n.css("text-align", t.halign || t.align), + t.vAlign && n.css("vertical-align", t.vAlign), + t.colspan > 1 && n.attr("colspan", t.colspan), + t.rowspan > 1 && n.attr("rowspan", t.rowspan), + n.html(t.title), + o[t.id] ? ((t.hasWidth = !0), (t.targetWidth = o[t.id]), n.attr("haswidth", "haswidth"), n.css("width", o[t.id] + "pt")) : (t.hasWidth = !1), + e.append(n); + }), + i.append(e); + }, + a = 0; + a < n.totalLayer; + a++ + ) { + r(a); + } + + return TableExcelHelper.syncTargetWidthToOption(t), i; + }), + (TableExcelHelper.createTableFooter = function (t, e, n, i, o, r) { + var a = $(""), + p = this.getFooterFormatter(n, i); + return p && a.append(p(n, e, o, r)), a; + }), + (TableExcelHelper.createTableRow = function (t, e, n, i) { + var o = TableExcelHelper.reconsitutionTableColumnTree(t), + r = $(""); + (e || (e = []), i.groupFields.length) + ? _assets_plugins_hinnn__WEBPACK_IMPORTED_MODULE_1__.a + .groupBy(e, i.groupFields, function (t) { + var e = {}; + return ( + i.groupFields.forEach(function (n) { + return (e[n] = t[n]); + }), + e + ); + }) + .forEach(function (t) { + if (i.groupFormatter) { + var e = $(""); + e.find("td").append(i.groupFormatter(t, n)), r.append(e); + } + + if ( + (t.rows.forEach(function (t) { + var e = TableExcelHelper.createRowTarget(o, t, n, i); + r.append(e); + }), + i.groupFooterFormatter) + ) { + var a = $(""); + a.find("td").append(i.groupFooterFormatter(t, n)), r.append(a); + } + }) + : e.forEach(function (t) { + var e = TableExcelHelper.createRowTarget(o, t, n, i); + r.append(e); + }); + return r; + }), + (TableExcelHelper.createRowTarget = function (t, e, n, i) { + var o = $(""); + o.data("rowData", e), + t.rowColumns.forEach(function (t, i) { + var r = $(""); + t.field && r.attr("field", t.field), t.align && r.css("text-align", t.align), t.vAlign && r.css("vertical-align", t.vAlign); + var a = TableExcelHelper.getColumnFormatter(t), + p = a ? a(e[t.field], e, i, n) : e[t.field]; + r.html(p); + var s = TableExcelHelper.getColumnStyler(t); + + if (s) { + var l = s(e[t.field], e, i, n); + if (l) + Object.keys(l).forEach(function (t) { + r.css(t, l[t]); + }); + } + + o.append(r); + }); + var r = TableExcelHelper.getRowStyler(n, i); + + if (r) { + var a = r(e, n); + if (a) + Object.keys(a).forEach(function (t) { + o.css(t, a[t]); + }); + } + + return o; + }), + (TableExcelHelper.createEmptyRowTarget = function (t) { + var e = TableExcelHelper.reconsitutionTableColumnTree(t), + n = $(""); + return ( + e.rowColumns.forEach(function (t, e) { + var i = $(""); + t.field && i.attr("field", t.field), t.align && i.css("text-align", t.align), t.vAlign && i.css("vertical-align", t.vAlign), n.append(i); + }), + n + ); + }), + (TableExcelHelper.getColumnsWidth = function (t, e) { + var n = {}, + i = TableExcelHelper.allAutoWidth(t), + o = TableExcelHelper.allFixedWidth(t); + return ( + t.rowColumns.forEach(function (t) { + if (t.fixed) n[t.id] = t.width; + else { + var r = e - o, + a = (t.width / i) * (r > 0 ? r : 0); + n[t.id] = a; + } + }), + n + ); + }), + (TableExcelHelper.resizeTableCellWidth = function (t, e, n) { + var i = TableExcelHelper.reconsitutionTableColumnTree(e), + o = TableExcelHelper.getColumnsWidth(i, n); + t.find("thead tr td[haswidth]").map(function (t, e) { + var n = $(e).attr("id"), + i = o[n]; + $(e).css("width", i + "pt"); + }); + }), + (TableExcelHelper.allAutoWidth = function (t) { + var e = 0; + return ( + t.rowColumns.forEach(function (t) { + e += t.fixed ? 0 : t.width; + }), + e + ); + }), + (TableExcelHelper.allFixedWidth = function (t) { + var e = 0; + return ( + t.rowColumns.forEach(function (t) { + e += t.fixed ? t.width : 0; + }), + e + ); + }), + (TableExcelHelper.reconsitutionTableColumnTree = function (t, e, n) { + var i = e || new _ReconsitutionTableColumns__WEBPACK_IMPORTED_MODULE_0__.a(); + i.colspan = 0; + + for ( + var o = function o(e) { + (i.totalLayer = e + 1), + (i[e] = t[e].columns), + 0 == e && + t[e].columns.forEach(function (t) { + 0 == e && (i.colspan += t.colspan); + }); + }, + r = 0; + r < t.length; + r++ + ) { + o(r); + } + + return (i.rowColumns = TableExcelHelper.getOrderdColumns(i)), i; + }), + (TableExcelHelper.syncTargetWidthToOption = function (t) { + t.forEach(function (t) { + t.columns.forEach(function (t) { + t.hasWidth && (t.width = t.targetWidth); + }); + }); + }), + (TableExcelHelper.getFooterFormatter = function (options, tablePrintElementType) { + var footerFormatter = void 0; + if ((tablePrintElementType.footerFormatter && (footerFormatter = tablePrintElementType.footerFormatter), options.footerFormatter)) + try { + var s = "footerFormatter=" + options.footerFormatter; + eval(s); + } catch (t) { + console.log(t); + } + return footerFormatter; + }), + (TableExcelHelper.getRowStyler = function (options, tablePrintElementType) { + var rowStyler = void 0; + if ((tablePrintElementType.rowStyler && (rowStyler = tablePrintElementType.rowStyler), options.rowStyler)) + try { + var s = "rowStyler=" + options.rowStyler; + eval(s); + } catch (t) { + console.log(t); + } + return rowStyler; + }), + (TableExcelHelper.getColumnStyler = function (column) { + var styler = void 0; + if ((column.styler && (styler = column.styler), column.styler2)) + try { + var s = "styler=" + column.styler2; + eval(s); + } catch (t) { + console.log(t); + } + return styler; + }), + (TableExcelHelper.getColumnFormatter = function (column) { + var formatter = void 0; + if ((column.formatter && (formatter = column.formatter), column.formatter2)) + try { + var s = "formatter=" + column.formatter2; + eval(s); + } catch (t) { + console.log(t); + } + return formatter; + }), + (TableExcelHelper.getOrderdColumns = function (t) { + for ( + var e = {}, + n = function n(_n2) { + t[_n2].forEach(function (t) { + for (var i = 0; i < t.rowspan; i++) { + (e[_n2 + i] = e[_n2 + i] ? e[_n2 + i] : []), e[_n2 + i].push(t); + } + }); + }, + i = 0; + i < t.totalLayer; + i++ + ) { + n(i); + } + + return e[t.totalLayer - 1]; + }), + TableExcelHelper + ); + })(); + }, + function (t, e, n) { + "use strict"; + + n.d(e, "a", function () { + return i; + }); + + var i = (function () { + function t(t) { + (this.top = t.top), + (this.left = t.left), + (this.height = t.height), + (this.width = t.width), + (this.bottomInLastPaper = t.bottomInLastPaper), + (this.beginPrintPaperIndex = t.beginPrintPaperIndex), + (this.printTopInPaper = t.printTopInPaper), + (this.endPrintPaperIndex = t.endPrintPaperIndex); + } + + return ( + (t.prototype.isPositionLeftOrRight = function (t) { + return this.top <= t && this.top + this.height > t; + }), + t + ); + })(); + }, + function (t, e, n) { + "use strict"; + + var i = (function () { + function t() { + this.name = "lineHeight"; + } + + return ( + (t.prototype.css = function (t, e) { + if (t && t.length) { + if (e) return t.css("line-height", e + "pt"), "line-height:" + e + "pt"; + t[0].style.lineHeight = ""; + } + + return null; + }), + (t.prototype.createTarget = function () { + return ( + (this.target = $( + '
\n
\n 字体行高\n
\n
\n \n
\n
' + )), + this.target + ); + }), + (t.prototype.getValue = function () { + var t = this.target.find("select").val(); + if (t) return parseFloat(t.toString()); + }), + (t.prototype.setValue = function (t) { + t && (this.target.find('option[value="' + t + '"]').length || this.target.find("select").prepend('")); + this.target.find("select").val(t); + }), + (t.prototype.destroy = function () { + this.target.remove(); + }), + t + ); + })(), + o = (function () { + function t() { + this.name = "fontFamily"; + } + + return ( + (t.prototype.createTarget = function () { + return ( + (this.target = $( + '
\n
\n 字体\n
\n
\n \n
\n
' + )), + this.target + ); + }), + (t.prototype.css = function (t, e) { + if (t && t.length) { + if (e) return t.css("font-family", e), "font-family:" + e; + t[0].style.fontFamily = ""; + } + + return null; + }), + (t.prototype.getValue = function () { + var t = this.target.find("select").val(); + if (t) return t.toString(); + }), + (t.prototype.setValue = function (t) { + t && (this.target.find('option[value="' + t + '"]').length || this.target.find("select").prepend('")); + this.target.find("select").val(t); + }), + (t.prototype.destroy = function () { + this.target.remove(); + }), + t + ); + })(), + r = (function () { + function t() { + this.name = "fontSize"; + } + + return ( + (t.prototype.css = function (t, e) { + if (t && t.length) { + if (e) return t.css("font-size", e + "pt"), "font-size:" + e + "pt"; + t[0].style.fontSize = ""; + } + + return null; + }), + (t.prototype.createTarget = function () { + return ( + (this.target = $( + '
\n
\n 字体大小\n
\n
\n \n
\n
' + )), + this.target + ); + }), + (t.prototype.getValue = function () { + var t = this.target.find("select").val(); + if (t) return parseFloat(t.toString()); + }), + (t.prototype.setValue = function (t) { + t && (this.target.find('option[value="' + t + '"]').length || this.target.find("select").prepend('")); + this.target.find("select").val(t); + }), + (t.prototype.destroy = function () { + this.target.remove(); + }), + t + ); + })(), + a = (function () { + function t() { + this.name = "fontWeight"; + } + + return ( + (t.prototype.css = function (t, e) { + if (t && t.length) { + if (e) return t.css("font-weight", e), "font-weight:" + e; + t[0].style.fontWeight = ""; + } + + return null; + }), + (t.prototype.createTarget = function () { + return ( + (this.target = $( + '
\n
\n 字体粗细\n
\n
\n \n
\n
' + )), + this.target + ); + }), + (t.prototype.getValue = function () { + var t = this.target.find("select").val(); + if (t) return t.toString(); + }), + (t.prototype.setValue = function (t) { + t && (this.target.find('option[value="' + t + '"]').length || this.target.find("select").prepend('")); + this.target.find("select").val(t); + }), + (t.prototype.destroy = function () { + this.target.remove(); + }), + t + ); + })(), + p = (function () { + function t() { + this.name = "letterSpacing"; + } + + return ( + (t.prototype.css = function (t, e) { + if (t && t.length) { + if (e) return t.css("letter-spacing", e + "pt"), "letter-spacing:" + e + "pt"; + t[0].style.letterSpacing = ""; + } + + return null; + }), + (t.prototype.createTarget = function () { + return ( + (this.target = $( + '
\n
\n 字间距\n
\n
\n \n
\n
' + )), + this.target + ); + }), + (t.prototype.getValue = function () { + var t = this.target.find("select").val(); + if (t) return parseFloat(t.toString()); + }), + (t.prototype.setValue = function (t) { + t && (this.target.find('option[value="' + t + '"]').length || this.target.find("select").prepend('")); + this.target.find("select").val(t); + }), + (t.prototype.destroy = function () { + this.target.remove(); + }), + t + ); + })(), + s = (function () { + function t() { + this.name = "textAlign"; + } + + return ( + (t.prototype.css = function (t, e) { + if (t && t.length) { + if (e) + return ( + t.css("text-align", e), + "justify" == e ? (t.css("text-align-last", "justify"), t.css("text-justify", "distribute-all-lines")) : ((t[0].style.textAlignLast = ""), (t[0].style.textJustify = "")), + "text-align:" + e + ); + (t[0].style.textAlign = ""), (t[0].style.textAlignLast = ""), (t[0].style.textJustify = ""); + } + + return null; + }), + (t.prototype.createTarget = function () { + return ( + (this.target = $( + '
\n
\n 左右对齐\n
\n
\n \n
\n
' + )), + this.target + ); + }), + (t.prototype.getValue = function () { + var t = this.target.find("select").val(); + if (t) return t.toString(); + }), + (t.prototype.setValue = function (t) { + this.target.find("select").val(t); + }), + (t.prototype.destroy = function () { + this.target.remove(); + }), + t + ); + })(), + l = (function () { + function t() { + this.name = "hideTitle"; + } + + return ( + (t.prototype.createTarget = function () { + return ( + (this.target = $( + '
\n
\n 标题显示隐藏\n
\n
\n \n
\n
' + )), + this.target + ); + }), + (t.prototype.getValue = function () { + if ("true" == this.target.find("select").val()) return !0; + }), + (t.prototype.setValue = function (t) { + this.target.find("select").val((null == t ? "" : t).toString()); + }), + (t.prototype.destroy = function () { + this.target.remove(); + }), + t + ); + })(), + u = (function () { + function t() { + this.name = "tableBorder"; + } + + return ( + (t.prototype.css = function (t, e) { + if (t.find("table").length) { + if ("border" == e) return t.find("table").css("border", "1px solid"), "border:1px solid"; + "noBorder" == e ? t.find("table").css("border", "0px solid") : (t.find("table")[0].style.border = ""); + } + + return null; + }), + (t.prototype.createTarget = function () { + return ( + (this.target = $( + '
\n
\n 表格边框\n
\n
\n \n
\n
' + )), + this.target + ); + }), + (t.prototype.getValue = function () { + var t = this.target.find("select").val(); + if (t) return t.toString(); + }), + (t.prototype.setValue = function (t) { + this.target.find("select").val(t); + }), + (t.prototype.destroy = function () { + this.target.remove(); + }), + t + ); + })(), + d = (function () { + function t() { + this.name = "tableHeaderBorder"; + } + + return ( + (t.prototype.css = function (t, e) { + if (t.find("thead tr").length) { + if ("border" == e) return t.find("thead tr").css("border", "1px solid"), "border:1pt solid"; + "noBorder" == e + ? t.find("thead tr").css("border", "0px solid") + : "topBorder" == e + ? (t.find("thead tr").css("border", "0px solid"), t.find("thead tr").css("border-top", "1px solid")) + : "bottomBorder" == e + ? (t.find("thead tr").css("border", "0px solid"), t.find("thead tr").css("border-bottom", "1px solid")) + : "topBottomBorder" == e + ? (t.find("thead tr").css("border", "0px solid"), t.find("thead tr").css("border-top", "1px solid"), t.find("thead tr").css("border-bottom", "1px solid")) + : t.find("thead tr").map(function (t, e) { + e.style.border = ""; + }); + } + + return null; + }), + (t.prototype.createTarget = function () { + return ( + (this.target = $( + '
\n
\n 表头边框\n
\n
\n \n
\n
' + )), + this.target + ); + }), + (t.prototype.getValue = function () { + var t = this.target.find("select").val(); + if (t) return t.toString(); + }), + (t.prototype.setValue = function (t) { + this.target.find("select").val(t); + }), + (t.prototype.destroy = function () { + this.target.remove(); + }), + t + ); + })(), + c = (function () { + function t() { + this.name = "tableHeaderCellBorder"; + } + + return ( + (t.prototype.css = function (t, e) { + if (t.find("thead tr td").length) { + if ("border" == e) return t.find("thead tr td").css("border", "1px solid"), "border:1px solid"; + "noBorder" == e + ? t.find("thead tr td").css("border", "0px solid") + : t.find("thead tr td").map(function (t, e) { + e.style.border = ""; + }); + } + + return null; + }), + (t.prototype.createTarget = function () { + return ( + (this.target = $( + '
\n
\n 表头单元格边框\n
\n
\n \n
\n
' + )), + this.target + ); + }), + (t.prototype.getValue = function () { + var t = this.target.find("select").val(); + if (t) return t.toString(); + }), + (t.prototype.setValue = function (t) { + this.target.find("select").val(t); + }), + (t.prototype.destroy = function () { + this.target.remove(); + }), + t + ); + })(), + h = (function () { + function t() { + this.name = "tableHeaderRowHeight"; + } + + return ( + (t.prototype.css = function (t, e) { + if (t.find("thead tr td").length) { + if (e) return t.find("thead tr td:not([rowspan])").css("height", e + "pt"), "height:" + e + "pt"; + t.find("thead tr td").map(function (t, e) { + e.style.height = ""; + }); + } + + return null; + }), + (t.prototype.createTarget = function () { + return ( + (this.target = $( + '
\n
\n 表头行高\n
\n
\n \n
\n
' + )), + this.target + ); + }), + (t.prototype.getValue = function () { + var t = this.target.find("select").val(); + if (t) return parseFloat(t.toString()); + }), + (t.prototype.setValue = function (t) { + t && (this.target.find('option[value="' + t + '"]').length || this.target.find("select").prepend('")); + this.target.find("select").val(t); + }), + (t.prototype.destroy = function () { + this.target.remove(); + }), + t + ); + })(), + f = (function () { + function t() { + this.name = "tableHeaderFontSize"; + } + + return ( + (t.prototype.css = function (t, e) { + if (t.find("thead").length) { + if (e) return t.find("thead").css("font-size", e + "pt"), "font-size:" + e + "pt"; + t.find("thead").map(function (t, e) { + e.style.fontSize = ""; + }); + } + + return null; + }), + (t.prototype.createTarget = function () { + return ( + (this.target = $( + '
\n
\n 表头字体大小\n
\n
\n \n
\n
' + )), + this.target + ); + }), + (t.prototype.getValue = function () { + var t = this.target.find("select").val(); + if (t) return parseFloat(t.toString()); + }), + (t.prototype.setValue = function (t) { + t && (this.target.find('option[value="' + t + '"]').length || this.target.find("select").prepend('")); + this.target.find("select").val(t); + }), + (t.prototype.destroy = function () { + this.target.remove(); + }), + t + ); + })(), + g = (function () { + function t() { + this.name = "tableHeaderFontWeight"; + } + + return ( + (t.prototype.css = function (t, e) { + if (t.find("thead").length) { + if (e) return t.find("thead tr td").css("font-weight", e), "font-weight:" + e; + t.find("thead tr td").map(function (t, e) { + e.style.fontWeight = ""; + }); + } + + return null; + }), + (t.prototype.createTarget = function () { + return ( + (this.target = $( + '
\n
\n 表头字体粗细\n
\n
\n \n
\n
' + )), + this.target + ); + }), + (t.prototype.getValue = function () { + var t = this.target.find("select").val(); + if (t) return t; + }), + (t.prototype.setValue = function (t) { + t && (this.target.find('option[value="' + t + '"]').length || this.target.find("select").prepend('")); + this.target.find("select").val(t); + }), + (t.prototype.destroy = function () { + this.target.remove(); + }), + t + ); + })(), + m = (function () { + function t() { + this.name = "tableBodyCellBorder"; + } + + return ( + (t.prototype.css = function (t, e) { + if (t.find("tbody tr td").length) { + if ("border" == e) return t.find("tbody tr td").css("border", "1px solid"), "border:1px solid"; + "noBorder" == e + ? t.find("tbody tr td").css("border", "0px solid") + : t.find("tbody tr td").map(function (t, e) { + e.style.border = ""; + }); + } + + return null; + }), + (t.prototype.createTarget = function () { + return ( + (this.target = $( + '
\n
\n 表体单元格\n
\n
\n \n
\n
' + )), + this.target + ); + }), + (t.prototype.getValue = function () { + var t = this.target.find("select").val(); + if (t) return t.toString(); + }), + (t.prototype.setValue = function (t) { + this.target.find("select").val(t); + }), + (t.prototype.destroy = function () { + this.target.remove(); + }), + t + ); + })(), + v = (function () { + function t() { + this.name = "tableBodyRowHeight"; + } + + return ( + (t.prototype.css = function (t, e) { + if (t.find("tbody tr td").length) { + if (e) return t.find("tbody tr td:not([rowspan])").css("height", e + "pt"), "height:" + e + "pt"; + t.find("tbody tr td").map(function (t, e) { + e.style.height = ""; + }); + } + + return null; + }), + (t.prototype.createTarget = function () { + return ( + (this.target = $( + '
\n
\n 表体行高\n
\n
\n \n
\n
' + )), + this.target + ); + }), + (t.prototype.getValue = function () { + var t = this.target.find("select").val(); + if (t) return parseFloat(t.toString()); + }), + (t.prototype.setValue = function (t) { + t && (this.target.find('option[value="' + t + '"]').length || this.target.find("select").prepend('")); + this.target.find("select").val(t); + }), + (t.prototype.destroy = function () { + this.target.remove(); + }), + t + ); + })(), + y = (function () { + function t() { + this.name = "tableHeaderBackground"; + } + + return ( + (t.prototype.css = function (t, e) { + if (t.find("thead").length) { + if (e) return t.find("thead").css("background", e), "background:" + e; + t.find("thead").map(function (t, e) { + e.style.background = ""; + }); + } + + return null; + }), + (t.prototype.createTarget = function () { + return ( + (this.target = $( + '
\n
\n 表头背景\n
\n
\n \n
\n
' + )), + this.target + ); + }), + (t.prototype.getValue = function () { + var t = this.target.find("input").val(); + if (t) return t.toString(); + }), + (t.prototype.setValue = function (t) { + this.target.find("input").minicolors({ + defaultValue: t || "", + theme: "bootstrap" + }), + this.target.find("input").val(t); + }), + (t.prototype.destroy = function () { + this.target.remove(); + }), + t + ); + })(), + b = (function () { + function t() { + this.name = "borderWidth"; + } + + return ( + (t.prototype.createTarget = function () { + return ( + (this.target = $( + '
\n
\n 边框大小\n
\n
\n \n
\n
' + )), + this.target + ); + }), + (t.prototype.css = function (t, e) { + if (t && t.length) { + if (e) return t.css("border-width", e + "pt"), "border-width:" + e + "pt"; + t[0].style.borderWidth = ""; + } + + return null; + }), + (t.prototype.getValue = function () { + var t = this.target.find("select").val(); + if (t) return t.toString(); + }), + (t.prototype.setValue = function (t) { + t && (this.target.find('option[value="' + t + '"]').length || this.target.find("select").prepend('")); + this.target.find("select").val(t); + }), + (t.prototype.destroy = function () { + this.target.remove(); + }), + t + ); + })(), + E = (function () { + function t() { + this.name = "barcodeMode"; + } + + return ( + (t.prototype.createTarget = function () { + return ( + (this.target = $( + '
\n
\n 条形码格式\n
\n
\n \n
\n
' + )), + this.target + ); + }), + (t.prototype.getValue = function () { + var t = this.target.find("select").val(); + return t || void 0; + }), + (t.prototype.setValue = function (t) { + this.target.find("select").val(t); + }), + (t.prototype.destroy = function () { + this.target.remove(); + }), + t + ); + })(), + T = (function () { + function t() { + this.name = "color"; + } + + return ( + (t.prototype.css = function (t, e) { + if (t && t.length) { + if (e) return t.css("color", e), "color:" + e; + t[0].style.color = ""; + } + + return null; + }), + (t.prototype.createTarget = function () { + return ( + (this.target = $( + '
\n
\n 字体颜色\n
\n
\n \n
\n
' + )), + this.target + ); + }), + (t.prototype.getValue = function () { + var t = this.target.find("input").val(); + if (t) return t.toString(); + }), + (t.prototype.setValue = function (t) { + this.target.find("input").minicolors({ + defaultValue: t || "", + theme: "bootstrap" + }), + this.target.find("input").val(t); + }), + (t.prototype.destroy = function () { + this.target.remove(); + }), + t + ); + })(), + P = (function () { + function t() { + this.name = "textDecoration"; + } + + return ( + (t.prototype.createTarget = function () { + return ( + (this.target = $( + '
\n
\n 文本修饰\n
\n
\n \n
\n
' + )), + this.target + ); + }), + (t.prototype.css = function (t, e) { + if (t && t.length) { + if (e) return t.css("text-decoration", e), "text-decoration:" + e; + t[0].style.textDecoration = ""; + } + + return null; + }), + (t.prototype.getValue = function () { + var t = this.target.find("select").val(); + if (t) return t.toString(); + }), + (t.prototype.setValue = function (t) { + t && (this.target.find('option[value="' + t + '"]').length || this.target.find("select").prepend('")); + this.target.find("select").val(t); + }), + (t.prototype.destroy = function () { + this.target.remove(); + }), + t + ); + })(), + _ = (function () { + function t() { + this.name = "field"; + } + + return ( + (t.prototype.createTarget = function (t) { + var e = void 0; + + if ((t && (e = t.getFields()), e)) { + this.isSelect = !0; + var n = + '
\n
\n 字段名\n
\n
\n \n
\n
"), + (this.target = $(n)); + } else { + this.isSelect = !1; + this.target = $( + '
\n
\n 字段名\n
\n
\n \n
\n
' + ); + } + + return this.target; + }), + (t.prototype.getValue = function () { + return (this.isSelect ? this.target.find("select").val() : this.target.find("input").val()) || void 0; + }), + (t.prototype.setValue = function (t) { + this.isSelect + ? t && (this.target.find('option[value="' + t + '"]').length || this.target.find("select").prepend('"), this.target.find("select").val(t)) + : this.target.find("input").val(t); + }), + (t.prototype.destroy = function () { + this.target.remove(); + }), + t + ); + })(), + w = (function () { + function t() { + this.name = "title"; + } + + return ( + (t.prototype.createTarget = function () { + return ( + (this.target = $( + '
\n
\n 标题\n
\n
\n \n
\n
' + )), + this.target + ); + }), + (t.prototype.getValue = function () { + var t = this.target.find("textarea").val(); + if (t) return t; + }), + (t.prototype.setValue = function (t) { + this.target.find("textarea").val(t); + }), + (t.prototype.destroy = function () { + this.target.remove(); + }), + t + ); + })(), + x = (function () { + function t() { + this.name = "testData"; + } + + return ( + (t.prototype.createTarget = function () { + return ( + (this.target = $( + '
\n
\n 测试数据\n
\n
\n \n
\n
' + )), + this.target + ); + }), + (t.prototype.getValue = function () { + var t = this.target.find("input").val(); + if (t) return t.toString(); + }), + (t.prototype.setValue = function (t) { + this.target.find("input").val(t); + }), + (t.prototype.destroy = function () { + this.target.remove(); + }), + t + ); + })(), + C = (function () { + function t() { + this.name = "src"; + } + + return ( + (t.prototype.createTarget = function () { + return ( + (this.target = $( + '
\n
\n 图片地址\n
\n
\n \n
\n
' + )), + this.target + ); + }), + (t.prototype.getValue = function () { + var t = this.target.find("input").val(); + if (t) return t.toString(); + }), + (t.prototype.setValue = function (t) { + this.target.find("input").val(t); + }), + (t.prototype.destroy = function () { + this.target.remove(); + }), + t + ); + })(), + O = (function () { + function t() { + this.name = "borderColor"; + } + + return ( + (t.prototype.css = function (t, e) { + if (t && t.length) { + if (e) return t.css("border-color", e), "border-color:" + e; + t[0].style.borderColor = ""; + } + + return null; + }), + (t.prototype.createTarget = function () { + return ( + (this.target = $( + '
\n
\n 边框颜色\n
\n
\n \n
\n
' + )), + this.target + ); + }), + (t.prototype.getValue = function () { + var t = this.target.find("input").val(); + if (t) return t.toString(); + }), + (t.prototype.setValue = function (t) { + this.target.find("input").minicolors({ + defaultValue: t || "", + theme: "bootstrap" + }), + this.target.find("input").val(t); + }), + (t.prototype.destroy = function () { + this.target.remove(); + }), + t + ); + })(), + H = (function () { + function t() { + this.name = "paperNumberFormat"; + } + + return ( + (t.prototype.createTarget = function () { + return ( + (this.target = $( + '
\n
\n 页码格式\n
\n
\n \n
\n
' + )), + this.target + ); + }), + (t.prototype.getValue = function () { + var t = this.target.find("input").val(); + if (t) return t.toString(); + }), + (t.prototype.setValue = function (t) { + this.target.find("input").val(t); + }), + (t.prototype.destroy = function () { + this.target.remove(); + }), + t + ); + })(), + D = (function () { + function t() { + this.name = "paperNumberDisabled"; + } + + return ( + (t.prototype.createTarget = function () { + return ( + (this.target = $( + '
\n
\n 启用/禁用\n
\n
\n \n
\n
' + )), + this.target + ); + }), + (t.prototype.getValue = function () { + if ("true" == this.target.find("select").val()) return !0; + }), + (t.prototype.setValue = function (t) { + this.target.find("select").val(t); + }), + (t.prototype.destroy = function () { + this.target.remove(); + }), + t + ); + })(), + I = (function () { + function t() { + this.name = "longTextIndent"; + } + + return ( + (t.prototype.css = function (t, e) { + return null; + }), + (t.prototype.createTarget = function () { + return ( + (this.target = $( + '
\n
\n 每行缩进\n
\n
\n \n
\n
' + )), + this.target + ); + }), + (t.prototype.getValue = function () { + var t = this.target.find("select").val(); + if (t) return parseFloat(t.toString()); + }), + (t.prototype.setValue = function (t) { + t && (this.target.find('option[value="' + t + '"]').length || this.target.find("select").prepend('")); + this.target.find("select").val(t); + }), + (t.prototype.destroy = function () { + this.target.remove(); + }), + t + ); + })(), + R = (function () { + function t() { + this.name = "showInPage"; + } + + return ( + (t.prototype.createTarget = function () { + return ( + (this.target = $( + '
\n
\n 显示规则\n
\n
\n \n
\n
' + )), + this.target + ); + }), + (t.prototype.getValue = function () { + var t = this.target.find("select").val(); + if (t) return t.toString(); + }), + (t.prototype.setValue = function (t) { + this.target.find("select").val(t); + }), + (t.prototype.destroy = function () { + this.target.remove(); + }), + t + ); + })(), + M = (function () { + function t() { + this.name = "panelPaperRule"; + } + + return ( + (t.prototype.createTarget = function () { + return ( + (this.target = $( + '
\n
\n 打印规则\n
\n
\n \n
\n
' + )), + this.target + ); + }), + (t.prototype.getValue = function () { + var t = this.target.find("select").val(); + if (t) return t.toString(); + }), + (t.prototype.setValue = function (t) { + this.target.find("select").val(t); + }), + (t.prototype.destroy = function () { + this.target.remove(); + }), + t + ); + })(), + S = (function () { + function t() { + this.name = "leftSpaceRemoved"; + } + + return ( + (t.prototype.createTarget = function () { + return ( + (this.target = $( + '
\n
\n 移除段落左侧空白\n
\n
\n \n
\n
' + )), + this.target + ); + }), + (t.prototype.getValue = function () { + if ("false" == this.target.find("select").val()) return !1; + }), + (t.prototype.setValue = function (t) { + this.target.find("select").val((null == t ? "" : t).toString()); + }), + (t.prototype.destroy = function () { + this.target.remove(); + }), + t + ); + })(), + B = (function () { + function t() { + this.name = "firstPaperFooter"; + } + + return ( + (t.prototype.createTarget = function () { + return ( + (this.target = $( + '
\n
\n 首页页尾\n
\n
\n \n
\n
' + )), + this.target + ); + }), + (t.prototype.getValue = function () { + var t = this.target.find("input").val(); + if (t) return parseFloat(t.toString()); + }), + (t.prototype.setValue = function (t) { + this.target.find("input").val(t); + }), + (t.prototype.destroy = function () { + this.target.remove(); + }), + t + ); + })(), + F = (function () { + function t() { + this.name = "lastPaperFooter"; + } + + return ( + (t.prototype.createTarget = function () { + return ( + (this.target = $( + '
\n
\n 尾页页尾\n
\n
\n \n
\n
' + )), + this.target + ); + }), + (t.prototype.getValue = function () { + var t = this.target.find("input").val(); + if (t) return parseFloat(t.toString()); + }), + (t.prototype.setValue = function (t) { + this.target.find("input").val(t); + }), + (t.prototype.destroy = function () { + this.target.remove(); + }), + t + ); + })(), + L = (function () { + function t() { + this.name = "evenPaperFooter"; + } + + return ( + (t.prototype.createTarget = function () { + return ( + (this.target = $( + '
\n
\n 偶数页页尾\n
\n
\n \n
\n
' + )), + this.target + ); + }), + (t.prototype.getValue = function () { + var t = this.target.find("input").val(); + if (t) return parseFloat(t.toString()); + }), + (t.prototype.setValue = function (t) { + this.target.find("input").val(t); + }), + (t.prototype.destroy = function () { + this.target.remove(); + }), + t + ); + })(), + A = (function () { + function t() { + this.name = "oddPaperFooter"; + } + + return ( + (t.prototype.createTarget = function () { + return ( + (this.target = $( + '
\n
\n 奇数页页尾\n
\n
\n \n
\n
' + )), + this.target + ); + }), + (t.prototype.getValue = function () { + var t = this.target.find("input").val(); + if (t) return parseFloat(t.toString()); + }), + (t.prototype.setValue = function (t) { + this.target.find("input").val(t); + }), + (t.prototype.destroy = function () { + this.target.remove(); + }), + t + ); + })(), + z = (function () { + function t() { + this.name = "fixed"; + } + + return ( + (t.prototype.createTarget = function () { + return ( + (this.target = $( + '
\n
\n 位置固定\n
\n
\n \n
\n
' + )), + this.target + ); + }), + (t.prototype.getValue = function () { + if ("true" == this.target.find("select").val()) return !0; + }), + (t.prototype.setValue = function (t) { + this.target.find("select").val((null == t ? "" : t).toString()); + }), + (t.prototype.destroy = function () { + this.target.remove(); + }), + t + ); + })(), + k = (function () { + function t() { + this.name = "axis"; + } + + return ( + (t.prototype.createTarget = function () { + return ( + (this.target = $( + '
\n
\n 拖动方向\n
\n
\n \n
\n
' + )), + this.target + ); + }), + (t.prototype.getValue = function () { + var t = this.target.find("select").val(); + return t || void 0; + }), + (t.prototype.setValue = function (t) { + this.target.find("select").val(t); + }), + (t.prototype.destroy = function () { + this.target.remove(); + }), + t + ); + })(), + N = (function () { + function t() { + this.name = "leftOffset"; + } + + return ( + (t.prototype.createTarget = function () { + return ( + (this.target = $( + '
\n
\n 左偏移\n
\n
\n \n
\n
' + )), + this.target + ); + }), + (t.prototype.getValue = function () { + var t = this.target.find("input").val(); + if (t) return parseFloat(t.toString()); + }), + (t.prototype.setValue = function (t) { + this.target.find("input").val(t); + }), + (t.prototype.destroy = function () { + this.target.remove(); + }), + t + ); + })(), + V = (function () { + function t() { + this.name = "lHeight"; + } + + return ( + (t.prototype.createTarget = function () { + return ( + (this.target = $( + '
\n
\n 最低高度\n
\n
\n \n
\n
' + )), + this.target + ); + }), + (t.prototype.getValue = function () { + var t = this.target.find("input").val(); + if (t) return parseFloat(t.toString()); + }), + (t.prototype.setValue = function (t) { + this.target.find("input").val(t); + }), + (t.prototype.destroy = function () { + this.target.remove(); + }), + t + ); + })(), + W = (function () { + function t() { + this.name = "unShowInPage"; + } + + return ( + (t.prototype.createTarget = function () { + return ( + (this.target = $( + '
\n
\n 隐藏规则\n
\n
\n \n
\n
' + )), + this.target + ); + }), + (t.prototype.getValue = function () { + var t = this.target.find("select").val(); + if (t) return t; + }), + (t.prototype.setValue = function (t) { + this.target.find("select").val(t); + }), + (t.prototype.destroy = function () { + this.target.remove(); + }), + t + ); + })(), + j = (function () { + function t() { + this.name = "tableBodyRowBorder"; + } + + return ( + (t.prototype.css = function (t, e) { + if (t.find("tbody tr").length) { + if ("border" == e) return t.find("tbody tr").css("border", "1px solid"), "border:1pt solid"; + "noBorder" == e + ? t.find("tbody tr").css("border", "0px solid") + : "topBorder" == e + ? (t.find("tbody tr").css("border", "0px solid"), t.find("tbody tr").css("border-top", "1px solid")) + : "bottomBorder" == e + ? (t.find("tbody tr").css("border", "0px solid"), t.find("tbody tr").css("border-bottom", "1px solid")) + : "topBottomBorder" == e + ? (t.find("tbody tr").css("border", "0px solid"), t.find("tbody tr").css("border-top", "1px solid"), t.find("tbody tr").css("border-bottom", "1px solid")) + : t.find("tbody tr").map(function (t, e) { + e.style.border = ""; + }); + } + + return null; + }), + (t.prototype.createTarget = function () { + return ( + (this.target = $( + '
\n
\n 表体行边框\n
\n
\n \n
\n
' + )), + this.target + ); + }), + (t.prototype.getValue = function () { + var t = this.target.find("select").val(); + if (t) return t.toString(); + }), + (t.prototype.setValue = function (t) { + this.target.find("select").val(t); + }), + (t.prototype.destroy = function () { + this.target.remove(); + }), + t + ); + })(), + U = (function () { + function t() { + this.name = "transform"; + } + + return ( + (t.prototype.css = function (t, e) { + if (t && t.length) { + var n = t.find(".hiprint-printElement-content"); + if (e) + return ( + n.css("transform", "rotate(" + e + "deg)"), + n.css("-ms-transform", "rotate(" + e + "deg)"), + n.css("-moz-transform", "rotate(" + e + "deg)"), + n.css("-webkit-transform", "rotate(" + e + "deg)"), + n.css("-o-transform", "rotate(" + e + "deg)"), + "transform:rotate(" + e + "deg)" + ); + n.length && (n[0].style.transform = ""); + } + + return null; + }), + (t.prototype.createTarget = function () { + return ( + (this.target = $( + '
\n
\n 旋转角度\n
\n
\n \n
\n
' + )), + this.target + ); + }), + (t.prototype.getValue = function () { + var t = this.target.find("input").val(); + if (t) return parseFloat(t.toString()); + }), + (t.prototype.setValue = function (t) { + this.target.find("input").val(t); + }), + (t.prototype.destroy = function () { + this.target.remove(); + }), + t + ); + })(), + K = (function () { + function t() { + this.name = "optionsGroup"; + } + + return ( + (t.prototype.createTarget = function () { + return ( + (this.target = $('
\n
\n 边框设置\n
\n \n
')), + this.target + ); + }), + (t.prototype.getValue = function () {}), + (t.prototype.setValue = function (t) {}), + (t.prototype.destroy = function () { + this.target.remove(); + }), + t + ); + })(), + G = (function () { + function t() { + this.name = "borderTop"; + } + + return ( + (t.prototype.css = function (t, e) { + if (t && t.length) { + if (e) return t.css("border-top-style", e), "border-top:1px"; + (t[0].style.borderTopStyle = ""), (t[0].style.borderTopWidth = ""); + } + + return null; + }), + (t.prototype.createTarget = function () { + return ( + (this.target = $( + '
\n
\n 上边框\n
\n
\n \n
\n
' + )), + this.target + ); + }), + (t.prototype.getValue = function () { + var t = this.target.find("select").val(); + if (t) return t; + }), + (t.prototype.setValue = function (t) { + this.target.find("select").val(t); + }), + (t.prototype.destroy = function () { + this.target.remove(); + }), + t + ); + })(), + q = (function () { + function t() { + this.name = "borderLeft"; + } + + return ( + (t.prototype.css = function (t, e) { + if (t && t.length) { + if (e) return t.css("border-left-style", e), "border-left:1px"; + (t[0].style.borderLeftStyle = ""), (t[0].style.borderLeftWidth = ""); + } + + return null; + }), + (t.prototype.createTarget = function () { + return ( + (this.target = $( + '
\n
\n 左边框\n
\n
\n \n
\n
' + )), + this.target + ); + }), + (t.prototype.getValue = function () { + var t = this.target.find("select").val(); + if (t) return t; + }), + (t.prototype.setValue = function (t) { + this.target.find("select").val(t); + }), + (t.prototype.destroy = function () { + this.target.remove(); + }), + t + ); + })(), + X = (function () { + function t() { + this.name = "borderRight"; + } + + return ( + (t.prototype.css = function (t, e) { + if (t && t.length) { + if (e) return t.css("border-right-style", e), "border-right:1px"; + (t[0].style.borderRightStyle = ""), (t[0].style.borderRightWidth = ""); + } + + return null; + }), + (t.prototype.createTarget = function () { + return ( + (this.target = $( + '
\n
\n 右边框\n
\n
\n \n
\n
' + )), + this.target + ); + }), + (t.prototype.getValue = function () { + var t = this.target.find("select").val(); + if (t) return t; + }), + (t.prototype.setValue = function (t) { + this.target.find("select").val(t); + }), + (t.prototype.destroy = function () { + this.target.remove(); + }), + t + ); + })(), + Y = (function () { + function t() { + this.name = "borderBottom"; + } + + return ( + (t.prototype.css = function (t, e) { + if (t && t.length) { + if (e) return t.css("border-bottom-style", e), "border-bottom-style:1px solid"; + (t[0].style.borderBottomStyle = ""), (t[0].style.borderBottomWidth = ""); + } + + return null; + }), + (t.prototype.createTarget = function () { + return ( + (this.target = $( + '
\n
\n 下边框\n
\n
\n \n
\n
' + )), + this.target + ); + }), + (t.prototype.getValue = function () { + var t = this.target.find("select").val(); + if (t) return t; + }), + (t.prototype.setValue = function (t) { + this.target.find("select").val(t); + }), + (t.prototype.destroy = function () { + this.target.remove(); + }), + t + ); + })(), + J = (function () { + function t() { + this.name = "contentPaddingLeft"; + } + + return ( + (t.prototype.css = function (t, e) { + var n = t.find(".hiprint-printElement-content"); + + if (n && n.length) { + if (e) return n.css("padding-left", e + "pt"), "padding-left"; + n[0].style.paddingLeft = ""; + } + + return null; + }), + (t.prototype.createTarget = function () { + return ( + (this.target = $( + '
\n
\n 左内边距\n
\n
\n \n
\n
' + )), + this.target + ); + }), + (t.prototype.getValue = function () { + var t = this.target.find("select").val(); + if (t) return parseFloat(t.toString()); + }), + (t.prototype.setValue = function (t) { + t && (this.target.find('option[value="' + t + '"]').length || this.target.find("select").prepend('")); + this.target.find("select").val(t); + }), + (t.prototype.destroy = function () { + this.target.remove(); + }), + t + ); + })(), + Q = (function () { + function t() { + this.name = "contentPaddingTop"; + } + + return ( + (t.prototype.css = function (t, e) { + var n = t.find(".hiprint-printElement-content"); + + if (n && n.length) { + if (e) return n.css("padding-top", e + "pt"), "padding-top"; + n[0].style.paddingTop = ""; + } + + return null; + }), + (t.prototype.createTarget = function () { + return ( + (this.target = $( + '
\n
\n 上内边距\n
\n
\n \n
\n
' + )), + this.target + ); + }), + (t.prototype.getValue = function () { + var t = this.target.find("select").val(); + if (t) return parseFloat(t.toString()); + }), + (t.prototype.setValue = function (t) { + t && (this.target.find('option[value="' + t + '"]').length || this.target.find("select").prepend('")); + this.target.find("select").val(t); + }), + (t.prototype.destroy = function () { + this.target.remove(); + }), + t + ); + })(), + Z = (function () { + function t() { + this.name = "contentPaddingRight"; + } + + return ( + (t.prototype.css = function (t, e) { + var n = t.find(".hiprint-printElement-content"); + + if (n && n.length) { + if (e) return n.css("padding-right", e + "pt"), "padding-right"; + n[0].style.paddingRight = ""; + } + + return null; + }), + (t.prototype.createTarget = function () { + return ( + (this.target = $( + '
\n
\n 右内边距\n
\n
\n \n
\n
' + )), + this.target + ); + }), + (t.prototype.getValue = function () { + var t = this.target.find("select").val(); + if (t) return parseFloat(t.toString()); + }), + (t.prototype.setValue = function (t) { + t && (this.target.find('option[value="' + t + '"]').length || this.target.find("select").prepend('")); + this.target.find("select").val(t); + }), + (t.prototype.destroy = function () { + this.target.remove(); + }), + t + ); + })(), + tt = (function () { + function t() { + this.name = "contentPaddingBottom"; + } + + return ( + (t.prototype.css = function (t, e) { + var n = t.find(".hiprint-printElement-content"); + + if (n && n.length) { + if (e) return n.css("padding-bottom", e + "pt"), "padding-bottom"; + n[0].style.paddingBottom = ""; + } + + return null; + }), + (t.prototype.createTarget = function () { + return ( + (this.target = $( + '
\n
\n 下内边距\n
\n
\n \n
\n
' + )), + this.target + ); + }), + (t.prototype.getValue = function () { + var t = this.target.find("select").val(); + if (t) return parseFloat(t.toString()); + }), + (t.prototype.setValue = function (t) { + t && (this.target.find('option[value="' + t + '"]').length || this.target.find("select").prepend('")); + this.target.find("select").val(t); + }), + (t.prototype.destroy = function () { + this.target.remove(); + }), + t + ); + })(), + et = (function () { + function t() { + this.name = "borderStyle"; + } + + return ( + (t.prototype.css = function (t, e) { + if (t && t.length) { + if (e) return t.css("border-style", e), "border-style:1px"; + t[0].style.borderStyle = ""; + } + + return null; + }), + (t.prototype.createTarget = function () { + return ( + (this.target = $( + '
\n
\n 边框样式\n
\n
\n \n
\n
' + )), + this.target + ); + }), + (t.prototype.getValue = function () { + var t = this.target.find("select").val(); + if (t) return t; + }), + (t.prototype.setValue = function (t) { + this.target.find("select").val(t); + }), + (t.prototype.destroy = function () { + this.target.remove(); + }), + t + ); + })(), + nt = (function () { + function t() { + this.name = "backgroundColor"; + } + + return ( + (t.prototype.css = function (t, e) { + if (t && t.length) { + if (e) return t.css("background-color", e), "background-color:" + e; + t[0].style.backgroundColor = ""; + } + + return null; + }), + (t.prototype.createTarget = function () { + return ( + (this.target = $( + '
\n
\n 背景颜色\n
\n
\n \n
\n
' + )), + this.target + ); + }), + (t.prototype.getValue = function () { + var t = this.target.find("input").val(); + if (t) return t.toString(); + }), + (t.prototype.setValue = function (t) { + this.target.find("input").minicolors({ + defaultValue: t || "", + theme: "bootstrap" + }), + this.target.find("input").val(t); + }), + (t.prototype.destroy = function () { + this.target.remove(); + }), + t + ); + })(), + it = (function () { + function t() { + this.name = "orient"; + } + + return ( + (t.prototype.createTarget = function () { + return ( + (this.target = $( + '
\n
\n 纸张方向(仅自定义纸质有效)\n
\n
\n \n
\n
' + )), + this.target + ); + }), + (t.prototype.getValue = function () { + var t = this.target.find("select").val(); + if (t) return parseFloat(t.toString()); + }), + (t.prototype.setValue = function (t) { + this.target.find("select").val(t); + }), + (t.prototype.destroy = function () { + this.target.remove(); + }), + t + ); + })(), + ot = (function () { + function t() { + this.name = "textContentVerticalAlign"; + } + + return ( + (t.prototype.createTarget = function () { + return ( + (this.target = $( + '
\n
\n 上下对齐\n
\n
\n \n
\n
' + )), + this.target + ); + }), + (t.prototype.css = function (t, e) { + if (t && t.length) { + if (e) return "middle" === e && t.addClass("hiprint-text-content-middle"), "bottom" === e && t.addClass("hiprint-text-content-bottom"), ""; + t.removeClass("hiprint-text-content-middle"), t.removeClass("hiprint-text-content-bottom"); + } + + return null; + }), + (t.prototype.getValue = function () { + var t = this.target.find("select").val(); + if (t) return t.toString(); + }), + (t.prototype.setValue = function (t) { + this.target.find("select").val(t); + }), + (t.prototype.destroy = function () { + this.target.remove(); + }), + t + ); + })(), + rt = n(5), + at = (function () { + function t() { + this.name = "columns"; + } + + return ( + (t.prototype.createTarget = function () { + $('
').appendTo("body"); + return ( + " \n \n ", + (this.target = $( + '
\n
\n
\n
\n
' + )), + this.target + ); + }), + (t.prototype.getValue = function () { + return this.buildData(); + }), + (t.prototype.setValue = function (t, e, n) { + var i = this, + o = this; + (this.value = t), (this.options = e), (this.printElementType = n); + var r = n.columns[0] + .filter(function (e) { + return ( + 0 == + t[0].columns.filter(function (t) { + return e.columnId == t.columnId; + }).length + ); + }) + .map(function (t) { + var e = new rt.a(t); + return (e.checked = !1), e; + }); + (this.allColumns = t[0].columns.concat(r)), + t && + 1 == t.length && + (this.target.find("ul").html( + this.allColumns + .map(function (t, e) { + return ( + '
  • \n ' + + (t.checked ? '' : '') + + '\n
    \n \n
    \n
    ' + + (t.title || t.descTitle || "") + + "
  • " + ); + }) + .join("") + ), + this.target.find("input").change(function () { + i.submit(); + }), + this.printElementType.columnDisplayIndexEditable && + this.target + .find("li") + .hidraggable({ + revert: !0, + handle: ".column-title", + moveUnit: "pt", + deltaX: 0, + deltaY: 0 + }) + .hidroppable({ + onDragOver: function onDragOver(t, e) { + $(this).css("border-bottom-color", "red"); + }, + onDragLeave: function onDragLeave(t, e) { + $(this).css("border-bottom-color", ""); + }, + onDrop: function onDrop(t, e) { + $(e).insertAfter(this), $(this).css("border-bottom-color", ""), o.submit(); + } + })); + }), + (t.prototype.buildData = function () { + var t = this, + e = []; + return ( + this.allColumns.filter(function (t) { + t.checked = !1; + }), + (this.printElementType.columnDisplayEditable ? this.target.find("input:checked") : this.target.find("input")).map(function (n, i) { + var o = $(i).attr("column-id"), + r = t.options.makeColumnObj(); + if (r[o]) (r[o].checked = !0), e.push(r[o]); + else { + var a = t.printElementType.getColumnByColumnId(o); + + if (a) { + var p = new rt.a(a); + (p.checked = !0), e.push(p); + } + } + }), + (this.value[0].columns = e), + this.value + ); + }), + (t.prototype.destroy = function () { + this.target.remove(); + }), + t + ); + })(), + pt = (function () { + function t() { + this.name = "textType"; + } + + return ( + (t.prototype.createTarget = function () { + return ( + (this.target = $( + '
    \n
    \n 打印类型\n
    \n
    \n \n
    \n
    ' + )), + this.target + ); + }), + (t.prototype.getValue = function () { + var t = this.target.find("select").val(); + if (t) return t; + }), + (t.prototype.setValue = function (t) { + this.target.find("select").val(t); + }), + (t.prototype.destroy = function () { + this.target.remove(); + }), + t + ); + })(), + st = (function () { + function t() { + this.name = "topOffset"; + } + + return ( + (t.prototype.createTarget = function () { + return ( + (this.target = $( + '
    \n
    \n 顶部偏移\n
    \n
    \n \n
    \n
    ' + )), + this.target + ); + }), + (t.prototype.getValue = function () { + var t = this.target.find("input").val(); + if (t) return parseFloat(t.toString()); + }), + (t.prototype.setValue = function (t) { + this.target.find("input").val(t); + }), + (t.prototype.destroy = function () { + this.target.remove(); + }), + t + ); + })(), + lt = (function () { + function t() { + this.name = "gridColumns"; + } + + return ( + (t.prototype.createTarget = function () { + return ( + (this.target = $( + '
    \n
    \n 一行多组\n
    \n
    \n \n
    \n
    ' + )), + this.target + ); + }), + (t.prototype.getValue = function () { + var t = this.target.find("select").val(); + if (t) return parseFloat(t.toString()); + }), + (t.prototype.setValue = function (t) { + t && (this.target.find('option[value="' + t + '"]').length || this.target.find("select").prepend('")); + this.target.find("select").val(t); + }), + (t.prototype.destroy = function () { + this.target.remove(); + }), + t + ); + })(), + ut = (function () { + function t() { + this.name = "gridColumnsGutter"; + } + + return ( + (t.prototype.createTarget = function () { + return ( + (this.target = $( + '
    \n
    \n 一行多组间隔\n
    \n
    \n \n
    \n
    ' + )), + this.target + ); + }), + (t.prototype.getValue = function () { + var t = this.target.find("select").val(); + if (t) return parseFloat(t.toString()); + }), + (t.prototype.css = function (t, e) { + if (t && t.length) { + if (e) + return ( + t + .find(".table-grid-row") + .css("margin-left", "-" + e + "pt") + .css("margin-right", "-" + e + "pt"), + t + .find(".tableGridColumnsGutterRow") + .css("padding-left", e + "pt") + .css("padding-right", e + "pt"), + null + ); + t.find(".table-grid-row").map(function (t, e) { + (e.style.marginLeft = ""), (e.style.marginRight = ""); + }), + t.find(".tableGridColumnsGutterRow").map(function (t, e) { + (e.style.paddingLeft = ""), (e.style.paddingRight = ""); + }); + } + + return null; + }), + (t.prototype.setValue = function (t) { + t && (this.target.find('option[value="' + t + '"]').length || this.target.find("select").prepend('")); + this.target.find("select").val(t); + }), + (t.prototype.destroy = function () { + this.target.remove(); + }), + t + ); + })(), + dt = (function () { + function t() { + this.name = "paddingLeft"; + } + + return ( + (t.prototype.css = function (t, e) { + var n = t; + + if (n && n.length) { + if (e) return n.css("padding-left", e + "pt"), "padding-left"; + n[0].style.paddingLeft = ""; + } + + return null; + }), + (t.prototype.createTarget = function () { + return ( + (this.target = $( + '
    \n
    \n 左内边距\n
    \n
    \n \n
    \n
    ' + )), + this.target + ); + }), + (t.prototype.getValue = function () { + var t = this.target.find("select").val(); + if (t) return parseFloat(t.toString()); + }), + (t.prototype.setValue = function (t) { + t && (this.target.find('option[value="' + t + '"]').length || this.target.find("select").prepend('")); + this.target.find("select").val(t); + }), + (t.prototype.destroy = function () { + this.target.remove(); + }), + t + ); + })(), + ct = (function () { + function t() { + this.name = "paddingRight"; + } + + return ( + (t.prototype.css = function (t, e) { + var n = t; + + if (n && n.length) { + if (e) return n.css("padding-right", e + "pt"), "padding-right"; + n[0].style.paddingRight = ""; + } + + return null; + }), + (t.prototype.createTarget = function () { + return ( + (this.target = $( + '
    \n
    \n 右内边距\n
    \n
    \n \n
    \n
    ' + )), + this.target + ); + }), + (t.prototype.getValue = function () { + var t = this.target.find("select").val(); + if (t) return parseFloat(t.toString()); + }), + (t.prototype.setValue = function (t) { + t && (this.target.find('option[value="' + t + '"]').length || this.target.find("select").prepend('")); + this.target.find("select").val(t); + }), + (t.prototype.destroy = function () { + this.target.remove(); + }), + t + ); + })(), + ht = (function () { + function t() { + this.name = "dataType"; + } + + return ( + (t.prototype.createTarget = function () { + var t = this; + return ( + (this.target = $( + '\n
    \n
    \n
    \n 数据类型\n
    \n
    \n \n
    \n
    \n
    \n
    \n 格式\n
    \n
    \n \n \n
    \n
    \n
    \n ' + )), + $(this.target.find(".hiprint-option-item-datatype")).change(function () { + var e = $(t.target.find(".hiprint-option-item-datatype")).val(); + t.loadFormatSelectByDataType(e), t.submit(t.getValue()); + }), + this.target + ); + }), + (t.prototype.getValue = function () { + var t = this.target.find(".hiprint-option-item-datatype").val(); + + if (t) { + var e = this.target.find(".hiprint-option-item-datatype-format").val(); + return { + dataType: t, + format: e || void 0 + }; + } + + return { + dataType: void 0, + format: void 0 + }; + }), + (t.prototype.setValue = function (t, e) { + this.target.find(".hiprint-option-item-datatype").val(e.dataType || ""), + this.loadFormatSelectByDataType(e.dataType), + this.target.find(".hiprint-option-item-datatype-format").val(e.format || ""); + }), + (t.prototype.destroy = function () { + this.target.remove(); + }), + (t.prototype.loadFormatSelectByDataType = function (t) { + "boolean" === t + ? (this.target.find(".hiprint-option-item-datatype-select-format").removeClass("hiprint-option-item-datatype-format").hide().val(""), + this.target.find(".hiprint-option-item-datatype-input-format").addClass("hiprint-option-item-datatype-format").show()) + : "datetime" === t + ? (this.target.find(".hiprint-option-item-datatype-select-format").addClass("hiprint-option-item-datatype-format").show(), + this.target.find(".hiprint-option-item-datatype-input-format").removeClass("hiprint-option-item-datatype-format").hide().val(""), + this.target + .find(".hiprint-option-item-datatype-select-format") + .html( + '\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n ' + )) + : (this.target.find(".hiprint-option-item-datatype-select-format").show(), + this.target.find(".hiprint-option-item-datatype-input-format").hide().val(""), + this.target.find(".hiprint-option-item-datatype-format").html('\n \n ')); + }), + t + ); + })(), + ft = (function () { + function t() { + this.name = "formatter"; + } + + return ( + (t.prototype.createTarget = function () { + var t = + '
    \n
    \n 格式化函数\n
    \n
    \n \n
    \n
    '; + return (this.target = $(t)), this.target; + }), + (t.prototype.getValue = function () { + var t = this.target.find("textarea").val(); + if (t) return t; + }), + (t.prototype.setValue = function (t) { + this.target.find("textarea").val(t); + }), + (t.prototype.destroy = function () { + this.target.remove(); + }), + t + ); + })(), + gt = (function () { + function t() { + this.name = "styler"; + } + + return ( + (t.prototype.createTarget = function () { + return ( + (this.target = $( + '
    \n
    \n 样式函数\n
    \n
    \n \n
    \n
    ' + )), + this.target + ); + }), + (t.prototype.getValue = function () { + var t = this.target.find("textarea").val(); + if (t) return t; + }), + (t.prototype.setValue = function (t) { + this.target.find("textarea").val(t); + }), + (t.prototype.destroy = function () { + this.target.remove(); + }), + t + ); + })(), + mt = (function () { + function t() { + this.name = "footerFormatter"; + } + + return ( + (t.prototype.createTarget = function () { + return ( + (this.target = $( + '
    \n
    \n 表格脚函数\n
    \n
    \n \n
    \n
    ' + )), + this.target + ); + }), + (t.prototype.getValue = function () { + var t = this.target.find("textarea").val(); + if (t) return t; + }), + (t.prototype.setValue = function (t) { + this.target.find("textarea").val(t); + }), + (t.prototype.destroy = function () { + this.target.remove(); + }), + t + ); + })(), + vt = (function () { + function t() { + this.name = "gridColumnsFooterFormatter"; + } + + return ( + (t.prototype.createTarget = function () { + return ( + (this.target = $( + '
    \n
    \n 多组表格脚函数\n
    \n
    \n \n
    \n
    ' + )), + this.target + ); + }), + (t.prototype.getValue = function () { + var t = this.target.find("textarea").val(); + if (t) return t; + }), + (t.prototype.setValue = function (t) { + this.target.find("textarea").val(t); + }), + (t.prototype.destroy = function () { + this.target.remove(); + }), + t + ); + })(), + yt = (function () { + function t() { + this.name = "rowStyler"; + } + + return ( + (t.prototype.createTarget = function () { + return ( + (this.target = $( + '
    \n
    \n 行样式函数\n
    \n
    \n \n
    \n
    ' + )), + this.target + ); + }), + (t.prototype.getValue = function () { + var t = this.target.find("textarea").val(); + if (t) return t; + }), + (t.prototype.setValue = function (t) { + this.target.find("textarea").val(t); + }), + (t.prototype.destroy = function () { + this.target.remove(); + }), + t + ); + })(), + bt = (function () { + function t() { + this.name = "align"; + } + + return ( + (t.prototype.createTarget = function () { + return ( + (this.target = $( + '
    \n
    \n 单元格左右对齐\n
    \n
    \n \n
    \n
    ' + )), + this.target + ); + }), + (t.prototype.getValue = function () { + var t = this.target.find("select").val(); + if (t) return t.toString(); + }), + (t.prototype.setValue = function (t) { + this.target.find("select").val(t); + }), + (t.prototype.destroy = function () { + this.target.remove(); + }), + t + ); + })(), + Et = (function () { + function t() { + this.name = "vAlign"; + } + + return ( + (t.prototype.createTarget = function () { + return ( + (this.target = $( + '
    \n
    \n 单元格上下对齐\n
    \n
    \n \n
    \n
    ' + )), + this.target + ); + }), + (t.prototype.getValue = function () { + var t = this.target.find("select").val(); + if (t) return t.toString(); + }), + (t.prototype.setValue = function (t) { + this.target.find("select").val(t); + }), + (t.prototype.destroy = function () { + this.target.remove(); + }), + t + ); + })(), + Tt = (function () { + function t() { + this.name = "halign"; + } + + return ( + (t.prototype.createTarget = function () { + return ( + (this.target = $( + '
    \n
    \n 表格头单元格左右对齐\n
    \n
    \n \n
    \n
    ' + )), + this.target + ); + }), + (t.prototype.getValue = function () { + var t = this.target.find("select").val(); + if (t) return t.toString(); + }), + (t.prototype.setValue = function (t) { + this.target.find("select").val(t); + }), + (t.prototype.destroy = function () { + this.target.remove(); + }), + t + ); + })(), + Pt = (function () { + function t() { + this.name = "styler2"; + } + + return ( + (t.prototype.createTarget = function () { + return ( + (this.target = $( + '
    \n
    \n 单元格样式函数\n
    \n
    \n \n
    \n
    ' + )), + this.target + ); + }), + (t.prototype.getValue = function () { + var t = this.target.find("textarea").val(); + if (t) return t; + }), + (t.prototype.setValue = function (t) { + this.target.find("textarea").val(t); + }), + (t.prototype.destroy = function () { + this.target.remove(); + }), + t + ); + })(), + _t = (function () { + function t() { + this.name = "formatter2"; + } + + return ( + (t.prototype.createTarget = function () { + return ( + (this.target = $( + '
    \n
    \n 单元格格式化函数\n
    \n
    \n \n
    \n
    ' + )), + this.target + ); + }), + (t.prototype.getValue = function () { + var t = this.target.find("textarea").val(); + if (t) return t; + }), + (t.prototype.setValue = function (t) { + this.target.find("textarea").val(t); + }), + (t.prototype.destroy = function () { + this.target.remove(); + }), + t + ); + })(), + wt = (function () { + function t() { + this.name = "autoCompletion"; + } + + return ( + (t.prototype.createTarget = function () { + return ( + (this.target = $( + '
    \n
    \n 自动补全\n
    \n
    \n \n
    \n
    ' + )), + this.target + ); + }), + (t.prototype.getValue = function () { + if ("true" == this.target.find("select").val()) return !0; + }), + (t.prototype.setValue = function (t) { + this.target.find("select").val((null == t ? "" : t).toString()); + }), + (t.prototype.destroy = function () { + this.target.remove(); + }), + t + ); + })(), + xt = (function () { + function t() { + this.name = "tableFooterRepeat"; + } + + return ( + (t.prototype.createTarget = function () { + return ( + (this.target = $( + '
    \n
    \n 表格脚显示\n
    \n
    \n \n
    \n
    ' + )), + this.target + ); + }), + (t.prototype.getValue = function () { + var t = this.target.find("select").val(); + if (t) return t.toString(); + }), + (t.prototype.setValue = function (t) { + this.target.find("select").val(t); + }), + (t.prototype.destroy = function () { + this.target.remove(); + }), + t + ); + })(); + + n.d(e, "a", function () { + return Ct; + }); + + var Ct = (function () { + function t() {} + + return ( + (t.init = function () { + t.printElementOptionItems || + ((t.printElementOptionItems = {}), + t._printElementOptionItems.forEach(function (e) { + t.printElementOptionItems[e.name] = e; + })); + }), + (t.registerItem = function (e) { + if (!e.name) throw new Error("styleItem must have name"); + t.init(), (t.printElementOptionItems[e.name] = e); + }), + (t.getItem = function (e) { + return t.init(), t.printElementOptionItems[e]; + }), + (t._printElementOptionItems = [ + new o(), + new r(), + new a(), + new p(), + new i(), + new s(), + new l(), + new pt(), + new u(), + new d(), + new c(), + new h(), + new f(), + new g(), + new m(), + new v(), + new y(), + new b(), + new E(), + new T(), + new P(), + new _(), + new w(), + new x(), + new C(), + new O(), + new H(), + new D(), + new I(), + new R(), + new M(), + new S(), + new B(), + new F(), + new L(), + new A(), + new z(), + new k(), + new st(), + new N(), + new V(), + new W(), + new j(), + new U(), + new K(), + new G(), + new q(), + new X(), + new Y(), + new Q(), + new J(), + new Z(), + new tt(), + new et(), + new nt(), + new it(), + new ot(), + new at(), + new lt(), + new ut(), + new dt(), + new ct(), + new ht(), + new ft(), + new gt(), + new mt(), + new vt(), + new yt(), + new bt(), + new Tt(), + new Et(), + new Pt(), + new _t(), + new wt(), + new xt() + ]), + t + ); + })(); + }, + function (t, e, n) { + "use strict"; + + n.d(e, "a", function () { + return o; + }), + n.d(e, "b", function () { + return r; + }); + + var i = n(14), + o = (function () { + function t(t, e) { + (this.selectedCells = []), (this.rows = t), (this.tableTatget = e); + } + + return ( + (t.prototype.clear = function () { + this.tableTatget.find("td").removeClass("selected"); + }), + (t.prototype.setSingleSelect = function (t) { + (this.startCell = t), (this.selectedCells = []); + }), + (t.prototype.getSingleSelect = function () { + if (this.selectedCells.length) { + if (1 == this.selectedCells.length) return 1 == this.selectedCells[0].length ? this.selectedCells[0][0] : void 0; + if (this.selectedCells.length > 1) return; + } + + return this.startCell; + }), + (t.prototype.singleSelectByXY = function (t, e) { + var n = this.getCellByXY(t, e); + n && (this.clear(), n && (n.cell.select(), (this.startCell = n), (this.selectedCells = []))); + }), + (t.prototype.multipleSelectByXY = function (t, e) { + this.clear(); + var n = []; + + if (this.startCell) { + var o = this.getCellByXY(t, e); + + if (o) { + var r = i.a.mergeRect(this.startCell.cell.getTableRect(), o.cell.getTableRect()); + this.selectByRect(new a(r), n); + } + } + + this.selectedCells = n; + }), + (t.prototype.selectByRect = function (t, e) { + this.rows.forEach(function (n, i) { + var o = []; + n.columns.forEach(function (e) { + e.isInRect(t) && (o.push(new p(i, e)), e.select()); + }), + o.length && e.push(o); + }), + t.changed && ((t.changed = !1), e.splice(0, e.length), this.selectByRect(t, e)); + }), + (t.prototype.getSelectedCells = function () { + return this.selectedCells; + }), + (t.prototype.getCellByXY = function (t, e) { + var n; + return ( + this.rows.forEach(function (i, o) { + var r = i.columns.filter(function (n) { + return n.isXYinCell(t, e); + }); + r.length && (n = new p(o, r[0])); + }), + n + ); + }), + t + ); + })(), + r = (function () { + return function (t) { + (this.x = t.x), (this.y = t.y), (this.height = t.height), (this.width = t.width); + }; + })(), + a = (function () { + return function (t) { + this.rect = t; + }; + })(), + p = (function () { + return function (t, e) { + (this.rowIndex = t), (this.cell = e); + }; + })(); + }, + function (t, e, n) { + "use strict"; + + n.d(e, "a", function () { + return i; + }); + + var i = (function () { + function t() {} + + return ( + (t.createId = function () { + return (this.id += 1), this.id; + }), + (t.id = 1), + t + ); + })(); + }, + function (t, e, n) { + "use strict"; + + n.d(e, "a", function () { + return p; + }); + + var _i, + o = n(5), + r = n(13), + a = + ((_i = function i(t, e) { + return (_i = + Object.setPrototypeOf || + (_instanceof( + { + __proto__: [] + }, + Array + ) && + function (t, e) { + t.__proto__ = e; + }) || + function (t, e) { + for (var n in e) { + e.hasOwnProperty(n) && (t[n] = e[n]); + } + })(t, e); + }), + function (t, e) { + function n() { + this.constructor = t; + } + + _i(t, e), (t.prototype = null === e ? Object.create(e) : ((n.prototype = e.prototype), new n())); + }), + p = (function (t) { + function e(e) { + var n = t.call(this) || this; + ((n.columns = []), e && e.constructor === Array) + ? (e || []).forEach(function (t) { + n.columns.push(new o.a(t)); + }) + : e.columns && + (e.columns || []).forEach(function (t) { + n.columns.push(new o.a(t)); + }); + return n; + } + + return ( + a(e, t), + (e.prototype.getPrintElementOptionEntity = function () { + var t = []; + return ( + this.columns.forEach(function (e) { + t.push(e.getEntity()); + }), + t + ); + }), + e + ); + })(r.a); + }, + function (t, e, n) { + "use strict"; + + n.d(e, "a", function () { + return r; + }); + + var i = n(11), + o = n(5), + r = (function () { + function t() { + this.id = i.a.createId(); + } + + return ( + (t.prototype.init = function (t, e, n) { + (this.isHead = n), (this.target = e || $("")), (this.tableOptions = t), this.initCells(this.columns); + }), + (t.prototype.getTarget = function () { + return this.target; + }), + (t.prototype.initCells = function (t) { + var e = this; + t + ? t.forEach(function (t, n) { + t.init(e.target.find("td:eq(" + n + ")"), e.tableOptions, e.id, e.isHead); + }) + : ((this.columns = []), + this.target.find("td").map(function (t, n) { + var i = new o.a(); + i.init($(n), e.tableOptions, e.id, e.isHead), e.columns.push(i); + })); + }), + (t.prototype.removeCell = function (t) { + var e = this.columns.indexOf(t); + this.columns[e].getTarget().remove(), this.columns.splice(e, 1); + }), + (t.prototype.createTableCell = function (t, e) { + var n = new o.a(); + return ( + n.init($(""), this.tableOptions, this.id, this.isHead), + t > 1 && (n.getTarget().attr("rowspan", t), (n.rowspan = t)), + e > 1 && (n.getTarget().attr("colspan", e), (n.colspan = e)), + n + ); + }), + (t.prototype.insertToTargetCellLeft = function (t, e) { + var n = this.columns.indexOf(t); + t.getTarget().before(e.getTarget()), this.columns.splice(n, 0, e); + }), + (t.prototype.insertToTargetCellRight = function (t, e) { + var n = this.columns.indexOf(t); + this.columns[n].getTarget().after(e.getTarget()), this.columns.splice(n + 1, 0, e); + }), + (t.prototype.insertCellToFirst = function (t) { + this.target.prepend(t.getTarget()), this.columns.splice(0, 0, t); + }), + (t.prototype.insertCellToLast = function (t) { + this.columns.push(t), this.target.append(t.getTarget()); + }), + (t.prototype.getPrintElementOptionEntity = function () { + var t = []; + return ( + this.columns.forEach(function (e) { + t.push(e.getEntity()); + }), + t + ); + }), + t + ); + })(); + }, + function (t, e, n) { + "use strict"; + + n.d(e, "a", function () { + return o; + }); + + var i = n(10), + o = (function () { + function t() {} + + return ( + (t.mergeRect = function (t, e) { + var n = Math.min(t.x, e.x), + o = Math.min(t.y, e.y); + return new i.b({ + x: n, + y: o, + height: Math.max(t.y + t.height, e.y + e.height) - o, + width: Math.max(t.x + t.width, e.x + e.width) - n + }); + }), + (t.Rect = function (t, e, n, i) { + return { + minX: t < n ? t : n, + minY: e < i ? e : i, + maxX: t < n ? n : t, + maxY: e < i ? i : e + }; + }), + t + ); + })(); + }, + function (module, __webpack_exports__, __webpack_require__) { + "use strict"; + + __webpack_require__.d(__webpack_exports__, "a", function () { + return TablePrintElement; + }); + + var _BasePrintElement__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(4), + _HiPrintConfig__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(1), + _dto_PaperHtmlResult__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(6), + _assets_plugins_hinnn__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(0), + _PrintReferenceElement__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(8), + _option_TablePrintElementOption__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(18), + _table_TableExcelHelper__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(7), + _hitable_HiTale__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(16), + _table_GridColumnsStructure__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(20), + _HiPrintlib__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(2), + __extends = + ((_extendStatics = function extendStatics(t, e) { + return (_extendStatics = + Object.setPrototypeOf || + (_instanceof( + { + __proto__: [] + }, + Array + ) && + function (t, e) { + t.__proto__ = e; + }) || + function (t, e) { + for (var n in e) { + e.hasOwnProperty(n) && (t[n] = e[n]); + } + })(t, e); + }), + function (t, e) { + function n() { + this.constructor = t; + } + + _extendStatics(t, e), (t.prototype = null === e ? Object.create(e) : ((n.prototype = e.prototype), new n())); + }), + _extendStatics, + TablePrintElement = (function (_super) { + function TablePrintElement(t, e) { + var n = _super.call(this, t) || this; + return ( + (n.gridColumnsFooterCss = "hiprint-gridColumnsFooter"), + (n.tableGridRowCss = "table-grid-row"), + (n.options = new _option_TablePrintElementOption__WEBPACK_IMPORTED_MODULE_5__.a(e, n.printElementType)), + n.options.setDefault( + new _option_TablePrintElementOption__WEBPACK_IMPORTED_MODULE_5__.a(_HiPrintConfig__WEBPACK_IMPORTED_MODULE_1__.a.instance.table.default).getPrintElementOptionEntity() + ), + n + ); + } + + return ( + __extends(TablePrintElement, _super), + (TablePrintElement.prototype.getColumns = function () { + return this.options.columns; + }), + (TablePrintElement.prototype.getColumnByColumnId = function (t) { + return this.options.getColumnByColumnId(t); + }), + (TablePrintElement.prototype.updateDesignViewFromOptions = function () { + if (this.designTarget) { + this.css(this.designTarget, this.getData()); + var t = this.designTarget.find(".hiprint-printElement-table-content"), + e = this.getHtml(this.designPaper); + t.html(""), t.append(e[0].target.find(".table-grid-row")), this.printElementType.editable && this.setHitable(), this.setColumnsOptions(); + } + }), + (TablePrintElement.prototype.css = function (t, e) { + if ((this.getField() || !this.options.content) && !this.printElementType.formatter) return _super.prototype.css.call(this, t, e); + }), + (TablePrintElement.prototype.getDesignTarget = function (t) { + return ( + (this.designTarget = this.getHtml(t)[0].target), + (this.designPaper = t), + this.designTarget.find("td").hidroppable({ + accept: ".rn-draggable-item", + onDrop: function onDrop(t, e) {}, + onDragEnter: function onDragEnter(t, e) { + $(e).removeClass("rn-draggable-item"); + }, + onDragLeave: function onDragLeave(t, e) { + $(e).addClass("rn-draggable-item"); + } + }), + this.designTarget + ); + }), + (TablePrintElement.prototype.getConfigOptions = function () { + return _HiPrintConfig__WEBPACK_IMPORTED_MODULE_1__.a.instance.table; + }), + (TablePrintElement.prototype.createTarget = function (t, e, n) { + for ( + var i = $( + '
    ' + ), + o = this.createGridColumnsStructure(n), + r = 0; + r < o.gridColumns; + r++ + ) { + o.getByIndex(r).append(this.getTableHtml(e, n)); + } + + return i.find(".hiprint-printElement-table-content").append(o.target), i; + }), + (TablePrintElement.prototype.createGridColumnsStructure = function (t) { + for (var e = $('
    '), n = 0; n < this.options.getGridColumns(); n++) { + var i = $('
    '); + e.append(i); + } + + var o = this.getGridColumnsFooterFormatter(); + + if (o) { + var r = $('
    '); + r.append(o(this.options, this.getData(t), t, [])), e.append(r); + } + + return new _table_GridColumnsStructure__WEBPACK_IMPORTED_MODULE_8__.a(this.options.getGridColumns(), e); + }), + (TablePrintElement.prototype.createtempEmptyRowsTargetStructure = function (t) { + if (this.getField()) return this.createTarget(this.printElementType.title, []); + var e = this.createTarget(this.printElementType.title, []).clone(); + return e.find(".hiprint-printElement-tableTarget tbody tr").remove(), e; + }), + (TablePrintElement.prototype.getTableHtml = function (t, e) { + var n, i; + if (!this.getField() && this.options.content) return (n = $("
    ")).append(this.options.content), (i = n.find("table")).addClass("hiprint-printElement-tableTarget"), i; + if (this.printElementType.formatter) return (n = $("
    ")).append(this.printElementType.formatter(t)), (i = n.find("table")).addClass("hiprint-printElement-tableTarget"), i; + var o = $('
    '); + return ( + o.append(_table_TableExcelHelper__WEBPACK_IMPORTED_MODULE_6__.a.createTableHead(this.getColumns(), this.options.getWidth() / this.options.getGridColumns())), + o.append(_table_TableExcelHelper__WEBPACK_IMPORTED_MODULE_6__.a.createTableRow(this.getColumns(), t, this.options, this.printElementType)), + this.getFooterFormatter() && + ("no" == this.options.tableFooterRepeat || + ("last" == this.options.tableFooterRepeat + ? o + .find("tbody") + .append(_table_TableExcelHelper__WEBPACK_IMPORTED_MODULE_6__.a.createTableFooter(this.printElementType.columns, t, this.options, this.printElementType, e, t).html()) + : o.append(_table_TableExcelHelper__WEBPACK_IMPORTED_MODULE_6__.a.createTableFooter(this.printElementType.columns, t, this.options, this.printElementType, e, [])))), + o + ); + }), + (TablePrintElement.prototype.getEmptyRowTarget = function () { + return _table_TableExcelHelper__WEBPACK_IMPORTED_MODULE_6__.a.createEmptyRowTarget(this.getColumns()); + }), + (TablePrintElement.prototype.getHtml = function (t, e) { + this.createTempContainer(); + var n = this.getPaperHtmlResult(t, e); + return this.removeTempContainer(), n; + }), + (TablePrintElement.prototype.getPaperHtmlResult = function (t, e) { + var n = [], + i = this.getData(e), + o = this.getTableHtml(i, e), + r = this.createtempEmptyRowsTargetStructure(e); + e ? this.updateTargetWidth(r) : this.updateTargetSize(r), this.css(r, i), this.css(o, i), this.getTempContainer().html(""), this.getTempContainer().append(r); + + for (var a, p = this.getBeginPrintTopInPaperByReferenceElement(t), s = 0, l = !1; !l; ) { + var u = 0, + d = t.getPaperFooter(s); + 0 == s && + p > d && + ((p = p - d + t.paperHeader), + n.push( + new _dto_PaperHtmlResult__WEBPACK_IMPORTED_MODULE_2__.a({ + target: void 0, + printLine: void 0 + }) + ), + (u = t.getContentHeight(s) - (p - t.paperHeader)), + s++, + (d = t.getPaperFooter(s))); + var c = n.length > 0 ? n[n.length - 1].target : void 0, + h = this.getRowsInSpecificHeight(e, u > 0 ? u : 0 == s ? d - p : t.getContentHeight(s), r, o, s, c); + l = h.isEnd; + var f = void 0; + h.target && (h.target.css("left", this.options.displayLeft()), (h.target[0].height = "")), + 0 == s || u > 0 + ? (h.target && ((a = p), h.target.css("top", p + "pt")), + (f = l && null != this.options.lHeight ? p + (h.height > this.options.lHeight ? h.height : this.options.lHeight) : p + h.height)) + : (h.target && ((a = t.paperHeader), h.target.css("top", t.paperHeader + "pt")), (f = t.paperHeader + h.height)), + n.push( + new _dto_PaperHtmlResult__WEBPACK_IMPORTED_MODULE_2__.a({ + target: h.target, + printLine: f, + referenceElement: new _PrintReferenceElement__WEBPACK_IMPORTED_MODULE_4__.a({ + top: this.options.getTop(), + left: this.options.getLeft(), + height: this.options.getHeight(), + width: this.options.getWidth(), + beginPrintPaperIndex: t.index, + bottomInLastPaper: f, + printTopInPaper: a + }) + }) + ), + s++; + } + + return n; + }), + (TablePrintElement.prototype.getRowsInSpecificHeight = function (t, e, n, i, o, r) { + var a = i.find("tbody"), + p = _assets_plugins_hinnn__WEBPACK_IMPORTED_MODULE_3__.a.pt.toPx(e); + + n.find(".hiprint-printElement-tableTarget tbody").html(""); + var s = n.outerHeight(); + if (s > p) + return { + target: void 0, + length: 0, + height: 0, + isEnd: !1 + }; + + for (var l = [], u = 0; u < this.options.getGridColumns(); u++) { + for (var d = n.find(".hiprint-printElement-tableTarget:eq(" + u + ")"), c = void 0, h = []; ; ) { + console.log(u); + + if (s <= p) + if (0 == a.find("tr").length) + (c = { + height: _assets_plugins_hinnn__WEBPACK_IMPORTED_MODULE_3__.a.px.toPt(s), + isEnd: !0 + }), + t && this.options.autoCompletion && (this.autoCompletion(p, d), (s = n.outerHeight())); + else { + var f = a.find("tr:lt(1)"); + d.find("tbody").append(f); + var g = f.data("rowData"); + l.push(g), + h.push(g), + (s = n.outerHeight()) > p && + (a.prepend(f), + l.pop(), + h.pop(), + (s = n.outerHeight()), + (c = { + height: _assets_plugins_hinnn__WEBPACK_IMPORTED_MODULE_3__.a.px.toPt(s), + isEnd: !1 + })); + } + + if (c) { + if (this.getFooterFormatter()) + d.find("tfoot").length && + d + .find("tfoot") + .html( + _table_TableExcelHelper__WEBPACK_IMPORTED_MODULE_6__.a.createTableFooter(this.printElementType.columns, this.getData(t), this.options, this.printElementType, t, h).html() + ); + break; + } + } + } + + var m = n.find(".hiprint-printElement-tableTarget tbody tr").length, + v = this.getGridColumnsFooterFormatter(); + return ( + v && n.find(this.gridColumnsFooterCss).html(v(this.options, this.getData(t), t, l)), + 0 == a.find("tr").length + ? 0 == m && r + ? { + target: void 0, + length: 0, + height: 0, + isEnd: !0 + } + : { + target: n.clone(), + length: m, + height: _assets_plugins_hinnn__WEBPACK_IMPORTED_MODULE_3__.a.px.toPt(s), + isEnd: !0 + } + : { + target: n.clone(), + length: m, + height: _assets_plugins_hinnn__WEBPACK_IMPORTED_MODULE_3__.a.px.toPt(s), + isEnd: !1 + } + ); + }), + (TablePrintElement.prototype.autoCompletion = function (t, e) { + for (var n, i = this.getEmptyRowTarget(), o = e.outerHeight(); t > o; ) { + (n = i.clone()), e.find("tbody").append(n), (o = e.outerHeight()); + } + + n && n.remove(); + }), + (TablePrintElement.prototype.getData = function (t) { + if (!t) return [{}]; + var e = t[this.getField()]; + return e ? JSON.parse(JSON.stringify(e)) : []; + }), + (TablePrintElement.prototype.onResize = function (t, e, n, i, o) { + _super.prototype.updateSizeAndPositionOptions.call(this, o, i, n, e), + _table_TableExcelHelper__WEBPACK_IMPORTED_MODULE_6__.a.resizeTableCellWidth(this.designTarget, this.getColumns(), this.options.getWidth()); + }), + (TablePrintElement.prototype.getReizeableShowPoints = function () { + return ["s", "e"]; + }), + (TablePrintElement.prototype.design = function (t, e) { + var n = this; + this.designTarget.hidraggable({ + handle: this.designTarget.find(".hiprint-printElement-table-handle"), + axis: n.options.axis && t && t.axisEnabled ? n.options.axis : void 0, + onDrag: function onDrag(t, i, o) { + n.updateSizeAndPositionOptions(i, o), n.createLineOfPosition(e); + }, + moveUnit: "pt", + minMove: _HiPrintConfig__WEBPACK_IMPORTED_MODULE_1__.a.instance.movingDistance, + onBeforeDrag: function onBeforeDrag(t) { + (_HiPrintlib__WEBPACK_IMPORTED_MODULE_9__.a.instance.draging = !0), n.createLineOfPosition(e); + }, + onStopDrag: function onStopDrag(t) { + (_HiPrintlib__WEBPACK_IMPORTED_MODULE_9__.a.instance.draging = !1), n.removeLineOfPosition(); + } + }), + this.printElementType.editable && this.setHitable(), + this.setColumnsOptions(), + this.designTarget.hireizeable({ + showPoints: n.getReizeableShowPoints(), + noContainer: !0, + onBeforeResize: function onBeforeResize() { + _HiPrintlib__WEBPACK_IMPORTED_MODULE_9__.a.instance.draging = !0; + }, + onResize: function onResize(t, i, o, r, a) { + n.onResize(t, i, o, r, a), n.hitable && n.hitable.updateColumnGrips(), n.createLineOfPosition(e); + }, + onStopResize: function onStopResize() { + (_HiPrintlib__WEBPACK_IMPORTED_MODULE_9__.a.instance.draging = !1), n.removeLineOfPosition(); + } + }), + this.bingKeyboardMoveEvent(this.designTarget, e); + }), + (TablePrintElement.prototype.setHitable = function () { + var t = this; + (this.hitable = new _hitable_HiTale__WEBPACK_IMPORTED_MODULE_7__.a({ + table: this.designTarget.find(".hiprint-printElement-tableTarget:eq(0)"), + rows: this.getColumns(), + resizeRow: !1, + resizeColumn: !0, + trs: this.designTarget.find(".hiprint-printElement-tableTarget:eq(0)").find("tbody tr"), + handle: this.designTarget.find(".hiprint-printElement-tableTarget:eq(0)").find("thead"), + isEnableEdit: this.printElementType.editable, + columnDisplayEditable: this.printElementType.columnDisplayEditable, + columnDisplayIndexEditable: this.printElementType.columnDisplayIndexEditable, + columnResizable: this.printElementType.columnResizable, + columnAlignEditable: this.printElementType.columnAlignEditable, + isEnableEditText: this.printElementType.columnTitleEditable, + isEnableEditField: !1, + isEnableContextMenu: !0, + isEnableInsertRow: !1, + isEnableDeleteRow: !1, + isEnableInsertColumn: !1, + isEnableDeleteColumn: !1, + isEnableMergeCell: !1 + })), + _assets_plugins_hinnn__WEBPACK_IMPORTED_MODULE_3__.a.event.on("updateTable" + this.hitable.id, function () { + t.updateDesignViewFromOptions(); + }); + }), + (TablePrintElement.prototype.setColumnsOptions = function () { + var t = this; + this.designTarget + .find(".hiprint-printElement-tableTarget:eq(0)") + .find("thead td") + .bind("click.hiprint", function (e) { + var n = $(e.target).attr("column-id"), + i = t.getColumnByColumnId(n); + + if (i) { + var o = t.getPrintElementOptionItemsByName("tableColumn"); + + _assets_plugins_hinnn__WEBPACK_IMPORTED_MODULE_3__.a.event.trigger(t.getPrintElementSelectEventKey(), { + printElement: t, + customOptionsInput: [ + { + title: i.title + "-列属性", + optionItems: o, + options: i, + callback: function callback(t) { + o.forEach(function (t) { + var e = t.getValue(); + i[t.name] = e; + }); + } + } + ] + }); + } else + _assets_plugins_hinnn__WEBPACK_IMPORTED_MODULE_3__.a.event.trigger(t.getPrintElementSelectEventKey(), { + printElement: t + }); + }); + }), + (TablePrintElement.prototype.filterOptionItems = function (t) { + var e = _super.prototype.filterOptionItems.call(this, t); + + return this.printElementType.editable && 1 == this.options.columns.length + ? e + : t.filter(function (t) { + return "columns" != t.name; + }); + }), + (TablePrintElement.prototype.getFooterFormatter = function () { + var footerFormatter = void 0; + if ((this.printElementType.footerFormatter && (footerFormatter = this.printElementType.footerFormatter), this.options.footerFormatter)) + try { + var s = "footerFormatter=" + this.options.footerFormatter; + eval(s); + } catch (t) { + console.log(t); + } + return footerFormatter; + }), + (TablePrintElement.prototype.getGridColumnsFooterFormatter = function () { + var gridColumnsFooterFormatter = void 0; + if ((this.printElementType.gridColumnsFooterFormatter && (gridColumnsFooterFormatter = this.printElementType.gridColumnsFooterFormatter), this.options.gridColumnsFooterFormatter)) + try { + var s = "gridColumnsFooterFormatter=" + this.options.gridColumnsFooterFormatter; + eval(s); + } catch (t) { + console.log(t); + } + return gridColumnsFooterFormatter; + }), + TablePrintElement + ); + })(_BasePrintElement__WEBPACK_IMPORTED_MODULE_0__.a); + }, + function (t, e, n) { + "use strict"; + + var i = (function () { + return function (t) { + (this.table = t.table), + (this.isEnableEdit = t.isEnableEdit), + (this.trs = t.trs), + (this.resizeRow = t.resizeRow), + (this.resizeColumn = t.resizeColumn), + (this.isEnableEditField = t.isEnableEditField), + (this.isEnableContextMenu = t.isEnableContextMenu), + (this.isEnableEditField = t.isEnableEditField), + (this.isEnableInsertRow = t.isEnableInsertRow), + (this.isEnableDeleteRow = t.isEnableDeleteRow), + (this.isEnableInsertColumn = t.isEnableInsertColumn), + (this.isEnableDeleteColumn = t.isEnableDeleteColumn), + (this.isEnableMergeCell = t.isEnableMergeCell), + (this.columnResizable = t.columnResizable), + (this.columnAlignEditable = t.columnAlignEditable); + }; + })(), + o = (function () { + function t(t) { + this.options = new i(t); + } + + return ( + (t.prototype.enableEidt = function () { + this.options.isEnableEdit; + }), + (t.prototype.disableEdit = function () { + this.options.isEnableEdit; + }), + (t.prototype.isEnableEdit = function () { + return this.options.isEnableEdit; + }), + t + ); + })(), + r = n(0), + a = (function () { + return function (t) { + (this.cell = t.cell), + (this.link = t.link), + (this.linkType = t.linkType), + (this.bottom = t.bottom), + (this.rightMost = t.rightMost), + (this.rowLevel = t.rowLevel), + (this.columnLevel = t.columnLevel), + (this.indexInTableGridRow = t.indexInTableGridRow), + (this.indexInTableGridColumn = t.indexInTableGridColumn); + }; + })(), + p = n(10), + s = (function () { + function t() {} + + return ( + (t.getLeftTableCell = function (t, e) { + var n; + return ( + t.forEach(function (t, i) { + t.cell && i < e && (n = t.cell); + }), + n + ); + }), + (t.getIndex = function (t, e) { + var n; + return ( + t.forEach(function (t, i) { + t.cell && t.cell.id == e && (n = i); + }), + n + ); + }), + t + ); + })(), + l = n(13), + u = n(11), + d = (function () { + return function (t, e) { + (this.target = t), (this.grips = e); + }; + })(), + c = (function () { + return function (t) { + this.target = t; + }; + })(), + h = (function () { + return function () { + this.rowColumns = []; + }; + })(), + f = (function () { + function t() {} + + return ( + (t.getColumnsWidth = function (e, n) { + var i = {}, + o = t.allAutoWidth(e); + return ( + e.rowColumns.forEach(function (t) { + var e = n - 0, + r = (t.width / o) * (e > 0 ? e : 0); + i[t.id] = r; + }), + i + ); + }), + (t.resizeTableCellWeight = function (t) { + t.forEach(function (t) { + t.columns.forEach(function (t) { + t.hasWidth && $(t.getTarget()).css("width", t.width + "pt"); + }); + }); + }), + (t.allAutoWidth = function (t) { + var e = 0; + return ( + t.rowColumns.forEach(function (t) { + e += t.width; + }), + e + ); + }), + (t.reconsitutionTableColumnTree = function (t, e, n) { + for ( + var i = e || new h(), + o = function o(e) { + (i.totalLayer = e + 1), + (i[e] = t[e].columns), + (i.rowColumns = i.rowColumns.concat( + i[e].filter(function (n) { + return n.rowspan == t.length - e; + }) + )); + }, + r = 0; + r < t.length; + r++ + ) { + o(r); + } + + return i; + }), + t + ); + })(), + g = n(2), + m = (function () { + function t(t) { + (this.signature = "HiTresizer"), (this.hitable = t), (this.rows = t.rows), (this.target = t.target); + } + + return ( + (t.prototype.init = function () { + this.addResizeRowAndColumn(), this.hitable.optionsCoat.options.resizeColumn && this.createColumnGrips(), this.hitable.optionsCoat.options.resizeRow && this.createRowGrips(); + }), + (t.prototype.resizeTableCellWidth = function () { + f.resizeTableCellWeight(this.rows); + }), + (t.prototype.addResizeRowAndColumn = function () {}), + (t.prototype.createColumnGrips = function () { + var t = this, + e = this, + n = [], + i = $('
    '); + i.width(this.target.width()), + this.rows.forEach(function (o) { + o.columns.forEach(function (o, a) { + if (o.getTarget().attr("haswidth")) { + var p = $('
    '); + i.append(p); + var s = new c(p); + n.length > 0 && (n[n.length - 1].nextGrip = s), + n.push(s), + t.syncGrips(o, s), + $(p).hidraggable({ + axis: "h", + onDrag: function onDrag(t, e, n) {}, + moveUnit: "pt", + minMove: 1, + onBeforeDrag: function onBeforeDrag(t) { + if (((g.a.instance.draging = !0), !s.nextGrip)) return !1; + (e.dragingGrip = s), (e.dragingGrip.left = parseFloat(e.dragingGrip.target.css("left").replace("px", ""))), s.target.addClass("columngripDraging"); + }, + onStopDrag: function onStopDrag(n) { + g.a.instance.draging = !1; + var i = parseFloat(e.dragingGrip.target.css("left").replace("px", "")), + o = r.a.px.toPt(i - e.dragingGrip.left); + (s.cell.width = s.cell.width + o), + (s.nextGrip.cell.width = s.nextGrip.cell.width - o), + t.resizeTableCellWidth(), + s.target.removeClass("columngripDraging"), + e.updateColumnGrips(); + } + }); + } + }); + }), + this.target.before(i), + (this.cgripContariner = new d(i, n)); + }), + (t.prototype.updateColumnGrips = function () { + this.cgripContariner && (this.cgripContariner.target.remove(), this.createColumnGrips()); + }), + (t.prototype.updateRowGrips = function () { + this.rgripContariner && (this.rgripContariner.target.remove(), this.createRowGrips()); + }), + (t.prototype.createRowGrips = function () { + var t = this, + e = this, + n = [], + i = $('
    '); + this.rows.forEach(function (o, a) { + var p = $('
    '); + i.append(p); + var s = new c(p); + n.push(s), + a > 0 && + a < t.rows.length && + $(p).hidraggable({ + axis: "v", + onDrag: function onDrag(t, e, n) {}, + moveUnit: "pt", + minMove: 1, + onBeforeDrag: function onBeforeDrag(t) { + (e.dragingGrip = s), (e.dragingGrip.top = parseFloat(e.dragingGrip.target.css("top").replace("px", ""))), s.target.addClass("rowgripDraging"); + }, + onStopDrag: function onStopDrag(t) { + var n = parseFloat(e.dragingGrip.target.css("top").replace("px", "")), + i = r.a.px.toPt(n - e.dragingGrip.top + e.rows[a].columns[0].getTarget().height()); + e.rows[a].columns[0].getTarget().css("height", i + "pt"), e.syncRowGrips(), s.target.removeClass("rowgripDraging"); + } + }); + }), + this.target.before(i), + (this.rgripContariner = new d(i, n)), + this.syncRowGrips(); + }), + (t.prototype.syncGrips = function (t, e) { + var n = t.getTarget(); + (e.cell = t), + e.target.css({ + left: n.offset().left - this.target.offset().left + n.outerWidth(!1), + height: 30 + }); + }), + (t.prototype.syncRowGrips = function () { + var t = this; + this.rgripContariner.target.height(this.target.height()), + this.rows.forEach(function (e, n) { + var i = e.columns[0].getTarget(); + t.rgripContariner.grips[n].target.css({ + top: i.offset().top - t.target.offset().top + i.outerHeight(!1), + width: 30 + }); + }); + }), + (t.prototype.addResizerHeadRow = function () { + this.target.find("thead").prepend(); + }), + t + ); + })(), + v = (function () { + function t() {} + + return (t.prototype.init = function () {}), (t.prototype.updateRowGrips = function () {}), (t.prototype.updateColumnGrips = function () {}), t; + })(); + + n.d(e, "a", function () { + return y; + }); + + var y = (function () { + function t(t) { + (this.id = u.a.createId()), + (this.optionsCoat = new o(t)), + (this.handle = t.handle), + (this.target = t.table), + this.initRows(t.rows), + this.init(t), + (this.tableCellSelector = new p.a(this.rows, this.target)), + (this.resizer = this.optionsCoat.options.columnResizable ? new m(this) : new v()), + this.resizer.init(); + } + + return ( + (t.prototype.insertRow = function (t, e, n) { + var i = e || this.tableCellSelector.getSingleSelect(), + o = i.cell, + a = this.rows[i.rowIndex], + p = i.rowIndex, + s = this.getCellGrid(), + u = new l.a(); + if ((u.init(this.optionsCoat, void 0, a.isHead), n && u.getTarget().addClass(n), "above" == t)) + s[p].forEach(function (t) { + var e = t.link ? t.link : t.cell, + n = e.width / e.colspan; + + if (0 == t.columnLevel) { + var i = u.createTableCell(); + (i.width = n), u.insertCellToLast(i); + } else { + if ("column" == t.linkType) { + var o = t.link.getTarget(); + (t.link.rowspan += 1), o.attr("rowspan", t.link.rowspan); + } + + t.linkType; + } + }), + this.rows.splice(p, 0, u), + a.getTarget().before(u.getTarget()), + r.a.event.trigger("newRow" + this.id, u); + else { + var d = p + o.rowspan - 1; + s[d].forEach(function (t) { + var e = t.link ? t.link : t.cell, + n = e.width / e.colspan; + + if (t.bottom) { + var i = u.createTableCell(); + (i.width = n), u.insertCellToLast(i); + } else { + if (t.cell) { + var o = t.cell.getTarget(); + (t.cell.rowspan += 1), o.attr("rowspan", t.cell.rowspan); + } + + if ("column" == t.linkType) { + o = t.link.getTarget(); + (t.link.rowspan += 1), o.attr("rowspan", t.link.rowspan); + } + } + }), + this.rows.splice(d + 1, 0, u), + this.rows[d].getTarget().after(u.getTarget()), + r.a.event.trigger("newRow" + this.id, u); + } + }), + (t.prototype.insertColumn = function (t, e, n, i) { + var o = this, + a = this.rows.concat(this.trRows), + p = e || this.tableCellSelector.getSingleSelect(), + s = p.cell, + l = p.rowIndex, + u = this.getCellGrid(a), + d = u[l].filter(function (t) { + return (t.cell && t.cell.id == s.id) || (t.link && t.link.id == s.id); + }); + + if ("left" == t) { + var c = d[0].indexInTableGridRow; + u.forEach(function (t, e) { + var p = t[c], + s = t.filter(function (t, e) { + return e >= c && t.cell; + }); + + if (0 == p.rowLevel) { + var l = a[e], + u = a[e].createTableCell(); + n && u.getTarget().addClass(n), null != i && (u.width = i), s.length ? l.insertToTargetCellLeft(s[0].cell, u) : l.insertCellToLast(u), r.a.event.trigger("newCell" + o.id, u); + } else if ("row" == p.linkType) { + var d = p.link.getTarget(); + (p.link.colspan += 1), d.attr("colspan", p.link.colspan); + } + }); + } else { + var h = d[d.length - 1].indexInTableGridRow; + u.forEach(function (t, e) { + var p = t[h], + s = t.filter(function (t, e) { + return e <= h && t.cell; + }); + + if (p.rightMost) { + var l = a[e], + u = l.createTableCell(); + n && u.getTarget().addClass(n), + null != i && (u.width = i), + s.length ? l.insertToTargetCellRight(s[s.length - 1].cell, u) : l.insertCellToFirst(u), + r.a.event.trigger("newCell" + o.id, u); + } else { + var d = p.link || p.cell; + + if ("row" == p.linkType) { + var c = d.getTarget(); + (d.colspan += 1), c.attr("colspan", d.colspan); + } + + if (p.cell) { + c = d.getTarget(); + (d.colspan += 1), c.attr("colspan", d.colspan); + } + } + }); + } + }), + (t.prototype.deleteRow = function () { + var t = this, + e = this.tableCellSelector.getSingleSelect(), + n = (e.cell, this.rows[e.rowIndex], e.rowIndex), + i = this.getCellGrid(), + o = this.rows[n]; + i[n].forEach(function (e, r) { + if (e.cell) { + if (1 == e.cell.rowspan) o.removeCell(e.cell); + else { + o.removeCell(e.cell); + var a = i[n + 1].filter(function (t, e) { + return t.cell && e > r; + }), + p = t.rows[n + 1], + s = p.createTableCell(e.cell.rowspan - 1, e.cell.colspan); + a.length ? p.insertToTargetCellLeft(a[0].cell, s) : p.insertCellToLast(s); + } + } else if ("column" == e.linkType) { + var l = e.link; + (l.rowspan -= 1), l.getTarget().attr("rowspan", l.rowspan); + } + }), + o.getTarget().remove(), + this.rows.splice(n, 1); + }), + (t.prototype.deleteColums = function () { + var t = this.rows.concat(this.trRows), + e = this.tableCellSelector.getSingleSelect(), + n = e.cell, + i = e.rowIndex, + o = this.getCellGrid(t), + r = o[i].filter(function (t) { + return (t.cell && t.cell.id == n.id) || (t.link && t.link.id == n.id); + })[0].indexInTableGridRow; + o.forEach(function (e, n) { + var i = e[r]; + i.cell + ? 1 == i.cell.colspan + ? t[n].removeCell(i.cell) + : ((i.cell.colspan -= 1), i.cell.getTarget().attr("colspan", i.cell.colspan)) + : "row" == i.linkType && ((i.link.colspan -= 1), i.link.getTarget().attr("colspan", i.link.colspan)); + }); + }), + (t.prototype.mergeCell = function () { + var t = this, + e = this.tableCellSelector.getSelectedCells(); + + if (0 != e.length) { + var n = e[0][0].cell; + e.forEach(function (i, o) { + i.forEach(function (i, r) { + 0 == o ? 0 != r && ((n.colspan += i.cell.colspan), t.rows[i.rowIndex].removeCell(i.cell)) : t.rows[i.rowIndex].removeCell(i.cell), + 0 == r && e[0][0].rowIndex + n.rowspan - 1 < i.rowIndex && (n.rowspan += i.cell.rowspan); + }); + }), + n.getTarget().attr("colspan", n.colspan), + n.getTarget().attr("rowspan", n.rowspan), + this.tableCellSelector.setSingleSelect(e[0][0]); + } + }), + (t.prototype.splitCell = function () { + var t = this.tableCellSelector.getSingleSelect(), + e = this.getCellGrid(), + n = s.getIndex(e[t.rowIndex], t.cell.id); + + if (t) { + for (var i = t.rowIndex; i < t.rowIndex + t.cell.rowspan; i++) { + for (var o = this.rows[i], r = i == t.rowIndex ? t.cell : s.getLeftTableCell(e[i], n), a = 0; a < t.cell.colspan; a++) { + (i == t.rowIndex && 0 == a) || (r ? o.insertToTargetCellRight(r, o.createTableCell()) : o.insertCellToFirst(o.createTableCell())); + } + } + + (t.cell.rowspan = 1), (t.cell.colspan = 1), t.cell.getTarget().attr("colspan", t.cell.colspan), t.cell.getTarget().attr("rowspan", t.cell.rowspan); + } + }), + (t.prototype.init = function (t) { + var e = this; + $(this.target).addClass("hitable"), + (this.optionsCoat.onBeforEdit = function (n) { + if (e.optionsCoat.options.onBeforEdit && !1 === t.onBeforEdit(n)) return !1; + return e.optionsCoat.editingCell && e.optionsCoat.editingCell.endEdit(), !0; + }), + $(this.target).mousedown(function (t) { + e.optionsCoat.isLeftMouseButtonDown = !0; + }), + $(this.target).mouseup(function (t) { + e.optionsCoat.isLeftMouseButtonDown = !1; + }), + this.initContext(), + this.target + .on("mousemove", function (t) { + 1 === t.buttons && e.tableCellSelector.multipleSelectByXY(t.pageX, t.pageY); + }) + .on("mousedown", function (t) { + 1 === t.buttons && e.tableCellSelector.singleSelectByXY(t.pageX, t.pageY); + }); + }), + (t.prototype.initRows = function (t) { + var e = this; + + if (((this.trRows = []), t)) { + (this.rows = t), + t.forEach(function (t, n) { + t.init(e.optionsCoat, e.target.find("tr:eq(" + n + ")"), !0); + }); + var n = this.optionsCoat.options.trs; + n && + this.initRowsByTrs(n).forEach(function (t) { + e.trRows.push(t); + }); + } else this.rows = this.initRowsByTrs(this.target.find("tr")); + }), + (t.prototype.initRowsByTrs = function (t) { + var e = this; + return t + .map(function (t, n) { + var i = new l.a(); + return i.init(e.optionsCoat, $(n)), i; + }) + .get(); + }), + (t.prototype.enableEidt = function () { + this.optionsCoat.enableEidt(); + }), + (t.prototype.disableEdit = function () { + this.optionsCoat.disableEdit(); + }), + (t.prototype.getCellGrid = function (t) { + var e = t || this.rows, + n = this.getColumnStep(), + i = new Array(); + return ( + e.forEach(function (t, e) { + t.columns.forEach(function (t, o) { + for (var r = 0; r < t.colspan; r++) { + for (var p = 0, s = !1; p < n && !s; ) { + if (((i[e] = i[e] || []), i[e][p])); + else { + i[e][p] = new a({ + cell: 0 == r ? t : void 0, + link: 0 != r ? t : void 0, + linkType: r > 0 ? "row" : void 0, + rightMost: r == t.colspan - 1 || void 0, + bottom: 0 == t.rowspan - 1, + rowLevel: r, + columnLevel: 0, + indexInTableGridRow: p, + indexInTableGridColumn: e + }); + + for (var l = e + 1, u = 1; u < t.rowspan; u++) { + (i[l] = i[l] || []), + (i[l][p] = new a({ + cell: void 0, + link: t, + linkType: r > 0 ? "rowColumn" : "column", + rightMost: r == t.colspan - 1 || void 0, + bottom: u == t.rowspan - 1, + rowLevel: r, + columnLevel: u, + indexInTableGridRow: p, + indexInTableGridColumn: l + })), + (l += 1); + } + + s = !0; + } + p++; + } + } + }); + }), + i + ); + }), + (t.prototype.setAlign = function (t) { + var e = this.tableCellSelector.getSingleSelect(); + e && e.cell.setAlign(t); + }), + (t.prototype.setVAlign = function (t) { + var e = this.tableCellSelector.getSingleSelect(); + e && e.cell.setVAlign(t); + }), + (t.prototype.getColumnStep = function (t) { + var e = 0; + return ( + this.rows.length && + this.rows[t || 0].columns.forEach(function (t) { + e += t.colspan; + }), + e + ); + }), + (t.prototype.initContext = function () { + var t = this; + if (!this.optionsCoat.options.isEnableContextMenu) return !1; + $(this.handle).hicontextMenu({ + menus: [ + { + text: "在上方插入行", + enabled: this.optionsCoat.options.isEnableInsertRow, + disable: function disable() { + return !t.tableCellSelector.getSingleSelect(); + }, + callback: function callback() { + t.insertRow("above"), t.resizer.updateRowGrips(), r.a.event.trigger("updateTable" + t.id); + } + }, + { + text: "在下方插入行", + borderBottom: !0, + enabled: this.optionsCoat.options.isEnableInsertRow, + disable: function disable() { + return !t.tableCellSelector.getSingleSelect(); + }, + callback: function callback() { + t.insertRow("below"), t.resizer.updateRowGrips(), r.a.event.trigger("updateTable" + t.id); + } + }, + { + text: "向左方插入列", + enabled: this.optionsCoat.options.isEnableInsertColumn, + disable: function disable() { + return !t.tableCellSelector.getSingleSelect(); + }, + callback: function callback() { + t.insertColumn("left"), t.resizer.updateColumnGrips(), r.a.event.trigger("updateTable" + t.id); + } + }, + { + text: "向右方插入列", + enabled: this.optionsCoat.options.isEnableInsertColumn, + disable: function disable() { + return !t.tableCellSelector.getSingleSelect(); + }, + borderBottom: !0, + callback: function callback() { + t.insertColumn("right"), t.resizer.updateColumnGrips(), r.a.event.trigger("updateTable" + t.id); + } + }, + { + text: "删除行", + enabled: this.optionsCoat.options.isEnableDeleteRow, + disable: function disable() { + return !t.tableCellSelector.getSingleSelect(); + }, + callback: function callback() { + t.deleteRow(), t.resizer.updateRowGrips(), r.a.event.trigger("updateTable" + t.id); + } + }, + { + text: "删除列", + borderBottom: !0, + enabled: this.optionsCoat.options.isEnableDeleteColumn, + disable: function disable() { + return !t.tableCellSelector.getSingleSelect(); + }, + callback: function callback() { + t.deleteColums(), t.resizer.updateColumnGrips(), r.a.event.trigger("updateTable" + t.id); + } + }, + { + text: "对齐", + borderBottom: !0, + enabled: this.optionsCoat.options.columnAlignEditable, + menus: [ + { + text: "左", + callback: function callback() { + t.setAlign("left"); + } + }, + { + text: "左右居中", + callback: function callback() { + t.setAlign("center"); + } + }, + { + text: "右", + callback: function callback() { + t.setAlign("right"); + } + }, + { + text: "默认", + borderBottom: !0, + callback: function callback() { + t.setAlign(""); + } + }, + { + text: "上", + callback: function callback() { + t.setVAlign("top"); + } + }, + { + text: "垂直居中", + callback: function callback() { + t.setVAlign("middle"); + } + }, + { + text: "下", + callback: function callback() { + t.setVAlign("bottom"); + } + }, + { + text: "默认", + callback: function callback() { + t.setVAlign(""); + } + } + ] + }, + { + text: "合并单元格", + enabled: this.optionsCoat.options.isEnableMergeCell, + disable: function disable() { + return t.tableCellSelector.getSingleSelect(); + }, + callback: function callback() { + t.mergeCell(), r.a.event.trigger("updateTable" + t.id); + } + }, + { + text: "解开单元格", + enabled: this.optionsCoat.options.isEnableMergeCell, + disable: function disable() { + var e = t.tableCellSelector.getSingleSelect(); + return !e || (1 == e.cell.rowspan && 1 == e.cell.colspan); + }, + callback: function callback() { + t.splitCell(), r.a.event.trigger("updateTable" + t.id); + } + } + ].filter(function (t) { + return t.enabled; + }) + }); + }), + (t.prototype.getTableWidth = function () { + return r.a.px.toPt(this.target.outerWidth(!1)); + }), + (t.prototype.updateColumnGrips = function () { + this.resizer.updateColumnGrips(); + }), + (t.prototype.updateRowGrips = function () { + this.resizer.updateRowGrips(); + }), + t + ); + })(); + }, + function (t, e, n) { + "use strict"; + + n.d(e, "a", function () { + return i; + }); + + var i = (function () { + return function (t, e, n) { + (this.tid = t), (this.options = e), (this.printElementType = n); + }; + })(); + }, + function (t, e, n) { + "use strict"; + + var i = n(3), + o = n(12), + r = + ((function () {})(), + (function () { + return function (t) { + (this.width = t.width), + (this.title = t.title), + (this.columnId = t.columnId), + (this.fixed = !1), + (this.rowspan = t.rowspan || 1), + (this.colspan = t.colspan || 1), + (this.align = t.align), + (this.halign = t.halign), + (this.vAlign = t.vAlign), + (this.formatter2 = t.formatter2), + (this.styler2 = t.styler2); + }; + })()), + a = n(5); + n.d(e, "a", function () { + return l; + }); + + var _p, + s = + ((_p = function p(t, e) { + return (_p = + Object.setPrototypeOf || + (_instanceof( + { + __proto__: [] + }, + Array + ) && + function (t, e) { + t.__proto__ = e; + }) || + function (t, e) { + for (var n in e) { + e.hasOwnProperty(n) && (t[n] = e[n]); + } + })(t, e); + }), + function (t, e) { + function n() { + this.constructor = t; + } + + _p(t, e), (t.prototype = null === e ? Object.create(e) : ((n.prototype = e.prototype), new n())); + }), + l = (function (t) { + function e(e, n) { + var i = this; + ((e = e || {}), ((i = t.call(this, e) || this).lHeight = e.lHeight), (i.autoCompletion = e.autoCompletion), (i.tableFooterRepeat = e.tableFooterRepeat), n) && + ((i.columns = []), + n.editable && e.columns && e.columns.length + ? e.columns.forEach(function (t) { + var e = []; + t.forEach(function (t) { + var i = new r(t), + o = n.getColumnByColumnId(i.columnId), + p = o ? $.extend(o, i) : new a.a(i); + (p.checked = !0), e.push(p); + }), + i.columns.push(new o.a(e)); + }) + : n.columns.forEach(function (t) { + i.columns.push( + new o.a( + t.filter(function (t) { + return t.checked; + }) + ) + ); + })); + return i; + } + + return ( + s(e, t), + (e.prototype.getColumnByColumnId = function (t) { + return this.makeColumnObj()[t]; + }), + (e.prototype.makeColumnObj = function () { + var t = {}; + return ( + this.columns && + this.columns.forEach(function (e) { + e.columns.forEach(function (e) { + e.columnId && (t[e.columnId] = e); + }); + }), + t + ); + }), + (e.prototype.getGridColumns = function () { + return this.gridColumns || 1; + }), + (e.prototype.getPrintElementOptionEntity = function () { + var e = t.prototype.getPrintElementOptionEntity.call(this); + return ( + this.columns && + ((e.columns = []), + this.columns.forEach(function (t) { + var n = t + .getPrintElementOptionEntity() + .filter(function (t) { + return t.checked; + }) + .map(function (t) { + return new r(t); + }); + e.columns.push(n); + })), + e + ); + }), + e + ); + })(i.a); + }, + function (t, e, n) { + "use strict"; + + n.d(e, "a", function () { + return i; + }); + + var i = (function () { + return function () { + this.rowColumns = []; + }; + })(); + }, + function (t, e, n) { + "use strict"; + + n.d(e, "a", function () { + return i; + }); + + var i = (function () { + function t(t, e) { + (this.gridColumns = t), (this.target = e); + } + + return ( + (t.prototype.getByIndex = function (t) { + return this.target.find(".hi-grid-col:eq(" + t + ")"); + }), + t + ); + })(); + }, + function (t, e, n) { + t.exports = n(33); + }, + function (t, e) { + !(function (t) { + function e(e) { + var n = t.data(e.data.target, "hidraggable"), + i = n.options, + o = n.proxy, + r = e.data, + a = r.startLeft + e.pageX - r.startX, + p = r.startTop + e.pageY - r.startY; + o && + (o.parent()[0] == document.body + ? ((a = null != i.deltaX && null != i.deltaX ? e.pageX + i.deltaX : e.pageX - e.data.offsetWidth), + (p = null != i.deltaY && null != i.deltaY ? e.pageY + i.deltaY : e.pageY - e.data.offsetHeight)) + : (null != i.deltaX && null != i.deltaX && (a += e.data.offsetWidth + i.deltaX), null != i.deltaY && null != i.deltaY && (p += e.data.offsetHeight + i.deltaY))), + e.data.parent != document.body && ((a += t(e.data.parent).scrollLeft()), (p += t(e.data.parent).scrollTop())), + "h" == i.axis ? (r.left = a) : "v" == i.axis ? (r.top = p) : ((r.left = a), (r.top = p)); + } + + function n(e) { + var n = t.data(e.data.target, "hidraggable"), + i = n.options, + o = n.proxy; + o || (o = t(e.data.target)), + o.css({ + left: t.fn.dragLengthC(e.data.left, i), + top: t.fn.dragLengthC(e.data.top, i) + }), + t("body").css("cursor", i.cursor); + } + + function i(i) { + t.fn.hidraggable.isDragging = !0; + var o = t.data(i.data.target, "hidraggable"), + r = o.options, + a = t(".hidroppable") + .filter(function () { + return i.data.target != this; + }) + .filter(function () { + var e = t.data(this, "hidroppable").options.accept; + return ( + !e || + t(e).filter(function () { + return this == i.data.target; + }).length > 0 + ); + }); + o.hidroppables = a; + var p = o.proxy; + return ( + p || (r.proxy ? ((p = "clone" == r.proxy ? t(i.data.target).clone().insertAfter(i.data.target) : r.proxy.call(i.data.target, i.data.target)), (o.proxy = p)) : (p = t(i.data.target))), + p.css("position", "absolute"), + e(i), + n(i), + r.onStartDrag.call(i.data.target, i), + !1 + ); + } + + function o(i) { + var o = t.data(i.data.target, "hidraggable"); + e(i), 0 != o.options.onDrag.call(i.data.target, i, t.fn.dragLengthCNum(i.data.left, o.options), t.fn.dragLengthCNum(i.data.top, o.options)) && n(i); + var r = i.data.target; + return ( + o.hidroppables.each(function () { + var e = t(this); + + if (!e.hidroppable("options").disabled) { + var n = e.offset(); + i.pageX > n.left && i.pageX < n.left + e.outerWidth() && i.pageY > n.top && i.pageY < n.top + e.outerHeight() + ? (this.entered || (t(this).trigger("_dragenter", [r]), (this.entered = !0)), t(this).trigger("_dragover", [r])) + : this.entered && (t(this).trigger("_dragleave", [r]), (this.entered = !1)); + } + }), + !1 + ); + } + + function r(e) { + (t.fn.hidraggable.isDragging = !1), o(e); + var n, + i, + r = t.data(e.data.target, "hidraggable"), + a = r.proxy, + p = r.options; + p.revert + ? 1 == l() + ? t(e.data.target).css({ + position: e.data.startPosition, + left: e.data.startLeft, + top: e.data.startTop + }) + : a + ? (a.parent()[0] == document.body ? ((n = e.data.startX - e.data.offsetWidth), (i = e.data.startY - e.data.offsetHeight)) : ((n = e.data.startLeft), (i = e.data.startTop)), + a.animate( + { + left: n, + top: i + }, + function () { + s(); + } + )) + : t(e.data.target).animate( + { + left: e.data.startLeft, + top: e.data.startTop + }, + function () { + t(e.data.target).css("position", e.data.startPosition); + } + ) + : (t(e.data.target).css({ + position: "absolute", + left: t.fn.dragLengthC(e.data.left, p), + top: t.fn.dragLengthC(e.data.top, p) + }), + l()); + + function s() { + a && a.remove(), (r.proxy = null); + } + + function l() { + var n = !1; + return ( + r.hidroppables.each(function () { + var i = t(this); + + if (!i.hidroppable("options").disabled) { + var o = i.offset(); + return e.pageX > o.left && e.pageX < o.left + i.outerWidth() && e.pageY > o.top && e.pageY < o.top + i.outerHeight() + ? (p.revert && + t(e.data.target).css({ + position: e.data.startPosition, + left: e.data.startLeft, + top: e.data.startTop + }), + t(this).trigger("_drop", [e.data.target]), + s(), + (n = !0), + (this.entered = !1), + !1) + : void 0; + } + }), + n || p.revert || s(), + n + ); + } + + return ( + p.onStopDrag.call(e.data.target, e), + t(document).unbind(".hidraggable"), + setTimeout(function () { + t("body").css("cursor", ""); + }, 100), + !1 + ); + } + + (t.fn.hidraggable = function (e, n) { + return "string" == typeof e + ? t.fn.hidraggable.methods[e](this, n) + : this.each(function () { + var n, + a = t.data(this, "hidraggable"); + a ? (a.handle.unbind(".hidraggable"), (n = t.extend(a.options, e))) : (n = t.extend({}, t.fn.hidraggable.defaults, t.fn.hidraggable.parseOptions(this), e || {})); + var p = n.handle ? ("string" == typeof n.handle ? t(n.handle, this) : n.handle) : t(this); + + function s(e) { + var n = t.data(e.data.target, "hidraggable"), + i = n.handle, + o = t(i).offset(), + r = t(i).outerWidth(), + a = t(i).outerHeight(), + p = e.pageY - o.top, + s = o.left + r - e.pageX, + l = o.top + a - e.pageY, + u = e.pageX - o.left; + return Math.min(p, s, l, u) > n.options.edge; + } + + t.data(this, "hidraggable", { + options: n, + handle: p + }), + n.disabled + ? t(this).css("cursor", "") + : p + .unbind(".hidraggable") + .bind( + "mousemove.hidraggable", + { + target: this + }, + function (e) { + if (!t.fn.hidraggable.isDragging) { + var n = t.data(e.data.target, "hidraggable").options; + s(e) ? t(this).css("cursor", n.cursor) : t(this).css("cursor", ""); + } + } + ) + .bind( + "mouseleave.hidraggable", + { + target: this + }, + function (e) { + t(this).css("cursor", ""); + } + ) + .bind( + "mousedown.hidraggable", + { + target: this + }, + function (e) { + if (0 != s(e)) { + t(this).css("cursor", ""); + var n = t(e.data.target).position(), + a = t(e.data.target).offset(), + p = { + startPosition: t(e.data.target).css("position"), + startLeft: n.left, + startTop: n.top, + left: n.left, + top: n.top, + startX: e.pageX, + startY: e.pageY, + offsetWidth: e.pageX - a.left, + offsetHeight: e.pageY - a.top, + target: e.data.target, + parent: t(e.data.target).parent()[0] + }; + t.extend(e.data, p), + 0 != t.data(e.data.target, "hidraggable").options.onBeforeDrag.call(e.data.target, e) && + (t(document).bind("mousedown.hidraggable", e.data, i), t(document).bind("mousemove.hidraggable", e.data, o), t(document).bind("mouseup.hidraggable", e.data, r)); + } + } + ); + }); + }), + (t.fn.hidraggable.methods = { + options: function options(e) { + return t.data(e[0], "hidraggable").options; + }, + proxy: function proxy(e) { + return t.data(e[0], "hidraggable").proxy; + }, + enable: function enable(e) { + return e.each(function () { + t(this).hidraggable({ + disabled: !1 + }); + }); + }, + disable: function disable(e) { + return e.each(function () { + t(this).hidraggable({ + disabled: !0 + }); + }); + } + }), + (t.fn.hidraggable.parseOptions = function (e) { + var n = t(e); + return t.extend( + {}, + t.hiprintparser.parseOptions(e, [ + "cursor", + "handle", + "axis", + { + revert: "boolean", + deltaX: "number", + deltaY: "number", + edge: "number" + } + ]), + { + disabled: !!n.attr("disabled") || void 0 + } + ); + }), + (t.fn.hidraggable.defaults = { + proxy: null, + revert: !1, + cursor: "move", + deltaX: null, + deltaY: null, + handle: null, + disabled: !1, + edge: 0, + axis: null, + onBeforeDrag: function onBeforeDrag(t) {}, + onStartDrag: function onStartDrag(t) {}, + onDrag: function onDrag(t) {}, + onStopDrag: function onStopDrag(t) {} + }), + (t.fn.hidraggable.isDragging = !1); + })(jQuery); + }, + function (t, e) { + !(function (t) { + (t.fn.hidroppable = function (e, n) { + return "string" == typeof e + ? t.fn.hidroppable.methods[e](this, n) + : ((e = e || {}), + this.each(function () { + var n, + i = t.data(this, "hidroppable"); + i + ? t.extend(i.options, e) + : (t((n = this)).addClass("hidroppable"), + t(n).bind("_dragenter", function (e, i) { + t.data(n, "hidroppable").options.onDragEnter.apply(n, [e, i]); + }), + t(n).bind("_dragleave", function (e, i) { + t.data(n, "hidroppable").options.onDragLeave.apply(n, [e, i]); + }), + t(n).bind("_dragover", function (e, i) { + t.data(n, "hidroppable").options.onDragOver.apply(n, [e, i]); + }), + t(n).bind("_drop", function (e, i) { + t.data(n, "hidroppable").options.onDrop.apply(n, [e, i]); + }), + t.data(this, "hidroppable", { + options: t.extend({}, t.fn.hidroppable.defaults, t.fn.hidroppable.parseOptions(this), e) + })); + })); + }), + (t.fn.hidroppable.methods = { + options: function options(e) { + return t.data(e[0], "hidroppable").options; + }, + enable: function enable(e) { + return e.each(function () { + t(this).hidroppable({ + disabled: !1 + }); + }); + }, + disable: function disable(e) { + return e.each(function () { + t(this).hidroppable({ + disabled: !0 + }); + }); + } + }), + (t.fn.hidroppable.parseOptions = function (e) { + var n = t(e); + return t.extend({}, t.hiprintparser.parseOptions(e, ["accept"]), { + disabled: !!n.attr("disabled") || void 0 + }); + }), + (t.fn.hidroppable.defaults = { + accept: null, + disabled: !1, + onDragEnter: function onDragEnter(t, e) {}, + onDragOver: function onDragOver(t, e) {}, + onDragLeave: function onDragLeave(t, e) {}, + onDrop: function onDrop(t, e) {} + }); + })(jQuery); + }, + function (t, e) { + var n; + ((n = jQuery).hiprintparser = { + parseOptions: function parseOptions(t, e) { + var i = n(t), + o = {}, + r = n.trim(i.attr("data-options")); + + if ((r && ("{" != r.substring(0, 1) && (r = "{" + r + "}"), (o = new Function("return " + r)())), e)) { + for (var a = {}, p = 0; p < e.length; p++) { + var s = e[p]; + if ("string" == typeof s) a[s] = "width" == s || "height" == s || "left" == s || "top" == s ? parseInt(t.style[s]) || void 0 : i.attr(s); + else + for (var l in s) { + var u = s[l]; + "boolean" == u ? (a[l] = i.attr(l) ? "true" == i.attr(l) : void 0) : "number" == u && (a[l] = "0" == i.attr(l) ? 0 : parseFloat(i.attr(l)) || void 0); + } + } + + n.extend(o, a); + } + + return o; + } + }), + (n.fn.dragLengthC = function (t, e) { + return "pt" == e.moveUnit ? n.fn.dragLengthCNum(t, e) + "pt" : n.fn.dragLengthCNum(t, e); + }), + (n.fn.dragLengthCNum = function (t, e) { + var n = 3; + + if ("pt" == e.moveUnit) { + var i = 0.75 * t; + return e.minMove && (n = e.minMove), Math.round(i / n) * n; + } + + return Math.round(i / n) * n; + }); + }, + function (t, e) { + var n, i, o; + (n = jQuery), + (i = { + maxPanelIndex: 0 + }), + ((o = function o(t) { + (this.options = n.data(t.target, "hireizeable").options), this.init(t.target); + }).prototype = { + numHandlerText: function numHandlerText(t) { + return this.numHandler(t) + "pt"; + }, + numHandler: function numHandler(t) { + var e = 1.5, + n = 0.75 * t; + return this.options.minResize && (e = this.options.minResize), Math.round(n / e) * e; + }, + init: function init(t) { + this.initResizeBox(t); + }, + initResizeBox: function initResizeBox(t) { + var e = this; + n(t).each(function () { + var o; + (i.maxPanelIndex += 1), + e.options.noContainer + ? (o = n(t)) + : (o = n("
    ')).css({ + width: "100%", + height: "100%", + top: 0, + left: 0, + position: "absolute", + "background-color": "rgba(0,0,0,0.5)", + cursor: "move", + display: "none" + }), + e.appendHandler(o, n(this)); + + var r = { + name: "n", + target: n('
    ') + }, + a = { + name: "s", + target: n('
    ') + }, + p = { + name: "w", + target: n('
    ') + }, + s = { + name: "e", + target: n('
    ') + }, + l = { + name: "ne", + target: n('
    ') + }, + u = { + name: "nw", + target: n('
    ') + }, + d = { + name: "se", + target: n('
    ') + }, + c = { + name: "sw", + target: n('
    ') + }, + h = function h() { + var t = [], + i = e.options.showPoints; + return ( + n.each([r, a, p, s, l, u, d, c], function (e, o) { + n.inArray(o.name, i) > -1 && t.push(o.target); + }), + t + ); + }; + + e.addHandlerCss(h()), e.appendHandler(h(), o), e.bindResizeEvent(o, n(this)); + var f = n(this); + n(o).on("mousedown", ".resizebtn", function () { + f.addClass("resizeing"); + }), + n(".easyui-droppable").on("mouseup", function () { + f.removeClass("resizeing"); + }), + e.bindTrigger(n(this)); + }), + e.bindHidePanel(); + }, + addHandlerCss: function addHandlerCss(t) { + for (var e = 0; e < t.length; e++) { + t[e].css({ + position: "absolute", + width: "8px", + height: "8px", + background: "#ff6600", + "border-radius": "50%" + }); + } + }, + appendHandler: function appendHandler(t, e) { + for (var n = 0; n < t.length; n++) { + e.append(t[n]); + } + }, + triggerResize: function triggerResize(t) { + t.siblings().children("div[panelindex]").css({ + display: "none" + }), + t.children("div[panelindex]").css({ + display: "block" + }); + }, + bindResizeEvent: function bindResizeEvent(t, e) { + var i = this, + o = 0, + r = 0, + a = t.width(), + p = t.height(), + s = t.offset().left, + l = t.offset().top, + u = i.options.noContainer ? n(e) : t.parent(), + d = !1; + t.on("mousedown", ".e", function (e) { + (o = e.pageX), (a = t.width()), (d = !0); + }); + var c = !1; + t.on("mousedown", ".s", function (e) { + (r = e.pageY), (p = t.height()), (c = !0); + }); + var h = !1; + t.on("mousedown", ".w", function (e) { + (o = e.pageX), (a = t.width()), (h = !0), (s = u.offset().left); + }); + var f = !1; + t.on("mousedown", ".n", function (e) { + (r = e.pageY), (p = t.height()), (f = !0), (l = u.offset().top); + }); + var g = !1; + t.on("mousedown", ".ne", function (e) { + (o = e.pageX), (r = e.pageY), (a = t.width()), (p = t.height()), (g = !0), (l = u.offset().top); + }); + var m = !1; + t.on("mousedown", ".nw", function (e) { + (o = e.pageX), (r = e.pageY), (a = t.width()), (p = t.height()), (l = u.offset().top), (s = u.offset().left), (m = !0); + }); + var v = !1; + t.on("mousedown", ".se", function (e) { + (o = e.pageX), (r = e.pageY), (a = t.width()), (p = t.height()), (v = !0); + }); + var y = !1; + t.on("mousedown", ".sw", function (e) { + (o = e.pageX), (r = e.pageY), (a = t.width()), (p = t.height()), (y = !0), (s = u.offset().left); + }); + var b = !1; + t.on("mousedown", function (t) { + i.options.onBeforeResize(), (o = t.pageX), (r = t.pageY), (l = u.offset().top), (s = u.offset().left), (b = !1); + }), + n(i.options.stage) + .on("mousemove", function (e) { + if (d) { + var n = e.pageX - o; + t.css({ + width: "100%" + }), + u.css({ + width: i.numHandlerText(a + n) + }), + i.options.onResize(e, void 0, i.numHandler(a + n), void 0, void 0); + } else if (c) { + var E = e.pageY - r; + t.css({ + height: "100%" + }), + u.css({ + height: i.numHandlerText(p + E) + }), + i.options.onResize(e, i.numHandler(p + E), void 0, void 0, void 0); + } else + h + ? ((n = e.pageX - o), + t.css({ + width: "100%" + }), + u.css({ + width: i.numHandlerText(a - n), + left: i.numHandlerText(i.options.noDrag ? void 0 : i.numHandler(s + n)) + }), + i.options.onResize(e, void 0, i.numHandler(a - n), void 0, i.options.noDrag ? void 0 : i.numHandler(s + n))) + : f + ? ((E = e.pageY - r), + t.css({ + height: "100%" + }), + u.css({ + height: i.numHandlerText(p - E), + top: i.numHandlerText(i.options.noDrag ? void 0 : l + E) + }), + i.options.onResize(e, i.numHandler(p - E), void 0, i.options.noDrag ? void 0 : i.numHandler(l + E), void 0)) + : g + ? ((n = e.pageX - o), + (E = e.pageY - r), + t.css({ + height: "100%", + width: "100%" + }), + u.css({ + height: i.numHandlerText(p - E), + top: i.numHandlerText(i.options.noDrag ? void 0 : l + E), + width: i.numHandlerText(a + n) + }), + i.options.onResize(e, i.numHandler(p - E), i.numHandler(a + n), i.options.noDrag ? void 0 : i.numHandler(l + E), void 0)) + : m + ? ((n = e.pageX - o), + (E = e.pageY - r), + t.css({ + height: "100%", + width: "100%" + }), + u.css({ + height: i.numHandlerText(p - E), + top: i.numHandlerText(i.options.noDrag ? void 0 : l + E), + width: i.numHandlerText(a - n), + left: i.numHandlerText(i.options.noDrag ? void 0 : s + n) + }), + i.options.onResize(e, i.numHandler(p - E), i.numHandler(a - n), i.options.noDrag ? void 0 : i.numHandler(l + E), i.options.noDrag ? void 0 : i.numHandler(s + n))) + : v + ? ((n = e.pageX - o), + (E = e.pageY - r), + t.css({ + width: "100%", + height: "100%" + }), + u.css({ + width: i.numHandlerText(a + n), + height: i.numHandlerText(p + E) + }), + i.options.onResize(e, i.numHandler(p + E), i.numHandler(a + n), void 0, void 0)) + : y + ? ((n = e.pageX - o), + (E = e.pageY - r), + t.css({ + width: "100%", + height: "100%" + }), + u.css({ + width: i.numHandlerText(a - n), + left: i.numHandlerText(i.options.noDrag ? void 0 : s + n), + height: i.numHandlerText(p + E) + }), + i.options.onResize(e, i.numHandler(p + E), i.numHandler(a - n), i.numHandler(otundefinedop), i.options.noDrag ? void 0 : i.numHandler(s + n))) + : b && + ((n = e.pageX - o), + (E = e.pageY - r), + u.css({ + left: i.numHandlerText(i.options.noDrag ? void 0 : s + n), + top: i.numHandlerText(i.options.noDrag ? void 0 : l + E) + }), + i.options.onResize(e, void 0, void 0, i.options.noDrag ? void 0 : i.numHandler(l + E), i.options.noDrag ? void 0 : i.numHandler(s + n))); + }) + .on("mouseup", function (t) { + (d = !1), (c = !1), (h = !1), (f = !1), (g = !1), (m = !1), (y = !1), (v = !1), (b = !1), i.options.onStopResize(); + }); + }, + bindTrigger: function bindTrigger(t) { + var e = this; + t.on("click", function (n) { + n.stopPropagation(), e.triggerResize(t); + }); + }, + bindHidePanel: function bindHidePanel(t) { + if (i.maxPanelIndex < 2) { + var e = this.options.stage; + n(e).bind("click", function (t) { + t.stopPropagation(), + n("div[panelindex]").css({ + display: "none" + }); + }); + } + } + }), + n.fn.extend({ + hireizeable: function hireizeable(t) { + return this.each(function () { + var e, + i = n.data(this, "hireizeable"); + (e = i ? n.extend(i.options, _1f) : n.extend({}, n.fn.hireizeable.defaults, t || {})), + n.data(this, "hireizeable", { + options: e + }), + new o({ + target: this, + onResize: function onResize(t, e, n, i, o) {}, + onStopResize: function onStopResize(t, e, n, i, o) {} + }); + }); + } + }), + (n.fn.hireizeable.defaults = { + stage: document, + reizeUnit: "pt", + minResize: 1.5, + showPoints: ["s", "e"], + noContainer: !1, + onBeforeResize: function onBeforeResize(t, e, n, i, o) {}, + onResize: function onResize(t, e, n, i, o) {}, + onStopResize: function onStopResize(t, e, n, i, o) {}, + noDrag: !1 + }); + }, + function (t, e) { + var n, i; + jQuery, + (n = "connected"), + (i = "reconnecting"), + (window.hiwebSocket = { + opened: !1, + name: "webSockets", + reconnectTimeout: 6e4, + reconnectWindowSetTimeout: null, + reconnectDelay: 2e3, + supportsKeepAlive: function supportsKeepAlive() { + return !0; + }, + hasIo: function hasIo(t) { + return window.io; + }, + send: function send(t) { + try { + this.socket.emit("news", t); + } catch (e) { + console.log("send data error:" + (t || "") + JSON.stringify(e)); + } + }, + getPrinterList: function getPrinterList() { + return this.printerList; + }, + start: function start() { + var _this = this; + + var t = this; + window.WebSocket + ? this.socket || + ((this.socket = io("http://localhost:17521", { + reconnectionAttempts: 5 + })), + this.socket.on("connect", function (e) { + (t.opened = !0), + console.log("Websocket opened."), + _this.socket.on("successs", function (t) { + hinnn.event.trigger("printSuccess_" + t.templateId, t); + }), + _this.socket.on("error", function (t) { + hinnn.event.trigger("printError_" + t.templateId, t); + }), + _this.socket.on("printerList", function (e) { + t.printerList = e; + }), + (t.state = n); + }), + this.socket.on("disconnect", function () { + t.opened = !1; + })) + : console.log("WebSocket start fail"); + }, + reconnect: function reconnect() { + (this.state !== n && this.state !== i) || (this.stop(), this.ensureReconnectingState() && (console.log("Websocket reconnecting."), this.start())); + }, + stop: function stop() { + this.socket && (console.log("Closing the Websocket."), this.socket.close(), (this.socket = null)); + }, + ensureReconnectingState: function ensureReconnectingState() { + return (this.state = i), this.state === i; + } + }); + }, + function (t, e, n) { + var i = n(28); + "string" == typeof i && (i = [[t.i, i, ""]]); + var o = { + hmr: !0, + transform: void 0, + insertInto: void 0 + }; + n(30)(i, o); + i.locals && (t.exports = i.locals); + }, + function (t, e, n) { + (t.exports = n(29)(!1)).push([ + t.i, + ".hicontextmenu {\r\n\tposition: absolute;\r\n\tdisplay: inline-block;\r\n\twidth: 215px;\r\n\tpadding: 0 0;\r\n\tmargin: 0;\r\n\tfont-family: inherit;\r\n\tfont-size: inherit;\r\n\tlist-style-type: none;\r\n\tlist-style: none;\r\n\tbackground: #fff;\r\n\tborder: 1px solid #bebebe;\r\n\tborder-radius: 2px;\r\n\tfont-size: 13px;\r\n}\r\n\r\n.hicontextmenuroot .hicontextmenuitem {\r\n\tposition: relative;\r\n\t-webkit-box-sizing: content-box;\r\n\t-moz-box-sizing: content-box;\r\n\tbox-sizing: content-box;\r\n\tpadding: .2em 12px;\r\n\tcolor: #2f2f2f;\r\n\t-webkit-user-select: none;\r\n\t-moz-user-select: none;\r\n\t-ms-user-select: none;\r\n\ttext-decoration: none;\r\n\r\n\tuser-select: none;\r\n\tbackground-color: #fff;\r\n\r\n}\r\n\r\n.hicontextmenuroot>.hicontextmenuitem:hover,\r\n.hicontextmenuroot .hicontextmenuitem > a:hover {\r\n\tbackground-color: #f3f3f3;\r\n}\r\n\r\n.hicontextmenuroot .hicontextmenuitem>a {\r\n\ttext-decoration: none;\r\n\tcolor: #363636;\r\n\tline-height: 22px;\r\n\r\n}\r\n\r\n.hicontextmenuroot .hicontextsubmenu>ul {\r\n\tdisplay: none;\r\n\tposition: absolute;\r\n\r\n}\r\n\r\n.hicontextmenuroot .hicontextsubmenu:hover>ul {\r\n\tdisplay: block;\r\n\tleft: 100%;\r\n\ttop: -1px;\r\n\tmargin-left: 0px;\r\n}\r\n\r\n.hicontextmenuroot .borderBottom {\r\n\tborder-bottom: 1px solid #efe6e6;\r\n}\r\n\r\n.hicontextmenuroot .disable> a {\r\n \r\n color: #ccc;\r\n \r\n}\r\n.hicontextmenuroot>.disable:hover,\r\n.hicontextmenuroot .disable> a:hover {\r\n\tbackground-color:#fff;\r\n}", + "" + ]); + }, + function (t, e, n) { + "use strict"; + + t.exports = function (t) { + var e = []; + return ( + (e.toString = function () { + return this.map(function (e) { + var n = (function (t, e) { + var n = t[1] || "", + i = t[3]; + if (!i) return n; + + if (e && "function" == typeof btoa) { + var o = ((a = i), "/*# sourceMappingURL=data:application/json;charset=utf-8;base64," + btoa(unescape(encodeURIComponent(JSON.stringify(a)))) + " */"), + r = i.sources.map(function (t) { + return "/*# sourceURL=" + i.sourceRoot + t + " */"; + }); + return [n].concat(r).concat([o]).join("\n"); + } + + var a; + return [n].join("\n"); + })(e, t); + + return e[2] ? "@media " + e[2] + "{" + n + "}" : n; + }).join(""); + }), + (e.i = function (t, n) { + "string" == typeof t && (t = [[null, t, ""]]); + + for (var i = {}, o = 0; o < this.length; o++) { + var r = this[o][0]; + null != r && (i[r] = !0); + } + + for (o = 0; o < t.length; o++) { + var a = t[o]; + (null != a[0] && i[a[0]]) || (n && !a[2] ? (a[2] = n) : n && (a[2] = "(" + a[2] + ") and (" + n + ")"), e.push(a)); + } + }), + e + ); + }; + }, + function (t, e, n) { + var i, + o, + r = {}, + a = + ((i = function i() { + return window && document && document.all && !window.atob; + }), + function () { + return void 0 === o && (o = i.apply(this, arguments)), o; + }), + p = (function (t) { + var e = {}; + return function (t, n) { + if ("function" == typeof t) return t(); + + if (void 0 === e[t]) { + var i = function (t, e) { + return e ? e.querySelector(t) : document.querySelector(t); + }.call(this, t, n); + + if (window.HTMLIFrameElement && _instanceof(i, window.HTMLIFrameElement)) + try { + i = i.contentDocument.head; + } catch (t) { + i = null; + } + e[t] = i; + } + + return e[t]; + }; + })(), + s = null, + l = 0, + u = [], + d = n(31); + + function c(t, e) { + for (var n = 0; n < t.length; n++) { + var i = t[n], + o = r[i.id]; + + if (o) { + o.refs++; + + for (var a = 0; a < o.parts.length; a++) { + o.parts[a](i.parts[a]); + } + + for (; a < i.parts.length; a++) { + o.parts.push(y(i.parts[a], e)); + } + } else { + var p = []; + + for (a = 0; a < i.parts.length; a++) { + p.push(y(i.parts[a], e)); + } + + r[i.id] = { + id: i.id, + refs: 1, + parts: p + }; + } + } + } + + function h(t, e) { + for (var n = [], i = {}, o = 0; o < t.length; o++) { + var r = t[o], + a = e.base ? r[0] + e.base : r[0], + p = { + css: r[1], + media: r[2], + sourceMap: r[3] + }; + i[a] + ? i[a].parts.push(p) + : n.push( + (i[a] = { + id: a, + parts: [p] + }) + ); + } + + return n; + } + + function f(t, e) { + var n = p(t.insertInto); + if (!n) throw new Error("Couldn't find a style target. This probably means that the value for the 'insertInto' parameter is invalid."); + var i = u[u.length - 1]; + if ("top" === t.insertAt) i ? (i.nextSibling ? n.insertBefore(e, i.nextSibling) : n.appendChild(e)) : n.insertBefore(e, n.firstChild), u.push(e); + else if ("bottom" === t.insertAt) n.appendChild(e); + else { + if ("object" != _typeof(t.insertAt) || !t.insertAt.before) + throw new Error( + "[Style Loader]\n\n Invalid value for parameter 'insertAt' ('options.insertAt') found.\n Must be 'top', 'bottom', or Object.\n (https://github.com/webpack-contrib/style-loader#insertat)\n" + ); + var o = p(t.insertAt.before, n); + n.insertBefore(e, o); + } + } + + function g(t) { + if (null === t.parentNode) return !1; + t.parentNode.removeChild(t); + var e = u.indexOf(t); + e >= 0 && u.splice(e, 1); + } + + function m(t) { + var e = document.createElement("style"); + + if ((void 0 === t.attrs.type && (t.attrs.type = "text/css"), void 0 === t.attrs.nonce)) { + var i = (function () { + 0; + return n.nc; + })(); + + i && (t.attrs.nonce = i); + } + + return v(e, t.attrs), f(t, e), e; + } + + function v(t, e) { + Object.keys(e).forEach(function (n) { + t.setAttribute(n, e[n]); + }); + } + + function y(t, e) { + var n, i, o, r; + + if (e.transform && t.css) { + if (!(r = "function" == typeof e.transform ? e.transform(t.css) : e.transform.default(t.css))) return function () {}; + t.css = r; + } + + if (e.singleton) { + var a = l++; + (n = s || (s = m(e))), (i = T.bind(null, n, a, !1)), (o = T.bind(null, n, a, !0)); + } else + t.sourceMap && "function" == typeof URL && "function" == typeof URL.createObjectURL && "function" == typeof URL.revokeObjectURL && "function" == typeof Blob && "function" == typeof btoa + ? ((n = (function (t) { + var e = document.createElement("link"); + return void 0 === t.attrs.type && (t.attrs.type = "text/css"), (t.attrs.rel = "stylesheet"), v(e, t.attrs), f(t, e), e; + })(e)), + (i = function (t, e, n) { + var i = n.css, + o = n.sourceMap, + r = void 0 === e.convertToAbsoluteUrls && o; + (e.convertToAbsoluteUrls || r) && (i = d(i)); + o && (i += "\n/*# sourceMappingURL=data:application/json;base64," + btoa(unescape(encodeURIComponent(JSON.stringify(o)))) + " */"); + var a = new Blob([i], { + type: "text/css" + }), + p = t.href; + (t.href = URL.createObjectURL(a)), p && URL.revokeObjectURL(p); + }.bind(null, n, e)), + (o = function o() { + g(n), n.href && URL.revokeObjectURL(n.href); + })) + : ((n = m(e)), + (i = function (t, e) { + var n = e.css, + i = e.media; + i && t.setAttribute("media", i); + if (t.styleSheet) t.styleSheet.cssText = n; + else { + for (; t.firstChild; ) { + t.removeChild(t.firstChild); + } + + t.appendChild(document.createTextNode(n)); + } + }.bind(null, n)), + (o = function o() { + g(n); + })); + + return ( + i(t), + function (e) { + if (e) { + if (e.css === t.css && e.media === t.media && e.sourceMap === t.sourceMap) return; + i((t = e)); + } else o(); + } + ); + } + + t.exports = function (t, e) { + if ("undefined" != typeof DEBUG && DEBUG && "object" != (typeof document === "undefined" ? "undefined" : _typeof(document))) + throw new Error("The style-loader cannot be used in a non-browser environment"); + ((e = e || {}).attrs = "object" == _typeof(e.attrs) ? e.attrs : {}), + e.singleton || "boolean" == typeof e.singleton || (e.singleton = a()), + e.insertInto || (e.insertInto = "head"), + e.insertAt || (e.insertAt = "bottom"); + var n = h(t, e); + return ( + c(n, e), + function (t) { + for (var i = [], o = 0; o < n.length; o++) { + var a = n[o]; + (p = r[a.id]).refs--, i.push(p); + } + + t && c(h(t, e), e); + + for (o = 0; o < i.length; o++) { + var p; + + if (0 === (p = i[o]).refs) { + for (var s = 0; s < p.parts.length; s++) { + p.parts[s](); + } + + delete r[p.id]; + } + } + } + ); + }; + + var b, + E = + ((b = []), + function (t, e) { + return (b[t] = e), b.filter(Boolean).join("\n"); + }); + + function T(t, e, n, i) { + var o = n ? "" : i.css; + if (t.styleSheet) t.styleSheet.cssText = E(e, o); + else { + var r = document.createTextNode(o), + a = t.childNodes; + a[e] && t.removeChild(a[e]), a.length ? t.insertBefore(r, a[e]) : t.appendChild(r); + } + } + }, + function (t, e) { + t.exports = function (t) { + var e = "undefined" != typeof window && window.location; + if (!e) throw new Error("fixUrls requires window.location"); + if (!t || "string" != typeof t) return t; + var n = e.protocol + "//" + e.host, + i = n + e.pathname.replace(/\/[^\/]*$/, "/"); + return t.replace(/url\s*\(((?:[^)(]|\((?:[^)(]+|\([^)(]*\))*\))*)\)/gi, function (t, e) { + var o, + r = e + .trim() + .replace(/^"(.*)"$/, function (t, e) { + return e; + }) + .replace(/^'(.*)'$/, function (t, e) { + return e; + }); + return /^(#|data:|http:\/\/|https:\/\/|file:\/\/\/|\s*$)/i.test(r) + ? t + : ((o = 0 === r.indexOf("//") ? r : 0 === r.indexOf("/") ? n + r : i + r.replace(/^\.\//, "")), "url(" + JSON.stringify(o) + ")"); + }); + }; + }, + function (t, e) { + var n, i; + window, + document, + (n = jQuery), + ((i = function i(t, e) { + this.init(t, e); + }).prototype = { + init: function init(t, e) { + (this.ele = t), + (this.defaults = { + menu: [ + { + text: "text", + menus: [{}, {}], + callback: function callback() {} + } + ], + target: function target(t) {}, + width: 100, + itemHeight: 28, + bgColor: "#fff", + color: "#333", + fontSize: 14, + hoverBgColor: "#f5f5f5" + }), + (this.opts = n.extend(!0, {}, this.defaults, e)), + (this.random = new Date().getTime() + parseInt(1e3 * Math.random())), + this.eventBind(); + }, + renderMenu: function renderMenu(t, e) { + var n = this, + i = e; + + if (t && t.length) { + var o = $('
      '); + i || (i = o).addClass("hicontextmenuroot"), + $.each(t, function (t, e) { + var i = !!e.disable && e.disable(), + r = $('
    • ' + (e.text || "") + "
    • "); + i && r.addClass("disable"), + e.borderBottom && r.addClass("borderBottom"), + e.menus && (r.addClass("hicontextsubmenu"), n.renderMenu(e.menus, r)), + e.callback && + r.click(function (t) { + $(this).hasClass("disable") ? t.stopPropagation() : ($(".hicontextmenuroot").remove(), e.callback(), t.stopPropagation()); + }), + o.append(r); + }), + e && e.append(o); + } + + e || $("body").append(i).find(".hicontextmenuroot").hide(); + }, + setPosition: function setPosition(t) { + $(".hicontextmenuroot") + .css({ + left: t.pageX + 2, + top: t.pageY + 2 + }) + .show(); + }, + eventBind: function eventBind() { + var t = this; + this.ele.on("contextmenu", function (e) { + $(".hicontextmenuroot").remove(), e.preventDefault(), t.renderMenu(t.opts.menus), t.setPosition(e), t.opts.target && "function" == typeof t.opts.target && t.opts.target(n(this)); + }), + n("body").on("click", function () { + n(".hicontextmenuroot").remove(); + }); + } + }), + (n.fn.hicontextMenu = function (t) { + return new i(this, t), this; + }); + }, + function (t, e, n) { + "use strict"; + + n.r(e); + n(22), n(23), n(24), n(25); + var i, + o = n(0); + n(26); + window.hiLocalStorage = + ((i = window.localStorage || null), + { + saveLocalData: function saveLocalData(t, e) { + return !(!i || !e || (i.setItem(t, e), 0)); + }, + getLocalData: function getLocalData(t) { + return i ? i.getItem(t) : null; + }, + removeItem: function removeItem(t) { + i && i.removeItem(t); + } + }); + n(27), n(32); + + var _r, + a = (function () { + function t() { + this.allElementTypes = []; + } + + return ( + Object.defineProperty(t, "instance", { + get: function get() { + return t._instance || (t._instance = new t()), t._instance; + }, + enumerable: !0, + configurable: !0 + }), + (t.prototype.addPrintElementTypes = function (t, e) { + var n = this; + this[t] ? (this[t] = this[t].concat(e)) : (this[t] = e), + e.forEach(function (t) { + n.allElementTypes = n.allElementTypes.concat(t.printElementTypes); + }); + }), + (t.prototype.removePrintElementTypes = function (t) { + var n = this; + delete n[t], + (n.allElementTypes = n.allElementTypes.filter(function (e) { + return !e.tid.startsWith(t); + })); + }), + (t.prototype.getElementTypeGroups = function (t) { + return this[this.formatterModule(t)] || []; + }), + (t.prototype.getElementType = function (t) { + var e = this.allElementTypes.filter(function (e) { + return e.tid == t; + }); + if (e.length > 0) return e[0]; + }), + (t.prototype.formatterModule = function (t) { + return t || "_default"; + }), + t + ); + })(), + p = n(1), + s = n(2), + l = (function () { + function t() {} + + return ( + (t.prototype.createPrintElementTypeHtml = function (t, e) { + var n = $('
        '); + return ( + e.forEach(function (t) { + var e = $("
      • "); + e.append('' + t.name + ""); + var i = $("
          "); + e.append(i), + t.printElementTypes.forEach(function (t) { + i.append('
        • ' + t.getText() + "
        • "); + }), + n.append(e); + }), + $(t).append(n), + n.find(".ep-draggable-item") + ); + }), + t + ); + })(), + u = n(5), + d = n(15), + c = (function () { + return function (t) { + (this.field = t.field), (this.title = t.title), (this.type = t.type), (this.columns = t.columns); + }; + })(), + h = (function () { + function t(t) { + var e = this; + (this.text = t.text), + (this.field = t.field), + (this.fields = t.fields), + (this.title = t.title), + (this.tid = t.tid), + (this.data = t.data), + (this.styler = t.styler), + (this.formatter = t.formatter), + (this.type = t.type), + (this.options = t.options), + (this.editable = t.editable), + (this.columnDisplayEditable = t.columnDisplayEditable), + (this.columnDisplayIndexEditable = t.columnDisplayIndexEditable), + (this.columnTitleEditable = t.columnTitleEditable), + (this.columnResizable = t.columnResizable), + (this.columnAlignEditable = t.columnAlignEditable), + (this.columns = []), + (t.columns || []).forEach(function (t, n) { + e.columns.push(e.createTableColumnArray(t)); + }), + (this.rowStyler = t.rowStyler), + (this.striped = t.striped), + (this.groupFields = t.groupFields || []), + (this.groupFormatter = t.groupFormatter), + (this.groupFooterFormatter = t.groupFooterFormatter), + (this.footerFormatter = t.footerFormatter), + (this.gridColumnsFooterFormatter = t.gridColumnsFooterFormatter), + (this.columnObj = this.makeColumnObj()); + } + + return ( + (t.prototype.getText = function () { + return this.text || this.title || ""; + }), + (t.prototype.createPrintElement = function (t) { + var e = this; + return ( + this.columns && + 0 == this.columns.length && + (t.columns || []).forEach(function (t, n) { + e.columns.push(e.createTableColumnArray(t)); + }), + new d.a(this, t) + ); + }), + (t.prototype.getData = function () { + return [{}]; + }), + (t.prototype.createTableColumnArray = function (t) { + var e = []; + return ( + t.forEach(function (t, n) { + e.push(new u.a(t)); + }), + e + ); + }), + (t.prototype.getPrintElementTypeEntity = function () { + return new c({ + title: this.title, + type: this.type + }); + }), + (t.prototype.getFields = function () { + return this.fields; + }), + (t.prototype.getOptions = function () { + return this.options || {}; + }), + (t.prototype.getColumnByColumnId = function (t) { + return this.columnObj[t]; + }), + (t.prototype.makeColumnObj = function () { + var t = {}; + return ( + this.columns && + this.columns.forEach(function (e) { + e.forEach(function (e) { + e.columnId && (t[e.columnId] = e); + }); + }), + t + ); + }), + t + ); + })(), + f = n(4), + g = n(3), + m = + ((_r = function r(t, e) { + return (_r = + Object.setPrototypeOf || + (_instanceof( + { + __proto__: [] + }, + Array + ) && + function (t, e) { + t.__proto__ = e; + }) || + function (t, e) { + for (var n in e) { + e.hasOwnProperty(n) && (t[n] = e[n]); + } + })(t, e); + }), + function (t, e) { + function n() { + this.constructor = t; + } + + _r(t, e), (t.prototype = null === e ? Object.create(e) : ((n.prototype = e.prototype), new n())); + }), + v = (function (t) { + function e(e, n) { + var i = t.call(this, e) || this; + return (i.options = new g.a(n)), i.options.setDefault(new g.a(p.a.instance.image.default).getPrintElementOptionEntity()), i; + } + + return ( + m(e, t), + (e.prototype.getReizeableShowPoints = function () { + return ["se"]; + }), + (e.prototype.getData = function (t) { + var e = ""; + t ? (e = this.getField() ? t[this.getField()] || "" : this.options.src || this.printElementType.getData()) : (e = this.options.src || this.printElementType.getData()); + var n = this.getFormatter(); + return n && (e = n(e, this.options, this._currenttemplateData)), e || ""; + }), + (e.prototype.createTarget = function (t, e) { + var n = $( + '
          ' + ); + return this.updateTargetImage(n, t, e), n; + }), + (e.prototype.initSizeByHtml = function (e) { + t.prototype.initSizeByHtml.call(this, e), this.css(e, this.getData()); + }), + (e.prototype.getConfigOptions = function () { + return p.a.instance.image; + }), + (e.prototype.updateDesignViewFromOptions = function () { + this.designTarget && (this.css(this.designTarget, this.getData()), this.updateTargetImage(this.designTarget, this.getTitle(), this.getData())); + }), + (e.prototype.updateTargetImage = function (t, e, n) { + var i = t.find(".hiprint-printElement-image-content"); + i.find("img").length ? i.find("img").attr("src", n) : i.html(''); + }), + (e.prototype.getHtml = function (t, e, n) { + return this.getHtml2(t, e, n); + }), + e + ); + })(f.a), + y = (function () { + var _t4 = function t(e, n) { + return (_t4 = + Object.setPrototypeOf || + (_instanceof( + { + __proto__: [] + }, + Array + ) && + function (t, e) { + t.__proto__ = e; + }) || + function (t, e) { + for (var n in e) { + e.hasOwnProperty(n) && (t[n] = e[n]); + } + })(e, n); + }; + + return function (e, n) { + function i() { + this.constructor = e; + } + + _t4(e, n), (e.prototype = null === n ? Object.create(n) : ((i.prototype = n.prototype), new i())); + }; + })(), + b = (function (t) { + function e(e) { + var n = this; + return (e = e || {}), ((n = t.call(this, e) || this).leftSpaceRemoved = e.leftSpaceRemoved), n; + } + + return ( + y(e, t), + (e.prototype.getHideTitle = function () { + return null == this.hideTitle ? this.defaultOptions.hideTitle : this.hideTitle; + }), + e + ); + })(g.a), + E = n(8), + T = (function () { + function t(t, e, n, i, r, a, p, s, l, u, d) { + (this.defaultPaperNumberFormat = "paperNo-paperCount"), + (this.printLine = 0), + (this.templateId = t), + (this.width = o.a.mm.toPt(e)), + (this.height = o.a.mm.toPt(n)), + (this.mmwidth = e), + (this.mmheight = n), + (this.paperHeader = i), + (this.paperFooter = r), + (this.contentHeight = r - i), + this.createTarget(), + (this.index = u), + (this.paperNumberLeft = a || parseInt((this.width - 30).toString())), + (this.paperNumberTop = p || parseInt((this.height - 22).toString())), + (this.paperNumberDisabled = s), + (this.paperNumberFormat = l), + (this.referenceElement = d + ? $.extend({}, d) + : new E.a({ + top: 0, + left: 0, + height: 0, + width: 0, + bottomInLastPaper: 0, + beginPrintPaperIndex: 0, + printTopInPaper: 0, + endPrintPaperIndex: 0 + })); + } + + return ( + (t.prototype.subscribePaperBaseInfoChanged = function (t) { + this.onPaperBaseInfoChanged = t; + }), + (t.prototype.triggerOnPaperBaseInfoChanged = function () { + this.onPaperBaseInfoChanged && + this.onPaperBaseInfoChanged({ + paperHeader: this.paperHeader, + paperFooter: this.paperFooter, + paperNumberLeft: this.paperNumberLeft, + paperNumberTop: this.paperNumberTop, + paperNumberDisabled: this.paperNumberDisabled, + paperNumberFormat: this.paperNumberFormat + }); + }), + (t.prototype.setFooter = function (t, e, n, i) { + (this.firstPaperFooter = t), (this.evenPaperFooter = e), (this.oddPaperFooter = n), (this.lastPaperFooter = i); + }), + (t.prototype.setOffset = function (t, e) { + this.setLeftOffset(t), this.setTopOffset(e); + }), + (t.prototype.setLeftOffset = function (t) { + t ? this.paperContentTarget.css("left", t + "pt") : (this.paperContentTarget[0].style.left = ""); + }), + (t.prototype.setTopOffset = function (t) { + t ? this.paperContentTarget.css("top", t + "pt") : (this.paperContentTarget[0].style.top = ""); + }), + (t.prototype.createTarget = function () { + (this.target = $('
          ')), + (this.paperContentTarget = this.target.find(".hiprint-printPaper-content")), + this.target.css("width", this.mmwidth + "mm"), + this.target.css("height", this.mmheight - p.a.instance.paperHeightTrim + "mm"), + this.target.attr("original-height", this.mmheight); + }), + (t.prototype.createHeaderLine = function () { + var t = this; + (this.headerLinetarget = $('
          ')), + this.headerLinetarget.css("top", (this.paperHeader || -1) + "pt"), + 0 == this.paperHeader && this.headerLinetarget.addClass("hideheaderLinetarget"), + this.paperContentTarget.append(this.headerLinetarget), + this.dragHeadLineOrFootLine(this.headerLinetarget, function (e, n) { + (t.paperHeader = n), t.triggerOnPaperBaseInfoChanged(); + }); + }), + (t.prototype.createFooterLine = function () { + var t = this; + (this.footerLinetarget = $('
          ')), + this.footerLinetarget.css("top", parseInt(this.paperFooter.toString()) + "pt"), + this.paperFooter == this.height && (this.footerLinetarget.css("top", this.mmheight - p.a.instance.paperHeightTrim + "mm"), this.footerLinetarget.addClass("hidefooterLinetarget")), + this.paperContentTarget.append(this.footerLinetarget), + this.dragHeadLineOrFootLine(this.footerLinetarget, function (e, n) { + (t.paperFooter = n), t.triggerOnPaperBaseInfoChanged(); + }); + }), + (t.prototype.createPaperNumber = function (t) { + var e = this, + n = this.target.find(".hiprint-paperNumber"); + if (n.length) return n.html(t), n; + var i = $('' + t + ""); + return ( + i.css("top", this.paperNumberTop + "pt"), + i.css("left", this.paperNumberLeft + "pt"), + this.paperContentTarget.append(i), + this.dragHeadLineOrFootLine( + i, + function (t, n) { + (e.paperNumberTop = n), (e.paperNumberLeft = t), e.triggerOnPaperBaseInfoChanged(); + }, + !0 + ), + i + ); + }), + (t.prototype.getTarget = function () { + return this.target; + }), + (t.prototype.append = function (t) { + this.paperContentTarget.append(t); + }), + (t.prototype.updateReferenceElement = function (t) { + t && (this.referenceElement = t); + }), + (t.prototype.updatePrintLine = function (t) { + t >= this.printLine && (this.printLine = t); + }), + (t.prototype.design = function (t) { + var e = this; + this.createHeaderLine(), + this.createFooterLine(), + this.target.addClass("design"), + t && t.grid && this.target.addClass("grid"), + (this.paperNumberTarget = this.createPaperNumber(this.formatPaperNumber(1, 1))), + this.createRuler(), + this.resetPaperNumber(this.paperNumberTarget), + $(this.paperNumberTarget).bind("dblclick.hiprint", function () { + null == e.paperNumberDisabled && (e.paperNumberDisabled = !1), + (e.paperNumberDisabled = !e.paperNumberDisabled), + e.resetPaperNumber(e.paperNumberTarget), + e.triggerOnPaperBaseInfoChanged(); + }), + $(this.paperNumberTarget).bind("click.hiprint", function () { + o.a.event.trigger("BuildCustomOptionSettingEventKey_" + e.templateId, { + options: { + paperNumberFormat: e.paperNumberFormat, + paperNumberDisabled: e.paperNumberDisabled + }, + callback: function callback(t) { + (e.paperNumberDisabled = !!t.paperNumberDisabled || void 0), + (e.paperNumberFormat = t.paperNumberFormat ? t.paperNumberFormat : void 0), + e.createPaperNumber(e.formatPaperNumber(1, 1)), + e.resetPaperNumber(e.paperNumberTarget), + e.triggerOnPaperBaseInfoChanged(); + } + }); + }); + }), + (t.prototype.resetPaperNumber = function (t) { + this.paperNumberDisabled ? t.addClass("hiprint-paperNumber-disabled") : t.removeClass("hiprint-paperNumber-disabled"); + }), + (t.prototype.updatePaperNumber = function (t, e, n) { + var i = this.createPaperNumber(this.formatPaperNumber(t, e)); + this.paperNumberDisabled ? i.hide() : n && this.index % 2 == 1 && ((i[0].style.left = ""), i.css("right", this.paperNumberLeft + "pt")); + }), + (t.prototype.formatPaperNumber = function (t, e) { + return (this.paperNumberFormat ? this.paperNumberFormat : this.defaultPaperNumberFormat).replace("paperNo", t.toString()).replace("paperCount", e.toString()); + }), + (t.prototype.dragHeadLineOrFootLine = function (t, e, n) { + var i = this; + t.hidraggable({ + axis: n ? void 0 : "v", + onDrag: function onDrag(t, n, i) { + e(n, i); + }, + moveUnit: "pt", + minMove: p.a.instance.movingDistance, + onBeforeDrag: function onBeforeDrag(t) { + s.a.instance.draging = !0; + }, + onStopDrag: function onStopDrag(t) { + (s.a.instance.draging = !1), i.footerLinetarget.removeClass("hidefooterLinetarget"), i.headerLinetarget.removeClass("hideheaderLinetarget"); + } + }); + }), + (t.prototype.resize = function (t, e) { + (this.width = o.a.mm.toPt(t)), + (this.height = o.a.mm.toPt(e)), + (this.mmwidth = t), + (this.mmheight = e), + this.target.css("width", t + "mm"), + this.target.css("height", e - p.a.instance.paperHeightTrim + "mm"), + this.target.attr("original-height", this.mmheight), + (this.paperFooter = this.height), + this.footerLinetarget.css("top", this.height + "pt"), + (this.contentHeight = this.paperFooter - this.paperHeader), + (this.paperNumberLeft = parseInt((this.width - 30).toString())), + (this.paperNumberTop = parseInt((this.height - 22).toString())), + this.paperNumberTarget.css("top", this.paperNumberTop + "pt"), + this.paperNumberTarget.css("left", this.paperNumberLeft + "pt"), + this.triggerOnPaperBaseInfoChanged(); + }), + (t.prototype.getPaperFooter = function (t) { + var e = this.index + t; + return 0 == e + ? this.firstPaperFooter + ? this.firstPaperFooter + : this.oddPaperFooter + ? this.oddPaperFooter + : this.paperFooter + : e % 2 == 0 + ? this.oddPaperFooter + ? this.oddPaperFooter + : this.paperFooter + : e % 2 == 1 + ? this.evenPaperFooter + ? this.evenPaperFooter + : this.paperFooter + : void 0; + }), + (t.prototype.getContentHeight = function (t) { + return this.getPaperFooter(t) - this.paperHeader; + }), + (t.prototype.createRuler = function () { + this.target.append('
          '); + }), + (t.prototype.displayHeight = function () { + return this.mmheight - p.a.instance.paperHeightTrim + "mm"; + }), + (t.prototype.displayWidth = function () { + return this.mmwidth + "mm"; + }), + (t.prototype.getPanelTarget = function () { + return this.target.parent(".hiprint-printPanel "); + }), + t + ); + })(), + P = n(6), + _ = (function () { + var _t5 = function t(e, n) { + return (_t5 = + Object.setPrototypeOf || + (_instanceof( + { + __proto__: [] + }, + Array + ) && + function (t, e) { + t.__proto__ = e; + }) || + function (t, e) { + for (var n in e) { + e.hasOwnProperty(n) && (t[n] = e[n]); + } + })(e, n); + }; + + return function (e, n) { + function i() { + this.constructor = e; + } + + _t5(e, n), (e.prototype = null === n ? Object.create(n) : ((i.prototype = n.prototype), new i())); + }; + })(), + w = (function (t) { + function e(e, n) { + var i = t.call(this, e) || this; + return (i.options = new b(n)), i.options.setDefault(new b(p.a.instance.longText.default).getPrintElementOptionEntity()), i; + } + + return ( + _(e, t), + (e.prototype.getDesignTarget = function (e) { + var n = t.prototype.getDesignTarget.call(this, e); + return n.find(".hiprint-printElement-longText-content").css("border", "1px dashed #cebcbc"), n; + }), + (e.prototype.getProxyTarget = function (t) { + t && this.SetProxyTargetOption(t); + var e = this.getData(), + n = this.createTarget(this.printElementType.getText(!0), e); + return this.updateTargetSize(n), this.css(n, e), n; + }), + (e.prototype.updateDesignViewFromOptions = function () { + if (this.designTarget) { + var t = this.getData(), + e = this.getHtml(this.designPaper)[0].target; + this.designTarget.find(".hiprint-printElement-longText-content").html(e.find(".hiprint-printElement-longText-content").html()), this.css(this.designTarget, t); + } + }), + (e.prototype.getConfigOptions = function () { + return p.a.instance.longText; + }), + (e.prototype.getTitle = function () { + return this.options.title || this.printElementType.title; + }), + (e.prototype.getData = function (t) { + return t ? t[this.getField()] || "" : this.options.testData || this.printElementType.getData() || ""; + }), + (e.prototype.updateTargetText = function (t, e, n) { + var i = t.find(".hiprint-printElement-longText-content"), + o = this.getText(e, n); + i.html(o); + }), + (e.prototype.createTarget = function (t, e) { + var n = $( + '
          ' + ); + return this.updateTargetText(n, t, e), n; + }), + (e.prototype.getText = function (t, e) { + var n = this.getFormatter(); + e && (e = 0 != this.options.leftSpaceRemoved ? e.toString().replace(/^\s*/, "") : e); + return ( + (this.getField() + ? (this.options.getHideTitle() ? "" : t ? t + ":" : "") + (n ? n(t, e, this.options, this._currenttemplateData) : e) + : n + ? n(t, t, this.options, this._currenttemplateData) + : t || "") || "" + ); + }), + (e.prototype.getHtml = function (t, e) { + this.setCurrenttemplateData(e), this.createTempContainer(); + var n = this.getPaperHtmlResult(t, e); + return this.removeTempContainer(), n; + }), + (e.prototype.getHeightByData = function (t) { + this.createTempContainer(); + var e = this.getPaperHtmlResult(new T("", 1e3, 1e3, 0, 25e3, 0, 0, !0, void 0, 0, void 0), {}, t); + return this.removeTempContainer(), e[0].referenceElement.bottomInLastPaper - e[0].referenceElement.printTopInPaper; + }), + (e.prototype.getLongTextIndent = function () { + return this.options.longTextIndent ? '' : ''; + }), + (e.prototype.getPaperHtmlResult = function (t, e, n) { + var i = this, + o = [], + r = 0, + a = n || this.getData(e), + p = this.getText(this.getTitle(), a), + s = this.createTarget(this.getTitle(), this.options.testData || ""); + this.css(s, a), e ? this.updateTargetWidth(s) : this.updateTargetSize(s), this.getTempContainer().html(""), this.getTempContainer().append(s); + var l = [this.getLongTextIndent()], + u = p.split(new RegExp("\r|\n", "g")); + if ( + (u.forEach(function (t, e) { + var n = 0 != i.options.leftSpaceRemoved ? (t || "").toString().replace(/^\s*/, "") : t; + (l = l.concat(n.split(""))), e < u.length - 1 && l.push("
          " + i.getLongTextIndent()); + }), + 0 == l.length && (l = [""]), + this.isHeaderOrFooter() || this.isFixed() || !e) + ) + return ( + (f = this.getStringBySpecificHeight(l, 25e3, s)).target.css("left", this.options.displayLeft()), + f.target.css("top", this.options.displayTop()), + (f.target[0].height = ""), + o.push( + new P.a({ + target: f.target, + printLine: this.options.displayTop() + f.height, + referenceElement: new E.a({ + top: this.options.getTop(), + left: this.options.getLeft(), + height: this.options.getHeight(), + width: this.options.getWidth(), + beginPrintPaperIndex: t.index, + bottomInLastPaper: this.options.getTop() + f.height, + printTopInPaper: this.options.getTop() + }) + }) + ), + o + ); + + for (var d = this.getBeginPrintTopInPaperByReferenceElement(t); l.length > 0; ) { + var c = 0, + h = t.getPaperFooter(r); + 0 == r && + d > h && + ((d = d - h + t.paperHeader), + o.push( + new P.a({ + target: void 0, + printLine: void 0 + }) + ), + r++, + (c = t.getContentHeight(r) - (d - t.paperHeader)), + (h = t.getPaperFooter(r))); + var f = this.getStringBySpecificHeight(l, c > 0 ? c : 0 == r ? h - d : t.getContentHeight(r), s); + l.splice(0, f.length); + var g = void 0, + m = void 0; + f.target.css("left", this.options.displayLeft()), + (f.target[0].height = ""), + 0 == r || c > 0 + ? ((m = d), + f.target.css("top", m + "pt"), + (g = l.length > 0 ? d + f.height : null != this.options.lHeight ? d + (f.height > this.options.lHeight ? f.height : this.options.lHeight) : d + f.height)) + : ((m = t.paperHeader), f.target.css("top", m + "pt"), (g = m + f.height)), + o.push( + new P.a({ + target: f.target, + printLine: g, + referenceElement: new E.a({ + top: this.options.getTop(), + left: this.options.getLeft(), + height: this.options.getHeight(), + width: this.options.getWidth(), + beginPrintPaperIndex: t.index, + bottomInLastPaper: g, + printTopInPaper: m + }) + }) + ), + r++; + } + + return o; + }), + (e.prototype.getStringBySpecificHeight = function (t, e, n) { + var i = o.a.pt.toPx(e), + r = this.IsPaginationIndex(t, t.length - 1, i, n); + return r.IsPagination ? r : this.BinarySearch(t, 0, t.length - 1, i, n); + }), + (e.prototype.BinarySearch = function (t, e, n, i, o) { + var r = Math.floor((e + n) / 2); + if (e > n) + return ( + o.find(".hiprint-printElement-longText-content").html(""), + { + IsPagination: !0, + height: 0, + length: 0, + target: o.clone() + } + ); + var a = this.IsPaginationIndex(t, r, i, o); + return a.IsPagination ? a : "l" == a.move ? this.BinarySearch(t, e, r - 1, i, o) : this.BinarySearch(t, r + 1, n, i, o); + }), + (e.prototype.IsPaginationIndex = function (t, e, n, i) { + i.find(".hiprint-printElement-longText-content").html(t.slice(0, e + 2).join("")); + var r = i.height(); + i.find(".hiprint-printElement-longText-content").html(t.slice(0, e + 1).join("")); + var a = i.height(); + return e >= t.length - 1 && a < n + ? { + IsPagination: !0, + height: o.a.px.toPt(a), + length: t.length, + target: i.clone() + } + : a <= n && r >= n + ? { + IsPagination: !0, + height: a, + length: e + 1, + target: i.clone() + } + : a >= n + ? { + IsPagination: !1, + move: "l" + } + : r <= n + ? { + IsPagination: !1, + move: "r" + } + : { + IsPagination: !0, + result: 1 + }; + }), + e + ); + })(f.a), + x = (function () { + function t() {} + + return ( + (t.replaceEnterAndNewline = function (t, e) { + return t.replace(new RegExp("\r|\n|/g", "g"), e); + }), + (t.replaceTab = function (t, e) { + return t.replace(new RegExp("\t/g", "g"), e); + }), + (t.replaceEnterAndNewlineAndTab = function (t, e) { + return t.replace(new RegExp("\r|\n|\t|/g", "g"), e); + }), + t + ); + })(), + C = (function () { + var _t6 = function t(e, n) { + return (_t6 = + Object.setPrototypeOf || + (_instanceof( + { + __proto__: [] + }, + Array + ) && + function (t, e) { + t.__proto__ = e; + }) || + function (t, e) { + for (var n in e) { + e.hasOwnProperty(n) && (t[n] = e[n]); + } + })(e, n); + }; + + return function (e, n) { + function i() { + this.constructor = e; + } + + _t6(e, n), (e.prototype = null === n ? Object.create(n) : ((i.prototype = n.prototype), new i())); + }; + })(), + O = (function (t) { + function e(e) { + var n = t.call(this, e) || this; + return n.title && (n.title = x.replaceEnterAndNewlineAndTab(n.title, "")), n; + } + + return ( + C(e, t), + (e.prototype.getHideTitle = function () { + return null == this.hideTitle ? this.defaultOptions.hideTitle : this.hideTitle; + }), + (e.prototype.getTextType = function () { + return (null == this.textType ? this.defaultOptions.textType : this.textType) || "text"; + }), + (e.prototype.getFontSize = function () { + return (null == this.fontSize ? this.defaultOptions.fontSize : this.fontSize) || 9; + }), + (e.prototype.getbarcodeMode = function () { + return (null == this.barcodeMode ? this.defaultOptions.barcodeMode : this.barcodeMode) || "CODE128"; + }), + e + ); + })(g.a), + H = (function () { + var _t7 = function t(e, n) { + return (_t7 = + Object.setPrototypeOf || + (_instanceof( + { + __proto__: [] + }, + Array + ) && + function (t, e) { + t.__proto__ = e; + }) || + function (t, e) { + for (var n in e) { + e.hasOwnProperty(n) && (t[n] = e[n]); + } + })(e, n); + }; + + return function (e, n) { + function i() { + this.constructor = e; + } + + _t7(e, n), (e.prototype = null === n ? Object.create(n) : ((i.prototype = n.prototype), new i())); + }; + })(), + D = (function (t) { + function e(e, n) { + var i = t.call(this, e) || this; + return (i.options = new O(n)), i.options.setDefault(new O(p.a.instance.text.default).getPrintElementOptionEntity()), i; + } + + return ( + H(e, t), + (e.prototype.getDesignTarget = function (e) { + return t.prototype.getDesignTarget.call(this, e); + }), + (e.prototype.getProxyTarget = function (t) { + t && this.SetProxyTargetOption(t); + var e = this.getData(), + n = this.createTarget(this.printElementType.getText(!0), e); + return this.updateTargetSize(n), this.css(n, e), n; + }), + (e.prototype.updateDesignViewFromOptions = function () { + if (this.designTarget) { + var t = this.getData(); + this.css(this.designTarget, t), this.updateTargetText(this.designTarget, this.getTitle(), t); + } + }), + (e.prototype.getConfigOptions = function () { + return p.a.instance.text; + }), + (e.prototype.getTitle = function () { + var t = this.options.title || this.printElementType.title || ""; + return t && (t = x.replaceEnterAndNewlineAndTab(t, "")), t; + }), + (e.prototype.getData = function (t) { + var e = void 0; + + if (((e = t ? t[this.getField()] || "" : this.options.testData || this.printElementType.getData() || ""), this.options.format)) { + if ("datetime" == this.options.dataType) return o.a.dateFormat(e, this.options.format); + + if ("boolen" == this.options.dataType) { + var n = this.options.format.split(":"); + if (n.length > 0) return !0 === e || "true" === e ? n[0] : n[1]; + } + } + + return e; + }), + (e.prototype.updateTargetText = function (t, e, n, i) { + var r = this.getFormatter(), + a = t.find(".hiprint-printElement-text-content"), + p = ""; + p = this.getField() + ? (this.options.getHideTitle() ? "" : e ? e + ":" : "") + (r ? r(e, n, this.options, this._currenttemplateData, t) : n) + : (n = r ? r(e, e, this.options, this._currenttemplateData, t) : e); + var s = this.options.getTextType(); + if ("text" == s) a.html(p); + else { + if ("barcode" == s) { + a.html('
          '); + + try { + n + ? (JsBarcode(a.find(".hibarcode_imgcode")[0], n, { + format: this.options.getbarcodeMode(), + width: 1, + textMargin: -1, + lineColor: this.options.color || "#000000", + margin: 0, + height: parseInt(o.a.pt.toPx(this.options.getHeight() || 10).toString()), + displayValue: !1 + }), + a.find(".hibarcode_imgcode").attr("height", "100%"), + a.find(".hibarcode_imgcode").attr("width", "100%"), + this.options.hideTitle || a.find(".hibarcode_displayValue").html(n)) + : a.html(""); + } catch (t) { + console.log(t), a.html("此格式不支持该文本"); + } + } + + if ("qrcode" == s) { + a.html(""); + + try { + if (n) { + var l = parseInt(o.a.pt.toPx(this.options.getWidth() || 20)), + u = parseInt(o.a.pt.toPx(this.options.getHeight() || 20)); + new QRCode(a[0], { + width: l, + height: u, + colorDark: this.options.color || "#000000", + useSVG: !0 + }).makeCode(n); + } + } catch (t) { + console.log(t), a.html("二维码生成失败"); + } + } + } + }), + (e.prototype.onResize = function (e, n, i, o, r) { + t.prototype.onResize.call(this, e, n, i, o, r); + ("barcode" != this.options.getTextType() && "qrcode" != this.options.getTextType()) || this.updateTargetText(this.designTarget, this.getTitle(), this.getData()); + }), + (e.prototype.createTarget = function (t, e, n) { + var i = $( + '
          ' + ); + return this.updateTargetText(i, t, e, n), i; + }), + (e.prototype.getHtml = function (t, e, n) { + return this.getHtml2(t, e, n); + }), + e + ); + })(f.a), + I = (function () { + var _t8 = function t(e, n) { + return (_t8 = + Object.setPrototypeOf || + (_instanceof( + { + __proto__: [] + }, + Array + ) && + function (t, e) { + t.__proto__ = e; + }) || + function (t, e) { + for (var n in e) { + e.hasOwnProperty(n) && (t[n] = e[n]); + } + })(e, n); + }; + + return function (e, n) { + function i() { + this.constructor = e; + } + + _t8(e, n), (e.prototype = null === n ? Object.create(n) : ((i.prototype = n.prototype), new i())); + }; + })(), + R = (function (t) { + function e(e) { + return t.call(this, e) || this; + } + + return I(e, t), e; + })(g.a), + M = (function () { + var _t9 = function t(e, n) { + return (_t9 = + Object.setPrototypeOf || + (_instanceof( + { + __proto__: [] + }, + Array + ) && + function (t, e) { + t.__proto__ = e; + }) || + function (t, e) { + for (var n in e) { + e.hasOwnProperty(n) && (t[n] = e[n]); + } + })(e, n); + }; + + return function (e, n) { + function i() { + this.constructor = e; + } + + _t9(e, n), (e.prototype = null === n ? Object.create(n) : ((i.prototype = n.prototype), new i())); + }; + })(), + S = (function (t) { + function e(e, n) { + var i = t.call(this, e) || this; + return (i.options = new R(n)), i.options.setDefault(new R(p.a.instance.html.default).getPrintElementOptionEntity()), i; + } + + return ( + M(e, t), + (e.prototype.updateDesignViewFromOptions = function () { + if (this.designTarget) { + var t = this.getData(); + this.css(this.designTarget, t), this.updateTargetHtml(); + } + }), + (e.prototype.updateTargetHtml = function () { + var t = this.getFormatter(); + + if (t) { + var e = t(this.getData(), this.options, this._currenttemplateData); + this.designTarget.find(".hiprint-printElement-html-content").html(e); + } + }), + (e.prototype.getConfigOptions = function () { + return p.a.instance.html; + }), + (e.prototype.createTarget = function (t, e) { + var n = $( + '
          ' + ), + i = this.getFormatter(); + + if (i) { + var o = i(this.getData(), this.options, this._currenttemplateData); + n.find(".hiprint-printElement-html-content").append(o); + } else this.options.content && n.find(".hiprint-printElement-html-content").append(this.options.content); + + return n; + }), + (e.prototype.getHtml = function (t, e, n) { + return this.getHtml2(t, e, n); + }), + e + ); + })(f.a), + B = (function () { + var _t10 = function t(e, n) { + return (_t10 = + Object.setPrototypeOf || + (_instanceof( + { + __proto__: [] + }, + Array + ) && + function (t, e) { + t.__proto__ = e; + }) || + function (t, e) { + for (var n in e) { + e.hasOwnProperty(n) && (t[n] = e[n]); + } + })(e, n); + }; + + return function (e, n) { + function i() { + this.constructor = e; + } + + _t10(e, n), (e.prototype = null === n ? Object.create(n) : ((i.prototype = n.prototype), new i())); + }; + })(), + F = (function (t) { + function e(e, n) { + var i = t.call(this, e) || this; + return (i.options = new g.a(n)), i.options.setDefault(new g.a(p.a.instance.vline.default).getPrintElementOptionEntity()), i; + } + + return ( + B(e, t), + (e.prototype.updateDesignViewFromOptions = function () { + if (this.designTarget) { + var t = this.getData(); + this.css(this.designTarget, t); + } + }), + (e.prototype.getConfigOptions = function () { + return p.a.instance.hline; + }), + (e.prototype.createTarget = function (t, e) { + return $('
          '); + }), + (e.prototype.getReizeableShowPoints = function () { + return ["s"]; + }), + (e.prototype.getHtml = function (t, e, n) { + return this.getHtml2(t, e, n); + }), + e + ); + })(f.a), + L = (function () { + var _t11 = function t(e, n) { + return (_t11 = + Object.setPrototypeOf || + (_instanceof( + { + __proto__: [] + }, + Array + ) && + function (t, e) { + t.__proto__ = e; + }) || + function (t, e) { + for (var n in e) { + e.hasOwnProperty(n) && (t[n] = e[n]); + } + })(e, n); + }; + + return function (e, n) { + function i() { + this.constructor = e; + } + + _t11(e, n), (e.prototype = null === n ? Object.create(n) : ((i.prototype = n.prototype), new i())); + }; + })(), + A = (function (t) { + function e(e, n) { + var i = t.call(this, e) || this; + return (i.options = new g.a(n)), i.options.setDefault(new g.a(p.a.instance.hline.default).getPrintElementOptionEntity()), i; + } + + return ( + L(e, t), + (e.prototype.updateDesignViewFromOptions = function () { + if (this.designTarget) { + var t = this.getData(); + this.css(this.designTarget, t); + } + }), + (e.prototype.getConfigOptions = function () { + return p.a.instance.hline; + }), + (e.prototype.createTarget = function (t, e) { + return $('
          '); + }), + (e.prototype.getReizeableShowPoints = function () { + return ["e"]; + }), + e + ); + })(f.a), + z = (function () { + var _t12 = function t(e, n) { + return (_t12 = + Object.setPrototypeOf || + (_instanceof( + { + __proto__: [] + }, + Array + ) && + function (t, e) { + t.__proto__ = e; + }) || + function (t, e) { + for (var n in e) { + e.hasOwnProperty(n) && (t[n] = e[n]); + } + })(e, n); + }; + + return function (e, n) { + function i() { + this.constructor = e; + } + + _t12(e, n), (e.prototype = null === n ? Object.create(n) : ((i.prototype = n.prototype), new i())); + }; + })(), + k = (function (t) { + function e(e, n) { + var i = t.call(this, e) || this; + return (i.options = new g.a(n)), i.options.setDefault(new g.a(p.a.instance.rect.default).getPrintElementOptionEntity()), i; + } + + return ( + z(e, t), + (e.prototype.updateDesignViewFromOptions = function () { + if (this.designTarget) { + var t = this.getData(); + this.css(this.designTarget, t); + } + }), + (e.prototype.getConfigOptions = function () { + return p.a.instance.hline; + }), + (e.prototype.createTarget = function (t, e) { + return $('
          '); + }), + (e.prototype.getHtml = function (t, e, n) { + return this.getHtml2(t, e, n); + }), + e + ); + })(f.a), + N = (function () { + var _t13 = function t(e, n) { + return (_t13 = + Object.setPrototypeOf || + (_instanceof( + { + __proto__: [] + }, + Array + ) && + function (t, e) { + t.__proto__ = e; + }) || + function (t, e) { + for (var n in e) { + e.hasOwnProperty(n) && (t[n] = e[n]); + } + })(e, n); + }; + + return function (e, n) { + function i() { + this.constructor = e; + } + + _t13(e, n), (e.prototype = null === n ? Object.create(n) : ((i.prototype = n.prototype), new i())); + }; + })(), + V = (function (t) { + function e(e, n) { + var i = t.call(this, e) || this; + return (i.options = new g.a(n)), i.options.setDefault(new g.a(p.a.instance.oval.default).getPrintElementOptionEntity()), i; + } + + return ( + N(e, t), + (e.prototype.updateDesignViewFromOptions = function () { + if (this.designTarget) { + var t = this.getData(); + this.css(this.designTarget, t); + } + }), + (e.prototype.getConfigOptions = function () { + return p.a.instance.hline; + }), + (e.prototype.createTarget = function (t, e) { + return $('
          '); + }), + (e.prototype.getHtml = function (t, e, n) { + return this.getHtml2(t, e, n); + }), + e + ); + })(f.a), + W = (function () { + function t() {} + + return ( + (t.createPrintElement = function (t, e) { + return "text" == t.type + ? new D(t, e) + : "image" == t.type + ? new v(t, e) + : "longText" == t.type + ? new w(t, e) + : "table" == t.type + ? new d.a(t, e) + : "html" == t.type + ? new S(t, e) + : "vline" == t.type + ? new F(t, e) + : "hline" == t.type + ? new A(t, e) + : "rect" == t.type + ? new k(t, e) + : "oval" == t.type + ? new V(t, e) + : void 0; + }), + t + ); + })(), + j = (function () { + function t(t) { + (this.field = t.field), + (this.fields = t.fields), + (this.title = t.title), + (this.text = t.text), + (this.tid = t.tid), + (this.data = t.data), + (this.styler = t.styler), + (this.formatter = t.formatter), + (this.type = t.type), + (this.onRendered = t.onRendered), + (this.options = t.options); + } + + return ( + (t.prototype.getText = function (t) { + return t ? this.title || this.text || "" : this.text || this.title || ""; + }), + (t.prototype.getData = function () { + return this.data; + }), + (t.prototype.createPrintElement = function (t) { + var e = {}; + return $.extend(e, t || {}), W.createPrintElement(this, e); + }), + (t.prototype.getPrintElementTypeEntity = function () { + return new c({ + title: this.title, + type: this.type + }); + }), + (t.prototype.getFields = function () { + return this.fields; + }), + (t.prototype.getOptions = function () { + return this.options || {}; + }), + t + ); + })(), + U = n(16), + K = n(12), + G = (function () { + var _t14 = function t(e, n) { + return (_t14 = + Object.setPrototypeOf || + (_instanceof( + { + __proto__: [] + }, + Array + ) && + function (t, e) { + t.__proto__ = e; + }) || + function (t, e) { + for (var n in e) { + e.hasOwnProperty(n) && (t[n] = e[n]); + } + })(e, n); + }; + + return function (e, n) { + function i() { + this.constructor = e; + } + + _t14(e, n), (e.prototype = null === n ? Object.create(n) : ((i.prototype = n.prototype), new i())); + }; + })(), + q = (function (t) { + function e(e) { + var n = t.call(this, e) || this; + (e = e || {}).columns + ? ((n.columns = []), + e.columns.forEach(function (t) { + n.columns.push(new K.a(t)); + })) + : (n.columns = [ + new K.a({ + columns: [ + new u.a({ + width: 100 + }), + new u.a({ + width: 100 + }) + ] + }) + ]); + return (n.lHeight = e.lHeight), (n.autoCompletion = e.autoCompletion), (n.tableFooterRepeat = e.tableFooterRepeat), n; + } + + return ( + G(e, t), + (e.prototype.getPrintElementOptionEntity = function () { + var e = t.prototype.getPrintElementOptionEntity.call(this); + return ( + (e.columns = []), + this.columns.forEach(function (t) { + e.columns.push(t.getPrintElementOptionEntity()); + }), + e + ); + }), + e + ); + })(g.a), + X = n(7), + Y = (function () { + var _t15 = function t(e, n) { + return (_t15 = + Object.setPrototypeOf || + (_instanceof( + { + __proto__: [] + }, + Array + ) && + function (t, e) { + t.__proto__ = e; + }) || + function (t, e) { + for (var n in e) { + e.hasOwnProperty(n) && (t[n] = e[n]); + } + })(e, n); + }; + + return function (e, n) { + function i() { + this.constructor = e; + } + + _t15(e, n), (e.prototype = null === n ? Object.create(n) : ((i.prototype = n.prototype), new i())); + }; + })(), + J = (function (t) { + function e(e, n) { + var i = t.call(this, e) || this; + return (i.options = new q(n)), i.options.setDefault(new q(p.a.instance.tableCustom.default).getPrintElementOptionEntity()), (i.columns = i.options.columns), i; + } + + return ( + Y(e, t), + (e.prototype.updateDesignViewFromOptions = function () { + if (this.designTarget) { + this.css(this.designTarget, this.getData()); + var t = this.designTarget.find(".hiprint-printElement-table-content"), + e = this.getHtml(this.designPaper); + t.html(""), t.append(e[0].target.find(".hiprint-printElement-tableTarget")), this.setHiReizeable(); + } + }), + (e.prototype.getDesignTarget = function (t) { + var e = this; + return ( + (this.designTarget = this.getHtml(t)[0].target), + (this.designPaper = t), + this.designTarget.click(function () { + o.a.event.trigger(e.getPrintElementSelectEventKey(), { + printElement: e + }); + }), + this.designTarget.find("td").hidroppable({ + accept: ".rn-draggable-item", + onDrop: function onDrop(t, e) {}, + onDragEnter: function onDragEnter(t, e) { + $(e).removeClass("rn-draggable-item"); + }, + onDragLeave: function onDragLeave(t, e) { + $(e).addClass("rn-draggable-item"); + } + }), + this.designTarget + ); + }), + (e.prototype.getConfigOptions = function () { + return p.a.instance.tableCustom; + }), + (e.prototype.createTarget = function (t, e, n) { + var i = $( + '
          ' + ); + return i.find(".hiprint-printElement-table-content").append(this.getTableHtml(e, n)), i; + }), + (e.prototype.getTableHtml = function (t, e) { + var n = $('
          '); + return ( + n.append(X.a.createTableHead(this.columns, this.options.getWidth())), + n.append(X.a.createTableRow(this.columns, t, this.options, this.printElementType)), + this.printElementType.footerFormatter && + ("no" == this.options.tableFooterRepeat || + ("last" == this.options.tableFooterRepeat + ? n.find("tbody").append(X.a.createTableFooter(this.printElementType.columns, t, this.options, this.printElementType, e, t).html()) + : n.append(X.a.createTableFooter(this.printElementType.columns, t, this.options, this.printElementType, e, [])))), + n + ); + }), + (e.prototype.getHtml = function (t, e) { + this.setCurrenttemplateData(e), this.createTempContainer(); + var n = this.getPaperHtmlResult(t, e); + return this.removeTempContainer(), n; + }), + (e.prototype.getPaperHtmlResult = function (t, e) { + var n = [], + i = this.getData(e), + o = this.getTableHtml(i, e), + r = this.createTarget(this.printElementType.title, [], e); + e ? this.updateTargetWidth(r) : this.updateTargetSize(r), this.css(r, i), this.css(o, i), this.getTempContainer().html(""), this.getTempContainer().append(r); + + for (var a, p = this.getBeginPrintTopInPaperByReferenceElement(t), s = 0, l = !1; !l; ) { + var u = 0, + d = t.getPaperFooter(s); + 0 == s && + p > d && + ((p = p - d + t.paperHeader), + n.push( + new P.a({ + target: void 0, + printLine: void 0 + }) + ), + s++, + (u = t.getContentHeight(s) - (p - t.paperHeader)), + (d = t.getPaperFooter(s))); + var c = n.length > 0 ? n[n.length - 1].target : void 0, + h = this.getRowsInSpecificHeight(u > 0 ? u : 0 == s ? d - p : t.getContentHeight(s), r, o, s, c, e); + l = h.isEnd; + var f = void 0; + h.target && (h.target.css("left", this.options.displayLeft()), (h.target[0].height = "")), + 0 == s || u > 0 + ? (h.target && ((a = p), h.target.css("top", p + "pt")), + (f = l && null != this.options.lHeight ? p + (h.height > this.options.lHeight ? h.height : this.options.lHeight) : p + h.height)) + : (h.target && ((a = t.paperHeader), h.target.css("top", t.paperHeader + "pt")), (f = t.paperHeader + h.height)), + n.push( + new P.a({ + target: h.target, + printLine: f, + referenceElement: new E.a({ + top: this.options.getTop(), + left: this.options.getLeft(), + height: this.options.getHeight(), + width: this.options.getWidth(), + beginPrintPaperIndex: t.index, + bottomInLastPaper: f, + printTopInPaper: a + }) + }) + ), + s++; + } + + return n; + }), + (e.prototype.getRowsInSpecificHeight = function (t, e, n, i, r, a) { + var p = void 0, + s = n.find("tbody"), + l = o.a.pt.toPx(t); + e.find("tbody").html(""); + + for (var u = e.outerHeight(), d = []; ; ) { + if (u <= l) { + if (0 == s.find("tr").length) { + a && this.options.autoCompletion && (this.autoCompletion(l, e), (u = e.outerHeight())), + (p = { + target: e.clone(), + length: e.find("tbody tr").length, + height: o.a.px.toPt(u), + isEnd: !0 + }), + 0 == e.find("tbody tr").length && + r && + (p = { + target: void 0, + length: 0, + height: 0, + isEnd: !0 + }); + } else { + var c = s.find("tr:lt(1)"); + e.find("tbody").append(c), (u = e.outerHeight()); + var h = c.data("rowData"); + d.push(h), + u > l && + (s.prepend(c), + d.pop(), + (u = e.outerHeight()), + (p = { + target: e.clone(), + length: e.find("tbody tr").length, + height: o.a.px.toPt(u), + isEnd: !1 + })); + } + } else + p = { + target: void 0, + length: 0, + height: 0, + isEnd: !1 + }; + + if (p) { + this.printElementType.footerFormatter && + e.find("tfoot") && + p.target.find("tfoot").html(X.a.createTableFooter(this.printElementType.columns, this.getData(a), this.options, this.printElementType, a, d).html()); + break; + } + } + + return p; + }), + (e.prototype.getData = function (t) { + if (!t) return [{}]; + var e = t[this.getField()]; + return e ? JSON.parse(JSON.stringify(e)) : []; + }), + (e.prototype.autoCompletion = function (t, e) { + for (var n, i = this.getEmptyRowTarget(), o = e.outerHeight(); t > o; ) { + (n = i.clone()), e.find("tbody").append(n), (o = e.outerHeight()); + } + + n && n.remove(); + }), + (e.prototype.getEmptyRowTarget = function () { + return X.a.createEmptyRowTarget(this.columns); + }), + (e.prototype.onResize = function (e, n, i, o, r) { + t.prototype.updateSizeAndPositionOptions.call(this, r, o, i, n), X.a.resizeTableCellWidth(this.designTarget, this.columns, this.options.getWidth()); + }), + (e.prototype.getReizeableShowPoints = function () { + return ["s", "e"]; + }), + (e.prototype.design = function (t, e) { + var n = this; + this.designTarget.hidraggable({ + handle: this.designTarget.find(".hiprint-printElement-table-handle"), + axis: n.options.axis && t && t.axisEnabled ? n.options.axis : void 0, + onDrag: function onDrag(t, i, o) { + n.updateSizeAndPositionOptions(i, o), n.createLineOfPosition(e); + }, + moveUnit: "pt", + minMove: p.a.instance.movingDistance, + onBeforeDrag: function onBeforeDrag(t) { + (s.a.instance.draging = !0), n.createLineOfPosition(e); + }, + onStopDrag: function onStopDrag(t) { + (s.a.instance.draging = !1), n.removeLineOfPosition(); + } + }), + this.setHiReizeable(), + this.designTarget.hireizeable({ + showPoints: n.getReizeableShowPoints(), + noContainer: !0, + onBeforeResize: function onBeforeResize() { + s.a.instance.draging = !0; + }, + onResize: function onResize(t, i, o, r, a) { + n.onResize(t, i, o, r, a), n.hitable.updateColumnGrips(), n.createLineOfPosition(e); + }, + onStopResize: function onStopResize() { + (s.a.instance.draging = !1), n.removeLineOfPosition(); + } + }), + this.bingKeyboardMoveEvent(this.designTarget, e); + }), + (e.prototype.setHiReizeable = function () { + var t = this; + (this.hitable = new U.a({ + table: this.designTarget.find("table"), + rows: this.columns, + resizeRow: !1, + resizeColumn: !0, + trs: $(this.designTarget).find("tbody tr"), + handle: this.designTarget.find("table thead"), + columnDisplayEditable: !0, + columnDisplayIndexEditable: !0, + columnResizable: !0, + columnAlignEditable: !0, + isEnableEdit: !0, + isEnableEditText: !0, + isEnableEditField: !0, + isEnableContextMenu: !0, + isEnableInsertRow: !0, + isEnableDeleteRow: !0, + isEnableInsertColumn: !0, + isEnableDeleteColumn: !0, + isEnableMergeCell: !0 + })), + o.a.event.on("updateTable" + this.hitable.id, function () { + t.updateDesignViewFromOptions(); + }); + }), + e + ); + })(f.a), + Q = (function () { + var _t16 = function t(e, n) { + return (_t16 = + Object.setPrototypeOf || + (_instanceof( + { + __proto__: [] + }, + Array + ) && + function (t, e) { + t.__proto__ = e; + }) || + function (t, e) { + for (var n in e) { + e.hasOwnProperty(n) && (t[n] = e[n]); + } + })(e, n); + }; + + return function (e, n) { + function i() { + this.constructor = e; + } + + _t16(e, n), (e.prototype = null === n ? Object.create(n) : ((i.prototype = n.prototype), new i())); + }; + })(), + Z = (function (t) { + function e(e) { + return t.call(this, e) || this; + } + + return ( + Q(e, t), + (e.prototype.createPrintElement = function (t) { + return new J(this, t); + }), + e + ); + })(h), + tt = (function () { + var _t17 = function t(e, n) { + return (_t17 = + Object.setPrototypeOf || + (_instanceof( + { + __proto__: [] + }, + Array + ) && + function (t, e) { + t.__proto__ = e; + }) || + function (t, e) { + for (var n in e) { + e.hasOwnProperty(n) && (t[n] = e[n]); + } + })(e, n); + }; + + return function (e, n) { + function i() { + this.constructor = e; + } + + _t17(e, n), (e.prototype = null === n ? Object.create(n) : ((i.prototype = n.prototype), new i())); + }; + })(), + et = (function (t) { + function e(e) { + return t.call(this, e) || this; + } + + return ( + tt(e, t), + (e.prototype.createPrintElement = function (t) { + var e = {}; + return $.extend(e, t || {}), W.createPrintElement(this, e); + }), + (e.prototype.getPrintElementTypeEntity = function () { + return new c({ + title: this.title, + type: this.type + }); + }), + e + ); + })(j), + nt = (function () { + function t() {} + + return ( + (t.createPrintElementType = function (t) { + return (t.type = t.type || "text"), "text" == t.type ? new et(t) : "table" == t.type ? new h(t) : "tableCustom" == t.type ? new Z(t) : new j(t); + }), + t + ); + })(), + it = (function () { + function t() {} + + return ( + (t.getElementTypeGroups = function (e) { + var n = t.formatterModule(e); + return a.instance[n] || []; + }), + (t.getElementType = function (t, e) { + if (t) return a.instance.getElementType(t); + nt.createPrintElementType({ + type: e + }); + }), + (t.build = function (e, n) { + var i = t.formatterModule(n), + o = new l().createPrintElementTypeHtml(e, this.getElementTypeGroups(i)); + this.enableDrag(o); + }), + (t.buildByHtml = function (t) { + this.enableDrag(t); + }), + (t.enableDrag = function (e) { + e.hidraggable({ + revert: !0, + proxy: function proxy(t) { + var e = s.a.instance.getDragingPrintElement(), + n = e.printElement.getProxyTarget(e.printElement.printElementType.getOptions()); + return n.appendTo("body"), n.css("z-index", "9999"), n; + }, + moveUnit: "pt", + minMove: 4, + onBeforeDrag: function onBeforeDrag(e) { + s.a.instance.draging = !0; + var n = t.getElementType($(e.data.target).attr("tid"), $(e.data.target).attr("ptype")); + return s.a.instance.setDragingPrintElement(n.createPrintElement()), !0; + }, + onDrag: function onDrag(t, e, n) { + s.a.instance.getDragingPrintElement().updatePosition(e, n); + }, + onStopDrag: function onStopDrag(t) { + s.a.instance.draging = !1; + } + }); + }), + (t.formatterModule = function (t) { + return t || "_default"; + }), + t + ); + })(), + ot = (function () { + return function (t, e) { + var n = this; + (this.name = t), + (this.printElementTypes = []), + e.forEach(function (t) { + n.printElementTypes.push(nt.createPrintElementType(t)); + }); + }; + })(), + rt = (function () { + return function (t) { + if (((this.index = t.index), (this.paperType = t.paperType), this.paperType)) { + var e = s.a.instance[this.paperType]; + t.height ? ((this.height = t.height), (this.width = t.width)) : ((this.height = e.height), (this.width = e.width)); + } else (this.height = t.height), (this.width = t.width); + + (this.paperHeader = t.paperHeader || 0), + (this.paperFooter = t.paperFooter || o.a.mm.toPt(this.height)), + (this.printElements = t.printElements || []), + (this.paperNumberLeft = t.paperNumberLeft), + (this.paperNumberTop = t.paperNumberTop), + (this.paperNumberDisabled = t.paperNumberDisabled), + (this.paperNumberFormat = t.paperNumberFormat), + (this.panelPaperRule = t.panelPaperRule), + (this.rotate = t.rotate || void 0), + (this.firstPaperFooter = t.firstPaperFooter), + (this.evenPaperFooter = t.evenPaperFooter), + (this.oddPaperFooter = t.oddPaperFooter), + (this.lastPaperFooter = t.lastPaperFooter), + (this.topOffset = t.topOffset), + (this.fontFamily = t.fontFamily), + (this.leftOffset = t.leftOffset), + (this.orient = t.orient); + }; + })(), + at = (function () { + function t(t, e, n, i) { + (this.startX = this.minX = t), (this.startY = this.minY = e), (this.maxX = t), (this.maxY = e), (this.lastLeft = n), (this.lastTop = i); + } + + return ( + (t.prototype.updateRect = function (t, e) { + (this.minX = this.startX < t ? this.startX : t), + (this.minY = this.startY < e ? this.startY : e), + (this.maxX = this.startX < t ? t : this.startX), + (this.maxY = this.startY < e ? e : this.startY); + }), + (t.prototype.updatePositionByMultipleSelect = function (t, e) { + null != t && (this.lastLeft = this.lastLeft + t), + null != e && (this.lastTop = this.lastTop + e), + this.target.css({ + left: this.lastLeft + "pt", + top: this.lastTop + "pt" + }); + }), + t + ); + })(), + pt = (function () { + function t(t, e) { + (this.templateId = e), + (this.index = t.index), + (this.width = t.width), + (this.height = t.height), + (this.paperType = t.paperType), + (this.paperHeader = t.paperHeader), + (this.paperFooter = t.paperFooter), + this.initPrintElements(t.printElements), + (this.paperNumberLeft = t.paperNumberLeft), + (this.paperNumberTop = t.paperNumberTop), + (this.paperNumberDisabled = t.paperNumberDisabled), + (this.paperNumberFormat = t.paperNumberFormat), + (this.panelPaperRule = t.panelPaperRule), + (this.firstPaperFooter = t.firstPaperFooter), + (this.evenPaperFooter = t.evenPaperFooter), + (this.oddPaperFooter = t.oddPaperFooter), + (this.lastPaperFooter = t.lastPaperFooter), + (this.topOffset = t.topOffset), + (this.leftOffset = t.leftOffset), + (this.fontFamily = t.fontFamily), + (this.orient = t.orient), + (this.target = this.createTarget()), + (this.rotate = t.rotate); + } + + return ( + (t.prototype.design = function (t) { + var e = this; + this.orderPrintElements(), + (this.designPaper = this.createNewPage(0)), + this.target.html(""), + this.target.append(this.designPaper.getTarget()), + this.droppablePaper(this.designPaper), + this.designPaper.design(t), + this.designPaper.subscribePaperBaseInfoChanged(function (t) { + (e.paperHeader = t.paperHeader), + (e.paperFooter = t.paperFooter), + (e.paperNumberLeft = t.paperNumberLeft), + (e.paperNumberTop = t.paperNumberTop), + (e.paperNumberDisabled = t.paperNumberDisabled), + (e.paperNumberFormat = t.paperNumberFormat); + }), + this.printElements.forEach(function (n) { + e.appendDesignPrintElement(e.designPaper, n), n.design(t, e.designPaper); + }), + this.target.bind("click.hiprint", function (t) { + o.a.event.trigger("BuildCustomOptionSettingEventKey_" + e.templateId, { + options: { + panelPaperRule: e.panelPaperRule, + firstPaperFooter: e.firstPaperFooter, + evenPaperFooter: e.evenPaperFooter, + oddPaperFooter: e.oddPaperFooter, + lastPaperFooter: e.lastPaperFooter, + leftOffset: e.leftOffset, + topOffset: e.topOffset, + fontFamily: e.fontFamily, + orient: e.orient, + paperNumberFormat: e.paperNumberFormat + }, + callback: function callback(t) { + (e.panelPaperRule = t.panelPaperRule), + (e.firstPaperFooter = t.firstPaperFooter), + (e.evenPaperFooter = t.evenPaperFooter), + (e.oddPaperFooter = t.oddPaperFooter), + (e.lastPaperFooter = t.lastPaperFooter), + (e.leftOffset = t.leftOffset), + (e.topOffset = t.topOffset), + (e.fontFamily = t.fontFamily), + (e.orient = t.orient), + (e.paperNumberFormat = t.paperNumberFormat), + e.designPaper.setOffset(e.leftOffset, e.topOffset), + e.css(e.target); + } + }); + }), + this.bindBatchMoveElement(); + }), + (t.prototype.css = function (t) { + this.fontFamily && t.css("fontFamily", this.fontFamily); + }), + (t.prototype.getHtml = function (t, e, n, i, o) { + var r = this; + this.orderPrintElements(); + var a, + p = n || [], + s = i || this, + l = void 0; + + if ( + (i + ? ((l = p[p.length - 1]), + (a = l.getPanelTarget()), + l.updateReferenceElement( + new E.a({ + top: this.paperHeader, + left: 0, + height: 0, + width: 0, + bottomInLastPaper: l.referenceElement.bottomInLastPaper, + beginPrintPaperIndex: p.length - 1, + printTopInPaper: l.referenceElement.bottomInLastPaper, + endPrintPaperIndex: p.length - 1 + }) + )) + : ((a = s.createTarget()), (l = s.createNewPage(p.length)), p.push(l), a.append(l.getTarget())), + this.printElements + .filter(function (t) { + return !t.isFixed() && !t.isHeaderOrFooter(); + }) + .forEach(function (e) { + var n = [], + i = p[p.length - 1]; + i.referenceElement.isPositionLeftOrRight(e.options.getTop()) + ? ((l = p[i.referenceElement.beginPrintPaperIndex]), (n = e.getHtml(l, t))) + : ((l = p[i.referenceElement.endPrintPaperIndex]), (n = e.getHtml(l, t))), + n.forEach(function (t, i) { + t.referenceElement && (t.referenceElement.endPrintPaperIndex = t.referenceElement.beginPrintPaperIndex + n.length - 1), + i > 0 && (l.index < p.length - 1 ? (l = p[l.index + 1]) : ((l = s.createNewPage(p.length, l.referenceElement)), p.push(l)), a.append(l.getTarget())), + t.target && (l.append(t.target), l.updatePrintLine(t.printLine), e.onRendered(l, t.target)), + i == n.length - 1 && t.referenceElement && l.updateReferenceElement(t.referenceElement); + }); + }), + o && + o.templates.forEach(function (t, e) { + var i = t.data || {}, + o = t.options || {}; + t.template.printPanels.forEach(function (t) { + t.getHtml(i, o, n, r); + }); + }), + !i) + ) { + if (this.lastPaperFooter) p[p.length - 1].printLine > this.lastPaperFooter && ((l = s.createNewPage(p.length, l.referenceElement)), p.push(l), a.append(l.getTarget())); + this.panelPaperRule && + ("odd" == this.panelPaperRule && p.length % 2 == 0 && ((l = s.createNewPage(p.length, l.referenceElement)), p.push(l), a.append(l.getTarget())), + "even" == this.panelPaperRule && p.length % 2 == 1 && ((l = s.createNewPage(p.length, l.referenceElement)), p.push(l), a.append(l.getTarget()))), + p.forEach(function (n) { + n.updatePaperNumber(n.index + 1, p.length, e.paperNumberToggleInEven), + r.fillPaperHeaderAndFooter(n, t, p.length), + e && (null != e.leftOffset && n.setLeftOffset(e.leftOffset), null != e.topOffset && n.setTopOffset(e.topOffset)); + }), + a.prepend(this.getPrintStyle()); + } + + return a; + }), + (t.prototype.resize = function (t, e, n, i) { + (this.width = e), (this.height = n), (this.paperType = t), (this.rotate = i), this.designPaper.resize(e, n); + }), + (t.prototype.rotatePaper = function () { + null == this.rotate && (this.rotate = !1), (this.rotate = !this.rotate), this.resize(this.paperType, this.height, this.width, this.rotate); + }), + (t.prototype.getTarget = function () { + return this.target; + }), + (t.prototype.enable = function () { + this.target.removeClass("hipanel-disable"); + }), + (t.prototype.disable = function () { + this.target.addClass("hipanel-disable"); + }), + (t.prototype.getPanelEntity = function (t) { + var e = []; + return ( + this.printElements.forEach(function (n) { + e.push(n.getPrintElementEntity(t)); + }), + new rt({ + index: this.index, + width: this.width, + height: this.height, + paperType: this.paperType, + paperHeader: this.paperHeader, + paperFooter: this.paperFooter, + paperNumberDisabled: !!this.paperNumberDisabled || void 0, + paperNumberFormat: this.paperNumberFormat ? this.paperNumberFormat : void 0, + panelPaperRule: this.panelPaperRule ? this.panelPaperRule : void 0, + paperNumberLeft: this.paperNumberLeft, + paperNumberTop: this.paperNumberTop, + printElements: e, + rotate: this.rotate, + firstPaperFooter: this.firstPaperFooter, + evenPaperFooter: this.evenPaperFooter, + oddPaperFooter: this.oddPaperFooter, + lastPaperFooter: this.lastPaperFooter, + topOffset: this.topOffset, + fontFamily: this.fontFamily, + orient: this.orient, + leftOffset: this.leftOffset + }) + ); + }), + (t.prototype.createTarget = function () { + var t = $('
          '); + return this.css(t), t; + }), + (t.prototype.droppablePaper = function (t) { + var e = this; + t.getTarget().hidroppable({ + accept: ".ep-draggable-item", + onDrop: function onDrop(n, i) { + var r = s.a.instance.getDragingPrintElement(), + a = r.printElement; + a.updateSizeAndPositionOptions(e.mathroundToporleft(r.left - o.a.px.toPt(e.target.offset().left)), e.mathroundToporleft(r.top - o.a.px.toPt(e.target.offset().top))), + a.setTemplateId(e.templateId), + a.setPanel(e), + e.appendDesignPrintElement(e.designPaper, a, !0), + e.printElements.push(a), + a.design(void 0, t); + } + }); + }), + (t.prototype.initPrintElements = function (t) { + var e = this; + (this.printElements = []), + t && + t.forEach(function (n) { + var i; + + if ((i = n.printElementType ? nt.createPrintElementType(n.printElementType) : a.instance.getElementType(n.tid))) { + var o = i.createPrintElement(n.options); + o.setTemplateId(e.templateId), o.setPanel(e), e.printElements.push(o); + } else console.log("miss " + JSON.stringify(t)); + }); + }), + (t.prototype.mathroundToporleft = function (t) { + var e = p.a.instance.movingDistance; + return Math.round(t / e) * e; + }), + (t.prototype.appendDesignPrintElement = function (t, e, n) { + e.setCurrenttemplateData(void 0); + var i = e.getDesignTarget(t); + i.addClass("design"), n && e.initSizeByHtml(i), t.append(i); + }), + (t.prototype.createNewPage = function (t, e) { + var n = new T( + this.templateId, + this.width, + this.height, + this.paperHeader, + this.paperFooter, + this.paperNumberLeft, + this.paperNumberTop, + this.paperNumberDisabled, + this.paperNumberFormat, + t, + e + ); + return n.setFooter(this.firstPaperFooter, this.evenPaperFooter, this.oddPaperFooter, this.lastPaperFooter), n.setOffset(this.leftOffset, this.topOffset), n; + }), + (t.prototype.orderPrintElements = function () { + (this.printElements = o.a.orderBy(this.printElements, function (t) { + return t.options.getLeft(); + })), + (this.printElements = o.a.orderBy(this.printElements, function (t) { + return t.options.getTop(); + })); + }), + (t.prototype.fillPaperHeaderAndFooter = function (t, e, n) { + this.printElements + .filter(function (t) { + return t.isFixed() || t.isHeaderOrFooter(); + }) + .forEach(function (i) { + if ((i.isFixed(), i.showInPage(t.index, n))) { + var o = i.getHtml(t, e); + o.length && t.append(o[0].target); + } + }); + }), + (t.prototype.clear = function () { + this.printElements.forEach(function (t) { + t.designTarget && t.designTarget.length && t.designTarget.remove(); + }), + (this.printElements = []); + }), + (t.prototype.insertPrintElementToPanel = function (t) { + var e = this.getPrintElementTypeByEntity(t); + + if (e) { + var n = e.createPrintElement(t.options); + n.setTemplateId(this.templateId), n.setPanel(this), this.printElements.push(n); + } + }), + (t.prototype.addPrintText = function (t) { + (t.printElementType = t.printElementType || {}), (t.printElementType.type = "text"), this.insertPrintElementToPanel(t); + }), + (t.prototype.addPrintHtml = function (t) { + (t.printElementType = t.printElementType || {}), (t.printElementType.type = "html"), this.insertPrintElementToPanel(t); + }), + (t.prototype.addPrintTable = function (t) { + if (((t.printElementType = t.printElementType || {}), (t.printElementType.type = "table"), t.options && t.options.columns)) { + var e = $.extend({}, t.options.columns); + (t.printElementType.columns = e.columns), (e.columns = void 0); + } + + this.insertPrintElementToPanel(t); + }), + (t.prototype.addPrintImage = function (t) { + (t.printElementType = t.printElementType || {}), (t.printElementType.type = "image"), this.insertPrintElementToPanel(t); + }), + (t.prototype.addPrintLongText = function (t) { + (t.printElementType = t.printElementType || {}), (t.printElementType.type = "longText"), this.insertPrintElementToPanel(t); + }), + (t.prototype.addPrintVline = function (t) { + (t.printElementType = t.printElementType || {}), (t.printElementType.type = "vline"), this.insertPrintElementToPanel(t); + }), + (t.prototype.addPrintHline = function (t) { + (t.printElementType = t.printElementType || {}), (t.printElementType.type = "hline"), this.insertPrintElementToPanel(t); + }), + (t.prototype.addPrintRect = function (t) { + (t.printElementType = t.printElementType || {}), (t.printElementType.type = "rect"), this.insertPrintElementToPanel(t); + }), + (t.prototype.addPrintOval = function (t) { + (t.printElementType = t.printElementType || {}), (t.printElementType.type = "oval"), this.insertPrintElementToPanel(t); + }), + (t.prototype.getPrintElementTypeByEntity = function (t) { + var e; + return (e = t.tid ? a.instance.getElementType(t.tid) : nt.createPrintElementType(t.printElementType)) || console.log("miss " + JSON.stringify(t)), e; + }), + (t.prototype.getPrintStyle = function () { + return ( + " \n " + ); + }), + (t.prototype.getPrintSizeStyle = function () { + return this.paperType + ? "size:" + this.paperType + " " + (this.height > this.width ? "portrait" : "landscape") + ";" + : "size:" + this.width + "mm " + this.height + "mm " + (this.orient ? (1 == this.orient ? "portrait" : "landscape") : "") + ";"; + }), + (t.prototype.deletePrintElement = function (t) { + var e = this; + this.printElements.filter(function (n, i) { + n.id == t.id && (t.delete(), e.printElements.splice(i, 1)); + }); + }), + (t.prototype.getElementByTid = function (t) { + return this.printElements + .filter(function (e) { + return e.printElementType.tid === t; + }) + .map(function (t, e) { + return t; + }); + }), + (t.prototype.getElementByName = function (t) { + return this.printElements + .filter(function (e) { + return e.options.name === t; + }) + .map(function (t, e) { + return t; + }); + }), + (t.prototype.getFieldsInPanel = function () { + var t = []; + return ( + this.printElements.forEach(function (e) { + e.options && e.options.field ? t.push(e.options.field) : e.printElementType.field && t.push(e.printElementType.field); + }), + t + ); + }), + (t.prototype.bindBatchMoveElement = function () { + var t = this; + this.designPaper + .getTarget() + .on("mousemove", function (e) { + s.a.instance.draging || (1 === e.buttons && (t.mouseRect.updateRect(e.pageX, e.pageY), t.updateRectPanel(t.mouseRect))); + }) + .on("mousedown", function (e) { + s.a.instance.draging || + (t.mouseRect && t.mouseRect.target && t.mouseRect.target.remove(), + 1 === e.buttons && + (t.mouseRect = new at( + e.pageX, + e.pageY, + s.a.instance.dragLengthCNum(e.pageX - t.designPaper.getTarget().offset().left, p.a.instance.movingDistance), + s.a.instance.dragLengthCNum(e.pageY - t.designPaper.getTarget().offset().top, p.a.instance.movingDistance) + ))); + }); + }), + (t.prototype.getElementInRect = function (t) { + var e = []; + return ( + this.printElements.forEach(function (n) { + n.inRect(t) && e.push(n); + }), + e + ); + }), + (t.prototype.updateRectPanel = function (t) { + var e = this, + n = this.designPaper.getTarget(); + this.mouseRect.target || + ((this.mouseRect.target = $('
          ')), + n.find(".hiprint-printPaper-content").append(this.mouseRect.target), + this.mouseRect.target.focus(), + this.bingKeyboardMoveEvent(this.mouseRect.target), + this.mouseRect.target.hidraggable({ + onDrag: function onDrag(t, n, i) { + (e.mouseRect.lastLeft = e.mouseRect.lastLeft ? e.mouseRect.lastLeft : n), + (e.mouseRect.lastTop = e.mouseRect.lastTop ? e.mouseRect.lastTop : i), + (e.mouseRect.mouseRectSelectedElement || []).forEach(function (t) { + t.updatePositionByMultipleSelect(n - e.mouseRect.lastLeft, i - e.mouseRect.lastTop); + }), + (e.mouseRect.lastLeft = n), + (e.mouseRect.lastTop = i); + }, + moveUnit: "pt", + minMove: p.a.instance.movingDistance, + onBeforeDrag: function onBeforeDrag(t) { + e.mouseRect.target.focus(), (s.a.instance.draging = !0), e.mouseRect.mouseRectSelectedElement || (e.mouseRect.mouseRectSelectedElement = e.getElementInRect(e.mouseRect)); + }, + onStopDrag: function onStopDrag(t) { + s.a.instance.draging = !1; + } + })), + this.mouseRect.target.css({ + height: t.maxY - t.minY + "px", + width: t.maxX - t.minX + "px", + left: t.lastLeft + "pt", + top: t.lastTop + "pt" + }); + }), + (t.prototype.bingKeyboardMoveEvent = function (t) { + var e = this; + t.attr("tabindex", "1"), + t.keydown(function (t) { + e.mouseRect.mouseRectSelectedElement || (e.mouseRect.mouseRectSelectedElement = e.getElementInRect(e.mouseRect)); + var n = e.mouseRect.mouseRectSelectedElement || []; + + switch (t.keyCode) { + case 37: + e.mouseRect.updatePositionByMultipleSelect(0 - p.a.instance.movingDistance, 0), + n.forEach(function (t) { + t.updatePositionByMultipleSelect(0 - p.a.instance.movingDistance, 0); + }), + t.preventDefault(); + break; + + case 38: + e.mouseRect.updatePositionByMultipleSelect(0, 0 - p.a.instance.movingDistance), + n.forEach(function (t) { + t.updatePositionByMultipleSelect(0, 0 - p.a.instance.movingDistance); + }), + t.preventDefault(); + break; + + case 39: + e.mouseRect.updatePositionByMultipleSelect(p.a.instance.movingDistance, 0), + n.forEach(function (t) { + t.updatePositionByMultipleSelect(p.a.instance.movingDistance, 0); + }), + t.preventDefault(); + break; + + case 40: + e.mouseRect.updatePositionByMultipleSelect(0, p.a.instance.movingDistance), + n.forEach(function (t) { + t.updatePositionByMultipleSelect(0, p.a.instance.movingDistance); + }), + t.preventDefault(); + } + }); + }), + t + ); + })(), + st = (function () { + return function (t) { + if (t) + if (t.panels) { + this.panels = []; + + for (var e = 0; e < t.panels.length; e++) { + this.panels.push(new rt(t.panels[e])); + } + } else this.panels = []; + }; + })(), + lt = n(9), + ut = (function () { + function t(t, e) { + var n = this; + (this.printElementOptionSettingPanel = {}), + (this.printTemplate = t), + (this.settingContainer = $(e)), + o.a.event.on(t.getPrintElementSelectEventKey(), function (t) { + n.buildSetting(t); + }), + o.a.event.on(t.getBuildCustomOptionSettingEventKey(), function (t) { + n.buildSettingByCustomOptions(t); + }); + } + + return ( + (t.prototype.init = function () {}), + (t.prototype.buildSetting = function (t) { + var e = this, + n = this, + i = t.printElement, + o = t.customOptionsInput; + this.lastPrintElement && + this.lastPrintElement.getPrintElementOptionItems().forEach(function (t) { + t.destroy(); + }); + (this.lastPrintElement = void 0), this.settingContainer.html(""); + var r = $('
          '); + i.getPrintElementOptionItems().forEach(function (t) { + t.submit = function (t) { + i.submitOption(); + }; + + var n = t.createTarget(i, i.options, i.printElementType); + (e.printElementOptionSettingPanel[t.name] = n), r.append(n), t.setValue(i.options[t.name], i.options, i.printElementType); + }); + var a = $(''), + p = $(''); + r.append(a), + r.append(p), + a.bind("click.submitOption", function () { + i.submitOption(); + }), + p.bind("click.deleteBtn", function () { + n.printTemplate.deletePrintElement(i); + }), + r.find(".auto-submit").change(function (t) { + i.submitOption(); + }), + r.find(".auto-submit:input").bind("keydown.submitOption", function (t) { + 13 == t.keyCode && i.submitOption(); + }), + this.settingContainer.append(r), + o && + o.forEach(function (t) { + var n = t.callback; + (t.callback = function (t) { + n && (n(t), i.submitOption()); + }), + e.buildSettingByCustomOptions(t, e.settingContainer); + }), + (this.lastPrintElement = i); + }), + (t.prototype.buildSettingByCustomOptions = function (t, e) { + var n = this; + this.lastPrintElement && + this.lastPrintElement.getPrintElementOptionItems().forEach(function (t) { + t.destroy(); + }); + this.lastPrintElement = void 0; + var i = e || this.settingContainer; + e || this.settingContainer.html(""); + var o = []; + t.optionItems + ? (o = t.optionItems) + : Object.keys(t.options).forEach(function (t) { + var e = lt.a.getItem(t); + e && o.push(e); + }); + var r = $('
          '); + t.title && + r.append( + '
          \n
          \n ' + + t.title + + "\n
          \n
          " + ), + o.forEach(function (e) { + (e.submit = function (e) { + t.callback(n.getValueByOptionItems(o)); + }), + r.append(e.createTarget(void 0, t.options, void 0)), + e.setValue(t.options[e.name], t.options, void 0); + }); + var a = $(''); + r.append(a), + a.bind("click.submitOption", function () { + t.callback(n.getValueByOptionItems(o)); + }), + r.find(".auto-submit").change(function (e) { + t.callback(n.getValueByOptionItems(o)); + }), + r.find(".auto-submit:input").bind("keydown.submitOption", function (e) { + 13 == e.keyCode && t.callback(n.getValueByOptionItems(o)); + }), + i.append(r); + }), + (t.prototype.getValueByOptionItems = function (t) { + var e = {}; + return ( + t.forEach(function (t) { + e[t.name] = t.getValue(); + }), + e + ); + }), + t + ); + })(), + dt = (function () { + function t(t, e) { + (this.paginationContainer = t), (this.jqPaginationContainer = $(this.paginationContainer)), (this.template = e); + } + + return ( + (t.prototype.buildPagination = function (t) { + var e = this.template.getPaneltotal(), + n = this; + this.jqPaginationContainer.html(""); + + for ( + var i = $('
            '), + o = function o() { + var t = r, + e = $("
          • " + (t + 1) + 'x
          • '); + e.find("span").click(function () { + n.template.selectPanel(t), e.removeClass("selected"), $(this).parent("li").addClass("selected"); + }), + e.find("a").click(function () { + n.template.deletePanel(t), n.buildPagination(); + }), + i.append(e); + }, + r = 0; + r < e; + r++ + ) { + o(); + } + + var a = $("
          • +
          • "); + i.append(a), + this.jqPaginationContainer.append(i), + a.click(function () { + n.template.addPrintPanel(void 0, !0), n.buildPagination(); + }); + }), + t + ); + })(), + ct = (function () { + function t(t) { + var e = this; + (this.tempimageBase64 = {}), (this.id = s.a.instance.guid()), s.a.instance.setPrintTemplateById(this.id, this); + var n = t || {}; + this.printPanels = []; + var i = new st(n.template || []); + n.template && + i.panels.forEach(function (t) { + e.printPanels.push(new pt(t, e.id)); + }), + n.fields && (this.fields = n.fields), + n.settingContainer && new ut(this, n.settingContainer), + n.paginationContainer && ((this.printPaginationCreator = new dt(n.paginationContainer, this)), this.printPaginationCreator.buildPagination()), + this.initAutoSave(); + } + + return ( + (t.prototype.design = function (t, e) { + var n = this; + + if ((e || (e = {}), 0 == this.printPanels.length)) { + var i = this.createDefaultPanel(); + this.printPanels.push(i); + } + + if (!t) throw new Error("options.container can not be empty"); + this.createContainer(t), + this.printPanels.forEach(function (t, i) { + n.container.append(t.getTarget()), i > 0 && t.disable(), t.design(e); + }), + this.selectPanel(0); + }), + (t.prototype.getSimpleHtml = function (t, e) { + var n = this; + e || (e = {}); + var i = $('
            '); + t && t.constructor === Array + ? t.forEach(function (t) { + t && + n.printPanels.forEach(function (n, o) { + i.append(n.getHtml(t, e)); + }); + }) + : this.printPanels.forEach(function (n, o) { + i.append(n.getHtml(t, e)); + }); + return e && e.imgToBase64 && this.transformImg(i.find("img")), i; + }), + (t.prototype.getHtml = function (t, e) { + return t || (t = {}), this.getSimpleHtml(t, e); + }), + (t.prototype.getJointHtml = function (t, e, n) { + var i = $('
            '), + o = []; + return ( + this.printPanels.forEach(function (r, a) { + i.append(r.getHtml(t, e, o, void 0, n)); + }), + i + ); + }), + (t.prototype.setPaper = function (t, e) { + if (/^(([1-9][0-9]*)|(([0]\.\d{1,2}|[1-9][0-9]*\.\d{1,2})))$/.test(t)) this.editingPanel.resize(void 0, parseFloat(t), parseFloat(e), !1); + else { + var n = s.a.instance[t]; + if (!n) throw new Error("not found pagetype:" + (t || "")); + this.editingPanel.resize(t, n.width, n.height, !1); + } + }), + (t.prototype.rotatePaper = function () { + this.editingPanel.rotatePaper(); + }), + (t.prototype.addPrintPanel = function (t, e) { + var n = t ? new pt(new rt(t), this.id) : this.createDefaultPanel(); + return t && (t.index = this.printPanels.length), e && (this.container.append(n.getTarget()), n.design()), this.printPanels.push(n), e && this.selectPanel(n.index), n; + }), + (t.prototype.selectPanel = function (t) { + var e = this; + this.printPanels.forEach(function (n, i) { + t == i ? (n.enable(), (e.editingPanel = n)) : n.disable(); + }); + }), + (t.prototype.deletePanel = function (t) { + this.printPanels[t].clear(), this.printPanels[t].getTarget().remove(), this.printPanels.splice(t, 1); + }), + (t.prototype.getPaneltotal = function () { + return this.printPanels.length; + }), + (t.prototype.createDefaultPanel = function () { + return new pt( + new rt({ + index: this.printPanels.length, + paperType: "A4" + }), + this.id + ); + }), + (t.prototype.createContainer = function (t) { + t ? ((this.container = $(t)), this.container.addClass("hiprint-printTemplate")) : (this.container = $('
            ')); + }), + (t.prototype.getJsonTid = function () { + var t = []; + return ( + this.printPanels.forEach(function (e) { + e.getPanelEntity().printElements.length && t.push(e.getPanelEntity()); + }), + new st({ + panels: t + }) + ); + }), + (t.prototype.getJson = function () { + var t = []; + return ( + this.printPanels.forEach(function (e) { + t.push(e.getPanelEntity(!0)); + }), + new st({ + panels: t + }) + ); + }), + (t.prototype.getPrintElementSelectEventKey = function () { + return "PrintElementSelectEventKey_" + this.id; + }), + (t.prototype.getBuildCustomOptionSettingEventKey = function () { + return "BuildCustomOptionSettingEventKey_" + this.id; + }), + (t.prototype.clear = function () { + this.printPanels.forEach(function (t) { + if ((t.clear(), t.index > 0)) { + var e = t.getTarget(); + e && e.length && e.remove(); + } + }), + (this.printPanels = [this.printPanels[0]]), + this.printPaginationCreator && this.printPaginationCreator.buildPagination(); + }), + (t.prototype.getPaperType = function (t) { + return null == t && (t = 0), this.printPanels[0].paperType; + }), + (t.prototype.getOrient = function (t) { + return null == t && (t = 0), this.printPanels[t].height > this.printPanels[t].width ? 1 : 2; + }), + (t.prototype.getPrintStyle = function (t) { + return this.printPanels[t].getPrintStyle(); + }), + (t.prototype.print = function (t, e) { + t || (t = {}), this.getHtml(t, e).hiwprint(); + }), + (t.prototype.print2 = function (t, e) { + if ((t || (t = {}), e || (e = {}), this.clientIsOpened())) { + var n = this, + i = 0, + o = {}, + r = $("link[media=print]").length > 0 ? $("link[media=print]") : $("link"); + r.each(function (a, p) { + var s = new XMLHttpRequest(); + s.open("GET", $(p).attr("href")), + (s.onreadystatechange = function () { + if (4 === s.readyState && 200 === s.status && ((o[a + ""] = '"), ++i == r.length)) { + for (var p = "", l = 0; l < r.length; l++) { + p += o[l + ""]; + } + + n.sentToClient(p, t, e); + } + }), + s.send(); + }); + } else alert("连接客户端失败"); + }), + (t.prototype.imageToBase64 = function (t) { + var e = $(t).attr("src"); + if (-1 == e.indexOf("base64")) + try { + if (!this.tempimageBase64[e]) { + var n = document.createElement("canvas"), + i = new Image(); + (i.src = t.attr("src")), (n.width = i.width), (n.height = i.height), n.getContext("2d").drawImage(i, 0, 0), e && (this.tempimageBase64[e] = n.toDataURL("image/png")); + } + + t.attr("src", this.tempimageBase64[e]); + } catch (e) { + try { + this.xhrLoadImage(t); + } catch (t) { + console.log(t); + } + } + }), + (t.prototype.xhrLoadImage = function (t) {}), + (t.prototype.sentToClient = function (t, e, n) { + e || (e = {}); + var i = $.extend({}, n || {}); + i.imgToBase64 = !0; + var o = t + this.getHtml(e, i)[0].outerHTML; + (i.id = s.a.instance.guid()), (i.html = o), (i.templateId = this.id), hiwebSocket.send(i); + }), + (t.prototype.printByHtml = function (t) { + $(t).hiwprint(); + }), + (t.prototype.printByHtml2 = function (t, e) { + if ((e || (e = {}), this.clientIsOpened())) { + var n = this, + i = 0, + o = {}, + r = $("link[media=print]").length > 0 ? $("link[media=print]") : $("link"); + r.each(function (a, p) { + var l = new XMLHttpRequest(); + l.open("GET", $(p).attr("href")), + (l.onreadystatechange = function () { + if (4 === l.readyState && 200 === l.status && ((o[a + ""] = '"), ++i == r.length)) { + for (var p = "", u = 0; u < r.length; u++) { + p += o[u + ""]; + } + + var d = p + $(t)[0].outerHTML, + c = $.extend({}, e || {}); + (c.id = s.a.instance.guid()), (c.html = d), (c.templateId = n.id), hiwebSocket.send(c); + } + }), + l.send(); + }); + } else alert("连接客户端失败"); + }), + (t.prototype.deletePrintElement = function (t) { + this.printPanels.forEach(function (e) { + e.deletePrintElement(t); + }); + }), + (t.prototype.transformImg = function (t) { + var e = this; + t.map(function (t, n) { + e.imageToBase64($(n)); + }); + }), + (t.prototype.toPdf = function (t, e, n) { + var i = this; + + if (this.printPanels.length) { + var r = o.a.mm.toPt(this.printPanels[0].width), + a = o.a.mm.toPt(this.printPanels[0].height), + p = $.extend( + { + scale: 2, + width: o.a.pt.toPx(r), + x: 0, + y: 0, + useCORS: !0 + }, + n || {} + ), + s = new jsPDF({ + orientation: 1 == this.getOrient(0) ? "portrait" : "landscape", + unit: "pt", + format: this.printPanels[0].paperType ? this.printPanels[0].paperType.toLocaleLowerCase() : [r, a] + }), + l = this.getHtml(t, n); + this.createTempContainer(); + var u = this.getTempContainer(); + this.svg2canvas(l), u.html(l[0]); + var d = u.find(".hiprint-printPanel .hiprint-printPaper").length; + $(l).css("position:fixed"), + html2canvas(l[0], p).then(function (t) { + var n = t.getContext("2d"); + (n.mozImageSmoothingEnabled = !1), (n.webkitImageSmoothingEnabled = !1), (n.msImageSmoothingEnabled = !1), (n.imageSmoothingEnabled = !1); + + for (var o = t.toDataURL("image/jpeg"), p = 0; p < d; p++) { + s.addImage(o, "JPEG", 0, 0 - p * a, r, d * a), p < d - 1 && s.addPage(); + } + + i.removeTempContainer(), e.indexOf(".pdf") > -1 ? s.save(e) : s.save(e + ".pdf"); + }); + } + }), + (t.prototype.createTempContainer = function () { + this.removeTempContainer(), $("body").prepend($('
            ')); + }), + (t.prototype.removeTempContainer = function () { + $(".hiprint_temp_Container").remove(); + }), + (t.prototype.getTempContainer = function () { + return $(".hiprint_temp_Container"); + }), + (t.prototype.svg2canvas = function (t) { + t.find("svg").each(function (t, e) { + var n = e.parentNode, + i = document.createElement("canvas"), + o = new XMLSerializer().serializeToString(e); + canvg(i, o), $(e).before(i), n.removeChild(e), $(i).css("width", "100%"), $(i).css("height", "100%"); + }); + }), + (t.prototype.on = function (t, e) { + o.a.event.on(t + "_" + this.id, e); + }), + (t.prototype.clientIsOpened = function () { + return hiwebSocket.opened; + }), + (t.prototype.getPrinterList = function () { + var t = hiwebSocket.getPrinterList(); + return t || []; + }), + (t.prototype.getElementByTid = function (t, e) { + return null == e && (e = 0), this.printPanels[e].getElementByTid(t); + }), + (t.prototype.getElementByName = function (t, e) { + return null == e && (e = 0), this.printPanels[e].getElementByName(t); + }), + (t.prototype.getPanel = function (t) { + return null == t && (t = 0), this.printPanels[t]; + }), + (t.prototype.loadAllImages = function (t, e, n) { + var i = this; + null == n && (n = 0); + + for (var o = t[0].getElementsByTagName("img"), r = !0, a = 0; a < o.length; a++) { + var p = o[a]; + p.src && p.src !== window.location.href && -1 == p.src.indexOf("base64") && ((p && void 0 !== p.naturalWidth && 0 !== p.naturalWidth && p.complete) || (r = !1)); + } + + n++, + !r && n < 10 + ? setTimeout(function () { + i.loadAllImages(t, e, n); + }, 500) + : e(); + }), + (t.prototype.setFields = function (t) { + this.fields = t; + }), + (t.prototype.getFields = function () { + return this.fields; + }), + (t.prototype.getFieldsInPanel = function () { + var t = []; + return ( + this.printPanels.forEach(function (e) { + t = t.concat(e.getFieldsInPanel()); + }), + t + ); + }), + (t.prototype.initAutoSave = function () { + var t = this; + this.autoSave && + o.a.event.on("hiprintTemplateDataChanged_" + this.id, function () { + hiLocalStorage.saveLocalData(t.autoSaveKey || "hiprintAutoSave", JSON.stringify(1 == t.autoSaveMode ? t.getJson() : t.getJsonTid())); + }); + }), + t + ); + })(); + + function ht(t) { + this.getHtml(t).hiwprint(); + } + + function ft(t, e, n) { + $.extend({}, t || {}).imgToBase64 = !0; + var i = new ct({}); + i.on("printSuccess", e), i.on("printError", n), i.printByHtml2(this.getHtml(t), t.options); + } + + function gt(t) { + var e = void 0; + return ( + t && + t.templates.forEach(function (n, i) { + var o = $.extend({}, n.options || {}); + t.imgToBase64 && (o.imgToBase64 = !0), e ? e.append(n.template.getHtml(n.data, o).html()) : (e = n.template.getHtml(n.data, o)); + }), + e + ); + } + + function mt(t) { + p.a.instance.init(t), + p.a.instance.providers.forEach(function (t) { + t.addElementTypes(a.instance); + }); + } + + n.d(e, "init", function () { + return mt; + }), + n.d(e, "PrintElementTypeManager", function () { + return it; + }), + n.d(e, "PrintElementTypeGroup", function () { + return ot; + }), + n.d(e, "PrintTemplate", function () { + return ct; + }), + n.d(e, "print", function () { + return ht; + }), + n.d(e, "print2", function () { + return ft; + }), + n.d(e, "getHtml", function () { + return gt; + }), + $(document).ready(function () { + hiwebSocket.hasIo() && hiwebSocket.start(); + }); + } +]); + +export { hiprint }; diff --git a/public/js/hiprint/hiprint.config.js b/public/js/hiprint/hiprint.config.js new file mode 100644 index 0000000..4f36d46 --- /dev/null +++ b/public/js/hiprint/hiprint.config.js @@ -0,0 +1,754 @@ +(function () { + window.HIPRINT_CONFIG = { + //optionItems: [hiprintCustomOptionItem],//自定义选项 + movingDistance: 1.5, //鼠标拖动一次移动的距离,默认1.5pt + paperHeightTrim: 1, //纸张html 的高度等于真实高度-1 + text: (any = { + supportOptions: [ + // { + // name: 'hiprintCustomOptionItem', + // hidden: false + // }, + { + name: "title", + hidden: false + }, + { + name: "field", + hidden: false + }, + { + name: "testData", + hidden: false + }, + { + name: "dataType", + hidden: false + }, + { + name: "fontFamily", + hidden: false + }, + { + name: "fontSize", + hidden: false + }, + { + name: "fontWeight", + hidden: false + }, + { + name: "letterSpacing", + hidden: false + }, + { + name: "color", + hidden: false + }, + { + name: "textDecoration", + hidden: false + }, + { + name: "textAlign", + hidden: false + }, + { + name: "textContentVerticalAlign", + hidden: false + }, + + { + name: "lineHeight", + hidden: false + }, + { + name: "textType", + hidden: false + }, + { + name: "barcodeMode", + hidden: false + }, + { + name: "hideTitle", + hidden: false + }, + { + name: "showInPage", + hidden: false + }, + { + name: "unShowInPage", + hidden: false + }, + { + name: "fixed", + hidden: false + }, + { + name: "axis", + hidden: false + }, + { + name: "transform", + hidden: false + }, + { + name: "optionsGroup", + hidden: false + }, + { + name: "borderLeft", + hidden: false + }, + { + name: "borderTop", + hidden: false + }, + { + name: "borderRight", + hidden: false + }, + { + name: "borderBottom", + hidden: false + }, + { + name: "borderWidth", + hidden: false + }, + { + name: "borderColor", + hidden: false + }, + { + name: "contentPaddingLeft", + hidden: false + }, + { + name: "contentPaddingTop", + hidden: false + }, + { + name: "contentPaddingRight", + hidden: false + }, + { + name: "contentPaddingBottom", + hidden: false + }, + { + name: "backgroundColor", + hidden: false + }, + { + name: "formatter", + hidden: false + }, + { + name: "styler", + hidden: false + } + ], + default: { + width: 120, + height: 9.75 + } + }), + image: (any = { + supportOptions: [ + { + name: "field", + hidden: false + }, + { + name: "src", + hidden: false + }, + { + name: "showInPage", + hidden: false + }, + { + name: "fixed", + hidden: false + }, + { + name: "axis", + hidden: false + }, + { + name: "transform", + hidden: false + }, + { + name: "formatter", + hidden: false + }, + { + name: "styler", + hidden: false + } + ], + default: {} + }), + longText: (any = { + supportOptions: [ + { + name: "title", + hidden: false + }, + { + name: "field", + hidden: false + }, + { + name: "testData", + hidden: false + }, + { + name: "fontFamily", + hidden: false + }, + { + name: "fontSize", + hidden: false + }, + { + name: "fontWeight", + hidden: false + }, + { + name: "letterSpacing", + hidden: false + }, + + { + name: "textAlign", + hidden: false + }, + { + name: "lineHeight", + hidden: false + }, + { + name: "color", + hidden: false + }, + { + name: "hideTitle", + hidden: false + }, + + { + name: "longTextIndent", + hidden: false + }, + + { + name: "leftSpaceRemoved", + hidden: false + }, + { + name: "showInPage", + hidden: false + }, + { + name: "unShowInPage", + hidden: false + }, + { + name: "fixed", + hidden: false + }, + { + name: "axis", + hidden: false + }, + { + name: "lHeight", + hidden: false + }, + { + name: "transform", + hidden: false + }, + { + name: "optionsGroup", + hidden: false + }, + { + name: "borderLeft", + hidden: false + }, + { + name: "borderTop", + hidden: false + }, + { + name: "borderRight", + hidden: false + }, + { + name: "borderBottom", + hidden: false + }, + { + name: "borderWidth", + hidden: false + }, + { + name: "borderColor", + hidden: false + }, + { + name: "contentPaddingLeft", + hidden: false + }, + { + name: "contentPaddingTop", + hidden: false + }, + { + name: "contentPaddingRight", + hidden: false + }, + { + name: "contentPaddingBottom", + hidden: false + }, + { + name: "backgroundColor", + hidden: false + }, + { + name: "formatter", + hidden: false + }, + { + name: "styler", + hidden: false + } + ], + default: { + height: 42, + width: 550 + } + }), + table: (any = { + supportOptions: [ + { + name: "field", + hidden: false + }, + { + name: "fontFamily", + hidden: false + }, + { + name: "fontSize", + hidden: false + }, + { + name: "lineHeight", + hidden: false + }, + { + name: "textAlign", + hidden: false + }, + { + name: "gridColumns", + hidden: false + }, + { + name: "gridColumnsGutter", + hidden: false + }, + + { + name: "tableBorder", + hidden: false + }, + { + name: "tableHeaderBorder", + hidden: false + }, + { + name: "tableHeaderCellBorder", + hidden: false + }, + { + name: "tableHeaderRowHeight", + hidden: false + }, + { + name: "tableHeaderBackground", + hidden: false + }, + { + name: "tableHeaderFontSize", + hidden: false + }, + { + name: "tableHeaderFontWeight", + hidden: false + }, + + { + name: "tableBodyRowHeight", + hidden: false + }, + { + name: "tableBodyRowBorder", + hidden: false + }, + { + name: "tableBodyCellBorder", + hidden: false + }, + + { + name: "axis", + hidden: false + }, + { + name: "lHeight", + hidden: false + }, + + { + name: "autoCompletion", + hidden: false + }, + { + name: "columns", + hidden: false + }, + { + name: "styler", + hidden: false + }, + { + name: "rowStyler", + hidden: false + }, + + { + name: "tableFooterRepeat", + hidden: false + }, + { + name: "footerFormatter", + hidden: false + }, + { + name: "gridColumnsFooterFormatter", + hidden: false + } + ], + default: { + width: 550 + } + }), + tableCustom: (any = { + supportOptions: [ + { + name: "field", + hidden: false + }, + { + name: "fontFamily", + hidden: false + }, + { + name: "fontSize", + hidden: false + }, + { + name: "textAlign", + hidden: false + }, + { + name: "tableBorder", + hidden: false + }, + { + name: "tableHeaderBorder", + hidden: false + }, + { + name: "tableHeaderCellBorder", + hidden: false + }, + { + name: "tableHeaderRowHeight", + hidden: false + }, + { + name: "tableHeaderFontSize", + hidden: false + }, + { + name: "tableHeaderFontWeight", + hidden: false + }, + { + name: "tableHeaderBackground", + hidden: false + }, + + { + name: "tableBodyRowHeight", + hidden: false + }, + { + name: "tableBodyRowBorder", + hidden: false + }, + { + name: "tableBodyCellBorder", + hidden: false + }, + { + name: "axis", + hidden: false + }, + { + name: "lHeight", + hidden: false + }, + { + name: "autoCompletion", + hidden: false + }, + { + name: "tableFooterRepeat", + hidden: false + } + ], + default: { + width: 550 + } + }), + + hline: (any = { + supportOptions: [ + { + name: "borderColor", + hidden: false + }, + { + name: "borderWidth", + hidden: false + }, + { + name: "showInPage", + hidden: false + }, + { + name: "fixed", + hidden: false + }, + { + name: "axis", + hidden: false + }, + { + name: "transform", + hidden: false + }, + { + name: "borderStyle", + hidden: false + } + ], + default: { + borderWidth: 0.75, + height: 9, + width: 90 + } + }), + vline: (any = { + supportOptions: [ + { + name: "borderColor", + hidden: false + }, + { + name: "borderWidth", + hidden: false + }, + { + name: "showInPage", + hidden: false + }, + { + name: "fixed", + hidden: false + }, + { + name: "axis", + hidden: false + }, + { + name: "transform", + hidden: false + }, + { + name: "borderStyle", + hidden: false + } + ], + default: { + borderWidth: undefined, + height: 90, + width: 9 + } + }), + rect: (any = { + supportOptions: [ + { + name: "borderColor", + hidden: false + }, + { + name: "borderWidth", + hidden: false + }, + { + name: "showInPage", + hidden: false + }, + { + name: "fixed", + hidden: false + }, + { + name: "axis", + hidden: false + }, + { + name: "transform", + hidden: false + }, + { + name: "borderStyle", + hidden: false + } + ], + default: { + borderWidth: undefined, + height: 90, + width: 90 + } + }), + oval: (any = { + supportOptions: [ + { + name: "borderColor", + hidden: false + }, + { + name: "borderWidth", + hidden: false + }, + { + name: "showInPage", + hidden: false + }, + { + name: "fixed", + hidden: false + }, + { + name: "axis", + hidden: false + }, + { + name: "transform", + hidden: false + }, + { + name: "borderStyle", + hidden: false + } + ], + default: { + borderWidth: undefined, + height: 90, + width: 90 + } + }), + html: (any = { + supportOptions: [ + { + name: "showInPage", + hidden: false + }, + { + name: "unShowInPage", + hidden: false + }, + { + name: "fixed", + hidden: false + }, + { + name: "axis", + hidden: false + }, + { + name: "formatter", + hidden: false + } + ], + default: { + height: 90, + width: 90 + } + }), + tableColumn: (any = { + supportOptions: [ + { + name: "title", + hidden: false + }, + { + name: "align", + hidden: false + }, + { + name: "halign", + hidden: false + }, + { + name: "vAlign", + hidden: false + }, + + { + name: "paddingLeft", + hidden: false + }, + { + name: "paddingRight", + hidden: false + }, + { + name: "formatter2", + hidden: false + }, + { + name: "styler2", + hidden: false + } + ], + default: { + height: 90, + width: 90 + } + }) + }; +})(); diff --git a/public/js/hiprint/plugins/JsBarcode.all.min.js b/public/js/hiprint/plugins/JsBarcode.all.min.js new file mode 100644 index 0000000..289aa08 --- /dev/null +++ b/public/js/hiprint/plugins/JsBarcode.all.min.js @@ -0,0 +1,2 @@ +/*! JsBarcode v3.11.0 | (c) Johan Lindell | MIT license */ +!function(t){function e(r){if(n[r])return n[r].exports;var o=n[r]={i:r,l:!1,exports:{}};return t[r].call(o.exports,o,o.exports,e),o.l=!0,o.exports}var n={};e.m=t,e.c=n,e.i=function(t){return t},e.d=function(t,n,r){e.o(t,n)||Object.defineProperty(t,n,{configurable:!1,enumerable:!0,get:r})},e.n=function(t){var n=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(n,"a",n),n},e.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},e.p="",e(e.s=20)}([function(t,e,n){"use strict";function r(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var o=function t(e,n){r(this,t),this.data=e,this.text=n.text||e,this.options=n};e.default=o},function(t,e,n){"use strict";function r(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}Object.defineProperty(e,"__esModule",{value:!0});var o,i=e.SET_A=0,u=e.SET_B=1,a=e.SET_C=2,f=(e.SHIFT=98,e.START_A=103),c=e.START_B=104,s=e.START_C=105;e.MODULO=103,e.STOP=106,e.FNC1=207,e.SET_BY_CODE=(o={},r(o,f,i),r(o,c,u),r(o,s,a),o),e.SWAP={101:i,100:u,99:a},e.A_START_CHAR=String.fromCharCode(208),e.B_START_CHAR=String.fromCharCode(209),e.C_START_CHAR=String.fromCharCode(210),e.A_CHARS="[\0-_È-Ï]",e.B_CHARS="[ -È-Ï]",e.C_CHARS="(Ï*[0-9]{2}Ï*)",e.BARS=[11011001100,11001101100,11001100110,10010011e3,10010001100,10001001100,10011001e3,10011000100,10001100100,11001001e3,11001000100,11000100100,10110011100,10011011100,10011001110,10111001100,10011101100,10011100110,11001110010,11001011100,11001001110,11011100100,11001110100,11101101110,11101001100,11100101100,11100100110,11101100100,11100110100,11100110010,11011011e3,11011000110,11000110110,10100011e3,10001011e3,10001000110,10110001e3,10001101e3,10001100010,11010001e3,11000101e3,11000100010,10110111e3,10110001110,10001101110,10111011e3,10111000110,10001110110,11101110110,11010001110,11000101110,11011101e3,11011100010,11011101110,11101011e3,11101000110,11100010110,11101101e3,11101100010,11100011010,11101111010,11001000010,11110001010,1010011e4,10100001100,1001011e4,10010000110,10000101100,10000100110,1011001e4,10110000100,1001101e4,10011000010,10000110100,10000110010,11000010010,1100101e4,11110111010,11000010100,10001111010,10100111100,10010111100,10010011110,10111100100,10011110100,10011110010,11110100100,11110010100,11110010010,11011011110,11011110110,11110110110,10101111e3,10100011110,10001011110,10111101e3,10111100010,11110101e3,11110100010,10111011110,10111101110,11101011110,11110101110,11010000100,1101001e4,11010011100,1100011101011]},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});e.SIDE_BIN="101",e.MIDDLE_BIN="01010",e.BINARIES={L:["0001101","0011001","0010011","0111101","0100011","0110001","0101111","0111011","0110111","0001011"],G:["0100111","0110011","0011011","0100001","0011101","0111001","0000101","0010001","0001001","0010111"],R:["1110010","1100110","1101100","1000010","1011100","1001110","1010000","1000100","1001000","1110100"],O:["0001101","0011001","0010011","0111101","0100011","0110001","0101111","0111011","0110111","0001011"],E:["0100111","0110011","0011011","0100001","0011101","0111001","0000101","0010001","0001001","0010111"]},e.EAN2_STRUCTURE=["LL","LG","GL","GG"],e.EAN5_STRUCTURE=["GGLLL","GLGLL","GLLGL","GLLLG","LGGLL","LLGGL","LLLGG","LGLGL","LGLLG","LLGLG"],e.EAN13_STRUCTURE=["LLLLLL","LLGLGG","LLGGLG","LLGGGL","LGLLGG","LGGLLG","LGGGLL","LGLGLG","LGLGGL","LGGLGL"]},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(2),o=function(t,e,n){var o=t.split("").map(function(t,n){return r.BINARIES[e[n]]}).map(function(e,n){return e?e[t[n]]:""});if(n){var i=t.length-1;o=o.map(function(t,e){return e=200){i=t.shift()-105;var u=c.SWAP[i];void 0!==u?o=e.next(t,n+1,u):(r!==c.SET_A&&r!==c.SET_B||i!==c.SHIFT||(t[0]=r===c.SET_A?t[0]>95?t[0]-96:t[0]:t[0]<32?t[0]+96:t[0]),o=e.next(t,n+1,r))}else i=e.correctIndex(t,r),o=e.next(t,n+1,r);var a=e.getBar(i),f=i*n;return{result:a+o.result,checksum:f+o.checksum}}}]),e}(f.default);e.default=s},function(t,e,n){"use strict";function r(t){for(var e=0,n=0;n10*n.width?10*n.width:n.fontSize,r.guardHeight=n.height+r.fontSize/2+n.textMargin,r}return u(e,t),a(e,[{key:"encode",value:function(){return this.options.flat?this.encodeFlat():this.encodeGuarded()}},{key:"leftText",value:function(t,e){return this.text.substr(t,e)}},{key:"leftEncode",value:function(t,e){return(0,s.default)(t,e)}},{key:"rightText",value:function(t,e){return this.text.substr(t,e)}},{key:"rightEncode",value:function(t,e){return(0,s.default)(t,e)}},{key:"encodeGuarded",value:function(){var t={fontSize:this.fontSize},e={height:this.guardHeight};return[{data:f.SIDE_BIN,options:e},{data:this.leftEncode(),text:this.leftText(),options:t},{data:f.MIDDLE_BIN,options:e},{data:this.rightEncode(),text:this.rightText(),options:t},{data:f.SIDE_BIN,options:e}]}},{key:"encodeFlat",value:function(){return{data:[f.SIDE_BIN,this.leftEncode(),f.MIDDLE_BIN,this.rightEncode(),f.SIDE_BIN].join(""),text:this.text}}}]),e}(p.default);e.default=d},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{default:t}}function o(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function i(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function u(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}function a(t){var e,n=0;for(e=1;e<11;e+=2)n+=parseInt(t[e]);for(e=0;e<11;e+=2)n+=3*parseInt(t[e]);return(10-n%10)%10}Object.defineProperty(e,"__esModule",{value:!0});var f=function(){function t(t,e){for(var n=0;n10*n.width?r.fontSize=10*n.width:r.fontSize=n.fontSize,r.guardHeight=n.height+r.fontSize/2+n.textMargin,r}return u(e,t),f(e,[{key:"valid",value:function(){return-1!==this.data.search(/^[0-9]{12}$/)&&this.data[11]==a(this.data)}},{key:"encode",value:function(){return this.options.flat?this.flatEncoding():this.guardedEncoding()}},{key:"flatEncoding",value:function(){var t="";return t+="101",t+=(0,s.default)(this.data.substr(0,6),"LLLLLL"),t+="01010",t+=(0,s.default)(this.data.substr(6,6),"RRRRRR"),t+="101",{data:t,text:this.text}}},{key:"guardedEncoding",value:function(){var t=[];return this.displayValue&&t.push({data:"00000000",text:this.text.substr(0,1),options:{textAlign:"left",fontSize:this.fontSize}}),t.push({data:"101"+(0,s.default)(this.data[0],"L"),options:{height:this.guardHeight}}),t.push({data:(0,s.default)(this.data.substr(1,5),"LLLLL"),text:this.text.substr(1,5),options:{fontSize:this.fontSize}}),t.push({data:"01010",options:{height:this.guardHeight}}),t.push({data:(0,s.default)(this.data.substr(6,5),"RRRRR"),text:this.text.substr(6,5),options:{fontSize:this.fontSize}}),t.push({data:(0,s.default)(this.data[11],"R")+"101",options:{height:this.guardHeight}}),this.displayValue&&t.push({data:"00000000",text:this.text.substr(11,1),options:{textAlign:"right",fontSize:this.fontSize}}),t}}]),e}(p.default);e.default=d},function(t,e,n){"use strict";function r(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function o(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function i(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(e,"__esModule",{value:!0});var u=function(){function t(t,e){for(var n=0;n0?e.fontSize+e.textMargin:0)+e.marginTop+e.marginBottom}function o(t,e,n){if(n.displayValue&&ee&&(e=t[n].height);return e}function f(t,e,n){var r;if(n)r=n;else{if("undefined"==typeof document)return 0;r=document.createElement("canvas").getContext("2d")}return r.font=e.fontOptions+" "+e.fontSize+"px "+e.font,r.measureText(t).width}Object.defineProperty(e,"__esModule",{value:!0}),e.getTotalWidthOfEncodings=e.calculateEncodingAttributes=e.getBarcodePadding=e.getEncodingHeight=e.getMaximumHeightOfEncodings=void 0;var c=n(5),s=function(t){return t&&t.__esModule?t:{default:t}}(c);e.getMaximumHeightOfEncodings=a,e.getEncodingHeight=r,e.getBarcodePadding=o,e.calculateEncodingAttributes=i,e.getTotalWidthOfEncodings=u},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(27),o=n(26),i=n(33),u=n(37),a=n(42),f=n(44),c=n(43),s=n(34);e.default={CODE39:r.CODE39,CODE128:o.CODE128,CODE128A:o.CODE128A,CODE128B:o.CODE128B,CODE128C:o.CODE128C,EAN13:i.EAN13,EAN8:i.EAN8,EAN5:i.EAN5,EAN2:i.EAN2,UPC:i.UPC,UPCE:i.UPCE,ITF14:u.ITF14,ITF:u.ITF,MSI:a.MSI,MSI10:a.MSI10,MSI11:a.MSI11,MSI1010:a.MSI1010,MSI1110:a.MSI1110,pharmacode:f.pharmacode,codabar:c.codabar,GenericBarcode:s.GenericBarcode}},function(t,e,n){"use strict";function r(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var o=function(){function t(t,e){for(var n=0;n=a(t);return e+String.fromCharCode(o?206:205)+r(t,o)}Object.defineProperty(e,"__esModule",{value:!0});var i=n(1),u=function(t){return t.match(new RegExp("^"+i.A_CHARS+"*"))[0].length},a=function(t){return t.match(new RegExp("^"+i.B_CHARS+"*"))[0].length},f=function(t){return t.match(new RegExp("^"+i.C_CHARS+"*"))[0]};e.default=function(t){var e=void 0;if(f(t).length>=2)e=i.C_START_CHAR+o(t);else{var n=u(t)>a(t);e=(n?i.A_START_CHAR:i.B_START_CHAR)+r(t,n)}return e.replace(/[\xCD\xCE]([^])[\xCD\xCE]/,function(t,e){return String.fromCharCode(203)+e})}},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0}),e.CODE128C=e.CODE128B=e.CODE128A=e.CODE128=void 0;var o=n(24),i=r(o),u=n(21),a=r(u),f=n(22),c=r(f),s=n(23),l=r(s);e.CODE128=i.default,e.CODE128A=a.default,e.CODE128B=c.default,e.CODE128C=l.default},function(t,e,n){"use strict";function r(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function o(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function i(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}function u(t){return a(c(t))}function a(t){return b[t].toString(2)}function f(t){return y[t]}function c(t){return y.indexOf(t)}function s(t){for(var e=0,n=0;n10*n.width?r.fontSize=10*n.width:r.fontSize=n.fontSize,r.guardHeight=n.height+r.fontSize/2+n.textMargin,r}return u(e,t),f(e,[{key:"valid",value:function(){return this.isValid}},{key:"encode",value:function(){return this.options.flat?this.flatEncoding():this.guardedEncoding()}},{key:"flatEncoding",value:function(){var t="";return t+="101",t+=this.encodeMiddleDigits(),t+="010101",{data:t,text:this.text}}},{key:"guardedEncoding",value:function(){var t=[];return this.displayValue&&t.push({data:"00000000",text:this.text[0],options:{textAlign:"left",fontSize:this.fontSize}}),t.push({data:"101",options:{height:this.guardHeight}}),t.push({data:this.encodeMiddleDigits(),text:this.text.substring(1,7),options:{fontSize:this.fontSize}}),t.push({data:"010101",options:{height:this.guardHeight}}),this.displayValue&&t.push({data:"00000000",text:this.text[7],options:{textAlign:"right",fontSize:this.fontSize}}),t}},{key:"encodeMiddleDigits",value:function(){var t=this.upcA[0],e=this.upcA[this.upcA.length-1],n=y[parseInt(e)][parseInt(t)];return(0,s.default)(this.middleDigits,n)}}]),e}(p.default);e.default=b},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0}),e.UPCE=e.UPC=e.EAN2=e.EAN5=e.EAN8=e.EAN13=void 0;var o=n(28),i=r(o),u=n(31),a=r(u),f=n(30),c=r(f),s=n(29),l=r(s),p=n(12),d=r(p),h=n(32),y=r(h);e.EAN13=i.default,e.EAN8=a.default,e.EAN5=c.default,e.EAN2=l.default,e.UPC=d.default,e.UPCE=y.default},function(t,e,n){"use strict";function r(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function o(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function i(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(e,"__esModule",{value:!0}),e.GenericBarcode=void 0;var u=function(){function t(t,e){for(var n=0;n=3&&this.number<=131070}}]),e}(f.default);e.pharmacode=c},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{default:t}}function o(t){var e={};for(var n in f.default)f.default.hasOwnProperty(n)&&(t.hasAttribute("jsbarcode-"+n.toLowerCase())&&(e[n]=t.getAttribute("jsbarcode-"+n.toLowerCase())),t.hasAttribute("data-"+n.toLowerCase())&&(e[n]=t.getAttribute("data-"+n.toLowerCase())));return e.value=t.getAttribute("jsbarcode-value")||t.getAttribute("data-value"),e=(0,u.default)(e)}Object.defineProperty(e,"__esModule",{value:!0});var i=n(9),u=r(i),a=n(10),f=r(a);e.default=o},function(t,e,n){"use strict";function r(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var o=function(){function t(t,e){for(var n=0;n0?(o=0,n.textAlign="left"):"right"==t.textAlign?(o=e.width-1,n.textAlign="right"):(o=e.width/2,n.textAlign="center"),n.fillText(e.text,o,i)}}},{key:"moveCanvasDrawing",value:function(t){this.canvas.getContext("2d").translate(t.width,0)}},{key:"restoreCanvas",value:function(){this.canvas.getContext("2d").restore()}}]),t}();e.default=f},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var o=n(46),i=r(o),u=n(49),a=r(u),f=n(48),c=r(f);e.default={CanvasRenderer:i.default,SVGRenderer:a.default,ObjectRenderer:c.default}},function(t,e,n){"use strict";function r(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var o=function(){function t(t,e){for(var n=0;n0&&(this.drawRect(u-e.width*i,r,e.width*i,e.height,t),i=0);i>0&&this.drawRect(u-e.width*(i-1),r,e.width*i,e.height,t)}},{key:"drawSVGText",value:function(t,e,n){var r=this.document.createElementNS(f,"text");if(e.displayValue){var o,i;r.setAttribute("style","font:"+e.fontOptions+" "+e.fontSize+"px "+e.font),i="top"==e.textPosition?e.fontSize-e.textMargin:e.height+e.textMargin+e.fontSize,"left"==e.textAlign||n.barcodePadding>0?(o=0,r.setAttribute("text-anchor","start")):"right"==e.textAlign?(o=n.width-1,r.setAttribute("text-anchor","end")):(o=n.width/2,r.setAttribute("text-anchor","middle")),r.setAttribute("x",o),r.setAttribute("y",i),r.appendChild(this.document.createTextNode(n.text)),t.appendChild(r)}}},{key:"setSvgAttributes",value:function(t,e){var n=this.svg;n.setAttribute("width",t+"px"),n.setAttribute("height",e+"px"),n.setAttribute("x","0px"),n.setAttribute("y","0px"),n.setAttribute("viewBox","0 0 "+t+" "+e),n.setAttribute("xmlns",f),n.setAttribute("version","1.1"),n.setAttribute("style","transform: translate(0,0)")}},{key:"createGroup",value:function(t,e,n){var r=this.document.createElementNS(f,"g");return r.setAttribute("transform","translate("+t+", "+e+")"),n.appendChild(r),r}},{key:"setGroupOptions",value:function(t,e){t.setAttribute("style","fill:"+e.lineColor+";")}},{key:"drawRect",value:function(t,e,n,r,o){var i=this.document.createElementNS(f,"rect");return i.setAttribute("x",t),i.setAttribute("y",e),i.setAttribute("width",n),i.setAttribute("height",r),o.appendChild(i),i}}]),t}();e.default=c}]); \ No newline at end of file diff --git a/public/js/hiprint/plugins/jq-3.31.js b/public/js/hiprint/plugins/jq-3.31.js new file mode 100644 index 0000000..01b858f --- /dev/null +++ b/public/js/hiprint/plugins/jq-3.31.js @@ -0,0 +1,10364 @@ +/*! + * jQuery JavaScript Library v3.3.1 + * https://jquery.com/ + * + * Includes Sizzle.js + * https://sizzlejs.com/ + * + * Copyright JS Foundation and other contributors + * Released under the MIT license + * https://jquery.org/license + * + * Date: 2018-01-20T17:24Z + */ +( function( global, factory ) { + + "use strict"; + + if ( typeof module === "object" && typeof module.exports === "object" ) { + + // For CommonJS and CommonJS-like environments where a proper `window` + // is present, execute the factory and get jQuery. + // For environments that do not have a `window` with a `document` + // (such as Node.js), expose a factory as module.exports. + // This accentuates the need for the creation of a real `window`. + // e.g. var jQuery = require("jquery")(window); + // See ticket #14549 for more info. + module.exports = global.document ? + factory( global, true ) : + function( w ) { + if ( !w.document ) { + throw new Error( "jQuery requires a window with a document" ); + } + return factory( w ); + }; + } else { + factory( global ); + } + +// Pass this if window is not defined yet +} )( typeof window !== "undefined" ? window : this, function( window, noGlobal ) { + +// Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1 +// throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode +// arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common +// enough that all such attempts are guarded in a try block. +"use strict"; + +var arr = []; + +var document = window.document; + +var getProto = Object.getPrototypeOf; + +var slice = arr.slice; + +var concat = arr.concat; + +var push = arr.push; + +var indexOf = arr.indexOf; + +var class2type = {}; + +var toString = class2type.toString; + +var hasOwn = class2type.hasOwnProperty; + +var fnToString = hasOwn.toString; + +var ObjectFunctionString = fnToString.call( Object ); + +var support = {}; + +var isFunction = function isFunction( obj ) { + + // Support: Chrome <=57, Firefox <=52 + // In some browsers, typeof returns "function" for HTML elements + // (i.e., `typeof document.createElement( "object" ) === "function"`). + // We don't want to classify *any* DOM node as a function. + return typeof obj === "function" && typeof obj.nodeType !== "number"; + }; + + +var isWindow = function isWindow( obj ) { + return obj != null && obj === obj.window; + }; + + + + + var preservedScriptAttributes = { + type: true, + src: true, + noModule: true + }; + + function DOMEval( code, doc, node ) { + doc = doc || document; + + var i, + script = doc.createElement( "script" ); + + script.text = code; + if ( node ) { + for ( i in preservedScriptAttributes ) { + if ( node[ i ] ) { + script[ i ] = node[ i ]; + } + } + } + doc.head.appendChild( script ).parentNode.removeChild( script ); + } + + +function toType( obj ) { + if ( obj == null ) { + return obj + ""; + } + + // Support: Android <=2.3 only (functionish RegExp) + return typeof obj === "object" || typeof obj === "function" ? + class2type[ toString.call( obj ) ] || "object" : + typeof obj; +} +/* global Symbol */ +// Defining this global in .eslintrc.json would create a danger of using the global +// unguarded in another place, it seems safer to define global only for this module + + + +var + version = "3.3.1", + + // Define a local copy of jQuery + jQuery = function( selector, context ) { + + // The jQuery object is actually just the init constructor 'enhanced' + // Need init if jQuery is called (just allow error to be thrown if not included) + return new jQuery.fn.init( selector, context ); + }, + + // Support: Android <=4.0 only + // Make sure we trim BOM and NBSP + rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g; + +jQuery.fn = jQuery.prototype = { + + // The current version of jQuery being used + jquery: version, + + constructor: jQuery, + + // The default length of a jQuery object is 0 + length: 0, + + toArray: function() { + return slice.call( this ); + }, + + // Get the Nth element in the matched element set OR + // Get the whole matched element set as a clean array + get: function( num ) { + + // Return all the elements in a clean array + if ( num == null ) { + return slice.call( this ); + } + + // Return just the one element from the set + return num < 0 ? this[ num + this.length ] : this[ num ]; + }, + + // Take an array of elements and push it onto the stack + // (returning the new matched element set) + pushStack: function( elems ) { + + // Build a new jQuery matched element set + var ret = jQuery.merge( this.constructor(), elems ); + + // Add the old object onto the stack (as a reference) + ret.prevObject = this; + + // Return the newly-formed element set + return ret; + }, + + // Execute a callback for every element in the matched set. + each: function( callback ) { + return jQuery.each( this, callback ); + }, + + map: function( callback ) { + return this.pushStack( jQuery.map( this, function( elem, i ) { + return callback.call( elem, i, elem ); + } ) ); + }, + + slice: function() { + return this.pushStack( slice.apply( this, arguments ) ); + }, + + first: function() { + return this.eq( 0 ); + }, + + last: function() { + return this.eq( -1 ); + }, + + eq: function( i ) { + var len = this.length, + j = +i + ( i < 0 ? len : 0 ); + return this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] ); + }, + + end: function() { + return this.prevObject || this.constructor(); + }, + + // For internal use only. + // Behaves like an Array's method, not like a jQuery method. + push: push, + sort: arr.sort, + splice: arr.splice +}; + +jQuery.extend = jQuery.fn.extend = function() { + var options, name, src, copy, copyIsArray, clone, + target = arguments[ 0 ] || {}, + i = 1, + length = arguments.length, + deep = false; + + // Handle a deep copy situation + if ( typeof target === "boolean" ) { + deep = target; + + // Skip the boolean and the target + target = arguments[ i ] || {}; + i++; + } + + // Handle case when target is a string or something (possible in deep copy) + if ( typeof target !== "object" && !isFunction( target ) ) { + target = {}; + } + + // Extend jQuery itself if only one argument is passed + if ( i === length ) { + target = this; + i--; + } + + for ( ; i < length; i++ ) { + + // Only deal with non-null/undefined values + if ( ( options = arguments[ i ] ) != null ) { + + // Extend the base object + for ( name in options ) { + src = target[ name ]; + copy = options[ name ]; + + // Prevent never-ending loop + if ( target === copy ) { + continue; + } + + // Recurse if we're merging plain objects or arrays + if ( deep && copy && ( jQuery.isPlainObject( copy ) || + ( copyIsArray = Array.isArray( copy ) ) ) ) { + + if ( copyIsArray ) { + copyIsArray = false; + clone = src && Array.isArray( src ) ? src : []; + + } else { + clone = src && jQuery.isPlainObject( src ) ? src : {}; + } + + // Never move original objects, clone them + target[ name ] = jQuery.extend( deep, clone, copy ); + + // Don't bring in undefined values + } else if ( copy !== undefined ) { + target[ name ] = copy; + } + } + } + } + + // Return the modified object + return target; +}; + +jQuery.extend( { + + // Unique for each copy of jQuery on the page + expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "" ), + + // Assume jQuery is ready without the ready module + isReady: true, + + error: function( msg ) { + throw new Error( msg ); + }, + + noop: function() {}, + + isPlainObject: function( obj ) { + var proto, Ctor; + + // Detect obvious negatives + // Use toString instead of jQuery.type to catch host objects + if ( !obj || toString.call( obj ) !== "[object Object]" ) { + return false; + } + + proto = getProto( obj ); + + // Objects with no prototype (e.g., `Object.create( null )`) are plain + if ( !proto ) { + return true; + } + + // Objects with prototype are plain iff they were constructed by a global Object function + Ctor = hasOwn.call( proto, "constructor" ) && proto.constructor; + return typeof Ctor === "function" && fnToString.call( Ctor ) === ObjectFunctionString; + }, + + isEmptyObject: function( obj ) { + + /* eslint-disable no-unused-vars */ + // See https://github.com/eslint/eslint/issues/6125 + var name; + + for ( name in obj ) { + return false; + } + return true; + }, + + // Evaluates a script in a global context + globalEval: function( code ) { + DOMEval( code ); + }, + + each: function( obj, callback ) { + var length, i = 0; + + if ( isArrayLike( obj ) ) { + length = obj.length; + for ( ; i < length; i++ ) { + if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) { + break; + } + } + } else { + for ( i in obj ) { + if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) { + break; + } + } + } + + return obj; + }, + + // Support: Android <=4.0 only + trim: function( text ) { + return text == null ? + "" : + ( text + "" ).replace( rtrim, "" ); + }, + + // results is for internal usage only + makeArray: function( arr, results ) { + var ret = results || []; + + if ( arr != null ) { + if ( isArrayLike( Object( arr ) ) ) { + jQuery.merge( ret, + typeof arr === "string" ? + [ arr ] : arr + ); + } else { + push.call( ret, arr ); + } + } + + return ret; + }, + + inArray: function( elem, arr, i ) { + return arr == null ? -1 : indexOf.call( arr, elem, i ); + }, + + // Support: Android <=4.0 only, PhantomJS 1 only + // push.apply(_, arraylike) throws on ancient WebKit + merge: function( first, second ) { + var len = +second.length, + j = 0, + i = first.length; + + for ( ; j < len; j++ ) { + first[ i++ ] = second[ j ]; + } + + first.length = i; + + return first; + }, + + grep: function( elems, callback, invert ) { + var callbackInverse, + matches = [], + i = 0, + length = elems.length, + callbackExpect = !invert; + + // Go through the array, only saving the items + // that pass the validator function + for ( ; i < length; i++ ) { + callbackInverse = !callback( elems[ i ], i ); + if ( callbackInverse !== callbackExpect ) { + matches.push( elems[ i ] ); + } + } + + return matches; + }, + + // arg is for internal usage only + map: function( elems, callback, arg ) { + var length, value, + i = 0, + ret = []; + + // Go through the array, translating each of the items to their new values + if ( isArrayLike( elems ) ) { + length = elems.length; + for ( ; i < length; i++ ) { + value = callback( elems[ i ], i, arg ); + + if ( value != null ) { + ret.push( value ); + } + } + + // Go through every key on the object, + } else { + for ( i in elems ) { + value = callback( elems[ i ], i, arg ); + + if ( value != null ) { + ret.push( value ); + } + } + } + + // Flatten any nested arrays + return concat.apply( [], ret ); + }, + + // A global GUID counter for objects + guid: 1, + + // jQuery.support is not used in Core but other projects attach their + // properties to it so it needs to exist. + support: support +} ); + +if ( typeof Symbol === "function" ) { + jQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ]; +} + +// Populate the class2type map +jQuery.each( "Boolean Number String Function Array Date RegExp Object Error Symbol".split( " " ), +function( i, name ) { + class2type[ "[object " + name + "]" ] = name.toLowerCase(); +} ); + +function isArrayLike( obj ) { + + // Support: real iOS 8.2 only (not reproducible in simulator) + // `in` check used to prevent JIT error (gh-2145) + // hasOwn isn't used here due to false negatives + // regarding Nodelist length in IE + var length = !!obj && "length" in obj && obj.length, + type = toType( obj ); + + if ( isFunction( obj ) || isWindow( obj ) ) { + return false; + } + + return type === "array" || length === 0 || + typeof length === "number" && length > 0 && ( length - 1 ) in obj; +} +var Sizzle = +/*! + * Sizzle CSS Selector Engine v2.3.3 + * https://sizzlejs.com/ + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license + * http://jquery.org/license + * + * Date: 2016-08-08 + */ +(function( window ) { + +var i, + support, + Expr, + getText, + isXML, + tokenize, + compile, + select, + outermostContext, + sortInput, + hasDuplicate, + + // Local document vars + setDocument, + document, + docElem, + documentIsHTML, + rbuggyQSA, + rbuggyMatches, + matches, + contains, + + // Instance-specific data + expando = "sizzle" + 1 * new Date(), + preferredDoc = window.document, + dirruns = 0, + done = 0, + classCache = createCache(), + tokenCache = createCache(), + compilerCache = createCache(), + sortOrder = function( a, b ) { + if ( a === b ) { + hasDuplicate = true; + } + return 0; + }, + + // Instance methods + hasOwn = ({}).hasOwnProperty, + arr = [], + pop = arr.pop, + push_native = arr.push, + push = arr.push, + slice = arr.slice, + // Use a stripped-down indexOf as it's faster than native + // https://jsperf.com/thor-indexof-vs-for/5 + indexOf = function( list, elem ) { + var i = 0, + len = list.length; + for ( ; i < len; i++ ) { + if ( list[i] === elem ) { + return i; + } + } + return -1; + }, + + booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped", + + // Regular expressions + + // http://www.w3.org/TR/css3-selectors/#whitespace + whitespace = "[\\x20\\t\\r\\n\\f]", + + // http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier + identifier = "(?:\\\\.|[\\w-]|[^\0-\\xa0])+", + + // Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors + attributes = "\\[" + whitespace + "*(" + identifier + ")(?:" + whitespace + + // Operator (capture 2) + "*([*^$|!~]?=)" + whitespace + + // "Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]" + "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" + whitespace + + "*\\]", + + pseudos = ":(" + identifier + ")(?:\\((" + + // To reduce the number of selectors needing tokenize in the preFilter, prefer arguments: + // 1. quoted (capture 3; capture 4 or capture 5) + "('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|" + + // 2. simple (capture 6) + "((?:\\\\.|[^\\\\()[\\]]|" + attributes + ")*)|" + + // 3. anything else (capture 2) + ".*" + + ")\\)|)", + + // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter + rwhitespace = new RegExp( whitespace + "+", "g" ), + rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g" ), + + rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ), + rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + "*" ), + + rattributeQuotes = new RegExp( "=" + whitespace + "*([^\\]'\"]*?)" + whitespace + "*\\]", "g" ), + + rpseudo = new RegExp( pseudos ), + ridentifier = new RegExp( "^" + identifier + "$" ), + + matchExpr = { + "ID": new RegExp( "^#(" + identifier + ")" ), + "CLASS": new RegExp( "^\\.(" + identifier + ")" ), + "TAG": new RegExp( "^(" + identifier + "|[*])" ), + "ATTR": new RegExp( "^" + attributes ), + "PSEUDO": new RegExp( "^" + pseudos ), + "CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace + + "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace + + "*(\\d+)|))" + whitespace + "*\\)|)", "i" ), + "bool": new RegExp( "^(?:" + booleans + ")$", "i" ), + // For use in libraries implementing .is() + // We use this for POS matching in `select` + "needsContext": new RegExp( "^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + + whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" ) + }, + + rinputs = /^(?:input|select|textarea|button)$/i, + rheader = /^h\d$/i, + + rnative = /^[^{]+\{\s*\[native \w/, + + // Easily-parseable/retrievable ID or TAG or CLASS selectors + rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/, + + rsibling = /[+~]/, + + // CSS escapes + // http://www.w3.org/TR/CSS21/syndata.html#escaped-characters + runescape = new RegExp( "\\\\([\\da-f]{1,6}" + whitespace + "?|(" + whitespace + ")|.)", "ig" ), + funescape = function( _, escaped, escapedWhitespace ) { + var high = "0x" + escaped - 0x10000; + // NaN means non-codepoint + // Support: Firefox<24 + // Workaround erroneous numeric interpretation of +"0x" + return high !== high || escapedWhitespace ? + escaped : + high < 0 ? + // BMP codepoint + String.fromCharCode( high + 0x10000 ) : + // Supplemental Plane codepoint (surrogate pair) + String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 ); + }, + + // CSS string/identifier serialization + // https://drafts.csswg.org/cssom/#common-serializing-idioms + rcssescape = /([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g, + fcssescape = function( ch, asCodePoint ) { + if ( asCodePoint ) { + + // U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER + if ( ch === "\0" ) { + return "\uFFFD"; + } + + // Control characters and (dependent upon position) numbers get escaped as code points + return ch.slice( 0, -1 ) + "\\" + ch.charCodeAt( ch.length - 1 ).toString( 16 ) + " "; + } + + // Other potentially-special ASCII characters get backslash-escaped + return "\\" + ch; + }, + + // Used for iframes + // See setDocument() + // Removing the function wrapper causes a "Permission Denied" + // error in IE + unloadHandler = function() { + setDocument(); + }, + + disabledAncestor = addCombinator( + function( elem ) { + return elem.disabled === true && ("form" in elem || "label" in elem); + }, + { dir: "parentNode", next: "legend" } + ); + +// Optimize for push.apply( _, NodeList ) +try { + push.apply( + (arr = slice.call( preferredDoc.childNodes )), + preferredDoc.childNodes + ); + // Support: Android<4.0 + // Detect silently failing push.apply + arr[ preferredDoc.childNodes.length ].nodeType; +} catch ( e ) { + push = { apply: arr.length ? + + // Leverage slice if possible + function( target, els ) { + push_native.apply( target, slice.call(els) ); + } : + + // Support: IE<9 + // Otherwise append directly + function( target, els ) { + var j = target.length, + i = 0; + // Can't trust NodeList.length + while ( (target[j++] = els[i++]) ) {} + target.length = j - 1; + } + }; +} + +function Sizzle( selector, context, results, seed ) { + var m, i, elem, nid, match, groups, newSelector, + newContext = context && context.ownerDocument, + + // nodeType defaults to 9, since context defaults to document + nodeType = context ? context.nodeType : 9; + + results = results || []; + + // Return early from calls with invalid selector or context + if ( typeof selector !== "string" || !selector || + nodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) { + + return results; + } + + // Try to shortcut find operations (as opposed to filters) in HTML documents + if ( !seed ) { + + if ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) { + setDocument( context ); + } + context = context || document; + + if ( documentIsHTML ) { + + // If the selector is sufficiently simple, try using a "get*By*" DOM method + // (excepting DocumentFragment context, where the methods don't exist) + if ( nodeType !== 11 && (match = rquickExpr.exec( selector )) ) { + + // ID selector + if ( (m = match[1]) ) { + + // Document context + if ( nodeType === 9 ) { + if ( (elem = context.getElementById( m )) ) { + + // Support: IE, Opera, Webkit + // TODO: identify versions + // getElementById can match elements by name instead of ID + if ( elem.id === m ) { + results.push( elem ); + return results; + } + } else { + return results; + } + + // Element context + } else { + + // Support: IE, Opera, Webkit + // TODO: identify versions + // getElementById can match elements by name instead of ID + if ( newContext && (elem = newContext.getElementById( m )) && + contains( context, elem ) && + elem.id === m ) { + + results.push( elem ); + return results; + } + } + + // Type selector + } else if ( match[2] ) { + push.apply( results, context.getElementsByTagName( selector ) ); + return results; + + // Class selector + } else if ( (m = match[3]) && support.getElementsByClassName && + context.getElementsByClassName ) { + + push.apply( results, context.getElementsByClassName( m ) ); + return results; + } + } + + // Take advantage of querySelectorAll + if ( support.qsa && + !compilerCache[ selector + " " ] && + (!rbuggyQSA || !rbuggyQSA.test( selector )) ) { + + if ( nodeType !== 1 ) { + newContext = context; + newSelector = selector; + + // qSA looks outside Element context, which is not what we want + // Thanks to Andrew Dupont for this workaround technique + // Support: IE <=8 + // Exclude object elements + } else if ( context.nodeName.toLowerCase() !== "object" ) { + + // Capture the context ID, setting it first if necessary + if ( (nid = context.getAttribute( "id" )) ) { + nid = nid.replace( rcssescape, fcssescape ); + } else { + context.setAttribute( "id", (nid = expando) ); + } + + // Prefix every selector in the list + groups = tokenize( selector ); + i = groups.length; + while ( i-- ) { + groups[i] = "#" + nid + " " + toSelector( groups[i] ); + } + newSelector = groups.join( "," ); + + // Expand context for sibling selectors + newContext = rsibling.test( selector ) && testContext( context.parentNode ) || + context; + } + + if ( newSelector ) { + try { + push.apply( results, + newContext.querySelectorAll( newSelector ) + ); + return results; + } catch ( qsaError ) { + } finally { + if ( nid === expando ) { + context.removeAttribute( "id" ); + } + } + } + } + } + } + + // All others + return select( selector.replace( rtrim, "$1" ), context, results, seed ); +} + +/** + * Create key-value caches of limited size + * @returns {function(string, object)} Returns the Object data after storing it on itself with + * property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength) + * deleting the oldest entry + */ +function createCache() { + var keys = []; + + function cache( key, value ) { + // Use (key + " ") to avoid collision with native prototype properties (see Issue #157) + if ( keys.push( key + " " ) > Expr.cacheLength ) { + // Only keep the most recent entries + delete cache[ keys.shift() ]; + } + return (cache[ key + " " ] = value); + } + return cache; +} + +/** + * Mark a function for special use by Sizzle + * @param {Function} fn The function to mark + */ +function markFunction( fn ) { + fn[ expando ] = true; + return fn; +} + +/** + * Support testing using an element + * @param {Function} fn Passed the created element and returns a boolean result + */ +function assert( fn ) { + var el = document.createElement("fieldset"); + + try { + return !!fn( el ); + } catch (e) { + return false; + } finally { + // Remove from its parent by default + if ( el.parentNode ) { + el.parentNode.removeChild( el ); + } + // release memory in IE + el = null; + } +} + +/** + * Adds the same handler for all of the specified attrs + * @param {String} attrs Pipe-separated list of attributes + * @param {Function} handler The method that will be applied + */ +function addHandle( attrs, handler ) { + var arr = attrs.split("|"), + i = arr.length; + + while ( i-- ) { + Expr.attrHandle[ arr[i] ] = handler; + } +} + +/** + * Checks document order of two siblings + * @param {Element} a + * @param {Element} b + * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b + */ +function siblingCheck( a, b ) { + var cur = b && a, + diff = cur && a.nodeType === 1 && b.nodeType === 1 && + a.sourceIndex - b.sourceIndex; + + // Use IE sourceIndex if available on both nodes + if ( diff ) { + return diff; + } + + // Check if b follows a + if ( cur ) { + while ( (cur = cur.nextSibling) ) { + if ( cur === b ) { + return -1; + } + } + } + + return a ? 1 : -1; +} + +/** + * Returns a function to use in pseudos for input types + * @param {String} type + */ +function createInputPseudo( type ) { + return function( elem ) { + var name = elem.nodeName.toLowerCase(); + return name === "input" && elem.type === type; + }; +} + +/** + * Returns a function to use in pseudos for buttons + * @param {String} type + */ +function createButtonPseudo( type ) { + return function( elem ) { + var name = elem.nodeName.toLowerCase(); + return (name === "input" || name === "button") && elem.type === type; + }; +} + +/** + * Returns a function to use in pseudos for :enabled/:disabled + * @param {Boolean} disabled true for :disabled; false for :enabled + */ +function createDisabledPseudo( disabled ) { + + // Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable + return function( elem ) { + + // Only certain elements can match :enabled or :disabled + // https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled + // https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled + if ( "form" in elem ) { + + // Check for inherited disabledness on relevant non-disabled elements: + // * listed form-associated elements in a disabled fieldset + // https://html.spec.whatwg.org/multipage/forms.html#category-listed + // https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled + // * option elements in a disabled optgroup + // https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled + // All such elements have a "form" property. + if ( elem.parentNode && elem.disabled === false ) { + + // Option elements defer to a parent optgroup if present + if ( "label" in elem ) { + if ( "label" in elem.parentNode ) { + return elem.parentNode.disabled === disabled; + } else { + return elem.disabled === disabled; + } + } + + // Support: IE 6 - 11 + // Use the isDisabled shortcut property to check for disabled fieldset ancestors + return elem.isDisabled === disabled || + + // Where there is no isDisabled, check manually + /* jshint -W018 */ + elem.isDisabled !== !disabled && + disabledAncestor( elem ) === disabled; + } + + return elem.disabled === disabled; + + // Try to winnow out elements that can't be disabled before trusting the disabled property. + // Some victims get caught in our net (label, legend, menu, track), but it shouldn't + // even exist on them, let alone have a boolean value. + } else if ( "label" in elem ) { + return elem.disabled === disabled; + } + + // Remaining elements are neither :enabled nor :disabled + return false; + }; +} + +/** + * Returns a function to use in pseudos for positionals + * @param {Function} fn + */ +function createPositionalPseudo( fn ) { + return markFunction(function( argument ) { + argument = +argument; + return markFunction(function( seed, matches ) { + var j, + matchIndexes = fn( [], seed.length, argument ), + i = matchIndexes.length; + + // Match elements found at the specified indexes + while ( i-- ) { + if ( seed[ (j = matchIndexes[i]) ] ) { + seed[j] = !(matches[j] = seed[j]); + } + } + }); + }); +} + +/** + * Checks a node for validity as a Sizzle context + * @param {Element|Object=} context + * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value + */ +function testContext( context ) { + return context && typeof context.getElementsByTagName !== "undefined" && context; +} + +// Expose support vars for convenience +support = Sizzle.support = {}; + +/** + * Detects XML nodes + * @param {Element|Object} elem An element or a document + * @returns {Boolean} True iff elem is a non-HTML XML node + */ +isXML = Sizzle.isXML = function( elem ) { + // documentElement is verified for cases where it doesn't yet exist + // (such as loading iframes in IE - #4833) + var documentElement = elem && (elem.ownerDocument || elem).documentElement; + return documentElement ? documentElement.nodeName !== "HTML" : false; +}; + +/** + * Sets document-related variables once based on the current document + * @param {Element|Object} [doc] An element or document object to use to set the document + * @returns {Object} Returns the current document + */ +setDocument = Sizzle.setDocument = function( node ) { + var hasCompare, subWindow, + doc = node ? node.ownerDocument || node : preferredDoc; + + // Return early if doc is invalid or already selected + if ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) { + return document; + } + + // Update global variables + document = doc; + docElem = document.documentElement; + documentIsHTML = !isXML( document ); + + // Support: IE 9-11, Edge + // Accessing iframe documents after unload throws "permission denied" errors (jQuery #13936) + if ( preferredDoc !== document && + (subWindow = document.defaultView) && subWindow.top !== subWindow ) { + + // Support: IE 11, Edge + if ( subWindow.addEventListener ) { + subWindow.addEventListener( "unload", unloadHandler, false ); + + // Support: IE 9 - 10 only + } else if ( subWindow.attachEvent ) { + subWindow.attachEvent( "onunload", unloadHandler ); + } + } + + /* Attributes + ---------------------------------------------------------------------- */ + + // Support: IE<8 + // Verify that getAttribute really returns attributes and not properties + // (excepting IE8 booleans) + support.attributes = assert(function( el ) { + el.className = "i"; + return !el.getAttribute("className"); + }); + + /* getElement(s)By* + ---------------------------------------------------------------------- */ + + // Check if getElementsByTagName("*") returns only elements + support.getElementsByTagName = assert(function( el ) { + el.appendChild( document.createComment("") ); + return !el.getElementsByTagName("*").length; + }); + + // Support: IE<9 + support.getElementsByClassName = rnative.test( document.getElementsByClassName ); + + // Support: IE<10 + // Check if getElementById returns elements by name + // The broken getElementById methods don't pick up programmatically-set names, + // so use a roundabout getElementsByName test + support.getById = assert(function( el ) { + docElem.appendChild( el ).id = expando; + return !document.getElementsByName || !document.getElementsByName( expando ).length; + }); + + // ID filter and find + if ( support.getById ) { + Expr.filter["ID"] = function( id ) { + var attrId = id.replace( runescape, funescape ); + return function( elem ) { + return elem.getAttribute("id") === attrId; + }; + }; + Expr.find["ID"] = function( id, context ) { + if ( typeof context.getElementById !== "undefined" && documentIsHTML ) { + var elem = context.getElementById( id ); + return elem ? [ elem ] : []; + } + }; + } else { + Expr.filter["ID"] = function( id ) { + var attrId = id.replace( runescape, funescape ); + return function( elem ) { + var node = typeof elem.getAttributeNode !== "undefined" && + elem.getAttributeNode("id"); + return node && node.value === attrId; + }; + }; + + // Support: IE 6 - 7 only + // getElementById is not reliable as a find shortcut + Expr.find["ID"] = function( id, context ) { + if ( typeof context.getElementById !== "undefined" && documentIsHTML ) { + var node, i, elems, + elem = context.getElementById( id ); + + if ( elem ) { + + // Verify the id attribute + node = elem.getAttributeNode("id"); + if ( node && node.value === id ) { + return [ elem ]; + } + + // Fall back on getElementsByName + elems = context.getElementsByName( id ); + i = 0; + while ( (elem = elems[i++]) ) { + node = elem.getAttributeNode("id"); + if ( node && node.value === id ) { + return [ elem ]; + } + } + } + + return []; + } + }; + } + + // Tag + Expr.find["TAG"] = support.getElementsByTagName ? + function( tag, context ) { + if ( typeof context.getElementsByTagName !== "undefined" ) { + return context.getElementsByTagName( tag ); + + // DocumentFragment nodes don't have gEBTN + } else if ( support.qsa ) { + return context.querySelectorAll( tag ); + } + } : + + function( tag, context ) { + var elem, + tmp = [], + i = 0, + // By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too + results = context.getElementsByTagName( tag ); + + // Filter out possible comments + if ( tag === "*" ) { + while ( (elem = results[i++]) ) { + if ( elem.nodeType === 1 ) { + tmp.push( elem ); + } + } + + return tmp; + } + return results; + }; + + // Class + Expr.find["CLASS"] = support.getElementsByClassName && function( className, context ) { + if ( typeof context.getElementsByClassName !== "undefined" && documentIsHTML ) { + return context.getElementsByClassName( className ); + } + }; + + /* QSA/matchesSelector + ---------------------------------------------------------------------- */ + + // QSA and matchesSelector support + + // matchesSelector(:active) reports false when true (IE9/Opera 11.5) + rbuggyMatches = []; + + // qSa(:focus) reports false when true (Chrome 21) + // We allow this because of a bug in IE8/9 that throws an error + // whenever `document.activeElement` is accessed on an iframe + // So, we allow :focus to pass through QSA all the time to avoid the IE error + // See https://bugs.jquery.com/ticket/13378 + rbuggyQSA = []; + + if ( (support.qsa = rnative.test( document.querySelectorAll )) ) { + // Build QSA regex + // Regex strategy adopted from Diego Perini + assert(function( el ) { + // Select is set to empty string on purpose + // This is to test IE's treatment of not explicitly + // setting a boolean content attribute, + // since its presence should be enough + // https://bugs.jquery.com/ticket/12359 + docElem.appendChild( el ).innerHTML = "" + + ""; + + // Support: IE8, Opera 11-12.16 + // Nothing should be selected when empty strings follow ^= or $= or *= + // The test attribute must be unknown in Opera but "safe" for WinRT + // https://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section + if ( el.querySelectorAll("[msallowcapture^='']").length ) { + rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" ); + } + + // Support: IE8 + // Boolean attributes and "value" are not treated correctly + if ( !el.querySelectorAll("[selected]").length ) { + rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" ); + } + + // Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+ + if ( !el.querySelectorAll( "[id~=" + expando + "-]" ).length ) { + rbuggyQSA.push("~="); + } + + // Webkit/Opera - :checked should return selected option elements + // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked + // IE8 throws error here and will not see later tests + if ( !el.querySelectorAll(":checked").length ) { + rbuggyQSA.push(":checked"); + } + + // Support: Safari 8+, iOS 8+ + // https://bugs.webkit.org/show_bug.cgi?id=136851 + // In-page `selector#id sibling-combinator selector` fails + if ( !el.querySelectorAll( "a#" + expando + "+*" ).length ) { + rbuggyQSA.push(".#.+[+~]"); + } + }); + + assert(function( el ) { + el.innerHTML = "" + + ""; + + // Support: Windows 8 Native Apps + // The type and name attributes are restricted during .innerHTML assignment + var input = document.createElement("input"); + input.setAttribute( "type", "hidden" ); + el.appendChild( input ).setAttribute( "name", "D" ); + + // Support: IE8 + // Enforce case-sensitivity of name attribute + if ( el.querySelectorAll("[name=d]").length ) { + rbuggyQSA.push( "name" + whitespace + "*[*^$|!~]?=" ); + } + + // FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled) + // IE8 throws error here and will not see later tests + if ( el.querySelectorAll(":enabled").length !== 2 ) { + rbuggyQSA.push( ":enabled", ":disabled" ); + } + + // Support: IE9-11+ + // IE's :disabled selector does not pick up the children of disabled fieldsets + docElem.appendChild( el ).disabled = true; + if ( el.querySelectorAll(":disabled").length !== 2 ) { + rbuggyQSA.push( ":enabled", ":disabled" ); + } + + // Opera 10-11 does not throw on post-comma invalid pseudos + el.querySelectorAll("*,:x"); + rbuggyQSA.push(",.*:"); + }); + } + + if ( (support.matchesSelector = rnative.test( (matches = docElem.matches || + docElem.webkitMatchesSelector || + docElem.mozMatchesSelector || + docElem.oMatchesSelector || + docElem.msMatchesSelector) )) ) { + + assert(function( el ) { + // Check to see if it's possible to do matchesSelector + // on a disconnected node (IE 9) + support.disconnectedMatch = matches.call( el, "*" ); + + // This should fail with an exception + // Gecko does not error, returns false instead + matches.call( el, "[s!='']:x" ); + rbuggyMatches.push( "!=", pseudos ); + }); + } + + rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join("|") ); + rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join("|") ); + + /* Contains + ---------------------------------------------------------------------- */ + hasCompare = rnative.test( docElem.compareDocumentPosition ); + + // Element contains another + // Purposefully self-exclusive + // As in, an element does not contain itself + contains = hasCompare || rnative.test( docElem.contains ) ? + function( a, b ) { + var adown = a.nodeType === 9 ? a.documentElement : a, + bup = b && b.parentNode; + return a === bup || !!( bup && bup.nodeType === 1 && ( + adown.contains ? + adown.contains( bup ) : + a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16 + )); + } : + function( a, b ) { + if ( b ) { + while ( (b = b.parentNode) ) { + if ( b === a ) { + return true; + } + } + } + return false; + }; + + /* Sorting + ---------------------------------------------------------------------- */ + + // Document order sorting + sortOrder = hasCompare ? + function( a, b ) { + + // Flag for duplicate removal + if ( a === b ) { + hasDuplicate = true; + return 0; + } + + // Sort on method existence if only one input has compareDocumentPosition + var compare = !a.compareDocumentPosition - !b.compareDocumentPosition; + if ( compare ) { + return compare; + } + + // Calculate position if both inputs belong to the same document + compare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ? + a.compareDocumentPosition( b ) : + + // Otherwise we know they are disconnected + 1; + + // Disconnected nodes + if ( compare & 1 || + (!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) { + + // Choose the first element that is related to our preferred document + if ( a === document || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) { + return -1; + } + if ( b === document || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ) { + return 1; + } + + // Maintain original order + return sortInput ? + ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) : + 0; + } + + return compare & 4 ? -1 : 1; + } : + function( a, b ) { + // Exit early if the nodes are identical + if ( a === b ) { + hasDuplicate = true; + return 0; + } + + var cur, + i = 0, + aup = a.parentNode, + bup = b.parentNode, + ap = [ a ], + bp = [ b ]; + + // Parentless nodes are either documents or disconnected + if ( !aup || !bup ) { + return a === document ? -1 : + b === document ? 1 : + aup ? -1 : + bup ? 1 : + sortInput ? + ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) : + 0; + + // If the nodes are siblings, we can do a quick check + } else if ( aup === bup ) { + return siblingCheck( a, b ); + } + + // Otherwise we need full lists of their ancestors for comparison + cur = a; + while ( (cur = cur.parentNode) ) { + ap.unshift( cur ); + } + cur = b; + while ( (cur = cur.parentNode) ) { + bp.unshift( cur ); + } + + // Walk down the tree looking for a discrepancy + while ( ap[i] === bp[i] ) { + i++; + } + + return i ? + // Do a sibling check if the nodes have a common ancestor + siblingCheck( ap[i], bp[i] ) : + + // Otherwise nodes in our document sort first + ap[i] === preferredDoc ? -1 : + bp[i] === preferredDoc ? 1 : + 0; + }; + + return document; +}; + +Sizzle.matches = function( expr, elements ) { + return Sizzle( expr, null, null, elements ); +}; + +Sizzle.matchesSelector = function( elem, expr ) { + // Set document vars if needed + if ( ( elem.ownerDocument || elem ) !== document ) { + setDocument( elem ); + } + + // Make sure that attribute selectors are quoted + expr = expr.replace( rattributeQuotes, "='$1']" ); + + if ( support.matchesSelector && documentIsHTML && + !compilerCache[ expr + " " ] && + ( !rbuggyMatches || !rbuggyMatches.test( expr ) ) && + ( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) { + + try { + var ret = matches.call( elem, expr ); + + // IE 9's matchesSelector returns false on disconnected nodes + if ( ret || support.disconnectedMatch || + // As well, disconnected nodes are said to be in a document + // fragment in IE 9 + elem.document && elem.document.nodeType !== 11 ) { + return ret; + } + } catch (e) {} + } + + return Sizzle( expr, document, null, [ elem ] ).length > 0; +}; + +Sizzle.contains = function( context, elem ) { + // Set document vars if needed + if ( ( context.ownerDocument || context ) !== document ) { + setDocument( context ); + } + return contains( context, elem ); +}; + +Sizzle.attr = function( elem, name ) { + // Set document vars if needed + if ( ( elem.ownerDocument || elem ) !== document ) { + setDocument( elem ); + } + + var fn = Expr.attrHandle[ name.toLowerCase() ], + // Don't get fooled by Object.prototype properties (jQuery #13807) + val = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ? + fn( elem, name, !documentIsHTML ) : + undefined; + + return val !== undefined ? + val : + support.attributes || !documentIsHTML ? + elem.getAttribute( name ) : + (val = elem.getAttributeNode(name)) && val.specified ? + val.value : + null; +}; + +Sizzle.escape = function( sel ) { + return (sel + "").replace( rcssescape, fcssescape ); +}; + +Sizzle.error = function( msg ) { + throw new Error( "Syntax error, unrecognized expression: " + msg ); +}; + +/** + * Document sorting and removing duplicates + * @param {ArrayLike} results + */ +Sizzle.uniqueSort = function( results ) { + var elem, + duplicates = [], + j = 0, + i = 0; + + // Unless we *know* we can detect duplicates, assume their presence + hasDuplicate = !support.detectDuplicates; + sortInput = !support.sortStable && results.slice( 0 ); + results.sort( sortOrder ); + + if ( hasDuplicate ) { + while ( (elem = results[i++]) ) { + if ( elem === results[ i ] ) { + j = duplicates.push( i ); + } + } + while ( j-- ) { + results.splice( duplicates[ j ], 1 ); + } + } + + // Clear input after sorting to release objects + // See https://github.com/jquery/sizzle/pull/225 + sortInput = null; + + return results; +}; + +/** + * Utility function for retrieving the text value of an array of DOM nodes + * @param {Array|Element} elem + */ +getText = Sizzle.getText = function( elem ) { + var node, + ret = "", + i = 0, + nodeType = elem.nodeType; + + if ( !nodeType ) { + // If no nodeType, this is expected to be an array + while ( (node = elem[i++]) ) { + // Do not traverse comment nodes + ret += getText( node ); + } + } else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) { + // Use textContent for elements + // innerText usage removed for consistency of new lines (jQuery #11153) + if ( typeof elem.textContent === "string" ) { + return elem.textContent; + } else { + // Traverse its children + for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { + ret += getText( elem ); + } + } + } else if ( nodeType === 3 || nodeType === 4 ) { + return elem.nodeValue; + } + // Do not include comment or processing instruction nodes + + return ret; +}; + +Expr = Sizzle.selectors = { + + // Can be adjusted by the user + cacheLength: 50, + + createPseudo: markFunction, + + match: matchExpr, + + attrHandle: {}, + + find: {}, + + relative: { + ">": { dir: "parentNode", first: true }, + " ": { dir: "parentNode" }, + "+": { dir: "previousSibling", first: true }, + "~": { dir: "previousSibling" } + }, + + preFilter: { + "ATTR": function( match ) { + match[1] = match[1].replace( runescape, funescape ); + + // Move the given value to match[3] whether quoted or unquoted + match[3] = ( match[3] || match[4] || match[5] || "" ).replace( runescape, funescape ); + + if ( match[2] === "~=" ) { + match[3] = " " + match[3] + " "; + } + + return match.slice( 0, 4 ); + }, + + "CHILD": function( match ) { + /* matches from matchExpr["CHILD"] + 1 type (only|nth|...) + 2 what (child|of-type) + 3 argument (even|odd|\d*|\d*n([+-]\d+)?|...) + 4 xn-component of xn+y argument ([+-]?\d*n|) + 5 sign of xn-component + 6 x of xn-component + 7 sign of y-component + 8 y of y-component + */ + match[1] = match[1].toLowerCase(); + + if ( match[1].slice( 0, 3 ) === "nth" ) { + // nth-* requires argument + if ( !match[3] ) { + Sizzle.error( match[0] ); + } + + // numeric x and y parameters for Expr.filter.CHILD + // remember that false/true cast respectively to 0/1 + match[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === "even" || match[3] === "odd" ) ); + match[5] = +( ( match[7] + match[8] ) || match[3] === "odd" ); + + // other types prohibit arguments + } else if ( match[3] ) { + Sizzle.error( match[0] ); + } + + return match; + }, + + "PSEUDO": function( match ) { + var excess, + unquoted = !match[6] && match[2]; + + if ( matchExpr["CHILD"].test( match[0] ) ) { + return null; + } + + // Accept quoted arguments as-is + if ( match[3] ) { + match[2] = match[4] || match[5] || ""; + + // Strip excess characters from unquoted arguments + } else if ( unquoted && rpseudo.test( unquoted ) && + // Get excess from tokenize (recursively) + (excess = tokenize( unquoted, true )) && + // advance to the next closing parenthesis + (excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length) ) { + + // excess is a negative index + match[0] = match[0].slice( 0, excess ); + match[2] = unquoted.slice( 0, excess ); + } + + // Return only captures needed by the pseudo filter method (type and argument) + return match.slice( 0, 3 ); + } + }, + + filter: { + + "TAG": function( nodeNameSelector ) { + var nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase(); + return nodeNameSelector === "*" ? + function() { return true; } : + function( elem ) { + return elem.nodeName && elem.nodeName.toLowerCase() === nodeName; + }; + }, + + "CLASS": function( className ) { + var pattern = classCache[ className + " " ]; + + return pattern || + (pattern = new RegExp( "(^|" + whitespace + ")" + className + "(" + whitespace + "|$)" )) && + classCache( className, function( elem ) { + return pattern.test( typeof elem.className === "string" && elem.className || typeof elem.getAttribute !== "undefined" && elem.getAttribute("class") || "" ); + }); + }, + + "ATTR": function( name, operator, check ) { + return function( elem ) { + var result = Sizzle.attr( elem, name ); + + if ( result == null ) { + return operator === "!="; + } + if ( !operator ) { + return true; + } + + result += ""; + + return operator === "=" ? result === check : + operator === "!=" ? result !== check : + operator === "^=" ? check && result.indexOf( check ) === 0 : + operator === "*=" ? check && result.indexOf( check ) > -1 : + operator === "$=" ? check && result.slice( -check.length ) === check : + operator === "~=" ? ( " " + result.replace( rwhitespace, " " ) + " " ).indexOf( check ) > -1 : + operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" : + false; + }; + }, + + "CHILD": function( type, what, argument, first, last ) { + var simple = type.slice( 0, 3 ) !== "nth", + forward = type.slice( -4 ) !== "last", + ofType = what === "of-type"; + + return first === 1 && last === 0 ? + + // Shortcut for :nth-*(n) + function( elem ) { + return !!elem.parentNode; + } : + + function( elem, context, xml ) { + var cache, uniqueCache, outerCache, node, nodeIndex, start, + dir = simple !== forward ? "nextSibling" : "previousSibling", + parent = elem.parentNode, + name = ofType && elem.nodeName.toLowerCase(), + useCache = !xml && !ofType, + diff = false; + + if ( parent ) { + + // :(first|last|only)-(child|of-type) + if ( simple ) { + while ( dir ) { + node = elem; + while ( (node = node[ dir ]) ) { + if ( ofType ? + node.nodeName.toLowerCase() === name : + node.nodeType === 1 ) { + + return false; + } + } + // Reverse direction for :only-* (if we haven't yet done so) + start = dir = type === "only" && !start && "nextSibling"; + } + return true; + } + + start = [ forward ? parent.firstChild : parent.lastChild ]; + + // non-xml :nth-child(...) stores cache data on `parent` + if ( forward && useCache ) { + + // Seek `elem` from a previously-cached index + + // ...in a gzip-friendly way + node = parent; + outerCache = node[ expando ] || (node[ expando ] = {}); + + // Support: IE <9 only + // Defend against cloned attroperties (jQuery gh-1709) + uniqueCache = outerCache[ node.uniqueID ] || + (outerCache[ node.uniqueID ] = {}); + + cache = uniqueCache[ type ] || []; + nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ]; + diff = nodeIndex && cache[ 2 ]; + node = nodeIndex && parent.childNodes[ nodeIndex ]; + + while ( (node = ++nodeIndex && node && node[ dir ] || + + // Fallback to seeking `elem` from the start + (diff = nodeIndex = 0) || start.pop()) ) { + + // When found, cache indexes on `parent` and break + if ( node.nodeType === 1 && ++diff && node === elem ) { + uniqueCache[ type ] = [ dirruns, nodeIndex, diff ]; + break; + } + } + + } else { + // Use previously-cached element index if available + if ( useCache ) { + // ...in a gzip-friendly way + node = elem; + outerCache = node[ expando ] || (node[ expando ] = {}); + + // Support: IE <9 only + // Defend against cloned attroperties (jQuery gh-1709) + uniqueCache = outerCache[ node.uniqueID ] || + (outerCache[ node.uniqueID ] = {}); + + cache = uniqueCache[ type ] || []; + nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ]; + diff = nodeIndex; + } + + // xml :nth-child(...) + // or :nth-last-child(...) or :nth(-last)?-of-type(...) + if ( diff === false ) { + // Use the same loop as above to seek `elem` from the start + while ( (node = ++nodeIndex && node && node[ dir ] || + (diff = nodeIndex = 0) || start.pop()) ) { + + if ( ( ofType ? + node.nodeName.toLowerCase() === name : + node.nodeType === 1 ) && + ++diff ) { + + // Cache the index of each encountered element + if ( useCache ) { + outerCache = node[ expando ] || (node[ expando ] = {}); + + // Support: IE <9 only + // Defend against cloned attroperties (jQuery gh-1709) + uniqueCache = outerCache[ node.uniqueID ] || + (outerCache[ node.uniqueID ] = {}); + + uniqueCache[ type ] = [ dirruns, diff ]; + } + + if ( node === elem ) { + break; + } + } + } + } + } + + // Incorporate the offset, then check against cycle size + diff -= last; + return diff === first || ( diff % first === 0 && diff / first >= 0 ); + } + }; + }, + + "PSEUDO": function( pseudo, argument ) { + // pseudo-class names are case-insensitive + // http://www.w3.org/TR/selectors/#pseudo-classes + // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters + // Remember that setFilters inherits from pseudos + var args, + fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] || + Sizzle.error( "unsupported pseudo: " + pseudo ); + + // The user may use createPseudo to indicate that + // arguments are needed to create the filter function + // just as Sizzle does + if ( fn[ expando ] ) { + return fn( argument ); + } + + // But maintain support for old signatures + if ( fn.length > 1 ) { + args = [ pseudo, pseudo, "", argument ]; + return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ? + markFunction(function( seed, matches ) { + var idx, + matched = fn( seed, argument ), + i = matched.length; + while ( i-- ) { + idx = indexOf( seed, matched[i] ); + seed[ idx ] = !( matches[ idx ] = matched[i] ); + } + }) : + function( elem ) { + return fn( elem, 0, args ); + }; + } + + return fn; + } + }, + + pseudos: { + // Potentially complex pseudos + "not": markFunction(function( selector ) { + // Trim the selector passed to compile + // to avoid treating leading and trailing + // spaces as combinators + var input = [], + results = [], + matcher = compile( selector.replace( rtrim, "$1" ) ); + + return matcher[ expando ] ? + markFunction(function( seed, matches, context, xml ) { + var elem, + unmatched = matcher( seed, null, xml, [] ), + i = seed.length; + + // Match elements unmatched by `matcher` + while ( i-- ) { + if ( (elem = unmatched[i]) ) { + seed[i] = !(matches[i] = elem); + } + } + }) : + function( elem, context, xml ) { + input[0] = elem; + matcher( input, null, xml, results ); + // Don't keep the element (issue #299) + input[0] = null; + return !results.pop(); + }; + }), + + "has": markFunction(function( selector ) { + return function( elem ) { + return Sizzle( selector, elem ).length > 0; + }; + }), + + "contains": markFunction(function( text ) { + text = text.replace( runescape, funescape ); + return function( elem ) { + return ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1; + }; + }), + + // "Whether an element is represented by a :lang() selector + // is based solely on the element's language value + // being equal to the identifier C, + // or beginning with the identifier C immediately followed by "-". + // The matching of C against the element's language value is performed case-insensitively. + // The identifier C does not have to be a valid language name." + // http://www.w3.org/TR/selectors/#lang-pseudo + "lang": markFunction( function( lang ) { + // lang value must be a valid identifier + if ( !ridentifier.test(lang || "") ) { + Sizzle.error( "unsupported lang: " + lang ); + } + lang = lang.replace( runescape, funescape ).toLowerCase(); + return function( elem ) { + var elemLang; + do { + if ( (elemLang = documentIsHTML ? + elem.lang : + elem.getAttribute("xml:lang") || elem.getAttribute("lang")) ) { + + elemLang = elemLang.toLowerCase(); + return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0; + } + } while ( (elem = elem.parentNode) && elem.nodeType === 1 ); + return false; + }; + }), + + // Miscellaneous + "target": function( elem ) { + var hash = window.location && window.location.hash; + return hash && hash.slice( 1 ) === elem.id; + }, + + "root": function( elem ) { + return elem === docElem; + }, + + "focus": function( elem ) { + return elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex); + }, + + // Boolean properties + "enabled": createDisabledPseudo( false ), + "disabled": createDisabledPseudo( true ), + + "checked": function( elem ) { + // In CSS3, :checked should return both checked and selected elements + // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked + var nodeName = elem.nodeName.toLowerCase(); + return (nodeName === "input" && !!elem.checked) || (nodeName === "option" && !!elem.selected); + }, + + "selected": function( elem ) { + // Accessing this property makes selected-by-default + // options in Safari work properly + if ( elem.parentNode ) { + elem.parentNode.selectedIndex; + } + + return elem.selected === true; + }, + + // Contents + "empty": function( elem ) { + // http://www.w3.org/TR/selectors/#empty-pseudo + // :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5), + // but not by others (comment: 8; processing instruction: 7; etc.) + // nodeType < 6 works because attributes (2) do not appear as children + for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { + if ( elem.nodeType < 6 ) { + return false; + } + } + return true; + }, + + "parent": function( elem ) { + return !Expr.pseudos["empty"]( elem ); + }, + + // Element/input types + "header": function( elem ) { + return rheader.test( elem.nodeName ); + }, + + "input": function( elem ) { + return rinputs.test( elem.nodeName ); + }, + + "button": function( elem ) { + var name = elem.nodeName.toLowerCase(); + return name === "input" && elem.type === "button" || name === "button"; + }, + + "text": function( elem ) { + var attr; + return elem.nodeName.toLowerCase() === "input" && + elem.type === "text" && + + // Support: IE<8 + // New HTML5 attribute values (e.g., "search") appear with elem.type === "text" + ( (attr = elem.getAttribute("type")) == null || attr.toLowerCase() === "text" ); + }, + + // Position-in-collection + "first": createPositionalPseudo(function() { + return [ 0 ]; + }), + + "last": createPositionalPseudo(function( matchIndexes, length ) { + return [ length - 1 ]; + }), + + "eq": createPositionalPseudo(function( matchIndexes, length, argument ) { + return [ argument < 0 ? argument + length : argument ]; + }), + + "even": createPositionalPseudo(function( matchIndexes, length ) { + var i = 0; + for ( ; i < length; i += 2 ) { + matchIndexes.push( i ); + } + return matchIndexes; + }), + + "odd": createPositionalPseudo(function( matchIndexes, length ) { + var i = 1; + for ( ; i < length; i += 2 ) { + matchIndexes.push( i ); + } + return matchIndexes; + }), + + "lt": createPositionalPseudo(function( matchIndexes, length, argument ) { + var i = argument < 0 ? argument + length : argument; + for ( ; --i >= 0; ) { + matchIndexes.push( i ); + } + return matchIndexes; + }), + + "gt": createPositionalPseudo(function( matchIndexes, length, argument ) { + var i = argument < 0 ? argument + length : argument; + for ( ; ++i < length; ) { + matchIndexes.push( i ); + } + return matchIndexes; + }) + } +}; + +Expr.pseudos["nth"] = Expr.pseudos["eq"]; + +// Add button/input type pseudos +for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) { + Expr.pseudos[ i ] = createInputPseudo( i ); +} +for ( i in { submit: true, reset: true } ) { + Expr.pseudos[ i ] = createButtonPseudo( i ); +} + +// Easy API for creating new setFilters +function setFilters() {} +setFilters.prototype = Expr.filters = Expr.pseudos; +Expr.setFilters = new setFilters(); + +tokenize = Sizzle.tokenize = function( selector, parseOnly ) { + var matched, match, tokens, type, + soFar, groups, preFilters, + cached = tokenCache[ selector + " " ]; + + if ( cached ) { + return parseOnly ? 0 : cached.slice( 0 ); + } + + soFar = selector; + groups = []; + preFilters = Expr.preFilter; + + while ( soFar ) { + + // Comma and first run + if ( !matched || (match = rcomma.exec( soFar )) ) { + if ( match ) { + // Don't consume trailing commas as valid + soFar = soFar.slice( match[0].length ) || soFar; + } + groups.push( (tokens = []) ); + } + + matched = false; + + // Combinators + if ( (match = rcombinators.exec( soFar )) ) { + matched = match.shift(); + tokens.push({ + value: matched, + // Cast descendant combinators to space + type: match[0].replace( rtrim, " " ) + }); + soFar = soFar.slice( matched.length ); + } + + // Filters + for ( type in Expr.filter ) { + if ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] || + (match = preFilters[ type ]( match ))) ) { + matched = match.shift(); + tokens.push({ + value: matched, + type: type, + matches: match + }); + soFar = soFar.slice( matched.length ); + } + } + + if ( !matched ) { + break; + } + } + + // Return the length of the invalid excess + // if we're just parsing + // Otherwise, throw an error or return tokens + return parseOnly ? + soFar.length : + soFar ? + Sizzle.error( selector ) : + // Cache the tokens + tokenCache( selector, groups ).slice( 0 ); +}; + +function toSelector( tokens ) { + var i = 0, + len = tokens.length, + selector = ""; + for ( ; i < len; i++ ) { + selector += tokens[i].value; + } + return selector; +} + +function addCombinator( matcher, combinator, base ) { + var dir = combinator.dir, + skip = combinator.next, + key = skip || dir, + checkNonElements = base && key === "parentNode", + doneName = done++; + + return combinator.first ? + // Check against closest ancestor/preceding element + function( elem, context, xml ) { + while ( (elem = elem[ dir ]) ) { + if ( elem.nodeType === 1 || checkNonElements ) { + return matcher( elem, context, xml ); + } + } + return false; + } : + + // Check against all ancestor/preceding elements + function( elem, context, xml ) { + var oldCache, uniqueCache, outerCache, + newCache = [ dirruns, doneName ]; + + // We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching + if ( xml ) { + while ( (elem = elem[ dir ]) ) { + if ( elem.nodeType === 1 || checkNonElements ) { + if ( matcher( elem, context, xml ) ) { + return true; + } + } + } + } else { + while ( (elem = elem[ dir ]) ) { + if ( elem.nodeType === 1 || checkNonElements ) { + outerCache = elem[ expando ] || (elem[ expando ] = {}); + + // Support: IE <9 only + // Defend against cloned attroperties (jQuery gh-1709) + uniqueCache = outerCache[ elem.uniqueID ] || (outerCache[ elem.uniqueID ] = {}); + + if ( skip && skip === elem.nodeName.toLowerCase() ) { + elem = elem[ dir ] || elem; + } else if ( (oldCache = uniqueCache[ key ]) && + oldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) { + + // Assign to newCache so results back-propagate to previous elements + return (newCache[ 2 ] = oldCache[ 2 ]); + } else { + // Reuse newcache so results back-propagate to previous elements + uniqueCache[ key ] = newCache; + + // A match means we're done; a fail means we have to keep checking + if ( (newCache[ 2 ] = matcher( elem, context, xml )) ) { + return true; + } + } + } + } + } + return false; + }; +} + +function elementMatcher( matchers ) { + return matchers.length > 1 ? + function( elem, context, xml ) { + var i = matchers.length; + while ( i-- ) { + if ( !matchers[i]( elem, context, xml ) ) { + return false; + } + } + return true; + } : + matchers[0]; +} + +function multipleContexts( selector, contexts, results ) { + var i = 0, + len = contexts.length; + for ( ; i < len; i++ ) { + Sizzle( selector, contexts[i], results ); + } + return results; +} + +function condense( unmatched, map, filter, context, xml ) { + var elem, + newUnmatched = [], + i = 0, + len = unmatched.length, + mapped = map != null; + + for ( ; i < len; i++ ) { + if ( (elem = unmatched[i]) ) { + if ( !filter || filter( elem, context, xml ) ) { + newUnmatched.push( elem ); + if ( mapped ) { + map.push( i ); + } + } + } + } + + return newUnmatched; +} + +function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) { + if ( postFilter && !postFilter[ expando ] ) { + postFilter = setMatcher( postFilter ); + } + if ( postFinder && !postFinder[ expando ] ) { + postFinder = setMatcher( postFinder, postSelector ); + } + return markFunction(function( seed, results, context, xml ) { + var temp, i, elem, + preMap = [], + postMap = [], + preexisting = results.length, + + // Get initial elements from seed or context + elems = seed || multipleContexts( selector || "*", context.nodeType ? [ context ] : context, [] ), + + // Prefilter to get matcher input, preserving a map for seed-results synchronization + matcherIn = preFilter && ( seed || !selector ) ? + condense( elems, preMap, preFilter, context, xml ) : + elems, + + matcherOut = matcher ? + // If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results, + postFinder || ( seed ? preFilter : preexisting || postFilter ) ? + + // ...intermediate processing is necessary + [] : + + // ...otherwise use results directly + results : + matcherIn; + + // Find primary matches + if ( matcher ) { + matcher( matcherIn, matcherOut, context, xml ); + } + + // Apply postFilter + if ( postFilter ) { + temp = condense( matcherOut, postMap ); + postFilter( temp, [], context, xml ); + + // Un-match failing elements by moving them back to matcherIn + i = temp.length; + while ( i-- ) { + if ( (elem = temp[i]) ) { + matcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem); + } + } + } + + if ( seed ) { + if ( postFinder || preFilter ) { + if ( postFinder ) { + // Get the final matcherOut by condensing this intermediate into postFinder contexts + temp = []; + i = matcherOut.length; + while ( i-- ) { + if ( (elem = matcherOut[i]) ) { + // Restore matcherIn since elem is not yet a final match + temp.push( (matcherIn[i] = elem) ); + } + } + postFinder( null, (matcherOut = []), temp, xml ); + } + + // Move matched elements from seed to results to keep them synchronized + i = matcherOut.length; + while ( i-- ) { + if ( (elem = matcherOut[i]) && + (temp = postFinder ? indexOf( seed, elem ) : preMap[i]) > -1 ) { + + seed[temp] = !(results[temp] = elem); + } + } + } + + // Add elements to results, through postFinder if defined + } else { + matcherOut = condense( + matcherOut === results ? + matcherOut.splice( preexisting, matcherOut.length ) : + matcherOut + ); + if ( postFinder ) { + postFinder( null, results, matcherOut, xml ); + } else { + push.apply( results, matcherOut ); + } + } + }); +} + +function matcherFromTokens( tokens ) { + var checkContext, matcher, j, + len = tokens.length, + leadingRelative = Expr.relative[ tokens[0].type ], + implicitRelative = leadingRelative || Expr.relative[" "], + i = leadingRelative ? 1 : 0, + + // The foundational matcher ensures that elements are reachable from top-level context(s) + matchContext = addCombinator( function( elem ) { + return elem === checkContext; + }, implicitRelative, true ), + matchAnyContext = addCombinator( function( elem ) { + return indexOf( checkContext, elem ) > -1; + }, implicitRelative, true ), + matchers = [ function( elem, context, xml ) { + var ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || ( + (checkContext = context).nodeType ? + matchContext( elem, context, xml ) : + matchAnyContext( elem, context, xml ) ); + // Avoid hanging onto element (issue #299) + checkContext = null; + return ret; + } ]; + + for ( ; i < len; i++ ) { + if ( (matcher = Expr.relative[ tokens[i].type ]) ) { + matchers = [ addCombinator(elementMatcher( matchers ), matcher) ]; + } else { + matcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches ); + + // Return special upon seeing a positional matcher + if ( matcher[ expando ] ) { + // Find the next relative operator (if any) for proper handling + j = ++i; + for ( ; j < len; j++ ) { + if ( Expr.relative[ tokens[j].type ] ) { + break; + } + } + return setMatcher( + i > 1 && elementMatcher( matchers ), + i > 1 && toSelector( + // If the preceding token was a descendant combinator, insert an implicit any-element `*` + tokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === " " ? "*" : "" }) + ).replace( rtrim, "$1" ), + matcher, + i < j && matcherFromTokens( tokens.slice( i, j ) ), + j < len && matcherFromTokens( (tokens = tokens.slice( j )) ), + j < len && toSelector( tokens ) + ); + } + matchers.push( matcher ); + } + } + + return elementMatcher( matchers ); +} + +function matcherFromGroupMatchers( elementMatchers, setMatchers ) { + var bySet = setMatchers.length > 0, + byElement = elementMatchers.length > 0, + superMatcher = function( seed, context, xml, results, outermost ) { + var elem, j, matcher, + matchedCount = 0, + i = "0", + unmatched = seed && [], + setMatched = [], + contextBackup = outermostContext, + // We must always have either seed elements or outermost context + elems = seed || byElement && Expr.find["TAG"]( "*", outermost ), + // Use integer dirruns iff this is the outermost matcher + dirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1), + len = elems.length; + + if ( outermost ) { + outermostContext = context === document || context || outermost; + } + + // Add elements passing elementMatchers directly to results + // Support: IE<9, Safari + // Tolerate NodeList properties (IE: "length"; Safari: ) matching elements by id + for ( ; i !== len && (elem = elems[i]) != null; i++ ) { + if ( byElement && elem ) { + j = 0; + if ( !context && elem.ownerDocument !== document ) { + setDocument( elem ); + xml = !documentIsHTML; + } + while ( (matcher = elementMatchers[j++]) ) { + if ( matcher( elem, context || document, xml) ) { + results.push( elem ); + break; + } + } + if ( outermost ) { + dirruns = dirrunsUnique; + } + } + + // Track unmatched elements for set filters + if ( bySet ) { + // They will have gone through all possible matchers + if ( (elem = !matcher && elem) ) { + matchedCount--; + } + + // Lengthen the array for every element, matched or not + if ( seed ) { + unmatched.push( elem ); + } + } + } + + // `i` is now the count of elements visited above, and adding it to `matchedCount` + // makes the latter nonnegative. + matchedCount += i; + + // Apply set filters to unmatched elements + // NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount` + // equals `i`), unless we didn't visit _any_ elements in the above loop because we have + // no element matchers and no seed. + // Incrementing an initially-string "0" `i` allows `i` to remain a string only in that + // case, which will result in a "00" `matchedCount` that differs from `i` but is also + // numerically zero. + if ( bySet && i !== matchedCount ) { + j = 0; + while ( (matcher = setMatchers[j++]) ) { + matcher( unmatched, setMatched, context, xml ); + } + + if ( seed ) { + // Reintegrate element matches to eliminate the need for sorting + if ( matchedCount > 0 ) { + while ( i-- ) { + if ( !(unmatched[i] || setMatched[i]) ) { + setMatched[i] = pop.call( results ); + } + } + } + + // Discard index placeholder values to get only actual matches + setMatched = condense( setMatched ); + } + + // Add matches to results + push.apply( results, setMatched ); + + // Seedless set matches succeeding multiple successful matchers stipulate sorting + if ( outermost && !seed && setMatched.length > 0 && + ( matchedCount + setMatchers.length ) > 1 ) { + + Sizzle.uniqueSort( results ); + } + } + + // Override manipulation of globals by nested matchers + if ( outermost ) { + dirruns = dirrunsUnique; + outermostContext = contextBackup; + } + + return unmatched; + }; + + return bySet ? + markFunction( superMatcher ) : + superMatcher; +} + +compile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) { + var i, + setMatchers = [], + elementMatchers = [], + cached = compilerCache[ selector + " " ]; + + if ( !cached ) { + // Generate a function of recursive functions that can be used to check each element + if ( !match ) { + match = tokenize( selector ); + } + i = match.length; + while ( i-- ) { + cached = matcherFromTokens( match[i] ); + if ( cached[ expando ] ) { + setMatchers.push( cached ); + } else { + elementMatchers.push( cached ); + } + } + + // Cache the compiled function + cached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) ); + + // Save selector and tokenization + cached.selector = selector; + } + return cached; +}; + +/** + * A low-level selection function that works with Sizzle's compiled + * selector functions + * @param {String|Function} selector A selector or a pre-compiled + * selector function built with Sizzle.compile + * @param {Element} context + * @param {Array} [results] + * @param {Array} [seed] A set of elements to match against + */ +select = Sizzle.select = function( selector, context, results, seed ) { + var i, tokens, token, type, find, + compiled = typeof selector === "function" && selector, + match = !seed && tokenize( (selector = compiled.selector || selector) ); + + results = results || []; + + // Try to minimize operations if there is only one selector in the list and no seed + // (the latter of which guarantees us context) + if ( match.length === 1 ) { + + // Reduce context if the leading compound selector is an ID + tokens = match[0] = match[0].slice( 0 ); + if ( tokens.length > 2 && (token = tokens[0]).type === "ID" && + context.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[1].type ] ) { + + context = ( Expr.find["ID"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0]; + if ( !context ) { + return results; + + // Precompiled matchers will still verify ancestry, so step up a level + } else if ( compiled ) { + context = context.parentNode; + } + + selector = selector.slice( tokens.shift().value.length ); + } + + // Fetch a seed set for right-to-left matching + i = matchExpr["needsContext"].test( selector ) ? 0 : tokens.length; + while ( i-- ) { + token = tokens[i]; + + // Abort if we hit a combinator + if ( Expr.relative[ (type = token.type) ] ) { + break; + } + if ( (find = Expr.find[ type ]) ) { + // Search, expanding context for leading sibling combinators + if ( (seed = find( + token.matches[0].replace( runescape, funescape ), + rsibling.test( tokens[0].type ) && testContext( context.parentNode ) || context + )) ) { + + // If seed is empty or no tokens remain, we can return early + tokens.splice( i, 1 ); + selector = seed.length && toSelector( tokens ); + if ( !selector ) { + push.apply( results, seed ); + return results; + } + + break; + } + } + } + } + + // Compile and execute a filtering function if one is not provided + // Provide `match` to avoid retokenization if we modified the selector above + ( compiled || compile( selector, match ) )( + seed, + context, + !documentIsHTML, + results, + !context || rsibling.test( selector ) && testContext( context.parentNode ) || context + ); + return results; +}; + +// One-time assignments + +// Sort stability +support.sortStable = expando.split("").sort( sortOrder ).join("") === expando; + +// Support: Chrome 14-35+ +// Always assume duplicates if they aren't passed to the comparison function +support.detectDuplicates = !!hasDuplicate; + +// Initialize against the default document +setDocument(); + +// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27) +// Detached nodes confoundingly follow *each other* +support.sortDetached = assert(function( el ) { + // Should return 1, but returns 4 (following) + return el.compareDocumentPosition( document.createElement("fieldset") ) & 1; +}); + +// Support: IE<8 +// Prevent attribute/property "interpolation" +// https://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx +if ( !assert(function( el ) { + el.innerHTML = ""; + return el.firstChild.getAttribute("href") === "#" ; +}) ) { + addHandle( "type|href|height|width", function( elem, name, isXML ) { + if ( !isXML ) { + return elem.getAttribute( name, name.toLowerCase() === "type" ? 1 : 2 ); + } + }); +} + +// Support: IE<9 +// Use defaultValue in place of getAttribute("value") +if ( !support.attributes || !assert(function( el ) { + el.innerHTML = ""; + el.firstChild.setAttribute( "value", "" ); + return el.firstChild.getAttribute( "value" ) === ""; +}) ) { + addHandle( "value", function( elem, name, isXML ) { + if ( !isXML && elem.nodeName.toLowerCase() === "input" ) { + return elem.defaultValue; + } + }); +} + +// Support: IE<9 +// Use getAttributeNode to fetch booleans when getAttribute lies +if ( !assert(function( el ) { + return el.getAttribute("disabled") == null; +}) ) { + addHandle( booleans, function( elem, name, isXML ) { + var val; + if ( !isXML ) { + return elem[ name ] === true ? name.toLowerCase() : + (val = elem.getAttributeNode( name )) && val.specified ? + val.value : + null; + } + }); +} + +return Sizzle; + +})( window ); + + + +jQuery.find = Sizzle; +jQuery.expr = Sizzle.selectors; + +// Deprecated +jQuery.expr[ ":" ] = jQuery.expr.pseudos; +jQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort; +jQuery.text = Sizzle.getText; +jQuery.isXMLDoc = Sizzle.isXML; +jQuery.contains = Sizzle.contains; +jQuery.escapeSelector = Sizzle.escape; + + + + +var dir = function( elem, dir, until ) { + var matched = [], + truncate = until !== undefined; + + while ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) { + if ( elem.nodeType === 1 ) { + if ( truncate && jQuery( elem ).is( until ) ) { + break; + } + matched.push( elem ); + } + } + return matched; +}; + + +var siblings = function( n, elem ) { + var matched = []; + + for ( ; n; n = n.nextSibling ) { + if ( n.nodeType === 1 && n !== elem ) { + matched.push( n ); + } + } + + return matched; +}; + + +var rneedsContext = jQuery.expr.match.needsContext; + + + +function nodeName( elem, name ) { + + return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase(); + +}; +var rsingleTag = ( /^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i ); + + + +// Implement the identical functionality for filter and not +function winnow( elements, qualifier, not ) { + if ( isFunction( qualifier ) ) { + return jQuery.grep( elements, function( elem, i ) { + return !!qualifier.call( elem, i, elem ) !== not; + } ); + } + + // Single element + if ( qualifier.nodeType ) { + return jQuery.grep( elements, function( elem ) { + return ( elem === qualifier ) !== not; + } ); + } + + // Arraylike of elements (jQuery, arguments, Array) + if ( typeof qualifier !== "string" ) { + return jQuery.grep( elements, function( elem ) { + return ( indexOf.call( qualifier, elem ) > -1 ) !== not; + } ); + } + + // Filtered directly for both simple and complex selectors + return jQuery.filter( qualifier, elements, not ); +} + +jQuery.filter = function( expr, elems, not ) { + var elem = elems[ 0 ]; + + if ( not ) { + expr = ":not(" + expr + ")"; + } + + if ( elems.length === 1 && elem.nodeType === 1 ) { + return jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : []; + } + + return jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) { + return elem.nodeType === 1; + } ) ); +}; + +jQuery.fn.extend( { + find: function( selector ) { + var i, ret, + len = this.length, + self = this; + + if ( typeof selector !== "string" ) { + return this.pushStack( jQuery( selector ).filter( function() { + for ( i = 0; i < len; i++ ) { + if ( jQuery.contains( self[ i ], this ) ) { + return true; + } + } + } ) ); + } + + ret = this.pushStack( [] ); + + for ( i = 0; i < len; i++ ) { + jQuery.find( selector, self[ i ], ret ); + } + + return len > 1 ? jQuery.uniqueSort( ret ) : ret; + }, + filter: function( selector ) { + return this.pushStack( winnow( this, selector || [], false ) ); + }, + not: function( selector ) { + return this.pushStack( winnow( this, selector || [], true ) ); + }, + is: function( selector ) { + return !!winnow( + this, + + // If this is a positional/relative selector, check membership in the returned set + // so $("p:first").is("p:last") won't return true for a doc with two "p". + typeof selector === "string" && rneedsContext.test( selector ) ? + jQuery( selector ) : + selector || [], + false + ).length; + } +} ); + + +// Initialize a jQuery object + + +// A central reference to the root jQuery(document) +var rootjQuery, + + // A simple way to check for HTML strings + // Prioritize #id over to avoid XSS via location.hash (#9521) + // Strict HTML recognition (#11290: must start with <) + // Shortcut simple #id case for speed + rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/, + + init = jQuery.fn.init = function( selector, context, root ) { + var match, elem; + + // HANDLE: $(""), $(null), $(undefined), $(false) + if ( !selector ) { + return this; + } + + // Method init() accepts an alternate rootjQuery + // so migrate can support jQuery.sub (gh-2101) + root = root || rootjQuery; + + // Handle HTML strings + if ( typeof selector === "string" ) { + if ( selector[ 0 ] === "<" && + selector[ selector.length - 1 ] === ">" && + selector.length >= 3 ) { + + // Assume that strings that start and end with <> are HTML and skip the regex check + match = [ null, selector, null ]; + + } else { + match = rquickExpr.exec( selector ); + } + + // Match html or make sure no context is specified for #id + if ( match && ( match[ 1 ] || !context ) ) { + + // HANDLE: $(html) -> $(array) + if ( match[ 1 ] ) { + context = context instanceof jQuery ? context[ 0 ] : context; + + // Option to run scripts is true for back-compat + // Intentionally let the error be thrown if parseHTML is not present + jQuery.merge( this, jQuery.parseHTML( + match[ 1 ], + context && context.nodeType ? context.ownerDocument || context : document, + true + ) ); + + // HANDLE: $(html, props) + if ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) { + for ( match in context ) { + + // Properties of context are called as methods if possible + if ( isFunction( this[ match ] ) ) { + this[ match ]( context[ match ] ); + + // ...and otherwise set as attributes + } else { + this.attr( match, context[ match ] ); + } + } + } + + return this; + + // HANDLE: $(#id) + } else { + elem = document.getElementById( match[ 2 ] ); + + if ( elem ) { + + // Inject the element directly into the jQuery object + this[ 0 ] = elem; + this.length = 1; + } + return this; + } + + // HANDLE: $(expr, $(...)) + } else if ( !context || context.jquery ) { + return ( context || root ).find( selector ); + + // HANDLE: $(expr, context) + // (which is just equivalent to: $(context).find(expr) + } else { + return this.constructor( context ).find( selector ); + } + + // HANDLE: $(DOMElement) + } else if ( selector.nodeType ) { + this[ 0 ] = selector; + this.length = 1; + return this; + + // HANDLE: $(function) + // Shortcut for document ready + } else if ( isFunction( selector ) ) { + return root.ready !== undefined ? + root.ready( selector ) : + + // Execute immediately if ready is not present + selector( jQuery ); + } + + return jQuery.makeArray( selector, this ); + }; + +// Give the init function the jQuery prototype for later instantiation +init.prototype = jQuery.fn; + +// Initialize central reference +rootjQuery = jQuery( document ); + + +var rparentsprev = /^(?:parents|prev(?:Until|All))/, + + // Methods guaranteed to produce a unique set when starting from a unique set + guaranteedUnique = { + children: true, + contents: true, + next: true, + prev: true + }; + +jQuery.fn.extend( { + has: function( target ) { + var targets = jQuery( target, this ), + l = targets.length; + + return this.filter( function() { + var i = 0; + for ( ; i < l; i++ ) { + if ( jQuery.contains( this, targets[ i ] ) ) { + return true; + } + } + } ); + }, + + closest: function( selectors, context ) { + var cur, + i = 0, + l = this.length, + matched = [], + targets = typeof selectors !== "string" && jQuery( selectors ); + + // Positional selectors never match, since there's no _selection_ context + if ( !rneedsContext.test( selectors ) ) { + for ( ; i < l; i++ ) { + for ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) { + + // Always skip document fragments + if ( cur.nodeType < 11 && ( targets ? + targets.index( cur ) > -1 : + + // Don't pass non-elements to Sizzle + cur.nodeType === 1 && + jQuery.find.matchesSelector( cur, selectors ) ) ) { + + matched.push( cur ); + break; + } + } + } + } + + return this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched ); + }, + + // Determine the position of an element within the set + index: function( elem ) { + + // No argument, return index in parent + if ( !elem ) { + return ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1; + } + + // Index in selector + if ( typeof elem === "string" ) { + return indexOf.call( jQuery( elem ), this[ 0 ] ); + } + + // Locate the position of the desired element + return indexOf.call( this, + + // If it receives a jQuery object, the first element is used + elem.jquery ? elem[ 0 ] : elem + ); + }, + + add: function( selector, context ) { + return this.pushStack( + jQuery.uniqueSort( + jQuery.merge( this.get(), jQuery( selector, context ) ) + ) + ); + }, + + addBack: function( selector ) { + return this.add( selector == null ? + this.prevObject : this.prevObject.filter( selector ) + ); + } +} ); + +function sibling( cur, dir ) { + while ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {} + return cur; +} + +jQuery.each( { + parent: function( elem ) { + var parent = elem.parentNode; + return parent && parent.nodeType !== 11 ? parent : null; + }, + parents: function( elem ) { + return dir( elem, "parentNode" ); + }, + parentsUntil: function( elem, i, until ) { + return dir( elem, "parentNode", until ); + }, + next: function( elem ) { + return sibling( elem, "nextSibling" ); + }, + prev: function( elem ) { + return sibling( elem, "previousSibling" ); + }, + nextAll: function( elem ) { + return dir( elem, "nextSibling" ); + }, + prevAll: function( elem ) { + return dir( elem, "previousSibling" ); + }, + nextUntil: function( elem, i, until ) { + return dir( elem, "nextSibling", until ); + }, + prevUntil: function( elem, i, until ) { + return dir( elem, "previousSibling", until ); + }, + siblings: function( elem ) { + return siblings( ( elem.parentNode || {} ).firstChild, elem ); + }, + children: function( elem ) { + return siblings( elem.firstChild ); + }, + contents: function( elem ) { + if ( nodeName( elem, "iframe" ) ) { + return elem.contentDocument; + } + + // Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only + // Treat the template element as a regular one in browsers that + // don't support it. + if ( nodeName( elem, "template" ) ) { + elem = elem.content || elem; + } + + return jQuery.merge( [], elem.childNodes ); + } +}, function( name, fn ) { + jQuery.fn[ name ] = function( until, selector ) { + var matched = jQuery.map( this, fn, until ); + + if ( name.slice( -5 ) !== "Until" ) { + selector = until; + } + + if ( selector && typeof selector === "string" ) { + matched = jQuery.filter( selector, matched ); + } + + if ( this.length > 1 ) { + + // Remove duplicates + if ( !guaranteedUnique[ name ] ) { + jQuery.uniqueSort( matched ); + } + + // Reverse order for parents* and prev-derivatives + if ( rparentsprev.test( name ) ) { + matched.reverse(); + } + } + + return this.pushStack( matched ); + }; +} ); +var rnothtmlwhite = ( /[^\x20\t\r\n\f]+/g ); + + + +// Convert String-formatted options into Object-formatted ones +function createOptions( options ) { + var object = {}; + jQuery.each( options.match( rnothtmlwhite ) || [], function( _, flag ) { + object[ flag ] = true; + } ); + return object; +} + +/* + * Create a callback list using the following parameters: + * + * options: an optional list of space-separated options that will change how + * the callback list behaves or a more traditional option object + * + * By default a callback list will act like an event callback list and can be + * "fired" multiple times. + * + * Possible options: + * + * once: will ensure the callback list can only be fired once (like a Deferred) + * + * memory: will keep track of previous values and will call any callback added + * after the list has been fired right away with the latest "memorized" + * values (like a Deferred) + * + * unique: will ensure a callback can only be added once (no duplicate in the list) + * + * stopOnFalse: interrupt callings when a callback returns false + * + */ +jQuery.Callbacks = function( options ) { + + // Convert options from String-formatted to Object-formatted if needed + // (we check in cache first) + options = typeof options === "string" ? + createOptions( options ) : + jQuery.extend( {}, options ); + + var // Flag to know if list is currently firing + firing, + + // Last fire value for non-forgettable lists + memory, + + // Flag to know if list was already fired + fired, + + // Flag to prevent firing + locked, + + // Actual callback list + list = [], + + // Queue of execution data for repeatable lists + queue = [], + + // Index of currently firing callback (modified by add/remove as needed) + firingIndex = -1, + + // Fire callbacks + fire = function() { + + // Enforce single-firing + locked = locked || options.once; + + // Execute callbacks for all pending executions, + // respecting firingIndex overrides and runtime changes + fired = firing = true; + for ( ; queue.length; firingIndex = -1 ) { + memory = queue.shift(); + while ( ++firingIndex < list.length ) { + + // Run callback and check for early termination + if ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false && + options.stopOnFalse ) { + + // Jump to end and forget the data so .add doesn't re-fire + firingIndex = list.length; + memory = false; + } + } + } + + // Forget the data if we're done with it + if ( !options.memory ) { + memory = false; + } + + firing = false; + + // Clean up if we're done firing for good + if ( locked ) { + + // Keep an empty list if we have data for future add calls + if ( memory ) { + list = []; + + // Otherwise, this object is spent + } else { + list = ""; + } + } + }, + + // Actual Callbacks object + self = { + + // Add a callback or a collection of callbacks to the list + add: function() { + if ( list ) { + + // If we have memory from a past run, we should fire after adding + if ( memory && !firing ) { + firingIndex = list.length - 1; + queue.push( memory ); + } + + ( function add( args ) { + jQuery.each( args, function( _, arg ) { + if ( isFunction( arg ) ) { + if ( !options.unique || !self.has( arg ) ) { + list.push( arg ); + } + } else if ( arg && arg.length && toType( arg ) !== "string" ) { + + // Inspect recursively + add( arg ); + } + } ); + } )( arguments ); + + if ( memory && !firing ) { + fire(); + } + } + return this; + }, + + // Remove a callback from the list + remove: function() { + jQuery.each( arguments, function( _, arg ) { + var index; + while ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) { + list.splice( index, 1 ); + + // Handle firing indexes + if ( index <= firingIndex ) { + firingIndex--; + } + } + } ); + return this; + }, + + // Check if a given callback is in the list. + // If no argument is given, return whether or not list has callbacks attached. + has: function( fn ) { + return fn ? + jQuery.inArray( fn, list ) > -1 : + list.length > 0; + }, + + // Remove all callbacks from the list + empty: function() { + if ( list ) { + list = []; + } + return this; + }, + + // Disable .fire and .add + // Abort any current/pending executions + // Clear all callbacks and values + disable: function() { + locked = queue = []; + list = memory = ""; + return this; + }, + disabled: function() { + return !list; + }, + + // Disable .fire + // Also disable .add unless we have memory (since it would have no effect) + // Abort any pending executions + lock: function() { + locked = queue = []; + if ( !memory && !firing ) { + list = memory = ""; + } + return this; + }, + locked: function() { + return !!locked; + }, + + // Call all callbacks with the given context and arguments + fireWith: function( context, args ) { + if ( !locked ) { + args = args || []; + args = [ context, args.slice ? args.slice() : args ]; + queue.push( args ); + if ( !firing ) { + fire(); + } + } + return this; + }, + + // Call all the callbacks with the given arguments + fire: function() { + self.fireWith( this, arguments ); + return this; + }, + + // To know if the callbacks have already been called at least once + fired: function() { + return !!fired; + } + }; + + return self; +}; + + +function Identity( v ) { + return v; +} +function Thrower( ex ) { + throw ex; +} + +function adoptValue( value, resolve, reject, noValue ) { + var method; + + try { + + // Check for promise aspect first to privilege synchronous behavior + if ( value && isFunction( ( method = value.promise ) ) ) { + method.call( value ).done( resolve ).fail( reject ); + + // Other thenables + } else if ( value && isFunction( ( method = value.then ) ) ) { + method.call( value, resolve, reject ); + + // Other non-thenables + } else { + + // Control `resolve` arguments by letting Array#slice cast boolean `noValue` to integer: + // * false: [ value ].slice( 0 ) => resolve( value ) + // * true: [ value ].slice( 1 ) => resolve() + resolve.apply( undefined, [ value ].slice( noValue ) ); + } + + // For Promises/A+, convert exceptions into rejections + // Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in + // Deferred#then to conditionally suppress rejection. + } catch ( value ) { + + // Support: Android 4.0 only + // Strict mode functions invoked without .call/.apply get global-object context + reject.apply( undefined, [ value ] ); + } +} + +jQuery.extend( { + + Deferred: function( func ) { + var tuples = [ + + // action, add listener, callbacks, + // ... .then handlers, argument index, [final state] + [ "notify", "progress", jQuery.Callbacks( "memory" ), + jQuery.Callbacks( "memory" ), 2 ], + [ "resolve", "done", jQuery.Callbacks( "once memory" ), + jQuery.Callbacks( "once memory" ), 0, "resolved" ], + [ "reject", "fail", jQuery.Callbacks( "once memory" ), + jQuery.Callbacks( "once memory" ), 1, "rejected" ] + ], + state = "pending", + promise = { + state: function() { + return state; + }, + always: function() { + deferred.done( arguments ).fail( arguments ); + return this; + }, + "catch": function( fn ) { + return promise.then( null, fn ); + }, + + // Keep pipe for back-compat + pipe: function( /* fnDone, fnFail, fnProgress */ ) { + var fns = arguments; + + return jQuery.Deferred( function( newDefer ) { + jQuery.each( tuples, function( i, tuple ) { + + // Map tuples (progress, done, fail) to arguments (done, fail, progress) + var fn = isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ]; + + // deferred.progress(function() { bind to newDefer or newDefer.notify }) + // deferred.done(function() { bind to newDefer or newDefer.resolve }) + // deferred.fail(function() { bind to newDefer or newDefer.reject }) + deferred[ tuple[ 1 ] ]( function() { + var returned = fn && fn.apply( this, arguments ); + if ( returned && isFunction( returned.promise ) ) { + returned.promise() + .progress( newDefer.notify ) + .done( newDefer.resolve ) + .fail( newDefer.reject ); + } else { + newDefer[ tuple[ 0 ] + "With" ]( + this, + fn ? [ returned ] : arguments + ); + } + } ); + } ); + fns = null; + } ).promise(); + }, + then: function( onFulfilled, onRejected, onProgress ) { + var maxDepth = 0; + function resolve( depth, deferred, handler, special ) { + return function() { + var that = this, + args = arguments, + mightThrow = function() { + var returned, then; + + // Support: Promises/A+ section 2.3.3.3.3 + // https://promisesaplus.com/#point-59 + // Ignore double-resolution attempts + if ( depth < maxDepth ) { + return; + } + + returned = handler.apply( that, args ); + + // Support: Promises/A+ section 2.3.1 + // https://promisesaplus.com/#point-48 + if ( returned === deferred.promise() ) { + throw new TypeError( "Thenable self-resolution" ); + } + + // Support: Promises/A+ sections 2.3.3.1, 3.5 + // https://promisesaplus.com/#point-54 + // https://promisesaplus.com/#point-75 + // Retrieve `then` only once + then = returned && + + // Support: Promises/A+ section 2.3.4 + // https://promisesaplus.com/#point-64 + // Only check objects and functions for thenability + ( typeof returned === "object" || + typeof returned === "function" ) && + returned.then; + + // Handle a returned thenable + if ( isFunction( then ) ) { + + // Special processors (notify) just wait for resolution + if ( special ) { + then.call( + returned, + resolve( maxDepth, deferred, Identity, special ), + resolve( maxDepth, deferred, Thrower, special ) + ); + + // Normal processors (resolve) also hook into progress + } else { + + // ...and disregard older resolution values + maxDepth++; + + then.call( + returned, + resolve( maxDepth, deferred, Identity, special ), + resolve( maxDepth, deferred, Thrower, special ), + resolve( maxDepth, deferred, Identity, + deferred.notifyWith ) + ); + } + + // Handle all other returned values + } else { + + // Only substitute handlers pass on context + // and multiple values (non-spec behavior) + if ( handler !== Identity ) { + that = undefined; + args = [ returned ]; + } + + // Process the value(s) + // Default process is resolve + ( special || deferred.resolveWith )( that, args ); + } + }, + + // Only normal processors (resolve) catch and reject exceptions + process = special ? + mightThrow : + function() { + try { + mightThrow(); + } catch ( e ) { + + if ( jQuery.Deferred.exceptionHook ) { + jQuery.Deferred.exceptionHook( e, + process.stackTrace ); + } + + // Support: Promises/A+ section 2.3.3.3.4.1 + // https://promisesaplus.com/#point-61 + // Ignore post-resolution exceptions + if ( depth + 1 >= maxDepth ) { + + // Only substitute handlers pass on context + // and multiple values (non-spec behavior) + if ( handler !== Thrower ) { + that = undefined; + args = [ e ]; + } + + deferred.rejectWith( that, args ); + } + } + }; + + // Support: Promises/A+ section 2.3.3.3.1 + // https://promisesaplus.com/#point-57 + // Re-resolve promises immediately to dodge false rejection from + // subsequent errors + if ( depth ) { + process(); + } else { + + // Call an optional hook to record the stack, in case of exception + // since it's otherwise lost when execution goes async + if ( jQuery.Deferred.getStackHook ) { + process.stackTrace = jQuery.Deferred.getStackHook(); + } + window.setTimeout( process ); + } + }; + } + + return jQuery.Deferred( function( newDefer ) { + + // progress_handlers.add( ... ) + tuples[ 0 ][ 3 ].add( + resolve( + 0, + newDefer, + isFunction( onProgress ) ? + onProgress : + Identity, + newDefer.notifyWith + ) + ); + + // fulfilled_handlers.add( ... ) + tuples[ 1 ][ 3 ].add( + resolve( + 0, + newDefer, + isFunction( onFulfilled ) ? + onFulfilled : + Identity + ) + ); + + // rejected_handlers.add( ... ) + tuples[ 2 ][ 3 ].add( + resolve( + 0, + newDefer, + isFunction( onRejected ) ? + onRejected : + Thrower + ) + ); + } ).promise(); + }, + + // Get a promise for this deferred + // If obj is provided, the promise aspect is added to the object + promise: function( obj ) { + return obj != null ? jQuery.extend( obj, promise ) : promise; + } + }, + deferred = {}; + + // Add list-specific methods + jQuery.each( tuples, function( i, tuple ) { + var list = tuple[ 2 ], + stateString = tuple[ 5 ]; + + // promise.progress = list.add + // promise.done = list.add + // promise.fail = list.add + promise[ tuple[ 1 ] ] = list.add; + + // Handle state + if ( stateString ) { + list.add( + function() { + + // state = "resolved" (i.e., fulfilled) + // state = "rejected" + state = stateString; + }, + + // rejected_callbacks.disable + // fulfilled_callbacks.disable + tuples[ 3 - i ][ 2 ].disable, + + // rejected_handlers.disable + // fulfilled_handlers.disable + tuples[ 3 - i ][ 3 ].disable, + + // progress_callbacks.lock + tuples[ 0 ][ 2 ].lock, + + // progress_handlers.lock + tuples[ 0 ][ 3 ].lock + ); + } + + // progress_handlers.fire + // fulfilled_handlers.fire + // rejected_handlers.fire + list.add( tuple[ 3 ].fire ); + + // deferred.notify = function() { deferred.notifyWith(...) } + // deferred.resolve = function() { deferred.resolveWith(...) } + // deferred.reject = function() { deferred.rejectWith(...) } + deferred[ tuple[ 0 ] ] = function() { + deferred[ tuple[ 0 ] + "With" ]( this === deferred ? undefined : this, arguments ); + return this; + }; + + // deferred.notifyWith = list.fireWith + // deferred.resolveWith = list.fireWith + // deferred.rejectWith = list.fireWith + deferred[ tuple[ 0 ] + "With" ] = list.fireWith; + } ); + + // Make the deferred a promise + promise.promise( deferred ); + + // Call given func if any + if ( func ) { + func.call( deferred, deferred ); + } + + // All done! + return deferred; + }, + + // Deferred helper + when: function( singleValue ) { + var + + // count of uncompleted subordinates + remaining = arguments.length, + + // count of unprocessed arguments + i = remaining, + + // subordinate fulfillment data + resolveContexts = Array( i ), + resolveValues = slice.call( arguments ), + + // the master Deferred + master = jQuery.Deferred(), + + // subordinate callback factory + updateFunc = function( i ) { + return function( value ) { + resolveContexts[ i ] = this; + resolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value; + if ( !( --remaining ) ) { + master.resolveWith( resolveContexts, resolveValues ); + } + }; + }; + + // Single- and empty arguments are adopted like Promise.resolve + if ( remaining <= 1 ) { + adoptValue( singleValue, master.done( updateFunc( i ) ).resolve, master.reject, + !remaining ); + + // Use .then() to unwrap secondary thenables (cf. gh-3000) + if ( master.state() === "pending" || + isFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) { + + return master.then(); + } + } + + // Multiple arguments are aggregated like Promise.all array elements + while ( i-- ) { + adoptValue( resolveValues[ i ], updateFunc( i ), master.reject ); + } + + return master.promise(); + } +} ); + + +// These usually indicate a programmer mistake during development, +// warn about them ASAP rather than swallowing them by default. +var rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/; + +jQuery.Deferred.exceptionHook = function( error, stack ) { + + // Support: IE 8 - 9 only + // Console exists when dev tools are open, which can happen at any time + if ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) { + window.console.warn( "jQuery.Deferred exception: " + error.message, error.stack, stack ); + } +}; + + + + +jQuery.readyException = function( error ) { + window.setTimeout( function() { + throw error; + } ); +}; + + + + +// The deferred used on DOM ready +var readyList = jQuery.Deferred(); + +jQuery.fn.ready = function( fn ) { + + readyList + .then( fn ) + + // Wrap jQuery.readyException in a function so that the lookup + // happens at the time of error handling instead of callback + // registration. + .catch( function( error ) { + jQuery.readyException( error ); + } ); + + return this; +}; + +jQuery.extend( { + + // Is the DOM ready to be used? Set to true once it occurs. + isReady: false, + + // A counter to track how many items to wait for before + // the ready event fires. See #6781 + readyWait: 1, + + // Handle when the DOM is ready + ready: function( wait ) { + + // Abort if there are pending holds or we're already ready + if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) { + return; + } + + // Remember that the DOM is ready + jQuery.isReady = true; + + // If a normal DOM Ready event fired, decrement, and wait if need be + if ( wait !== true && --jQuery.readyWait > 0 ) { + return; + } + + // If there are functions bound, to execute + readyList.resolveWith( document, [ jQuery ] ); + } +} ); + +jQuery.ready.then = readyList.then; + +// The ready event handler and self cleanup method +function completed() { + document.removeEventListener( "DOMContentLoaded", completed ); + window.removeEventListener( "load", completed ); + jQuery.ready(); +} + +// Catch cases where $(document).ready() is called +// after the browser event has already occurred. +// Support: IE <=9 - 10 only +// Older IE sometimes signals "interactive" too soon +if ( document.readyState === "complete" || + ( document.readyState !== "loading" && !document.documentElement.doScroll ) ) { + + // Handle it asynchronously to allow scripts the opportunity to delay ready + window.setTimeout( jQuery.ready ); + +} else { + + // Use the handy event callback + document.addEventListener( "DOMContentLoaded", completed ); + + // A fallback to window.onload, that will always work + window.addEventListener( "load", completed ); +} + + + + +// Multifunctional method to get and set values of a collection +// The value/s can optionally be executed if it's a function +var access = function( elems, fn, key, value, chainable, emptyGet, raw ) { + var i = 0, + len = elems.length, + bulk = key == null; + + // Sets many values + if ( toType( key ) === "object" ) { + chainable = true; + for ( i in key ) { + access( elems, fn, i, key[ i ], true, emptyGet, raw ); + } + + // Sets one value + } else if ( value !== undefined ) { + chainable = true; + + if ( !isFunction( value ) ) { + raw = true; + } + + if ( bulk ) { + + // Bulk operations run against the entire set + if ( raw ) { + fn.call( elems, value ); + fn = null; + + // ...except when executing function values + } else { + bulk = fn; + fn = function( elem, key, value ) { + return bulk.call( jQuery( elem ), value ); + }; + } + } + + if ( fn ) { + for ( ; i < len; i++ ) { + fn( + elems[ i ], key, raw ? + value : + value.call( elems[ i ], i, fn( elems[ i ], key ) ) + ); + } + } + } + + if ( chainable ) { + return elems; + } + + // Gets + if ( bulk ) { + return fn.call( elems ); + } + + return len ? fn( elems[ 0 ], key ) : emptyGet; +}; + + +// Matches dashed string for camelizing +var rmsPrefix = /^-ms-/, + rdashAlpha = /-([a-z])/g; + +// Used by camelCase as callback to replace() +function fcamelCase( all, letter ) { + return letter.toUpperCase(); +} + +// Convert dashed to camelCase; used by the css and data modules +// Support: IE <=9 - 11, Edge 12 - 15 +// Microsoft forgot to hump their vendor prefix (#9572) +function camelCase( string ) { + return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase ); +} +var acceptData = function( owner ) { + + // Accepts only: + // - Node + // - Node.ELEMENT_NODE + // - Node.DOCUMENT_NODE + // - Object + // - Any + return owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType ); +}; + + + + +function Data() { + this.expando = jQuery.expando + Data.uid++; +} + +Data.uid = 1; + +Data.prototype = { + + cache: function( owner ) { + + // Check if the owner object already has a cache + var value = owner[ this.expando ]; + + // If not, create one + if ( !value ) { + value = {}; + + // We can accept data for non-element nodes in modern browsers, + // but we should not, see #8335. + // Always return an empty object. + if ( acceptData( owner ) ) { + + // If it is a node unlikely to be stringify-ed or looped over + // use plain assignment + if ( owner.nodeType ) { + owner[ this.expando ] = value; + + // Otherwise secure it in a non-enumerable property + // configurable must be true to allow the property to be + // deleted when data is removed + } else { + Object.defineProperty( owner, this.expando, { + value: value, + configurable: true + } ); + } + } + } + + return value; + }, + set: function( owner, data, value ) { + var prop, + cache = this.cache( owner ); + + // Handle: [ owner, key, value ] args + // Always use camelCase key (gh-2257) + if ( typeof data === "string" ) { + cache[ camelCase( data ) ] = value; + + // Handle: [ owner, { properties } ] args + } else { + + // Copy the properties one-by-one to the cache object + for ( prop in data ) { + cache[ camelCase( prop ) ] = data[ prop ]; + } + } + return cache; + }, + get: function( owner, key ) { + return key === undefined ? + this.cache( owner ) : + + // Always use camelCase key (gh-2257) + owner[ this.expando ] && owner[ this.expando ][ camelCase( key ) ]; + }, + access: function( owner, key, value ) { + + // In cases where either: + // + // 1. No key was specified + // 2. A string key was specified, but no value provided + // + // Take the "read" path and allow the get method to determine + // which value to return, respectively either: + // + // 1. The entire cache object + // 2. The data stored at the key + // + if ( key === undefined || + ( ( key && typeof key === "string" ) && value === undefined ) ) { + + return this.get( owner, key ); + } + + // When the key is not a string, or both a key and value + // are specified, set or extend (existing objects) with either: + // + // 1. An object of properties + // 2. A key and value + // + this.set( owner, key, value ); + + // Since the "set" path can have two possible entry points + // return the expected data based on which path was taken[*] + return value !== undefined ? value : key; + }, + remove: function( owner, key ) { + var i, + cache = owner[ this.expando ]; + + if ( cache === undefined ) { + return; + } + + if ( key !== undefined ) { + + // Support array or space separated string of keys + if ( Array.isArray( key ) ) { + + // If key is an array of keys... + // We always set camelCase keys, so remove that. + key = key.map( camelCase ); + } else { + key = camelCase( key ); + + // If a key with the spaces exists, use it. + // Otherwise, create an array by matching non-whitespace + key = key in cache ? + [ key ] : + ( key.match( rnothtmlwhite ) || [] ); + } + + i = key.length; + + while ( i-- ) { + delete cache[ key[ i ] ]; + } + } + + // Remove the expando if there's no more data + if ( key === undefined || jQuery.isEmptyObject( cache ) ) { + + // Support: Chrome <=35 - 45 + // Webkit & Blink performance suffers when deleting properties + // from DOM nodes, so set to undefined instead + // https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted) + if ( owner.nodeType ) { + owner[ this.expando ] = undefined; + } else { + delete owner[ this.expando ]; + } + } + }, + hasData: function( owner ) { + var cache = owner[ this.expando ]; + return cache !== undefined && !jQuery.isEmptyObject( cache ); + } +}; +var dataPriv = new Data(); + +var dataUser = new Data(); + + + +// Implementation Summary +// +// 1. Enforce API surface and semantic compatibility with 1.9.x branch +// 2. Improve the module's maintainability by reducing the storage +// paths to a single mechanism. +// 3. Use the same single mechanism to support "private" and "user" data. +// 4. _Never_ expose "private" data to user code (TODO: Drop _data, _removeData) +// 5. Avoid exposing implementation details on user objects (eg. expando properties) +// 6. Provide a clear path for implementation upgrade to WeakMap in 2014 + +var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/, + rmultiDash = /[A-Z]/g; + +function getData( data ) { + if ( data === "true" ) { + return true; + } + + if ( data === "false" ) { + return false; + } + + if ( data === "null" ) { + return null; + } + + // Only convert to a number if it doesn't change the string + if ( data === +data + "" ) { + return +data; + } + + if ( rbrace.test( data ) ) { + return JSON.parse( data ); + } + + return data; +} + +function dataAttr( elem, key, data ) { + var name; + + // If nothing was found internally, try to fetch any + // data from the HTML5 data-* attribute + if ( data === undefined && elem.nodeType === 1 ) { + name = "data-" + key.replace( rmultiDash, "-$&" ).toLowerCase(); + data = elem.getAttribute( name ); + + if ( typeof data === "string" ) { + try { + data = getData( data ); + } catch ( e ) {} + + // Make sure we set the data so it isn't changed later + dataUser.set( elem, key, data ); + } else { + data = undefined; + } + } + return data; +} + +jQuery.extend( { + hasData: function( elem ) { + return dataUser.hasData( elem ) || dataPriv.hasData( elem ); + }, + + data: function( elem, name, data ) { + return dataUser.access( elem, name, data ); + }, + + removeData: function( elem, name ) { + dataUser.remove( elem, name ); + }, + + // TODO: Now that all calls to _data and _removeData have been replaced + // with direct calls to dataPriv methods, these can be deprecated. + _data: function( elem, name, data ) { + return dataPriv.access( elem, name, data ); + }, + + _removeData: function( elem, name ) { + dataPriv.remove( elem, name ); + } +} ); + +jQuery.fn.extend( { + data: function( key, value ) { + var i, name, data, + elem = this[ 0 ], + attrs = elem && elem.attributes; + + // Gets all values + if ( key === undefined ) { + if ( this.length ) { + data = dataUser.get( elem ); + + if ( elem.nodeType === 1 && !dataPriv.get( elem, "hasDataAttrs" ) ) { + i = attrs.length; + while ( i-- ) { + + // Support: IE 11 only + // The attrs elements can be null (#14894) + if ( attrs[ i ] ) { + name = attrs[ i ].name; + if ( name.indexOf( "data-" ) === 0 ) { + name = camelCase( name.slice( 5 ) ); + dataAttr( elem, name, data[ name ] ); + } + } + } + dataPriv.set( elem, "hasDataAttrs", true ); + } + } + + return data; + } + + // Sets multiple values + if ( typeof key === "object" ) { + return this.each( function() { + dataUser.set( this, key ); + } ); + } + + return access( this, function( value ) { + var data; + + // The calling jQuery object (element matches) is not empty + // (and therefore has an element appears at this[ 0 ]) and the + // `value` parameter was not undefined. An empty jQuery object + // will result in `undefined` for elem = this[ 0 ] which will + // throw an exception if an attempt to read a data cache is made. + if ( elem && value === undefined ) { + + // Attempt to get data from the cache + // The key will always be camelCased in Data + data = dataUser.get( elem, key ); + if ( data !== undefined ) { + return data; + } + + // Attempt to "discover" the data in + // HTML5 custom data-* attrs + data = dataAttr( elem, key ); + if ( data !== undefined ) { + return data; + } + + // We tried really hard, but the data doesn't exist. + return; + } + + // Set the data... + this.each( function() { + + // We always store the camelCased key + dataUser.set( this, key, value ); + } ); + }, null, value, arguments.length > 1, null, true ); + }, + + removeData: function( key ) { + return this.each( function() { + dataUser.remove( this, key ); + } ); + } +} ); + + +jQuery.extend( { + queue: function( elem, type, data ) { + var queue; + + if ( elem ) { + type = ( type || "fx" ) + "queue"; + queue = dataPriv.get( elem, type ); + + // Speed up dequeue by getting out quickly if this is just a lookup + if ( data ) { + if ( !queue || Array.isArray( data ) ) { + queue = dataPriv.access( elem, type, jQuery.makeArray( data ) ); + } else { + queue.push( data ); + } + } + return queue || []; + } + }, + + dequeue: function( elem, type ) { + type = type || "fx"; + + var queue = jQuery.queue( elem, type ), + startLength = queue.length, + fn = queue.shift(), + hooks = jQuery._queueHooks( elem, type ), + next = function() { + jQuery.dequeue( elem, type ); + }; + + // If the fx queue is dequeued, always remove the progress sentinel + if ( fn === "inprogress" ) { + fn = queue.shift(); + startLength--; + } + + if ( fn ) { + + // Add a progress sentinel to prevent the fx queue from being + // automatically dequeued + if ( type === "fx" ) { + queue.unshift( "inprogress" ); + } + + // Clear up the last queue stop function + delete hooks.stop; + fn.call( elem, next, hooks ); + } + + if ( !startLength && hooks ) { + hooks.empty.fire(); + } + }, + + // Not public - generate a queueHooks object, or return the current one + _queueHooks: function( elem, type ) { + var key = type + "queueHooks"; + return dataPriv.get( elem, key ) || dataPriv.access( elem, key, { + empty: jQuery.Callbacks( "once memory" ).add( function() { + dataPriv.remove( elem, [ type + "queue", key ] ); + } ) + } ); + } +} ); + +jQuery.fn.extend( { + queue: function( type, data ) { + var setter = 2; + + if ( typeof type !== "string" ) { + data = type; + type = "fx"; + setter--; + } + + if ( arguments.length < setter ) { + return jQuery.queue( this[ 0 ], type ); + } + + return data === undefined ? + this : + this.each( function() { + var queue = jQuery.queue( this, type, data ); + + // Ensure a hooks for this queue + jQuery._queueHooks( this, type ); + + if ( type === "fx" && queue[ 0 ] !== "inprogress" ) { + jQuery.dequeue( this, type ); + } + } ); + }, + dequeue: function( type ) { + return this.each( function() { + jQuery.dequeue( this, type ); + } ); + }, + clearQueue: function( type ) { + return this.queue( type || "fx", [] ); + }, + + // Get a promise resolved when queues of a certain type + // are emptied (fx is the type by default) + promise: function( type, obj ) { + var tmp, + count = 1, + defer = jQuery.Deferred(), + elements = this, + i = this.length, + resolve = function() { + if ( !( --count ) ) { + defer.resolveWith( elements, [ elements ] ); + } + }; + + if ( typeof type !== "string" ) { + obj = type; + type = undefined; + } + type = type || "fx"; + + while ( i-- ) { + tmp = dataPriv.get( elements[ i ], type + "queueHooks" ); + if ( tmp && tmp.empty ) { + count++; + tmp.empty.add( resolve ); + } + } + resolve(); + return defer.promise( obj ); + } +} ); +var pnum = ( /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/ ).source; + +var rcssNum = new RegExp( "^(?:([+-])=|)(" + pnum + ")([a-z%]*)$", "i" ); + + +var cssExpand = [ "Top", "Right", "Bottom", "Left" ]; + +var isHiddenWithinTree = function( elem, el ) { + + // isHiddenWithinTree might be called from jQuery#filter function; + // in that case, element will be second argument + elem = el || elem; + + // Inline style trumps all + return elem.style.display === "none" || + elem.style.display === "" && + + // Otherwise, check computed style + // Support: Firefox <=43 - 45 + // Disconnected elements can have computed display: none, so first confirm that elem is + // in the document. + jQuery.contains( elem.ownerDocument, elem ) && + + jQuery.css( elem, "display" ) === "none"; + }; + +var swap = function( elem, options, callback, args ) { + var ret, name, + old = {}; + + // Remember the old values, and insert the new ones + for ( name in options ) { + old[ name ] = elem.style[ name ]; + elem.style[ name ] = options[ name ]; + } + + ret = callback.apply( elem, args || [] ); + + // Revert the old values + for ( name in options ) { + elem.style[ name ] = old[ name ]; + } + + return ret; +}; + + + + +function adjustCSS( elem, prop, valueParts, tween ) { + var adjusted, scale, + maxIterations = 20, + currentValue = tween ? + function() { + return tween.cur(); + } : + function() { + return jQuery.css( elem, prop, "" ); + }, + initial = currentValue(), + unit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? "" : "px" ), + + // Starting value computation is required for potential unit mismatches + initialInUnit = ( jQuery.cssNumber[ prop ] || unit !== "px" && +initial ) && + rcssNum.exec( jQuery.css( elem, prop ) ); + + if ( initialInUnit && initialInUnit[ 3 ] !== unit ) { + + // Support: Firefox <=54 + // Halve the iteration target value to prevent interference from CSS upper bounds (gh-2144) + initial = initial / 2; + + // Trust units reported by jQuery.css + unit = unit || initialInUnit[ 3 ]; + + // Iteratively approximate from a nonzero starting point + initialInUnit = +initial || 1; + + while ( maxIterations-- ) { + + // Evaluate and update our best guess (doubling guesses that zero out). + // Finish if the scale equals or crosses 1 (making the old*new product non-positive). + jQuery.style( elem, prop, initialInUnit + unit ); + if ( ( 1 - scale ) * ( 1 - ( scale = currentValue() / initial || 0.5 ) ) <= 0 ) { + maxIterations = 0; + } + initialInUnit = initialInUnit / scale; + + } + + initialInUnit = initialInUnit * 2; + jQuery.style( elem, prop, initialInUnit + unit ); + + // Make sure we update the tween properties later on + valueParts = valueParts || []; + } + + if ( valueParts ) { + initialInUnit = +initialInUnit || +initial || 0; + + // Apply relative offset (+=/-=) if specified + adjusted = valueParts[ 1 ] ? + initialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] : + +valueParts[ 2 ]; + if ( tween ) { + tween.unit = unit; + tween.start = initialInUnit; + tween.end = adjusted; + } + } + return adjusted; +} + + +var defaultDisplayMap = {}; + +function getDefaultDisplay( elem ) { + var temp, + doc = elem.ownerDocument, + nodeName = elem.nodeName, + display = defaultDisplayMap[ nodeName ]; + + if ( display ) { + return display; + } + + temp = doc.body.appendChild( doc.createElement( nodeName ) ); + display = jQuery.css( temp, "display" ); + + temp.parentNode.removeChild( temp ); + + if ( display === "none" ) { + display = "block"; + } + defaultDisplayMap[ nodeName ] = display; + + return display; +} + +function showHide( elements, show ) { + var display, elem, + values = [], + index = 0, + length = elements.length; + + // Determine new display value for elements that need to change + for ( ; index < length; index++ ) { + elem = elements[ index ]; + if ( !elem.style ) { + continue; + } + + display = elem.style.display; + if ( show ) { + + // Since we force visibility upon cascade-hidden elements, an immediate (and slow) + // check is required in this first loop unless we have a nonempty display value (either + // inline or about-to-be-restored) + if ( display === "none" ) { + values[ index ] = dataPriv.get( elem, "display" ) || null; + if ( !values[ index ] ) { + elem.style.display = ""; + } + } + if ( elem.style.display === "" && isHiddenWithinTree( elem ) ) { + values[ index ] = getDefaultDisplay( elem ); + } + } else { + if ( display !== "none" ) { + values[ index ] = "none"; + + // Remember what we're overwriting + dataPriv.set( elem, "display", display ); + } + } + } + + // Set the display of the elements in a second loop to avoid constant reflow + for ( index = 0; index < length; index++ ) { + if ( values[ index ] != null ) { + elements[ index ].style.display = values[ index ]; + } + } + + return elements; +} + +jQuery.fn.extend( { + show: function() { + return showHide( this, true ); + }, + hide: function() { + return showHide( this ); + }, + toggle: function( state ) { + if ( typeof state === "boolean" ) { + return state ? this.show() : this.hide(); + } + + return this.each( function() { + if ( isHiddenWithinTree( this ) ) { + jQuery( this ).show(); + } else { + jQuery( this ).hide(); + } + } ); + } +} ); +var rcheckableType = ( /^(?:checkbox|radio)$/i ); + +var rtagName = ( /<([a-z][^\/\0>\x20\t\r\n\f]+)/i ); + +var rscriptType = ( /^$|^module$|\/(?:java|ecma)script/i ); + + + +// We have to close these tags to support XHTML (#13200) +var wrapMap = { + + // Support: IE <=9 only + option: [ 1, "" ], + + // XHTML parsers do not magically insert elements in the + // same way that tag soup parsers do. So we cannot shorten + // this by omitting or other required elements. + thead: [ 1, "", "
            " ], + col: [ 2, "", "
            " ], + tr: [ 2, "", "
            " ], + td: [ 3, "", "
            " ], + + _default: [ 0, "", "" ] +}; + +// Support: IE <=9 only +wrapMap.optgroup = wrapMap.option; + +wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead; +wrapMap.th = wrapMap.td; + + +function getAll( context, tag ) { + + // Support: IE <=9 - 11 only + // Use typeof to avoid zero-argument method invocation on host objects (#15151) + var ret; + + if ( typeof context.getElementsByTagName !== "undefined" ) { + ret = context.getElementsByTagName( tag || "*" ); + + } else if ( typeof context.querySelectorAll !== "undefined" ) { + ret = context.querySelectorAll( tag || "*" ); + + } else { + ret = []; + } + + if ( tag === undefined || tag && nodeName( context, tag ) ) { + return jQuery.merge( [ context ], ret ); + } + + return ret; +} + + +// Mark scripts as having already been evaluated +function setGlobalEval( elems, refElements ) { + var i = 0, + l = elems.length; + + for ( ; i < l; i++ ) { + dataPriv.set( + elems[ i ], + "globalEval", + !refElements || dataPriv.get( refElements[ i ], "globalEval" ) + ); + } +} + + +var rhtml = /<|&#?\w+;/; + +function buildFragment( elems, context, scripts, selection, ignored ) { + var elem, tmp, tag, wrap, contains, j, + fragment = context.createDocumentFragment(), + nodes = [], + i = 0, + l = elems.length; + + for ( ; i < l; i++ ) { + elem = elems[ i ]; + + if ( elem || elem === 0 ) { + + // Add nodes directly + if ( toType( elem ) === "object" ) { + + // Support: Android <=4.0 only, PhantomJS 1 only + // push.apply(_, arraylike) throws on ancient WebKit + jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem ); + + // Convert non-html into a text node + } else if ( !rhtml.test( elem ) ) { + nodes.push( context.createTextNode( elem ) ); + + // Convert html into DOM nodes + } else { + tmp = tmp || fragment.appendChild( context.createElement( "div" ) ); + + // Deserialize a standard representation + tag = ( rtagName.exec( elem ) || [ "", "" ] )[ 1 ].toLowerCase(); + wrap = wrapMap[ tag ] || wrapMap._default; + tmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ]; + + // Descend through wrappers to the right content + j = wrap[ 0 ]; + while ( j-- ) { + tmp = tmp.lastChild; + } + + // Support: Android <=4.0 only, PhantomJS 1 only + // push.apply(_, arraylike) throws on ancient WebKit + jQuery.merge( nodes, tmp.childNodes ); + + // Remember the top-level container + tmp = fragment.firstChild; + + // Ensure the created nodes are orphaned (#12392) + tmp.textContent = ""; + } + } + } + + // Remove wrapper from fragment + fragment.textContent = ""; + + i = 0; + while ( ( elem = nodes[ i++ ] ) ) { + + // Skip elements already in the context collection (trac-4087) + if ( selection && jQuery.inArray( elem, selection ) > -1 ) { + if ( ignored ) { + ignored.push( elem ); + } + continue; + } + + contains = jQuery.contains( elem.ownerDocument, elem ); + + // Append to fragment + tmp = getAll( fragment.appendChild( elem ), "script" ); + + // Preserve script evaluation history + if ( contains ) { + setGlobalEval( tmp ); + } + + // Capture executables + if ( scripts ) { + j = 0; + while ( ( elem = tmp[ j++ ] ) ) { + if ( rscriptType.test( elem.type || "" ) ) { + scripts.push( elem ); + } + } + } + } + + return fragment; +} + + +( function() { + var fragment = document.createDocumentFragment(), + div = fragment.appendChild( document.createElement( "div" ) ), + input = document.createElement( "input" ); + + // Support: Android 4.0 - 4.3 only + // Check state lost if the name is set (#11217) + // Support: Windows Web Apps (WWA) + // `name` and `type` must use .setAttribute for WWA (#14901) + input.setAttribute( "type", "radio" ); + input.setAttribute( "checked", "checked" ); + input.setAttribute( "name", "t" ); + + div.appendChild( input ); + + // Support: Android <=4.1 only + // Older WebKit doesn't clone checked state correctly in fragments + support.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked; + + // Support: IE <=11 only + // Make sure textarea (and checkbox) defaultValue is properly cloned + div.innerHTML = ""; + support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue; +} )(); +var documentElement = document.documentElement; + + + +var + rkeyEvent = /^key/, + rmouseEvent = /^(?:mouse|pointer|contextmenu|drag|drop)|click/, + rtypenamespace = /^([^.]*)(?:\.(.+)|)/; + +function returnTrue() { + return true; +} + +function returnFalse() { + return false; +} + +// Support: IE <=9 only +// See #13393 for more info +function safeActiveElement() { + try { + return document.activeElement; + } catch ( err ) { } +} + +function on( elem, types, selector, data, fn, one ) { + var origFn, type; + + // Types can be a map of types/handlers + if ( typeof types === "object" ) { + + // ( types-Object, selector, data ) + if ( typeof selector !== "string" ) { + + // ( types-Object, data ) + data = data || selector; + selector = undefined; + } + for ( type in types ) { + on( elem, type, selector, data, types[ type ], one ); + } + return elem; + } + + if ( data == null && fn == null ) { + + // ( types, fn ) + fn = selector; + data = selector = undefined; + } else if ( fn == null ) { + if ( typeof selector === "string" ) { + + // ( types, selector, fn ) + fn = data; + data = undefined; + } else { + + // ( types, data, fn ) + fn = data; + data = selector; + selector = undefined; + } + } + if ( fn === false ) { + fn = returnFalse; + } else if ( !fn ) { + return elem; + } + + if ( one === 1 ) { + origFn = fn; + fn = function( event ) { + + // Can use an empty set, since event contains the info + jQuery().off( event ); + return origFn.apply( this, arguments ); + }; + + // Use same guid so caller can remove using origFn + fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ ); + } + return elem.each( function() { + jQuery.event.add( this, types, fn, data, selector ); + } ); +} + +/* + * Helper functions for managing events -- not part of the public interface. + * Props to Dean Edwards' addEvent library for many of the ideas. + */ +jQuery.event = { + + global: {}, + + add: function( elem, types, handler, data, selector ) { + + var handleObjIn, eventHandle, tmp, + events, t, handleObj, + special, handlers, type, namespaces, origType, + elemData = dataPriv.get( elem ); + + // Don't attach events to noData or text/comment nodes (but allow plain objects) + if ( !elemData ) { + return; + } + + // Caller can pass in an object of custom data in lieu of the handler + if ( handler.handler ) { + handleObjIn = handler; + handler = handleObjIn.handler; + selector = handleObjIn.selector; + } + + // Ensure that invalid selectors throw exceptions at attach time + // Evaluate against documentElement in case elem is a non-element node (e.g., document) + if ( selector ) { + jQuery.find.matchesSelector( documentElement, selector ); + } + + // Make sure that the handler has a unique ID, used to find/remove it later + if ( !handler.guid ) { + handler.guid = jQuery.guid++; + } + + // Init the element's event structure and main handler, if this is the first + if ( !( events = elemData.events ) ) { + events = elemData.events = {}; + } + if ( !( eventHandle = elemData.handle ) ) { + eventHandle = elemData.handle = function( e ) { + + // Discard the second event of a jQuery.event.trigger() and + // when an event is called after a page has unloaded + return typeof jQuery !== "undefined" && jQuery.event.triggered !== e.type ? + jQuery.event.dispatch.apply( elem, arguments ) : undefined; + }; + } + + // Handle multiple events separated by a space + types = ( types || "" ).match( rnothtmlwhite ) || [ "" ]; + t = types.length; + while ( t-- ) { + tmp = rtypenamespace.exec( types[ t ] ) || []; + type = origType = tmp[ 1 ]; + namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort(); + + // There *must* be a type, no attaching namespace-only handlers + if ( !type ) { + continue; + } + + // If event changes its type, use the special event handlers for the changed type + special = jQuery.event.special[ type ] || {}; + + // If selector defined, determine special event api type, otherwise given type + type = ( selector ? special.delegateType : special.bindType ) || type; + + // Update special based on newly reset type + special = jQuery.event.special[ type ] || {}; + + // handleObj is passed to all event handlers + handleObj = jQuery.extend( { + type: type, + origType: origType, + data: data, + handler: handler, + guid: handler.guid, + selector: selector, + needsContext: selector && jQuery.expr.match.needsContext.test( selector ), + namespace: namespaces.join( "." ) + }, handleObjIn ); + + // Init the event handler queue if we're the first + if ( !( handlers = events[ type ] ) ) { + handlers = events[ type ] = []; + handlers.delegateCount = 0; + + // Only use addEventListener if the special events handler returns false + if ( !special.setup || + special.setup.call( elem, data, namespaces, eventHandle ) === false ) { + + if ( elem.addEventListener ) { + elem.addEventListener( type, eventHandle ); + } + } + } + + if ( special.add ) { + special.add.call( elem, handleObj ); + + if ( !handleObj.handler.guid ) { + handleObj.handler.guid = handler.guid; + } + } + + // Add to the element's handler list, delegates in front + if ( selector ) { + handlers.splice( handlers.delegateCount++, 0, handleObj ); + } else { + handlers.push( handleObj ); + } + + // Keep track of which events have ever been used, for event optimization + jQuery.event.global[ type ] = true; + } + + }, + + // Detach an event or set of events from an element + remove: function( elem, types, handler, selector, mappedTypes ) { + + var j, origCount, tmp, + events, t, handleObj, + special, handlers, type, namespaces, origType, + elemData = dataPriv.hasData( elem ) && dataPriv.get( elem ); + + if ( !elemData || !( events = elemData.events ) ) { + return; + } + + // Once for each type.namespace in types; type may be omitted + types = ( types || "" ).match( rnothtmlwhite ) || [ "" ]; + t = types.length; + while ( t-- ) { + tmp = rtypenamespace.exec( types[ t ] ) || []; + type = origType = tmp[ 1 ]; + namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort(); + + // Unbind all events (on this namespace, if provided) for the element + if ( !type ) { + for ( type in events ) { + jQuery.event.remove( elem, type + types[ t ], handler, selector, true ); + } + continue; + } + + special = jQuery.event.special[ type ] || {}; + type = ( selector ? special.delegateType : special.bindType ) || type; + handlers = events[ type ] || []; + tmp = tmp[ 2 ] && + new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" ); + + // Remove matching events + origCount = j = handlers.length; + while ( j-- ) { + handleObj = handlers[ j ]; + + if ( ( mappedTypes || origType === handleObj.origType ) && + ( !handler || handler.guid === handleObj.guid ) && + ( !tmp || tmp.test( handleObj.namespace ) ) && + ( !selector || selector === handleObj.selector || + selector === "**" && handleObj.selector ) ) { + handlers.splice( j, 1 ); + + if ( handleObj.selector ) { + handlers.delegateCount--; + } + if ( special.remove ) { + special.remove.call( elem, handleObj ); + } + } + } + + // Remove generic event handler if we removed something and no more handlers exist + // (avoids potential for endless recursion during removal of special event handlers) + if ( origCount && !handlers.length ) { + if ( !special.teardown || + special.teardown.call( elem, namespaces, elemData.handle ) === false ) { + + jQuery.removeEvent( elem, type, elemData.handle ); + } + + delete events[ type ]; + } + } + + // Remove data and the expando if it's no longer used + if ( jQuery.isEmptyObject( events ) ) { + dataPriv.remove( elem, "handle events" ); + } + }, + + dispatch: function( nativeEvent ) { + + // Make a writable jQuery.Event from the native event object + var event = jQuery.event.fix( nativeEvent ); + + var i, j, ret, matched, handleObj, handlerQueue, + args = new Array( arguments.length ), + handlers = ( dataPriv.get( this, "events" ) || {} )[ event.type ] || [], + special = jQuery.event.special[ event.type ] || {}; + + // Use the fix-ed jQuery.Event rather than the (read-only) native event + args[ 0 ] = event; + + for ( i = 1; i < arguments.length; i++ ) { + args[ i ] = arguments[ i ]; + } + + event.delegateTarget = this; + + // Call the preDispatch hook for the mapped type, and let it bail if desired + if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) { + return; + } + + // Determine handlers + handlerQueue = jQuery.event.handlers.call( this, event, handlers ); + + // Run delegates first; they may want to stop propagation beneath us + i = 0; + while ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) { + event.currentTarget = matched.elem; + + j = 0; + while ( ( handleObj = matched.handlers[ j++ ] ) && + !event.isImmediatePropagationStopped() ) { + + // Triggered event must either 1) have no namespace, or 2) have namespace(s) + // a subset or equal to those in the bound event (both can have no namespace). + if ( !event.rnamespace || event.rnamespace.test( handleObj.namespace ) ) { + + event.handleObj = handleObj; + event.data = handleObj.data; + + ret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle || + handleObj.handler ).apply( matched.elem, args ); + + if ( ret !== undefined ) { + if ( ( event.result = ret ) === false ) { + event.preventDefault(); + event.stopPropagation(); + } + } + } + } + } + + // Call the postDispatch hook for the mapped type + if ( special.postDispatch ) { + special.postDispatch.call( this, event ); + } + + return event.result; + }, + + handlers: function( event, handlers ) { + var i, handleObj, sel, matchedHandlers, matchedSelectors, + handlerQueue = [], + delegateCount = handlers.delegateCount, + cur = event.target; + + // Find delegate handlers + if ( delegateCount && + + // Support: IE <=9 + // Black-hole SVG instance trees (trac-13180) + cur.nodeType && + + // Support: Firefox <=42 + // Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861) + // https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click + // Support: IE 11 only + // ...but not arrow key "clicks" of radio inputs, which can have `button` -1 (gh-2343) + !( event.type === "click" && event.button >= 1 ) ) { + + for ( ; cur !== this; cur = cur.parentNode || this ) { + + // Don't check non-elements (#13208) + // Don't process clicks on disabled elements (#6911, #8165, #11382, #11764) + if ( cur.nodeType === 1 && !( event.type === "click" && cur.disabled === true ) ) { + matchedHandlers = []; + matchedSelectors = {}; + for ( i = 0; i < delegateCount; i++ ) { + handleObj = handlers[ i ]; + + // Don't conflict with Object.prototype properties (#13203) + sel = handleObj.selector + " "; + + if ( matchedSelectors[ sel ] === undefined ) { + matchedSelectors[ sel ] = handleObj.needsContext ? + jQuery( sel, this ).index( cur ) > -1 : + jQuery.find( sel, this, null, [ cur ] ).length; + } + if ( matchedSelectors[ sel ] ) { + matchedHandlers.push( handleObj ); + } + } + if ( matchedHandlers.length ) { + handlerQueue.push( { elem: cur, handlers: matchedHandlers } ); + } + } + } + } + + // Add the remaining (directly-bound) handlers + cur = this; + if ( delegateCount < handlers.length ) { + handlerQueue.push( { elem: cur, handlers: handlers.slice( delegateCount ) } ); + } + + return handlerQueue; + }, + + addProp: function( name, hook ) { + Object.defineProperty( jQuery.Event.prototype, name, { + enumerable: true, + configurable: true, + + get: isFunction( hook ) ? + function() { + if ( this.originalEvent ) { + return hook( this.originalEvent ); + } + } : + function() { + if ( this.originalEvent ) { + return this.originalEvent[ name ]; + } + }, + + set: function( value ) { + Object.defineProperty( this, name, { + enumerable: true, + configurable: true, + writable: true, + value: value + } ); + } + } ); + }, + + fix: function( originalEvent ) { + return originalEvent[ jQuery.expando ] ? + originalEvent : + new jQuery.Event( originalEvent ); + }, + + special: { + load: { + + // Prevent triggered image.load events from bubbling to window.load + noBubble: true + }, + focus: { + + // Fire native event if possible so blur/focus sequence is correct + trigger: function() { + if ( this !== safeActiveElement() && this.focus ) { + this.focus(); + return false; + } + }, + delegateType: "focusin" + }, + blur: { + trigger: function() { + if ( this === safeActiveElement() && this.blur ) { + this.blur(); + return false; + } + }, + delegateType: "focusout" + }, + click: { + + // For checkbox, fire native event so checked state will be right + trigger: function() { + if ( this.type === "checkbox" && this.click && nodeName( this, "input" ) ) { + this.click(); + return false; + } + }, + + // For cross-browser consistency, don't fire native .click() on links + _default: function( event ) { + return nodeName( event.target, "a" ); + } + }, + + beforeunload: { + postDispatch: function( event ) { + + // Support: Firefox 20+ + // Firefox doesn't alert if the returnValue field is not set. + if ( event.result !== undefined && event.originalEvent ) { + event.originalEvent.returnValue = event.result; + } + } + } + } +}; + +jQuery.removeEvent = function( elem, type, handle ) { + + // This "if" is needed for plain objects + if ( elem.removeEventListener ) { + elem.removeEventListener( type, handle ); + } +}; + +jQuery.Event = function( src, props ) { + + // Allow instantiation without the 'new' keyword + if ( !( this instanceof jQuery.Event ) ) { + return new jQuery.Event( src, props ); + } + + // Event object + if ( src && src.type ) { + this.originalEvent = src; + this.type = src.type; + + // Events bubbling up the document may have been marked as prevented + // by a handler lower down the tree; reflect the correct value. + this.isDefaultPrevented = src.defaultPrevented || + src.defaultPrevented === undefined && + + // Support: Android <=2.3 only + src.returnValue === false ? + returnTrue : + returnFalse; + + // Create target properties + // Support: Safari <=6 - 7 only + // Target should not be a text node (#504, #13143) + this.target = ( src.target && src.target.nodeType === 3 ) ? + src.target.parentNode : + src.target; + + this.currentTarget = src.currentTarget; + this.relatedTarget = src.relatedTarget; + + // Event type + } else { + this.type = src; + } + + // Put explicitly provided properties onto the event object + if ( props ) { + jQuery.extend( this, props ); + } + + // Create a timestamp if incoming event doesn't have one + this.timeStamp = src && src.timeStamp || Date.now(); + + // Mark it as fixed + this[ jQuery.expando ] = true; +}; + +// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding +// https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html +jQuery.Event.prototype = { + constructor: jQuery.Event, + isDefaultPrevented: returnFalse, + isPropagationStopped: returnFalse, + isImmediatePropagationStopped: returnFalse, + isSimulated: false, + + preventDefault: function() { + var e = this.originalEvent; + + this.isDefaultPrevented = returnTrue; + + if ( e && !this.isSimulated ) { + e.preventDefault(); + } + }, + stopPropagation: function() { + var e = this.originalEvent; + + this.isPropagationStopped = returnTrue; + + if ( e && !this.isSimulated ) { + e.stopPropagation(); + } + }, + stopImmediatePropagation: function() { + var e = this.originalEvent; + + this.isImmediatePropagationStopped = returnTrue; + + if ( e && !this.isSimulated ) { + e.stopImmediatePropagation(); + } + + this.stopPropagation(); + } +}; + +// Includes all common event props including KeyEvent and MouseEvent specific props +jQuery.each( { + altKey: true, + bubbles: true, + cancelable: true, + changedTouches: true, + ctrlKey: true, + detail: true, + eventPhase: true, + metaKey: true, + pageX: true, + pageY: true, + shiftKey: true, + view: true, + "char": true, + charCode: true, + key: true, + keyCode: true, + button: true, + buttons: true, + clientX: true, + clientY: true, + offsetX: true, + offsetY: true, + pointerId: true, + pointerType: true, + screenX: true, + screenY: true, + targetTouches: true, + toElement: true, + touches: true, + + which: function( event ) { + var button = event.button; + + // Add which for key events + if ( event.which == null && rkeyEvent.test( event.type ) ) { + return event.charCode != null ? event.charCode : event.keyCode; + } + + // Add which for click: 1 === left; 2 === middle; 3 === right + if ( !event.which && button !== undefined && rmouseEvent.test( event.type ) ) { + if ( button & 1 ) { + return 1; + } + + if ( button & 2 ) { + return 3; + } + + if ( button & 4 ) { + return 2; + } + + return 0; + } + + return event.which; + } +}, jQuery.event.addProp ); + +// Create mouseenter/leave events using mouseover/out and event-time checks +// so that event delegation works in jQuery. +// Do the same for pointerenter/pointerleave and pointerover/pointerout +// +// Support: Safari 7 only +// Safari sends mouseenter too often; see: +// https://bugs.chromium.org/p/chromium/issues/detail?id=470258 +// for the description of the bug (it existed in older Chrome versions as well). +jQuery.each( { + mouseenter: "mouseover", + mouseleave: "mouseout", + pointerenter: "pointerover", + pointerleave: "pointerout" +}, function( orig, fix ) { + jQuery.event.special[ orig ] = { + delegateType: fix, + bindType: fix, + + handle: function( event ) { + var ret, + target = this, + related = event.relatedTarget, + handleObj = event.handleObj; + + // For mouseenter/leave call the handler if related is outside the target. + // NB: No relatedTarget if the mouse left/entered the browser window + if ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) { + event.type = handleObj.origType; + ret = handleObj.handler.apply( this, arguments ); + event.type = fix; + } + return ret; + } + }; +} ); + +jQuery.fn.extend( { + + on: function( types, selector, data, fn ) { + return on( this, types, selector, data, fn ); + }, + one: function( types, selector, data, fn ) { + return on( this, types, selector, data, fn, 1 ); + }, + off: function( types, selector, fn ) { + var handleObj, type; + if ( types && types.preventDefault && types.handleObj ) { + + // ( event ) dispatched jQuery.Event + handleObj = types.handleObj; + jQuery( types.delegateTarget ).off( + handleObj.namespace ? + handleObj.origType + "." + handleObj.namespace : + handleObj.origType, + handleObj.selector, + handleObj.handler + ); + return this; + } + if ( typeof types === "object" ) { + + // ( types-object [, selector] ) + for ( type in types ) { + this.off( type, selector, types[ type ] ); + } + return this; + } + if ( selector === false || typeof selector === "function" ) { + + // ( types [, fn] ) + fn = selector; + selector = undefined; + } + if ( fn === false ) { + fn = returnFalse; + } + return this.each( function() { + jQuery.event.remove( this, types, fn, selector ); + } ); + } +} ); + + +var + + /* eslint-disable max-len */ + + // See https://github.com/eslint/eslint/issues/3229 + rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi, + + /* eslint-enable */ + + // Support: IE <=10 - 11, Edge 12 - 13 only + // In IE/Edge using regex groups here causes severe slowdowns. + // See https://connect.microsoft.com/IE/feedback/details/1736512/ + rnoInnerhtml = /\s*$/g; + +// Prefer a tbody over its parent table for containing new rows +function manipulationTarget( elem, content ) { + if ( nodeName( elem, "table" ) && + nodeName( content.nodeType !== 11 ? content : content.firstChild, "tr" ) ) { + + return jQuery( elem ).children( "tbody" )[ 0 ] || elem; + } + + return elem; +} + +// Replace/restore the type attribute of script elements for safe DOM manipulation +function disableScript( elem ) { + elem.type = ( elem.getAttribute( "type" ) !== null ) + "/" + elem.type; + return elem; +} +function restoreScript( elem ) { + if ( ( elem.type || "" ).slice( 0, 5 ) === "true/" ) { + elem.type = elem.type.slice( 5 ); + } else { + elem.removeAttribute( "type" ); + } + + return elem; +} + +function cloneCopyEvent( src, dest ) { + var i, l, type, pdataOld, pdataCur, udataOld, udataCur, events; + + if ( dest.nodeType !== 1 ) { + return; + } + + // 1. Copy private data: events, handlers, etc. + if ( dataPriv.hasData( src ) ) { + pdataOld = dataPriv.access( src ); + pdataCur = dataPriv.set( dest, pdataOld ); + events = pdataOld.events; + + if ( events ) { + delete pdataCur.handle; + pdataCur.events = {}; + + for ( type in events ) { + for ( i = 0, l = events[ type ].length; i < l; i++ ) { + jQuery.event.add( dest, type, events[ type ][ i ] ); + } + } + } + } + + // 2. Copy user data + if ( dataUser.hasData( src ) ) { + udataOld = dataUser.access( src ); + udataCur = jQuery.extend( {}, udataOld ); + + dataUser.set( dest, udataCur ); + } +} + +// Fix IE bugs, see support tests +function fixInput( src, dest ) { + var nodeName = dest.nodeName.toLowerCase(); + + // Fails to persist the checked state of a cloned checkbox or radio button. + if ( nodeName === "input" && rcheckableType.test( src.type ) ) { + dest.checked = src.checked; + + // Fails to return the selected option to the default selected state when cloning options + } else if ( nodeName === "input" || nodeName === "textarea" ) { + dest.defaultValue = src.defaultValue; + } +} + +function domManip( collection, args, callback, ignored ) { + + // Flatten any nested arrays + args = concat.apply( [], args ); + + var fragment, first, scripts, hasScripts, node, doc, + i = 0, + l = collection.length, + iNoClone = l - 1, + value = args[ 0 ], + valueIsFunction = isFunction( value ); + + // We can't cloneNode fragments that contain checked, in WebKit + if ( valueIsFunction || + ( l > 1 && typeof value === "string" && + !support.checkClone && rchecked.test( value ) ) ) { + return collection.each( function( index ) { + var self = collection.eq( index ); + if ( valueIsFunction ) { + args[ 0 ] = value.call( this, index, self.html() ); + } + domManip( self, args, callback, ignored ); + } ); + } + + if ( l ) { + fragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored ); + first = fragment.firstChild; + + if ( fragment.childNodes.length === 1 ) { + fragment = first; + } + + // Require either new content or an interest in ignored elements to invoke the callback + if ( first || ignored ) { + scripts = jQuery.map( getAll( fragment, "script" ), disableScript ); + hasScripts = scripts.length; + + // Use the original fragment for the last item + // instead of the first because it can end up + // being emptied incorrectly in certain situations (#8070). + for ( ; i < l; i++ ) { + node = fragment; + + if ( i !== iNoClone ) { + node = jQuery.clone( node, true, true ); + + // Keep references to cloned scripts for later restoration + if ( hasScripts ) { + + // Support: Android <=4.0 only, PhantomJS 1 only + // push.apply(_, arraylike) throws on ancient WebKit + jQuery.merge( scripts, getAll( node, "script" ) ); + } + } + + callback.call( collection[ i ], node, i ); + } + + if ( hasScripts ) { + doc = scripts[ scripts.length - 1 ].ownerDocument; + + // Reenable scripts + jQuery.map( scripts, restoreScript ); + + // Evaluate executable scripts on first document insertion + for ( i = 0; i < hasScripts; i++ ) { + node = scripts[ i ]; + if ( rscriptType.test( node.type || "" ) && + !dataPriv.access( node, "globalEval" ) && + jQuery.contains( doc, node ) ) { + + if ( node.src && ( node.type || "" ).toLowerCase() !== "module" ) { + + // Optional AJAX dependency, but won't run scripts if not present + if ( jQuery._evalUrl ) { + jQuery._evalUrl( node.src ); + } + } else { + DOMEval( node.textContent.replace( rcleanScript, "" ), doc, node ); + } + } + } + } + } + } + + return collection; +} + +function remove( elem, selector, keepData ) { + var node, + nodes = selector ? jQuery.filter( selector, elem ) : elem, + i = 0; + + for ( ; ( node = nodes[ i ] ) != null; i++ ) { + if ( !keepData && node.nodeType === 1 ) { + jQuery.cleanData( getAll( node ) ); + } + + if ( node.parentNode ) { + if ( keepData && jQuery.contains( node.ownerDocument, node ) ) { + setGlobalEval( getAll( node, "script" ) ); + } + node.parentNode.removeChild( node ); + } + } + + return elem; +} + +jQuery.extend( { + htmlPrefilter: function( html ) { + return html.replace( rxhtmlTag, "<$1>" ); + }, + + clone: function( elem, dataAndEvents, deepDataAndEvents ) { + var i, l, srcElements, destElements, + clone = elem.cloneNode( true ), + inPage = jQuery.contains( elem.ownerDocument, elem ); + + // Fix IE cloning issues + if ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) && + !jQuery.isXMLDoc( elem ) ) { + + // We eschew Sizzle here for performance reasons: https://jsperf.com/getall-vs-sizzle/2 + destElements = getAll( clone ); + srcElements = getAll( elem ); + + for ( i = 0, l = srcElements.length; i < l; i++ ) { + fixInput( srcElements[ i ], destElements[ i ] ); + } + } + + // Copy the events from the original to the clone + if ( dataAndEvents ) { + if ( deepDataAndEvents ) { + srcElements = srcElements || getAll( elem ); + destElements = destElements || getAll( clone ); + + for ( i = 0, l = srcElements.length; i < l; i++ ) { + cloneCopyEvent( srcElements[ i ], destElements[ i ] ); + } + } else { + cloneCopyEvent( elem, clone ); + } + } + + // Preserve script evaluation history + destElements = getAll( clone, "script" ); + if ( destElements.length > 0 ) { + setGlobalEval( destElements, !inPage && getAll( elem, "script" ) ); + } + + // Return the cloned set + return clone; + }, + + cleanData: function( elems ) { + var data, elem, type, + special = jQuery.event.special, + i = 0; + + for ( ; ( elem = elems[ i ] ) !== undefined; i++ ) { + if ( acceptData( elem ) ) { + if ( ( data = elem[ dataPriv.expando ] ) ) { + if ( data.events ) { + for ( type in data.events ) { + if ( special[ type ] ) { + jQuery.event.remove( elem, type ); + + // This is a shortcut to avoid jQuery.event.remove's overhead + } else { + jQuery.removeEvent( elem, type, data.handle ); + } + } + } + + // Support: Chrome <=35 - 45+ + // Assign undefined instead of using delete, see Data#remove + elem[ dataPriv.expando ] = undefined; + } + if ( elem[ dataUser.expando ] ) { + + // Support: Chrome <=35 - 45+ + // Assign undefined instead of using delete, see Data#remove + elem[ dataUser.expando ] = undefined; + } + } + } + } +} ); + +jQuery.fn.extend( { + detach: function( selector ) { + return remove( this, selector, true ); + }, + + remove: function( selector ) { + return remove( this, selector ); + }, + + text: function( value ) { + return access( this, function( value ) { + return value === undefined ? + jQuery.text( this ) : + this.empty().each( function() { + if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { + this.textContent = value; + } + } ); + }, null, value, arguments.length ); + }, + + append: function() { + return domManip( this, arguments, function( elem ) { + if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { + var target = manipulationTarget( this, elem ); + target.appendChild( elem ); + } + } ); + }, + + prepend: function() { + return domManip( this, arguments, function( elem ) { + if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { + var target = manipulationTarget( this, elem ); + target.insertBefore( elem, target.firstChild ); + } + } ); + }, + + before: function() { + return domManip( this, arguments, function( elem ) { + if ( this.parentNode ) { + this.parentNode.insertBefore( elem, this ); + } + } ); + }, + + after: function() { + return domManip( this, arguments, function( elem ) { + if ( this.parentNode ) { + this.parentNode.insertBefore( elem, this.nextSibling ); + } + } ); + }, + + empty: function() { + var elem, + i = 0; + + for ( ; ( elem = this[ i ] ) != null; i++ ) { + if ( elem.nodeType === 1 ) { + + // Prevent memory leaks + jQuery.cleanData( getAll( elem, false ) ); + + // Remove any remaining nodes + elem.textContent = ""; + } + } + + return this; + }, + + clone: function( dataAndEvents, deepDataAndEvents ) { + dataAndEvents = dataAndEvents == null ? false : dataAndEvents; + deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents; + + return this.map( function() { + return jQuery.clone( this, dataAndEvents, deepDataAndEvents ); + } ); + }, + + html: function( value ) { + return access( this, function( value ) { + var elem = this[ 0 ] || {}, + i = 0, + l = this.length; + + if ( value === undefined && elem.nodeType === 1 ) { + return elem.innerHTML; + } + + // See if we can take a shortcut and just use innerHTML + if ( typeof value === "string" && !rnoInnerhtml.test( value ) && + !wrapMap[ ( rtagName.exec( value ) || [ "", "" ] )[ 1 ].toLowerCase() ] ) { + + value = jQuery.htmlPrefilter( value ); + + try { + for ( ; i < l; i++ ) { + elem = this[ i ] || {}; + + // Remove element nodes and prevent memory leaks + if ( elem.nodeType === 1 ) { + jQuery.cleanData( getAll( elem, false ) ); + elem.innerHTML = value; + } + } + + elem = 0; + + // If using innerHTML throws an exception, use the fallback method + } catch ( e ) {} + } + + if ( elem ) { + this.empty().append( value ); + } + }, null, value, arguments.length ); + }, + + replaceWith: function() { + var ignored = []; + + // Make the changes, replacing each non-ignored context element with the new content + return domManip( this, arguments, function( elem ) { + var parent = this.parentNode; + + if ( jQuery.inArray( this, ignored ) < 0 ) { + jQuery.cleanData( getAll( this ) ); + if ( parent ) { + parent.replaceChild( elem, this ); + } + } + + // Force callback invocation + }, ignored ); + } +} ); + +jQuery.each( { + appendTo: "append", + prependTo: "prepend", + insertBefore: "before", + insertAfter: "after", + replaceAll: "replaceWith" +}, function( name, original ) { + jQuery.fn[ name ] = function( selector ) { + var elems, + ret = [], + insert = jQuery( selector ), + last = insert.length - 1, + i = 0; + + for ( ; i <= last; i++ ) { + elems = i === last ? this : this.clone( true ); + jQuery( insert[ i ] )[ original ]( elems ); + + // Support: Android <=4.0 only, PhantomJS 1 only + // .get() because push.apply(_, arraylike) throws on ancient WebKit + push.apply( ret, elems.get() ); + } + + return this.pushStack( ret ); + }; +} ); +var rnumnonpx = new RegExp( "^(" + pnum + ")(?!px)[a-z%]+$", "i" ); + +var getStyles = function( elem ) { + + // Support: IE <=11 only, Firefox <=30 (#15098, #14150) + // IE throws on elements created in popups + // FF meanwhile throws on frame elements through "defaultView.getComputedStyle" + var view = elem.ownerDocument.defaultView; + + if ( !view || !view.opener ) { + view = window; + } + + return view.getComputedStyle( elem ); + }; + +var rboxStyle = new RegExp( cssExpand.join( "|" ), "i" ); + + + +( function() { + + // Executing both pixelPosition & boxSizingReliable tests require only one layout + // so they're executed at the same time to save the second computation. + function computeStyleTests() { + + // This is a singleton, we need to execute it only once + if ( !div ) { + return; + } + + container.style.cssText = "position:absolute;left:-11111px;width:60px;" + + "margin-top:1px;padding:0;border:0"; + div.style.cssText = + "position:relative;display:block;box-sizing:border-box;overflow:scroll;" + + "margin:auto;border:1px;padding:1px;" + + "width:60%;top:1%"; + documentElement.appendChild( container ).appendChild( div ); + + var divStyle = window.getComputedStyle( div ); + pixelPositionVal = divStyle.top !== "1%"; + + // Support: Android 4.0 - 4.3 only, Firefox <=3 - 44 + reliableMarginLeftVal = roundPixelMeasures( divStyle.marginLeft ) === 12; + + // Support: Android 4.0 - 4.3 only, Safari <=9.1 - 10.1, iOS <=7.0 - 9.3 + // Some styles come back with percentage values, even though they shouldn't + div.style.right = "60%"; + pixelBoxStylesVal = roundPixelMeasures( divStyle.right ) === 36; + + // Support: IE 9 - 11 only + // Detect misreporting of content dimensions for box-sizing:border-box elements + boxSizingReliableVal = roundPixelMeasures( divStyle.width ) === 36; + + // Support: IE 9 only + // Detect overflow:scroll screwiness (gh-3699) + div.style.position = "absolute"; + scrollboxSizeVal = div.offsetWidth === 36 || "absolute"; + + documentElement.removeChild( container ); + + // Nullify the div so it wouldn't be stored in the memory and + // it will also be a sign that checks already performed + div = null; + } + + function roundPixelMeasures( measure ) { + return Math.round( parseFloat( measure ) ); + } + + var pixelPositionVal, boxSizingReliableVal, scrollboxSizeVal, pixelBoxStylesVal, + reliableMarginLeftVal, + container = document.createElement( "div" ), + div = document.createElement( "div" ); + + // Finish early in limited (non-browser) environments + if ( !div.style ) { + return; + } + + // Support: IE <=9 - 11 only + // Style of cloned element affects source element cloned (#8908) + div.style.backgroundClip = "content-box"; + div.cloneNode( true ).style.backgroundClip = ""; + support.clearCloneStyle = div.style.backgroundClip === "content-box"; + + jQuery.extend( support, { + boxSizingReliable: function() { + computeStyleTests(); + return boxSizingReliableVal; + }, + pixelBoxStyles: function() { + computeStyleTests(); + return pixelBoxStylesVal; + }, + pixelPosition: function() { + computeStyleTests(); + return pixelPositionVal; + }, + reliableMarginLeft: function() { + computeStyleTests(); + return reliableMarginLeftVal; + }, + scrollboxSize: function() { + computeStyleTests(); + return scrollboxSizeVal; + } + } ); +} )(); + + +function curCSS( elem, name, computed ) { + var width, minWidth, maxWidth, ret, + + // Support: Firefox 51+ + // Retrieving style before computed somehow + // fixes an issue with getting wrong values + // on detached elements + style = elem.style; + + computed = computed || getStyles( elem ); + + // getPropertyValue is needed for: + // .css('filter') (IE 9 only, #12537) + // .css('--customProperty) (#3144) + if ( computed ) { + ret = computed.getPropertyValue( name ) || computed[ name ]; + + if ( ret === "" && !jQuery.contains( elem.ownerDocument, elem ) ) { + ret = jQuery.style( elem, name ); + } + + // A tribute to the "awesome hack by Dean Edwards" + // Android Browser returns percentage for some values, + // but width seems to be reliably pixels. + // This is against the CSSOM draft spec: + // https://drafts.csswg.org/cssom/#resolved-values + if ( !support.pixelBoxStyles() && rnumnonpx.test( ret ) && rboxStyle.test( name ) ) { + + // Remember the original values + width = style.width; + minWidth = style.minWidth; + maxWidth = style.maxWidth; + + // Put in the new values to get a computed value out + style.minWidth = style.maxWidth = style.width = ret; + ret = computed.width; + + // Revert the changed values + style.width = width; + style.minWidth = minWidth; + style.maxWidth = maxWidth; + } + } + + return ret !== undefined ? + + // Support: IE <=9 - 11 only + // IE returns zIndex value as an integer. + ret + "" : + ret; +} + + +function addGetHookIf( conditionFn, hookFn ) { + + // Define the hook, we'll check on the first run if it's really needed. + return { + get: function() { + if ( conditionFn() ) { + + // Hook not needed (or it's not possible to use it due + // to missing dependency), remove it. + delete this.get; + return; + } + + // Hook needed; redefine it so that the support test is not executed again. + return ( this.get = hookFn ).apply( this, arguments ); + } + }; +} + + +var + + // Swappable if display is none or starts with table + // except "table", "table-cell", or "table-caption" + // See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display + rdisplayswap = /^(none|table(?!-c[ea]).+)/, + rcustomProp = /^--/, + cssShow = { position: "absolute", visibility: "hidden", display: "block" }, + cssNormalTransform = { + letterSpacing: "0", + fontWeight: "400" + }, + + cssPrefixes = [ "Webkit", "Moz", "ms" ], + emptyStyle = document.createElement( "div" ).style; + +// Return a css property mapped to a potentially vendor prefixed property +function vendorPropName( name ) { + + // Shortcut for names that are not vendor prefixed + if ( name in emptyStyle ) { + return name; + } + + // Check for vendor prefixed names + var capName = name[ 0 ].toUpperCase() + name.slice( 1 ), + i = cssPrefixes.length; + + while ( i-- ) { + name = cssPrefixes[ i ] + capName; + if ( name in emptyStyle ) { + return name; + } + } +} + +// Return a property mapped along what jQuery.cssProps suggests or to +// a vendor prefixed property. +function finalPropName( name ) { + var ret = jQuery.cssProps[ name ]; + if ( !ret ) { + ret = jQuery.cssProps[ name ] = vendorPropName( name ) || name; + } + return ret; +} + +function setPositiveNumber( elem, value, subtract ) { + + // Any relative (+/-) values have already been + // normalized at this point + var matches = rcssNum.exec( value ); + return matches ? + + // Guard against undefined "subtract", e.g., when used as in cssHooks + Math.max( 0, matches[ 2 ] - ( subtract || 0 ) ) + ( matches[ 3 ] || "px" ) : + value; +} + +function boxModelAdjustment( elem, dimension, box, isBorderBox, styles, computedVal ) { + var i = dimension === "width" ? 1 : 0, + extra = 0, + delta = 0; + + // Adjustment may not be necessary + if ( box === ( isBorderBox ? "border" : "content" ) ) { + return 0; + } + + for ( ; i < 4; i += 2 ) { + + // Both box models exclude margin + if ( box === "margin" ) { + delta += jQuery.css( elem, box + cssExpand[ i ], true, styles ); + } + + // If we get here with a content-box, we're seeking "padding" or "border" or "margin" + if ( !isBorderBox ) { + + // Add padding + delta += jQuery.css( elem, "padding" + cssExpand[ i ], true, styles ); + + // For "border" or "margin", add border + if ( box !== "padding" ) { + delta += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); + + // But still keep track of it otherwise + } else { + extra += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); + } + + // If we get here with a border-box (content + padding + border), we're seeking "content" or + // "padding" or "margin" + } else { + + // For "content", subtract padding + if ( box === "content" ) { + delta -= jQuery.css( elem, "padding" + cssExpand[ i ], true, styles ); + } + + // For "content" or "padding", subtract border + if ( box !== "margin" ) { + delta -= jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); + } + } + } + + // Account for positive content-box scroll gutter when requested by providing computedVal + if ( !isBorderBox && computedVal >= 0 ) { + + // offsetWidth/offsetHeight is a rounded sum of content, padding, scroll gutter, and border + // Assuming integer scroll gutter, subtract the rest and round down + delta += Math.max( 0, Math.ceil( + elem[ "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] - + computedVal - + delta - + extra - + 0.5 + ) ); + } + + return delta; +} + +function getWidthOrHeight( elem, dimension, extra ) { + + // Start with computed style + var styles = getStyles( elem ), + val = curCSS( elem, dimension, styles ), + isBorderBox = jQuery.css( elem, "boxSizing", false, styles ) === "border-box", + valueIsBorderBox = isBorderBox; + + // Support: Firefox <=54 + // Return a confounding non-pixel value or feign ignorance, as appropriate. + if ( rnumnonpx.test( val ) ) { + if ( !extra ) { + return val; + } + val = "auto"; + } + + // Check for style in case a browser which returns unreliable values + // for getComputedStyle silently falls back to the reliable elem.style + valueIsBorderBox = valueIsBorderBox && + ( support.boxSizingReliable() || val === elem.style[ dimension ] ); + + // Fall back to offsetWidth/offsetHeight when value is "auto" + // This happens for inline elements with no explicit setting (gh-3571) + // Support: Android <=4.1 - 4.3 only + // Also use offsetWidth/offsetHeight for misreported inline dimensions (gh-3602) + if ( val === "auto" || + !parseFloat( val ) && jQuery.css( elem, "display", false, styles ) === "inline" ) { + + val = elem[ "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ]; + + // offsetWidth/offsetHeight provide border-box values + valueIsBorderBox = true; + } + + // Normalize "" and auto + val = parseFloat( val ) || 0; + + // Adjust for the element's box model + return ( val + + boxModelAdjustment( + elem, + dimension, + extra || ( isBorderBox ? "border" : "content" ), + valueIsBorderBox, + styles, + + // Provide the current computed size to request scroll gutter calculation (gh-3589) + val + ) + ) + "px"; +} + +jQuery.extend( { + + // Add in style property hooks for overriding the default + // behavior of getting and setting a style property + cssHooks: { + opacity: { + get: function( elem, computed ) { + if ( computed ) { + + // We should always get a number back from opacity + var ret = curCSS( elem, "opacity" ); + return ret === "" ? "1" : ret; + } + } + } + }, + + // Don't automatically add "px" to these possibly-unitless properties + cssNumber: { + "animationIterationCount": true, + "columnCount": true, + "fillOpacity": true, + "flexGrow": true, + "flexShrink": true, + "fontWeight": true, + "lineHeight": true, + "opacity": true, + "order": true, + "orphans": true, + "widows": true, + "zIndex": true, + "zoom": true + }, + + // Add in properties whose names you wish to fix before + // setting or getting the value + cssProps: {}, + + // Get and set the style property on a DOM Node + style: function( elem, name, value, extra ) { + + // Don't set styles on text and comment nodes + if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) { + return; + } + + // Make sure that we're working with the right name + var ret, type, hooks, + origName = camelCase( name ), + isCustomProp = rcustomProp.test( name ), + style = elem.style; + + // Make sure that we're working with the right name. We don't + // want to query the value if it is a CSS custom property + // since they are user-defined. + if ( !isCustomProp ) { + name = finalPropName( origName ); + } + + // Gets hook for the prefixed version, then unprefixed version + hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ]; + + // Check if we're setting a value + if ( value !== undefined ) { + type = typeof value; + + // Convert "+=" or "-=" to relative numbers (#7345) + if ( type === "string" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) { + value = adjustCSS( elem, name, ret ); + + // Fixes bug #9237 + type = "number"; + } + + // Make sure that null and NaN values aren't set (#7116) + if ( value == null || value !== value ) { + return; + } + + // If a number was passed in, add the unit (except for certain CSS properties) + if ( type === "number" ) { + value += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? "" : "px" ); + } + + // background-* props affect original clone's values + if ( !support.clearCloneStyle && value === "" && name.indexOf( "background" ) === 0 ) { + style[ name ] = "inherit"; + } + + // If a hook was provided, use that value, otherwise just set the specified value + if ( !hooks || !( "set" in hooks ) || + ( value = hooks.set( elem, value, extra ) ) !== undefined ) { + + if ( isCustomProp ) { + style.setProperty( name, value ); + } else { + style[ name ] = value; + } + } + + } else { + + // If a hook was provided get the non-computed value from there + if ( hooks && "get" in hooks && + ( ret = hooks.get( elem, false, extra ) ) !== undefined ) { + + return ret; + } + + // Otherwise just get the value from the style object + return style[ name ]; + } + }, + + css: function( elem, name, extra, styles ) { + var val, num, hooks, + origName = camelCase( name ), + isCustomProp = rcustomProp.test( name ); + + // Make sure that we're working with the right name. We don't + // want to modify the value if it is a CSS custom property + // since they are user-defined. + if ( !isCustomProp ) { + name = finalPropName( origName ); + } + + // Try prefixed name followed by the unprefixed name + hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ]; + + // If a hook was provided get the computed value from there + if ( hooks && "get" in hooks ) { + val = hooks.get( elem, true, extra ); + } + + // Otherwise, if a way to get the computed value exists, use that + if ( val === undefined ) { + val = curCSS( elem, name, styles ); + } + + // Convert "normal" to computed value + if ( val === "normal" && name in cssNormalTransform ) { + val = cssNormalTransform[ name ]; + } + + // Make numeric if forced or a qualifier was provided and val looks numeric + if ( extra === "" || extra ) { + num = parseFloat( val ); + return extra === true || isFinite( num ) ? num || 0 : val; + } + + return val; + } +} ); + +jQuery.each( [ "height", "width" ], function( i, dimension ) { + jQuery.cssHooks[ dimension ] = { + get: function( elem, computed, extra ) { + if ( computed ) { + + // Certain elements can have dimension info if we invisibly show them + // but it must have a current display style that would benefit + return rdisplayswap.test( jQuery.css( elem, "display" ) ) && + + // Support: Safari 8+ + // Table columns in Safari have non-zero offsetWidth & zero + // getBoundingClientRect().width unless display is changed. + // Support: IE <=11 only + // Running getBoundingClientRect on a disconnected node + // in IE throws an error. + ( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ? + swap( elem, cssShow, function() { + return getWidthOrHeight( elem, dimension, extra ); + } ) : + getWidthOrHeight( elem, dimension, extra ); + } + }, + + set: function( elem, value, extra ) { + var matches, + styles = getStyles( elem ), + isBorderBox = jQuery.css( elem, "boxSizing", false, styles ) === "border-box", + subtract = extra && boxModelAdjustment( + elem, + dimension, + extra, + isBorderBox, + styles + ); + + // Account for unreliable border-box dimensions by comparing offset* to computed and + // faking a content-box to get border and padding (gh-3699) + if ( isBorderBox && support.scrollboxSize() === styles.position ) { + subtract -= Math.ceil( + elem[ "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] - + parseFloat( styles[ dimension ] ) - + boxModelAdjustment( elem, dimension, "border", false, styles ) - + 0.5 + ); + } + + // Convert to pixels if value adjustment is needed + if ( subtract && ( matches = rcssNum.exec( value ) ) && + ( matches[ 3 ] || "px" ) !== "px" ) { + + elem.style[ dimension ] = value; + value = jQuery.css( elem, dimension ); + } + + return setPositiveNumber( elem, value, subtract ); + } + }; +} ); + +jQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft, + function( elem, computed ) { + if ( computed ) { + return ( parseFloat( curCSS( elem, "marginLeft" ) ) || + elem.getBoundingClientRect().left - + swap( elem, { marginLeft: 0 }, function() { + return elem.getBoundingClientRect().left; + } ) + ) + "px"; + } + } +); + +// These hooks are used by animate to expand properties +jQuery.each( { + margin: "", + padding: "", + border: "Width" +}, function( prefix, suffix ) { + jQuery.cssHooks[ prefix + suffix ] = { + expand: function( value ) { + var i = 0, + expanded = {}, + + // Assumes a single number if not a string + parts = typeof value === "string" ? value.split( " " ) : [ value ]; + + for ( ; i < 4; i++ ) { + expanded[ prefix + cssExpand[ i ] + suffix ] = + parts[ i ] || parts[ i - 2 ] || parts[ 0 ]; + } + + return expanded; + } + }; + + if ( prefix !== "margin" ) { + jQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber; + } +} ); + +jQuery.fn.extend( { + css: function( name, value ) { + return access( this, function( elem, name, value ) { + var styles, len, + map = {}, + i = 0; + + if ( Array.isArray( name ) ) { + styles = getStyles( elem ); + len = name.length; + + for ( ; i < len; i++ ) { + map[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles ); + } + + return map; + } + + return value !== undefined ? + jQuery.style( elem, name, value ) : + jQuery.css( elem, name ); + }, name, value, arguments.length > 1 ); + } +} ); + + +function Tween( elem, options, prop, end, easing ) { + return new Tween.prototype.init( elem, options, prop, end, easing ); +} +jQuery.Tween = Tween; + +Tween.prototype = { + constructor: Tween, + init: function( elem, options, prop, end, easing, unit ) { + this.elem = elem; + this.prop = prop; + this.easing = easing || jQuery.easing._default; + this.options = options; + this.start = this.now = this.cur(); + this.end = end; + this.unit = unit || ( jQuery.cssNumber[ prop ] ? "" : "px" ); + }, + cur: function() { + var hooks = Tween.propHooks[ this.prop ]; + + return hooks && hooks.get ? + hooks.get( this ) : + Tween.propHooks._default.get( this ); + }, + run: function( percent ) { + var eased, + hooks = Tween.propHooks[ this.prop ]; + + if ( this.options.duration ) { + this.pos = eased = jQuery.easing[ this.easing ]( + percent, this.options.duration * percent, 0, 1, this.options.duration + ); + } else { + this.pos = eased = percent; + } + this.now = ( this.end - this.start ) * eased + this.start; + + if ( this.options.step ) { + this.options.step.call( this.elem, this.now, this ); + } + + if ( hooks && hooks.set ) { + hooks.set( this ); + } else { + Tween.propHooks._default.set( this ); + } + return this; + } +}; + +Tween.prototype.init.prototype = Tween.prototype; + +Tween.propHooks = { + _default: { + get: function( tween ) { + var result; + + // Use a property on the element directly when it is not a DOM element, + // or when there is no matching style property that exists. + if ( tween.elem.nodeType !== 1 || + tween.elem[ tween.prop ] != null && tween.elem.style[ tween.prop ] == null ) { + return tween.elem[ tween.prop ]; + } + + // Passing an empty string as a 3rd parameter to .css will automatically + // attempt a parseFloat and fallback to a string if the parse fails. + // Simple values such as "10px" are parsed to Float; + // complex values such as "rotate(1rad)" are returned as-is. + result = jQuery.css( tween.elem, tween.prop, "" ); + + // Empty strings, null, undefined and "auto" are converted to 0. + return !result || result === "auto" ? 0 : result; + }, + set: function( tween ) { + + // Use step hook for back compat. + // Use cssHook if its there. + // Use .style if available and use plain properties where available. + if ( jQuery.fx.step[ tween.prop ] ) { + jQuery.fx.step[ tween.prop ]( tween ); + } else if ( tween.elem.nodeType === 1 && + ( tween.elem.style[ jQuery.cssProps[ tween.prop ] ] != null || + jQuery.cssHooks[ tween.prop ] ) ) { + jQuery.style( tween.elem, tween.prop, tween.now + tween.unit ); + } else { + tween.elem[ tween.prop ] = tween.now; + } + } + } +}; + +// Support: IE <=9 only +// Panic based approach to setting things on disconnected nodes +Tween.propHooks.scrollTop = Tween.propHooks.scrollLeft = { + set: function( tween ) { + if ( tween.elem.nodeType && tween.elem.parentNode ) { + tween.elem[ tween.prop ] = tween.now; + } + } +}; + +jQuery.easing = { + linear: function( p ) { + return p; + }, + swing: function( p ) { + return 0.5 - Math.cos( p * Math.PI ) / 2; + }, + _default: "swing" +}; + +jQuery.fx = Tween.prototype.init; + +// Back compat <1.8 extension point +jQuery.fx.step = {}; + + + + +var + fxNow, inProgress, + rfxtypes = /^(?:toggle|show|hide)$/, + rrun = /queueHooks$/; + +function schedule() { + if ( inProgress ) { + if ( document.hidden === false && window.requestAnimationFrame ) { + window.requestAnimationFrame( schedule ); + } else { + window.setTimeout( schedule, jQuery.fx.interval ); + } + + jQuery.fx.tick(); + } +} + +// Animations created synchronously will run synchronously +function createFxNow() { + window.setTimeout( function() { + fxNow = undefined; + } ); + return ( fxNow = Date.now() ); +} + +// Generate parameters to create a standard animation +function genFx( type, includeWidth ) { + var which, + i = 0, + attrs = { height: type }; + + // If we include width, step value is 1 to do all cssExpand values, + // otherwise step value is 2 to skip over Left and Right + includeWidth = includeWidth ? 1 : 0; + for ( ; i < 4; i += 2 - includeWidth ) { + which = cssExpand[ i ]; + attrs[ "margin" + which ] = attrs[ "padding" + which ] = type; + } + + if ( includeWidth ) { + attrs.opacity = attrs.width = type; + } + + return attrs; +} + +function createTween( value, prop, animation ) { + var tween, + collection = ( Animation.tweeners[ prop ] || [] ).concat( Animation.tweeners[ "*" ] ), + index = 0, + length = collection.length; + for ( ; index < length; index++ ) { + if ( ( tween = collection[ index ].call( animation, prop, value ) ) ) { + + // We're done with this property + return tween; + } + } +} + +function defaultPrefilter( elem, props, opts ) { + var prop, value, toggle, hooks, oldfire, propTween, restoreDisplay, display, + isBox = "width" in props || "height" in props, + anim = this, + orig = {}, + style = elem.style, + hidden = elem.nodeType && isHiddenWithinTree( elem ), + dataShow = dataPriv.get( elem, "fxshow" ); + + // Queue-skipping animations hijack the fx hooks + if ( !opts.queue ) { + hooks = jQuery._queueHooks( elem, "fx" ); + if ( hooks.unqueued == null ) { + hooks.unqueued = 0; + oldfire = hooks.empty.fire; + hooks.empty.fire = function() { + if ( !hooks.unqueued ) { + oldfire(); + } + }; + } + hooks.unqueued++; + + anim.always( function() { + + // Ensure the complete handler is called before this completes + anim.always( function() { + hooks.unqueued--; + if ( !jQuery.queue( elem, "fx" ).length ) { + hooks.empty.fire(); + } + } ); + } ); + } + + // Detect show/hide animations + for ( prop in props ) { + value = props[ prop ]; + if ( rfxtypes.test( value ) ) { + delete props[ prop ]; + toggle = toggle || value === "toggle"; + if ( value === ( hidden ? "hide" : "show" ) ) { + + // Pretend to be hidden if this is a "show" and + // there is still data from a stopped show/hide + if ( value === "show" && dataShow && dataShow[ prop ] !== undefined ) { + hidden = true; + + // Ignore all other no-op show/hide data + } else { + continue; + } + } + orig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop ); + } + } + + // Bail out if this is a no-op like .hide().hide() + propTween = !jQuery.isEmptyObject( props ); + if ( !propTween && jQuery.isEmptyObject( orig ) ) { + return; + } + + // Restrict "overflow" and "display" styles during box animations + if ( isBox && elem.nodeType === 1 ) { + + // Support: IE <=9 - 11, Edge 12 - 15 + // Record all 3 overflow attributes because IE does not infer the shorthand + // from identically-valued overflowX and overflowY and Edge just mirrors + // the overflowX value there. + opts.overflow = [ style.overflow, style.overflowX, style.overflowY ]; + + // Identify a display type, preferring old show/hide data over the CSS cascade + restoreDisplay = dataShow && dataShow.display; + if ( restoreDisplay == null ) { + restoreDisplay = dataPriv.get( elem, "display" ); + } + display = jQuery.css( elem, "display" ); + if ( display === "none" ) { + if ( restoreDisplay ) { + display = restoreDisplay; + } else { + + // Get nonempty value(s) by temporarily forcing visibility + showHide( [ elem ], true ); + restoreDisplay = elem.style.display || restoreDisplay; + display = jQuery.css( elem, "display" ); + showHide( [ elem ] ); + } + } + + // Animate inline elements as inline-block + if ( display === "inline" || display === "inline-block" && restoreDisplay != null ) { + if ( jQuery.css( elem, "float" ) === "none" ) { + + // Restore the original display value at the end of pure show/hide animations + if ( !propTween ) { + anim.done( function() { + style.display = restoreDisplay; + } ); + if ( restoreDisplay == null ) { + display = style.display; + restoreDisplay = display === "none" ? "" : display; + } + } + style.display = "inline-block"; + } + } + } + + if ( opts.overflow ) { + style.overflow = "hidden"; + anim.always( function() { + style.overflow = opts.overflow[ 0 ]; + style.overflowX = opts.overflow[ 1 ]; + style.overflowY = opts.overflow[ 2 ]; + } ); + } + + // Implement show/hide animations + propTween = false; + for ( prop in orig ) { + + // General show/hide setup for this element animation + if ( !propTween ) { + if ( dataShow ) { + if ( "hidden" in dataShow ) { + hidden = dataShow.hidden; + } + } else { + dataShow = dataPriv.access( elem, "fxshow", { display: restoreDisplay } ); + } + + // Store hidden/visible for toggle so `.stop().toggle()` "reverses" + if ( toggle ) { + dataShow.hidden = !hidden; + } + + // Show elements before animating them + if ( hidden ) { + showHide( [ elem ], true ); + } + + /* eslint-disable no-loop-func */ + + anim.done( function() { + + /* eslint-enable no-loop-func */ + + // The final step of a "hide" animation is actually hiding the element + if ( !hidden ) { + showHide( [ elem ] ); + } + dataPriv.remove( elem, "fxshow" ); + for ( prop in orig ) { + jQuery.style( elem, prop, orig[ prop ] ); + } + } ); + } + + // Per-property setup + propTween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim ); + if ( !( prop in dataShow ) ) { + dataShow[ prop ] = propTween.start; + if ( hidden ) { + propTween.end = propTween.start; + propTween.start = 0; + } + } + } +} + +function propFilter( props, specialEasing ) { + var index, name, easing, value, hooks; + + // camelCase, specialEasing and expand cssHook pass + for ( index in props ) { + name = camelCase( index ); + easing = specialEasing[ name ]; + value = props[ index ]; + if ( Array.isArray( value ) ) { + easing = value[ 1 ]; + value = props[ index ] = value[ 0 ]; + } + + if ( index !== name ) { + props[ name ] = value; + delete props[ index ]; + } + + hooks = jQuery.cssHooks[ name ]; + if ( hooks && "expand" in hooks ) { + value = hooks.expand( value ); + delete props[ name ]; + + // Not quite $.extend, this won't overwrite existing keys. + // Reusing 'index' because we have the correct "name" + for ( index in value ) { + if ( !( index in props ) ) { + props[ index ] = value[ index ]; + specialEasing[ index ] = easing; + } + } + } else { + specialEasing[ name ] = easing; + } + } +} + +function Animation( elem, properties, options ) { + var result, + stopped, + index = 0, + length = Animation.prefilters.length, + deferred = jQuery.Deferred().always( function() { + + // Don't match elem in the :animated selector + delete tick.elem; + } ), + tick = function() { + if ( stopped ) { + return false; + } + var currentTime = fxNow || createFxNow(), + remaining = Math.max( 0, animation.startTime + animation.duration - currentTime ), + + // Support: Android 2.3 only + // Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (#12497) + temp = remaining / animation.duration || 0, + percent = 1 - temp, + index = 0, + length = animation.tweens.length; + + for ( ; index < length; index++ ) { + animation.tweens[ index ].run( percent ); + } + + deferred.notifyWith( elem, [ animation, percent, remaining ] ); + + // If there's more to do, yield + if ( percent < 1 && length ) { + return remaining; + } + + // If this was an empty animation, synthesize a final progress notification + if ( !length ) { + deferred.notifyWith( elem, [ animation, 1, 0 ] ); + } + + // Resolve the animation and report its conclusion + deferred.resolveWith( elem, [ animation ] ); + return false; + }, + animation = deferred.promise( { + elem: elem, + props: jQuery.extend( {}, properties ), + opts: jQuery.extend( true, { + specialEasing: {}, + easing: jQuery.easing._default + }, options ), + originalProperties: properties, + originalOptions: options, + startTime: fxNow || createFxNow(), + duration: options.duration, + tweens: [], + createTween: function( prop, end ) { + var tween = jQuery.Tween( elem, animation.opts, prop, end, + animation.opts.specialEasing[ prop ] || animation.opts.easing ); + animation.tweens.push( tween ); + return tween; + }, + stop: function( gotoEnd ) { + var index = 0, + + // If we are going to the end, we want to run all the tweens + // otherwise we skip this part + length = gotoEnd ? animation.tweens.length : 0; + if ( stopped ) { + return this; + } + stopped = true; + for ( ; index < length; index++ ) { + animation.tweens[ index ].run( 1 ); + } + + // Resolve when we played the last frame; otherwise, reject + if ( gotoEnd ) { + deferred.notifyWith( elem, [ animation, 1, 0 ] ); + deferred.resolveWith( elem, [ animation, gotoEnd ] ); + } else { + deferred.rejectWith( elem, [ animation, gotoEnd ] ); + } + return this; + } + } ), + props = animation.props; + + propFilter( props, animation.opts.specialEasing ); + + for ( ; index < length; index++ ) { + result = Animation.prefilters[ index ].call( animation, elem, props, animation.opts ); + if ( result ) { + if ( isFunction( result.stop ) ) { + jQuery._queueHooks( animation.elem, animation.opts.queue ).stop = + result.stop.bind( result ); + } + return result; + } + } + + jQuery.map( props, createTween, animation ); + + if ( isFunction( animation.opts.start ) ) { + animation.opts.start.call( elem, animation ); + } + + // Attach callbacks from options + animation + .progress( animation.opts.progress ) + .done( animation.opts.done, animation.opts.complete ) + .fail( animation.opts.fail ) + .always( animation.opts.always ); + + jQuery.fx.timer( + jQuery.extend( tick, { + elem: elem, + anim: animation, + queue: animation.opts.queue + } ) + ); + + return animation; +} + +jQuery.Animation = jQuery.extend( Animation, { + + tweeners: { + "*": [ function( prop, value ) { + var tween = this.createTween( prop, value ); + adjustCSS( tween.elem, prop, rcssNum.exec( value ), tween ); + return tween; + } ] + }, + + tweener: function( props, callback ) { + if ( isFunction( props ) ) { + callback = props; + props = [ "*" ]; + } else { + props = props.match( rnothtmlwhite ); + } + + var prop, + index = 0, + length = props.length; + + for ( ; index < length; index++ ) { + prop = props[ index ]; + Animation.tweeners[ prop ] = Animation.tweeners[ prop ] || []; + Animation.tweeners[ prop ].unshift( callback ); + } + }, + + prefilters: [ defaultPrefilter ], + + prefilter: function( callback, prepend ) { + if ( prepend ) { + Animation.prefilters.unshift( callback ); + } else { + Animation.prefilters.push( callback ); + } + } +} ); + +jQuery.speed = function( speed, easing, fn ) { + var opt = speed && typeof speed === "object" ? jQuery.extend( {}, speed ) : { + complete: fn || !fn && easing || + isFunction( speed ) && speed, + duration: speed, + easing: fn && easing || easing && !isFunction( easing ) && easing + }; + + // Go to the end state if fx are off + if ( jQuery.fx.off ) { + opt.duration = 0; + + } else { + if ( typeof opt.duration !== "number" ) { + if ( opt.duration in jQuery.fx.speeds ) { + opt.duration = jQuery.fx.speeds[ opt.duration ]; + + } else { + opt.duration = jQuery.fx.speeds._default; + } + } + } + + // Normalize opt.queue - true/undefined/null -> "fx" + if ( opt.queue == null || opt.queue === true ) { + opt.queue = "fx"; + } + + // Queueing + opt.old = opt.complete; + + opt.complete = function() { + if ( isFunction( opt.old ) ) { + opt.old.call( this ); + } + + if ( opt.queue ) { + jQuery.dequeue( this, opt.queue ); + } + }; + + return opt; +}; + +jQuery.fn.extend( { + fadeTo: function( speed, to, easing, callback ) { + + // Show any hidden elements after setting opacity to 0 + return this.filter( isHiddenWithinTree ).css( "opacity", 0 ).show() + + // Animate to the value specified + .end().animate( { opacity: to }, speed, easing, callback ); + }, + animate: function( prop, speed, easing, callback ) { + var empty = jQuery.isEmptyObject( prop ), + optall = jQuery.speed( speed, easing, callback ), + doAnimation = function() { + + // Operate on a copy of prop so per-property easing won't be lost + var anim = Animation( this, jQuery.extend( {}, prop ), optall ); + + // Empty animations, or finishing resolves immediately + if ( empty || dataPriv.get( this, "finish" ) ) { + anim.stop( true ); + } + }; + doAnimation.finish = doAnimation; + + return empty || optall.queue === false ? + this.each( doAnimation ) : + this.queue( optall.queue, doAnimation ); + }, + stop: function( type, clearQueue, gotoEnd ) { + var stopQueue = function( hooks ) { + var stop = hooks.stop; + delete hooks.stop; + stop( gotoEnd ); + }; + + if ( typeof type !== "string" ) { + gotoEnd = clearQueue; + clearQueue = type; + type = undefined; + } + if ( clearQueue && type !== false ) { + this.queue( type || "fx", [] ); + } + + return this.each( function() { + var dequeue = true, + index = type != null && type + "queueHooks", + timers = jQuery.timers, + data = dataPriv.get( this ); + + if ( index ) { + if ( data[ index ] && data[ index ].stop ) { + stopQueue( data[ index ] ); + } + } else { + for ( index in data ) { + if ( data[ index ] && data[ index ].stop && rrun.test( index ) ) { + stopQueue( data[ index ] ); + } + } + } + + for ( index = timers.length; index--; ) { + if ( timers[ index ].elem === this && + ( type == null || timers[ index ].queue === type ) ) { + + timers[ index ].anim.stop( gotoEnd ); + dequeue = false; + timers.splice( index, 1 ); + } + } + + // Start the next in the queue if the last step wasn't forced. + // Timers currently will call their complete callbacks, which + // will dequeue but only if they were gotoEnd. + if ( dequeue || !gotoEnd ) { + jQuery.dequeue( this, type ); + } + } ); + }, + finish: function( type ) { + if ( type !== false ) { + type = type || "fx"; + } + return this.each( function() { + var index, + data = dataPriv.get( this ), + queue = data[ type + "queue" ], + hooks = data[ type + "queueHooks" ], + timers = jQuery.timers, + length = queue ? queue.length : 0; + + // Enable finishing flag on private data + data.finish = true; + + // Empty the queue first + jQuery.queue( this, type, [] ); + + if ( hooks && hooks.stop ) { + hooks.stop.call( this, true ); + } + + // Look for any active animations, and finish them + for ( index = timers.length; index--; ) { + if ( timers[ index ].elem === this && timers[ index ].queue === type ) { + timers[ index ].anim.stop( true ); + timers.splice( index, 1 ); + } + } + + // Look for any animations in the old queue and finish them + for ( index = 0; index < length; index++ ) { + if ( queue[ index ] && queue[ index ].finish ) { + queue[ index ].finish.call( this ); + } + } + + // Turn off finishing flag + delete data.finish; + } ); + } +} ); + +jQuery.each( [ "toggle", "show", "hide" ], function( i, name ) { + var cssFn = jQuery.fn[ name ]; + jQuery.fn[ name ] = function( speed, easing, callback ) { + return speed == null || typeof speed === "boolean" ? + cssFn.apply( this, arguments ) : + this.animate( genFx( name, true ), speed, easing, callback ); + }; +} ); + +// Generate shortcuts for custom animations +jQuery.each( { + slideDown: genFx( "show" ), + slideUp: genFx( "hide" ), + slideToggle: genFx( "toggle" ), + fadeIn: { opacity: "show" }, + fadeOut: { opacity: "hide" }, + fadeToggle: { opacity: "toggle" } +}, function( name, props ) { + jQuery.fn[ name ] = function( speed, easing, callback ) { + return this.animate( props, speed, easing, callback ); + }; +} ); + +jQuery.timers = []; +jQuery.fx.tick = function() { + var timer, + i = 0, + timers = jQuery.timers; + + fxNow = Date.now(); + + for ( ; i < timers.length; i++ ) { + timer = timers[ i ]; + + // Run the timer and safely remove it when done (allowing for external removal) + if ( !timer() && timers[ i ] === timer ) { + timers.splice( i--, 1 ); + } + } + + if ( !timers.length ) { + jQuery.fx.stop(); + } + fxNow = undefined; +}; + +jQuery.fx.timer = function( timer ) { + jQuery.timers.push( timer ); + jQuery.fx.start(); +}; + +jQuery.fx.interval = 13; +jQuery.fx.start = function() { + if ( inProgress ) { + return; + } + + inProgress = true; + schedule(); +}; + +jQuery.fx.stop = function() { + inProgress = null; +}; + +jQuery.fx.speeds = { + slow: 600, + fast: 200, + + // Default speed + _default: 400 +}; + + +// Based off of the plugin by Clint Helfers, with permission. +// https://web.archive.org/web/20100324014747/http://blindsignals.com/index.php/2009/07/jquery-delay/ +jQuery.fn.delay = function( time, type ) { + time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time; + type = type || "fx"; + + return this.queue( type, function( next, hooks ) { + var timeout = window.setTimeout( next, time ); + hooks.stop = function() { + window.clearTimeout( timeout ); + }; + } ); +}; + + +( function() { + var input = document.createElement( "input" ), + select = document.createElement( "select" ), + opt = select.appendChild( document.createElement( "option" ) ); + + input.type = "checkbox"; + + // Support: Android <=4.3 only + // Default value for a checkbox should be "on" + support.checkOn = input.value !== ""; + + // Support: IE <=11 only + // Must access selectedIndex to make default options select + support.optSelected = opt.selected; + + // Support: IE <=11 only + // An input loses its value after becoming a radio + input = document.createElement( "input" ); + input.value = "t"; + input.type = "radio"; + support.radioValue = input.value === "t"; +} )(); + + +var boolHook, + attrHandle = jQuery.expr.attrHandle; + +jQuery.fn.extend( { + attr: function( name, value ) { + return access( this, jQuery.attr, name, value, arguments.length > 1 ); + }, + + removeAttr: function( name ) { + return this.each( function() { + jQuery.removeAttr( this, name ); + } ); + } +} ); + +jQuery.extend( { + attr: function( elem, name, value ) { + var ret, hooks, + nType = elem.nodeType; + + // Don't get/set attributes on text, comment and attribute nodes + if ( nType === 3 || nType === 8 || nType === 2 ) { + return; + } + + // Fallback to prop when attributes are not supported + if ( typeof elem.getAttribute === "undefined" ) { + return jQuery.prop( elem, name, value ); + } + + // Attribute hooks are determined by the lowercase version + // Grab necessary hook if one is defined + if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) { + hooks = jQuery.attrHooks[ name.toLowerCase() ] || + ( jQuery.expr.match.bool.test( name ) ? boolHook : undefined ); + } + + if ( value !== undefined ) { + if ( value === null ) { + jQuery.removeAttr( elem, name ); + return; + } + + if ( hooks && "set" in hooks && + ( ret = hooks.set( elem, value, name ) ) !== undefined ) { + return ret; + } + + elem.setAttribute( name, value + "" ); + return value; + } + + if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) { + return ret; + } + + ret = jQuery.find.attr( elem, name ); + + // Non-existent attributes return null, we normalize to undefined + return ret == null ? undefined : ret; + }, + + attrHooks: { + type: { + set: function( elem, value ) { + if ( !support.radioValue && value === "radio" && + nodeName( elem, "input" ) ) { + var val = elem.value; + elem.setAttribute( "type", value ); + if ( val ) { + elem.value = val; + } + return value; + } + } + } + }, + + removeAttr: function( elem, value ) { + var name, + i = 0, + + // Attribute names can contain non-HTML whitespace characters + // https://html.spec.whatwg.org/multipage/syntax.html#attributes-2 + attrNames = value && value.match( rnothtmlwhite ); + + if ( attrNames && elem.nodeType === 1 ) { + while ( ( name = attrNames[ i++ ] ) ) { + elem.removeAttribute( name ); + } + } + } +} ); + +// Hooks for boolean attributes +boolHook = { + set: function( elem, value, name ) { + if ( value === false ) { + + // Remove boolean attributes when set to false + jQuery.removeAttr( elem, name ); + } else { + elem.setAttribute( name, name ); + } + return name; + } +}; + +jQuery.each( jQuery.expr.match.bool.source.match( /\w+/g ), function( i, name ) { + var getter = attrHandle[ name ] || jQuery.find.attr; + + attrHandle[ name ] = function( elem, name, isXML ) { + var ret, handle, + lowercaseName = name.toLowerCase(); + + if ( !isXML ) { + + // Avoid an infinite loop by temporarily removing this function from the getter + handle = attrHandle[ lowercaseName ]; + attrHandle[ lowercaseName ] = ret; + ret = getter( elem, name, isXML ) != null ? + lowercaseName : + null; + attrHandle[ lowercaseName ] = handle; + } + return ret; + }; +} ); + + + + +var rfocusable = /^(?:input|select|textarea|button)$/i, + rclickable = /^(?:a|area)$/i; + +jQuery.fn.extend( { + prop: function( name, value ) { + return access( this, jQuery.prop, name, value, arguments.length > 1 ); + }, + + removeProp: function( name ) { + return this.each( function() { + delete this[ jQuery.propFix[ name ] || name ]; + } ); + } +} ); + +jQuery.extend( { + prop: function( elem, name, value ) { + var ret, hooks, + nType = elem.nodeType; + + // Don't get/set properties on text, comment and attribute nodes + if ( nType === 3 || nType === 8 || nType === 2 ) { + return; + } + + if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) { + + // Fix name and attach hooks + name = jQuery.propFix[ name ] || name; + hooks = jQuery.propHooks[ name ]; + } + + if ( value !== undefined ) { + if ( hooks && "set" in hooks && + ( ret = hooks.set( elem, value, name ) ) !== undefined ) { + return ret; + } + + return ( elem[ name ] = value ); + } + + if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) { + return ret; + } + + return elem[ name ]; + }, + + propHooks: { + tabIndex: { + get: function( elem ) { + + // Support: IE <=9 - 11 only + // elem.tabIndex doesn't always return the + // correct value when it hasn't been explicitly set + // https://web.archive.org/web/20141116233347/http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/ + // Use proper attribute retrieval(#12072) + var tabindex = jQuery.find.attr( elem, "tabindex" ); + + if ( tabindex ) { + return parseInt( tabindex, 10 ); + } + + if ( + rfocusable.test( elem.nodeName ) || + rclickable.test( elem.nodeName ) && + elem.href + ) { + return 0; + } + + return -1; + } + } + }, + + propFix: { + "for": "htmlFor", + "class": "className" + } +} ); + +// Support: IE <=11 only +// Accessing the selectedIndex property +// forces the browser to respect setting selected +// on the option +// The getter ensures a default option is selected +// when in an optgroup +// eslint rule "no-unused-expressions" is disabled for this code +// since it considers such accessions noop +if ( !support.optSelected ) { + jQuery.propHooks.selected = { + get: function( elem ) { + + /* eslint no-unused-expressions: "off" */ + + var parent = elem.parentNode; + if ( parent && parent.parentNode ) { + parent.parentNode.selectedIndex; + } + return null; + }, + set: function( elem ) { + + /* eslint no-unused-expressions: "off" */ + + var parent = elem.parentNode; + if ( parent ) { + parent.selectedIndex; + + if ( parent.parentNode ) { + parent.parentNode.selectedIndex; + } + } + } + }; +} + +jQuery.each( [ + "tabIndex", + "readOnly", + "maxLength", + "cellSpacing", + "cellPadding", + "rowSpan", + "colSpan", + "useMap", + "frameBorder", + "contentEditable" +], function() { + jQuery.propFix[ this.toLowerCase() ] = this; +} ); + + + + + // Strip and collapse whitespace according to HTML spec + // https://infra.spec.whatwg.org/#strip-and-collapse-ascii-whitespace + function stripAndCollapse( value ) { + var tokens = value.match( rnothtmlwhite ) || []; + return tokens.join( " " ); + } + + +function getClass( elem ) { + return elem.getAttribute && elem.getAttribute( "class" ) || ""; +} + +function classesToArray( value ) { + if ( Array.isArray( value ) ) { + return value; + } + if ( typeof value === "string" ) { + return value.match( rnothtmlwhite ) || []; + } + return []; +} + +jQuery.fn.extend( { + addClass: function( value ) { + var classes, elem, cur, curValue, clazz, j, finalValue, + i = 0; + + if ( isFunction( value ) ) { + return this.each( function( j ) { + jQuery( this ).addClass( value.call( this, j, getClass( this ) ) ); + } ); + } + + classes = classesToArray( value ); + + if ( classes.length ) { + while ( ( elem = this[ i++ ] ) ) { + curValue = getClass( elem ); + cur = elem.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " ); + + if ( cur ) { + j = 0; + while ( ( clazz = classes[ j++ ] ) ) { + if ( cur.indexOf( " " + clazz + " " ) < 0 ) { + cur += clazz + " "; + } + } + + // Only assign if different to avoid unneeded rendering. + finalValue = stripAndCollapse( cur ); + if ( curValue !== finalValue ) { + elem.setAttribute( "class", finalValue ); + } + } + } + } + + return this; + }, + + removeClass: function( value ) { + var classes, elem, cur, curValue, clazz, j, finalValue, + i = 0; + + if ( isFunction( value ) ) { + return this.each( function( j ) { + jQuery( this ).removeClass( value.call( this, j, getClass( this ) ) ); + } ); + } + + if ( !arguments.length ) { + return this.attr( "class", "" ); + } + + classes = classesToArray( value ); + + if ( classes.length ) { + while ( ( elem = this[ i++ ] ) ) { + curValue = getClass( elem ); + + // This expression is here for better compressibility (see addClass) + cur = elem.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " ); + + if ( cur ) { + j = 0; + while ( ( clazz = classes[ j++ ] ) ) { + + // Remove *all* instances + while ( cur.indexOf( " " + clazz + " " ) > -1 ) { + cur = cur.replace( " " + clazz + " ", " " ); + } + } + + // Only assign if different to avoid unneeded rendering. + finalValue = stripAndCollapse( cur ); + if ( curValue !== finalValue ) { + elem.setAttribute( "class", finalValue ); + } + } + } + } + + return this; + }, + + toggleClass: function( value, stateVal ) { + var type = typeof value, + isValidValue = type === "string" || Array.isArray( value ); + + if ( typeof stateVal === "boolean" && isValidValue ) { + return stateVal ? this.addClass( value ) : this.removeClass( value ); + } + + if ( isFunction( value ) ) { + return this.each( function( i ) { + jQuery( this ).toggleClass( + value.call( this, i, getClass( this ), stateVal ), + stateVal + ); + } ); + } + + return this.each( function() { + var className, i, self, classNames; + + if ( isValidValue ) { + + // Toggle individual class names + i = 0; + self = jQuery( this ); + classNames = classesToArray( value ); + + while ( ( className = classNames[ i++ ] ) ) { + + // Check each className given, space separated list + if ( self.hasClass( className ) ) { + self.removeClass( className ); + } else { + self.addClass( className ); + } + } + + // Toggle whole class name + } else if ( value === undefined || type === "boolean" ) { + className = getClass( this ); + if ( className ) { + + // Store className if set + dataPriv.set( this, "__className__", className ); + } + + // If the element has a class name or if we're passed `false`, + // then remove the whole classname (if there was one, the above saved it). + // Otherwise bring back whatever was previously saved (if anything), + // falling back to the empty string if nothing was stored. + if ( this.setAttribute ) { + this.setAttribute( "class", + className || value === false ? + "" : + dataPriv.get( this, "__className__" ) || "" + ); + } + } + } ); + }, + + hasClass: function( selector ) { + var className, elem, + i = 0; + + className = " " + selector + " "; + while ( ( elem = this[ i++ ] ) ) { + if ( elem.nodeType === 1 && + ( " " + stripAndCollapse( getClass( elem ) ) + " " ).indexOf( className ) > -1 ) { + return true; + } + } + + return false; + } +} ); + + + + +var rreturn = /\r/g; + +jQuery.fn.extend( { + val: function( value ) { + var hooks, ret, valueIsFunction, + elem = this[ 0 ]; + + if ( !arguments.length ) { + if ( elem ) { + hooks = jQuery.valHooks[ elem.type ] || + jQuery.valHooks[ elem.nodeName.toLowerCase() ]; + + if ( hooks && + "get" in hooks && + ( ret = hooks.get( elem, "value" ) ) !== undefined + ) { + return ret; + } + + ret = elem.value; + + // Handle most common string cases + if ( typeof ret === "string" ) { + return ret.replace( rreturn, "" ); + } + + // Handle cases where value is null/undef or number + return ret == null ? "" : ret; + } + + return; + } + + valueIsFunction = isFunction( value ); + + return this.each( function( i ) { + var val; + + if ( this.nodeType !== 1 ) { + return; + } + + if ( valueIsFunction ) { + val = value.call( this, i, jQuery( this ).val() ); + } else { + val = value; + } + + // Treat null/undefined as ""; convert numbers to string + if ( val == null ) { + val = ""; + + } else if ( typeof val === "number" ) { + val += ""; + + } else if ( Array.isArray( val ) ) { + val = jQuery.map( val, function( value ) { + return value == null ? "" : value + ""; + } ); + } + + hooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ]; + + // If set returns undefined, fall back to normal setting + if ( !hooks || !( "set" in hooks ) || hooks.set( this, val, "value" ) === undefined ) { + this.value = val; + } + } ); + } +} ); + +jQuery.extend( { + valHooks: { + option: { + get: function( elem ) { + + var val = jQuery.find.attr( elem, "value" ); + return val != null ? + val : + + // Support: IE <=10 - 11 only + // option.text throws exceptions (#14686, #14858) + // Strip and collapse whitespace + // https://html.spec.whatwg.org/#strip-and-collapse-whitespace + stripAndCollapse( jQuery.text( elem ) ); + } + }, + select: { + get: function( elem ) { + var value, option, i, + options = elem.options, + index = elem.selectedIndex, + one = elem.type === "select-one", + values = one ? null : [], + max = one ? index + 1 : options.length; + + if ( index < 0 ) { + i = max; + + } else { + i = one ? index : 0; + } + + // Loop through all the selected options + for ( ; i < max; i++ ) { + option = options[ i ]; + + // Support: IE <=9 only + // IE8-9 doesn't update selected after form reset (#2551) + if ( ( option.selected || i === index ) && + + // Don't return options that are disabled or in a disabled optgroup + !option.disabled && + ( !option.parentNode.disabled || + !nodeName( option.parentNode, "optgroup" ) ) ) { + + // Get the specific value for the option + value = jQuery( option ).val(); + + // We don't need an array for one selects + if ( one ) { + return value; + } + + // Multi-Selects return an array + values.push( value ); + } + } + + return values; + }, + + set: function( elem, value ) { + var optionSet, option, + options = elem.options, + values = jQuery.makeArray( value ), + i = options.length; + + while ( i-- ) { + option = options[ i ]; + + /* eslint-disable no-cond-assign */ + + if ( option.selected = + jQuery.inArray( jQuery.valHooks.option.get( option ), values ) > -1 + ) { + optionSet = true; + } + + /* eslint-enable no-cond-assign */ + } + + // Force browsers to behave consistently when non-matching value is set + if ( !optionSet ) { + elem.selectedIndex = -1; + } + return values; + } + } + } +} ); + +// Radios and checkboxes getter/setter +jQuery.each( [ "radio", "checkbox" ], function() { + jQuery.valHooks[ this ] = { + set: function( elem, value ) { + if ( Array.isArray( value ) ) { + return ( elem.checked = jQuery.inArray( jQuery( elem ).val(), value ) > -1 ); + } + } + }; + if ( !support.checkOn ) { + jQuery.valHooks[ this ].get = function( elem ) { + return elem.getAttribute( "value" ) === null ? "on" : elem.value; + }; + } +} ); + + + + +// Return jQuery for attributes-only inclusion + + +support.focusin = "onfocusin" in window; + + +var rfocusMorph = /^(?:focusinfocus|focusoutblur)$/, + stopPropagationCallback = function( e ) { + e.stopPropagation(); + }; + +jQuery.extend( jQuery.event, { + + trigger: function( event, data, elem, onlyHandlers ) { + + var i, cur, tmp, bubbleType, ontype, handle, special, lastElement, + eventPath = [ elem || document ], + type = hasOwn.call( event, "type" ) ? event.type : event, + namespaces = hasOwn.call( event, "namespace" ) ? event.namespace.split( "." ) : []; + + cur = lastElement = tmp = elem = elem || document; + + // Don't do events on text and comment nodes + if ( elem.nodeType === 3 || elem.nodeType === 8 ) { + return; + } + + // focus/blur morphs to focusin/out; ensure we're not firing them right now + if ( rfocusMorph.test( type + jQuery.event.triggered ) ) { + return; + } + + if ( type.indexOf( "." ) > -1 ) { + + // Namespaced trigger; create a regexp to match event type in handle() + namespaces = type.split( "." ); + type = namespaces.shift(); + namespaces.sort(); + } + ontype = type.indexOf( ":" ) < 0 && "on" + type; + + // Caller can pass in a jQuery.Event object, Object, or just an event type string + event = event[ jQuery.expando ] ? + event : + new jQuery.Event( type, typeof event === "object" && event ); + + // Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true) + event.isTrigger = onlyHandlers ? 2 : 3; + event.namespace = namespaces.join( "." ); + event.rnamespace = event.namespace ? + new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" ) : + null; + + // Clean up the event in case it is being reused + event.result = undefined; + if ( !event.target ) { + event.target = elem; + } + + // Clone any incoming data and prepend the event, creating the handler arg list + data = data == null ? + [ event ] : + jQuery.makeArray( data, [ event ] ); + + // Allow special events to draw outside the lines + special = jQuery.event.special[ type ] || {}; + if ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) { + return; + } + + // Determine event propagation path in advance, per W3C events spec (#9951) + // Bubble up to document, then to window; watch for a global ownerDocument var (#9724) + if ( !onlyHandlers && !special.noBubble && !isWindow( elem ) ) { + + bubbleType = special.delegateType || type; + if ( !rfocusMorph.test( bubbleType + type ) ) { + cur = cur.parentNode; + } + for ( ; cur; cur = cur.parentNode ) { + eventPath.push( cur ); + tmp = cur; + } + + // Only add window if we got to document (e.g., not plain obj or detached DOM) + if ( tmp === ( elem.ownerDocument || document ) ) { + eventPath.push( tmp.defaultView || tmp.parentWindow || window ); + } + } + + // Fire handlers on the event path + i = 0; + while ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) { + lastElement = cur; + event.type = i > 1 ? + bubbleType : + special.bindType || type; + + // jQuery handler + handle = ( dataPriv.get( cur, "events" ) || {} )[ event.type ] && + dataPriv.get( cur, "handle" ); + if ( handle ) { + handle.apply( cur, data ); + } + + // Native handler + handle = ontype && cur[ ontype ]; + if ( handle && handle.apply && acceptData( cur ) ) { + event.result = handle.apply( cur, data ); + if ( event.result === false ) { + event.preventDefault(); + } + } + } + event.type = type; + + // If nobody prevented the default action, do it now + if ( !onlyHandlers && !event.isDefaultPrevented() ) { + + if ( ( !special._default || + special._default.apply( eventPath.pop(), data ) === false ) && + acceptData( elem ) ) { + + // Call a native DOM method on the target with the same name as the event. + // Don't do default actions on window, that's where global variables be (#6170) + if ( ontype && isFunction( elem[ type ] ) && !isWindow( elem ) ) { + + // Don't re-trigger an onFOO event when we call its FOO() method + tmp = elem[ ontype ]; + + if ( tmp ) { + elem[ ontype ] = null; + } + + // Prevent re-triggering of the same event, since we already bubbled it above + jQuery.event.triggered = type; + + if ( event.isPropagationStopped() ) { + lastElement.addEventListener( type, stopPropagationCallback ); + } + + elem[ type ](); + + if ( event.isPropagationStopped() ) { + lastElement.removeEventListener( type, stopPropagationCallback ); + } + + jQuery.event.triggered = undefined; + + if ( tmp ) { + elem[ ontype ] = tmp; + } + } + } + } + + return event.result; + }, + + // Piggyback on a donor event to simulate a different one + // Used only for `focus(in | out)` events + simulate: function( type, elem, event ) { + var e = jQuery.extend( + new jQuery.Event(), + event, + { + type: type, + isSimulated: true + } + ); + + jQuery.event.trigger( e, null, elem ); + } + +} ); + +jQuery.fn.extend( { + + trigger: function( type, data ) { + return this.each( function() { + jQuery.event.trigger( type, data, this ); + } ); + }, + triggerHandler: function( type, data ) { + var elem = this[ 0 ]; + if ( elem ) { + return jQuery.event.trigger( type, data, elem, true ); + } + } +} ); + + +// Support: Firefox <=44 +// Firefox doesn't have focus(in | out) events +// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787 +// +// Support: Chrome <=48 - 49, Safari <=9.0 - 9.1 +// focus(in | out) events fire after focus & blur events, +// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order +// Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857 +if ( !support.focusin ) { + jQuery.each( { focus: "focusin", blur: "focusout" }, function( orig, fix ) { + + // Attach a single capturing handler on the document while someone wants focusin/focusout + var handler = function( event ) { + jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ) ); + }; + + jQuery.event.special[ fix ] = { + setup: function() { + var doc = this.ownerDocument || this, + attaches = dataPriv.access( doc, fix ); + + if ( !attaches ) { + doc.addEventListener( orig, handler, true ); + } + dataPriv.access( doc, fix, ( attaches || 0 ) + 1 ); + }, + teardown: function() { + var doc = this.ownerDocument || this, + attaches = dataPriv.access( doc, fix ) - 1; + + if ( !attaches ) { + doc.removeEventListener( orig, handler, true ); + dataPriv.remove( doc, fix ); + + } else { + dataPriv.access( doc, fix, attaches ); + } + } + }; + } ); +} +var location = window.location; + +var nonce = Date.now(); + +var rquery = ( /\?/ ); + + + +// Cross-browser xml parsing +jQuery.parseXML = function( data ) { + var xml; + if ( !data || typeof data !== "string" ) { + return null; + } + + // Support: IE 9 - 11 only + // IE throws on parseFromString with invalid input. + try { + xml = ( new window.DOMParser() ).parseFromString( data, "text/xml" ); + } catch ( e ) { + xml = undefined; + } + + if ( !xml || xml.getElementsByTagName( "parsererror" ).length ) { + jQuery.error( "Invalid XML: " + data ); + } + return xml; +}; + + +var + rbracket = /\[\]$/, + rCRLF = /\r?\n/g, + rsubmitterTypes = /^(?:submit|button|image|reset|file)$/i, + rsubmittable = /^(?:input|select|textarea|keygen)/i; + +function buildParams( prefix, obj, traditional, add ) { + var name; + + if ( Array.isArray( obj ) ) { + + // Serialize array item. + jQuery.each( obj, function( i, v ) { + if ( traditional || rbracket.test( prefix ) ) { + + // Treat each array item as a scalar. + add( prefix, v ); + + } else { + + // Item is non-scalar (array or object), encode its numeric index. + buildParams( + prefix + "[" + ( typeof v === "object" && v != null ? i : "" ) + "]", + v, + traditional, + add + ); + } + } ); + + } else if ( !traditional && toType( obj ) === "object" ) { + + // Serialize object item. + for ( name in obj ) { + buildParams( prefix + "[" + name + "]", obj[ name ], traditional, add ); + } + + } else { + + // Serialize scalar item. + add( prefix, obj ); + } +} + +// Serialize an array of form elements or a set of +// key/values into a query string +jQuery.param = function( a, traditional ) { + var prefix, + s = [], + add = function( key, valueOrFunction ) { + + // If value is a function, invoke it and use its return value + var value = isFunction( valueOrFunction ) ? + valueOrFunction() : + valueOrFunction; + + s[ s.length ] = encodeURIComponent( key ) + "=" + + encodeURIComponent( value == null ? "" : value ); + }; + + // If an array was passed in, assume that it is an array of form elements. + if ( Array.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) { + + // Serialize the form elements + jQuery.each( a, function() { + add( this.name, this.value ); + } ); + + } else { + + // If traditional, encode the "old" way (the way 1.3.2 or older + // did it), otherwise encode params recursively. + for ( prefix in a ) { + buildParams( prefix, a[ prefix ], traditional, add ); + } + } + + // Return the resulting serialization + return s.join( "&" ); +}; + +jQuery.fn.extend( { + serialize: function() { + return jQuery.param( this.serializeArray() ); + }, + serializeArray: function() { + return this.map( function() { + + // Can add propHook for "elements" to filter or add form elements + var elements = jQuery.prop( this, "elements" ); + return elements ? jQuery.makeArray( elements ) : this; + } ) + .filter( function() { + var type = this.type; + + // Use .is( ":disabled" ) so that fieldset[disabled] works + return this.name && !jQuery( this ).is( ":disabled" ) && + rsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) && + ( this.checked || !rcheckableType.test( type ) ); + } ) + .map( function( i, elem ) { + var val = jQuery( this ).val(); + + if ( val == null ) { + return null; + } + + if ( Array.isArray( val ) ) { + return jQuery.map( val, function( val ) { + return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) }; + } ); + } + + return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) }; + } ).get(); + } +} ); + + +var + r20 = /%20/g, + rhash = /#.*$/, + rantiCache = /([?&])_=[^&]*/, + rheaders = /^(.*?):[ \t]*([^\r\n]*)$/mg, + + // #7653, #8125, #8152: local protocol detection + rlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/, + rnoContent = /^(?:GET|HEAD)$/, + rprotocol = /^\/\//, + + /* Prefilters + * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example) + * 2) These are called: + * - BEFORE asking for a transport + * - AFTER param serialization (s.data is a string if s.processData is true) + * 3) key is the dataType + * 4) the catchall symbol "*" can be used + * 5) execution will start with transport dataType and THEN continue down to "*" if needed + */ + prefilters = {}, + + /* Transports bindings + * 1) key is the dataType + * 2) the catchall symbol "*" can be used + * 3) selection will start with transport dataType and THEN go to "*" if needed + */ + transports = {}, + + // Avoid comment-prolog char sequence (#10098); must appease lint and evade compression + allTypes = "*/".concat( "*" ), + + // Anchor tag for parsing the document origin + originAnchor = document.createElement( "a" ); + originAnchor.href = location.href; + +// Base "constructor" for jQuery.ajaxPrefilter and jQuery.ajaxTransport +function addToPrefiltersOrTransports( structure ) { + + // dataTypeExpression is optional and defaults to "*" + return function( dataTypeExpression, func ) { + + if ( typeof dataTypeExpression !== "string" ) { + func = dataTypeExpression; + dataTypeExpression = "*"; + } + + var dataType, + i = 0, + dataTypes = dataTypeExpression.toLowerCase().match( rnothtmlwhite ) || []; + + if ( isFunction( func ) ) { + + // For each dataType in the dataTypeExpression + while ( ( dataType = dataTypes[ i++ ] ) ) { + + // Prepend if requested + if ( dataType[ 0 ] === "+" ) { + dataType = dataType.slice( 1 ) || "*"; + ( structure[ dataType ] = structure[ dataType ] || [] ).unshift( func ); + + // Otherwise append + } else { + ( structure[ dataType ] = structure[ dataType ] || [] ).push( func ); + } + } + } + }; +} + +// Base inspection function for prefilters and transports +function inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) { + + var inspected = {}, + seekingTransport = ( structure === transports ); + + function inspect( dataType ) { + var selected; + inspected[ dataType ] = true; + jQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) { + var dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR ); + if ( typeof dataTypeOrTransport === "string" && + !seekingTransport && !inspected[ dataTypeOrTransport ] ) { + + options.dataTypes.unshift( dataTypeOrTransport ); + inspect( dataTypeOrTransport ); + return false; + } else if ( seekingTransport ) { + return !( selected = dataTypeOrTransport ); + } + } ); + return selected; + } + + return inspect( options.dataTypes[ 0 ] ) || !inspected[ "*" ] && inspect( "*" ); +} + +// A special extend for ajax options +// that takes "flat" options (not to be deep extended) +// Fixes #9887 +function ajaxExtend( target, src ) { + var key, deep, + flatOptions = jQuery.ajaxSettings.flatOptions || {}; + + for ( key in src ) { + if ( src[ key ] !== undefined ) { + ( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ]; + } + } + if ( deep ) { + jQuery.extend( true, target, deep ); + } + + return target; +} + +/* Handles responses to an ajax request: + * - finds the right dataType (mediates between content-type and expected dataType) + * - returns the corresponding response + */ +function ajaxHandleResponses( s, jqXHR, responses ) { + + var ct, type, finalDataType, firstDataType, + contents = s.contents, + dataTypes = s.dataTypes; + + // Remove auto dataType and get content-type in the process + while ( dataTypes[ 0 ] === "*" ) { + dataTypes.shift(); + if ( ct === undefined ) { + ct = s.mimeType || jqXHR.getResponseHeader( "Content-Type" ); + } + } + + // Check if we're dealing with a known content-type + if ( ct ) { + for ( type in contents ) { + if ( contents[ type ] && contents[ type ].test( ct ) ) { + dataTypes.unshift( type ); + break; + } + } + } + + // Check to see if we have a response for the expected dataType + if ( dataTypes[ 0 ] in responses ) { + finalDataType = dataTypes[ 0 ]; + } else { + + // Try convertible dataTypes + for ( type in responses ) { + if ( !dataTypes[ 0 ] || s.converters[ type + " " + dataTypes[ 0 ] ] ) { + finalDataType = type; + break; + } + if ( !firstDataType ) { + firstDataType = type; + } + } + + // Or just use first one + finalDataType = finalDataType || firstDataType; + } + + // If we found a dataType + // We add the dataType to the list if needed + // and return the corresponding response + if ( finalDataType ) { + if ( finalDataType !== dataTypes[ 0 ] ) { + dataTypes.unshift( finalDataType ); + } + return responses[ finalDataType ]; + } +} + +/* Chain conversions given the request and the original response + * Also sets the responseXXX fields on the jqXHR instance + */ +function ajaxConvert( s, response, jqXHR, isSuccess ) { + var conv2, current, conv, tmp, prev, + converters = {}, + + // Work with a copy of dataTypes in case we need to modify it for conversion + dataTypes = s.dataTypes.slice(); + + // Create converters map with lowercased keys + if ( dataTypes[ 1 ] ) { + for ( conv in s.converters ) { + converters[ conv.toLowerCase() ] = s.converters[ conv ]; + } + } + + current = dataTypes.shift(); + + // Convert to each sequential dataType + while ( current ) { + + if ( s.responseFields[ current ] ) { + jqXHR[ s.responseFields[ current ] ] = response; + } + + // Apply the dataFilter if provided + if ( !prev && isSuccess && s.dataFilter ) { + response = s.dataFilter( response, s.dataType ); + } + + prev = current; + current = dataTypes.shift(); + + if ( current ) { + + // There's only work to do if current dataType is non-auto + if ( current === "*" ) { + + current = prev; + + // Convert response if prev dataType is non-auto and differs from current + } else if ( prev !== "*" && prev !== current ) { + + // Seek a direct converter + conv = converters[ prev + " " + current ] || converters[ "* " + current ]; + + // If none found, seek a pair + if ( !conv ) { + for ( conv2 in converters ) { + + // If conv2 outputs current + tmp = conv2.split( " " ); + if ( tmp[ 1 ] === current ) { + + // If prev can be converted to accepted input + conv = converters[ prev + " " + tmp[ 0 ] ] || + converters[ "* " + tmp[ 0 ] ]; + if ( conv ) { + + // Condense equivalence converters + if ( conv === true ) { + conv = converters[ conv2 ]; + + // Otherwise, insert the intermediate dataType + } else if ( converters[ conv2 ] !== true ) { + current = tmp[ 0 ]; + dataTypes.unshift( tmp[ 1 ] ); + } + break; + } + } + } + } + + // Apply converter (if not an equivalence) + if ( conv !== true ) { + + // Unless errors are allowed to bubble, catch and return them + if ( conv && s.throws ) { + response = conv( response ); + } else { + try { + response = conv( response ); + } catch ( e ) { + return { + state: "parsererror", + error: conv ? e : "No conversion from " + prev + " to " + current + }; + } + } + } + } + } + } + + return { state: "success", data: response }; +} + +jQuery.extend( { + + // Counter for holding the number of active queries + active: 0, + + // Last-Modified header cache for next request + lastModified: {}, + etag: {}, + + ajaxSettings: { + url: location.href, + type: "GET", + isLocal: rlocalProtocol.test( location.protocol ), + global: true, + processData: true, + async: true, + contentType: "application/x-www-form-urlencoded; charset=UTF-8", + + /* + timeout: 0, + data: null, + dataType: null, + username: null, + password: null, + cache: null, + throws: false, + traditional: false, + headers: {}, + */ + + accepts: { + "*": allTypes, + text: "text/plain", + html: "text/html", + xml: "application/xml, text/xml", + json: "application/json, text/javascript" + }, + + contents: { + xml: /\bxml\b/, + html: /\bhtml/, + json: /\bjson\b/ + }, + + responseFields: { + xml: "responseXML", + text: "responseText", + json: "responseJSON" + }, + + // Data converters + // Keys separate source (or catchall "*") and destination types with a single space + converters: { + + // Convert anything to text + "* text": String, + + // Text to html (true = no transformation) + "text html": true, + + // Evaluate text as a json expression + "text json": JSON.parse, + + // Parse text as xml + "text xml": jQuery.parseXML + }, + + // For options that shouldn't be deep extended: + // you can add your own custom options here if + // and when you create one that shouldn't be + // deep extended (see ajaxExtend) + flatOptions: { + url: true, + context: true + } + }, + + // Creates a full fledged settings object into target + // with both ajaxSettings and settings fields. + // If target is omitted, writes into ajaxSettings. + ajaxSetup: function( target, settings ) { + return settings ? + + // Building a settings object + ajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) : + + // Extending ajaxSettings + ajaxExtend( jQuery.ajaxSettings, target ); + }, + + ajaxPrefilter: addToPrefiltersOrTransports( prefilters ), + ajaxTransport: addToPrefiltersOrTransports( transports ), + + // Main method + ajax: function( url, options ) { + + // If url is an object, simulate pre-1.5 signature + if ( typeof url === "object" ) { + options = url; + url = undefined; + } + + // Force options to be an object + options = options || {}; + + var transport, + + // URL without anti-cache param + cacheURL, + + // Response headers + responseHeadersString, + responseHeaders, + + // timeout handle + timeoutTimer, + + // Url cleanup var + urlAnchor, + + // Request state (becomes false upon send and true upon completion) + completed, + + // To know if global events are to be dispatched + fireGlobals, + + // Loop variable + i, + + // uncached part of the url + uncached, + + // Create the final options object + s = jQuery.ajaxSetup( {}, options ), + + // Callbacks context + callbackContext = s.context || s, + + // Context for global events is callbackContext if it is a DOM node or jQuery collection + globalEventContext = s.context && + ( callbackContext.nodeType || callbackContext.jquery ) ? + jQuery( callbackContext ) : + jQuery.event, + + // Deferreds + deferred = jQuery.Deferred(), + completeDeferred = jQuery.Callbacks( "once memory" ), + + // Status-dependent callbacks + statusCode = s.statusCode || {}, + + // Headers (they are sent all at once) + requestHeaders = {}, + requestHeadersNames = {}, + + // Default abort message + strAbort = "canceled", + + // Fake xhr + jqXHR = { + readyState: 0, + + // Builds headers hashtable if needed + getResponseHeader: function( key ) { + var match; + if ( completed ) { + if ( !responseHeaders ) { + responseHeaders = {}; + while ( ( match = rheaders.exec( responseHeadersString ) ) ) { + responseHeaders[ match[ 1 ].toLowerCase() ] = match[ 2 ]; + } + } + match = responseHeaders[ key.toLowerCase() ]; + } + return match == null ? null : match; + }, + + // Raw string + getAllResponseHeaders: function() { + return completed ? responseHeadersString : null; + }, + + // Caches the header + setRequestHeader: function( name, value ) { + if ( completed == null ) { + name = requestHeadersNames[ name.toLowerCase() ] = + requestHeadersNames[ name.toLowerCase() ] || name; + requestHeaders[ name ] = value; + } + return this; + }, + + // Overrides response content-type header + overrideMimeType: function( type ) { + if ( completed == null ) { + s.mimeType = type; + } + return this; + }, + + // Status-dependent callbacks + statusCode: function( map ) { + var code; + if ( map ) { + if ( completed ) { + + // Execute the appropriate callbacks + jqXHR.always( map[ jqXHR.status ] ); + } else { + + // Lazy-add the new callbacks in a way that preserves old ones + for ( code in map ) { + statusCode[ code ] = [ statusCode[ code ], map[ code ] ]; + } + } + } + return this; + }, + + // Cancel the request + abort: function( statusText ) { + var finalText = statusText || strAbort; + if ( transport ) { + transport.abort( finalText ); + } + done( 0, finalText ); + return this; + } + }; + + // Attach deferreds + deferred.promise( jqXHR ); + + // Add protocol if not provided (prefilters might expect it) + // Handle falsy url in the settings object (#10093: consistency with old signature) + // We also use the url parameter if available + s.url = ( ( url || s.url || location.href ) + "" ) + .replace( rprotocol, location.protocol + "//" ); + + // Alias method option to type as per ticket #12004 + s.type = options.method || options.type || s.method || s.type; + + // Extract dataTypes list + s.dataTypes = ( s.dataType || "*" ).toLowerCase().match( rnothtmlwhite ) || [ "" ]; + + // A cross-domain request is in order when the origin doesn't match the current origin. + if ( s.crossDomain == null ) { + urlAnchor = document.createElement( "a" ); + + // Support: IE <=8 - 11, Edge 12 - 15 + // IE throws exception on accessing the href property if url is malformed, + // e.g. http://example.com:80x/ + try { + urlAnchor.href = s.url; + + // Support: IE <=8 - 11 only + // Anchor's host property isn't correctly set when s.url is relative + urlAnchor.href = urlAnchor.href; + s.crossDomain = originAnchor.protocol + "//" + originAnchor.host !== + urlAnchor.protocol + "//" + urlAnchor.host; + } catch ( e ) { + + // If there is an error parsing the URL, assume it is crossDomain, + // it can be rejected by the transport if it is invalid + s.crossDomain = true; + } + } + + // Convert data if not already a string + if ( s.data && s.processData && typeof s.data !== "string" ) { + s.data = jQuery.param( s.data, s.traditional ); + } + + // Apply prefilters + inspectPrefiltersOrTransports( prefilters, s, options, jqXHR ); + + // If request was aborted inside a prefilter, stop there + if ( completed ) { + return jqXHR; + } + + // We can fire global events as of now if asked to + // Don't fire events if jQuery.event is undefined in an AMD-usage scenario (#15118) + fireGlobals = jQuery.event && s.global; + + // Watch for a new set of requests + if ( fireGlobals && jQuery.active++ === 0 ) { + jQuery.event.trigger( "ajaxStart" ); + } + + // Uppercase the type + s.type = s.type.toUpperCase(); + + // Determine if request has content + s.hasContent = !rnoContent.test( s.type ); + + // Save the URL in case we're toying with the If-Modified-Since + // and/or If-None-Match header later on + // Remove hash to simplify url manipulation + cacheURL = s.url.replace( rhash, "" ); + + // More options handling for requests with no content + if ( !s.hasContent ) { + + // Remember the hash so we can put it back + uncached = s.url.slice( cacheURL.length ); + + // If data is available and should be processed, append data to url + if ( s.data && ( s.processData || typeof s.data === "string" ) ) { + cacheURL += ( rquery.test( cacheURL ) ? "&" : "?" ) + s.data; + + // #9682: remove data so that it's not used in an eventual retry + delete s.data; + } + + // Add or update anti-cache param if needed + if ( s.cache === false ) { + cacheURL = cacheURL.replace( rantiCache, "$1" ); + uncached = ( rquery.test( cacheURL ) ? "&" : "?" ) + "_=" + ( nonce++ ) + uncached; + } + + // Put hash and anti-cache on the URL that will be requested (gh-1732) + s.url = cacheURL + uncached; + + // Change '%20' to '+' if this is encoded form body content (gh-2658) + } else if ( s.data && s.processData && + ( s.contentType || "" ).indexOf( "application/x-www-form-urlencoded" ) === 0 ) { + s.data = s.data.replace( r20, "+" ); + } + + // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode. + if ( s.ifModified ) { + if ( jQuery.lastModified[ cacheURL ] ) { + jqXHR.setRequestHeader( "If-Modified-Since", jQuery.lastModified[ cacheURL ] ); + } + if ( jQuery.etag[ cacheURL ] ) { + jqXHR.setRequestHeader( "If-None-Match", jQuery.etag[ cacheURL ] ); + } + } + + // Set the correct header, if data is being sent + if ( s.data && s.hasContent && s.contentType !== false || options.contentType ) { + jqXHR.setRequestHeader( "Content-Type", s.contentType ); + } + + // Set the Accepts header for the server, depending on the dataType + jqXHR.setRequestHeader( + "Accept", + s.dataTypes[ 0 ] && s.accepts[ s.dataTypes[ 0 ] ] ? + s.accepts[ s.dataTypes[ 0 ] ] + + ( s.dataTypes[ 0 ] !== "*" ? ", " + allTypes + "; q=0.01" : "" ) : + s.accepts[ "*" ] + ); + + // Check for headers option + for ( i in s.headers ) { + jqXHR.setRequestHeader( i, s.headers[ i ] ); + } + + // Allow custom headers/mimetypes and early abort + if ( s.beforeSend && + ( s.beforeSend.call( callbackContext, jqXHR, s ) === false || completed ) ) { + + // Abort if not done already and return + return jqXHR.abort(); + } + + // Aborting is no longer a cancellation + strAbort = "abort"; + + // Install callbacks on deferreds + completeDeferred.add( s.complete ); + jqXHR.done( s.success ); + jqXHR.fail( s.error ); + + // Get transport + transport = inspectPrefiltersOrTransports( transports, s, options, jqXHR ); + + // If no transport, we auto-abort + if ( !transport ) { + done( -1, "No Transport" ); + } else { + jqXHR.readyState = 1; + + // Send global event + if ( fireGlobals ) { + globalEventContext.trigger( "ajaxSend", [ jqXHR, s ] ); + } + + // If request was aborted inside ajaxSend, stop there + if ( completed ) { + return jqXHR; + } + + // Timeout + if ( s.async && s.timeout > 0 ) { + timeoutTimer = window.setTimeout( function() { + jqXHR.abort( "timeout" ); + }, s.timeout ); + } + + try { + completed = false; + transport.send( requestHeaders, done ); + } catch ( e ) { + + // Rethrow post-completion exceptions + if ( completed ) { + throw e; + } + + // Propagate others as results + done( -1, e ); + } + } + + // Callback for when everything is done + function done( status, nativeStatusText, responses, headers ) { + var isSuccess, success, error, response, modified, + statusText = nativeStatusText; + + // Ignore repeat invocations + if ( completed ) { + return; + } + + completed = true; + + // Clear timeout if it exists + if ( timeoutTimer ) { + window.clearTimeout( timeoutTimer ); + } + + // Dereference transport for early garbage collection + // (no matter how long the jqXHR object will be used) + transport = undefined; + + // Cache response headers + responseHeadersString = headers || ""; + + // Set readyState + jqXHR.readyState = status > 0 ? 4 : 0; + + // Determine if successful + isSuccess = status >= 200 && status < 300 || status === 304; + + // Get response data + if ( responses ) { + response = ajaxHandleResponses( s, jqXHR, responses ); + } + + // Convert no matter what (that way responseXXX fields are always set) + response = ajaxConvert( s, response, jqXHR, isSuccess ); + + // If successful, handle type chaining + if ( isSuccess ) { + + // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode. + if ( s.ifModified ) { + modified = jqXHR.getResponseHeader( "Last-Modified" ); + if ( modified ) { + jQuery.lastModified[ cacheURL ] = modified; + } + modified = jqXHR.getResponseHeader( "etag" ); + if ( modified ) { + jQuery.etag[ cacheURL ] = modified; + } + } + + // if no content + if ( status === 204 || s.type === "HEAD" ) { + statusText = "nocontent"; + + // if not modified + } else if ( status === 304 ) { + statusText = "notmodified"; + + // If we have data, let's convert it + } else { + statusText = response.state; + success = response.data; + error = response.error; + isSuccess = !error; + } + } else { + + // Extract error from statusText and normalize for non-aborts + error = statusText; + if ( status || !statusText ) { + statusText = "error"; + if ( status < 0 ) { + status = 0; + } + } + } + + // Set data for the fake xhr object + jqXHR.status = status; + jqXHR.statusText = ( nativeStatusText || statusText ) + ""; + + // Success/Error + if ( isSuccess ) { + deferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] ); + } else { + deferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] ); + } + + // Status-dependent callbacks + jqXHR.statusCode( statusCode ); + statusCode = undefined; + + if ( fireGlobals ) { + globalEventContext.trigger( isSuccess ? "ajaxSuccess" : "ajaxError", + [ jqXHR, s, isSuccess ? success : error ] ); + } + + // Complete + completeDeferred.fireWith( callbackContext, [ jqXHR, statusText ] ); + + if ( fireGlobals ) { + globalEventContext.trigger( "ajaxComplete", [ jqXHR, s ] ); + + // Handle the global AJAX counter + if ( !( --jQuery.active ) ) { + jQuery.event.trigger( "ajaxStop" ); + } + } + } + + return jqXHR; + }, + + getJSON: function( url, data, callback ) { + return jQuery.get( url, data, callback, "json" ); + }, + + getScript: function( url, callback ) { + return jQuery.get( url, undefined, callback, "script" ); + } +} ); + +jQuery.each( [ "get", "post" ], function( i, method ) { + jQuery[ method ] = function( url, data, callback, type ) { + + // Shift arguments if data argument was omitted + if ( isFunction( data ) ) { + type = type || callback; + callback = data; + data = undefined; + } + + // The url can be an options object (which then must have .url) + return jQuery.ajax( jQuery.extend( { + url: url, + type: method, + dataType: type, + data: data, + success: callback + }, jQuery.isPlainObject( url ) && url ) ); + }; +} ); + + +jQuery._evalUrl = function( url ) { + return jQuery.ajax( { + url: url, + + // Make this explicit, since user can override this through ajaxSetup (#11264) + type: "GET", + dataType: "script", + cache: true, + async: false, + global: false, + "throws": true + } ); +}; + + +jQuery.fn.extend( { + wrapAll: function( html ) { + var wrap; + + if ( this[ 0 ] ) { + if ( isFunction( html ) ) { + html = html.call( this[ 0 ] ); + } + + // The elements to wrap the target around + wrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true ); + + if ( this[ 0 ].parentNode ) { + wrap.insertBefore( this[ 0 ] ); + } + + wrap.map( function() { + var elem = this; + + while ( elem.firstElementChild ) { + elem = elem.firstElementChild; + } + + return elem; + } ).append( this ); + } + + return this; + }, + + wrapInner: function( html ) { + if ( isFunction( html ) ) { + return this.each( function( i ) { + jQuery( this ).wrapInner( html.call( this, i ) ); + } ); + } + + return this.each( function() { + var self = jQuery( this ), + contents = self.contents(); + + if ( contents.length ) { + contents.wrapAll( html ); + + } else { + self.append( html ); + } + } ); + }, + + wrap: function( html ) { + var htmlIsFunction = isFunction( html ); + + return this.each( function( i ) { + jQuery( this ).wrapAll( htmlIsFunction ? html.call( this, i ) : html ); + } ); + }, + + unwrap: function( selector ) { + this.parent( selector ).not( "body" ).each( function() { + jQuery( this ).replaceWith( this.childNodes ); + } ); + return this; + } +} ); + + +jQuery.expr.pseudos.hidden = function( elem ) { + return !jQuery.expr.pseudos.visible( elem ); +}; +jQuery.expr.pseudos.visible = function( elem ) { + return !!( elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length ); +}; + + + + +jQuery.ajaxSettings.xhr = function() { + try { + return new window.XMLHttpRequest(); + } catch ( e ) {} +}; + +var xhrSuccessStatus = { + + // File protocol always yields status code 0, assume 200 + 0: 200, + + // Support: IE <=9 only + // #1450: sometimes IE returns 1223 when it should be 204 + 1223: 204 + }, + xhrSupported = jQuery.ajaxSettings.xhr(); + +support.cors = !!xhrSupported && ( "withCredentials" in xhrSupported ); +support.ajax = xhrSupported = !!xhrSupported; + +jQuery.ajaxTransport( function( options ) { + var callback, errorCallback; + + // Cross domain only allowed if supported through XMLHttpRequest + if ( support.cors || xhrSupported && !options.crossDomain ) { + return { + send: function( headers, complete ) { + var i, + xhr = options.xhr(); + + xhr.open( + options.type, + options.url, + options.async, + options.username, + options.password + ); + + // Apply custom fields if provided + if ( options.xhrFields ) { + for ( i in options.xhrFields ) { + xhr[ i ] = options.xhrFields[ i ]; + } + } + + // Override mime type if needed + if ( options.mimeType && xhr.overrideMimeType ) { + xhr.overrideMimeType( options.mimeType ); + } + + // X-Requested-With header + // For cross-domain requests, seeing as conditions for a preflight are + // akin to a jigsaw puzzle, we simply never set it to be sure. + // (it can always be set on a per-request basis or even using ajaxSetup) + // For same-domain requests, won't change header if already provided. + if ( !options.crossDomain && !headers[ "X-Requested-With" ] ) { + headers[ "X-Requested-With" ] = "XMLHttpRequest"; + } + + // Set headers + for ( i in headers ) { + xhr.setRequestHeader( i, headers[ i ] ); + } + + // Callback + callback = function( type ) { + return function() { + if ( callback ) { + callback = errorCallback = xhr.onload = + xhr.onerror = xhr.onabort = xhr.ontimeout = + xhr.onreadystatechange = null; + + if ( type === "abort" ) { + xhr.abort(); + } else if ( type === "error" ) { + + // Support: IE <=9 only + // On a manual native abort, IE9 throws + // errors on any property access that is not readyState + if ( typeof xhr.status !== "number" ) { + complete( 0, "error" ); + } else { + complete( + + // File: protocol always yields status 0; see #8605, #14207 + xhr.status, + xhr.statusText + ); + } + } else { + complete( + xhrSuccessStatus[ xhr.status ] || xhr.status, + xhr.statusText, + + // Support: IE <=9 only + // IE9 has no XHR2 but throws on binary (trac-11426) + // For XHR2 non-text, let the caller handle it (gh-2498) + ( xhr.responseType || "text" ) !== "text" || + typeof xhr.responseText !== "string" ? + { binary: xhr.response } : + { text: xhr.responseText }, + xhr.getAllResponseHeaders() + ); + } + } + }; + }; + + // Listen to events + xhr.onload = callback(); + errorCallback = xhr.onerror = xhr.ontimeout = callback( "error" ); + + // Support: IE 9 only + // Use onreadystatechange to replace onabort + // to handle uncaught aborts + if ( xhr.onabort !== undefined ) { + xhr.onabort = errorCallback; + } else { + xhr.onreadystatechange = function() { + + // Check readyState before timeout as it changes + if ( xhr.readyState === 4 ) { + + // Allow onerror to be called first, + // but that will not handle a native abort + // Also, save errorCallback to a variable + // as xhr.onerror cannot be accessed + window.setTimeout( function() { + if ( callback ) { + errorCallback(); + } + } ); + } + }; + } + + // Create the abort callback + callback = callback( "abort" ); + + try { + + // Do send the request (this may raise an exception) + xhr.send( options.hasContent && options.data || null ); + } catch ( e ) { + + // #14683: Only rethrow if this hasn't been notified as an error yet + if ( callback ) { + throw e; + } + } + }, + + abort: function() { + if ( callback ) { + callback(); + } + } + }; + } +} ); + + + + +// Prevent auto-execution of scripts when no explicit dataType was provided (See gh-2432) +jQuery.ajaxPrefilter( function( s ) { + if ( s.crossDomain ) { + s.contents.script = false; + } +} ); + +// Install script dataType +jQuery.ajaxSetup( { + accepts: { + script: "text/javascript, application/javascript, " + + "application/ecmascript, application/x-ecmascript" + }, + contents: { + script: /\b(?:java|ecma)script\b/ + }, + converters: { + "text script": function( text ) { + jQuery.globalEval( text ); + return text; + } + } +} ); + +// Handle cache's special case and crossDomain +jQuery.ajaxPrefilter( "script", function( s ) { + if ( s.cache === undefined ) { + s.cache = false; + } + if ( s.crossDomain ) { + s.type = "GET"; + } +} ); + +// Bind script tag hack transport +jQuery.ajaxTransport( "script", function( s ) { + + // This transport only deals with cross domain requests + if ( s.crossDomain ) { + var script, callback; + return { + send: function( _, complete ) { + script = jQuery( "