882 lines
		
	
	
		
			55 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			882 lines
		
	
	
		
			55 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
import { ElDialog as M, useFormItem as F, TableV2Placeholder as N, ElMessage as T, ElNotification as P, ElMessageBox as H } from "element-plus";
 | 
						||
import { useUiRender as I, uiContext as E } from "@fast-crud/ui-interface";
 | 
						||
import { computed as _, unref as D, createVNode as g, resolveComponent as K, createTextVNode as L } from "vue";
 | 
						||
import { forEach as G, isFunction as O, union as $ } from "lodash-es";
 | 
						||
import * as z from "@element-plus/icons-vue";
 | 
						||
const {
 | 
						||
  buildBinding: b,
 | 
						||
  creator: t
 | 
						||
} = I();
 | 
						||
class W {
 | 
						||
  constructor(f) {
 | 
						||
    this.type = "element", this.modelValue = "modelValue", this.switch = t({
 | 
						||
      activeColor: "active-color",
 | 
						||
      activeText: "active-text",
 | 
						||
      activeValue: "active-value",
 | 
						||
      inactiveColor: "inactive-color",
 | 
						||
      inactiveText: "inactive-text",
 | 
						||
      inactiveValue: "inactive-value",
 | 
						||
      modelValue: "modelValue",
 | 
						||
      name: "el-switch"
 | 
						||
    }), this.formWrapper = t({
 | 
						||
      visible: "modelValue",
 | 
						||
      customClass: (e) => "class",
 | 
						||
      titleSlotName: "header",
 | 
						||
      buildOnClosedBind(e, a) {
 | 
						||
        return {
 | 
						||
          onClosed: a
 | 
						||
        };
 | 
						||
      },
 | 
						||
      buildWidthBind(e, a) {
 | 
						||
        return {
 | 
						||
          width: a
 | 
						||
        };
 | 
						||
      },
 | 
						||
      buildInitBind(e) {
 | 
						||
        return {};
 | 
						||
      },
 | 
						||
      buildInnerBind() {
 | 
						||
        return {};
 | 
						||
      },
 | 
						||
      name: "fs-form-wrapper"
 | 
						||
    }), this.messageBox = t({
 | 
						||
      name: "el-message-box",
 | 
						||
      instance: void 0,
 | 
						||
      open: async (e) => this.messageBox.instance(e),
 | 
						||
      confirm: async (e) => this.messageBox.instance(e)
 | 
						||
    }), this.message = t({
 | 
						||
      instance: void 0,
 | 
						||
      name: "el-message",
 | 
						||
      open: (e) => {
 | 
						||
        this.message.instance.open(e);
 | 
						||
      },
 | 
						||
      success: (e) => {
 | 
						||
        this.message.instance.success(e);
 | 
						||
      },
 | 
						||
      error: (e) => {
 | 
						||
        this.message.instance.error(e);
 | 
						||
      },
 | 
						||
      warn: (e) => {
 | 
						||
        this.message.instance.warning(e);
 | 
						||
      },
 | 
						||
      info: (e) => {
 | 
						||
        this.message.instance(e);
 | 
						||
      }
 | 
						||
    }), this.notification = t({
 | 
						||
      instance: void 0,
 | 
						||
      name: "el-notification",
 | 
						||
      open: (e) => {
 | 
						||
        this.notification.instance.open(e);
 | 
						||
      },
 | 
						||
      success: (e) => {
 | 
						||
        this.notification.instance.success(e);
 | 
						||
      },
 | 
						||
      error: (e) => {
 | 
						||
        this.notification.instance.error(e);
 | 
						||
      },
 | 
						||
      warn: (e) => {
 | 
						||
        this.notification.instance.warn(e);
 | 
						||
      },
 | 
						||
      info: (e) => {
 | 
						||
        this.notification.instance.success(e);
 | 
						||
      }
 | 
						||
    }), this.icon = t({
 | 
						||
      name: "",
 | 
						||
      isComponent: !1
 | 
						||
    }), this.icons = {
 | 
						||
      add: "plus",
 | 
						||
      columnsFilter: "set-up",
 | 
						||
      compact: "rank",
 | 
						||
      edit: "edit",
 | 
						||
      remove: "delete",
 | 
						||
      search: "search",
 | 
						||
      refresh: "refresh",
 | 
						||
      export: "upload",
 | 
						||
      check: "check",
 | 
						||
      sort: "sort",
 | 
						||
      left: "arrow-left",
 | 
						||
      right: "arrow-right",
 | 
						||
      close: "close",
 | 
						||
      arrowLeft: "left",
 | 
						||
      arrowRight: "right",
 | 
						||
      more: "more",
 | 
						||
      plus: "plus",
 | 
						||
      zoomIn: "zoom-in",
 | 
						||
      zoomOut: "zoom-out",
 | 
						||
      refreshLeft: "refresh-left",
 | 
						||
      refreshRight: "refresh-right",
 | 
						||
      upload: "upload",
 | 
						||
      fullScreen: "full-screen",
 | 
						||
      unFullScreen: "full-screen",
 | 
						||
      question: "question-filled",
 | 
						||
      caretUp: "CaretTop",
 | 
						||
      caretDown: "CaretBottom",
 | 
						||
      eye: "View",
 | 
						||
      info: "warning"
 | 
						||
    }, this.dialog = t({
 | 
						||
      name: "el-dialog",
 | 
						||
      visible: "modelValue",
 | 
						||
      customClass: "class",
 | 
						||
      titleSlotName: "header",
 | 
						||
      footerSlotName: "footer",
 | 
						||
      buildOnClosedBind(e) {
 | 
						||
        return {
 | 
						||
          onClosed: e
 | 
						||
        };
 | 
						||
      },
 | 
						||
      footer() {
 | 
						||
        return {};
 | 
						||
      },
 | 
						||
      open(e) {
 | 
						||
        M.open(e);
 | 
						||
      },
 | 
						||
      builder(e) {
 | 
						||
        return b(this, e, {
 | 
						||
          props: {
 | 
						||
            title: e.title,
 | 
						||
            width: e.width
 | 
						||
          },
 | 
						||
          slots: {
 | 
						||
            footer: e.footer
 | 
						||
          }
 | 
						||
        });
 | 
						||
      }
 | 
						||
    }), this.buttonGroup = t({
 | 
						||
      name: "el-button-group"
 | 
						||
    }), this.col = t({
 | 
						||
      name: "el-col"
 | 
						||
    }), this.row = t({
 | 
						||
      name: "el-row"
 | 
						||
    }), this.card = t({
 | 
						||
      name: "el-card"
 | 
						||
    }), this.checkboxGroup = t({
 | 
						||
      name: "el-checkbox-group",
 | 
						||
      modelValue: "modelValue"
 | 
						||
    }), this.checkbox = t({
 | 
						||
      name: "el-checkbox",
 | 
						||
      resolveEvent(e) {
 | 
						||
        return e;
 | 
						||
      },
 | 
						||
      modelValue: "modelValue",
 | 
						||
      value: "value",
 | 
						||
      onChange(e) {
 | 
						||
        return {
 | 
						||
          "onUpdate:modelValue": e
 | 
						||
        };
 | 
						||
      }
 | 
						||
    }), this.drawer = t({
 | 
						||
      name: "el-drawer",
 | 
						||
      visible: "modelValue",
 | 
						||
      customClass: "class",
 | 
						||
      width: "size"
 | 
						||
    }), this.collapseTransition = t({
 | 
						||
      name: "el-collapse-transition"
 | 
						||
    }), this.option = t({
 | 
						||
      name: "el-option",
 | 
						||
      value: "value",
 | 
						||
      label: "label"
 | 
						||
    }), this.select = t({
 | 
						||
      name: "el-select",
 | 
						||
      modelValue: "modelValue",
 | 
						||
      clearable: "clearable",
 | 
						||
      filterable: "filterable",
 | 
						||
      buildMultiBinding(e) {
 | 
						||
        return {
 | 
						||
          multiple: e
 | 
						||
        };
 | 
						||
      }
 | 
						||
    }), this.treeSelect = t({
 | 
						||
      name: "el-tree-select",
 | 
						||
      modelValue: "modelValue",
 | 
						||
      clearable: "select.clearable",
 | 
						||
      options: "data",
 | 
						||
      value: "tree.value",
 | 
						||
      label: "tree.label",
 | 
						||
      children: "tree.children",
 | 
						||
      buildOptionKeysNameBinding(e) {
 | 
						||
        return {
 | 
						||
          props: {
 | 
						||
            label: e.label,
 | 
						||
            value: e.value,
 | 
						||
            children: e.children
 | 
						||
          }
 | 
						||
        };
 | 
						||
      }
 | 
						||
    }), this.radio = t({
 | 
						||
      name: "el-radio",
 | 
						||
      value: "value",
 | 
						||
      builder(e) {
 | 
						||
        return b(this, e, {
 | 
						||
          props: {
 | 
						||
            [this.value]: e.value
 | 
						||
          }
 | 
						||
        });
 | 
						||
      }
 | 
						||
    }), this.radioButton = t({
 | 
						||
      name: "el-radio-button",
 | 
						||
      value: "value",
 | 
						||
      builder(e) {
 | 
						||
        return b(this, e, {
 | 
						||
          props: {
 | 
						||
            [this.value]: e.value
 | 
						||
          }
 | 
						||
        });
 | 
						||
      }
 | 
						||
    }), this.radioGroup = t({
 | 
						||
      name: "el-radio-group",
 | 
						||
      modelValue: "modelValue"
 | 
						||
    }), this.cascader = t({
 | 
						||
      name: "el-cascader",
 | 
						||
      modelValue: "modelValue",
 | 
						||
      clearable: "clearable",
 | 
						||
      fieldNames(e) {
 | 
						||
        return {
 | 
						||
          props: e
 | 
						||
        };
 | 
						||
      }
 | 
						||
    }), this.form = t({
 | 
						||
      name: "el-form",
 | 
						||
      inlineLayout: {
 | 
						||
        layout: "inline",
 | 
						||
        inline: !0
 | 
						||
      },
 | 
						||
      validateWrap: async (e) => e.validate(),
 | 
						||
      transformValidateErrors: (e) => {
 | 
						||
        const a = {};
 | 
						||
        return G(e, (n, l) => {
 | 
						||
          a[l] = !0;
 | 
						||
        }), a;
 | 
						||
      }
 | 
						||
    }), this.formItem = t({
 | 
						||
      name: "el-form-item",
 | 
						||
      prop: "prop",
 | 
						||
      label: "label",
 | 
						||
      rules: "rules",
 | 
						||
      skipValidationWrapper: "div",
 | 
						||
      injectFormItemContext() {
 | 
						||
        const {
 | 
						||
          formItem: e
 | 
						||
        } = F();
 | 
						||
        return {
 | 
						||
          async onChange() {
 | 
						||
            await (e == null ? void 0 : e.validate("change"));
 | 
						||
          },
 | 
						||
          async onBlur() {
 | 
						||
            await (e == null ? void 0 : e.validate("blur"));
 | 
						||
          }
 | 
						||
        };
 | 
						||
      },
 | 
						||
      builder(e) {
 | 
						||
        return b(this, e, {});
 | 
						||
      }
 | 
						||
    }), this.button = t({
 | 
						||
      name: "el-button",
 | 
						||
      textType: {
 | 
						||
        text: !0
 | 
						||
      },
 | 
						||
      linkType: {
 | 
						||
        link: !0,
 | 
						||
        type: "primary"
 | 
						||
      },
 | 
						||
      circle: {
 | 
						||
        circle: !0
 | 
						||
      },
 | 
						||
      colors: (e) => ({
 | 
						||
        type: e
 | 
						||
      })
 | 
						||
    }), this.pagination = t({
 | 
						||
      name: "el-pagination",
 | 
						||
      currentPage: "currentPage",
 | 
						||
      total: "total",
 | 
						||
      pageCount: null,
 | 
						||
      onChange({
 | 
						||
        setCurrentPage: e,
 | 
						||
        setPageSize: a,
 | 
						||
        doAfterChange: n
 | 
						||
      }) {
 | 
						||
        return {
 | 
						||
          // element 页码改动回调
 | 
						||
          onCurrentChange(l) {
 | 
						||
            e(l), n();
 | 
						||
          },
 | 
						||
          onSizeChange(l) {
 | 
						||
            a(l), n();
 | 
						||
          }
 | 
						||
        };
 | 
						||
      }
 | 
						||
    }), this.tableColumn = t({
 | 
						||
      name: "el-table-column",
 | 
						||
      label: "label",
 | 
						||
      prop: "prop",
 | 
						||
      row: "row",
 | 
						||
      index: "$index"
 | 
						||
    }), this.tableColumnGroup = t({
 | 
						||
      name: "el-table-column",
 | 
						||
      label: "label",
 | 
						||
      prop: "prop",
 | 
						||
      row: "row",
 | 
						||
      index: "$index"
 | 
						||
    }), this.table = t({
 | 
						||
      name: "el-table",
 | 
						||
      data: "data",
 | 
						||
      renderMode: "slot",
 | 
						||
      defaultRowKey: "id",
 | 
						||
      fixedHeaderNeedComputeBodyHeight: !1,
 | 
						||
      buildMaxHeight: (e) => ({
 | 
						||
        maxHeight: e
 | 
						||
      }),
 | 
						||
      hasMaxHeight: (e) => (e == null ? void 0 : e.maxHeight) != null,
 | 
						||
      headerDomSelector: "",
 | 
						||
      vLoading: "loading",
 | 
						||
      // 没太大用
 | 
						||
      setSelectedRows({
 | 
						||
        multiple: e,
 | 
						||
        selectedRowKeys: a,
 | 
						||
        tableRef: n,
 | 
						||
        getRowKey: l
 | 
						||
      }) {
 | 
						||
        const o = l(), s = [];
 | 
						||
        for (const i of a.value)
 | 
						||
          for (const r of n.data)
 | 
						||
            r[o] === i && s.push(r);
 | 
						||
        if (e)
 | 
						||
          for (const i of s)
 | 
						||
            n.toggleRowSelection(i, !0);
 | 
						||
        else
 | 
						||
          a.value.length > 0 && n.setCurrentRow(s[0]);
 | 
						||
      },
 | 
						||
      buildSelectionCrudOptions(e) {
 | 
						||
        const {
 | 
						||
          compute: a
 | 
						||
        } = e.useCompute();
 | 
						||
        function n(l) {
 | 
						||
          const o = e.getRowKey(), s = e.getPageData();
 | 
						||
          let i = o;
 | 
						||
          O(o) || (i = (c) => c[o]);
 | 
						||
          const r = s.map(i), u = e.selectedRowKeys instanceof Function ? e.selectedRowKeys() : e.selectedRowKeys;
 | 
						||
          u.value || (u.value = []);
 | 
						||
          const d = u.value.filter((c) => !r.includes(c));
 | 
						||
          return $(d, l);
 | 
						||
        }
 | 
						||
        if (e.multiple)
 | 
						||
          return {
 | 
						||
            table: {
 | 
						||
              onSelectionChange: (o = []) => {
 | 
						||
                const s = e.getRowKey();
 | 
						||
                let i = o.map((r) => r[s]);
 | 
						||
                e.crossPage && (i = n(i)), e.onSelectedKeysChanged(i);
 | 
						||
              }
 | 
						||
            },
 | 
						||
            columns: {
 | 
						||
              $checked: {
 | 
						||
                form: {
 | 
						||
                  show: !1
 | 
						||
                },
 | 
						||
                column: {
 | 
						||
                  type: "selection",
 | 
						||
                  align: "center",
 | 
						||
                  width: "55px",
 | 
						||
                  order: -9999,
 | 
						||
                  reserveSelection: e.crossPage,
 | 
						||
                  columnSetDisabled: !0
 | 
						||
                  //禁止在列设置中选择
 | 
						||
                }
 | 
						||
              }
 | 
						||
            }
 | 
						||
          };
 | 
						||
        {
 | 
						||
          const l = (i) => {
 | 
						||
            if (i == null) {
 | 
						||
              e.onSelectedKeysChanged([]);
 | 
						||
              return;
 | 
						||
            }
 | 
						||
            const r = e.getRowKey(), u = [i[r]];
 | 
						||
            e.onSelectedKeysChanged(u);
 | 
						||
          }, o = e.selectedRowKeys instanceof Function ? e.selectedRowKeys() : e.selectedRowKeys, s = _(() => o.value.length > 0 ? o.value[0] : null);
 | 
						||
          return {
 | 
						||
            table: {
 | 
						||
              highlightCurrentRow: !0,
 | 
						||
              onCurrentChange: l
 | 
						||
            },
 | 
						||
            columns: {
 | 
						||
              $selected: {
 | 
						||
                form: {
 | 
						||
                  show: !1
 | 
						||
                },
 | 
						||
                column: {
 | 
						||
                  align: "center",
 | 
						||
                  width: "55px",
 | 
						||
                  order: -9999,
 | 
						||
                  component: {
 | 
						||
                    name: "el-radio",
 | 
						||
                    label: a((i) => {
 | 
						||
                      if (i.form)
 | 
						||
                        return i.form[e.getRowKey()];
 | 
						||
                    }),
 | 
						||
                    props: {
 | 
						||
                      modelValue: s
 | 
						||
                    },
 | 
						||
                    slots: {
 | 
						||
                      default() {
 | 
						||
                        return "";
 | 
						||
                      }
 | 
						||
                    }
 | 
						||
                  },
 | 
						||
                  conditionalRender: {
 | 
						||
                    match() {
 | 
						||
                      return !1;
 | 
						||
                    }
 | 
						||
                  }
 | 
						||
                }
 | 
						||
              }
 | 
						||
            }
 | 
						||
          };
 | 
						||
        }
 | 
						||
      },
 | 
						||
      rebuildRenderScope: (e) => e,
 | 
						||
      scrollTo(e) {
 | 
						||
        var a, n;
 | 
						||
        (n = (a = e.tableRef) == null ? void 0 : a.value) == null || n.setScrollTop(e.top);
 | 
						||
      },
 | 
						||
      onChange({
 | 
						||
        onSortChange: e,
 | 
						||
        onFilterChange: a,
 | 
						||
        bubbleUp: n
 | 
						||
      }) {
 | 
						||
        return {
 | 
						||
          onSortChange: (l) => {
 | 
						||
            const {
 | 
						||
              column: o,
 | 
						||
              prop: s,
 | 
						||
              order: i
 | 
						||
            } = l;
 | 
						||
            e && e({
 | 
						||
              isServerSort: s && o.sortable === "custom",
 | 
						||
              prop: s,
 | 
						||
              order: i,
 | 
						||
              asc: i === "ascending"
 | 
						||
            }), n((r) => {
 | 
						||
              r.onSortChange && r.onSortChange(l);
 | 
						||
            });
 | 
						||
          },
 | 
						||
          onFilterChange: (l) => {
 | 
						||
            a(l), n((o) => {
 | 
						||
              o.onFilterChange && o.onFilterChange(l);
 | 
						||
            });
 | 
						||
          }
 | 
						||
        };
 | 
						||
      }
 | 
						||
    }), this.tableColumnV2 = t({
 | 
						||
      name: "el-table-column",
 | 
						||
      label: "label",
 | 
						||
      prop: "prop",
 | 
						||
      row: "row",
 | 
						||
      index: "$index"
 | 
						||
    }), this.tableColumnGroupV2 = t({
 | 
						||
      name: "el-table-column",
 | 
						||
      label: "label",
 | 
						||
      prop: "prop",
 | 
						||
      row: "row",
 | 
						||
      index: "$index"
 | 
						||
    }), this.tableV2 = t({
 | 
						||
      name: "el-table-v2",
 | 
						||
      data: "data",
 | 
						||
      renderMode: "jsx",
 | 
						||
      defaultRowKey: "id",
 | 
						||
      fixedHeaderNeedComputeBodyHeight: !1,
 | 
						||
      renderMethod: "cellRenderer",
 | 
						||
      columnsIsFlat: !0,
 | 
						||
      //构建自定义表头插槽方法,element-table-v2需要自己写多级表头
 | 
						||
      buildMultiHeadersBind(e) {
 | 
						||
        const a = e.flatColumns;
 | 
						||
        e.treeColumns;
 | 
						||
        function n(u, d = 1) {
 | 
						||
          let c = 0;
 | 
						||
          for (const v of u)
 | 
						||
            if (v._parent == null)
 | 
						||
              c = Math.max(c, d);
 | 
						||
            else {
 | 
						||
              const y = n([v._parent], d + 1);
 | 
						||
              c = Math.max(c, y);
 | 
						||
            }
 | 
						||
          return c;
 | 
						||
        }
 | 
						||
        let l = 50;
 | 
						||
        const o = n(a);
 | 
						||
        o > 1 && (l = l - (o - 1) * 10, l = Math.max(30, l));
 | 
						||
        const s = o * l;
 | 
						||
        function i(u) {
 | 
						||
          const d = [];
 | 
						||
          for (const c of u)
 | 
						||
            c.children && c.children.length > 0 ? d.push(...i(c.children)) : d.push(c);
 | 
						||
          return d;
 | 
						||
        }
 | 
						||
        function r(u) {
 | 
						||
          const d = i(u);
 | 
						||
          let c = 0;
 | 
						||
          for (const v of d)
 | 
						||
            c += v.width;
 | 
						||
          return c;
 | 
						||
        }
 | 
						||
        return {
 | 
						||
          bind: {
 | 
						||
            headerHeight: s
 | 
						||
          },
 | 
						||
          slots: {
 | 
						||
            header: ({
 | 
						||
              cells: u,
 | 
						||
              columns: d,
 | 
						||
              headerIndex: c
 | 
						||
            }) => {
 | 
						||
              const v = {};
 | 
						||
              d.forEach((m, h) => {
 | 
						||
                v[m.key] = {
 | 
						||
                  column: m,
 | 
						||
                  index: h
 | 
						||
                };
 | 
						||
              });
 | 
						||
              const y = [], S = [];
 | 
						||
              function V(m, h) {
 | 
						||
                const C = [];
 | 
						||
                for (const p of m)
 | 
						||
                  if (!p.children || p.children.length == 0)
 | 
						||
                    C.push(g("div", {
 | 
						||
                      class: "custom-header-cell fs-multi-head-text el-table-v2__header-cell-text",
 | 
						||
                      style: {
 | 
						||
                        width: p.width + "px",
 | 
						||
                        height: l * h + "px",
 | 
						||
                        justifyContent: p.align
 | 
						||
                      }
 | 
						||
                    }, [p.title])), S.push(p.key);
 | 
						||
                  else {
 | 
						||
                    const x = r(p.children);
 | 
						||
                    C.push(g("div", {
 | 
						||
                      class: "fs-multi-head-group "
 | 
						||
                    }, [g("div", {
 | 
						||
                      class: "custom-header-cell fs-multi-head-text el-table-v2__header-cell-text",
 | 
						||
                      style: {
 | 
						||
                        width: x + "px",
 | 
						||
                        height: l + "px",
 | 
						||
                        justifyContent: p.align
 | 
						||
                      }
 | 
						||
                    }, [p.title]), g("div", {
 | 
						||
                      class: "fs-multi-head-sub "
 | 
						||
                    }, [V(p.children, h - 1)])]));
 | 
						||
                  }
 | 
						||
                return C;
 | 
						||
              }
 | 
						||
              function R(m, h = 1) {
 | 
						||
                return m._parent ? (h = h + 1, R(m._parent, h)) : {
 | 
						||
                  parent: m,
 | 
						||
                  deep: h
 | 
						||
                };
 | 
						||
              }
 | 
						||
              return d.forEach((m, h) => {
 | 
						||
                if ((m == null ? void 0 : m.placeholderSign) === N) {
 | 
						||
                  y.push(u[h]);
 | 
						||
                  return;
 | 
						||
                }
 | 
						||
                if (!S.includes(m.key))
 | 
						||
                  if (m._parent) {
 | 
						||
                    const {
 | 
						||
                      parent: C,
 | 
						||
                      deep: p
 | 
						||
                    } = R(m), x = V([C], o);
 | 
						||
                    y.push(...x);
 | 
						||
                  } else
 | 
						||
                    y.push(u[h]);
 | 
						||
              }), y;
 | 
						||
            }
 | 
						||
          }
 | 
						||
        };
 | 
						||
      },
 | 
						||
      rebuildRenderScope: (e) => ({
 | 
						||
        ...e,
 | 
						||
        index: e.rowIndex,
 | 
						||
        row: e.rowData
 | 
						||
      }),
 | 
						||
      buildMaxHeight: (e) => ({
 | 
						||
        maxHeight: e
 | 
						||
      }),
 | 
						||
      hasMaxHeight: (e) => !1,
 | 
						||
      headerDomSelector: "",
 | 
						||
      vLoading: "loading",
 | 
						||
      // 没太大用
 | 
						||
      setSelectedRows({
 | 
						||
        multiple: e,
 | 
						||
        selectedRowKeys: a,
 | 
						||
        tableRef: n,
 | 
						||
        getRowKey: l
 | 
						||
      }) {
 | 
						||
        const o = l(), s = [];
 | 
						||
        for (const i of a.value)
 | 
						||
          for (const r of n.data)
 | 
						||
            r[o] === i && s.push(r);
 | 
						||
        if (e)
 | 
						||
          for (const i of s)
 | 
						||
            n.toggleRowSelection(i, !0);
 | 
						||
        else
 | 
						||
          a.value.length > 0 && n.setCurrentRow(s[0]);
 | 
						||
      },
 | 
						||
      buildSelectionCrudOptions(e) {
 | 
						||
        const a = (n = []) => {
 | 
						||
          e.onSelectedKeysChanged(n);
 | 
						||
        };
 | 
						||
        return D(e), {
 | 
						||
          table: {
 | 
						||
            // checkedRowKeys: req.selectedRowKeys,
 | 
						||
            // "onUpdate:checkedRowKeys": onSelectionChange
 | 
						||
          },
 | 
						||
          columns: {
 | 
						||
            $checked: {
 | 
						||
              form: {
 | 
						||
                show: !1
 | 
						||
              },
 | 
						||
              column: {
 | 
						||
                multiple: !!e.multiple,
 | 
						||
                align: "center",
 | 
						||
                width: 80,
 | 
						||
                order: -9999,
 | 
						||
                fixed: e.selectionFixed,
 | 
						||
                columnSetDisabled: !0,
 | 
						||
                cellRenderer: ({
 | 
						||
                  rowData: n
 | 
						||
                }) => {
 | 
						||
                  const l = e.selectedRowKeys instanceof Function ? e.selectedRowKeys() : e.selectedRowKeys;
 | 
						||
                  l.value || (l.value = []);
 | 
						||
                  const o = (i) => {
 | 
						||
                    i ? l.value.push(n[e.getRowKey()]) : l.value = l.value.filter((r) => r !== n[e.getRowKey()]), a(l.value);
 | 
						||
                  }, s = l.value.includes(n[e.getRowKey()]);
 | 
						||
                  return g(K("ElCheckbox"), {
 | 
						||
                    onChange: o,
 | 
						||
                    modelValue: s
 | 
						||
                  }, null);
 | 
						||
                },
 | 
						||
                headerCellRenderer: (n) => {
 | 
						||
                  const l = e.getPageData() || [], o = e.selectedRowKeys instanceof Function ? e.selectedRowKeys() : e.selectedRowKeys, s = (u) => {
 | 
						||
                    u ? o.value = l.map((d) => d[e.getRowKey()]) : o.value = [];
 | 
						||
                  }, i = l.length > 0 && l.every((u) => o.value.includes(u[e.getRowKey()])), r = l.some((u) => o.value.includes(u[e.getRowKey()]));
 | 
						||
                  return g(K("el-checkbox"), {
 | 
						||
                    onChange: s,
 | 
						||
                    modelValue: i,
 | 
						||
                    indeterminate: r && !i
 | 
						||
                  }, null);
 | 
						||
                }
 | 
						||
              }
 | 
						||
            }
 | 
						||
          }
 | 
						||
        };
 | 
						||
      },
 | 
						||
      scrollTo(e) {
 | 
						||
        var a, n;
 | 
						||
        (n = (a = e.tableRef) == null ? void 0 : a.value) == null || n.scrollToTop(e.top);
 | 
						||
      },
 | 
						||
      onChange({
 | 
						||
        onSortChange: e,
 | 
						||
        onFilterChange: a,
 | 
						||
        bubbleUp: n
 | 
						||
      }) {
 | 
						||
        return {
 | 
						||
          onSortChange: (l) => {
 | 
						||
            const {
 | 
						||
              column: o,
 | 
						||
              prop: s,
 | 
						||
              order: i
 | 
						||
            } = l;
 | 
						||
            e && e({
 | 
						||
              isServerSort: s && o.sortable === "custom",
 | 
						||
              prop: s,
 | 
						||
              order: i,
 | 
						||
              asc: i === "ascending"
 | 
						||
            }), n((r) => {
 | 
						||
              r.onSortChange && r.onSortChange(l);
 | 
						||
            });
 | 
						||
          },
 | 
						||
          onFilterChange: (l) => {
 | 
						||
            a(l), n((o) => {
 | 
						||
              o.onFilterChange && o.onFilterChange(l);
 | 
						||
            });
 | 
						||
          }
 | 
						||
        };
 | 
						||
      }
 | 
						||
    }), this.textArea = t({
 | 
						||
      name: "el-input",
 | 
						||
      type: "textarea",
 | 
						||
      modelValue: "modelValue",
 | 
						||
      clearable: "clearable"
 | 
						||
    }), this.tag = t({
 | 
						||
      name: "el-tag",
 | 
						||
      type: "type",
 | 
						||
      colors: ["info", "success", "warning", "danger"]
 | 
						||
    }), this.inputGroup = t({
 | 
						||
      name: "el-input-group"
 | 
						||
    }), this.input = t({
 | 
						||
      name: "el-input",
 | 
						||
      clearable: "clearable",
 | 
						||
      modelValue: "modelValue"
 | 
						||
    }), this.inputPassword = t({
 | 
						||
      name: "el-input",
 | 
						||
      clearable: "clearable",
 | 
						||
      modelValue: "modelValue",
 | 
						||
      passwordType: {
 | 
						||
        showPassword: !0
 | 
						||
      }
 | 
						||
    }), this.number = t({
 | 
						||
      name: "el-input-number",
 | 
						||
      modelValue: "modelValue",
 | 
						||
      builder(e) {
 | 
						||
        return b(this, e, {});
 | 
						||
      }
 | 
						||
    }), this.datePicker = t({
 | 
						||
      name: "el-date-picker",
 | 
						||
      modelValue: "modelValue",
 | 
						||
      buildDateType(e) {
 | 
						||
        return {
 | 
						||
          name: "el-date-picker",
 | 
						||
          type: e
 | 
						||
        };
 | 
						||
      }
 | 
						||
    }), this.timePicker = t({
 | 
						||
      name: "el-time-picker",
 | 
						||
      modelValue: "modelValue"
 | 
						||
    }), this.dropdown = t({
 | 
						||
      name: "el-dropdown",
 | 
						||
      command(e) {
 | 
						||
        return {
 | 
						||
          onCommand(a) {
 | 
						||
            e(a);
 | 
						||
          }
 | 
						||
        };
 | 
						||
      },
 | 
						||
      slotName: "dropdown",
 | 
						||
      renderMode: "slot"
 | 
						||
    }), this.dropdownMenu = t({
 | 
						||
      name: "el-dropdown-menu",
 | 
						||
      command: () => ({})
 | 
						||
    }), this.dropdownItem = t({
 | 
						||
      name: "el-dropdown-item",
 | 
						||
      command: "command"
 | 
						||
    }), this.imageGroup = t({
 | 
						||
      name: "fs-box"
 | 
						||
    }), this.image = t({
 | 
						||
      name: "el-image",
 | 
						||
      buildPreviewBind: ({
 | 
						||
        url: e,
 | 
						||
        urls: a,
 | 
						||
        previewUrl: n,
 | 
						||
        previewUrls: l,
 | 
						||
        index: o
 | 
						||
      }) => ({
 | 
						||
        "preview-src-list": l,
 | 
						||
        "initial-index": o
 | 
						||
      }),
 | 
						||
      fallback: "error"
 | 
						||
    }), this.progress = t({
 | 
						||
      name: "el-progress"
 | 
						||
    }), this.loading = t({
 | 
						||
      name: "loading",
 | 
						||
      type: "directive"
 | 
						||
    }), this.upload = t({
 | 
						||
      id: "uid",
 | 
						||
      name: "el-upload",
 | 
						||
      type: "",
 | 
						||
      typeImageCard: "picture-card",
 | 
						||
      typeImage: "picture",
 | 
						||
      getStatusFromEvent(e) {
 | 
						||
        return e == null ? void 0 : e.status;
 | 
						||
      },
 | 
						||
      getFileListFromEvent(e, a, n) {
 | 
						||
        return n;
 | 
						||
      },
 | 
						||
      status: {
 | 
						||
        success: "success",
 | 
						||
        uploading: "uploading"
 | 
						||
      },
 | 
						||
      isSuccess(e) {
 | 
						||
        return e.status === "success";
 | 
						||
      },
 | 
						||
      limitAdd: 1
 | 
						||
    }), this.tabs = t({
 | 
						||
      name: "el-tabs",
 | 
						||
      modelValue: "modelValue",
 | 
						||
      tabChange: "tabChange"
 | 
						||
    }), this.tabPane = t({
 | 
						||
      name: "el-tab-pane",
 | 
						||
      key: "name",
 | 
						||
      tab: "label"
 | 
						||
    }), this.collapse = t({
 | 
						||
      name: "el-collapse",
 | 
						||
      modelValue: "modelValue",
 | 
						||
      keyName: "name"
 | 
						||
    }), this.collapseItem = t({
 | 
						||
      name: "el-collapse-item",
 | 
						||
      key: "name",
 | 
						||
      titleSlotName: "title",
 | 
						||
      /**
 | 
						||
       * element collapse只支持title插槽
 | 
						||
       */
 | 
						||
      extraSlotName: "not_support_extra",
 | 
						||
      builder(e) {
 | 
						||
        return b(this, e, {
 | 
						||
          slots: {
 | 
						||
            [this.titleSlotName]() {
 | 
						||
              return g("div", {
 | 
						||
                class: "fsel-collapse-item-title fsel-flex-row space-between"
 | 
						||
              }, [g("span", {
 | 
						||
                class: "title-text"
 | 
						||
              }, [e.titleSlot(), L(" ")]), g("span", {
 | 
						||
                class: "title-extra"
 | 
						||
              }, [e.extraSlot()])]);
 | 
						||
            }
 | 
						||
          }
 | 
						||
        });
 | 
						||
      }
 | 
						||
    }), this.badge = t({
 | 
						||
      name: "el-badge",
 | 
						||
      value: "value",
 | 
						||
      builder(e) {
 | 
						||
        return b(this, e, {
 | 
						||
          props: {
 | 
						||
            [this.value]: e.value
 | 
						||
          }
 | 
						||
        });
 | 
						||
      }
 | 
						||
    }), this.tooltip = t({
 | 
						||
      name: "el-tooltip",
 | 
						||
      content: "content",
 | 
						||
      trigger: "default"
 | 
						||
    }), this.divider = t({
 | 
						||
      name: "el-divider"
 | 
						||
    }), this.popover = t({
 | 
						||
      name: "el-popover",
 | 
						||
      contentSlotName: "default",
 | 
						||
      triggerSlotName: "reference",
 | 
						||
      visible: "visible"
 | 
						||
    }), f && (this.notification.instance = f.Notification, this.message.instance = f.Message, this.messageBox.instance = f.MessageBox);
 | 
						||
  }
 | 
						||
}
 | 
						||
const k = z;
 | 
						||
function j(w) {
 | 
						||
  for (const f in k)
 | 
						||
    w.component(f, k[f]);
 | 
						||
}
 | 
						||
function B() {
 | 
						||
  const w = new W({
 | 
						||
    Message: T,
 | 
						||
    Notification: P,
 | 
						||
    MessageBox: H
 | 
						||
  });
 | 
						||
  return E.set(w), w;
 | 
						||
}
 | 
						||
const X = {
 | 
						||
  install(w, f = {}) {
 | 
						||
    return f.setupIcons !== !1 && j(w), B();
 | 
						||
  },
 | 
						||
  set: B
 | 
						||
};
 | 
						||
export {
 | 
						||
  W as Element,
 | 
						||
  X as default
 | 
						||
};
 | 
						||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWktZWxlbWVudC5tanMiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbGVtZW50LnRzeCIsIi4uLy4uL3NyYy9pY29ucy50cyIsIi4uLy4uL3NyYy9pbmRleC50cyJdLCJzb3VyY2VzQ29udGVudCI6W251bGwsbnVsbCxudWxsXSwibmFtZXMiOlsiYnVpbGRCaW5kaW5nIiwiY3JlYXRvciIsInVzZVVpUmVuZGVyIiwiRWxlbWVudCIsImNvbnN0cnVjdG9yIiwidGFyZ2V0IiwidHlwZSIsIm1vZGVsVmFsdWUiLCJzd2l0Y2giLCJhY3RpdmVDb2xvciIsImFjdGl2ZVRleHQiLCJhY3RpdmVWYWx1ZSIsImluYWN0aXZlQ29sb3IiLCJpbmFjdGl2ZVRleHQiLCJpbmFjdGl2ZVZhbHVlIiwibmFtZSIsImZvcm1XcmFwcGVyIiwidmlzaWJsZSIsImN1c3RvbUNsYXNzIiwiaXMiLCJ0aXRsZVNsb3ROYW1lIiwiYnVpbGRPbkNsb3NlZEJpbmQiLCJvbkNsb3NlZCIsImJ1aWxkV2lkdGhCaW5kIiwid2lkdGgiLCJidWlsZEluaXRCaW5kIiwiYnVpbGRJbm5lckJpbmQiLCJtZXNzYWdlQm94IiwiaW5zdGFuY2UiLCJ1bmRlZmluZWQiLCJvcGVuIiwiY29udGV4dCIsImNvbmZpcm0iLCJtZXNzYWdlIiwic3VjY2VzcyIsIm1zZyIsImVycm9yIiwid2FybiIsIndhcm5pbmciLCJpbmZvIiwibm90aWZpY2F0aW9uIiwiaWNvbiIsImlzQ29tcG9uZW50IiwiaWNvbnMiLCJhZGQiLCJjb2x1bW5zRmlsdGVyIiwiY29tcGFjdCIsImVkaXQiLCJyZW1vdmUiLCJzZWFyY2giLCJyZWZyZXNoIiwiZXhwb3J0IiwiY2hlY2siLCJzb3J0IiwibGVmdCIsInJpZ2h0IiwiY2xvc2UiLCJhcnJvd0xlZnQiLCJhcnJvd1JpZ2h0IiwibW9yZSIsInBsdXMiLCJ6b29tSW4iLCJ6b29tT3V0IiwicmVmcmVzaExlZnQiLCJyZWZyZXNoUmlnaHQiLCJ1cGxvYWQiLCJmdWxsU2NyZWVuIiwidW5GdWxsU2NyZWVuIiwicXVlc3Rpb24iLCJjYXJldFVwIiwiY2FyZXREb3duIiwiZXllIiwiZGlhbG9nIiwiZm9vdGVyU2xvdE5hbWUiLCJmb290ZXIiLCJvcHRzIiwiRWxEaWFsb2ciLCJidWlsZGVyIiwicHJvcHMiLCJ0aXRsZSIsInNsb3RzIiwiYnV0dG9uR3JvdXAiLCJjb2wiLCJyb3ciLCJjYXJkIiwiY2hlY2tib3hHcm91cCIsImNoZWNrYm94IiwicmVzb2x2ZUV2ZW50IiwiZSIsInZhbHVlIiwib25DaGFuZ2UiLCJjYWxsYmFjayIsImRyYXdlciIsImNvbGxhcHNlVHJhbnNpdGlvbiIsIm9wdGlvbiIsImxhYmVsIiwic2VsZWN0IiwiY2xlYXJhYmxlIiwiZmlsdGVyYWJsZSIsImJ1aWxkTXVsdGlCaW5kaW5nIiwibXVsdGlwbGUiLCJ0cmVlU2VsZWN0Iiwib3B0aW9ucyIsImNoaWxkcmVuIiwiYnVpbGRPcHRpb25LZXlzTmFtZUJpbmRpbmciLCJwYXJhbSIsInJhZGlvIiwicmFkaW9CdXR0b24iLCJyYWRpb0dyb3VwIiwiY2FzY2FkZXIiLCJmaWVsZE5hbWVzIiwibmFtZXNNYXAiLCJmb3JtIiwiaW5saW5lTGF5b3V0IiwibGF5b3V0IiwiaW5saW5lIiwidmFsaWRhdGVXcmFwIiwiZm9ybVJlZiIsInZhbGlkYXRlIiwidHJhbnNmb3JtVmFsaWRhdGVFcnJvcnMiLCJlcnJvcnMiLCJmb3JFYWNoIiwiaXRlbSIsImtleSIsImZvcm1JdGVtIiwicHJvcCIsInJ1bGVzIiwic2tpcFZhbGlkYXRpb25XcmFwcGVyIiwiaW5qZWN0Rm9ybUl0ZW1Db250ZXh0IiwidXNlRm9ybUl0ZW0iLCJvbkJsdXIiLCJidXR0b24iLCJ0ZXh0VHlwZSIsInRleHQiLCJsaW5rVHlwZSIsImxpbmsiLCJjaXJjbGUiLCJjb2xvcnMiLCJwYWdpbmF0aW9uIiwiY3VycmVudFBhZ2UiLCJ0b3RhbCIsInBhZ2VDb3VudCIsInNldEN1cnJlbnRQYWdlIiwic2V0UGFnZVNpemUiLCJkb0FmdGVyQ2hhbmdlIiwib25DdXJyZW50Q2hhbmdlIiwiZXZlbnQiLCJvblNpemVDaGFuZ2UiLCJ0YWJsZUNvbHVtbiIsImluZGV4IiwidGFibGVDb2x1bW5Hcm91cCIsInRhYmxlIiwiZGF0YSIsInJlbmRlck1vZGUiLCJkZWZhdWx0Um93S2V5IiwiZml4ZWRIZWFkZXJOZWVkQ29tcHV0ZUJvZHlIZWlnaHQiLCJidWlsZE1heEhlaWdodCIsIm1heEhlaWdodCIsImhhc01heEhlaWdodCIsImhlYWRlckRvbVNlbGVjdG9yIiwidkxvYWRpbmciLCJzZXRTZWxlY3RlZFJvd3MiLCJzZWxlY3RlZFJvd0tleXMiLCJ0YWJsZVJlZiIsImdldFJvd0tleSIsInJvd0tleSIsImN1clNlbGVjdGVkUm93cyIsInB1c2giLCJ0b2dnbGVSb3dTZWxlY3Rpb24iLCJsZW5ndGgiLCJzZXRDdXJyZW50Um93IiwiYnVpbGRTZWxlY3Rpb25DcnVkT3B0aW9ucyIsInJlcSIsImNvbXB1dGUiLCJ1c2VDb21wdXRlIiwiZ2V0Q3Jvc3NQYWdlU2VsZWN0ZWQiLCJjdXJTZWxlY3RlZElkcyIsImdldFBhZ2VEYXRhIiwibWFwSWQiLCJpc0Z1bmN0aW9uIiwiY3VycmVudElkcyIsIm1hcCIsIkZ1bmN0aW9uIiwib3RoZXJQYWdlU2VsZWN0ZWQiLCJmaWx0ZXIiLCJpbmNsdWRlcyIsInVuaW9uIiwib25TZWxlY3Rpb25DaGFuZ2UiLCJjaGFuZ2VkUm93cyIsInNlbGVjdGVkS2V5cyIsImNyb3NzUGFnZSIsIm9uU2VsZWN0ZWRLZXlzQ2hhbmdlZCIsImNvbHVtbnMiLCIkY2hlY2tlZCIsInNob3ciLCJjb2x1bW4iLCJhbGlnbiIsIm9yZGVyIiwicmVzZXJ2ZVNlbGVjdGlvbiIsImNvbHVtblNldERpc2FibGVkIiwiY2hhbmdlZCIsImNvbXB1dGVkIiwiaGlnaGxpZ2h0Q3VycmVudFJvdyIsIiRzZWxlY3RlZCIsImNvbXBvbmVudCIsImN0eCIsImRlZmF1bHQiLCJjb25kaXRpb25hbFJlbmRlciIsIm1hdGNoIiwicmVidWlsZFJlbmRlclNjb3BlIiwic2NvcGUiLCJzY3JvbGxUbyIsInNldFNjcm9sbFRvcCIsInRvcCIsIm9uU29ydENoYW5nZSIsIm9uRmlsdGVyQ2hhbmdlIiwiYnViYmxlVXAiLCJpc1NlcnZlclNvcnQiLCJzb3J0YWJsZSIsImFzYyIsImV2ZW50cyIsImZpbHRlcnMiLCJ0YWJsZUNvbHVtblYyIiwidGFibGVDb2x1bW5Hcm91cFYyIiwidGFibGVWMiIsInJlbmRlck1ldGhvZCIsImNvbHVtbnNJc0ZsYXQiLCJidWlsZE11bHRpSGVhZGVyc0JpbmQiLCJmbGF0Q29sdW1ucyIsInRyZWVDb2x1bW5zIiwiZGVlcE9mQ29sdW1ucyIsImRlZXAiLCJtYXhEZWVwIiwiX3BhcmVudCIsIk1hdGgiLCJtYXgiLCJyZXMiLCJsaW5lSGVpZ2h0IiwiZmluZExlYWYiLCJwYXJlbnRzIiwibGVhZnMiLCJjb3VudExlYWZXaWR0aCIsImxlYWYiLCJiaW5kIiwiaGVhZGVySGVpZ2h0IiwiaGVhZGVyIiwiY2VsbHMiLCJoZWFkZXJJbmRleCIsImVsQ29sdW1uc01hcCIsImdyb3VwQ2VsbHMiLCJ1c2VkTGVhZktleXMiLCJidWlsZEhlYWRUcmVlIiwiX2NyZWF0ZVZOb2RlIiwiaGVpZ2h0IiwianVzdGlmeUNvbnRlbnQiLCJmaW5kVG9wUGFyZW50IiwicGFyZW50IiwicGxhY2Vob2xkZXJTaWduIiwiVGFibGVWMlBsYWNlaG9sZGVyIiwiaGVhZGVyQ2VsbCIsInJvd0luZGV4Iiwicm93RGF0YSIsInVucmVmIiwiZml4ZWQiLCJzZWxlY3Rpb25GaXhlZCIsImNlbGxSZW5kZXJlciIsImNoZWNrZWQiLCJfcmVzb2x2ZUNvbXBvbmVudCIsImhlYWRlckNlbGxSZW5kZXJlciIsIl9kYXRhIiwiYWxsU2VsZWN0ZWQiLCJldmVyeSIsImNvbnRhaW5zQ2hlY2tlZCIsInNvbWUiLCJzY3JvbGxUb1RvcCIsInRleHRBcmVhIiwidGFnIiwiaW5wdXRHcm91cCIsImlucHV0IiwiaW5wdXRQYXNzd29yZCIsInBhc3N3b3JkVHlwZSIsInNob3dQYXNzd29yZCIsIm51bWJlciIsImRhdGVQaWNrZXIiLCJidWlsZERhdGVUeXBlIiwidGltZVBpY2tlciIsImRyb3Bkb3duIiwiY29tbWFuZCIsIm9uQ29tbWFuZCIsIiRldmVudCIsInNsb3ROYW1lIiwiZHJvcGRvd25NZW51IiwiZHJvcGRvd25JdGVtIiwiaW1hZ2VHcm91cCIsImltYWdlIiwiYnVpbGRQcmV2aWV3QmluZCIsInVybCIsInVybHMiLCJwcmV2aWV3VXJsIiwicHJldmlld1VybHMiLCJmYWxsYmFjayIsInByb2dyZXNzIiwibG9hZGluZyIsImlkIiwidHlwZUltYWdlQ2FyZCIsInR5cGVJbWFnZSIsImdldFN0YXR1c0Zyb21FdmVudCIsInN0YXR1cyIsImdldEZpbGVMaXN0RnJvbUV2ZW50IiwicmVzcG9uc2UiLCJmaWxlIiwiZmlsZUxpc3QiLCJ1cGxvYWRpbmciLCJpc1N1Y2Nlc3MiLCJmaWxlSXRlbSIsImxpbWl0QWRkIiwidGFicyIsInRhYkNoYW5nZSIsInRhYlBhbmUiLCJ0YWIiLCJjb2xsYXBzZSIsImtleU5hbWUiLCJjb2xsYXBzZUl0ZW0iLCJleHRyYVNsb3ROYW1lIiwidGl0bGVTbG90IiwiX2NyZWF0ZVRleHRWTm9kZSIsImV4dHJhU2xvdCIsImJhZGdlIiwidG9vbHRpcCIsImNvbnRlbnQiLCJ0cmlnZ2VyIiwiZGl2aWRlciIsInBvcG92ZXIiLCJjb250ZW50U2xvdE5hbWUiLCJ0cmlnZ2VyU2xvdE5hbWUiLCJOb3RpZmljYXRpb24iLCJNZXNzYWdlIiwiTWVzc2FnZUJveCIsImljb25zTGlzdCIsInNldHVwSWNvbnMiLCJhcHAiLCJzZXQiLCJlbGVtZW50VWkiLCJFbE1lc3NhZ2UiLCJFbE5vdGlmaWNhdGlvbiIsIkVsTWVzc2FnZUJveCIsInVpQ29udGV4dCJdLCJtYXBwaW5ncyI6Ijs7Ozs7QUF1RUEsTUFBTTtBQUFBLEVBQUVBLGNBQUFBO0FBQUFBLEVBQWNDLFNBQUFBO0lBQVlDLEVBQVc7TUFDaENDLEVBQU87QUFBQSxFQUNsQkMsWUFBWUMsR0FBMEI7QUFRdEMsU0FBSUMsT0FBRyxXQUNQLEtBQVVDLGFBQUcsY0FFYixLQUFNQyxTQUFhUCxFQUFrQjtBQUFBLE1BQ25DUSxhQUFhO0FBQUEsTUFDYkMsWUFBWTtBQUFBLE1BQ1pDLGFBQWE7QUFBQSxNQUNiQyxlQUFlO0FBQUEsTUFDZkMsY0FBYztBQUFBLE1BQ2RDLGVBQWU7QUFBQSxNQUNmUCxZQUFZO0FBQUEsTUFDWlEsTUFBTTtBQUFBLElBQ1AsQ0FBQSxHQUVELEtBQVdDLGNBQWtCZixFQUF1QjtBQUFBLE1BQ2xEZ0IsU0FBUztBQUFBLE1BQ1RDLGFBQWNDLENBQUFBLE1BQ0w7QUFBQSxNQUVUQyxlQUFlO0FBQUEsTUFDZkMsa0JBQWtCRixHQUFZRyxHQUFrQjtBQUM5QyxlQUFPO0FBQUEsVUFBRUEsVUFBQUE7QUFBQUE7TUFDVjtBQUFBLE1BQ0RDLGVBQWVKLEdBQUlLLEdBQUs7QUFDdEIsZUFBTztBQUFBLFVBQUVBLE9BQU9BO0FBQUFBO01BQ2pCO0FBQUEsTUFDREMsY0FBY04sR0FBRTtBQUNkLGVBQU87TUFDUjtBQUFBLE1BQ0RPLGlCQUFjO0FBQ1osZUFBTztNQUNSO0FBQUEsTUFDRFgsTUFBTTtBQUFBLElBQ1AsQ0FBQSxHQUVELEtBQVVZLGFBQWlCMUIsRUFBc0I7QUFBQSxNQUMvQ2MsTUFBTTtBQUFBLE1BQ05hLFVBQVVDO0FBQUFBLE1BQ1ZDLE1BQU0sT0FBT0MsTUFDSixLQUFLSixXQUFXQyxTQUFTRyxDQUFPO0FBQUEsTUFFekNDLFNBQVMsT0FBT0QsTUFDUCxLQUFLSixXQUFXQyxTQUFTRyxDQUFPO0FBQUEsSUFFMUMsQ0FBQSxHQUVELEtBQU9FLFVBQWNoQyxFQUFtQjtBQUFBLE1BQ3RDMkIsVUFBVUM7QUFBQUEsTUFDVmQsTUFBTTtBQUFBLE1BQ05lLE1BQU9DLENBQUFBLE1BQVc7QUFDaEIsYUFBS0UsUUFBUUwsU0FBU0UsS0FBS0MsQ0FBTztBQUFBLE1BQ25DO0FBQUEsTUFDREcsU0FBVUMsQ0FBQUEsTUFBTztBQUNmLGFBQUtGLFFBQVFMLFNBQVNNLFFBQVFDLENBQUc7QUFBQSxNQUNsQztBQUFBLE1BQ0RDLE9BQVFELENBQUFBLE1BQU87QUFDYixhQUFLRixRQUFRTCxTQUFTUSxNQUFNRCxDQUFHO0FBQUEsTUFDaEM7QUFBQSxNQUNERSxNQUFPRixDQUFBQSxNQUFPO0FBQ1osYUFBS0YsUUFBUUwsU0FBU1UsUUFBUUgsQ0FBRztBQUFBLE1BQ2xDO0FBQUEsTUFDREksTUFBT0osQ0FBQUEsTUFBTztBQUNaLGFBQUtGLFFBQVFMLFNBQVNPLENBQUc7QUFBQSxNQUMzQjtBQUFBLElBQ0QsQ0FBQSxHQUVELEtBQVlLLGVBQW1CdkMsRUFBd0I7QUFBQSxNQUNyRDJCLFVBQVVDO0FBQUFBLE1BQ1ZkLE1BQU07QUFBQSxNQUNOZSxNQUFPQyxDQUFBQSxNQUFXO0FBQ2hCLGFBQUtTLGFBQWFaLFNBQVNFLEtBQUtDLENBQU87QUFBQSxNQUN4QztBQUFBLE1BQ0RHLFNBQVVDLENBQUFBLE1BQU87QUFDZixhQUFLSyxhQUFhWixTQUFTTSxRQUFRQyxDQUFHO0FBQUEsTUFDdkM7QUFBQSxNQUNEQyxPQUFRRCxDQUFBQSxNQUFPO0FBQ2IsYUFBS0ssYUFBYVosU0FBU1EsTUFBTUQsQ0FBRztBQUFBLE1BQ3JDO0FBQUEsTUFDREUsTUFBT0YsQ0FBQUEsTUFBTztBQUNaLGFBQUtLLGFBQWFaLFNBQVNTLEtBQUtGLENBQUc7QUFBQSxNQUNwQztBQUFBLE1BQ0RJLE1BQU9KLENBQUFBLE1BQU87QUFDWixhQUFLSyxhQUFhWixTQUFTTSxRQUFRQyxDQUFHO0FBQUEsTUFDeEM7QUFBQSxJQUNELENBQUEsR0FFRCxLQUFJTSxPQUFXeEMsRUFBZ0I7QUFBQSxNQUM3QmMsTUFBTTtBQUFBLE1BQ04yQixhQUFhO0FBQUEsSUFDZCxDQUFBLEdBRUQsS0FBQUMsUUFBZTtBQUFBLE1BQ2JDLEtBQUs7QUFBQSxNQUNMQyxlQUFlO0FBQUEsTUFDZkMsU0FBUztBQUFBLE1BQ1RDLE1BQU07QUFBQSxNQUNOQyxRQUFRO0FBQUEsTUFDUkMsUUFBUTtBQUFBLE1BQ1JDLFNBQVM7QUFBQSxNQUNUQyxRQUFRO0FBQUEsTUFDUkMsT0FBTztBQUFBLE1BQ1BDLE1BQU07QUFBQSxNQUNOQyxNQUFNO0FBQUEsTUFDTkMsT0FBTztBQUFBLE1BQ1BDLE9BQU87QUFBQSxNQUNQQyxXQUFXO0FBQUEsTUFDWEMsWUFBWTtBQUFBLE1BQ1pDLE1BQU07QUFBQSxNQUNOQyxNQUFNO0FBQUEsTUFDTkMsUUFBUTtBQUFBLE1BQ1JDLFNBQVM7QUFBQSxNQUNUQyxhQUFhO0FBQUEsTUFDYkMsY0FBYztBQUFBLE1BQ2RDLFFBQVE7QUFBQSxNQUNSQyxZQUFZO0FBQUEsTUFDWkMsY0FBYztBQUFBLE1BQ2RDLFVBQVU7QUFBQSxNQUNWQyxTQUFTO0FBQUEsTUFDVEMsV0FBVztBQUFBLE1BQ1hDLEtBQUs7QUFBQSxNQUNMaEMsTUFBTTtBQUFBLE9BR1IsS0FBTWlDLFNBQWF2RSxFQUFrQjtBQUFBLE1BQ25DYyxNQUFNO0FBQUEsTUFDTkUsU0FBUztBQUFBLE1BQ1RDLGFBQWE7QUFBQSxNQUNiRSxlQUFlO0FBQUEsTUFDZnFELGdCQUFnQjtBQUFBLE1BQ2hCcEQsa0JBQWtCQyxHQUFRO0FBQ3hCLGVBQU87QUFBQSxVQUFFQSxVQUFBQTtBQUFBQTtNQUNWO0FBQUEsTUFDRG9ELFNBQU07QUFDSixlQUFPO01BQ1I7QUFBQSxNQUNENUMsS0FBSzZDLEdBQUk7QUFDUEMsUUFBQUEsRUFBUzlDLEtBQUs2QyxDQUFJO0FBQUEsTUFDbkI7QUFBQSxNQUNERSxRQUFRRixHQUFJO0FBQ1YsZUFBTzNFLEVBQWEsTUFBTTJFLEdBQU07QUFBQSxVQUM5QkcsT0FBTztBQUFBLFlBQ0xDLE9BQU9KLEVBQUtJO0FBQUFBLFlBQ1p2RCxPQUFPbUQsRUFBS25EO0FBQUFBLFVBQ2I7QUFBQSxVQUNEd0QsT0FBTztBQUFBLFlBQ0xOLFFBQVFDLEVBQUtEO0FBQUFBLFVBQ2Q7QUFBQSxRQUNGLENBQUE7QUFBQSxNQUNIO0FBQUEsSUFDRCxDQUFBLEdBRUQsS0FBV08sY0FBR2hGLEVBQXVCO0FBQUEsTUFDbkNjLE1BQU07QUFBQSxJQUNQLENBQUEsR0FFRCxLQUFHbUUsTUFBR2pGLEVBQWU7QUFBQSxNQUNuQmMsTUFBTTtBQUFBLElBQ1AsQ0FBQSxHQUVELEtBQUdvRSxNQUFHbEYsRUFBZTtBQUFBLE1BQ25CYyxNQUFNO0FBQUEsSUFDUCxDQUFBLEdBRUQsS0FBSXFFLE9BQUduRixFQUFnQjtBQUFBLE1BQ3JCYyxNQUFNO0FBQUEsSUFDUCxDQUFBLEdBRUQsS0FBYXNFLGdCQUFvQnBGLEVBQXlCO0FBQUEsTUFDeERjLE1BQU07QUFBQSxNQUNOUixZQUFZO0FBQUEsSUFDYixDQUFBLEdBQ0QsS0FBUStFLFdBQWVyRixFQUFvQjtBQUFBLE1BQ3pDYyxNQUFNO0FBQUEsTUFDTndFLGFBQWFDLEdBQU07QUFDakIsZUFBT0E7QUFBQUEsTUFDUjtBQUFBLE1BQ0RqRixZQUFZO0FBQUEsTUFDWmtGLE9BQU87QUFBQSxNQUNQQyxTQUFTQyxHQUEwQjtBQUNqQyxlQUFPO0FBQUEsVUFDTCx1QkFBdUJBO0FBQUFBO01BRTNCO0FBQUEsSUFDRCxDQUFBLEdBRUQsS0FBTUMsU0FBYTNGLEVBQWtCO0FBQUEsTUFDbkNjLE1BQU07QUFBQSxNQUNORSxTQUFTO0FBQUEsTUFDVEMsYUFBYTtBQUFBLE1BQ2JNLE9BQU87QUFBQSxJQUNSLENBQUEsR0FFRCxLQUFrQnFFLHFCQUFHNUYsRUFBOEI7QUFBQSxNQUNqRGMsTUFBTTtBQUFBLElBQ1AsQ0FBQSxHQUVELEtBQU0rRSxTQUFhN0YsRUFBa0I7QUFBQSxNQUNuQ2MsTUFBTTtBQUFBLE1BQ04wRSxPQUFPO0FBQUEsTUFDUE0sT0FBTztBQUFBLElBQ1IsQ0FBQSxHQUVELEtBQU1DLFNBQWEvRixFQUFrQjtBQUFBLE1BQ25DYyxNQUFNO0FBQUEsTUFDTlIsWUFBWTtBQUFBLE1BQ1owRixXQUFXO0FBQUEsTUFDWEMsWUFBWTtBQUFBLE1BQ1pDLGtCQUFrQkMsR0FBUTtBQUN4QixlQUFPO0FBQUEsVUFBRUEsVUFBQUE7QUFBQUE7TUFDWDtBQUFBLElBQ0QsQ0FBQSxHQUVELEtBQVVDLGFBQWlCcEcsRUFBc0I7QUFBQSxNQUMvQ2MsTUFBTTtBQUFBLE1BQ05SLFlBQVk7QUFBQSxNQUNaMEYsV0FBVztBQUFBLE1BQ1hLLFNBQVM7QUFBQSxNQUNUYixPQUFPO0FBQUEsTUFDUE0sT0FBTztBQUFBLE1BQ1BRLFVBQVU7QUFBQSxNQUNWQywyQkFBMkJDLEdBQWdEO0FBQ3pFLGVBQU87QUFBQSxVQUNMM0IsT0FBTztBQUFBLFlBQ0xpQixPQUFPVSxFQUFNVjtBQUFBQSxZQUNiTixPQUFPZ0IsRUFBTWhCO0FBQUFBLFlBQ2JjLFVBQVVFLEVBQU1GO0FBQUFBLFVBQ2pCO0FBQUE7TUFFTDtBQUFBLElBQ0QsQ0FBQSxHQUVELEtBQUtHLFFBQVl6RyxFQUFpQjtBQUFBLE1BQ2hDYyxNQUFNO0FBQUEsTUFDTjBFLE9BQU87QUFBQSxNQUNQWixRQUFRRixHQUFJO0FBQ1YsZUFBTzNFLEVBQWEsTUFBTTJFLEdBQU07QUFBQSxVQUM5QkcsT0FBTztBQUFBLFlBQ0wsQ0FBQyxLQUFLVyxLQUFLLEdBQUdkLEVBQUtjO0FBQUFBLFVBQ3BCO0FBQUEsUUFDRixDQUFBO0FBQUEsTUFDSDtBQUFBLElBQ0QsQ0FBQSxHQUVELEtBQVdrQixjQUFrQjFHLEVBQXVCO0FBQUEsTUFDbERjLE1BQU07QUFBQSxNQUNOMEUsT0FBTztBQUFBLE1BQ1BaLFFBQVFGLEdBQUk7QUFDVixlQUFPM0UsRUFBYSxNQUFNMkUsR0FBTTtBQUFBLFVBQzlCRyxPQUFPO0FBQUEsWUFDTCxDQUFDLEtBQUtXLEtBQUssR0FBR2QsRUFBS2M7QUFBQUEsVUFDcEI7QUFBQSxRQUNGLENBQUE7QUFBQSxNQUNIO0FBQUEsSUFDRCxDQUFBLEdBRUQsS0FBVW1CLGFBQWlCM0csRUFBc0I7QUFBQSxNQUMvQ2MsTUFBTTtBQUFBLE1BQ05SLFlBQVk7QUFBQSxJQUNiLENBQUEsR0FFRCxLQUFRc0csV0FBZTVHLEVBQW9CO0FBQUEsTUFDekNjLE1BQU07QUFBQSxNQUNOUixZQUFZO0FBQUEsTUFDWjBGLFdBQVc7QUFBQSxNQUNYYSxXQUFXQyxHQUFhO0FBQ3RCLGVBQU87QUFBQSxVQUNMakMsT0FBT2lDO0FBQUFBO01BRVg7QUFBQSxJQUNELENBQUEsR0FFRCxLQUFJQyxPQUFXL0csRUFBZ0I7QUFBQSxNQUM3QmMsTUFBTTtBQUFBLE1BQ05rRyxjQUFjO0FBQUEsUUFDWkMsUUFBUTtBQUFBLFFBQ1JDLFFBQVE7QUFBQSxNQUNUO0FBQUEsTUFDREMsY0FBYyxPQUFPQyxNQUNaQSxFQUFRQztNQUVqQkMseUJBQTBCL0IsT0FBVTtBQUNsQyxjQUFNZ0MsSUFBYyxDQUFBO0FBQ3BCQyxlQUFBQSxFQUFRakMsR0FBRyxDQUFDa0MsR0FBTUMsTUFBTztBQUN2QkgsVUFBQUEsRUFBT0csQ0FBRyxJQUFJO0FBQUEsUUFDaEIsQ0FBQyxHQUVNSDtBQUFBQSxNQUNUO0FBQUEsSUFDRCxDQUFBLEdBRUQsS0FBUUksV0FBZTNILEVBQW9CO0FBQUEsTUFDekNjLE1BQU07QUFBQSxNQUNOOEcsTUFBTTtBQUFBLE1BQ045QixPQUFPO0FBQUEsTUFDUCtCLE9BQU87QUFBQSxNQUNQQyx1QkFBdUI7QUFBQSxNQUN2QkMsd0JBQXFCO0FBQ25CLGNBQU07QUFBQSxVQUFFSixVQUFBQTtBQUFBQSxRQUFVLElBQUdLLEVBQVc7QUFDaEMsZUFBTztBQUFBLFVBQ0wsTUFBTXZDLFdBQVE7QUFDWixtQkFBTWtDLEtBQUFBLGdCQUFBQSxFQUFVTixTQUFTO0FBQUEsVUFDMUI7QUFBQSxVQUNELE1BQU1ZLFNBQU07QUFDVixtQkFBTU4sS0FBQUEsZ0JBQUFBLEVBQVVOLFNBQVM7QUFBQSxVQUMzQjtBQUFBO01BRUg7QUFBQSxNQUNEekMsUUFBUUYsR0FBSTtBQUNWLGVBQU8zRSxFQUFhLE1BQU0yRSxHQUFNLENBQUUsQ0FBQTtBQUFBLE1BQ3BDO0FBQUEsSUFDRCxDQUFBLEdBRUQsS0FBTXdELFNBQWFsSSxFQUFrQjtBQUFBLE1BQ25DYyxNQUFNO0FBQUEsTUFDTnFILFVBQVU7QUFBQSxRQUFFQyxNQUFNO0FBQUEsTUFBTTtBQUFBLE1BQ3hCQyxVQUFVO0FBQUEsUUFBRUMsTUFBTTtBQUFBLFFBQU1qSSxNQUFNO0FBQUEsTUFBVztBQUFBLE1BQ3pDa0ksUUFBUTtBQUFBLFFBQUVBLFFBQVE7QUFBQSxNQUFNO0FBQUEsTUFDeEJDLFFBQVNuSSxDQUFBQSxPQUNBO0FBQUEsUUFBRUEsTUFBQUE7QUFBQUE7SUFFWixDQUFBLEdBRUQsS0FBVW9JLGFBQWlCekksRUFBc0I7QUFBQSxNQUMvQ2MsTUFBTTtBQUFBLE1BQ040SCxhQUFhO0FBQUEsTUFDYkMsT0FBTztBQUFBLE1BQ1BDLFdBQVc7QUFBQSxNQUNYbkQsU0FBUztBQUFBLFFBQUVvRCxnQkFBQUE7QUFBQUEsUUFBZ0JDLGFBQUFBO0FBQUFBLFFBQWFDLGVBQUFBO0FBQUFBLE1BQWUsR0FBQTtBQUNyRCxlQUFPO0FBQUE7QUFBQSxVQUVMQyxnQkFBZ0JDLEdBQVU7QUFDeEJKLFlBQUFBLEVBQWVJLENBQUssR0FDcEJGO1VBQ0Q7QUFBQSxVQUNERyxhQUFhRCxHQUFVO0FBQ3JCSCxZQUFBQSxFQUFZRyxDQUFLLEdBQ2pCRjtVQUNGO0FBQUE7TUFFSjtBQUFBLElBQ0QsQ0FBQSxHQUVELEtBQVdJLGNBQWtCbkosRUFBdUI7QUFBQSxNQUNsRGMsTUFBTTtBQUFBLE1BQ05nRixPQUFPO0FBQUEsTUFDUDhCLE1BQU07QUFBQSxNQUNOMUMsS0FBSztBQUFBLE1BQ0xrRSxPQUFPO0FBQUEsSUFDUixDQUFBLEdBRUQsS0FBZ0JDLG1CQUFrQnJKLEVBQXVCO0FBQUEsTUFDdkRjLE1BQU07QUFBQSxNQUNOZ0YsT0FBTztBQUFBLE1BQ1A4QixNQUFNO0FBQUEsTUFDTjFDLEtBQUs7QUFBQSxNQUNMa0UsT0FBTztBQUFBLElBQ1IsQ0FBQSxHQUVELEtBQUtFLFFBQVl0SixFQUFpQjtBQUFBLE1BQ2hDYyxNQUFNO0FBQUEsTUFDTnlJLE1BQU07QUFBQSxNQUNOQyxZQUFZO0FBQUEsTUFDWkMsZUFBZTtBQUFBLE1BQ2ZDLGtDQUFrQztBQUFBLE1BQ2xDQyxnQkFBaUJDLENBQUFBLE9BQ1I7QUFBQSxRQUFFQSxXQUFBQTtBQUFBQTtNQUVYQyxjQUFleEQsQ0FBQUEsT0FDTkEsS0FBQUEsZ0JBQUFBLEVBQVN1RCxjQUFhO0FBQUEsTUFFL0JFLG1CQUFtQjtBQUFBLE1BQ25CQyxVQUFVO0FBQUE7QUFBQSxNQUVWQyxnQkFBZ0I7QUFBQSxRQUFFN0QsVUFBQUE7QUFBQUEsUUFBVThELGlCQUFBQTtBQUFBQSxRQUFpQkMsVUFBQUE7QUFBQUEsUUFBVUMsV0FBQUE7QUFBQUEsTUFBVyxHQUFBO0FBQ2hFLGNBQU1DLElBQWNELEtBQ2RFLElBQWtCLENBQUE7QUFDeEIsbUJBQVczQyxLQUFPdUMsRUFBZ0J6RTtBQUNoQyxxQkFBV04sS0FBT2dGLEVBQVNYO0FBQ3pCLFlBQUlyRSxFQUFJa0YsQ0FBTSxNQUFNMUMsS0FDbEIyQyxFQUFnQkMsS0FBS3BGLENBQUc7QUFJOUIsWUFBSWlCO0FBQ0YscUJBQVdqQixLQUFPbUY7QUFDaEJILFlBQUFBLEVBQVNLLG1CQUFtQnJGLEdBQUssRUFBSTtBQUFBO0FBR3ZDLFVBQUkrRSxFQUFnQnpFLE1BQU1nRixTQUFTLEtBQ2pDTixFQUFTTyxjQUFjSixFQUFnQixDQUFDLENBQUM7QUFBQSxNQUc5QztBQUFBLE1BQ0RLLDBCQUEwQkMsR0FBRztBQUMzQixjQUFNO0FBQUEsVUFBRUMsU0FBQUE7QUFBQUEsUUFBUyxJQUFHRCxFQUFJRTtBQUN4QixpQkFBU0MsRUFBcUJDLEdBQXFCO0FBQ2pELGdCQUFNWCxJQUFjTyxFQUFJUixhQUNsQlosSUFBT29CLEVBQUlLO0FBQ2pCLGNBQUlDLElBQVFiO0FBQ1osVUFBS2MsRUFBV2QsQ0FBTSxNQUNwQmEsSUFBU3hELENBQUFBLE1BQ0FBLEVBQUsyQyxDQUFNO0FBR3RCLGdCQUFNZSxJQUFhNUIsRUFBSzZCLElBQUlILENBQUssR0FFM0JoQixJQUFrQlUsRUFBSVYsMkJBQTJCb0IsV0FBV1YsRUFBSVYsZ0JBQWUsSUFBS1UsRUFBSVY7QUFDOUYsVUFBS0EsRUFBZ0J6RSxVQUNuQnlFLEVBQWdCekUsUUFBUTtBQUUxQixnQkFBTThGLElBQW9CckIsRUFBZ0J6RSxNQUFNK0YsT0FBUTlELENBQUFBLE1BQWMsQ0FBQzBELEVBQVdLLFNBQVMvRCxDQUFJLENBQUM7QUFDaEcsaUJBQU9nRSxFQUFNSCxHQUFtQlAsQ0FBYztBQUFBLFFBQ2hEO0FBRUEsWUFBSUosRUFBSXhFO0FBU04saUJBQU87QUFBQSxZQUNMbUQsT0FBTztBQUFBLGNBQ0xvQyxtQkFWc0JBLENBQUNDLElBQXFCLE9BQU07QUFDcEQsc0JBQU12QixJQUFTTyxFQUFJUjtBQUNuQixvQkFBSXlCLElBQWVELEVBQVlQLElBQUszRCxDQUFBQSxNQUFjQSxFQUFLMkMsQ0FBTSxDQUFDO0FBQzlELGdCQUFJTyxFQUFJa0IsY0FDTkQsSUFBZWQsRUFBcUJjLENBQVksSUFFbERqQixFQUFJbUIsc0JBQXNCRixDQUFZO0FBQUE7WUFLckM7QUFBQSxZQUNERyxTQUFTO0FBQUEsY0FDUEMsVUFBVTtBQUFBLGdCQUNSakYsTUFBTTtBQUFBLGtCQUFFa0YsTUFBTTtBQUFBLGdCQUFPO0FBQUEsZ0JBQ3JCQyxRQUFRO0FBQUEsa0JBQ043TCxNQUFNO0FBQUEsa0JBQ044TCxPQUFPO0FBQUEsa0JBQ1A1SyxPQUFPO0FBQUEsa0JBQ1A2SyxPQUFPO0FBQUEsa0JBQ1BDLGtCQUFrQjFCLEVBQUlrQjtBQUFBQSxrQkFDdEJTLG1CQUFtQjtBQUFBO0FBQUEsZ0JBQ3BCO0FBQUEsY0FDRjtBQUFBLFlBQ0Y7QUFBQTtBQUVFO0FBRUwsZ0JBQU10RCxJQUFtQnVELENBQUFBLE1BQWdCO0FBQ3ZDLGdCQUFJQSxLQUFXLE1BQU07QUFDbkI1QixjQUFBQSxFQUFJbUIsc0JBQXNCLENBQUEsQ0FBRTtBQUM1QjtBQUFBLFlBQ0Q7QUFDRCxrQkFBTTFCLElBQVNPLEVBQUlSLGFBQ2J5QixJQUFlLENBQUNXLEVBQVFuQyxDQUFNLENBQUM7QUFDckNPLFlBQUFBLEVBQUltQixzQkFBc0JGLENBQVk7QUFBQSxhQUVsQzNCLElBQWtCVSxFQUFJViwyQkFBMkJvQixXQUFXVixFQUFJVixnQkFBZSxJQUFLVSxFQUFJVixpQkFDeEYzSixJQUFha00sRUFBUyxNQUNuQnZDLEVBQWdCekUsTUFBTWdGLFNBQVMsSUFBSVAsRUFBZ0J6RSxNQUFNLENBQUMsSUFBSSxJQUN0RTtBQUNELGlCQUFPO0FBQUEsWUFDTDhELE9BQU87QUFBQSxjQUNMbUQscUJBQXFCO0FBQUEsY0FDckJ6RCxpQkFBaUJBO0FBQUFBLFlBQ2xCO0FBQUEsWUFDRCtDLFNBQVM7QUFBQSxjQUNQVyxXQUFXO0FBQUEsZ0JBQ1QzRixNQUFNO0FBQUEsa0JBQUVrRixNQUFNO0FBQUEsZ0JBQU87QUFBQSxnQkFDckJDLFFBQVE7QUFBQSxrQkFDTkMsT0FBTztBQUFBLGtCQUNQNUssT0FBTztBQUFBLGtCQUNQNkssT0FBTztBQUFBLGtCQUNQTyxXQUFXO0FBQUEsb0JBQ1Q3TCxNQUFNO0FBQUEsb0JBQ05nRixPQUFPOEUsRUFBU2dDLENBQUFBLE1BQVk7QUFDMUIsMEJBQUlBLEVBQUk3RjtBQUNOLCtCQUFPNkYsRUFBSTdGLEtBQUs0RCxFQUFJUixVQUFXLENBQUE7QUFBQSxvQkFFbkMsQ0FBQztBQUFBLG9CQUNEdEYsT0FBTztBQUFBLHNCQUNMdkUsWUFBWUE7QUFBQUEsb0JBQ2I7QUFBQSxvQkFDRHlFLE9BQU87QUFBQSxzQkFDTDhILFVBQU87QUFDTCwrQkFBTztBQUFBLHNCQUNUO0FBQUEsb0JBQ0Q7QUFBQSxrQkFDRjtBQUFBLGtCQUNEQyxtQkFBbUI7QUFBQSxvQkFDakJDLFFBQUs7QUFDSCw2QkFBTztBQUFBLG9CQUNUO0FBQUEsa0JBQ0Q7QUFBQSxnQkFDRjtBQUFBLGNBQ0Y7QUFBQSxZQUNGO0FBQUE7UUFFSjtBQUFBLE1BQ0Y7QUFBQSxNQUNEQyxvQkFBcUJDLENBQUFBLE1BQ1pBO0FBQUFBLE1BRVRDLFNBQVN2QyxHQUFtQjs7QUFDMUJBLFNBQUFBLEtBQUFBLElBQUFBLEVBQUlULGFBQUpTLGdCQUFBQSxFQUFjbkYsVUFBZG1GLFFBQUFBLEVBQXFCd0MsYUFBYXhDLEVBQUl5QztBQUFBQSxNQUN2QztBQUFBLE1BQ0QzSCxTQUFTO0FBQUEsUUFBRTRILGNBQUFBO0FBQUFBLFFBQWNDLGdCQUFBQTtBQUFBQSxRQUFnQkMsVUFBQUE7QUFBQUEsTUFBVSxHQUFBO0FBQ2pELGVBQU87QUFBQSxVQUNMRixjQUFlVCxDQUFBQSxNQUFZO0FBQ3pCLGtCQUFNO0FBQUEsY0FBRVYsUUFBQUE7QUFBQUEsY0FBUXRFLE1BQUFBO0FBQUFBLGNBQU13RSxPQUFBQTtBQUFBQSxZQUFPLElBQUdRO0FBQ2hDLFlBQUlTLEtBQ0ZBLEVBQWE7QUFBQSxjQUNYRyxjQUFjNUYsS0FBUXNFLEVBQU91QixhQUFhO0FBQUEsY0FDMUM3RixNQUFBQTtBQUFBQSxjQUNBd0UsT0FBQUE7QUFBQUEsY0FDQXNCLEtBQUt0QixNQUFVO0FBQUEsWUFDaEIsQ0FBQSxHQUdIbUIsRUFBVUksQ0FBQUEsTUFBZTtBQUN2QixjQUFJQSxFQUFPTixnQkFDVE0sRUFBT04sYUFBYVQsQ0FBRztBQUFBLFlBRTNCLENBQUM7QUFBQSxVQUNGO0FBQUEsVUFDRFUsZ0JBQWlCTSxDQUFBQSxNQUFnQjtBQUMvQk4sWUFBQUEsRUFBZU0sQ0FBTyxHQUN0QkwsRUFBVUksQ0FBQUEsTUFBZTtBQUN2QixjQUFJQSxFQUFPTCxrQkFDVEssRUFBT0wsZUFBZU0sQ0FBTztBQUFBLFlBRWpDLENBQUM7QUFBQSxVQUNIO0FBQUE7TUFFSjtBQUFBLElBQ0QsQ0FBQSxHQUVELEtBQWFDLGdCQUFrQjdOLEVBQXVCO0FBQUEsTUFDcERjLE1BQU07QUFBQSxNQUNOZ0YsT0FBTztBQUFBLE1BQ1A4QixNQUFNO0FBQUEsTUFDTjFDLEtBQUs7QUFBQSxNQUNMa0UsT0FBTztBQUFBLElBQ1IsQ0FBQSxHQUVELEtBQWtCMEUscUJBQWtCOU4sRUFBdUI7QUFBQSxNQUN6RGMsTUFBTTtBQUFBLE1BQ05nRixPQUFPO0FBQUEsTUFDUDhCLE1BQU07QUFBQSxNQUNOMUMsS0FBSztBQUFBLE1BQ0xrRSxPQUFPO0FBQUEsSUFDUixDQUFBLEdBRUQsS0FBTzJFLFVBQVkvTixFQUFpQjtBQUFBLE1BQ2xDYyxNQUFNO0FBQUEsTUFDTnlJLE1BQU07QUFBQSxNQUNOQyxZQUFZO0FBQUEsTUFDWkMsZUFBZTtBQUFBLE1BQ2ZDLGtDQUFrQztBQUFBLE1BQ2xDc0UsY0FBYztBQUFBLE1BQ2RDLGVBQWU7QUFBQTtBQUFBLE1BRWZDLHNCQUFzQnhKLEdBQUk7QUFDeEIsY0FBTXlKLElBQWN6SixFQUFLeUo7QUFDTHpKLFFBQUFBLEVBQUswSjtBQUV6QixpQkFBU0MsRUFBY3RDLEdBQWN1QyxJQUFPLEdBQUM7QUFDM0MsY0FBSUMsSUFBVTtBQUNkLHFCQUFXckMsS0FBVUg7QUFDbkIsZ0JBQUlHLEVBQU9zQyxXQUFXO0FBQ3BCRCxjQUFBQSxJQUFVRSxLQUFLQyxJQUFJSCxHQUFTRCxDQUFJO0FBQUEsaUJBQzNCO0FBQ0wsb0JBQU1LLElBQU1OLEVBQWMsQ0FBQ25DLEVBQU9zQyxPQUFPLEdBQUdGLElBQU8sQ0FBQztBQUNwREMsY0FBQUEsSUFBVUUsS0FBS0MsSUFBSUgsR0FBU0ksQ0FBRztBQUFBLFlBQ2hDO0FBRUgsaUJBQU9KO0FBQUFBLFFBQ1Q7QUFFQSxZQUFJSyxJQUFhO0FBQ2pCLGNBQU1MLElBQVVGLEVBQWNGLENBQVc7QUFDekMsUUFBSUksSUFBVSxNQUNaSyxJQUFhQSxLQUFjTCxJQUFVLEtBQUssSUFDMUNLLElBQWFILEtBQUtDLElBQUksSUFBSUUsQ0FBVTtBQUV0QyxjQUFNaEYsSUFBWTJFLElBQVVLO0FBYTVCLGlCQUFTQyxFQUFTQyxHQUFjO0FBQzlCLGdCQUFNQyxJQUFlLENBQUE7QUFDckIscUJBQVc5SixLQUFPNko7QUFDaEIsWUFBSTdKLEVBQUlxQixZQUFZckIsRUFBSXFCLFNBQVNrRSxTQUFTLElBQ3hDdUUsRUFBTXpFLEtBQUssR0FBR3VFLEVBQVM1SixFQUFJcUIsUUFBUSxDQUFDLElBRXBDeUksRUFBTXpFLEtBQUtyRixDQUFHO0FBR2xCLGlCQUFPOEo7QUFBQUEsUUFDVDtBQUVBLGlCQUFTQyxFQUFlRixHQUFjO0FBQ3BDLGdCQUFNQyxJQUFRRixFQUFTQyxDQUFPO0FBQzlCLGNBQUl2TixJQUFRO0FBQ1oscUJBQVcwTixLQUFRRjtBQUNqQnhOLFlBQUFBLEtBQVMwTixFQUFLMU47QUFFaEIsaUJBQU9BO0FBQUFBLFFBQ1Q7QUFFQSxlQUFPO0FBQUEsVUFDTDJOLE1BQU07QUFBQSxZQUNKQyxjQUFjdkY7QUFBQUEsVUFDZjtBQUFBLFVBQ0Q3RSxPQUFPO0FBQUEsWUFDTHFLLFFBQVFBLENBQUM7QUFBQSxjQUFFQyxPQUFBQTtBQUFBQSxjQUFPdEQsU0FBQUE7QUFBQUEsY0FBU3VELGFBQUFBO0FBQUFBLFlBQWtCLE1BQUk7QUFFL0Msb0JBQU1DLElBQW9CLENBQUE7QUFDMUJ4RCxjQUFBQSxFQUFRdkUsUUFBUSxDQUFDMEUsR0FBYTlDLE1BQWlCO0FBQzdDbUcsZ0JBQUFBLEVBQWFyRCxFQUFPeEUsR0FBRyxJQUFJO0FBQUEsa0JBQ3pCd0UsUUFBQUE7QUFBQUEsa0JBQ0E5QyxPQUFBQTtBQUFBQTtjQUVKLENBQUM7QUFFRCxvQkFBTW9HLElBQWtCLENBQUEsR0FDbEJDLElBQW9CLENBQUE7QUFDMUIsdUJBQVNDLEVBQWN0QixHQUFvQkUsR0FBWTtBQUNyRCxzQkFBTWtCLElBQWEsQ0FBQTtBQUNuQiwyQkFBV3ZLLEtBQU9tSjtBQUVoQixzQkFBSSxDQUFDbkosRUFBSXFCLFlBQVlyQixFQUFJcUIsU0FBU2tFLFVBQVU7QUFDMUNnRixvQkFBQUEsRUFBV2xGLEtBQUlxRixFQUFBLE9BQUE7QUFBQSxzQkFBQSxPQUFBO0FBQUEsc0JBQUEsT0FHSjtBQUFBLHdCQUFFcE8sT0FBTzBELEVBQUkxRCxRQUFRO0FBQUEsd0JBQU1xTyxRQUFRaEIsSUFBYU4sSUFBTztBQUFBLHdCQUFNdUIsZ0JBQWdCNUssRUFBSWtIO0FBQUFBLHNCQUFLO0FBQUEsb0JBQUUsR0FBQSxDQUU5RmxILEVBQUlILEtBQUssQ0FBQSxDQUNOLEdBRVIySyxFQUFhbkYsS0FBS3JGLEVBQUl5QyxHQUFHO0FBQUEsdUJBQ3BCO0FBRUwsMEJBQU1uRyxJQUFReU4sRUFBZS9KLEVBQUlxQixRQUFRO0FBQ3pDa0osb0JBQUFBLEVBQVdsRixLQUFJcUYsRUFBQSxPQUFBO0FBQUEsc0JBQUEsT0FBQTtBQUFBLG9CQUFBLEdBQUEsQ0FBQUEsRUFBQSxPQUFBO0FBQUEsc0JBQUEsT0FBQTtBQUFBLHNCQUFBLE9BSUY7QUFBQSx3QkFBRXBPLE9BQU9BLElBQVE7QUFBQSx3QkFBTXFPLFFBQVFoQixJQUFhO0FBQUEsd0JBQU1pQixnQkFBZ0I1SyxFQUFJa0g7QUFBQUEsc0JBQUs7QUFBQSxvQkFBRSxHQUFBLENBRW5GbEgsRUFBSUgsS0FBSyxDQUFBLEdBQUE2SyxFQUFBLE9BQUE7QUFBQSxzQkFBQSxPQUVBO0FBQUEsdUJBQXVCRCxDQUFBQSxFQUFjekssRUFBSXFCLFVBQVVnSSxJQUFPLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQSxDQUNwRTtBQUFBLGtCQUVUO0FBRUgsdUJBQU9rQjtBQUFBQSxjQUNUO0FBRUEsdUJBQVNNLEVBQWM1RCxHQUFhb0MsSUFBTyxHQUFDO0FBQzFDLHVCQUFJcEMsRUFBT3NDLFdBQ1RGLElBQU9BLElBQU8sR0FDUHdCLEVBQWM1RCxFQUFPc0MsU0FBU0YsQ0FBSSxLQUVwQztBQUFBLGtCQUNMeUIsUUFBUTdEO0FBQUFBLGtCQUNSb0MsTUFBQUE7QUFBQUE7Y0FFSjtBQUNBdkMscUJBQUFBLEVBQVF2RSxRQUFRLENBQUMwRSxHQUFhOUMsTUFBaUI7QUFDN0MscUJBQUk4QyxLQUFBQSxnQkFBQUEsRUFBUThELHFCQUFvQkMsR0FBb0I7QUFDbERULGtCQUFBQSxFQUFXbEYsS0FBSytFLEVBQU1qRyxDQUFLLENBQUM7QUFDNUI7QUFBQSxnQkFDRDtBQUVELG9CQUFJcUcsQ0FBQUEsRUFBYWpFLFNBQVNVLEVBQU94RSxHQUFHO0FBSXBDLHNCQUFJd0UsRUFBT3NDLFNBQVM7QUFDbEIsMEJBQU07QUFBQSxzQkFBRXVCLFFBQUFBO0FBQUFBLHNCQUFRekIsTUFBQUE7QUFBQUEsb0JBQUksSUFBS3dCLEVBQWM1RCxDQUFNLEdBRXZDZ0UsSUFBYVIsRUFBYyxDQUFDSyxDQUFNLEdBQUd4QixDQUFPO0FBQ2xEaUIsb0JBQUFBLEVBQVdsRixLQUFLLEdBQUc0RixDQUFVO0FBQUEsa0JBQzlCO0FBV0NWLG9CQUFBQSxFQUFXbEYsS0FBSytFLEVBQU1qRyxDQUFLLENBQUM7QUFBQSxjQUVoQyxDQUFDLEdBRU1vRztBQUFBQSxZQUNUO0FBQUEsVUFDRDtBQUFBO01BRUo7QUFBQSxNQUNEeEMsb0JBQXFCQyxDQUFBQSxPQVdaO0FBQUEsUUFBRSxHQUFHQTtBQUFBQSxRQUFPN0QsT0FBTzZELEVBQU1rRDtBQUFBQSxRQUFVakwsS0FBSytILEVBQU1tRDtBQUFBQTtNQUV2RHpHLGdCQUFpQkMsQ0FBQUEsT0FDUjtBQUFBLFFBQUVBLFdBQUFBO0FBQUFBO01BRVhDLGNBQWV4RCxDQUFBQSxNQUNOO0FBQUEsTUFFVHlELG1CQUFtQjtBQUFBLE1BQ25CQyxVQUFVO0FBQUE7QUFBQSxNQUVWQyxnQkFBZ0I7QUFBQSxRQUFFN0QsVUFBQUE7QUFBQUEsUUFBVThELGlCQUFBQTtBQUFBQSxRQUFpQkMsVUFBQUE7QUFBQUEsUUFBVUMsV0FBQUE7QUFBQUEsTUFBVyxHQUFBO0FBQ2hFLGNBQU1DLElBQWNELEtBQ2RFLElBQWtCLENBQUE7QUFDeEIsbUJBQVczQyxLQUFPdUMsRUFBZ0J6RTtBQUNoQyxxQkFBV04sS0FBT2dGLEVBQVNYO0FBQ3pCLFlBQUlyRSxFQUFJa0YsQ0FBTSxNQUFNMUMsS0FDbEIyQyxFQUFnQkMsS0FBS3BGLENBQUc7QUFJOUIsWUFBSWlCO0FBQ0YscUJBQVdqQixLQUFPbUY7QUFDaEJILFlBQUFBLEVBQVNLLG1CQUFtQnJGLEdBQUssRUFBSTtBQUFBO0FBR3ZDLFVBQUkrRSxFQUFnQnpFLE1BQU1nRixTQUFTLEtBQ2pDTixFQUFTTyxjQUFjSixFQUFnQixDQUFDLENBQUM7QUFBQSxNQUc5QztBQUFBLE1BQ0RLLDBCQUEwQkMsR0FBRztBQUMzQixjQUFNZSxJQUFvQkEsQ0FBQ2EsSUFBZSxPQUFNO0FBQzlDNUIsVUFBQUEsRUFBSW1CLHNCQUFzQlMsQ0FBTztBQUFBO0FBR1A4RCxlQUFBQSxFQUFNMUYsQ0FBRyxHQUM5QjtBQUFBLFVBQ0xyQixPQUFPO0FBQUE7QUFBQTtBQUFBLFVBR047QUFBQSxVQUNEeUMsU0FBUztBQUFBLFlBQ1BDLFVBQVU7QUFBQSxjQUNSakYsTUFBTTtBQUFBLGdCQUFFa0YsTUFBTTtBQUFBLGNBQU87QUFBQSxjQUNyQkMsUUFBUTtBQUFBLGdCQUNOL0YsVUFBVSxDQUFDLENBQUN3RSxFQUFJeEU7QUFBQUEsZ0JBQ2hCZ0csT0FBTztBQUFBLGdCQUNQNUssT0FBTztBQUFBLGdCQUNQNkssT0FBTztBQUFBLGdCQUNQa0UsT0FBTzNGLEVBQUk0RjtBQUFBQSxnQkFDWGpFLG1CQUFtQjtBQUFBLGdCQUNuQmtFLGNBQWNBLENBQUM7QUFBQSxrQkFBRUosU0FBQUE7QUFBQUEsZ0JBQU8sTUFBVztBQUNqQyx3QkFBTW5HLElBQ0pVLEVBQUlWLDJCQUEyQm9CLFdBQVdWLEVBQUlWLGdCQUFlLElBQUtVLEVBQUlWO0FBQ3hFLGtCQUFLQSxFQUFnQnpFLFVBQ25CeUUsRUFBZ0J6RSxRQUFRO0FBRTFCLHdCQUFNQyxJQUFZRCxDQUFBQSxNQUE0QjtBQUM1QyxvQkFBSUEsSUFFRnlFLEVBQWdCekUsTUFBTThFLEtBQUs4RixFQUFRekYsRUFBSVIsVUFBVyxDQUFBLENBQUMsSUFHbkRGLEVBQWdCekUsUUFBUXlFLEVBQWdCekUsTUFBTStGLE9BQzNDN0QsQ0FBQUEsTUFBYUEsTUFBUTBJLEVBQVF6RixFQUFJUixVQUFTLENBQUUsQ0FBQyxHQUlsRHVCLEVBQWtCekIsRUFBZ0J6RSxLQUFLO0FBQUEscUJBR25DaUwsSUFBVXhHLEVBQWdCekUsTUFBTWdHLFNBQVM0RSxFQUFRekYsRUFBSVIsVUFBVyxDQUFBLENBQUM7QUFHdkUseUJBQUF3RixFQUFBZSxFQUFBLFlBQUEsR0FBQTtBQUFBLG9CQUFBLFVBQTZCakw7QUFBQUEsb0JBQVEsWUFBY2dMO0FBQUFBLGtCQUFPLEdBQUEsSUFBQTtBQUFBLGdCQUMzRDtBQUFBLGdCQUVERSxvQkFBcUIvRCxDQUFBQSxNQUFZO0FBQy9CLHdCQUFNZ0UsSUFBUWpHLEVBQUlLLFlBQVcsS0FBTSxDQUFBLEdBQzdCZixJQUNKVSxFQUFJViwyQkFBMkJvQixXQUFXVixFQUFJVixnQkFBZSxJQUFLVSxFQUFJVixpQkFDbEV4RSxJQUFZRCxDQUFBQSxNQUE0QjtBQUM1QyxvQkFBSUEsSUFFRnlFLEVBQWdCekUsUUFBUW9MLEVBQU14RixJQUFLbEcsQ0FBQUEsTUFBUUEsRUFBSXlGLEVBQUlSLFVBQVcsQ0FBQSxDQUFDLElBRy9ERixFQUFnQnpFLFFBQVE7cUJBSXRCcUwsSUFDSkQsRUFBTXBHLFNBQVMsS0FBS29HLEVBQU1FLE1BQU81TCxDQUFBQSxNQUFRK0UsRUFBZ0J6RSxNQUFNZ0csU0FBU3RHLEVBQUl5RixFQUFJUixVQUFTLENBQUUsQ0FBQyxDQUFDLEdBQ3pGNEcsSUFBa0JILEVBQU1JLEtBQU05TCxDQUFBQSxNQUFRK0UsRUFBZ0J6RSxNQUFNZ0csU0FBU3RHLEVBQUl5RixFQUFJUixVQUFXLENBQUEsQ0FBQyxDQUFDO0FBRWhHLHlCQUFBd0YsRUFBQWUsRUFBQSxhQUFBLEdBQUE7QUFBQSxvQkFBQSxVQUVjakw7QUFBQUEsb0JBQVEsWUFDTm9MO0FBQUFBLG9CQUFXLGVBQ1JFLEtBQW1CLENBQUNGO0FBQUFBLGtCQUFXLEdBQUEsSUFBQTtBQUFBLGdCQUdwRDtBQUFBLGNBQ0Q7QUFBQSxZQUNGO0FBQUEsVUFDRjtBQUFBO01BRUo7QUFBQSxNQUNEM0QsU0FBU3ZDLEdBQW1COztBQUMxQkEsU0FBQUEsS0FBQUEsSUFBQUEsRUFBSVQsYUFBSlMsZ0JBQUFBLEVBQWNuRixVQUFkbUYsUUFBQUEsRUFBcUJzRyxZQUFZdEcsRUFBSXlDO0FBQUFBLE1BQ3RDO0FBQUEsTUFDRDNILFNBQVM7QUFBQSxRQUFFNEgsY0FBQUE7QUFBQUEsUUFBY0MsZ0JBQUFBO0FBQUFBLFFBQWdCQyxVQUFBQTtBQUFBQSxNQUFVLEdBQUE7QUFDakQsZUFBTztBQUFBLFVBQ0xGLGNBQWVULENBQUFBLE1BQVk7QUFDekIsa0JBQU07QUFBQSxjQUFFVixRQUFBQTtBQUFBQSxjQUFRdEUsTUFBQUE7QUFBQUEsY0FBTXdFLE9BQUFBO0FBQUFBLFlBQU8sSUFBR1E7QUFDaEMsWUFBSVMsS0FDRkEsRUFBYTtBQUFBLGNBQ1hHLGNBQWM1RixLQUFRc0UsRUFBT3VCLGFBQWE7QUFBQSxjQUMxQzdGLE1BQUFBO0FBQUFBLGNBQ0F3RSxPQUFBQTtBQUFBQSxjQUNBc0IsS0FBS3RCLE1BQVU7QUFBQSxZQUNoQixDQUFBLEdBR0htQixFQUFVSSxDQUFBQSxNQUFlO0FBQ3ZCLGNBQUlBLEVBQU9OLGdCQUNUTSxFQUFPTixhQUFhVCxDQUFHO0FBQUEsWUFFM0IsQ0FBQztBQUFBLFVBQ0Y7QUFBQSxVQUNEVSxnQkFBaUJNLENBQUFBLE1BQWdCO0FBQy9CTixZQUFBQSxFQUFlTSxDQUFPLEdBQ3RCTCxFQUFVSSxDQUFBQSxNQUFlO0FBQ3ZCLGNBQUlBLEVBQU9MLGtCQUNUSyxFQUFPTCxlQUFlTSxDQUFPO0FBQUEsWUFFakMsQ0FBQztBQUFBLFVBQ0g7QUFBQTtNQUVKO0FBQUEsSUFDRCxDQUFBLEdBRUQsS0FBUXNELFdBQWVsUixFQUFvQjtBQUFBLE1BQ3pDYyxNQUFNO0FBQUEsTUFDTlQsTUFBTTtBQUFBLE1BQ05DLFlBQVk7QUFBQSxNQUNaMEYsV0FBVztBQUFBLElBQ1osQ0FBQSxHQUVELEtBQUdtTCxNQUFVblIsRUFBZTtBQUFBLE1BQzFCYyxNQUFNO0FBQUEsTUFDTlQsTUFBTTtBQUFBLE1BQ05tSSxRQUFRLENBQUMsUUFBUSxXQUFXLFdBQVcsUUFBUTtBQUFBLElBQ2hELENBQUEsR0FFRCxLQUFVNEksYUFBaUJwUixFQUFzQjtBQUFBLE1BQy9DYyxNQUFNO0FBQUEsSUFDUCxDQUFBLEdBQ0QsS0FBS3VRLFFBQVlyUixFQUFpQjtBQUFBLE1BQ2hDYyxNQUFNO0FBQUEsTUFDTmtGLFdBQVc7QUFBQSxNQUNYMUYsWUFBWTtBQUFBLElBQ2IsQ0FBQSxHQUNELEtBQWFnUixnQkFBb0J0UixFQUF5QjtBQUFBLE1BQ3hEYyxNQUFNO0FBQUEsTUFDTmtGLFdBQVc7QUFBQSxNQUNYMUYsWUFBWTtBQUFBLE1BQ1ppUixjQUFjO0FBQUEsUUFBRUMsY0FBYztBQUFBLE1BQU07QUFBQSxJQUNyQyxDQUFBLEdBQ0QsS0FBTUMsU0FBa0J6UixFQUF1QjtBQUFBLE1BQzdDYyxNQUFNO0FBQUEsTUFDTlIsWUFBWTtBQUFBLE1BQ1pzRSxRQUFRRixHQUFJO0FBQ1YsZUFBTzNFLEVBQWEsTUFBTTJFLEdBQU0sQ0FBRSxDQUFBO0FBQUEsTUFDcEM7QUFBQSxJQUNELENBQUEsR0FDRCxLQUFVZ04sYUFBaUIxUixFQUFzQjtBQUFBLE1BQy9DYyxNQUFNO0FBQUEsTUFDTlIsWUFBWTtBQUFBLE1BQ1pxUixjQUFjdFIsR0FBSTtBQUNoQixlQUFPO0FBQUEsVUFBRVMsTUFBTTtBQUFBLFVBQWtCVCxNQUFBQTtBQUFBQTtNQUNuQztBQUFBLElBQ0QsQ0FBQSxHQUNELEtBQVV1UixhQUFpQjVSLEVBQXNCO0FBQUEsTUFDL0NjLE1BQU07QUFBQSxNQUNOUixZQUFZO0FBQUEsSUFDYixDQUFBLEdBQ0QsS0FBUXVSLFdBQWU3UixFQUFvQjtBQUFBLE1BQ3pDYyxNQUFNO0FBQUEsTUFDTmdSLFFBQVFwTSxHQUFRO0FBQ2QsZUFBTztBQUFBLFVBQ0xxTSxVQUFVQyxHQUFXO0FBQ25CdE0sWUFBQUEsRUFBU3NNLENBQU07QUFBQSxVQUNqQjtBQUFBO01BRUg7QUFBQSxNQUNEQyxVQUFVO0FBQUEsTUFDVnpJLFlBQVk7QUFBQSxJQUNiLENBQUEsR0FDRCxLQUFZMEksZUFBbUJsUyxFQUF3QjtBQUFBLE1BQ3JEYyxNQUFNO0FBQUEsTUFDTmdSLFNBQVNBLE9BQ0E7SUFFVixDQUFBLEdBQ0QsS0FBWUssZUFBbUJuUyxFQUF3QjtBQUFBLE1BQ3JEYyxNQUFNO0FBQUEsTUFDTmdSLFNBQVM7QUFBQSxJQUNWLENBQUEsR0FFRCxLQUFVTSxhQUFpQnBTLEVBQXNCO0FBQUEsTUFDL0NjLE1BQU07QUFBQSxJQUNQLENBQUEsR0FDRCxLQUFLdVIsUUFBWXJTLEVBQWlCO0FBQUEsTUFDaENjLE1BQU07QUFBQSxNQUNOd1Isa0JBQWtCQSxDQUFDO0FBQUEsUUFBRUMsS0FBQUE7QUFBQUEsUUFBS0MsTUFBQUE7QUFBQUEsUUFBTUMsWUFBQUE7QUFBQUEsUUFBWUMsYUFBQUE7QUFBQUEsUUFBYXRKLE9BQUFBO0FBQUFBLE1BQUssT0FDckQ7QUFBQSxRQUFFLG9CQUFvQnNKO0FBQUFBLFFBQWEsaUJBQWlCdEo7QUFBQUE7TUFFN0R1SixVQUFVO0FBQUEsSUFDWCxDQUFBLEdBQ0QsS0FBUUMsV0FBZTVTLEVBQW9CO0FBQUEsTUFDekNjLE1BQU07QUFBQSxJQUNQLENBQUEsR0FDRCxLQUFPK1IsVUFBYzdTLEVBQW1CO0FBQUEsTUFDdENjLE1BQU07QUFBQSxNQUNOVCxNQUFNO0FBQUEsSUFDUCxDQUFBLEdBQ0QsS0FBTTJELFNBQWFoRSxFQUFrQjtBQUFBLE1BQ25DOFMsSUFBSTtBQUFBLE1BQ0poUyxNQUFNO0FBQUEsTUFDTlQsTUFBTTtBQUFBLE1BQ04wUyxlQUFlO0FBQUEsTUFDZkMsV0FBVztBQUFBLE1BQ1hDLG1CQUFtQmhLLEdBQUs7QUFDdEIsZUFBT0EsS0FBQUEsZ0JBQUFBLEVBQU9pSztBQUFBQSxNQUNmO0FBQUEsTUFDREMscUJBQXFCQyxHQUFlQyxHQUFXQyxHQUFhO0FBQzFELGVBQU9BO0FBQUFBLE1BQ1I7QUFBQSxNQUNESixRQUFRO0FBQUEsUUFDTmpSLFNBQVM7QUFBQSxRQUNUc1IsV0FBVztBQUFBLE1BQ1o7QUFBQSxNQUNEQyxVQUFVQyxHQUFRO0FBQ2hCLGVBQU9BLEVBQVNQLFdBQVc7QUFBQSxNQUM1QjtBQUFBLE1BQ0RRLFVBQVU7QUFBQSxJQUNYLENBQUEsR0FDRCxLQUFJQyxPQUFXM1QsRUFBZ0I7QUFBQSxNQUM3QmMsTUFBTTtBQUFBLE1BQ05SLFlBQVk7QUFBQSxNQUNac1QsV0FBVztBQUFBLElBQ1osQ0FBQSxHQUNELEtBQU9DLFVBQWM3VCxFQUFtQjtBQUFBLE1BQ3RDYyxNQUFNO0FBQUEsTUFDTjRHLEtBQUs7QUFBQSxNQUNMb00sS0FBSztBQUFBLElBQ04sQ0FBQSxHQUNELEtBQVFDLFdBQWUvVCxFQUFvQjtBQUFBLE1BQ3pDYyxNQUFNO0FBQUEsTUFDTlIsWUFBWTtBQUFBLE1BQ1owVCxTQUFTO0FBQUEsSUFDVixDQUFBLEdBQ0QsS0FBWUMsZUFBbUJqVSxFQUF3QjtBQUFBLE1BQ3JEYyxNQUFNO0FBQUEsTUFDTjRHLEtBQUs7QUFBQSxNQUNMdkcsZUFBZTtBQUFBO0FBQUE7QUFBQTtBQUFBLE1BSWYrUyxlQUFlO0FBQUEsTUFDZnRQLFFBQVFGLEdBQUk7QUFDVixlQUFPM0UsRUFBYSxNQUFNMkUsR0FBTTtBQUFBLFVBQzlCSyxPQUFPO0FBQUEsWUFDTCxDQUFDLEtBQUs1RCxhQUFhLElBQUM7QUFDbEIscUJBQUF3TyxFQUFBLE9BQUE7QUFBQSxnQkFBQSxPQUNjO0FBQUEsY0FBc0QsR0FBQSxDQUFBQSxFQUFBLFFBQUE7QUFBQSxnQkFBQSxPQUNuRDtBQUFBLGlCQUFlakwsQ0FBQUEsRUFBS3lQLGFBQVdDLFVBQUF6RSxFQUFBLFFBQUE7QUFBQSxnQkFBQSxPQUMvQjtBQUFBLGNBQWEsR0FBQSxDQUFHakwsRUFBSzJQLFdBQVcsQ0FBQSxDQUFBLENBQUE7QUFBQSxZQUduRDtBQUFBLFVBQ0Q7QUFBQSxRQUNGLENBQUE7QUFBQSxNQUNIO0FBQUEsSUFDRCxDQUFBLEdBRUQsS0FBS0MsUUFBWXRVLEVBQWlCO0FBQUEsTUFDaENjLE1BQU07QUFBQSxNQUNOMEUsT0FBTztBQUFBLE1BQ1BaLFFBQVFGLEdBQUk7QUFDVixlQUFPM0UsRUFBYSxNQUFNMkUsR0FBTTtBQUFBLFVBQzlCRyxPQUFPO0FBQUEsWUFDTCxDQUFDLEtBQUtXLEtBQUssR0FBR2QsRUFBS2M7QUFBQUEsVUFDcEI7QUFBQSxRQUNGLENBQUE7QUFBQSxNQUNIO0FBQUEsSUFDRCxDQUFBLEdBQ0QsS0FBTytPLFVBQWN2VSxFQUFtQjtBQUFBLE1BQ3RDYyxNQUFNO0FBQUEsTUFDTjBULFNBQVM7QUFBQSxNQUNUQyxTQUFTO0FBQUEsSUFDVixDQUFBLEdBQ0QsS0FBT0MsVUFBYzFVLEVBQW1CO0FBQUEsTUFDdENjLE1BQU07QUFBQSxJQUNQLENBQUEsR0FDRCxLQUFPNlQsVUFBYzNVLEVBQW1CO0FBQUEsTUFDdENjLE1BQU07QUFBQSxNQUNOOFQsaUJBQWlCO0FBQUEsTUFDakJDLGlCQUFpQjtBQUFBLE1BQ2pCN1QsU0FBUztBQUFBLElBQ1YsQ0FBQSxHQS9nQ0taLE1BQ0YsS0FBS21DLGFBQWFaLFdBQVd2QixFQUFPMFUsY0FDcEMsS0FBSzlTLFFBQVFMLFdBQVd2QixFQUFPMlUsU0FDL0IsS0FBS3JULFdBQVdDLFdBQVd2QixFQUFPNFU7QUFBQUEsRUFFdEM7QUEyZ0NEO0FDeGxDRCxNQUFNQyxJQUFZdlM7QUFDbEIsU0FBQXdTLEVBQXlCQyxHQUFRO0FBQy9CLGFBQVd6TixLQUFPdU47QUFDaEIsSUFBQUUsRUFBSSxVQUFVek4sR0FBS3VOLEVBQVV2TixDQUFHLENBQUM7QUFFckM7QUNNQSxTQUFTME4sSUFBRztBQUNKLFFBQUFDLElBQVksSUFBSW5WLEVBQVE7QUFBQSxJQUM1QixTQUFTb1Y7QUFBQSxJQUNULGNBQWNDO0FBQUEsSUFDZCxZQUFZQztBQUFBLEVBQUEsQ0FDYjtBQUNELFNBQUFDLEVBQVUsSUFBSUosQ0FBUyxHQUNoQkE7QUFDVDtBQUVBLE1BQWVqTSxJQUFBO0FBQUEsRUFDYixRQUFRK0wsR0FBVTlPLElBQTBCLElBQUU7QUFDeEMsV0FBQUEsRUFBUSxlQUFlLE1BQ3pCNk8sRUFBV0MsQ0FBRyxHQUdUQztFQUNUO0FBQUEsRUFDQSxLQUFBQTs7In0=
 |