diff --git a/Makefile b/Makefile
index a9218d16..e9e5a5ce 100644
--- a/Makefile
+++ b/Makefile
@@ -46,7 +46,7 @@ static/multi.js :: multi/main.ls multi/styles.styl
 
 depends: app.js static/ethercalc.js static/start.css static/multi.js
 
-node_modules/socialcalc/dist/SocialCalc.js: ./node_modules/streamline/bin/_node
+node_modules/socialcalc/dist/SocialCalc.js:
 	@-mkdir -p node_modules/socialcalc/dist
 	cp node_modules/socialcalc/SocialCalc.js node_modules/socialcalc/dist/SocialCalc.js || true
 
@@ -54,9 +54,10 @@ static/ethercalc.js: $(ETHERCALC_FILES) \
      ./node_modules/socialcalc/dist/SocialCalc.js \
      ./node_modules/uglify-js/bin/uglifyjs
 	@-mkdir -p .git
-	@echo '// Auto-generated from "make depends"; ALL CHANGES HERE WILL BE LOST!' > $@
-	node node_modules/uglify-js/bin/uglifyjs node_modules/socialcalc/dist/SocialCalc.js $(ETHERCALC_FILES) $(UGLIFYJS_ARGS) --source-map ethercalc.js.map --source-map-include-sources >> $@
-	mv ethercalc.js.map static
+	@echo '// Auto-generated from "make depends"; ALL CHANGES HERE WILL BE LOST!' > ethercalc.js.tmp
+	node node_modules/uglify-js/bin/uglifyjs node_modules/socialcalc/dist/SocialCalc.js $(ETHERCALC_FILES) $(UGLIFYJS_ARGS) --source-map --output ethercalc.js.tmp
+	mv ethercalc.js.tmp $@
+	mv ethercalc.js.tmp.map static/ethercalc.js.map
 
 COFFEE := $(shell command -v coffee 2> /dev/null)
 .coffee.js:
diff --git a/package-lock.json b/package-lock.json
index 69992b8b..05a895db 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,8 +1,5953 @@
 {
   "name": "ethercalc",
-  "version": "0.20201228.0",
-  "lockfileVersion": 1,
+  "version": "0.20201228.1",
+  "lockfileVersion": 2,
   "requires": true,
+  "packages": {
+    "": {
+      "name": "ethercalc",
+      "version": "0.20201228.1",
+      "dependencies": {
+        "cors": "*",
+        "csv-parse": "^0.0.6",
+        "iconv-lite": "^0.4.13",
+        "j": "0.4.5",
+        "livescript": "1.5.x",
+        "minimatch": "*",
+        "optimist": "*",
+        "redis": "0.12.x",
+        "socialcalc": "^2.3.0",
+        "uuid-pure": "*",
+        "xlsx": "^0.14.5",
+        "xoauth2": "*",
+        "zappajs": "0.5.x"
+      },
+      "bin": {
+        "ethercalc": "bin/ethercalc"
+      },
+      "devDependencies": {
+        "css-loader": "^0.9.0",
+        "livescript-loader": "^0.1.5",
+        "react": "^0.12.1",
+        "react-basic-tabs": "^1.0.3",
+        "react-hot-loader": "^0.5.0",
+        "style-loader": "^0.8.2",
+        "stylus-loader": "^3.0.2",
+        "superagent": "^0.21.0",
+        "uglify-js": "^3.15.3",
+        "webpack": "^1.4.13",
+        "webpack-dev-server": "^1.6.6"
+      },
+      "engines": {
+        "node": ">= 0.8.x"
+      }
+    },
+    "node_modules/accepts": {
+      "version": "1.0.7",
+      "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.0.7.tgz",
+      "integrity": "sha1-W1AftPBwQwmWTM2wSBclQSCNqxo=",
+      "dependencies": {
+        "mime-types": "~1.0.0",
+        "negotiator": "0.4.7"
+      },
+      "engines": {
+        "node": ">= 0.8.0"
+      }
+    },
+    "node_modules/accepts/node_modules/mime-types": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-1.0.2.tgz",
+      "integrity": "sha1-mVrhOSq4r/y/yyZB3QVOlDwNXc4=",
+      "engines": {
+        "node": ">= 0.8.0"
+      }
+    },
+    "node_modules/acorn": {
+      "version": "5.7.4",
+      "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.4.tgz",
+      "integrity": "sha512-1D++VG7BhrtvQpNbBzovKNc1FLGGEE/oGe7b9xJm/RFHMBeUaUGpluV9RLjZa47YFdPcDAenEYuq9pQPcMdLJg==",
+      "dev": true,
+      "bin": {
+        "acorn": "bin/acorn"
+      },
+      "engines": {
+        "node": ">=0.4.0"
+      }
+    },
+    "node_modules/adler-32": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/adler-32/-/adler-32-1.2.0.tgz",
+      "integrity": "sha1-aj5r8KY5ALoVZSgIyxXGgT0aXyU=",
+      "dependencies": {
+        "exit-on-epipe": "~1.0.1",
+        "printj": "~1.1.0"
+      },
+      "bin": {
+        "adler32": "bin/adler32.njs"
+      },
+      "engines": {
+        "node": ">=0.8"
+      }
+    },
+    "node_modules/after": {
+      "version": "0.8.1",
+      "resolved": "https://registry.npmjs.org/after/-/after-0.8.1.tgz",
+      "integrity": "sha1-q11PuIP1loFtNRX495HAr0ht1ic="
+    },
+    "node_modules/align-text": {
+      "version": "0.1.4",
+      "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz",
+      "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=",
+      "dev": true,
+      "dependencies": {
+        "kind-of": "^3.0.2",
+        "longest": "^1.0.1",
+        "repeat-string": "^1.5.2"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/amdefine": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz",
+      "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=",
+      "engines": {
+        "node": ">=0.4.2"
+      }
+    },
+    "node_modules/ansi-regex": {
+      "version": "2.1.1",
+      "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
+      "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/any-promise": {
+      "version": "1.3.0",
+      "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz",
+      "integrity": "sha1-q8av7tzqUugJzcA3au0845Y10X8="
+    },
+    "node_modules/anymatch": {
+      "version": "1.3.2",
+      "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.2.tgz",
+      "integrity": "sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA==",
+      "dev": true,
+      "dependencies": {
+        "micromatch": "^2.1.5",
+        "normalize-path": "^2.0.0"
+      }
+    },
+    "node_modules/arr-diff": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz",
+      "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=",
+      "dev": true,
+      "dependencies": {
+        "arr-flatten": "^1.0.1"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/arr-flatten": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz",
+      "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/array-flatten": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
+      "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=",
+      "dev": true
+    },
+    "node_modules/array-unique": {
+      "version": "0.2.1",
+      "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz",
+      "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/arraybuffer.slice": {
+      "version": "0.0.6",
+      "resolved": "https://registry.npmjs.org/arraybuffer.slice/-/arraybuffer.slice-0.0.6.tgz",
+      "integrity": "sha1-8zshWfBTKj8xB6JywMz70a0peco="
+    },
+    "node_modules/assert": {
+      "version": "1.4.1",
+      "resolved": "https://registry.npmjs.org/assert/-/assert-1.4.1.tgz",
+      "integrity": "sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE=",
+      "dev": true,
+      "dependencies": {
+        "util": "0.10.3"
+      }
+    },
+    "node_modules/assert/node_modules/inherits": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz",
+      "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=",
+      "dev": true
+    },
+    "node_modules/assert/node_modules/util": {
+      "version": "0.10.3",
+      "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz",
+      "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=",
+      "dev": true,
+      "dependencies": {
+        "inherits": "2.0.1"
+      }
+    },
+    "node_modules/ast-types": {
+      "version": "0.9.6",
+      "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.9.6.tgz",
+      "integrity": "sha1-ECyenpAF0+fjgpvwxPok7oYu6bk=",
+      "dev": true,
+      "engines": {
+        "node": ">= 0.8"
+      }
+    },
+    "node_modules/async": {
+      "version": "0.2.10",
+      "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz",
+      "integrity": "sha1-trvgsGdLnXGXCMo43owjfLUmw9E="
+    },
+    "node_modules/async-each": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz",
+      "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=",
+      "dev": true
+    },
+    "node_modules/babyparse": {
+      "version": "0.2.1",
+      "resolved": "https://registry.npmjs.org/babyparse/-/babyparse-0.2.1.tgz",
+      "integrity": "sha1-Bp8DXfP9zm86RV3V2vx1F43PN2A=",
+      "deprecated": "Deprecated in favour of PapaParse, which now supports Node.js"
+    },
+    "node_modules/balanced-match": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
+      "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c="
+    },
+    "node_modules/base62": {
+      "version": "1.2.8",
+      "resolved": "https://registry.npmjs.org/base62/-/base62-1.2.8.tgz",
+      "integrity": "sha512-V6YHUbjLxN1ymqNLb1DPHoU1CpfdL7d2YTIp5W3U4hhoG4hhxNmsFDs66M9EXxBiSEke5Bt5dwdfMwwZF70iLA==",
+      "dev": true,
+      "engines": {
+        "node": "*"
+      }
+    },
+    "node_modules/base64-arraybuffer": {
+      "version": "0.1.2",
+      "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.2.tgz",
+      "integrity": "sha1-R030qfLaJOBd8xWMOx2zw81GoVQ=",
+      "engines": {
+        "node": ">= 0.6.0"
+      }
+    },
+    "node_modules/base64-js": {
+      "version": "1.3.0",
+      "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.0.tgz",
+      "integrity": "sha512-ccav/yGvoa80BQDljCxsmmQ3Xvx60/UpBIij5QN21W3wBi/hhIC9OoO+KLpu9IJTS9j4DRVJ3aDDF9cMSoa2lw==",
+      "dev": true
+    },
+    "node_modules/base64-url": {
+      "version": "1.2.1",
+      "resolved": "https://registry.npmjs.org/base64-url/-/base64-url-1.2.1.tgz",
+      "integrity": "sha1-GZ/WYXAqDnt9yubgaYuwicUvbXg="
+    },
+    "node_modules/base64id": {
+      "version": "0.1.0",
+      "resolved": "https://registry.npmjs.org/base64id/-/base64id-0.1.0.tgz",
+      "integrity": "sha1-As4P3u4M709ACA4ec+g08LG/zj8=",
+      "engines": {
+        "node": ">= 0.4.0"
+      }
+    },
+    "node_modules/basic-auth": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-1.0.0.tgz",
+      "integrity": "sha1-ERstn/jk5tE2uMhOpeCWy4c1Fjc="
+    },
+    "node_modules/basic-auth-connect": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/basic-auth-connect/-/basic-auth-connect-1.0.0.tgz",
+      "integrity": "sha1-/bC0OWLKe0BFanwrtI/hc9otISI="
+    },
+    "node_modules/batch": {
+      "version": "0.6.1",
+      "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz",
+      "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=",
+      "dev": true
+    },
+    "node_modules/better-assert": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/better-assert/-/better-assert-1.0.2.tgz",
+      "integrity": "sha1-QIZrnhueC1W0gYlDEeaPr/rrxSI=",
+      "dependencies": {
+        "callsite": "1.0.0"
+      },
+      "engines": {
+        "node": "*"
+      }
+    },
+    "node_modules/big.js": {
+      "version": "3.2.0",
+      "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz",
+      "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==",
+      "dev": true,
+      "engines": {
+        "node": "*"
+      }
+    },
+    "node_modules/binary-extensions": {
+      "version": "1.11.0",
+      "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.11.0.tgz",
+      "integrity": "sha1-RqoXUftqL5PuXmibsQh9SxTGwgU=",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/blob": {
+      "version": "0.0.2",
+      "resolved": "https://registry.npmjs.org/blob/-/blob-0.0.2.tgz",
+      "integrity": "sha1-uJVivWmUr5W6HoEhVVNjM6ojzyQ="
+    },
+    "node_modules/body-parser": {
+      "version": "1.18.2",
+      "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.18.2.tgz",
+      "integrity": "sha1-h2eKGdhLR9hZuDGZvVm84iKxBFQ=",
+      "dev": true,
+      "dependencies": {
+        "bytes": "3.0.0",
+        "content-type": "~1.0.4",
+        "debug": "2.6.9",
+        "depd": "~1.1.1",
+        "http-errors": "~1.6.2",
+        "iconv-lite": "0.4.19",
+        "on-finished": "~2.3.0",
+        "qs": "6.5.1",
+        "raw-body": "2.3.2",
+        "type-is": "~1.6.15"
+      },
+      "engines": {
+        "node": ">= 0.8"
+      }
+    },
+    "node_modules/body-parser/node_modules/bytes": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz",
+      "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=",
+      "dev": true,
+      "engines": {
+        "node": ">= 0.8"
+      }
+    },
+    "node_modules/body-parser/node_modules/debug": {
+      "version": "2.6.9",
+      "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+      "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+      "dev": true,
+      "dependencies": {
+        "ms": "2.0.0"
+      }
+    },
+    "node_modules/body-parser/node_modules/depd": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
+      "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=",
+      "dev": true,
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/body-parser/node_modules/ee-first": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
+      "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=",
+      "dev": true
+    },
+    "node_modules/body-parser/node_modules/iconv-lite": {
+      "version": "0.4.19",
+      "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz",
+      "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/body-parser/node_modules/media-typer": {
+      "version": "0.3.0",
+      "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
+      "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=",
+      "dev": true,
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/body-parser/node_modules/on-finished": {
+      "version": "2.3.0",
+      "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
+      "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=",
+      "dev": true,
+      "dependencies": {
+        "ee-first": "1.1.1"
+      },
+      "engines": {
+        "node": ">= 0.8"
+      }
+    },
+    "node_modules/body-parser/node_modules/qs": {
+      "version": "6.5.1",
+      "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz",
+      "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==",
+      "dev": true,
+      "engines": {
+        "node": ">=0.6"
+      }
+    },
+    "node_modules/body-parser/node_modules/type-is": {
+      "version": "1.6.16",
+      "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.16.tgz",
+      "integrity": "sha512-HRkVv/5qY2G6I8iab9cI7v1bOIdhm94dVjQCPFElW9W+3GeDOSHmy2EBYe4VTApuzolPcmgFTN3ftVJRKR2J9Q==",
+      "dev": true,
+      "dependencies": {
+        "media-typer": "0.3.0",
+        "mime-types": "~2.1.18"
+      },
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/brace-expansion": {
+      "version": "1.1.11",
+      "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
+      "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+      "dependencies": {
+        "balanced-match": "^1.0.0",
+        "concat-map": "0.0.1"
+      }
+    },
+    "node_modules/braces": {
+      "version": "1.8.5",
+      "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz",
+      "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=",
+      "dev": true,
+      "dependencies": {
+        "expand-range": "^1.8.1",
+        "preserve": "^0.2.0",
+        "repeat-element": "^1.1.2"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/browserify-aes": {
+      "version": "0.4.0",
+      "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-0.4.0.tgz",
+      "integrity": "sha1-BnFJtmjfMcS1hTPgLQHoBthgjiw=",
+      "dev": true,
+      "dependencies": {
+        "inherits": "^2.0.1"
+      }
+    },
+    "node_modules/browserify-zlib": {
+      "version": "0.1.4",
+      "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.1.4.tgz",
+      "integrity": "sha1-uzX4pRn2AOD6a4SFJByXnQFB+y0=",
+      "dev": true,
+      "dependencies": {
+        "pako": "~0.2.0"
+      }
+    },
+    "node_modules/buffer": {
+      "version": "4.9.1",
+      "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz",
+      "integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=",
+      "deprecated": "This version of 'buffer' is out-of-date. You must update to v4.9.2 or newer",
+      "dev": true,
+      "dependencies": {
+        "base64-js": "^1.0.2",
+        "ieee754": "^1.1.4",
+        "isarray": "^1.0.0"
+      }
+    },
+    "node_modules/buffer-crc32": {
+      "version": "0.2.3",
+      "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.3.tgz",
+      "integrity": "sha1-u1RRnpXRB8vSQA520MqxRnM22SE=",
+      "engines": {
+        "node": "*"
+      }
+    },
+    "node_modules/buffer-from": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz",
+      "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A=="
+    },
+    "node_modules/buffer/node_modules/isarray": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+      "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
+      "dev": true
+    },
+    "node_modules/builtin-status-codes": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz",
+      "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=",
+      "dev": true
+    },
+    "node_modules/bytes": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/bytes/-/bytes-1.0.0.tgz",
+      "integrity": "sha1-NWnt6Lo0MV+rmcPpLLBMciDeH6g="
+    },
+    "node_modules/callsite": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz",
+      "integrity": "sha1-KAOY5dZkvXQDi28JBRU+borxvCA=",
+      "engines": {
+        "node": "*"
+      }
+    },
+    "node_modules/camelcase": {
+      "version": "1.2.1",
+      "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz",
+      "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/center-align": {
+      "version": "0.1.3",
+      "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz",
+      "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=",
+      "dev": true,
+      "dependencies": {
+        "align-text": "^0.1.3",
+        "lazy-cache": "^1.0.3"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/cfb": {
+      "version": "0.11.1",
+      "resolved": "https://registry.npmjs.org/cfb/-/cfb-0.11.1.tgz",
+      "integrity": "sha1-qW248nKmw/uZ27sj70EiP0i+Hqc=",
+      "dependencies": {
+        "commander": ""
+      },
+      "bin": {
+        "cfb": "bin/cfb.njs"
+      },
+      "engines": {
+        "node": ">=0.8"
+      }
+    },
+    "node_modules/cfb/node_modules/commander": {
+      "version": "6.2.1",
+      "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz",
+      "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==",
+      "engines": {
+        "node": ">= 6"
+      }
+    },
+    "node_modules/chokidar": {
+      "version": "1.7.0",
+      "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz",
+      "integrity": "sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=",
+      "deprecated": "Chokidar 2 will break on node v14+. Upgrade to chokidar 3 with 15x less dependencies.",
+      "dev": true,
+      "dependencies": {
+        "anymatch": "^1.3.0",
+        "async-each": "^1.0.0",
+        "glob-parent": "^2.0.0",
+        "inherits": "^2.0.1",
+        "is-binary-path": "^1.0.0",
+        "is-glob": "^2.0.0",
+        "path-is-absolute": "^1.0.0",
+        "readdirp": "^2.0.0"
+      },
+      "optionalDependencies": {
+        "fsevents": "^1.0.0"
+      }
+    },
+    "node_modules/cliui": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz",
+      "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=",
+      "dev": true,
+      "dependencies": {
+        "center-align": "^0.1.1",
+        "right-align": "^0.1.1",
+        "wordwrap": "0.0.2"
+      }
+    },
+    "node_modules/cliui/node_modules/wordwrap": {
+      "version": "0.0.2",
+      "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz",
+      "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=",
+      "dev": true,
+      "engines": {
+        "node": ">=0.4.0"
+      }
+    },
+    "node_modules/clone": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz",
+      "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=",
+      "dev": true,
+      "engines": {
+        "node": ">=0.8"
+      }
+    },
+    "node_modules/codepage": {
+      "version": "1.14.0",
+      "resolved": "https://registry.npmjs.org/codepage/-/codepage-1.14.0.tgz",
+      "integrity": "sha1-jL4lSBMjVZ19MHVxsP/5HnodL5k=",
+      "dependencies": {
+        "commander": "~2.14.1",
+        "exit-on-epipe": "~1.0.1"
+      },
+      "bin": {
+        "codepage": "bin/codepage.njs"
+      },
+      "engines": {
+        "node": ">=0.8"
+      }
+    },
+    "node_modules/codepage/node_modules/commander": {
+      "version": "2.14.1",
+      "resolved": "https://registry.npmjs.org/commander/-/commander-2.14.1.tgz",
+      "integrity": "sha512-+YR16o3rK53SmWHU3rEM3tPAh2rwb1yPcQX5irVn7mb0gXbwuCCrnkbV5+PBfETdfg1vui07nM6PCG1zndcjQw=="
+    },
+    "node_modules/coffee-css": {
+      "version": "0.0.5",
+      "resolved": "https://registry.npmjs.org/coffee-css/-/coffee-css-0.0.5.tgz",
+      "integrity": "sha1-WJqCL7pa4NTxoEJLIrp1AWgydaQ=",
+      "dependencies": {
+        "coffee-script": ">=1.0.0",
+        "underscore": ">=1.1.6"
+      },
+      "engines": {
+        "node": ">=0.4.5"
+      }
+    },
+    "node_modules/coffee-script": {
+      "version": "1.12.7",
+      "resolved": "https://registry.npmjs.org/coffee-script/-/coffee-script-1.12.7.tgz",
+      "integrity": "sha512-fLeEhqwymYat/MpTPUjSKHVYYl0ec2mOyALEMLmzr5i1isuG+6jfI2j2d5oBO3VIzgUXgBVIcOT9uH1TFxBckw==",
+      "deprecated": "CoffeeScript on NPM has moved to \"coffeescript\" (no hyphen)",
+      "bin": {
+        "cake": "bin/cake",
+        "coffee": "bin/coffee"
+      },
+      "engines": {
+        "node": ">=0.8.0"
+      }
+    },
+    "node_modules/coffeecup": {
+      "version": "0.3.21",
+      "resolved": "https://registry.npmjs.org/coffeecup/-/coffeecup-0.3.21.tgz",
+      "integrity": "sha1-VOcUF1yyI93RBWhRcZbgzVZtGYo=",
+      "dependencies": {
+        "coffee-script": ">=1.3 <2",
+        "optparse": "1.0.3",
+        "stylus": "0.27.2",
+        "uglify-js": "1.2.6"
+      },
+      "bin": {
+        "coffeecup": "bin/coffeecup"
+      },
+      "engines": {
+        "node": "0.4.x || 0.6.x || 0.8.x || 0.10.x"
+      }
+    },
+    "node_modules/coffeecup/node_modules/mkdirp": {
+      "version": "0.3.5",
+      "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.5.tgz",
+      "integrity": "sha1-3j5fiWHIjHh+4TaN+EmsRBPsqNc=",
+      "deprecated": "Legacy versions of mkdirp are no longer supported. Please update to mkdirp 1.x. (Note that the API surface has changed to use Promises in 1.x.)"
+    },
+    "node_modules/coffeecup/node_modules/stylus": {
+      "version": "0.27.2",
+      "resolved": "https://registry.npmjs.org/stylus/-/stylus-0.27.2.tgz",
+      "integrity": "sha1-ESH3+M0VKw+KSqaiSpreoQyCURc=",
+      "dependencies": {
+        "cssom": "0.2.x",
+        "debug": "*",
+        "mkdirp": "0.3.x"
+      },
+      "bin": {
+        "stylus": "bin/stylus"
+      },
+      "engines": {
+        "node": "*"
+      }
+    },
+    "node_modules/coffeecup/node_modules/uglify-js": {
+      "version": "1.2.6",
+      "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-1.2.6.tgz",
+      "integrity": "sha1-01Sy08HPEOvBj6eMEaKL3ZzhWA0=",
+      "bin": {
+        "uglifyjs": "bin/uglifyjs"
+      },
+      "engines": {
+        "node": "*"
+      }
+    },
+    "node_modules/colors": {
+      "version": "0.6.2",
+      "resolved": "https://registry.npmjs.org/colors/-/colors-0.6.2.tgz",
+      "integrity": "sha1-JCP+ZnisDF2uiFLl0OW+CMmXq8w=",
+      "engines": {
+        "node": ">=0.1.90"
+      }
+    },
+    "node_modules/combined-stream": {
+      "version": "0.0.7",
+      "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-0.0.7.tgz",
+      "integrity": "sha1-ATfmV7qlp1QcV6w3rF/AfXO03B8=",
+      "dev": true,
+      "dependencies": {
+        "delayed-stream": "0.0.5"
+      },
+      "engines": {
+        "node": ">= 0.8"
+      }
+    },
+    "node_modules/commander": {
+      "version": "2.17.1",
+      "resolved": "https://registry.npmjs.org/commander/-/commander-2.17.1.tgz",
+      "integrity": "sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg=="
+    },
+    "node_modules/commoner": {
+      "version": "0.10.8",
+      "resolved": "https://registry.npmjs.org/commoner/-/commoner-0.10.8.tgz",
+      "integrity": "sha1-NPw2cs0kOT6LtH5wyqApOBH08sU=",
+      "dev": true,
+      "dependencies": {
+        "commander": "^2.5.0",
+        "detective": "^4.3.1",
+        "glob": "^5.0.15",
+        "graceful-fs": "^4.1.2",
+        "iconv-lite": "^0.4.5",
+        "mkdirp": "^0.5.0",
+        "private": "^0.1.6",
+        "q": "^1.1.2",
+        "recast": "^0.11.17"
+      },
+      "bin": {
+        "commonize": "bin/commonize"
+      },
+      "engines": {
+        "node": ">= 0.8"
+      }
+    },
+    "node_modules/component-bind": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/component-bind/-/component-bind-1.0.0.tgz",
+      "integrity": "sha1-AMYIq33Nk4l8AAllGx06jh5zu9E="
+    },
+    "node_modules/component-emitter": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.1.2.tgz",
+      "integrity": "sha1-KWWU8nU9qmOZbSrwjRWpURbJrsM="
+    },
+    "node_modules/component-inherit": {
+      "version": "0.0.3",
+      "resolved": "https://registry.npmjs.org/component-inherit/-/component-inherit-0.0.3.tgz",
+      "integrity": "sha1-ZF/ErfWLcrZJ1crmUTVhnbJv8UM="
+    },
+    "node_modules/compressible": {
+      "version": "2.0.14",
+      "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.14.tgz",
+      "integrity": "sha1-MmxfUH+7BV9UEWeCuWmoG2einac=",
+      "dev": true,
+      "dependencies": {
+        "mime-db": ">= 1.34.0 < 2"
+      },
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/compression": {
+      "version": "1.7.3",
+      "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.3.tgz",
+      "integrity": "sha512-HSjyBG5N1Nnz7tF2+O7A9XUhyjru71/fwgNb7oIsEVHR0WShfs2tIS/EySLgiTe98aOK18YDlMXpzjCXY/n9mg==",
+      "dev": true,
+      "dependencies": {
+        "accepts": "~1.3.5",
+        "bytes": "3.0.0",
+        "compressible": "~2.0.14",
+        "debug": "2.6.9",
+        "on-headers": "~1.0.1",
+        "safe-buffer": "5.1.2",
+        "vary": "~1.1.2"
+      },
+      "engines": {
+        "node": ">= 0.8.0"
+      }
+    },
+    "node_modules/compression/node_modules/accepts": {
+      "version": "1.3.5",
+      "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.5.tgz",
+      "integrity": "sha1-63d99gEXI6OxTopywIBcjoZ0a9I=",
+      "dev": true,
+      "dependencies": {
+        "mime-types": "~2.1.18",
+        "negotiator": "0.6.1"
+      },
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/compression/node_modules/bytes": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz",
+      "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=",
+      "dev": true,
+      "engines": {
+        "node": ">= 0.8"
+      }
+    },
+    "node_modules/compression/node_modules/debug": {
+      "version": "2.6.9",
+      "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+      "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+      "dev": true,
+      "dependencies": {
+        "ms": "2.0.0"
+      }
+    },
+    "node_modules/compression/node_modules/negotiator": {
+      "version": "0.6.1",
+      "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz",
+      "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=",
+      "dev": true,
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/concat-map": {
+      "version": "0.0.1",
+      "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
+      "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s="
+    },
+    "node_modules/concat-stream": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-2.0.0.tgz",
+      "integrity": "sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==",
+      "engines": [
+        "node >= 6.0"
+      ],
+      "dependencies": {
+        "buffer-from": "^1.0.0",
+        "inherits": "^2.0.3",
+        "readable-stream": "^3.0.2",
+        "typedarray": "^0.0.6"
+      }
+    },
+    "node_modules/concat-stream/node_modules/readable-stream": {
+      "version": "3.6.0",
+      "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz",
+      "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==",
+      "dependencies": {
+        "inherits": "^2.0.3",
+        "string_decoder": "^1.1.1",
+        "util-deprecate": "^1.0.1"
+      },
+      "engines": {
+        "node": ">= 6"
+      }
+    },
+    "node_modules/concat-stream/node_modules/safe-buffer": {
+      "version": "5.2.1",
+      "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
+      "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
+      "funding": [
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/feross"
+        },
+        {
+          "type": "patreon",
+          "url": "https://www.patreon.com/feross"
+        },
+        {
+          "type": "consulting",
+          "url": "https://feross.org/support"
+        }
+      ]
+    },
+    "node_modules/concat-stream/node_modules/string_decoder": {
+      "version": "1.3.0",
+      "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz",
+      "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==",
+      "dependencies": {
+        "safe-buffer": "~5.2.0"
+      }
+    },
+    "node_modules/connect": {
+      "version": "2.25.9",
+      "resolved": "https://registry.npmjs.org/connect/-/connect-2.25.9.tgz",
+      "integrity": "sha1-loDW8vsgDq2rPScuQZ545dh88x8=",
+      "deprecated": "connect 2.x series is deprecated",
+      "dependencies": {
+        "basic-auth-connect": "1.0.0",
+        "body-parser": "~1.6.7",
+        "bytes": "1.0.0",
+        "compression": "~1.0.11",
+        "connect-timeout": "~1.2.2",
+        "cookie": "0.1.2",
+        "cookie-parser": "1.3.2",
+        "cookie-signature": "1.0.4",
+        "csurf": "~1.4.1",
+        "debug": "1.0.4",
+        "depd": "0.4.4",
+        "errorhandler": "1.1.1",
+        "express-session": "~1.7.6",
+        "finalhandler": "0.1.0",
+        "fresh": "0.2.2",
+        "media-typer": "0.2.0",
+        "method-override": "~2.1.3",
+        "morgan": "~1.2.3",
+        "multiparty": "3.3.2",
+        "on-headers": "~1.0.0",
+        "parseurl": "~1.3.0",
+        "pause": "0.0.1",
+        "qs": "2.2.2",
+        "response-time": "~2.0.1",
+        "serve-favicon": "2.0.1",
+        "serve-index": "~1.1.6",
+        "serve-static": "~1.5.3",
+        "type-is": "~1.3.2",
+        "vhost": "2.0.0"
+      },
+      "engines": {
+        "node": ">= 0.8.0"
+      }
+    },
+    "node_modules/connect-history-api-fallback": {
+      "version": "1.5.0",
+      "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.5.0.tgz",
+      "integrity": "sha1-sGhzk0vF40T+9hGhlqb6rgruAVo=",
+      "dev": true,
+      "engines": {
+        "node": ">=0.8"
+      }
+    },
+    "node_modules/connect-timeout": {
+      "version": "1.2.2",
+      "resolved": "https://registry.npmjs.org/connect-timeout/-/connect-timeout-1.2.2.tgz",
+      "integrity": "sha1-WVNgK7Zqv9X6Ia6RGnIhxeglocA=",
+      "dependencies": {
+        "debug": "1.0.4",
+        "ms": "0.6.2",
+        "on-headers": "~1.0.0"
+      },
+      "engines": {
+        "node": ">= 0.8"
+      }
+    },
+    "node_modules/connect-timeout/node_modules/debug": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npmjs.org/debug/-/debug-1.0.4.tgz",
+      "integrity": "sha1-W5wla9VLbsAigxdvqKDt5tFUy/g=",
+      "dependencies": {
+        "ms": "0.6.2"
+      }
+    },
+    "node_modules/connect-timeout/node_modules/ms": {
+      "version": "0.6.2",
+      "resolved": "https://registry.npmjs.org/ms/-/ms-0.6.2.tgz",
+      "integrity": "sha1-2JwhJMb9wTU9Zai3e/GqxLGTcIw="
+    },
+    "node_modules/connect/node_modules/batch": {
+      "version": "0.5.1",
+      "resolved": "https://registry.npmjs.org/batch/-/batch-0.5.1.tgz",
+      "integrity": "sha1-NqS6tZTAUP17UHvKDbMMLZKvT/I="
+    },
+    "node_modules/connect/node_modules/body-parser": {
+      "version": "1.6.7",
+      "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.6.7.tgz",
+      "integrity": "sha1-gjBr7K30RUPoJrOQfq6T8CN8Tlw=",
+      "dependencies": {
+        "bytes": "1.0.0",
+        "depd": "0.4.4",
+        "iconv-lite": "0.4.4",
+        "media-typer": "0.2.0",
+        "on-finished": "2.1.0",
+        "qs": "2.2.2",
+        "raw-body": "1.3.0",
+        "type-is": "~1.3.2"
+      },
+      "engines": {
+        "node": ">= 0.8"
+      }
+    },
+    "node_modules/connect/node_modules/compressible": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/compressible/-/compressible-1.1.1.tgz",
+      "integrity": "sha1-I7ceqQ6mxqZiiXAakYGCwk0HKe8="
+    },
+    "node_modules/connect/node_modules/compression": {
+      "version": "1.0.11",
+      "resolved": "https://registry.npmjs.org/compression/-/compression-1.0.11.tgz",
+      "integrity": "sha1-aXAM8e6JY0VDVqwZKm5ekeIyv/s=",
+      "dependencies": {
+        "accepts": "~1.0.7",
+        "bytes": "1.0.0",
+        "compressible": "~1.1.1",
+        "debug": "1.0.4",
+        "on-headers": "~1.0.0",
+        "vary": "~1.0.0"
+      },
+      "engines": {
+        "node": ">= 0.8.0"
+      }
+    },
+    "node_modules/connect/node_modules/debug": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npmjs.org/debug/-/debug-1.0.4.tgz",
+      "integrity": "sha1-W5wla9VLbsAigxdvqKDt5tFUy/g=",
+      "dependencies": {
+        "ms": "0.6.2"
+      }
+    },
+    "node_modules/connect/node_modules/finalhandler": {
+      "version": "0.1.0",
+      "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-0.1.0.tgz",
+      "integrity": "sha1-2gW7xPX0owyEzh2R88FUAHxOnao=",
+      "dependencies": {
+        "debug": "1.0.4",
+        "escape-html": "1.0.1"
+      },
+      "engines": {
+        "node": ">= 0.8.0"
+      }
+    },
+    "node_modules/connect/node_modules/iconv-lite": {
+      "version": "0.4.4",
+      "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.4.tgz",
+      "integrity": "sha1-6V8uQdsHNfwhZS94J6XuMuY8g6g=",
+      "engines": {
+        "node": ">=0.8.0"
+      }
+    },
+    "node_modules/connect/node_modules/ms": {
+      "version": "0.6.2",
+      "resolved": "https://registry.npmjs.org/ms/-/ms-0.6.2.tgz",
+      "integrity": "sha1-2JwhJMb9wTU9Zai3e/GqxLGTcIw="
+    },
+    "node_modules/connect/node_modules/range-parser": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.0.3.tgz",
+      "integrity": "sha1-aHKCNTXGkuLCoBA4Jq/YLC4P8XU=",
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/connect/node_modules/raw-body": {
+      "version": "1.3.0",
+      "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-1.3.0.tgz",
+      "integrity": "sha1-l4IwoValVI9C7vFN4i0PT2EAg9E=",
+      "dependencies": {
+        "bytes": "1",
+        "iconv-lite": "0.4.4"
+      },
+      "engines": {
+        "node": ">= 0.8.0"
+      }
+    },
+    "node_modules/connect/node_modules/send": {
+      "version": "0.8.5",
+      "resolved": "https://registry.npmjs.org/send/-/send-0.8.5.tgz",
+      "integrity": "sha1-N/cIIW5vUMF150xp/sU0hOL9gsc=",
+      "dependencies": {
+        "debug": "1.0.4",
+        "depd": "0.4.4",
+        "destroy": "1.0.3",
+        "escape-html": "1.0.1",
+        "fresh": "0.2.2",
+        "mime": "1.2.11",
+        "ms": "0.6.2",
+        "on-finished": "2.1.0",
+        "range-parser": "~1.0.0"
+      },
+      "engines": {
+        "node": ">= 0.8.0"
+      }
+    },
+    "node_modules/connect/node_modules/serve-index": {
+      "version": "1.1.6",
+      "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.1.6.tgz",
+      "integrity": "sha1-t1gxj+eBYoOD9mrIDdRHcS6neB8=",
+      "dependencies": {
+        "accepts": "~1.0.7",
+        "batch": "0.5.1",
+        "parseurl": "~1.3.0"
+      },
+      "engines": {
+        "node": ">= 0.8.0"
+      }
+    },
+    "node_modules/connect/node_modules/serve-static": {
+      "version": "1.5.4",
+      "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.5.4.tgz",
+      "integrity": "sha1-gZ+zeuRr0C3VILd/z3/Y9REvl4I=",
+      "dependencies": {
+        "escape-html": "1.0.1",
+        "parseurl": "~1.3.0",
+        "send": "0.8.5",
+        "utils-merge": "1.0.0"
+      },
+      "engines": {
+        "node": ">= 0.8.0"
+      }
+    },
+    "node_modules/connect/node_modules/vary": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/vary/-/vary-1.0.1.tgz",
+      "integrity": "sha1-meSYFWaihhGN+yuBc1ffeZM3bRA=",
+      "engines": {
+        "node": ">= 0.8"
+      }
+    },
+    "node_modules/console-browserify": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz",
+      "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=",
+      "dev": true,
+      "dependencies": {
+        "date-now": "^0.1.4"
+      }
+    },
+    "node_modules/constants-browserify": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz",
+      "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=",
+      "dev": true
+    },
+    "node_modules/content-disposition": {
+      "version": "0.5.2",
+      "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz",
+      "integrity": "sha1-DPaLud318r55YcOoUXjLhdunjLQ=",
+      "dev": true,
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/content-type": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz",
+      "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==",
+      "dev": true,
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/cookie": {
+      "version": "0.1.2",
+      "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.1.2.tgz",
+      "integrity": "sha1-cv7D0k5Io0Mgc9kMEmQgBQYQBLE=",
+      "engines": {
+        "node": "*"
+      }
+    },
+    "node_modules/cookie-parser": {
+      "version": "1.3.2",
+      "resolved": "https://registry.npmjs.org/cookie-parser/-/cookie-parser-1.3.2.tgz",
+      "integrity": "sha1-UiEcyCyVXXn/DAiJVEB3JOGc9WI=",
+      "dependencies": {
+        "cookie": "0.1.2",
+        "cookie-signature": "1.0.4"
+      },
+      "engines": {
+        "node": ">= 0.8.0"
+      }
+    },
+    "node_modules/cookie-signature": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.4.tgz",
+      "integrity": "sha1-Dt0iKG46ERuaKnDbNj6SXoZ/aso="
+    },
+    "node_modules/cookiejar": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.0.1.tgz",
+      "integrity": "sha1-PRJ1L2rfaKiS8zJDNJK9WBK7Zo8=",
+      "dev": true
+    },
+    "node_modules/copy-utils": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/copy-utils/-/copy-utils-1.0.0.tgz",
+      "integrity": "sha1-va0LlUV5nXh9XQxMCwgqKpTjafc=",
+      "dev": true
+    },
+    "node_modules/core-util-is": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
+      "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac="
+    },
+    "node_modules/cors": {
+      "version": "2.8.4",
+      "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.4.tgz",
+      "integrity": "sha1-K9OB8usgECAQXNUOpZ2mMJBpRoY=",
+      "dependencies": {
+        "object-assign": "^4",
+        "vary": "^1"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/crc-32": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.0.tgz",
+      "integrity": "sha512-1uBwHxF+Y/4yF5G48fwnKq6QsIXheor3ZLPT80yGBV1oEUwpPojlEhQbWKVw1VwcTQyMGHK1/XMmTjmlsmTTGA==",
+      "dependencies": {
+        "exit-on-epipe": "~1.0.1",
+        "printj": "~1.1.0"
+      },
+      "bin": {
+        "crc32": "bin/crc32.njs"
+      },
+      "engines": {
+        "node": ">=0.8"
+      }
+    },
+    "node_modules/crypto-browserify": {
+      "version": "3.3.0",
+      "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.3.0.tgz",
+      "integrity": "sha1-ufx1u0oO1h3PHNXa6W6zDJw+UGw=",
+      "dev": true,
+      "dependencies": {
+        "browserify-aes": "0.4.0",
+        "pbkdf2-compat": "2.0.1",
+        "ripemd160": "0.2.0",
+        "sha.js": "2.2.6"
+      },
+      "engines": {
+        "node": "*"
+      }
+    },
+    "node_modules/csrf": {
+      "version": "2.0.7",
+      "resolved": "https://registry.npmjs.org/csrf/-/csrf-2.0.7.tgz",
+      "integrity": "sha1-0E9S4Paiin4s/h4B3V68JRs9QgE=",
+      "dependencies": {
+        "base64-url": "1.2.1",
+        "rndm": "~1.1.0",
+        "scmp": "1.0.0",
+        "uid-safe": "~1.1.0"
+      },
+      "engines": {
+        "node": ">= 0.8"
+      }
+    },
+    "node_modules/css-loader": {
+      "version": "0.9.1",
+      "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-0.9.1.tgz",
+      "integrity": "sha1-LhqgDOfjDvLGp6SzAKCAp8l54Nw=",
+      "dev": true,
+      "dependencies": {
+        "csso": "1.3.x",
+        "loader-utils": "~0.2.2",
+        "source-map": "~0.1.38"
+      }
+    },
+    "node_modules/css-loader/node_modules/source-map": {
+      "version": "0.1.43",
+      "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz",
+      "integrity": "sha1-wkvBRspRfBRx9drL4lcbK3+eM0Y=",
+      "dev": true,
+      "dependencies": {
+        "amdefine": ">=0.0.4"
+      },
+      "engines": {
+        "node": ">=0.8.0"
+      }
+    },
+    "node_modules/csso": {
+      "version": "1.3.12",
+      "resolved": "https://registry.npmjs.org/csso/-/csso-1.3.12.tgz",
+      "integrity": "sha1-/GKGlKLTiTiqrEmWdTIY/TEc254=",
+      "dev": true,
+      "bin": {
+        "csso": "bin/csso"
+      },
+      "engines": {
+        "node": ">=0.8.0"
+      }
+    },
+    "node_modules/cssom": {
+      "version": "0.2.5",
+      "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.2.5.tgz",
+      "integrity": "sha1-JoJwm1kC5yEt9SkRb/eIzVslSJQ=",
+      "engines": {
+        "node": ">=0.2.0"
+      }
+    },
+    "node_modules/csurf": {
+      "version": "1.4.1",
+      "resolved": "https://registry.npmjs.org/csurf/-/csurf-1.4.1.tgz",
+      "integrity": "sha1-DMrwJpkrLSGHcdYXT1xsQCpiif0=",
+      "dependencies": {
+        "cookie": "0.1.2",
+        "cookie-signature": "1.0.4",
+        "csrf": "~2.0.1"
+      },
+      "engines": {
+        "node": ">= 0.8.0"
+      }
+    },
+    "node_modules/csv-parse": {
+      "version": "0.0.6",
+      "resolved": "https://registry.npmjs.org/csv-parse/-/csv-parse-0.0.6.tgz",
+      "integrity": "sha1-lGEHImUP6sgc9UnCySmGMtK2A3w="
+    },
+    "node_modules/date-now": {
+      "version": "0.1.4",
+      "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz",
+      "integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=",
+      "dev": true
+    },
+    "node_modules/debug": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
+      "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
+      "dependencies": {
+        "ms": "2.0.0"
+      }
+    },
+    "node_modules/decamelize": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
+      "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/deep-is": {
+      "version": "0.1.3",
+      "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz",
+      "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ="
+    },
+    "node_modules/defined": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz",
+      "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=",
+      "dev": true
+    },
+    "node_modules/delayed-stream": {
+      "version": "0.0.5",
+      "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-0.0.5.tgz",
+      "integrity": "sha1-1LH0OpPoKW3+AmlPRoC8N6MTxz8=",
+      "dev": true,
+      "engines": {
+        "node": ">=0.4.0"
+      }
+    },
+    "node_modules/depd": {
+      "version": "0.4.4",
+      "resolved": "https://registry.npmjs.org/depd/-/depd-0.4.4.tgz",
+      "integrity": "sha1-BwkfrnX5eCjYm0oCotR3jw58BmI=",
+      "engines": {
+        "node": ">= 0.8.0"
+      }
+    },
+    "node_modules/destroy": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.3.tgz",
+      "integrity": "sha1-tDO0ck5x/YVR2YhRdIUcX8N34sk="
+    },
+    "node_modules/detective": {
+      "version": "4.7.1",
+      "resolved": "https://registry.npmjs.org/detective/-/detective-4.7.1.tgz",
+      "integrity": "sha512-H6PmeeUcZloWtdt4DAkFyzFL94arpHr3NOwwmVILFiy+9Qd4JTxxXrzfyGk/lmct2qVGBwTSwSXagqu2BxmWig==",
+      "dev": true,
+      "dependencies": {
+        "acorn": "^5.2.1",
+        "defined": "^1.0.0"
+      }
+    },
+    "node_modules/domain-browser": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz",
+      "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==",
+      "dev": true,
+      "engines": {
+        "node": ">=0.4",
+        "npm": ">=1.2"
+      }
+    },
+    "node_modules/ee-first": {
+      "version": "1.0.5",
+      "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.0.5.tgz",
+      "integrity": "sha1-jJshKJjYzZ8alDZlDOe+ICyen/A="
+    },
+    "node_modules/emojis-list": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz",
+      "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=",
+      "dev": true,
+      "engines": {
+        "node": ">= 0.10"
+      }
+    },
+    "node_modules/encodeurl": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
+      "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=",
+      "dev": true,
+      "engines": {
+        "node": ">= 0.8"
+      }
+    },
+    "node_modules/engine.io": {
+      "version": "1.3.1",
+      "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-1.3.1.tgz",
+      "integrity": "sha1-LZaDCP/65dF/Ugm2d1JG6Q2KcF4=",
+      "dependencies": {
+        "base64id": "0.1.0",
+        "debug": "0.6.0",
+        "engine.io-parser": "1.0.6",
+        "ws": "0.4.31"
+      }
+    },
+    "node_modules/engine.io-client": {
+      "version": "1.3.1",
+      "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-1.3.1.tgz",
+      "integrity": "sha1-HFpl1cWvbQS0TCLD282Vw57RyYk=",
+      "dependencies": {
+        "component-emitter": "1.1.2",
+        "component-inherit": "0.0.3",
+        "debug": "0.7.4",
+        "engine.io-parser": "1.0.6",
+        "has-cors": "1.0.3",
+        "indexof": "0.0.1",
+        "parsejson": "0.0.1",
+        "parseqs": "0.0.2",
+        "parseuri": "0.0.2",
+        "ws": "0.4.31",
+        "xmlhttprequest": "https://github.com/LearnBoost/node-XMLHttpRequest/archive/0f36d0b5ebc03d85f860d42a64ae9791e1daa433.tar.gz"
+      }
+    },
+    "node_modules/engine.io-client/node_modules/debug": {
+      "version": "0.7.4",
+      "resolved": "https://registry.npmjs.org/debug/-/debug-0.7.4.tgz",
+      "integrity": "sha1-BuHqgILCyxTjmAbiLi9vdX+Srzk=",
+      "engines": {
+        "node": "*"
+      }
+    },
+    "node_modules/engine.io-client/node_modules/xmlhttprequest": {
+      "version": "1.5.0",
+      "resolved": "https://github.com/LearnBoost/node-XMLHttpRequest/archive/0f36d0b5ebc03d85f860d42a64ae9791e1daa433.tar.gz",
+      "integrity": "sha512-TVSZwoeUQ7OKhb8jnQdSxGFz+lm4MGWmhG0deeYg85VQT74x5LcSrKeXHE0ZIzEycgqQ5mF8r8e1AykA7TpNAQ==",
+      "engines": {
+        "node": ">=0.4.0"
+      }
+    },
+    "node_modules/engine.io-parser": {
+      "version": "1.0.6",
+      "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-1.0.6.tgz",
+      "integrity": "sha1-04gTFDpBHLO5FBMqsFv5nm96JI4=",
+      "dependencies": {
+        "after": "0.8.1",
+        "arraybuffer.slice": "0.0.6",
+        "base64-arraybuffer": "0.1.2",
+        "blob": "0.0.2",
+        "utf8": "2.0.0"
+      }
+    },
+    "node_modules/engine.io/node_modules/debug": {
+      "version": "0.6.0",
+      "resolved": "https://registry.npmjs.org/debug/-/debug-0.6.0.tgz",
+      "integrity": "sha1-zp1dAl1SlLPwdIpJS+uvPJ/Yc08=",
+      "engines": {
+        "node": "*"
+      }
+    },
+    "node_modules/enhanced-resolve": {
+      "version": "0.9.1",
+      "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-0.9.1.tgz",
+      "integrity": "sha1-TW5omzcl+GCQknzMhs2fFjW4ni4=",
+      "dev": true,
+      "dependencies": {
+        "graceful-fs": "^4.1.2",
+        "memory-fs": "^0.2.0",
+        "tapable": "^0.1.8"
+      },
+      "engines": {
+        "node": ">=0.6"
+      }
+    },
+    "node_modules/enhanced-resolve/node_modules/memory-fs": {
+      "version": "0.2.0",
+      "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.2.0.tgz",
+      "integrity": "sha1-8rslNovBIeORwlIN6Slpyu4KApA=",
+      "dev": true
+    },
+    "node_modules/envify": {
+      "version": "3.4.1",
+      "resolved": "https://registry.npmjs.org/envify/-/envify-3.4.1.tgz",
+      "integrity": "sha1-1xIjKejfFoi6dxsSUBkXyc5cvOg=",
+      "dev": true,
+      "dependencies": {
+        "jstransform": "^11.0.3",
+        "through": "~2.3.4"
+      },
+      "bin": {
+        "envify": "bin/envify"
+      }
+    },
+    "node_modules/errno": {
+      "version": "0.1.7",
+      "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz",
+      "integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==",
+      "dev": true,
+      "dependencies": {
+        "prr": "~1.0.1"
+      },
+      "bin": {
+        "errno": "cli.js"
+      }
+    },
+    "node_modules/errorhandler": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/errorhandler/-/errorhandler-1.1.1.tgz",
+      "integrity": "sha1-GN79Q22Mou/gotiGxcTW7m121pE=",
+      "dependencies": {
+        "accepts": "~1.0.4",
+        "escape-html": "1.0.1"
+      },
+      "engines": {
+        "node": ">= 0.8"
+      }
+    },
+    "node_modules/escape-html": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.1.tgz",
+      "integrity": "sha1-GBoobq05ejmpKFfPsdQwUuNWv/A="
+    },
+    "node_modules/esprima-fb": {
+      "version": "15001.1.0-dev-harmony-fb",
+      "resolved": "https://registry.npmjs.org/esprima-fb/-/esprima-fb-15001.1.0-dev-harmony-fb.tgz",
+      "integrity": "sha1-MKlHMDxrjV6VW+4rmbHSMyBqaQE=",
+      "dev": true,
+      "bin": {
+        "esparse": "bin/esparse.js",
+        "esvalidate": "bin/esvalidate.js"
+      },
+      "engines": {
+        "node": ">=0.4.0"
+      }
+    },
+    "node_modules/etag": {
+      "version": "1.8.1",
+      "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
+      "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=",
+      "dev": true,
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/eventemitter3": {
+      "version": "4.0.7",
+      "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz",
+      "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==",
+      "dev": true
+    },
+    "node_modules/events": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz",
+      "integrity": "sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ=",
+      "dev": true,
+      "engines": {
+        "node": ">=0.4.x"
+      }
+    },
+    "node_modules/eventsource": {
+      "version": "0.1.6",
+      "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-0.1.6.tgz",
+      "integrity": "sha1-Cs7ehJ7X3RzMMsgRuxG5RNTykjI=",
+      "dev": true,
+      "dependencies": {
+        "original": ">=0.0.5"
+      },
+      "engines": {
+        "node": ">=0.8.0"
+      }
+    },
+    "node_modules/exit-on-epipe": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/exit-on-epipe/-/exit-on-epipe-1.0.1.tgz",
+      "integrity": "sha512-h2z5mrROTxce56S+pnvAV890uu7ls7f1kEvVGJbw1OlFH3/mlJ5bkXu0KRyW94v37zzHPiUd55iLn3DA7TjWpw==",
+      "engines": {
+        "node": ">=0.8"
+      }
+    },
+    "node_modules/expand-brackets": {
+      "version": "0.1.5",
+      "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz",
+      "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=",
+      "dev": true,
+      "dependencies": {
+        "is-posix-bracket": "^0.1.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/expand-range": {
+      "version": "1.8.2",
+      "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz",
+      "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=",
+      "dev": true,
+      "dependencies": {
+        "fill-range": "^2.1.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/express": {
+      "version": "3.16.9",
+      "resolved": "https://registry.npmjs.org/express/-/express-3.16.9.tgz",
+      "integrity": "sha1-mTdHvlZpcAKA2WgsthrROJOYR/w=",
+      "dependencies": {
+        "basic-auth": "1.0.0",
+        "buffer-crc32": "0.2.3",
+        "commander": "1.3.2",
+        "connect": "2.25.9",
+        "cookie": "0.1.2",
+        "cookie-signature": "1.0.4",
+        "debug": "1.0.4",
+        "depd": "0.4.4",
+        "escape-html": "1.0.1",
+        "fresh": "0.2.2",
+        "media-typer": "0.2.0",
+        "merge-descriptors": "0.0.2",
+        "methods": "1.1.0",
+        "mkdirp": "0.5.0",
+        "parseurl": "~1.3.0",
+        "proxy-addr": "1.0.1",
+        "range-parser": "1.0.0",
+        "send": "0.8.3",
+        "vary": "0.1.0"
+      },
+      "bin": {
+        "express": "bin/express"
+      },
+      "engines": {
+        "node": ">= 0.8.0"
+      }
+    },
+    "node_modules/express-session": {
+      "version": "1.7.6",
+      "resolved": "https://registry.npmjs.org/express-session/-/express-session-1.7.6.tgz",
+      "integrity": "sha1-4cNpuiF296/beed9ZdzYx8RuSKU=",
+      "dependencies": {
+        "buffer-crc32": "0.2.3",
+        "cookie": "0.1.2",
+        "cookie-signature": "1.0.4",
+        "debug": "1.0.4",
+        "depd": "0.4.4",
+        "on-headers": "~1.0.0",
+        "parseurl": "~1.3.0",
+        "uid-safe": "1.0.1",
+        "utils-merge": "1.0.0"
+      },
+      "engines": {
+        "node": ">= 0.8.0"
+      }
+    },
+    "node_modules/express-session/node_modules/debug": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npmjs.org/debug/-/debug-1.0.4.tgz",
+      "integrity": "sha1-W5wla9VLbsAigxdvqKDt5tFUy/g=",
+      "dependencies": {
+        "ms": "0.6.2"
+      }
+    },
+    "node_modules/express-session/node_modules/ms": {
+      "version": "0.6.2",
+      "resolved": "https://registry.npmjs.org/ms/-/ms-0.6.2.tgz",
+      "integrity": "sha1-2JwhJMb9wTU9Zai3e/GqxLGTcIw="
+    },
+    "node_modules/express-session/node_modules/uid-safe": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/uid-safe/-/uid-safe-1.0.1.tgz",
+      "integrity": "sha1-W9FIRgouhPVPGT/SA1LIw9feasg=",
+      "dependencies": {
+        "base64-url": "1",
+        "mz": "1"
+      }
+    },
+    "node_modules/express/node_modules/commander": {
+      "version": "1.3.2",
+      "resolved": "https://registry.npmjs.org/commander/-/commander-1.3.2.tgz",
+      "integrity": "sha1-io8w7GcKb91kr1LxkUuQfXnq1bU=",
+      "dependencies": {
+        "keypress": "0.1.x"
+      },
+      "engines": {
+        "node": ">= 0.6.x"
+      }
+    },
+    "node_modules/express/node_modules/debug": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npmjs.org/debug/-/debug-1.0.4.tgz",
+      "integrity": "sha1-W5wla9VLbsAigxdvqKDt5tFUy/g=",
+      "dependencies": {
+        "ms": "0.6.2"
+      }
+    },
+    "node_modules/express/node_modules/mkdirp": {
+      "version": "0.5.0",
+      "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.0.tgz",
+      "integrity": "sha1-HXMHam35hs2TROFecfzAWkyavxI=",
+      "deprecated": "Legacy versions of mkdirp are no longer supported. Please update to mkdirp 1.x. (Note that the API surface has changed to use Promises in 1.x.)",
+      "dependencies": {
+        "minimist": "0.0.8"
+      },
+      "bin": {
+        "mkdirp": "bin/cmd.js"
+      }
+    },
+    "node_modules/express/node_modules/ms": {
+      "version": "0.6.2",
+      "resolved": "https://registry.npmjs.org/ms/-/ms-0.6.2.tgz",
+      "integrity": "sha1-2JwhJMb9wTU9Zai3e/GqxLGTcIw="
+    },
+    "node_modules/express/node_modules/range-parser": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.0.0.tgz",
+      "integrity": "sha1-pLJkz+C+XONqvjdlrJwqJIdG28A="
+    },
+    "node_modules/express/node_modules/send": {
+      "version": "0.8.3",
+      "resolved": "https://registry.npmjs.org/send/-/send-0.8.3.tgz",
+      "integrity": "sha1-WTiGAE/LloobVyeBSjKziLO5kIM=",
+      "dependencies": {
+        "debug": "1.0.4",
+        "depd": "0.4.4",
+        "destroy": "1.0.3",
+        "escape-html": "1.0.1",
+        "fresh": "0.2.2",
+        "mime": "1.2.11",
+        "ms": "0.6.2",
+        "on-finished": "2.1.0",
+        "range-parser": "~1.0.0"
+      },
+      "engines": {
+        "node": ">= 0.8.0"
+      }
+    },
+    "node_modules/express/node_modules/vary": {
+      "version": "0.1.0",
+      "resolved": "https://registry.npmjs.org/vary/-/vary-0.1.0.tgz",
+      "integrity": "sha1-3wlFiZ6TwMxb0YzIMh2dIedPYXY=",
+      "engines": {
+        "node": ">= 0.8.0"
+      }
+    },
+    "node_modules/extend": {
+      "version": "1.2.1",
+      "resolved": "https://registry.npmjs.org/extend/-/extend-1.2.1.tgz",
+      "integrity": "sha1-oPX9bPyDpf5J72mNYOyKYk3UV2w=",
+      "dev": true
+    },
+    "node_modules/extglob": {
+      "version": "0.3.2",
+      "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz",
+      "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=",
+      "dev": true,
+      "dependencies": {
+        "is-extglob": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/fast-levenshtein": {
+      "version": "2.0.6",
+      "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
+      "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc="
+    },
+    "node_modules/faye-websocket": {
+      "version": "0.10.0",
+      "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.10.0.tgz",
+      "integrity": "sha1-TkkvjQTftviQA1B/btvy1QHnxvQ=",
+      "dev": true,
+      "dependencies": {
+        "websocket-driver": ">=0.5.1"
+      },
+      "engines": {
+        "node": ">=0.4.0"
+      }
+    },
+    "node_modules/filename-regex": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz",
+      "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/fill-range": {
+      "version": "2.2.4",
+      "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.4.tgz",
+      "integrity": "sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q==",
+      "dev": true,
+      "dependencies": {
+        "is-number": "^2.1.0",
+        "isobject": "^2.0.0",
+        "randomatic": "^3.0.0",
+        "repeat-element": "^1.1.2",
+        "repeat-string": "^1.5.2"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/finalhandler": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.1.tgz",
+      "integrity": "sha512-Y1GUDo39ez4aHAw7MysnUD5JzYX+WaIj8I57kO3aEPT1fFRL4sr7mjei97FgnwhAyyzRYmQZaTHb2+9uZ1dPtg==",
+      "dev": true,
+      "dependencies": {
+        "debug": "2.6.9",
+        "encodeurl": "~1.0.2",
+        "escape-html": "~1.0.3",
+        "on-finished": "~2.3.0",
+        "parseurl": "~1.3.2",
+        "statuses": "~1.4.0",
+        "unpipe": "~1.0.0"
+      },
+      "engines": {
+        "node": ">= 0.8"
+      }
+    },
+    "node_modules/finalhandler/node_modules/debug": {
+      "version": "2.6.9",
+      "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+      "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+      "dev": true,
+      "dependencies": {
+        "ms": "2.0.0"
+      }
+    },
+    "node_modules/finalhandler/node_modules/ee-first": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
+      "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=",
+      "dev": true
+    },
+    "node_modules/finalhandler/node_modules/escape-html": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
+      "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=",
+      "dev": true
+    },
+    "node_modules/finalhandler/node_modules/on-finished": {
+      "version": "2.3.0",
+      "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
+      "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=",
+      "dev": true,
+      "dependencies": {
+        "ee-first": "1.1.1"
+      },
+      "engines": {
+        "node": ">= 0.8"
+      }
+    },
+    "node_modules/follow-redirects": {
+      "version": "1.13.1",
+      "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.13.1.tgz",
+      "integrity": "sha512-SSG5xmZh1mkPGyKzjZP8zLjltIfpW32Y5QpdNJyjcfGxK3qo3NDDkZOZSFiGn1A6SclQxY9GzEwAHQ3dmYRWpg==",
+      "dev": true,
+      "funding": [
+        {
+          "type": "individual",
+          "url": "https://github.com/sponsors/RubenVerborgh"
+        }
+      ],
+      "engines": {
+        "node": ">=4.0"
+      },
+      "peerDependenciesMeta": {
+        "debug": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/for-in": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz",
+      "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/for-own": {
+      "version": "0.1.5",
+      "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz",
+      "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=",
+      "dev": true,
+      "dependencies": {
+        "for-in": "^1.0.1"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/form-data": {
+      "version": "0.1.3",
+      "resolved": "https://registry.npmjs.org/form-data/-/form-data-0.1.3.tgz",
+      "integrity": "sha1-TuQ0bm61Ni6DRKAgdb2NvYxzc+o=",
+      "dev": true,
+      "dependencies": {
+        "async": "~0.9.0",
+        "combined-stream": "~0.0.4",
+        "mime": "~1.2.11"
+      },
+      "engines": {
+        "node": ">= 0.8"
+      }
+    },
+    "node_modules/form-data/node_modules/async": {
+      "version": "0.9.2",
+      "resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz",
+      "integrity": "sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0=",
+      "dev": true
+    },
+    "node_modules/formidable": {
+      "version": "1.0.14",
+      "resolved": "https://registry.npmjs.org/formidable/-/formidable-1.0.14.tgz",
+      "integrity": "sha1-Kz9MQRy7X91pXESEPiojUUpDIxo=",
+      "deprecated": "Please upgrade to latest, formidable@v2 or formidable@v3! Check these notes: https://bit.ly/2ZEqIau",
+      "dev": true,
+      "engines": {
+        "node": ">=0.8.0"
+      }
+    },
+    "node_modules/forwarded": {
+      "version": "0.1.2",
+      "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz",
+      "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=",
+      "dev": true,
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/frac": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/frac/-/frac-1.1.2.tgz",
+      "integrity": "sha512-w/XBfkibaTl3YDqASwfDUqkna4Z2p9cFSr1aHDt0WoMTECnRfBOv2WArlZILlqgWlmdIlALXGpM2AOhEk5W3IA==",
+      "engines": {
+        "node": ">=0.8"
+      }
+    },
+    "node_modules/fresh": {
+      "version": "0.2.2",
+      "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.2.2.tgz",
+      "integrity": "sha1-lzHc9WeMf660T7kDxPct9VGH+nc="
+    },
+    "node_modules/fsevents": {
+      "version": "1.2.9",
+      "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.9.tgz",
+      "integrity": "sha512-oeyj2H3EjjonWcFjD5NvZNE9Rqe4UW+nQBU2HNeKw0koVLEFIhtyETyAakeAM3de7Z/SW5kcA+fZUait9EApnw==",
+      "bundleDependencies": [
+        "node-pre-gyp"
+      ],
+      "deprecated": "fsevents 1 will break on node v14+ and could be using insecure binaries. Upgrade to fsevents 2.",
+      "dev": true,
+      "hasInstallScript": true,
+      "optional": true,
+      "os": [
+        "darwin"
+      ],
+      "dependencies": {
+        "nan": "^2.12.1",
+        "node-pre-gyp": "^0.12.0"
+      },
+      "engines": {
+        "node": ">=4.0"
+      }
+    },
+    "node_modules/fsevents/node_modules/abbrev": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
+      "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==",
+      "dev": true,
+      "inBundle": true,
+      "optional": true
+    },
+    "node_modules/fsevents/node_modules/ansi-regex": {
+      "version": "2.1.1",
+      "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
+      "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
+      "dev": true,
+      "inBundle": true,
+      "optional": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/fsevents/node_modules/aproba": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz",
+      "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==",
+      "dev": true,
+      "inBundle": true,
+      "optional": true
+    },
+    "node_modules/fsevents/node_modules/are-we-there-yet": {
+      "version": "1.1.5",
+      "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz",
+      "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==",
+      "dev": true,
+      "inBundle": true,
+      "optional": true,
+      "dependencies": {
+        "delegates": "^1.0.0",
+        "readable-stream": "^2.0.6"
+      }
+    },
+    "node_modules/fsevents/node_modules/balanced-match": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
+      "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
+      "dev": true,
+      "inBundle": true,
+      "optional": true
+    },
+    "node_modules/fsevents/node_modules/brace-expansion": {
+      "version": "1.1.11",
+      "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
+      "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+      "dev": true,
+      "inBundle": true,
+      "optional": true,
+      "dependencies": {
+        "balanced-match": "^1.0.0",
+        "concat-map": "0.0.1"
+      }
+    },
+    "node_modules/fsevents/node_modules/chownr": {
+      "version": "1.1.1",
+      "integrity": "sha512-j38EvO5+LHX84jlo6h4UzmOwi0UgW61WRyPtJz4qaadK5eY3BTS5TY/S1Stc3Uk2lIM6TPevAlULiEJwie860g==",
+      "dev": true,
+      "inBundle": true,
+      "optional": true
+    },
+    "node_modules/fsevents/node_modules/code-point-at": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz",
+      "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=",
+      "dev": true,
+      "inBundle": true,
+      "optional": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/fsevents/node_modules/concat-map": {
+      "version": "0.0.1",
+      "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
+      "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
+      "dev": true,
+      "inBundle": true,
+      "optional": true
+    },
+    "node_modules/fsevents/node_modules/console-control-strings": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz",
+      "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=",
+      "dev": true,
+      "inBundle": true,
+      "optional": true
+    },
+    "node_modules/fsevents/node_modules/core-util-is": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
+      "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=",
+      "dev": true,
+      "inBundle": true,
+      "optional": true
+    },
+    "node_modules/fsevents/node_modules/debug": {
+      "version": "4.1.1",
+      "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
+      "deprecated": "Debug versions >=3.2.0 <3.2.7 || >=4 <4.3.1 have a low-severity ReDos regression when used in a Node.js environment. It is recommended you upgrade to 3.2.7 or 4.3.1. (https://github.com/visionmedia/debug/issues/797)",
+      "dev": true,
+      "inBundle": true,
+      "optional": true,
+      "dependencies": {
+        "ms": "^2.1.1"
+      }
+    },
+    "node_modules/fsevents/node_modules/deep-extend": {
+      "version": "0.6.0",
+      "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz",
+      "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==",
+      "dev": true,
+      "inBundle": true,
+      "optional": true,
+      "engines": {
+        "node": ">=4.0.0"
+      }
+    },
+    "node_modules/fsevents/node_modules/delegates": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz",
+      "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=",
+      "dev": true,
+      "inBundle": true,
+      "optional": true
+    },
+    "node_modules/fsevents/node_modules/detect-libc": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz",
+      "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=",
+      "dev": true,
+      "inBundle": true,
+      "optional": true,
+      "bin": {
+        "detect-libc": "bin/detect-libc.js"
+      },
+      "engines": {
+        "node": ">=0.10"
+      }
+    },
+    "node_modules/fsevents/node_modules/fs-minipass": {
+      "version": "1.2.5",
+      "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.5.tgz",
+      "integrity": "sha512-JhBl0skXjUPCFH7x6x61gQxrKyXsxB5gcgePLZCwfyCGGsTISMoIeObbrvVeP6Xmyaudw4TT43qV2Gz+iyd2oQ==",
+      "dev": true,
+      "inBundle": true,
+      "optional": true,
+      "dependencies": {
+        "minipass": "^2.2.1"
+      }
+    },
+    "node_modules/fsevents/node_modules/fs.realpath": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
+      "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
+      "dev": true,
+      "inBundle": true,
+      "optional": true
+    },
+    "node_modules/fsevents/node_modules/gauge": {
+      "version": "2.7.4",
+      "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz",
+      "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=",
+      "dev": true,
+      "inBundle": true,
+      "optional": true,
+      "dependencies": {
+        "aproba": "^1.0.3",
+        "console-control-strings": "^1.0.0",
+        "has-unicode": "^2.0.0",
+        "object-assign": "^4.1.0",
+        "signal-exit": "^3.0.0",
+        "string-width": "^1.0.1",
+        "strip-ansi": "^3.0.1",
+        "wide-align": "^1.1.0"
+      }
+    },
+    "node_modules/fsevents/node_modules/glob": {
+      "version": "7.1.3",
+      "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==",
+      "dev": true,
+      "inBundle": true,
+      "optional": true,
+      "dependencies": {
+        "fs.realpath": "^1.0.0",
+        "inflight": "^1.0.4",
+        "inherits": "2",
+        "minimatch": "^3.0.4",
+        "once": "^1.3.0",
+        "path-is-absolute": "^1.0.0"
+      },
+      "engines": {
+        "node": "*"
+      }
+    },
+    "node_modules/fsevents/node_modules/has-unicode": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz",
+      "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=",
+      "dev": true,
+      "inBundle": true,
+      "optional": true
+    },
+    "node_modules/fsevents/node_modules/iconv-lite": {
+      "version": "0.4.24",
+      "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
+      "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
+      "dev": true,
+      "inBundle": true,
+      "optional": true,
+      "dependencies": {
+        "safer-buffer": ">= 2.1.2 < 3"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/fsevents/node_modules/ignore-walk": {
+      "version": "3.0.1",
+      "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.1.tgz",
+      "integrity": "sha512-DTVlMx3IYPe0/JJcYP7Gxg7ttZZu3IInhuEhbchuqneY9wWe5Ojy2mXLBaQFUQmo0AW2r3qG7m1mg86js+gnlQ==",
+      "dev": true,
+      "inBundle": true,
+      "optional": true,
+      "dependencies": {
+        "minimatch": "^3.0.4"
+      }
+    },
+    "node_modules/fsevents/node_modules/inflight": {
+      "version": "1.0.6",
+      "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
+      "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
+      "dev": true,
+      "inBundle": true,
+      "optional": true,
+      "dependencies": {
+        "once": "^1.3.0",
+        "wrappy": "1"
+      }
+    },
+    "node_modules/fsevents/node_modules/inherits": {
+      "version": "2.0.3",
+      "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
+      "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
+      "dev": true,
+      "inBundle": true,
+      "optional": true
+    },
+    "node_modules/fsevents/node_modules/ini": {
+      "version": "1.3.5",
+      "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz",
+      "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==",
+      "deprecated": "Please update to ini >=1.3.6 to avoid a prototype pollution issue",
+      "dev": true,
+      "inBundle": true,
+      "optional": true,
+      "engines": {
+        "node": "*"
+      }
+    },
+    "node_modules/fsevents/node_modules/is-fullwidth-code-point": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
+      "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
+      "dev": true,
+      "inBundle": true,
+      "optional": true,
+      "dependencies": {
+        "number-is-nan": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/fsevents/node_modules/isarray": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+      "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
+      "dev": true,
+      "inBundle": true,
+      "optional": true
+    },
+    "node_modules/fsevents/node_modules/minimatch": {
+      "version": "3.0.4",
+      "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
+      "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
+      "dev": true,
+      "inBundle": true,
+      "optional": true,
+      "dependencies": {
+        "brace-expansion": "^1.1.7"
+      },
+      "engines": {
+        "node": "*"
+      }
+    },
+    "node_modules/fsevents/node_modules/minimist": {
+      "version": "0.0.8",
+      "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
+      "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=",
+      "dev": true,
+      "inBundle": true,
+      "optional": true
+    },
+    "node_modules/fsevents/node_modules/minipass": {
+      "version": "2.3.5",
+      "integrity": "sha512-Gi1W4k059gyRbyVUZQ4mEqLm0YIUiGYfvxhF6SIlk3ui1WVxMTGfGdQ2SInh3PDrRTVvPKgULkpJtT4RH10+VA==",
+      "dev": true,
+      "inBundle": true,
+      "optional": true,
+      "dependencies": {
+        "safe-buffer": "^5.1.2",
+        "yallist": "^3.0.0"
+      }
+    },
+    "node_modules/fsevents/node_modules/minizlib": {
+      "version": "1.2.1",
+      "integrity": "sha512-7+4oTUOWKg7AuL3vloEWekXY2/D20cevzsrNT2kGWm+39J9hGTCBv8VI5Pm5lXZ/o3/mdR4f8rflAPhnQb8mPA==",
+      "dev": true,
+      "inBundle": true,
+      "optional": true,
+      "dependencies": {
+        "minipass": "^2.2.1"
+      }
+    },
+    "node_modules/fsevents/node_modules/mkdirp": {
+      "version": "0.5.1",
+      "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
+      "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
+      "deprecated": "Legacy versions of mkdirp are no longer supported. Please update to mkdirp 1.x. (Note that the API surface has changed to use Promises in 1.x.)",
+      "dev": true,
+      "inBundle": true,
+      "optional": true,
+      "dependencies": {
+        "minimist": "0.0.8"
+      },
+      "bin": {
+        "mkdirp": "bin/cmd.js"
+      }
+    },
+    "node_modules/fsevents/node_modules/ms": {
+      "version": "2.1.1",
+      "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==",
+      "dev": true,
+      "inBundle": true,
+      "optional": true
+    },
+    "node_modules/fsevents/node_modules/nan": {
+      "version": "2.14.0",
+      "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz",
+      "integrity": "sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==",
+      "dev": true,
+      "optional": true
+    },
+    "node_modules/fsevents/node_modules/needle": {
+      "version": "2.3.0",
+      "integrity": "sha512-QBZu7aAFR0522EyaXZM0FZ9GLpq6lvQ3uq8gteiDUp7wKdy0lSd2hPlgFwVuW1CBkfEs9PfDQsQzZghLs/psdg==",
+      "dev": true,
+      "inBundle": true,
+      "optional": true,
+      "dependencies": {
+        "debug": "^4.1.0",
+        "iconv-lite": "^0.4.4",
+        "sax": "^1.2.4"
+      },
+      "bin": {
+        "needle": "bin/needle"
+      },
+      "engines": {
+        "node": ">= 4.4.x"
+      }
+    },
+    "node_modules/fsevents/node_modules/node-pre-gyp": {
+      "version": "0.12.0",
+      "integrity": "sha512-4KghwV8vH5k+g2ylT+sLTjy5wmUOb9vPhnM8NHvRf9dHmnW/CndrFXy2aRPaPST6dugXSdHXfeaHQm77PIz/1A==",
+      "deprecated": "Please upgrade to @mapbox/node-pre-gyp: the non-scoped node-pre-gyp package is deprecated and only the @mapbox scoped package will recieve updates in the future",
+      "dev": true,
+      "inBundle": true,
+      "optional": true,
+      "dependencies": {
+        "detect-libc": "^1.0.2",
+        "mkdirp": "^0.5.1",
+        "needle": "^2.2.1",
+        "nopt": "^4.0.1",
+        "npm-packlist": "^1.1.6",
+        "npmlog": "^4.0.2",
+        "rc": "^1.2.7",
+        "rimraf": "^2.6.1",
+        "semver": "^5.3.0",
+        "tar": "^4"
+      },
+      "bin": {
+        "node-pre-gyp": "bin/node-pre-gyp"
+      }
+    },
+    "node_modules/fsevents/node_modules/nopt": {
+      "version": "4.0.1",
+      "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.1.tgz",
+      "integrity": "sha1-0NRoWv1UFRk8jHUFYC0NF81kR00=",
+      "dev": true,
+      "inBundle": true,
+      "optional": true,
+      "dependencies": {
+        "abbrev": "1",
+        "osenv": "^0.1.4"
+      },
+      "bin": {
+        "nopt": "bin/nopt.js"
+      }
+    },
+    "node_modules/fsevents/node_modules/npm-bundled": {
+      "version": "1.0.6",
+      "integrity": "sha512-8/JCaftHwbd//k6y2rEWp6k1wxVfpFzB6t1p825+cUb7Ym2XQfhwIC5KwhrvzZRJu+LtDE585zVaS32+CGtf0g==",
+      "dev": true,
+      "inBundle": true,
+      "optional": true
+    },
+    "node_modules/fsevents/node_modules/npm-packlist": {
+      "version": "1.4.1",
+      "integrity": "sha512-+TcdO7HJJ8peiiYhvPxsEDhF3PJFGUGRcFsGve3vxvxdcpO2Z4Z7rkosRM0kWj6LfbK/P0gu3dzk5RU1ffvFcw==",
+      "dev": true,
+      "inBundle": true,
+      "optional": true,
+      "dependencies": {
+        "ignore-walk": "^3.0.1",
+        "npm-bundled": "^1.0.1"
+      }
+    },
+    "node_modules/fsevents/node_modules/npmlog": {
+      "version": "4.1.2",
+      "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz",
+      "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==",
+      "dev": true,
+      "inBundle": true,
+      "optional": true,
+      "dependencies": {
+        "are-we-there-yet": "~1.1.2",
+        "console-control-strings": "~1.1.0",
+        "gauge": "~2.7.3",
+        "set-blocking": "~2.0.0"
+      }
+    },
+    "node_modules/fsevents/node_modules/number-is-nan": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz",
+      "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=",
+      "dev": true,
+      "inBundle": true,
+      "optional": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/fsevents/node_modules/object-assign": {
+      "version": "4.1.1",
+      "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
+      "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=",
+      "dev": true,
+      "inBundle": true,
+      "optional": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/fsevents/node_modules/once": {
+      "version": "1.4.0",
+      "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
+      "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
+      "dev": true,
+      "inBundle": true,
+      "optional": true,
+      "dependencies": {
+        "wrappy": "1"
+      }
+    },
+    "node_modules/fsevents/node_modules/os-homedir": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz",
+      "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=",
+      "dev": true,
+      "inBundle": true,
+      "optional": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/fsevents/node_modules/os-tmpdir": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
+      "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=",
+      "dev": true,
+      "inBundle": true,
+      "optional": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/fsevents/node_modules/osenv": {
+      "version": "0.1.5",
+      "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz",
+      "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==",
+      "dev": true,
+      "inBundle": true,
+      "optional": true,
+      "dependencies": {
+        "os-homedir": "^1.0.0",
+        "os-tmpdir": "^1.0.0"
+      }
+    },
+    "node_modules/fsevents/node_modules/path-is-absolute": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
+      "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
+      "dev": true,
+      "inBundle": true,
+      "optional": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/fsevents/node_modules/process-nextick-args": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz",
+      "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==",
+      "dev": true,
+      "inBundle": true,
+      "optional": true
+    },
+    "node_modules/fsevents/node_modules/rc": {
+      "version": "1.2.8",
+      "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz",
+      "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==",
+      "dev": true,
+      "inBundle": true,
+      "optional": true,
+      "dependencies": {
+        "deep-extend": "^0.6.0",
+        "ini": "~1.3.0",
+        "minimist": "^1.2.0",
+        "strip-json-comments": "~2.0.1"
+      },
+      "bin": {
+        "rc": "cli.js"
+      }
+    },
+    "node_modules/fsevents/node_modules/rc/node_modules/minimist": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
+      "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
+      "dev": true,
+      "inBundle": true,
+      "optional": true
+    },
+    "node_modules/fsevents/node_modules/readable-stream": {
+      "version": "2.3.6",
+      "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
+      "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
+      "dev": true,
+      "inBundle": true,
+      "optional": true,
+      "dependencies": {
+        "core-util-is": "~1.0.0",
+        "inherits": "~2.0.3",
+        "isarray": "~1.0.0",
+        "process-nextick-args": "~2.0.0",
+        "safe-buffer": "~5.1.1",
+        "string_decoder": "~1.1.1",
+        "util-deprecate": "~1.0.1"
+      }
+    },
+    "node_modules/fsevents/node_modules/rimraf": {
+      "version": "2.6.3",
+      "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==",
+      "dev": true,
+      "inBundle": true,
+      "optional": true,
+      "dependencies": {
+        "glob": "^7.1.3"
+      },
+      "bin": {
+        "rimraf": "bin.js"
+      }
+    },
+    "node_modules/fsevents/node_modules/safe-buffer": {
+      "version": "5.1.2",
+      "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
+      "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
+      "dev": true,
+      "inBundle": true,
+      "optional": true
+    },
+    "node_modules/fsevents/node_modules/safer-buffer": {
+      "version": "2.1.2",
+      "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
+      "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
+      "dev": true,
+      "inBundle": true,
+      "optional": true
+    },
+    "node_modules/fsevents/node_modules/sax": {
+      "version": "1.2.4",
+      "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz",
+      "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==",
+      "dev": true,
+      "inBundle": true,
+      "optional": true
+    },
+    "node_modules/fsevents/node_modules/semver": {
+      "version": "5.7.0",
+      "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==",
+      "dev": true,
+      "inBundle": true,
+      "optional": true,
+      "bin": {
+        "semver": "bin/semver"
+      }
+    },
+    "node_modules/fsevents/node_modules/set-blocking": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
+      "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=",
+      "dev": true,
+      "inBundle": true,
+      "optional": true
+    },
+    "node_modules/fsevents/node_modules/signal-exit": {
+      "version": "3.0.2",
+      "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz",
+      "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=",
+      "dev": true,
+      "inBundle": true,
+      "optional": true
+    },
+    "node_modules/fsevents/node_modules/string_decoder": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+      "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+      "dev": true,
+      "inBundle": true,
+      "optional": true,
+      "dependencies": {
+        "safe-buffer": "~5.1.0"
+      }
+    },
+    "node_modules/fsevents/node_modules/string-width": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
+      "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
+      "dev": true,
+      "inBundle": true,
+      "optional": true,
+      "dependencies": {
+        "code-point-at": "^1.0.0",
+        "is-fullwidth-code-point": "^1.0.0",
+        "strip-ansi": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/fsevents/node_modules/strip-ansi": {
+      "version": "3.0.1",
+      "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
+      "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
+      "dev": true,
+      "inBundle": true,
+      "optional": true,
+      "dependencies": {
+        "ansi-regex": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/fsevents/node_modules/strip-json-comments": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz",
+      "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=",
+      "dev": true,
+      "inBundle": true,
+      "optional": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/fsevents/node_modules/tar": {
+      "version": "4.4.8",
+      "integrity": "sha512-LzHF64s5chPQQS0IYBn9IN5h3i98c12bo4NCO7e0sGM2llXQ3p2FGC5sdENN4cTW48O915Sh+x+EXx7XW96xYQ==",
+      "dev": true,
+      "inBundle": true,
+      "optional": true,
+      "dependencies": {
+        "chownr": "^1.1.1",
+        "fs-minipass": "^1.2.5",
+        "minipass": "^2.3.4",
+        "minizlib": "^1.1.1",
+        "mkdirp": "^0.5.0",
+        "safe-buffer": "^5.1.2",
+        "yallist": "^3.0.2"
+      },
+      "engines": {
+        "node": ">=4.5"
+      }
+    },
+    "node_modules/fsevents/node_modules/util-deprecate": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
+      "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=",
+      "dev": true,
+      "inBundle": true,
+      "optional": true
+    },
+    "node_modules/fsevents/node_modules/wide-align": {
+      "version": "1.1.3",
+      "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz",
+      "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==",
+      "dev": true,
+      "inBundle": true,
+      "optional": true,
+      "dependencies": {
+        "string-width": "^1.0.2 || 2"
+      }
+    },
+    "node_modules/fsevents/node_modules/wrappy": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
+      "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
+      "dev": true,
+      "inBundle": true,
+      "optional": true
+    },
+    "node_modules/fsevents/node_modules/yallist": {
+      "version": "3.0.3",
+      "integrity": "sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A==",
+      "dev": true,
+      "inBundle": true,
+      "optional": true
+    },
+    "node_modules/functionally": {
+      "version": "0.6.2",
+      "resolved": "https://registry.npmjs.org/functionally/-/functionally-0.6.2.tgz",
+      "integrity": "sha1-uptKxN7AgH3sKJwlGz9WUVmdMtM=",
+      "dev": true,
+      "dependencies": {
+        "newify": "~1.1.9"
+      }
+    },
+    "node_modules/glob": {
+      "version": "5.0.15",
+      "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz",
+      "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=",
+      "dev": true,
+      "dependencies": {
+        "inflight": "^1.0.4",
+        "inherits": "2",
+        "minimatch": "2 || 3",
+        "once": "^1.3.0",
+        "path-is-absolute": "^1.0.0"
+      },
+      "engines": {
+        "node": "*"
+      }
+    },
+    "node_modules/glob-base": {
+      "version": "0.3.0",
+      "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz",
+      "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=",
+      "dev": true,
+      "dependencies": {
+        "glob-parent": "^2.0.0",
+        "is-glob": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/glob-parent": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz",
+      "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=",
+      "dev": true,
+      "dependencies": {
+        "is-glob": "^2.0.0"
+      }
+    },
+    "node_modules/graceful-fs": {
+      "version": "4.1.11",
+      "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz",
+      "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=",
+      "dev": true,
+      "engines": {
+        "node": ">=0.4.0"
+      }
+    },
+    "node_modules/graceful-readlink": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz",
+      "integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU="
+    },
+    "node_modules/harb": {
+      "version": "0.1.1",
+      "resolved": "https://registry.npmjs.org/harb/-/harb-0.1.1.tgz",
+      "integrity": "sha1-uCObri8HJLZaqvLnTp6xWgTbUOs=",
+      "deprecated": "harb has been merged into xlsx",
+      "dependencies": {
+        "babyparse": "0.2.1",
+        "codepage": "",
+        "commander": "",
+        "exit-on-epipe": "",
+        "ssf": "0.8.2"
+      },
+      "bin": {
+        "harb": "bin/harb.njs"
+      },
+      "engines": {
+        "node": ">=0.8"
+      }
+    },
+    "node_modules/harb/node_modules/codepage": {
+      "version": "1.14.0",
+      "resolved": "https://registry.npmjs.org/codepage/-/codepage-1.14.0.tgz",
+      "integrity": "sha1-jL4lSBMjVZ19MHVxsP/5HnodL5k=",
+      "dependencies": {
+        "commander": "~2.14.1",
+        "exit-on-epipe": "~1.0.1"
+      },
+      "bin": {
+        "codepage": "bin/codepage.njs"
+      },
+      "engines": {
+        "node": ">=0.8"
+      }
+    },
+    "node_modules/harb/node_modules/codepage/node_modules/commander": {
+      "version": "2.14.1",
+      "resolved": "https://registry.npmjs.org/commander/-/commander-2.14.1.tgz",
+      "integrity": "sha512-+YR16o3rK53SmWHU3rEM3tPAh2rwb1yPcQX5irVn7mb0gXbwuCCrnkbV5+PBfETdfg1vui07nM6PCG1zndcjQw=="
+    },
+    "node_modules/harb/node_modules/commander": {
+      "version": "6.2.1",
+      "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz",
+      "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==",
+      "engines": {
+        "node": ">= 6"
+      }
+    },
+    "node_modules/harb/node_modules/exit-on-epipe": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/exit-on-epipe/-/exit-on-epipe-1.0.1.tgz",
+      "integrity": "sha512-h2z5mrROTxce56S+pnvAV890uu7ls7f1kEvVGJbw1OlFH3/mlJ5bkXu0KRyW94v37zzHPiUd55iLn3DA7TjWpw==",
+      "engines": {
+        "node": ">=0.8"
+      }
+    },
+    "node_modules/harb/node_modules/frac": {
+      "version": "0.3.1",
+      "resolved": "https://registry.npmjs.org/frac/-/frac-0.3.1.tgz",
+      "integrity": "sha1-V3Z3t/3L5vr3xGHxgB00E3zaQ1Q=",
+      "engines": {
+        "node": ">=0.8"
+      }
+    },
+    "node_modules/harb/node_modules/ssf": {
+      "version": "0.8.2",
+      "resolved": "https://registry.npmjs.org/ssf/-/ssf-0.8.2.tgz",
+      "integrity": "sha1-udTcahwbz3b4q/qW19dlb7Kr7NY=",
+      "dependencies": {
+        "colors": "0.6.2",
+        "frac": "0.3.1",
+        "voc": ""
+      },
+      "bin": {
+        "ssf": "bin/ssf.njs"
+      },
+      "engines": {
+        "node": ">=0.8"
+      }
+    },
+    "node_modules/has-binary-data": {
+      "version": "0.1.1",
+      "resolved": "https://registry.npmjs.org/has-binary-data/-/has-binary-data-0.1.1.tgz",
+      "integrity": "sha1-4QdJ+4eCilLflvQIZYfrSgOWZDk=",
+      "dependencies": {
+        "isarray": "0.0.1"
+      }
+    },
+    "node_modules/has-cors": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/has-cors/-/has-cors-1.0.3.tgz",
+      "integrity": "sha1-UCrLmzEE2sM90mMOry+IiwuvTLM=",
+      "dependencies": {
+        "global": "https://github.com/component/global/archive/v2.0.1.tar.gz"
+      }
+    },
+    "node_modules/has-cors/node_modules/global": {
+      "version": "2.0.1",
+      "resolved": "https://github.com/component/global/archive/v2.0.1.tar.gz",
+      "integrity": "sha512-O91OcV/NbdmQJPHaRu2ekSP7bqFRLWgqSwaJvqHPZHUwmHBagQYTOra29+LnzzG3lZkXH1ANzHzfCxtAPM9HMA==",
+      "license": "MIT"
+    },
+    "node_modules/has-flag": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz",
+      "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/http-errors": {
+      "version": "1.6.3",
+      "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz",
+      "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=",
+      "dev": true,
+      "dependencies": {
+        "depd": "~1.1.2",
+        "inherits": "2.0.3",
+        "setprototypeof": "1.1.0",
+        "statuses": ">= 1.4.0 < 2"
+      },
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/http-errors/node_modules/depd": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
+      "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=",
+      "dev": true,
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/http-parser-js": {
+      "version": "0.4.13",
+      "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.4.13.tgz",
+      "integrity": "sha1-O9bW/ebjFyyTNMOzO2wZPYD+ETc=",
+      "dev": true
+    },
+    "node_modules/http-proxy": {
+      "version": "1.18.1",
+      "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz",
+      "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==",
+      "dev": true,
+      "dependencies": {
+        "eventemitter3": "^4.0.0",
+        "follow-redirects": "^1.0.0",
+        "requires-port": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=8.0.0"
+      }
+    },
+    "node_modules/http-proxy-middleware": {
+      "version": "0.17.4",
+      "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.17.4.tgz",
+      "integrity": "sha1-ZC6ISIUdZvCdTxJJEoRtuutBuDM=",
+      "dev": true,
+      "dependencies": {
+        "http-proxy": "^1.16.2",
+        "is-glob": "^3.1.0",
+        "lodash": "^4.17.2",
+        "micromatch": "^2.3.11"
+      }
+    },
+    "node_modules/http-proxy-middleware/node_modules/is-extglob": {
+      "version": "2.1.1",
+      "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
+      "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/http-proxy-middleware/node_modules/is-glob": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz",
+      "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=",
+      "dev": true,
+      "dependencies": {
+        "is-extglob": "^2.1.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/https-browserify": {
+      "version": "0.0.1",
+      "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-0.0.1.tgz",
+      "integrity": "sha1-P5E2XKvmC3ftDruiS0VOPgnZWoI=",
+      "dev": true
+    },
+    "node_modules/iconv-lite": {
+      "version": "0.4.24",
+      "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
+      "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
+      "dependencies": {
+        "safer-buffer": ">= 2.1.2 < 3"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/ieee754": {
+      "version": "1.1.12",
+      "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.12.tgz",
+      "integrity": "sha512-GguP+DRY+pJ3soyIiGPTvdiVXjZ+DbXOxGpXn3eMvNW4x4irjqXm4wHKscC+TfxSJ0yw/S1F24tqdMNsMZTiLA==",
+      "dev": true
+    },
+    "node_modules/indexof": {
+      "version": "0.0.1",
+      "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz",
+      "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10="
+    },
+    "node_modules/inflight": {
+      "version": "1.0.6",
+      "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
+      "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
+      "dev": true,
+      "dependencies": {
+        "once": "^1.3.0",
+        "wrappy": "1"
+      }
+    },
+    "node_modules/inherits": {
+      "version": "2.0.3",
+      "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
+      "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4="
+    },
+    "node_modules/interpret": {
+      "version": "0.6.6",
+      "resolved": "https://registry.npmjs.org/interpret/-/interpret-0.6.6.tgz",
+      "integrity": "sha1-/s16GOfOXKar+5U+H4YhOknxYls=",
+      "dev": true
+    },
+    "node_modules/ipaddr.js": {
+      "version": "0.1.2",
+      "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-0.1.2.tgz",
+      "integrity": "sha1-ah/T2FT1ACllw017vNm0qNSwRn4=",
+      "engines": {
+        "node": ">= 0.2.5"
+      }
+    },
+    "node_modules/is-binary-path": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz",
+      "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=",
+      "dev": true,
+      "dependencies": {
+        "binary-extensions": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/is-buffer": {
+      "version": "1.1.6",
+      "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
+      "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
+      "dev": true
+    },
+    "node_modules/is-dotfile": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz",
+      "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/is-equal-shallow": {
+      "version": "0.1.3",
+      "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz",
+      "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=",
+      "dev": true,
+      "dependencies": {
+        "is-primitive": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/is-extendable": {
+      "version": "0.1.1",
+      "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
+      "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/is-extglob": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz",
+      "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/is-glob": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz",
+      "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=",
+      "dev": true,
+      "dependencies": {
+        "is-extglob": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/is-number": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz",
+      "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=",
+      "dev": true,
+      "dependencies": {
+        "kind-of": "^3.0.2"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/is-posix-bracket": {
+      "version": "0.1.1",
+      "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz",
+      "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/is-primitive": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz",
+      "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/isarray": {
+      "version": "0.0.1",
+      "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
+      "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8="
+    },
+    "node_modules/isobject": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz",
+      "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=",
+      "dev": true,
+      "dependencies": {
+        "isarray": "1.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/isobject/node_modules/isarray": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+      "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
+      "dev": true
+    },
+    "node_modules/j": {
+      "version": "0.4.5",
+      "resolved": "https://registry.npmjs.org/j/-/j-0.4.5.tgz",
+      "integrity": "sha1-As8p8d2+VOUnJj0HVNbo0hemBk4=",
+      "dependencies": {
+        "commander": "",
+        "concat-stream": "",
+        "exit-on-epipe": "",
+        "harb": "~0.1.1",
+        "xlsjs": "~0.7.6",
+        "xlsx": "~0.9.1"
+      },
+      "bin": {
+        "j": "bin/j.njs"
+      },
+      "engines": {
+        "node": ">=0.8"
+      }
+    },
+    "node_modules/j/node_modules/adler-32": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/adler-32/-/adler-32-1.0.0.tgz",
+      "integrity": "sha1-KHKKcXVvYpZm3RZTzYB5Op3xhlE=",
+      "dependencies": {
+        "concat-stream": "",
+        "exit-on-epipe": "",
+        "printj": ""
+      },
+      "bin": {
+        "adler32": "bin/adler32.njs"
+      },
+      "engines": {
+        "node": ">=0.8"
+      }
+    },
+    "node_modules/j/node_modules/codepage": {
+      "version": "1.8.1",
+      "resolved": "https://registry.npmjs.org/codepage/-/codepage-1.8.1.tgz",
+      "integrity": "sha1-8aAJ1SYdwnVGKLrLb7vw5uKr/6o=",
+      "dependencies": {
+        "commander": "",
+        "concat-stream": "",
+        "exit-on-epipe": "",
+        "voc": ""
+      },
+      "bin": {
+        "codepage": "bin/codepage.njs"
+      },
+      "engines": {
+        "node": ">=0.8"
+      }
+    },
+    "node_modules/j/node_modules/commander": {
+      "version": "6.2.1",
+      "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz",
+      "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==",
+      "engines": {
+        "node": ">= 6"
+      }
+    },
+    "node_modules/j/node_modules/crc-32": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.0.2.tgz",
+      "integrity": "sha1-CVB5hO6bzOO9G4hh8N6KsQroGH0=",
+      "dependencies": {
+        "exit-on-epipe": "",
+        "printj": ""
+      },
+      "bin": {
+        "crc32": "bin/crc32.njs"
+      },
+      "engines": {
+        "node": ">=0.8"
+      }
+    },
+    "node_modules/j/node_modules/exit-on-epipe": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/exit-on-epipe/-/exit-on-epipe-1.0.1.tgz",
+      "integrity": "sha512-h2z5mrROTxce56S+pnvAV890uu7ls7f1kEvVGJbw1OlFH3/mlJ5bkXu0KRyW94v37zzHPiUd55iLn3DA7TjWpw==",
+      "engines": {
+        "node": ">=0.8"
+      }
+    },
+    "node_modules/j/node_modules/frac": {
+      "version": "1.0.6",
+      "resolved": "https://registry.npmjs.org/frac/-/frac-1.0.6.tgz",
+      "integrity": "sha1-mg38I5VoUqizIGI7688b6eoEgik=",
+      "dependencies": {
+        "voc": ""
+      },
+      "engines": {
+        "node": ">=0.8"
+      }
+    },
+    "node_modules/j/node_modules/printj": {
+      "version": "1.2.2",
+      "resolved": "https://registry.npmjs.org/printj/-/printj-1.2.2.tgz",
+      "integrity": "sha512-dx9nIry0Z12s5oebhenDCFQjj/IMVotLMbvFP6OJ+C3v+EV30mtYoj6QtaulFo+DbWCbpEeaqcLYMh6CRuVjsA==",
+      "bin": {
+        "printj": "bin/printj.njs"
+      },
+      "engines": {
+        "node": ">=0.8"
+      }
+    },
+    "node_modules/j/node_modules/ssf": {
+      "version": "0.9.4",
+      "resolved": "https://registry.npmjs.org/ssf/-/ssf-0.9.4.tgz",
+      "integrity": "sha1-jlepjBnbvx7dU/D4yef9UksPbJw=",
+      "dependencies": {
+        "colors": "0.6.2",
+        "frac": "~1.0.6",
+        "voc": ""
+      },
+      "bin": {
+        "ssf": "bin/ssf.njs"
+      },
+      "engines": {
+        "node": ">=0.8"
+      }
+    },
+    "node_modules/j/node_modules/xlsx": {
+      "version": "0.9.13",
+      "resolved": "https://registry.npmjs.org/xlsx/-/xlsx-0.9.13.tgz",
+      "integrity": "sha1-WGHRHhCh+ZtvK0keLRGad3fQZuc=",
+      "dependencies": {
+        "adler-32": "~1.0.0",
+        "cfb": "~0.11.1",
+        "codepage": "~1.8.0",
+        "commander": "~2.9.0",
+        "crc-32": "~1.0.2",
+        "exit-on-epipe": "~1.0.0",
+        "ssf": "~0.9.1"
+      },
+      "bin": {
+        "xlsx": "bin/xlsx.njs"
+      },
+      "engines": {
+        "node": ">=0.8"
+      }
+    },
+    "node_modules/j/node_modules/xlsx/node_modules/commander": {
+      "version": "2.9.0",
+      "resolved": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz",
+      "integrity": "sha1-nJkJQXbhIkDLItbFFGCYQA/g99Q=",
+      "dependencies": {
+        "graceful-readlink": ">= 1.0.0"
+      },
+      "engines": {
+        "node": ">= 0.6.x"
+      }
+    },
+    "node_modules/json3": {
+      "version": "3.2.6",
+      "resolved": "https://registry.npmjs.org/json3/-/json3-3.2.6.tgz",
+      "integrity": "sha1-9u/JPAagTemuxTBT3yVZuxniA4s=",
+      "deprecated": "Please use the native JSON object instead of JSON 3"
+    },
+    "node_modules/json5": {
+      "version": "0.5.1",
+      "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz",
+      "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=",
+      "dev": true,
+      "bin": {
+        "json5": "lib/cli.js"
+      }
+    },
+    "node_modules/jstransform": {
+      "version": "11.0.3",
+      "resolved": "https://registry.npmjs.org/jstransform/-/jstransform-11.0.3.tgz",
+      "integrity": "sha1-CaeJk+CuTU70SH9hVakfYZDLQiM=",
+      "dev": true,
+      "dependencies": {
+        "base62": "^1.1.0",
+        "commoner": "^0.10.1",
+        "esprima-fb": "^15001.1.0-dev-harmony-fb",
+        "object-assign": "^2.0.0",
+        "source-map": "^0.4.2"
+      },
+      "bin": {
+        "jstransform": "bin/jstransform"
+      },
+      "engines": {
+        "node": ">=0.8.8"
+      }
+    },
+    "node_modules/jstransform/node_modules/object-assign": {
+      "version": "2.1.1",
+      "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-2.1.1.tgz",
+      "integrity": "sha1-Q8NuXVaf+OSBbE76i+AtJpZ8GKo=",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/jstransform/node_modules/source-map": {
+      "version": "0.4.4",
+      "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz",
+      "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=",
+      "dev": true,
+      "dependencies": {
+        "amdefine": ">=0.0.4"
+      },
+      "engines": {
+        "node": ">=0.8.0"
+      }
+    },
+    "node_modules/keypress": {
+      "version": "0.1.0",
+      "resolved": "https://registry.npmjs.org/keypress/-/keypress-0.1.0.tgz",
+      "integrity": "sha1-SjGI1CkbZrT2XtuZ+AaqmuKTWSo="
+    },
+    "node_modules/kind-of": {
+      "version": "3.2.2",
+      "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+      "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+      "dev": true,
+      "dependencies": {
+        "is-buffer": "^1.1.5"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/lazy-cache": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz",
+      "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/levn": {
+      "version": "0.3.0",
+      "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz",
+      "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=",
+      "dependencies": {
+        "prelude-ls": "~1.1.2",
+        "type-check": "~0.3.2"
+      },
+      "engines": {
+        "node": ">= 0.8.0"
+      }
+    },
+    "node_modules/livescript": {
+      "version": "1.5.0",
+      "resolved": "https://registry.npmjs.org/livescript/-/livescript-1.5.0.tgz",
+      "integrity": "sha1-T+cSHEEhfkYI4zTrnL4XYuY+VWY=",
+      "dependencies": {
+        "optionator": "~0.8.1",
+        "prelude-ls": "~1.1.2",
+        "source-map": "^0.5.6"
+      },
+      "bin": {
+        "lsc": "bin/lsc"
+      },
+      "engines": {
+        "node": ">= 0.8.0"
+      }
+    },
+    "node_modules/livescript-loader": {
+      "version": "0.1.6",
+      "resolved": "https://registry.npmjs.org/livescript-loader/-/livescript-loader-0.1.6.tgz",
+      "integrity": "sha1-6oDmq5pB8zDREAAAGZnuxnXN91U=",
+      "dev": true,
+      "dependencies": {
+        "livescript": "^1.4.0",
+        "loader-utils": "0.2.x"
+      }
+    },
+    "node_modules/loader-utils": {
+      "version": "0.2.17",
+      "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.17.tgz",
+      "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=",
+      "dev": true,
+      "dependencies": {
+        "big.js": "^3.1.3",
+        "emojis-list": "^2.0.0",
+        "json5": "^0.5.0",
+        "object-assign": "^4.0.1"
+      }
+    },
+    "node_modules/lodash": {
+      "version": "4.17.20",
+      "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz",
+      "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==",
+      "dev": true
+    },
+    "node_modules/lodash.clonedeep": {
+      "version": "4.5.0",
+      "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz",
+      "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=",
+      "dev": true
+    },
+    "node_modules/longest": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz",
+      "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/math-random": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/math-random/-/math-random-1.0.1.tgz",
+      "integrity": "sha1-izqsWIuKZuSXXjzepn97sylgH6w=",
+      "dev": true
+    },
+    "node_modules/media-typer": {
+      "version": "0.2.0",
+      "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.2.0.tgz",
+      "integrity": "sha1-2KBlITrf6qLnYyGitt2jb/YzWYQ=",
+      "engines": {
+        "node": ">= 0.8.0"
+      }
+    },
+    "node_modules/memory-fs": {
+      "version": "0.3.0",
+      "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.3.0.tgz",
+      "integrity": "sha1-e8xrYp46Q+hx1+Kaymrop/FcuyA=",
+      "dev": true,
+      "dependencies": {
+        "errno": "^0.1.3",
+        "readable-stream": "^2.0.1"
+      }
+    },
+    "node_modules/merge-descriptors": {
+      "version": "0.0.2",
+      "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-0.0.2.tgz",
+      "integrity": "sha1-w2pSp4FDdRPFcnXzndnTF1FKyMc="
+    },
+    "node_modules/method-override": {
+      "version": "2.1.3",
+      "resolved": "https://registry.npmjs.org/method-override/-/method-override-2.1.3.tgz",
+      "integrity": "sha1-UR9BxPsdzNtqsYRNpdxuqBt8ETU=",
+      "dependencies": {
+        "debug": "1.0.4",
+        "methods": "1.1.0",
+        "parseurl": "~1.3.0",
+        "vary": "~1.0.0"
+      },
+      "engines": {
+        "node": ">= 0.8.0"
+      }
+    },
+    "node_modules/method-override/node_modules/debug": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npmjs.org/debug/-/debug-1.0.4.tgz",
+      "integrity": "sha1-W5wla9VLbsAigxdvqKDt5tFUy/g=",
+      "dependencies": {
+        "ms": "0.6.2"
+      }
+    },
+    "node_modules/method-override/node_modules/ms": {
+      "version": "0.6.2",
+      "resolved": "https://registry.npmjs.org/ms/-/ms-0.6.2.tgz",
+      "integrity": "sha1-2JwhJMb9wTU9Zai3e/GqxLGTcIw="
+    },
+    "node_modules/method-override/node_modules/vary": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/vary/-/vary-1.0.1.tgz",
+      "integrity": "sha1-meSYFWaihhGN+yuBc1ffeZM3bRA=",
+      "engines": {
+        "node": ">= 0.8"
+      }
+    },
+    "node_modules/methods": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.0.tgz",
+      "integrity": "sha1-XcpO4S31L/OwVhRZhqjwHLyGQ28="
+    },
+    "node_modules/micromatch": {
+      "version": "2.3.11",
+      "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz",
+      "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=",
+      "dev": true,
+      "dependencies": {
+        "arr-diff": "^2.0.0",
+        "array-unique": "^0.2.1",
+        "braces": "^1.8.2",
+        "expand-brackets": "^0.1.4",
+        "extglob": "^0.3.1",
+        "filename-regex": "^2.0.0",
+        "is-extglob": "^1.0.0",
+        "is-glob": "^2.0.1",
+        "kind-of": "^3.0.2",
+        "normalize-path": "^2.0.1",
+        "object.omit": "^2.0.0",
+        "parse-glob": "^3.0.4",
+        "regex-cache": "^0.4.2"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/mime": {
+      "version": "1.2.11",
+      "resolved": "https://registry.npmjs.org/mime/-/mime-1.2.11.tgz",
+      "integrity": "sha1-WCA+7Ybjpe8XrtK32evUfwpg3RA="
+    },
+    "node_modules/mime-db": {
+      "version": "1.35.0",
+      "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.35.0.tgz",
+      "integrity": "sha512-JWT/IcCTsB0Io3AhWUMjRqucrHSPsSf2xKLaRldJVULioggvkJvggZ3VXNNSRkCddE6D+BUI4HEIZIA2OjwIvg==",
+      "dev": true,
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/mime-types": {
+      "version": "2.1.19",
+      "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.19.tgz",
+      "integrity": "sha512-P1tKYHVSZ6uFo26mtnve4HQFE3koh1UWVkp8YUC+ESBHe945xWSoXuHHiGarDqcEZ+whpCDnlNw5LON0kLo+sw==",
+      "dev": true,
+      "dependencies": {
+        "mime-db": "~1.35.0"
+      },
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/minimatch": {
+      "version": "3.0.4",
+      "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
+      "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
+      "dependencies": {
+        "brace-expansion": "^1.1.7"
+      },
+      "engines": {
+        "node": "*"
+      }
+    },
+    "node_modules/minimist": {
+      "version": "0.0.8",
+      "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
+      "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0="
+    },
+    "node_modules/mkdirp": {
+      "version": "0.5.5",
+      "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz",
+      "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==",
+      "dev": true,
+      "dependencies": {
+        "minimist": "^1.2.5"
+      },
+      "bin": {
+        "mkdirp": "bin/cmd.js"
+      }
+    },
+    "node_modules/mkdirp/node_modules/minimist": {
+      "version": "1.2.5",
+      "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
+      "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==",
+      "dev": true
+    },
+    "node_modules/morgan": {
+      "version": "1.2.3",
+      "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.2.3.tgz",
+      "integrity": "sha1-Ow8XBN+QJVpUJZGrrNeXiRqMQKE=",
+      "dependencies": {
+        "basic-auth": "1.0.0",
+        "bytes": "1.0.0",
+        "depd": "0.4.4",
+        "on-finished": "2.1.0"
+      },
+      "engines": {
+        "node": ">= 0.8.0"
+      }
+    },
+    "node_modules/ms": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+      "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
+    },
+    "node_modules/multiparty": {
+      "version": "3.3.2",
+      "resolved": "https://registry.npmjs.org/multiparty/-/multiparty-3.3.2.tgz",
+      "integrity": "sha1-Nd5oBNwZZD5SSfPT473GyM4wHT8=",
+      "dependencies": {
+        "readable-stream": "~1.1.9",
+        "stream-counter": "~0.2.0"
+      },
+      "engines": {
+        "node": ">=0.8.0"
+      }
+    },
+    "node_modules/multiparty/node_modules/readable-stream": {
+      "version": "1.1.14",
+      "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz",
+      "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=",
+      "dependencies": {
+        "core-util-is": "~1.0.0",
+        "inherits": "~2.0.1",
+        "isarray": "0.0.1",
+        "string_decoder": "~0.10.x"
+      }
+    },
+    "node_modules/mz": {
+      "version": "1.3.0",
+      "resolved": "https://registry.npmjs.org/mz/-/mz-1.3.0.tgz",
+      "integrity": "sha1-BvCT/dmVagbTfhsegTROJ0eMQvA=",
+      "dependencies": {
+        "native-or-bluebird": "1",
+        "thenify": "3",
+        "thenify-all": "1"
+      }
+    },
+    "node_modules/native-or-bluebird": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/native-or-bluebird/-/native-or-bluebird-1.1.2.tgz",
+      "integrity": "sha1-OSHhECMtHreQ89rGG7NwUxx9NW4=",
+      "deprecated": "'native-or-bluebird' is deprecated. Please use 'any-promise' instead."
+    },
+    "node_modules/negotiator": {
+      "version": "0.4.7",
+      "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.4.7.tgz",
+      "integrity": "sha1-pBYPcXfsgGc4Yx0NMFIyXaQqvcg=",
+      "engines": {
+        "node": "*"
+      }
+    },
+    "node_modules/newify": {
+      "version": "1.1.9",
+      "resolved": "https://registry.npmjs.org/newify/-/newify-1.1.9.tgz",
+      "integrity": "sha1-P1mb0dRKTDiFGhvSW7tvfE1y2P8=",
+      "dev": true
+    },
+    "node_modules/next-tick": {
+      "version": "0.2.2",
+      "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-0.2.2.tgz",
+      "integrity": "sha1-ddpKkn7liH45BliABltzNkE7MQ0=",
+      "dev": true
+    },
+    "node_modules/node-libs-browser": {
+      "version": "0.7.0",
+      "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-0.7.0.tgz",
+      "integrity": "sha1-PicsCBnjCJNeJmdECNevDhSRuDs=",
+      "dev": true,
+      "dependencies": {
+        "assert": "^1.1.1",
+        "browserify-zlib": "^0.1.4",
+        "buffer": "^4.9.0",
+        "console-browserify": "^1.1.0",
+        "constants-browserify": "^1.0.0",
+        "crypto-browserify": "3.3.0",
+        "domain-browser": "^1.1.1",
+        "events": "^1.0.0",
+        "https-browserify": "0.0.1",
+        "os-browserify": "^0.2.0",
+        "path-browserify": "0.0.0",
+        "process": "^0.11.0",
+        "punycode": "^1.2.4",
+        "querystring-es3": "^0.2.0",
+        "readable-stream": "^2.0.5",
+        "stream-browserify": "^2.0.1",
+        "stream-http": "^2.3.1",
+        "string_decoder": "^0.10.25",
+        "timers-browserify": "^2.0.2",
+        "tty-browserify": "0.0.0",
+        "url": "^0.11.0",
+        "util": "^0.10.3",
+        "vm-browserify": "0.0.4"
+      }
+    },
+    "node_modules/node-uuid": {
+      "version": "1.4.1",
+      "resolved": "https://registry.npmjs.org/node-uuid/-/node-uuid-1.4.1.tgz",
+      "integrity": "sha1-Oa71EOWImj3KnIlbUGxzquG6wEg=",
+      "deprecated": "Use uuid module instead"
+    },
+    "node_modules/normalize-path": {
+      "version": "2.1.1",
+      "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz",
+      "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=",
+      "dev": true,
+      "dependencies": {
+        "remove-trailing-separator": "^1.0.1"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/object-assign": {
+      "version": "4.1.1",
+      "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
+      "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/object-component": {
+      "version": "0.0.3",
+      "resolved": "https://registry.npmjs.org/object-component/-/object-component-0.0.3.tgz",
+      "integrity": "sha1-8MaapQ78lbhmwYb0AKM3acsvEpE="
+    },
+    "node_modules/object.omit": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz",
+      "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=",
+      "dev": true,
+      "dependencies": {
+        "for-own": "^0.1.4",
+        "is-extendable": "^0.1.1"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/on-finished": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.1.0.tgz",
+      "integrity": "sha1-DFOfCSkej/rd4MiiWFD7LO3HAi0=",
+      "dependencies": {
+        "ee-first": "1.0.5"
+      }
+    },
+    "node_modules/on-headers": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.1.tgz",
+      "integrity": "sha1-ko9dD0cNSTQmUepnlLCFfBAGk/c=",
+      "engines": {
+        "node": ">= 0.8"
+      }
+    },
+    "node_modules/once": {
+      "version": "1.4.0",
+      "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
+      "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
+      "dev": true,
+      "dependencies": {
+        "wrappy": "1"
+      }
+    },
+    "node_modules/open": {
+      "version": "0.0.5",
+      "resolved": "https://registry.npmjs.org/open/-/open-0.0.5.tgz",
+      "integrity": "sha1-QsPhjslUZra/DcQvOilFw/DK2Pw=",
+      "dev": true,
+      "engines": {
+        "node": ">= 0.6.0"
+      }
+    },
+    "node_modules/optimist": {
+      "version": "0.6.1",
+      "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz",
+      "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=",
+      "dependencies": {
+        "minimist": "~0.0.1",
+        "wordwrap": "~0.0.2"
+      }
+    },
+    "node_modules/optimist/node_modules/wordwrap": {
+      "version": "0.0.3",
+      "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz",
+      "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=",
+      "engines": {
+        "node": ">=0.4.0"
+      }
+    },
+    "node_modules/optionator": {
+      "version": "0.8.2",
+      "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz",
+      "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=",
+      "dependencies": {
+        "deep-is": "~0.1.3",
+        "fast-levenshtein": "~2.0.4",
+        "levn": "~0.3.0",
+        "prelude-ls": "~1.1.2",
+        "type-check": "~0.3.2",
+        "wordwrap": "~1.0.0"
+      },
+      "engines": {
+        "node": ">= 0.8.0"
+      }
+    },
+    "node_modules/options": {
+      "version": "0.0.6",
+      "resolved": "https://registry.npmjs.org/options/-/options-0.0.6.tgz",
+      "integrity": "sha1-7CLTEoBrtT5zF3Pnza788cZDEo8=",
+      "engines": {
+        "node": ">=0.4.0"
+      }
+    },
+    "node_modules/optparse": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/optparse/-/optparse-1.0.3.tgz",
+      "integrity": "sha1-L/SaPWkbkLC5ob6RF/KSNz6xvWY=",
+      "engines": {
+        "node": "*"
+      }
+    },
+    "node_modules/original": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/original/-/original-1.0.2.tgz",
+      "integrity": "sha512-hyBVl6iqqUOJ8FqRe+l/gS8H+kKYjrEndd5Pm1MfBtsEKA038HkkdbAl/72EAXGyonD/PFsvmVG+EvcIpliMBg==",
+      "dev": true,
+      "dependencies": {
+        "url-parse": "^1.4.3"
+      }
+    },
+    "node_modules/os-browserify": {
+      "version": "0.2.1",
+      "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.2.1.tgz",
+      "integrity": "sha1-Y/xMzuXS13Y9Jrv4YBB45sLgBE8=",
+      "dev": true
+    },
+    "node_modules/pako": {
+      "version": "0.2.9",
+      "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz",
+      "integrity": "sha1-8/dSL073gjSNqBYbrZ7P1Rv4OnU=",
+      "dev": true
+    },
+    "node_modules/parse-glob": {
+      "version": "3.0.4",
+      "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz",
+      "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=",
+      "dev": true,
+      "dependencies": {
+        "glob-base": "^0.3.0",
+        "is-dotfile": "^1.0.0",
+        "is-extglob": "^1.0.0",
+        "is-glob": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/parsejson": {
+      "version": "0.0.1",
+      "resolved": "https://registry.npmjs.org/parsejson/-/parsejson-0.0.1.tgz",
+      "integrity": "sha1-mxDGwNglq1ieaFFTgm3go7oni8w=",
+      "dependencies": {
+        "better-assert": "~1.0.0"
+      }
+    },
+    "node_modules/parseqs": {
+      "version": "0.0.2",
+      "resolved": "https://registry.npmjs.org/parseqs/-/parseqs-0.0.2.tgz",
+      "integrity": "sha1-nf5wss3aw4i95PNbHyQPpYrb5sc=",
+      "dependencies": {
+        "better-assert": "~1.0.0"
+      }
+    },
+    "node_modules/parseuri": {
+      "version": "0.0.2",
+      "resolved": "https://registry.npmjs.org/parseuri/-/parseuri-0.0.2.tgz",
+      "integrity": "sha1-20GHjy1pZHGL6HCzFAlz2Ak74VY=",
+      "dependencies": {
+        "better-assert": "~1.0.0"
+      }
+    },
+    "node_modules/parseurl": {
+      "version": "1.3.2",
+      "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.2.tgz",
+      "integrity": "sha1-/CidTtiZMRlGDBViUyYs3I3mW/M=",
+      "engines": {
+        "node": ">= 0.8"
+      }
+    },
+    "node_modules/path-browserify": {
+      "version": "0.0.0",
+      "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.0.tgz",
+      "integrity": "sha1-oLhwcpquIUAFt9UDLsLLuw+0RRo=",
+      "dev": true
+    },
+    "node_modules/path-is-absolute": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
+      "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/path-to-regexp": {
+      "version": "0.1.7",
+      "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
+      "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=",
+      "dev": true
+    },
+    "node_modules/pause": {
+      "version": "0.0.1",
+      "resolved": "https://registry.npmjs.org/pause/-/pause-0.0.1.tgz",
+      "integrity": "sha1-HUCLP9t2kjuVQ9lvtMnf1TXZy10="
+    },
+    "node_modules/pbkdf2-compat": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/pbkdf2-compat/-/pbkdf2-compat-2.0.1.tgz",
+      "integrity": "sha1-tuDI+plJTZTgURV1gCpZpcFC8og=",
+      "dev": true
+    },
+    "node_modules/prelude-ls": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz",
+      "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=",
+      "engines": {
+        "node": ">= 0.8.0"
+      }
+    },
+    "node_modules/preserve": {
+      "version": "0.2.0",
+      "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz",
+      "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/printj": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/printj/-/printj-1.1.2.tgz",
+      "integrity": "sha512-zA2SmoLaxZyArQTOPj5LXecR+RagfPSU5Kw1qP+jkWeNlrq+eJZyY2oS68SU1Z/7/myXM4lo9716laOFAVStCQ==",
+      "bin": {
+        "printj": "bin/printj.njs"
+      },
+      "engines": {
+        "node": ">=0.8"
+      }
+    },
+    "node_modules/private": {
+      "version": "0.1.8",
+      "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz",
+      "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==",
+      "dev": true,
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/process": {
+      "version": "0.11.10",
+      "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz",
+      "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=",
+      "dev": true,
+      "engines": {
+        "node": ">= 0.6.0"
+      }
+    },
+    "node_modules/process-nextick-args": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz",
+      "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==",
+      "dev": true
+    },
+    "node_modules/proxy-addr": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-1.0.1.tgz",
+      "integrity": "sha1-x8Vm1etOP61n7rnHfFVYzMObiKg=",
+      "dependencies": {
+        "ipaddr.js": "0.1.2"
+      },
+      "engines": {
+        "node": ">= 0.8.0"
+      }
+    },
+    "node_modules/prr": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz",
+      "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=",
+      "dev": true
+    },
+    "node_modules/punycode": {
+      "version": "1.4.1",
+      "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
+      "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=",
+      "dev": true
+    },
+    "node_modules/q": {
+      "version": "1.5.1",
+      "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz",
+      "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=",
+      "dev": true,
+      "engines": {
+        "node": ">=0.6.0",
+        "teleport": ">=0.2.0"
+      }
+    },
+    "node_modules/qs": {
+      "version": "2.2.2",
+      "resolved": "https://registry.npmjs.org/qs/-/qs-2.2.2.tgz",
+      "integrity": "sha1-3+eD8YVLGsKzreknda0D4n4DIYw="
+    },
+    "node_modules/querystring": {
+      "version": "0.2.0",
+      "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz",
+      "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=",
+      "deprecated": "The querystring API is considered Legacy. new code should use the URLSearchParams API instead.",
+      "dev": true,
+      "engines": {
+        "node": ">=0.4.x"
+      }
+    },
+    "node_modules/querystring-es3": {
+      "version": "0.2.1",
+      "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz",
+      "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=",
+      "dev": true,
+      "engines": {
+        "node": ">=0.4.x"
+      }
+    },
+    "node_modules/querystringify": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.0.0.tgz",
+      "integrity": "sha512-eTPo5t/4bgaMNZxyjWx6N2a6AuE0mq51KWvpc7nU/MAqixcI6v6KrGUKES0HaomdnolQBBXU/++X6/QQ9KL4tw==",
+      "dev": true
+    },
+    "node_modules/randomatic": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-3.1.0.tgz",
+      "integrity": "sha512-KnGPVE0lo2WoXxIZ7cPR8YBpiol4gsSuOwDSg410oHh80ZMp5EiypNqL2K4Z77vJn6lB5rap7IkAmcUlalcnBQ==",
+      "dev": true,
+      "dependencies": {
+        "is-number": "^4.0.0",
+        "kind-of": "^6.0.0",
+        "math-random": "^1.0.1"
+      },
+      "engines": {
+        "node": ">= 0.10.0"
+      }
+    },
+    "node_modules/randomatic/node_modules/is-number": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz",
+      "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/randomatic/node_modules/kind-of": {
+      "version": "6.0.3",
+      "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
+      "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/range-parser": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz",
+      "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=",
+      "dev": true,
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/raw-body": {
+      "version": "2.3.2",
+      "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.3.2.tgz",
+      "integrity": "sha1-vNYMd9Prk83gBQKVw/N5OJvIj4k=",
+      "dev": true,
+      "dependencies": {
+        "bytes": "3.0.0",
+        "http-errors": "1.6.2",
+        "iconv-lite": "0.4.19",
+        "unpipe": "1.0.0"
+      },
+      "engines": {
+        "node": ">= 0.8"
+      }
+    },
+    "node_modules/raw-body/node_modules/bytes": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz",
+      "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=",
+      "dev": true,
+      "engines": {
+        "node": ">= 0.8"
+      }
+    },
+    "node_modules/raw-body/node_modules/depd": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.1.tgz",
+      "integrity": "sha1-V4O04cRZ8G+lyif5kfPQbnoxA1k=",
+      "dev": true,
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/raw-body/node_modules/http-errors": {
+      "version": "1.6.2",
+      "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.2.tgz",
+      "integrity": "sha1-CgAsyFcHGSp+eUbO7cERVfYOxzY=",
+      "dev": true,
+      "dependencies": {
+        "depd": "1.1.1",
+        "inherits": "2.0.3",
+        "setprototypeof": "1.0.3",
+        "statuses": ">= 1.3.1 < 2"
+      },
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/raw-body/node_modules/iconv-lite": {
+      "version": "0.4.19",
+      "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz",
+      "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/raw-body/node_modules/setprototypeof": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.3.tgz",
+      "integrity": "sha1-ZlZ+NwQ+608E2RvWWMDL77VbjgQ=",
+      "dev": true
+    },
+    "node_modules/react": {
+      "version": "0.12.2",
+      "resolved": "https://registry.npmjs.org/react/-/react-0.12.2.tgz",
+      "integrity": "sha1-HE8LCIGBRu6rTwqzklfgqlICfgA=",
+      "dev": true,
+      "dependencies": {
+        "envify": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/react-basic-tabs": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/react-basic-tabs/-/react-basic-tabs-1.0.3.tgz",
+      "integrity": "sha1-uET+9Iz3xkXPY1XxzAejrl0VcZA=",
+      "dev": true,
+      "dependencies": {
+        "copy-utils": "^1.0.0",
+        "functionally": "^0.6.2",
+        "react": "^0.12.0"
+      }
+    },
+    "node_modules/react-hot-loader": {
+      "version": "0.5.0",
+      "resolved": "https://registry.npmjs.org/react-hot-loader/-/react-hot-loader-0.5.0.tgz",
+      "integrity": "sha1-vQN47eLhWd0X/LJ6HZ5xELkRsD8=",
+      "deprecated": "React Hot Loader 1.1 has been released with support for next versions of React and ES6 classes. See https://github.com/gaearon/react-hot-loader/blob/master/docs/README.md#migrating-to-10",
+      "dev": true,
+      "dependencies": {
+        "next-tick": "0.2.2",
+        "source-map": "0.1.40"
+      }
+    },
+    "node_modules/react-hot-loader/node_modules/source-map": {
+      "version": "0.1.40",
+      "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.40.tgz",
+      "integrity": "sha1-fg7knsBFKqmsK5OtWuVO8z6Cs38=",
+      "dev": true,
+      "dependencies": {
+        "amdefine": ">=0.0.4"
+      },
+      "engines": {
+        "node": ">=0.8.0"
+      }
+    },
+    "node_modules/readable-stream": {
+      "version": "2.3.6",
+      "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
+      "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
+      "dev": true,
+      "dependencies": {
+        "core-util-is": "~1.0.0",
+        "inherits": "~2.0.3",
+        "isarray": "~1.0.0",
+        "process-nextick-args": "~2.0.0",
+        "safe-buffer": "~5.1.1",
+        "string_decoder": "~1.1.1",
+        "util-deprecate": "~1.0.1"
+      }
+    },
+    "node_modules/readable-stream/node_modules/isarray": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+      "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
+      "dev": true
+    },
+    "node_modules/readable-stream/node_modules/string_decoder": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+      "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+      "dev": true,
+      "dependencies": {
+        "safe-buffer": "~5.1.0"
+      }
+    },
+    "node_modules/readdirp": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.1.0.tgz",
+      "integrity": "sha1-TtCtBg3zBzMAxIRANz9y0cxkLXg=",
+      "dev": true,
+      "dependencies": {
+        "graceful-fs": "^4.1.2",
+        "minimatch": "^3.0.2",
+        "readable-stream": "^2.0.2",
+        "set-immediate-shim": "^1.0.1"
+      },
+      "engines": {
+        "node": ">=0.6"
+      }
+    },
+    "node_modules/recast": {
+      "version": "0.11.23",
+      "resolved": "https://registry.npmjs.org/recast/-/recast-0.11.23.tgz",
+      "integrity": "sha1-RR/TAEqx5N+bTktmN2sqIZEkYtM=",
+      "dev": true,
+      "dependencies": {
+        "ast-types": "0.9.6",
+        "esprima": "~3.1.0",
+        "private": "~0.1.5",
+        "source-map": "~0.5.0"
+      },
+      "engines": {
+        "node": ">= 0.8"
+      }
+    },
+    "node_modules/recast/node_modules/esprima": {
+      "version": "3.1.3",
+      "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz",
+      "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=",
+      "dev": true,
+      "bin": {
+        "esparse": "bin/esparse.js",
+        "esvalidate": "bin/esvalidate.js"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/redis": {
+      "version": "0.12.1",
+      "resolved": "https://registry.npmjs.org/redis/-/redis-0.12.1.tgz",
+      "integrity": "sha1-ZN92rQ/IrOuuvSoGReikj6xJGF4="
+    },
+    "node_modules/reduce-component": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/reduce-component/-/reduce-component-1.0.1.tgz",
+      "integrity": "sha1-4Mk1QsV0UhvqE98PlIjtgqt3xdo=",
+      "dev": true
+    },
+    "node_modules/regex-cache": {
+      "version": "0.4.4",
+      "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz",
+      "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==",
+      "dev": true,
+      "dependencies": {
+        "is-equal-shallow": "^0.1.3"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/remove-trailing-separator": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz",
+      "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=",
+      "dev": true
+    },
+    "node_modules/repeat-element": {
+      "version": "1.1.3",
+      "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz",
+      "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/repeat-string": {
+      "version": "1.6.1",
+      "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz",
+      "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10"
+      }
+    },
+    "node_modules/requires-port": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz",
+      "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=",
+      "dev": true
+    },
+    "node_modules/response-time": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/response-time/-/response-time-2.0.1.tgz",
+      "integrity": "sha1-xtLLrerEyyUbIQFv4YJkDAKv80M=",
+      "dependencies": {
+        "on-headers": "~1.0.0"
+      },
+      "engines": {
+        "node": ">= 0.8.0"
+      }
+    },
+    "node_modules/right-align": {
+      "version": "0.1.3",
+      "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz",
+      "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=",
+      "dev": true,
+      "dependencies": {
+        "align-text": "^0.1.1"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/ripemd160": {
+      "version": "0.2.0",
+      "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-0.2.0.tgz",
+      "integrity": "sha1-K/GYveFnys+lHAqSjoS2i74XH84=",
+      "dev": true
+    },
+    "node_modules/rndm": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/rndm/-/rndm-1.1.1.tgz",
+      "integrity": "sha1-7870N0Ah94tj3mImtZhRICadZPE="
+    },
+    "node_modules/safe-buffer": {
+      "version": "5.1.2",
+      "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
+      "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
+      "dev": true
+    },
+    "node_modules/safer-buffer": {
+      "version": "2.1.2",
+      "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
+      "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
+    },
+    "node_modules/scmp": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/scmp/-/scmp-1.0.0.tgz",
+      "integrity": "sha1-oLJyw/xykvdxFWRvAGGLAmJRTgQ=",
+      "deprecated": "scmp v2 uses improved core crypto comparison since Node v6.6.0"
+    },
+    "node_modules/send": {
+      "version": "0.16.2",
+      "resolved": "https://registry.npmjs.org/send/-/send-0.16.2.tgz",
+      "integrity": "sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==",
+      "dev": true,
+      "dependencies": {
+        "debug": "2.6.9",
+        "depd": "~1.1.2",
+        "destroy": "~1.0.4",
+        "encodeurl": "~1.0.2",
+        "escape-html": "~1.0.3",
+        "etag": "~1.8.1",
+        "fresh": "0.5.2",
+        "http-errors": "~1.6.2",
+        "mime": "1.4.1",
+        "ms": "2.0.0",
+        "on-finished": "~2.3.0",
+        "range-parser": "~1.2.0",
+        "statuses": "~1.4.0"
+      },
+      "engines": {
+        "node": ">= 0.8.0"
+      }
+    },
+    "node_modules/send/node_modules/debug": {
+      "version": "2.6.9",
+      "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+      "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+      "dev": true,
+      "dependencies": {
+        "ms": "2.0.0"
+      }
+    },
+    "node_modules/send/node_modules/depd": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
+      "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=",
+      "dev": true,
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/send/node_modules/destroy": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz",
+      "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=",
+      "dev": true
+    },
+    "node_modules/send/node_modules/ee-first": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
+      "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=",
+      "dev": true
+    },
+    "node_modules/send/node_modules/escape-html": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
+      "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=",
+      "dev": true
+    },
+    "node_modules/send/node_modules/fresh": {
+      "version": "0.5.2",
+      "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
+      "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=",
+      "dev": true,
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/send/node_modules/mime": {
+      "version": "1.4.1",
+      "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz",
+      "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==",
+      "dev": true,
+      "bin": {
+        "mime": "cli.js"
+      }
+    },
+    "node_modules/send/node_modules/on-finished": {
+      "version": "2.3.0",
+      "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
+      "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=",
+      "dev": true,
+      "dependencies": {
+        "ee-first": "1.1.1"
+      },
+      "engines": {
+        "node": ">= 0.8"
+      }
+    },
+    "node_modules/serve-favicon": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/serve-favicon/-/serve-favicon-2.0.1.tgz",
+      "integrity": "sha1-SCaXXZ8XPKOkFY6WmBYfdd7Hr+w=",
+      "dependencies": {
+        "fresh": "0.2.2"
+      },
+      "engines": {
+        "node": ">= 0.8.0"
+      }
+    },
+    "node_modules/serve-index": {
+      "version": "1.9.1",
+      "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz",
+      "integrity": "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=",
+      "dev": true,
+      "dependencies": {
+        "accepts": "~1.3.4",
+        "batch": "0.6.1",
+        "debug": "2.6.9",
+        "escape-html": "~1.0.3",
+        "http-errors": "~1.6.2",
+        "mime-types": "~2.1.17",
+        "parseurl": "~1.3.2"
+      },
+      "engines": {
+        "node": ">= 0.8.0"
+      }
+    },
+    "node_modules/serve-index/node_modules/accepts": {
+      "version": "1.3.5",
+      "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.5.tgz",
+      "integrity": "sha1-63d99gEXI6OxTopywIBcjoZ0a9I=",
+      "dev": true,
+      "dependencies": {
+        "mime-types": "~2.1.18",
+        "negotiator": "0.6.1"
+      },
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/serve-index/node_modules/debug": {
+      "version": "2.6.9",
+      "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+      "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+      "dev": true,
+      "dependencies": {
+        "ms": "2.0.0"
+      }
+    },
+    "node_modules/serve-index/node_modules/escape-html": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
+      "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=",
+      "dev": true
+    },
+    "node_modules/serve-index/node_modules/negotiator": {
+      "version": "0.6.1",
+      "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz",
+      "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=",
+      "dev": true,
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/serve-static": {
+      "version": "1.13.2",
+      "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.2.tgz",
+      "integrity": "sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw==",
+      "dev": true,
+      "dependencies": {
+        "encodeurl": "~1.0.2",
+        "escape-html": "~1.0.3",
+        "parseurl": "~1.3.2",
+        "send": "0.16.2"
+      },
+      "engines": {
+        "node": ">= 0.8.0"
+      }
+    },
+    "node_modules/serve-static/node_modules/escape-html": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
+      "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=",
+      "dev": true
+    },
+    "node_modules/set-immediate-shim": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz",
+      "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/setimmediate": {
+      "version": "1.0.5",
+      "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz",
+      "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=",
+      "dev": true
+    },
+    "node_modules/setprototypeof": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz",
+      "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==",
+      "dev": true
+    },
+    "node_modules/sha.js": {
+      "version": "2.2.6",
+      "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.2.6.tgz",
+      "integrity": "sha1-F93t3F9yL7ZlAWWIlUYZd4ZzFbo=",
+      "dev": true,
+      "bin": {
+        "sha.js": "bin.js"
+      }
+    },
+    "node_modules/socialcalc": {
+      "version": "2.3.0",
+      "resolved": "https://registry.npmjs.org/socialcalc/-/socialcalc-2.3.0.tgz",
+      "integrity": "sha512-hkK5c7eRRGzOiRNPFCQ/kzv2wqOSFaD4AtYag962r0jV0mlyhTQ7xvs3r14MB3Xbo2hAWq5AKYddrtqvuWvDAA=="
+    },
+    "node_modules/socket.io": {
+      "version": "1.0.6",
+      "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-1.0.6.tgz",
+      "integrity": "sha1-tWZTKIja46yQWKEvKUAV69+oCEo=",
+      "dependencies": {
+        "debug": "0.7.4",
+        "engine.io": "1.3.1",
+        "has-binary-data": "0.1.1",
+        "socket.io-adapter": "0.2.0",
+        "socket.io-client": "1.0.6",
+        "socket.io-parser": "2.2.0"
+      }
+    },
+    "node_modules/socket.io-adapter": {
+      "version": "0.2.0",
+      "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-0.2.0.tgz",
+      "integrity": "sha1-vTkym4lhNxeH4k80WwdOyc8ADjM=",
+      "dependencies": {
+        "debug": "0.7.4",
+        "socket.io-parser": "2.1.2"
+      }
+    },
+    "node_modules/socket.io-adapter/node_modules/debug": {
+      "version": "0.7.4",
+      "resolved": "https://registry.npmjs.org/debug/-/debug-0.7.4.tgz",
+      "integrity": "sha1-BuHqgILCyxTjmAbiLi9vdX+Srzk=",
+      "engines": {
+        "node": "*"
+      }
+    },
+    "node_modules/socket.io-adapter/node_modules/emitter": {
+      "version": "1.0.1",
+      "resolved": "http://github.com/component/emitter/archive/1.0.1.tar.gz",
+      "integrity": "sha512-k3Da+QreMb9waaGCHNAHox5QqxnZEYlQmvIVYwQibrI6OpIRyIIyFGgDV5dXRLr1AJ32JLqEh0VxQEq20dFskw==",
+      "dependencies": {
+        "indexof": "0.0.1"
+      }
+    },
+    "node_modules/socket.io-adapter/node_modules/socket.io-parser": {
+      "version": "2.1.2",
+      "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-2.1.2.tgz",
+      "integrity": "sha1-h2ZVue3VVcW99zAc7fMKQ2xnuLA=",
+      "dependencies": {
+        "debug": "0.7.4",
+        "emitter": "http://github.com/component/emitter/archive/1.0.1.tar.gz",
+        "isarray": "0.0.1",
+        "json3": "3.2.6"
+      }
+    },
+    "node_modules/socket.io-client": {
+      "version": "1.0.6",
+      "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-1.0.6.tgz",
+      "integrity": "sha1-yGyz5QerL5baRQC9NPz0ah6d/l4=",
+      "dependencies": {
+        "component-bind": "1.0.0",
+        "component-emitter": "1.1.2",
+        "debug": "0.7.4",
+        "engine.io-client": "1.3.1",
+        "has-binary-data": "0.1.1",
+        "indexof": "0.0.1",
+        "object-component": "0.0.3",
+        "parseuri": "0.0.2",
+        "socket.io-parser": "2.2.0",
+        "to-array": "0.1.3"
+      }
+    },
+    "node_modules/socket.io-client/node_modules/debug": {
+      "version": "0.7.4",
+      "resolved": "https://registry.npmjs.org/debug/-/debug-0.7.4.tgz",
+      "integrity": "sha1-BuHqgILCyxTjmAbiLi9vdX+Srzk=",
+      "engines": {
+        "node": "*"
+      }
+    },
+    "node_modules/socket.io-parser": {
+      "version": "2.2.0",
+      "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-2.2.0.tgz",
+      "integrity": "sha1-JglgH1nmp/q0NqU749Mz+7/L0wo=",
+      "dependencies": {
+        "debug": "0.7.4",
+        "emitter": "http://github.com/component/emitter/archive/1.0.1.tar.gz",
+        "isarray": "0.0.1",
+        "json3": "3.2.6"
+      }
+    },
+    "node_modules/socket.io-parser/node_modules/debug": {
+      "version": "0.7.4",
+      "resolved": "https://registry.npmjs.org/debug/-/debug-0.7.4.tgz",
+      "integrity": "sha1-BuHqgILCyxTjmAbiLi9vdX+Srzk=",
+      "engines": {
+        "node": "*"
+      }
+    },
+    "node_modules/socket.io-parser/node_modules/emitter": {
+      "version": "1.0.1",
+      "resolved": "http://github.com/component/emitter/archive/1.0.1.tar.gz",
+      "integrity": "sha512-k3Da+QreMb9waaGCHNAHox5QqxnZEYlQmvIVYwQibrI6OpIRyIIyFGgDV5dXRLr1AJ32JLqEh0VxQEq20dFskw==",
+      "dependencies": {
+        "indexof": "0.0.1"
+      }
+    },
+    "node_modules/socket.io/node_modules/debug": {
+      "version": "0.7.4",
+      "resolved": "https://registry.npmjs.org/debug/-/debug-0.7.4.tgz",
+      "integrity": "sha1-BuHqgILCyxTjmAbiLi9vdX+Srzk=",
+      "engines": {
+        "node": "*"
+      }
+    },
+    "node_modules/sockjs": {
+      "version": "0.3.19",
+      "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.19.tgz",
+      "integrity": "sha512-V48klKZl8T6MzatbLlzzRNhMepEys9Y4oGFpypBFFn1gLI/QQ9HtLLyWJNbPlwGLelOVOEijUbTTJeLLI59jLw==",
+      "dev": true,
+      "dependencies": {
+        "faye-websocket": "^0.10.0",
+        "uuid": "^3.0.1"
+      }
+    },
+    "node_modules/sockjs-client": {
+      "version": "1.1.5",
+      "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.1.5.tgz",
+      "integrity": "sha1-G7fA9yIsQPQq3xT0RCy9Eml3GoM=",
+      "dev": true,
+      "dependencies": {
+        "debug": "^2.6.6",
+        "eventsource": "0.1.6",
+        "faye-websocket": "~0.11.0",
+        "inherits": "^2.0.1",
+        "json3": "^3.3.2",
+        "url-parse": "^1.1.8"
+      }
+    },
+    "node_modules/sockjs-client/node_modules/debug": {
+      "version": "2.6.9",
+      "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+      "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+      "dev": true,
+      "dependencies": {
+        "ms": "2.0.0"
+      }
+    },
+    "node_modules/sockjs-client/node_modules/faye-websocket": {
+      "version": "0.11.1",
+      "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.1.tgz",
+      "integrity": "sha1-8O/hjE9W5PQK/H4Gxxn9XuYYjzg=",
+      "dev": true,
+      "dependencies": {
+        "websocket-driver": ">=0.5.1"
+      },
+      "engines": {
+        "node": ">=0.8.0"
+      }
+    },
+    "node_modules/sockjs-client/node_modules/json3": {
+      "version": "3.3.2",
+      "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.2.tgz",
+      "integrity": "sha1-PAQ0dD35Pi9cQq7nsZvLSDV19OE=",
+      "deprecated": "Please use the native JSON object instead of JSON 3",
+      "dev": true
+    },
+    "node_modules/source-list-map": {
+      "version": "0.1.8",
+      "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-0.1.8.tgz",
+      "integrity": "sha1-xVCyq1Qn9rPyH1r+rYjE9Vh7IQY=",
+      "dev": true
+    },
+    "node_modules/source-map": {
+      "version": "0.5.7",
+      "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
+      "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/ssf": {
+      "version": "0.10.2",
+      "resolved": "https://registry.npmjs.org/ssf/-/ssf-0.10.2.tgz",
+      "integrity": "sha512-rDhAPm9WyIsY8eZEKyE8Qsotb3j/wBdvMWBUsOhJdfhKGLfQidRjiBUV0y/MkyCLiXQ38FG6LWW/VYUtqlIDZQ==",
+      "dependencies": {
+        "frac": "~1.1.2"
+      },
+      "bin": {
+        "ssf": "bin/ssf.njs"
+      },
+      "engines": {
+        "node": ">=0.8"
+      }
+    },
+    "node_modules/statuses": {
+      "version": "1.4.0",
+      "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz",
+      "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==",
+      "dev": true,
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/stream-browserify": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.1.tgz",
+      "integrity": "sha1-ZiZu5fm9uZQKTkUUyvtDu3Hlyds=",
+      "dev": true,
+      "dependencies": {
+        "inherits": "~2.0.1",
+        "readable-stream": "^2.0.2"
+      }
+    },
+    "node_modules/stream-cache": {
+      "version": "0.0.2",
+      "resolved": "https://registry.npmjs.org/stream-cache/-/stream-cache-0.0.2.tgz",
+      "integrity": "sha1-GsWtaDJCjKVWZ9ve45Xa1ObbEY8=",
+      "dev": true,
+      "engines": {
+        "node": "*"
+      }
+    },
+    "node_modules/stream-counter": {
+      "version": "0.2.0",
+      "resolved": "https://registry.npmjs.org/stream-counter/-/stream-counter-0.2.0.tgz",
+      "integrity": "sha1-3tJmVWMZyLDiIoErnPOyb6fZR94=",
+      "dependencies": {
+        "readable-stream": "~1.1.8"
+      },
+      "engines": {
+        "node": ">=0.8.0"
+      }
+    },
+    "node_modules/stream-counter/node_modules/readable-stream": {
+      "version": "1.1.14",
+      "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz",
+      "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=",
+      "dependencies": {
+        "core-util-is": "~1.0.0",
+        "inherits": "~2.0.1",
+        "isarray": "0.0.1",
+        "string_decoder": "~0.10.x"
+      }
+    },
+    "node_modules/stream-http": {
+      "version": "2.8.3",
+      "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz",
+      "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==",
+      "dev": true,
+      "dependencies": {
+        "builtin-status-codes": "^3.0.0",
+        "inherits": "^2.0.1",
+        "readable-stream": "^2.3.6",
+        "to-arraybuffer": "^1.0.0",
+        "xtend": "^4.0.0"
+      }
+    },
+    "node_modules/string_decoder": {
+      "version": "0.10.31",
+      "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
+      "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ="
+    },
+    "node_modules/strip-ansi": {
+      "version": "3.0.1",
+      "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
+      "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
+      "dev": true,
+      "dependencies": {
+        "ansi-regex": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/style-loader": {
+      "version": "0.8.3",
+      "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-0.8.3.tgz",
+      "integrity": "sha1-9Pkut9tjdodI8VBlzWcA9aHIU1c=",
+      "dev": true,
+      "dependencies": {
+        "loader-utils": "^0.2.5"
+      }
+    },
+    "node_modules/stylus-loader": {
+      "version": "3.0.2",
+      "resolved": "https://registry.npmjs.org/stylus-loader/-/stylus-loader-3.0.2.tgz",
+      "integrity": "sha512-+VomPdZ6a0razP+zinir61yZgpw2NfljeSsdUF5kJuEzlo3khXhY19Fn6l8QQz1GRJGtMCo8nG5C04ePyV7SUA==",
+      "dev": true,
+      "dependencies": {
+        "loader-utils": "^1.0.2",
+        "lodash.clonedeep": "^4.5.0",
+        "when": "~3.6.x"
+      },
+      "peerDependencies": {
+        "stylus": ">=0.52.4"
+      }
+    },
+    "node_modules/stylus-loader/node_modules/big.js": {
+      "version": "5.2.2",
+      "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz",
+      "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==",
+      "dev": true,
+      "engines": {
+        "node": "*"
+      }
+    },
+    "node_modules/stylus-loader/node_modules/json5": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz",
+      "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==",
+      "dev": true,
+      "dependencies": {
+        "minimist": "^1.2.0"
+      },
+      "bin": {
+        "json5": "lib/cli.js"
+      }
+    },
+    "node_modules/stylus-loader/node_modules/loader-utils": {
+      "version": "1.2.3",
+      "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.2.3.tgz",
+      "integrity": "sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA==",
+      "dev": true,
+      "dependencies": {
+        "big.js": "^5.2.2",
+        "emojis-list": "^2.0.0",
+        "json5": "^1.0.1"
+      },
+      "engines": {
+        "node": ">=4.0.0"
+      }
+    },
+    "node_modules/stylus-loader/node_modules/minimist": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
+      "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
+      "dev": true
+    },
+    "node_modules/superagent": {
+      "version": "0.21.0",
+      "resolved": "https://registry.npmjs.org/superagent/-/superagent-0.21.0.tgz",
+      "integrity": "sha1-+xUCeYR1HucVIgDmzSHNbhml3oc=",
+      "deprecated": "Please upgrade to v7.0.2+ of superagent.  We have fixed numerous issues with streams, form-data, attach(), filesystem errors not bubbling up (ENOENT on attach()), and all tests are now passing.  See the releases tab for more information at <https://github.com/visionmedia/superagent/releases>.",
+      "dev": true,
+      "dependencies": {
+        "component-emitter": "1.1.2",
+        "cookiejar": "2.0.1",
+        "debug": "2",
+        "extend": "~1.2.1",
+        "form-data": "0.1.3",
+        "formidable": "1.0.14",
+        "methods": "1.0.1",
+        "mime": "1.2.11",
+        "qs": "1.2.0",
+        "readable-stream": "1.0.27-1",
+        "reduce-component": "1.0.1"
+      },
+      "engines": {
+        "node": ">= 0.8"
+      }
+    },
+    "node_modules/superagent/node_modules/debug": {
+      "version": "2.6.9",
+      "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+      "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+      "dev": true,
+      "dependencies": {
+        "ms": "2.0.0"
+      }
+    },
+    "node_modules/superagent/node_modules/methods": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/methods/-/methods-1.0.1.tgz",
+      "integrity": "sha1-dbyRlD3/19oDfPPusO1zoAN80Us=",
+      "dev": true
+    },
+    "node_modules/superagent/node_modules/qs": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/qs/-/qs-1.2.0.tgz",
+      "integrity": "sha1-7Qeb4oaCFH5v2aNMwrDB4OxkU+4=",
+      "dev": true
+    },
+    "node_modules/superagent/node_modules/readable-stream": {
+      "version": "1.0.27-1",
+      "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.27-1.tgz",
+      "integrity": "sha1-a2eYPCA1fO/QfwFlABoW1xDZEHg=",
+      "dev": true,
+      "dependencies": {
+        "core-util-is": "~1.0.0",
+        "inherits": "~2.0.1",
+        "isarray": "0.0.1",
+        "string_decoder": "~0.10.x"
+      }
+    },
+    "node_modules/supports-color": {
+      "version": "3.2.3",
+      "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz",
+      "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=",
+      "dev": true,
+      "dependencies": {
+        "has-flag": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=0.8.0"
+      }
+    },
+    "node_modules/tapable": {
+      "version": "0.1.10",
+      "resolved": "https://registry.npmjs.org/tapable/-/tapable-0.1.10.tgz",
+      "integrity": "sha1-KcNXB8K3DlDQdIK10gLo7URtr9Q=",
+      "dev": true,
+      "engines": {
+        "node": ">=0.6"
+      }
+    },
+    "node_modules/thenify": {
+      "version": "3.3.0",
+      "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.0.tgz",
+      "integrity": "sha1-5p44obq+lpsBCCB5eLn2K4hgSDk=",
+      "dependencies": {
+        "any-promise": "^1.0.0"
+      }
+    },
+    "node_modules/thenify-all": {
+      "version": "1.6.0",
+      "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz",
+      "integrity": "sha1-GhkY1ALY/D+Y+/I02wvMjMEOlyY=",
+      "dependencies": {
+        "thenify": ">= 3.1.0 < 4"
+      },
+      "engines": {
+        "node": ">=0.8"
+      }
+    },
+    "node_modules/through": {
+      "version": "2.3.8",
+      "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
+      "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=",
+      "dev": true
+    },
+    "node_modules/time-stamp": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-2.1.0.tgz",
+      "integrity": "sha512-lJbq6KsFhZJtN3fPUVje1tq/hHsJOKUUcUj/MGCiQR6qWBDcyi5kxL9J7/RnaEChCn0+L/DUN2WvemDrkk4i3Q==",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/timers-browserify": {
+      "version": "2.0.10",
+      "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.10.tgz",
+      "integrity": "sha512-YvC1SV1XdOUaL6gx5CoGroT3Gu49pK9+TZ38ErPldOWW4j49GI1HKs9DV+KGq/w6y+LZ72W1c8cKz2vzY+qpzg==",
+      "dev": true,
+      "dependencies": {
+        "setimmediate": "^1.0.4"
+      },
+      "engines": {
+        "node": ">=0.6.0"
+      }
+    },
+    "node_modules/tinycolor": {
+      "version": "0.0.1",
+      "resolved": "https://registry.npmjs.org/tinycolor/-/tinycolor-0.0.1.tgz",
+      "integrity": "sha1-MgtaUtg6u1l42Bo+iH1K77FaYWQ=",
+      "engines": {
+        "node": ">=0.4.0"
+      }
+    },
+    "node_modules/to-array": {
+      "version": "0.1.3",
+      "resolved": "https://registry.npmjs.org/to-array/-/to-array-0.1.3.tgz",
+      "integrity": "sha1-1F2txjY0F/YPKEdP6lDs3btPSZE="
+    },
+    "node_modules/to-arraybuffer": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz",
+      "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=",
+      "dev": true
+    },
+    "node_modules/tty-browserify": {
+      "version": "0.0.0",
+      "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz",
+      "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=",
+      "dev": true
+    },
+    "node_modules/type-check": {
+      "version": "0.3.2",
+      "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz",
+      "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=",
+      "dependencies": {
+        "prelude-ls": "~1.1.2"
+      },
+      "engines": {
+        "node": ">= 0.8.0"
+      }
+    },
+    "node_modules/type-is": {
+      "version": "1.3.2",
+      "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.3.2.tgz",
+      "integrity": "sha1-TypdxYd1yhYwJQr8cYb4s2MJ0bs=",
+      "dependencies": {
+        "media-typer": "0.2.0",
+        "mime-types": "~1.0.1"
+      },
+      "engines": {
+        "node": ">= 0.8"
+      }
+    },
+    "node_modules/type-is/node_modules/mime-types": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-1.0.2.tgz",
+      "integrity": "sha1-mVrhOSq4r/y/yyZB3QVOlDwNXc4=",
+      "engines": {
+        "node": ">= 0.8.0"
+      }
+    },
+    "node_modules/typedarray": {
+      "version": "0.0.6",
+      "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz",
+      "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c="
+    },
+    "node_modules/uglify-js": {
+      "version": "3.15.3",
+      "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.15.3.tgz",
+      "integrity": "sha512-6iCVm2omGJbsu3JWac+p6kUiOpg3wFO2f8lIXjfEb8RrmLjzog1wTPMmwKB7swfzzqxj9YM+sGUM++u1qN4qJg==",
+      "dev": true,
+      "bin": {
+        "uglifyjs": "bin/uglifyjs"
+      },
+      "engines": {
+        "node": ">=0.8.0"
+      }
+    },
+    "node_modules/uglify-to-browserify": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz",
+      "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc="
+    },
+    "node_modules/uid-safe": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/uid-safe/-/uid-safe-1.1.0.tgz",
+      "integrity": "sha1-WNbF2r+N+9jVKDSDmAbAP9YUMjI=",
+      "dependencies": {
+        "base64-url": "1.2.1",
+        "native-or-bluebird": "~1.1.2"
+      },
+      "engines": {
+        "node": ">= 0.8"
+      }
+    },
+    "node_modules/underscore": {
+      "version": "1.9.1",
+      "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.9.1.tgz",
+      "integrity": "sha512-5/4etnCkd9c8gwgowi5/om/mYO5ajCaOgdzj/oW+0eQV9WxKBDZw5+ycmKmeaTXjInS/W0BzpGLo2xR2aBwZdg=="
+    },
+    "node_modules/unpipe": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
+      "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=",
+      "dev": true,
+      "engines": {
+        "node": ">= 0.8"
+      }
+    },
+    "node_modules/url": {
+      "version": "0.11.0",
+      "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz",
+      "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=",
+      "dev": true,
+      "dependencies": {
+        "punycode": "1.3.2",
+        "querystring": "0.2.0"
+      }
+    },
+    "node_modules/url-parse": {
+      "version": "1.4.3",
+      "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.4.3.tgz",
+      "integrity": "sha512-rh+KuAW36YKo0vClhQzLLveoj8FwPJNu65xLb7Mrt+eZht0IPT0IXgSv8gcMegZ6NvjJUALf6Mf25POlMwD1Fw==",
+      "dev": true,
+      "dependencies": {
+        "querystringify": "^2.0.0",
+        "requires-port": "^1.0.0"
+      }
+    },
+    "node_modules/url/node_modules/punycode": {
+      "version": "1.3.2",
+      "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz",
+      "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=",
+      "dev": true
+    },
+    "node_modules/utf8": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/utf8/-/utf8-2.0.0.tgz",
+      "integrity": "sha1-ec5Z7O2HSAnKuacfxxAsfUXUEY0="
+    },
+    "node_modules/util": {
+      "version": "0.10.4",
+      "resolved": "https://registry.npmjs.org/util/-/util-0.10.4.tgz",
+      "integrity": "sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==",
+      "dev": true,
+      "dependencies": {
+        "inherits": "2.0.3"
+      }
+    },
+    "node_modules/util-deprecate": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
+      "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8="
+    },
+    "node_modules/utils-merge": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.0.tgz",
+      "integrity": "sha1-ApT7kiu5N1FTVBxPcJYjHyh8ivg=",
+      "engines": {
+        "node": ">= 0.4.0"
+      }
+    },
+    "node_modules/uuid": {
+      "version": "3.3.2",
+      "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz",
+      "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==",
+      "deprecated": "Please upgrade  to version 7 or higher.  Older versions may use Math.random() in certain circumstances, which is known to be problematic.  See https://v8.dev/blog/math-random for details.",
+      "dev": true,
+      "bin": {
+        "uuid": "bin/uuid"
+      }
+    },
+    "node_modules/uuid-pure": {
+      "version": "1.0.10",
+      "resolved": "https://registry.npmjs.org/uuid-pure/-/uuid-pure-1.0.10.tgz",
+      "integrity": "sha1-cvIxtZz2w69en2unuWOpGG0Qm10=",
+      "engines": {
+        "node": "*"
+      }
+    },
+    "node_modules/vary": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
+      "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=",
+      "engines": {
+        "node": ">= 0.8"
+      }
+    },
+    "node_modules/vhost": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/vhost/-/vhost-2.0.0.tgz",
+      "integrity": "sha1-HiZ3C9D86GxAlFWR5vKExokXkeI=",
+      "engines": {
+        "node": ">= 0.8.0"
+      }
+    },
+    "node_modules/vm-browserify": {
+      "version": "0.0.4",
+      "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-0.0.4.tgz",
+      "integrity": "sha1-XX6kW7755Kb/ZflUOOCofDV9WnM=",
+      "dev": true,
+      "dependencies": {
+        "indexof": "0.0.1"
+      }
+    },
+    "node_modules/voc": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/voc/-/voc-1.2.0.tgz",
+      "integrity": "sha512-BOuDjFFYvJdZO6e/N65AlaDItXo2TgyLjeyRYcqgAPkXpp5yTJcvkL2n+syO1r9Qc5g96tfBD2tuiMhYDmaGcA==",
+      "bin": {
+        "voc": "voc.njs"
+      },
+      "engines": {
+        "node": ">=0.8"
+      }
+    },
+    "node_modules/watchpack": {
+      "version": "0.2.9",
+      "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-0.2.9.tgz",
+      "integrity": "sha1-Yuqkq15bo1/fwBgnVibjwPXj+ws=",
+      "dev": true,
+      "dependencies": {
+        "async": "^0.9.0",
+        "chokidar": "^1.0.0",
+        "graceful-fs": "^4.1.2"
+      }
+    },
+    "node_modules/watchpack/node_modules/async": {
+      "version": "0.9.2",
+      "resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz",
+      "integrity": "sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0=",
+      "dev": true
+    },
+    "node_modules/webpack": {
+      "version": "1.15.0",
+      "resolved": "https://registry.npmjs.org/webpack/-/webpack-1.15.0.tgz",
+      "integrity": "sha1-T/MfU9sDM55VFkqdRo7gMklo/pg=",
+      "dev": true,
+      "dependencies": {
+        "acorn": "^3.0.0",
+        "async": "^1.3.0",
+        "clone": "^1.0.2",
+        "enhanced-resolve": "~0.9.0",
+        "interpret": "^0.6.4",
+        "loader-utils": "^0.2.11",
+        "memory-fs": "~0.3.0",
+        "mkdirp": "~0.5.0",
+        "node-libs-browser": "^0.7.0",
+        "optimist": "~0.6.0",
+        "supports-color": "^3.1.0",
+        "tapable": "~0.1.8",
+        "uglify-js": "~2.7.3",
+        "watchpack": "^0.2.1",
+        "webpack-core": "~0.6.9"
+      },
+      "bin": {
+        "webpack": "bin/webpack.js"
+      },
+      "engines": {
+        "node": ">=0.6"
+      }
+    },
+    "node_modules/webpack-core": {
+      "version": "0.6.9",
+      "resolved": "https://registry.npmjs.org/webpack-core/-/webpack-core-0.6.9.tgz",
+      "integrity": "sha1-/FcViMhVjad76e+23r3Fo7FyvcI=",
+      "dev": true,
+      "dependencies": {
+        "source-list-map": "~0.1.7",
+        "source-map": "~0.4.1"
+      },
+      "engines": {
+        "node": ">=0.6"
+      }
+    },
+    "node_modules/webpack-core/node_modules/source-map": {
+      "version": "0.4.4",
+      "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz",
+      "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=",
+      "dev": true,
+      "dependencies": {
+        "amdefine": ">=0.0.4"
+      },
+      "engines": {
+        "node": ">=0.8.0"
+      }
+    },
+    "node_modules/webpack-dev-middleware": {
+      "version": "1.12.2",
+      "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-1.12.2.tgz",
+      "integrity": "sha512-FCrqPy1yy/sN6U/SaEZcHKRXGlqU0DUaEBL45jkUYoB8foVb6wCnbIJ1HKIx+qUFTW+3JpVcCJCxZ8VATL4e+A==",
+      "dev": true,
+      "dependencies": {
+        "memory-fs": "~0.4.1",
+        "mime": "^1.5.0",
+        "path-is-absolute": "^1.0.0",
+        "range-parser": "^1.0.3",
+        "time-stamp": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=0.6"
+      },
+      "peerDependencies": {
+        "webpack": "^1.0.0 || ^2.0.0 || ^3.0.0"
+      }
+    },
+    "node_modules/webpack-dev-middleware/node_modules/memory-fs": {
+      "version": "0.4.1",
+      "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz",
+      "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=",
+      "dev": true,
+      "dependencies": {
+        "errno": "^0.1.3",
+        "readable-stream": "^2.0.1"
+      }
+    },
+    "node_modules/webpack-dev-middleware/node_modules/mime": {
+      "version": "1.6.0",
+      "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
+      "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
+      "dev": true,
+      "bin": {
+        "mime": "cli.js"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/webpack-dev-server": {
+      "version": "1.16.5",
+      "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-1.16.5.tgz",
+      "integrity": "sha1-DL1fLSrI1OWTqs1clwLnu9XlmJI=",
+      "dev": true,
+      "dependencies": {
+        "compression": "^1.5.2",
+        "connect-history-api-fallback": "^1.3.0",
+        "express": "^4.13.3",
+        "http-proxy-middleware": "~0.17.1",
+        "open": "0.0.5",
+        "optimist": "~0.6.1",
+        "serve-index": "^1.7.2",
+        "sockjs": "^0.3.15",
+        "sockjs-client": "^1.0.3",
+        "stream-cache": "~0.0.1",
+        "strip-ansi": "^3.0.0",
+        "supports-color": "^3.1.1",
+        "webpack-dev-middleware": "^1.10.2"
+      },
+      "bin": {
+        "webpack-dev-server": "bin/webpack-dev-server.js"
+      },
+      "peerDependencies": {
+        "webpack": ">=1.3.0 <3"
+      }
+    },
+    "node_modules/webpack-dev-server/node_modules/accepts": {
+      "version": "1.3.5",
+      "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.5.tgz",
+      "integrity": "sha1-63d99gEXI6OxTopywIBcjoZ0a9I=",
+      "dev": true,
+      "dependencies": {
+        "mime-types": "~2.1.18",
+        "negotiator": "0.6.1"
+      },
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/webpack-dev-server/node_modules/cookie": {
+      "version": "0.3.1",
+      "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz",
+      "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=",
+      "dev": true,
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/webpack-dev-server/node_modules/cookie-signature": {
+      "version": "1.0.6",
+      "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
+      "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=",
+      "dev": true
+    },
+    "node_modules/webpack-dev-server/node_modules/debug": {
+      "version": "2.6.9",
+      "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+      "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+      "dev": true,
+      "dependencies": {
+        "ms": "2.0.0"
+      }
+    },
+    "node_modules/webpack-dev-server/node_modules/depd": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
+      "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=",
+      "dev": true,
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/webpack-dev-server/node_modules/ee-first": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
+      "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=",
+      "dev": true
+    },
+    "node_modules/webpack-dev-server/node_modules/escape-html": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
+      "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=",
+      "dev": true
+    },
+    "node_modules/webpack-dev-server/node_modules/express": {
+      "version": "4.16.3",
+      "resolved": "https://registry.npmjs.org/express/-/express-4.16.3.tgz",
+      "integrity": "sha1-avilAjUNsyRuzEvs9rWjTSL37VM=",
+      "dev": true,
+      "dependencies": {
+        "accepts": "~1.3.5",
+        "array-flatten": "1.1.1",
+        "body-parser": "1.18.2",
+        "content-disposition": "0.5.2",
+        "content-type": "~1.0.4",
+        "cookie": "0.3.1",
+        "cookie-signature": "1.0.6",
+        "debug": "2.6.9",
+        "depd": "~1.1.2",
+        "encodeurl": "~1.0.2",
+        "escape-html": "~1.0.3",
+        "etag": "~1.8.1",
+        "finalhandler": "1.1.1",
+        "fresh": "0.5.2",
+        "merge-descriptors": "1.0.1",
+        "methods": "~1.1.2",
+        "on-finished": "~2.3.0",
+        "parseurl": "~1.3.2",
+        "path-to-regexp": "0.1.7",
+        "proxy-addr": "~2.0.3",
+        "qs": "6.5.1",
+        "range-parser": "~1.2.0",
+        "safe-buffer": "5.1.1",
+        "send": "0.16.2",
+        "serve-static": "1.13.2",
+        "setprototypeof": "1.1.0",
+        "statuses": "~1.4.0",
+        "type-is": "~1.6.16",
+        "utils-merge": "1.0.1",
+        "vary": "~1.1.2"
+      },
+      "engines": {
+        "node": ">= 0.10.0"
+      }
+    },
+    "node_modules/webpack-dev-server/node_modules/fresh": {
+      "version": "0.5.2",
+      "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
+      "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=",
+      "dev": true,
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/webpack-dev-server/node_modules/ipaddr.js": {
+      "version": "1.8.0",
+      "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.8.0.tgz",
+      "integrity": "sha1-6qM9bd16zo9/b+DJygRA5wZzix4=",
+      "dev": true,
+      "engines": {
+        "node": ">= 0.10"
+      }
+    },
+    "node_modules/webpack-dev-server/node_modules/media-typer": {
+      "version": "0.3.0",
+      "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
+      "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=",
+      "dev": true,
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/webpack-dev-server/node_modules/merge-descriptors": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
+      "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=",
+      "dev": true
+    },
+    "node_modules/webpack-dev-server/node_modules/methods": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
+      "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=",
+      "dev": true,
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/webpack-dev-server/node_modules/negotiator": {
+      "version": "0.6.1",
+      "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz",
+      "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=",
+      "dev": true,
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/webpack-dev-server/node_modules/on-finished": {
+      "version": "2.3.0",
+      "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
+      "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=",
+      "dev": true,
+      "dependencies": {
+        "ee-first": "1.1.1"
+      },
+      "engines": {
+        "node": ">= 0.8"
+      }
+    },
+    "node_modules/webpack-dev-server/node_modules/proxy-addr": {
+      "version": "2.0.4",
+      "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.4.tgz",
+      "integrity": "sha512-5erio2h9jp5CHGwcybmxmVqHmnCBZeewlfJ0pex+UW7Qny7OOZXTtH56TGNyBizkgiOwhJtMKrVzDTeKcySZwA==",
+      "dev": true,
+      "dependencies": {
+        "forwarded": "~0.1.2",
+        "ipaddr.js": "1.8.0"
+      },
+      "engines": {
+        "node": ">= 0.10"
+      }
+    },
+    "node_modules/webpack-dev-server/node_modules/qs": {
+      "version": "6.5.1",
+      "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz",
+      "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==",
+      "dev": true,
+      "engines": {
+        "node": ">=0.6"
+      }
+    },
+    "node_modules/webpack-dev-server/node_modules/safe-buffer": {
+      "version": "5.1.1",
+      "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz",
+      "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==",
+      "dev": true
+    },
+    "node_modules/webpack-dev-server/node_modules/type-is": {
+      "version": "1.6.16",
+      "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.16.tgz",
+      "integrity": "sha512-HRkVv/5qY2G6I8iab9cI7v1bOIdhm94dVjQCPFElW9W+3GeDOSHmy2EBYe4VTApuzolPcmgFTN3ftVJRKR2J9Q==",
+      "dev": true,
+      "dependencies": {
+        "media-typer": "0.3.0",
+        "mime-types": "~2.1.18"
+      },
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/webpack-dev-server/node_modules/utils-merge": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
+      "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=",
+      "dev": true,
+      "engines": {
+        "node": ">= 0.4.0"
+      }
+    },
+    "node_modules/webpack/node_modules/acorn": {
+      "version": "3.3.0",
+      "resolved": "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz",
+      "integrity": "sha1-ReN/s56No/JbruP/U2niu18iAXo=",
+      "dev": true,
+      "bin": {
+        "acorn": "bin/acorn"
+      },
+      "engines": {
+        "node": ">=0.4.0"
+      }
+    },
+    "node_modules/webpack/node_modules/async": {
+      "version": "1.5.2",
+      "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz",
+      "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=",
+      "dev": true
+    },
+    "node_modules/webpack/node_modules/uglify-js": {
+      "version": "2.7.5",
+      "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.7.5.tgz",
+      "integrity": "sha1-RhLAx7qu4rp8SH3kkErhIgefLKg=",
+      "dev": true,
+      "dependencies": {
+        "async": "~0.2.6",
+        "source-map": "~0.5.1",
+        "uglify-to-browserify": "~1.0.0",
+        "yargs": "~3.10.0"
+      },
+      "bin": {
+        "uglifyjs": "bin/uglifyjs"
+      },
+      "engines": {
+        "node": ">=0.8.0"
+      }
+    },
+    "node_modules/webpack/node_modules/uglify-js/node_modules/async": {
+      "version": "0.2.10",
+      "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz",
+      "integrity": "sha1-trvgsGdLnXGXCMo43owjfLUmw9E=",
+      "dev": true
+    },
+    "node_modules/websocket-driver": {
+      "version": "0.7.0",
+      "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.0.tgz",
+      "integrity": "sha1-DK+dLXVdk67gSdS90NP+LMoqJOs=",
+      "dev": true,
+      "dependencies": {
+        "http-parser-js": ">=0.4.0",
+        "websocket-extensions": ">=0.1.1"
+      },
+      "engines": {
+        "node": ">=0.8.0"
+      }
+    },
+    "node_modules/websocket-extensions": {
+      "version": "0.1.3",
+      "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.3.tgz",
+      "integrity": "sha512-nqHUnMXmBzT0w570r2JpJxfiSD1IzoI+HGVdd3aZ0yNi3ngvQ4jv1dtHt5VGxfI2yj5yqImPhOK4vmIh2xMbGg==",
+      "dev": true,
+      "engines": {
+        "node": ">=0.8.0"
+      }
+    },
+    "node_modules/when": {
+      "version": "3.6.4",
+      "resolved": "https://registry.npmjs.org/when/-/when-3.6.4.tgz",
+      "integrity": "sha1-RztRfsFZ4rhQBUl6E5g/CVQS404=",
+      "dev": true
+    },
+    "node_modules/window-size": {
+      "version": "0.1.0",
+      "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz",
+      "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=",
+      "dev": true,
+      "engines": {
+        "node": ">= 0.8.0"
+      }
+    },
+    "node_modules/wordwrap": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz",
+      "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus="
+    },
+    "node_modules/wrappy": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
+      "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
+      "dev": true
+    },
+    "node_modules/ws": {
+      "version": "0.4.31",
+      "resolved": "https://registry.npmjs.org/ws/-/ws-0.4.31.tgz",
+      "integrity": "sha1-WkhJ56nM0e1aga60hHyf7fMSKSc=",
+      "hasInstallScript": true,
+      "dependencies": {
+        "commander": "~0.6.1",
+        "nan": "~0.3.0",
+        "options": ">=0.0.5",
+        "tinycolor": "0.x"
+      },
+      "bin": {
+        "wscat": "bin/wscat"
+      },
+      "engines": {
+        "node": ">=0.4.0"
+      }
+    },
+    "node_modules/ws/node_modules/commander": {
+      "version": "0.6.1",
+      "resolved": "https://registry.npmjs.org/commander/-/commander-0.6.1.tgz",
+      "integrity": "sha1-+mihT2qUXVTbvlDYzbMyDp47GgY=",
+      "engines": {
+        "node": ">= 0.4.x"
+      }
+    },
+    "node_modules/ws/node_modules/nan": {
+      "version": "0.3.2",
+      "resolved": "https://registry.npmjs.org/nan/-/nan-0.3.2.tgz",
+      "integrity": "sha1-DfGTXKsVNpB17xYK0olBB6oU3C0="
+    },
+    "node_modules/xlsjs": {
+      "version": "0.7.6",
+      "resolved": "https://registry.npmjs.org/xlsjs/-/xlsjs-0.7.6.tgz",
+      "integrity": "sha1-2IdUVpqrz47qcMwjlhtGJjSklWU=",
+      "deprecated": "xlsjs has been merged into xlsx",
+      "dependencies": {
+        "cfb": "~0.11.0",
+        "codepage": "",
+        "commander": "",
+        "exit-on-epipe": "",
+        "ssf": "~0.8.1"
+      },
+      "bin": {
+        "xls": "bin/xls.njs"
+      },
+      "engines": {
+        "node": ">=0.8"
+      }
+    },
+    "node_modules/xlsjs/node_modules/codepage": {
+      "version": "1.14.0",
+      "resolved": "https://registry.npmjs.org/codepage/-/codepage-1.14.0.tgz",
+      "integrity": "sha1-jL4lSBMjVZ19MHVxsP/5HnodL5k=",
+      "dependencies": {
+        "commander": "~2.14.1",
+        "exit-on-epipe": "~1.0.1"
+      },
+      "bin": {
+        "codepage": "bin/codepage.njs"
+      },
+      "engines": {
+        "node": ">=0.8"
+      }
+    },
+    "node_modules/xlsjs/node_modules/codepage/node_modules/commander": {
+      "version": "2.14.1",
+      "resolved": "https://registry.npmjs.org/commander/-/commander-2.14.1.tgz",
+      "integrity": "sha512-+YR16o3rK53SmWHU3rEM3tPAh2rwb1yPcQX5irVn7mb0gXbwuCCrnkbV5+PBfETdfg1vui07nM6PCG1zndcjQw=="
+    },
+    "node_modules/xlsjs/node_modules/commander": {
+      "version": "6.2.1",
+      "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz",
+      "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==",
+      "engines": {
+        "node": ">= 6"
+      }
+    },
+    "node_modules/xlsjs/node_modules/exit-on-epipe": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/exit-on-epipe/-/exit-on-epipe-1.0.1.tgz",
+      "integrity": "sha512-h2z5mrROTxce56S+pnvAV890uu7ls7f1kEvVGJbw1OlFH3/mlJ5bkXu0KRyW94v37zzHPiUd55iLn3DA7TjWpw==",
+      "engines": {
+        "node": ">=0.8"
+      }
+    },
+    "node_modules/xlsjs/node_modules/frac": {
+      "version": "0.3.1",
+      "resolved": "https://registry.npmjs.org/frac/-/frac-0.3.1.tgz",
+      "integrity": "sha1-V3Z3t/3L5vr3xGHxgB00E3zaQ1Q=",
+      "engines": {
+        "node": ">=0.8"
+      }
+    },
+    "node_modules/xlsjs/node_modules/ssf": {
+      "version": "0.8.2",
+      "resolved": "https://registry.npmjs.org/ssf/-/ssf-0.8.2.tgz",
+      "integrity": "sha1-udTcahwbz3b4q/qW19dlb7Kr7NY=",
+      "dependencies": {
+        "colors": "0.6.2",
+        "frac": "0.3.1",
+        "voc": ""
+      },
+      "bin": {
+        "ssf": "bin/ssf.njs"
+      },
+      "engines": {
+        "node": ">=0.8"
+      }
+    },
+    "node_modules/xlsx": {
+      "version": "0.14.5",
+      "resolved": "https://registry.npmjs.org/xlsx/-/xlsx-0.14.5.tgz",
+      "integrity": "sha512-s/5f4/mjeWREmIWZ+HtDfh/rnz51ar+dZ4LWKZU3u9VBx2zLdSIWTdXgoa52/pnZ9Oe/Vu1W1qzcKzLVe+lq4w==",
+      "dependencies": {
+        "adler-32": "~1.2.0",
+        "cfb": "^1.1.2",
+        "codepage": "~1.14.0",
+        "commander": "~2.17.1",
+        "crc-32": "~1.2.0",
+        "exit-on-epipe": "~1.0.1",
+        "ssf": "~0.10.2"
+      },
+      "bin": {
+        "xlsx": "bin/xlsx.njs"
+      },
+      "engines": {
+        "node": ">=0.8"
+      }
+    },
+    "node_modules/xlsx/node_modules/cfb": {
+      "version": "1.1.3",
+      "resolved": "https://registry.npmjs.org/cfb/-/cfb-1.1.3.tgz",
+      "integrity": "sha512-joXBW0nMuwV9no7UTMiyVJnQL6XIU3ThXVjFUDHgl9MpILPOomyfaGqC290VELZ48bbQKZXnQ81UT5HouTxHsw==",
+      "dependencies": {
+        "adler-32": "~1.2.0",
+        "commander": "^2.16.0",
+        "crc-32": "~1.2.0",
+        "printj": "~1.1.2"
+      },
+      "bin": {
+        "cfb": "bin/cfb.njs"
+      },
+      "engines": {
+        "node": ">=0.8"
+      }
+    },
+    "node_modules/xoauth2": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/xoauth2/-/xoauth2-1.2.0.tgz",
+      "integrity": "sha1-8u76wRRyyXHqO8RuVU60sSMhRuU="
+    },
+    "node_modules/xtend": {
+      "version": "4.0.1",
+      "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz",
+      "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=",
+      "dev": true,
+      "engines": {
+        "node": ">=0.4"
+      }
+    },
+    "node_modules/yargs": {
+      "version": "3.10.0",
+      "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz",
+      "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=",
+      "dev": true,
+      "dependencies": {
+        "camelcase": "^1.0.2",
+        "cliui": "^2.1.0",
+        "decamelize": "^1.0.0",
+        "window-size": "0.1.0"
+      }
+    },
+    "node_modules/zappajs": {
+      "version": "0.5.0",
+      "resolved": "https://registry.npmjs.org/zappajs/-/zappajs-0.5.0.tgz",
+      "integrity": "sha1-HMeG0xwVWboYDwHKOt8eE8oCylw=",
+      "dependencies": {
+        "coffee-css": "0.0.5",
+        "coffeecup": "0.3.21",
+        "express": "3.16.9",
+        "methods": "1.1.0",
+        "node-uuid": "1.4.1",
+        "socket.io": "1.0.6",
+        "uglify-js": "2.4.15"
+      }
+    },
+    "node_modules/zappajs/node_modules/optimist": {
+      "version": "0.3.7",
+      "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.3.7.tgz",
+      "integrity": "sha1-yQlBrVnkJzMokjB00s8ufLxuwNk=",
+      "dependencies": {
+        "wordwrap": "~0.0.2"
+      }
+    },
+    "node_modules/zappajs/node_modules/source-map": {
+      "version": "0.1.34",
+      "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.34.tgz",
+      "integrity": "sha1-p8/omux7FoLDsZjQrPtH19CQVms=",
+      "dependencies": {
+        "amdefine": ">=0.0.4"
+      },
+      "engines": {
+        "node": ">=0.8.0"
+      }
+    },
+    "node_modules/zappajs/node_modules/uglify-js": {
+      "version": "2.4.15",
+      "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.4.15.tgz",
+      "integrity": "sha1-ErxthDRfvDBuE/cHXWQ3qL9k1+M=",
+      "dependencies": {
+        "async": "~0.2.6",
+        "optimist": "~0.3.5",
+        "source-map": "0.1.34",
+        "uglify-to-browserify": "~1.0.0"
+      },
+      "bin": {
+        "uglifyjs": "bin/uglifyjs"
+      },
+      "engines": {
+        "node": ">=0.4.0"
+      }
+    },
+    "node_modules/zappajs/node_modules/wordwrap": {
+      "version": "0.0.3",
+      "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz",
+      "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=",
+      "engines": {
+        "node": ">=0.4.0"
+      }
+    }
+  },
   "dependencies": {
     "accepts": {
       "version": "1.0.7",
@@ -418,7 +6363,7 @@
       "resolved": "https://registry.npmjs.org/cfb/-/cfb-0.11.1.tgz",
       "integrity": "sha1-qW248nKmw/uZ27sj70EiP0i+Hqc=",
       "requires": {
-        "commander": "^6.2.1"
+        "commander": ""
       },
       "dependencies": {
         "commander": {
@@ -1564,24 +7509,32 @@
       "dependencies": {
         "abbrev": {
           "version": "1.1.1",
+          "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
+          "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==",
           "bundled": true,
           "dev": true,
           "optional": true
         },
         "ansi-regex": {
           "version": "2.1.1",
+          "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
+          "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
           "bundled": true,
           "dev": true,
           "optional": true
         },
         "aproba": {
           "version": "1.2.0",
+          "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz",
+          "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==",
           "bundled": true,
           "dev": true,
           "optional": true
         },
         "are-we-there-yet": {
           "version": "1.1.5",
+          "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz",
+          "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==",
           "bundled": true,
           "dev": true,
           "optional": true,
@@ -1592,12 +7545,16 @@
         },
         "balanced-match": {
           "version": "1.0.0",
+          "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
+          "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
           "bundled": true,
           "dev": true,
           "optional": true
         },
         "brace-expansion": {
           "version": "1.1.11",
+          "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
+          "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
           "bundled": true,
           "dev": true,
           "optional": true,
@@ -1608,36 +7565,46 @@
         },
         "chownr": {
           "version": "1.1.1",
+          "integrity": "sha512-j38EvO5+LHX84jlo6h4UzmOwi0UgW61WRyPtJz4qaadK5eY3BTS5TY/S1Stc3Uk2lIM6TPevAlULiEJwie860g==",
           "bundled": true,
           "dev": true,
           "optional": true
         },
         "code-point-at": {
           "version": "1.1.0",
+          "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz",
+          "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=",
           "bundled": true,
           "dev": true,
           "optional": true
         },
         "concat-map": {
           "version": "0.0.1",
+          "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
+          "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
           "bundled": true,
           "dev": true,
           "optional": true
         },
         "console-control-strings": {
           "version": "1.1.0",
+          "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz",
+          "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=",
           "bundled": true,
           "dev": true,
           "optional": true
         },
         "core-util-is": {
           "version": "1.0.2",
+          "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
+          "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=",
           "bundled": true,
           "dev": true,
           "optional": true
         },
         "debug": {
           "version": "4.1.1",
+          "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
           "bundled": true,
           "dev": true,
           "optional": true,
@@ -1647,24 +7614,32 @@
         },
         "deep-extend": {
           "version": "0.6.0",
+          "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz",
+          "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==",
           "bundled": true,
           "dev": true,
           "optional": true
         },
         "delegates": {
           "version": "1.0.0",
+          "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz",
+          "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=",
           "bundled": true,
           "dev": true,
           "optional": true
         },
         "detect-libc": {
           "version": "1.0.3",
+          "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz",
+          "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=",
           "bundled": true,
           "dev": true,
           "optional": true
         },
         "fs-minipass": {
           "version": "1.2.5",
+          "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.5.tgz",
+          "integrity": "sha512-JhBl0skXjUPCFH7x6x61gQxrKyXsxB5gcgePLZCwfyCGGsTISMoIeObbrvVeP6Xmyaudw4TT43qV2Gz+iyd2oQ==",
           "bundled": true,
           "dev": true,
           "optional": true,
@@ -1674,12 +7649,16 @@
         },
         "fs.realpath": {
           "version": "1.0.0",
+          "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
+          "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
           "bundled": true,
           "dev": true,
           "optional": true
         },
         "gauge": {
           "version": "2.7.4",
+          "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz",
+          "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=",
           "bundled": true,
           "dev": true,
           "optional": true,
@@ -1696,6 +7675,7 @@
         },
         "glob": {
           "version": "7.1.3",
+          "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==",
           "bundled": true,
           "dev": true,
           "optional": true,
@@ -1710,12 +7690,16 @@
         },
         "has-unicode": {
           "version": "2.0.1",
+          "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz",
+          "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=",
           "bundled": true,
           "dev": true,
           "optional": true
         },
         "iconv-lite": {
           "version": "0.4.24",
+          "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
+          "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
           "bundled": true,
           "dev": true,
           "optional": true,
@@ -1725,6 +7709,8 @@
         },
         "ignore-walk": {
           "version": "3.0.1",
+          "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.1.tgz",
+          "integrity": "sha512-DTVlMx3IYPe0/JJcYP7Gxg7ttZZu3IInhuEhbchuqneY9wWe5Ojy2mXLBaQFUQmo0AW2r3qG7m1mg86js+gnlQ==",
           "bundled": true,
           "dev": true,
           "optional": true,
@@ -1734,6 +7720,8 @@
         },
         "inflight": {
           "version": "1.0.6",
+          "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
+          "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
           "bundled": true,
           "dev": true,
           "optional": true,
@@ -1744,18 +7732,24 @@
         },
         "inherits": {
           "version": "2.0.3",
+          "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
+          "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
           "bundled": true,
           "dev": true,
           "optional": true
         },
         "ini": {
           "version": "1.3.5",
+          "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz",
+          "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==",
           "bundled": true,
           "dev": true,
           "optional": true
         },
         "is-fullwidth-code-point": {
           "version": "1.0.0",
+          "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
+          "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
           "bundled": true,
           "dev": true,
           "optional": true,
@@ -1765,12 +7759,16 @@
         },
         "isarray": {
           "version": "1.0.0",
+          "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+          "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
           "bundled": true,
           "dev": true,
           "optional": true
         },
         "minimatch": {
           "version": "3.0.4",
+          "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
+          "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
           "bundled": true,
           "dev": true,
           "optional": true,
@@ -1780,12 +7778,15 @@
         },
         "minimist": {
           "version": "0.0.8",
+          "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
+          "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=",
           "bundled": true,
           "dev": true,
           "optional": true
         },
         "minipass": {
           "version": "2.3.5",
+          "integrity": "sha512-Gi1W4k059gyRbyVUZQ4mEqLm0YIUiGYfvxhF6SIlk3ui1WVxMTGfGdQ2SInh3PDrRTVvPKgULkpJtT4RH10+VA==",
           "bundled": true,
           "dev": true,
           "optional": true,
@@ -1796,6 +7797,7 @@
         },
         "minizlib": {
           "version": "1.2.1",
+          "integrity": "sha512-7+4oTUOWKg7AuL3vloEWekXY2/D20cevzsrNT2kGWm+39J9hGTCBv8VI5Pm5lXZ/o3/mdR4f8rflAPhnQb8mPA==",
           "bundled": true,
           "dev": true,
           "optional": true,
@@ -1805,6 +7807,8 @@
         },
         "mkdirp": {
           "version": "0.5.1",
+          "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
+          "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
           "bundled": true,
           "dev": true,
           "optional": true,
@@ -1814,6 +7818,7 @@
         },
         "ms": {
           "version": "2.1.1",
+          "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==",
           "bundled": true,
           "dev": true,
           "optional": true
@@ -1827,6 +7832,7 @@
         },
         "needle": {
           "version": "2.3.0",
+          "integrity": "sha512-QBZu7aAFR0522EyaXZM0FZ9GLpq6lvQ3uq8gteiDUp7wKdy0lSd2hPlgFwVuW1CBkfEs9PfDQsQzZghLs/psdg==",
           "bundled": true,
           "dev": true,
           "optional": true,
@@ -1838,6 +7844,7 @@
         },
         "node-pre-gyp": {
           "version": "0.12.0",
+          "integrity": "sha512-4KghwV8vH5k+g2ylT+sLTjy5wmUOb9vPhnM8NHvRf9dHmnW/CndrFXy2aRPaPST6dugXSdHXfeaHQm77PIz/1A==",
           "bundled": true,
           "dev": true,
           "optional": true,
@@ -1856,6 +7863,8 @@
         },
         "nopt": {
           "version": "4.0.1",
+          "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.1.tgz",
+          "integrity": "sha1-0NRoWv1UFRk8jHUFYC0NF81kR00=",
           "bundled": true,
           "dev": true,
           "optional": true,
@@ -1866,12 +7875,14 @@
         },
         "npm-bundled": {
           "version": "1.0.6",
+          "integrity": "sha512-8/JCaftHwbd//k6y2rEWp6k1wxVfpFzB6t1p825+cUb7Ym2XQfhwIC5KwhrvzZRJu+LtDE585zVaS32+CGtf0g==",
           "bundled": true,
           "dev": true,
           "optional": true
         },
         "npm-packlist": {
           "version": "1.4.1",
+          "integrity": "sha512-+TcdO7HJJ8peiiYhvPxsEDhF3PJFGUGRcFsGve3vxvxdcpO2Z4Z7rkosRM0kWj6LfbK/P0gu3dzk5RU1ffvFcw==",
           "bundled": true,
           "dev": true,
           "optional": true,
@@ -1882,6 +7893,8 @@
         },
         "npmlog": {
           "version": "4.1.2",
+          "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz",
+          "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==",
           "bundled": true,
           "dev": true,
           "optional": true,
@@ -1894,18 +7907,24 @@
         },
         "number-is-nan": {
           "version": "1.0.1",
+          "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz",
+          "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=",
           "bundled": true,
           "dev": true,
           "optional": true
         },
         "object-assign": {
           "version": "4.1.1",
+          "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
+          "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=",
           "bundled": true,
           "dev": true,
           "optional": true
         },
         "once": {
           "version": "1.4.0",
+          "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
+          "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
           "bundled": true,
           "dev": true,
           "optional": true,
@@ -1915,18 +7934,24 @@
         },
         "os-homedir": {
           "version": "1.0.2",
+          "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz",
+          "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=",
           "bundled": true,
           "dev": true,
           "optional": true
         },
         "os-tmpdir": {
           "version": "1.0.2",
+          "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
+          "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=",
           "bundled": true,
           "dev": true,
           "optional": true
         },
         "osenv": {
           "version": "0.1.5",
+          "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz",
+          "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==",
           "bundled": true,
           "dev": true,
           "optional": true,
@@ -1937,18 +7962,24 @@
         },
         "path-is-absolute": {
           "version": "1.0.1",
+          "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
+          "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
           "bundled": true,
           "dev": true,
           "optional": true
         },
         "process-nextick-args": {
           "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz",
+          "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==",
           "bundled": true,
           "dev": true,
           "optional": true
         },
         "rc": {
           "version": "1.2.8",
+          "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz",
+          "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==",
           "bundled": true,
           "dev": true,
           "optional": true,
@@ -1961,6 +7992,8 @@
           "dependencies": {
             "minimist": {
               "version": "1.2.0",
+              "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
+              "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
               "bundled": true,
               "dev": true,
               "optional": true
@@ -1969,6 +8002,8 @@
         },
         "readable-stream": {
           "version": "2.3.6",
+          "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
+          "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
           "bundled": true,
           "dev": true,
           "optional": true,
@@ -1984,6 +8019,7 @@
         },
         "rimraf": {
           "version": "2.6.3",
+          "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==",
           "bundled": true,
           "dev": true,
           "optional": true,
@@ -1993,62 +8029,79 @@
         },
         "safe-buffer": {
           "version": "5.1.2",
+          "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
+          "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
           "bundled": true,
           "dev": true,
           "optional": true
         },
         "safer-buffer": {
           "version": "2.1.2",
+          "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
+          "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
           "bundled": true,
           "dev": true,
           "optional": true
         },
         "sax": {
           "version": "1.2.4",
+          "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz",
+          "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==",
           "bundled": true,
           "dev": true,
           "optional": true
         },
         "semver": {
           "version": "5.7.0",
+          "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==",
           "bundled": true,
           "dev": true,
           "optional": true
         },
         "set-blocking": {
           "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
+          "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=",
           "bundled": true,
           "dev": true,
           "optional": true
         },
         "signal-exit": {
           "version": "3.0.2",
+          "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz",
+          "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=",
           "bundled": true,
           "dev": true,
           "optional": true
         },
-        "string-width": {
-          "version": "1.0.2",
+        "string_decoder": {
+          "version": "1.1.1",
+          "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+          "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
           "bundled": true,
           "dev": true,
           "optional": true,
           "requires": {
-            "code-point-at": "^1.0.0",
-            "is-fullwidth-code-point": "^1.0.0",
-            "strip-ansi": "^3.0.0"
+            "safe-buffer": "~5.1.0"
           }
         },
-        "string_decoder": {
-          "version": "1.1.1",
+        "string-width": {
+          "version": "1.0.2",
+          "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
+          "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
           "bundled": true,
           "dev": true,
           "optional": true,
           "requires": {
-            "safe-buffer": "~5.1.0"
+            "code-point-at": "^1.0.0",
+            "is-fullwidth-code-point": "^1.0.0",
+            "strip-ansi": "^3.0.0"
           }
         },
         "strip-ansi": {
           "version": "3.0.1",
+          "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
+          "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
           "bundled": true,
           "dev": true,
           "optional": true,
@@ -2058,12 +8111,15 @@
         },
         "strip-json-comments": {
           "version": "2.0.1",
+          "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz",
+          "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=",
           "bundled": true,
           "dev": true,
           "optional": true
         },
         "tar": {
           "version": "4.4.8",
+          "integrity": "sha512-LzHF64s5chPQQS0IYBn9IN5h3i98c12bo4NCO7e0sGM2llXQ3p2FGC5sdENN4cTW48O915Sh+x+EXx7XW96xYQ==",
           "bundled": true,
           "dev": true,
           "optional": true,
@@ -2079,12 +8135,16 @@
         },
         "util-deprecate": {
           "version": "1.0.2",
+          "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
+          "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=",
           "bundled": true,
           "dev": true,
           "optional": true
         },
         "wide-align": {
           "version": "1.1.3",
+          "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz",
+          "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==",
           "bundled": true,
           "dev": true,
           "optional": true,
@@ -2094,12 +8154,15 @@
         },
         "wrappy": {
           "version": "1.0.2",
+          "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
+          "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
           "bundled": true,
           "dev": true,
           "optional": true
         },
         "yallist": {
           "version": "3.0.3",
+          "integrity": "sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A==",
           "bundled": true,
           "dev": true,
           "optional": true
@@ -2164,9 +8227,9 @@
       "integrity": "sha1-uCObri8HJLZaqvLnTp6xWgTbUOs=",
       "requires": {
         "babyparse": "0.2.1",
-        "codepage": "^1.14.0",
-        "commander": "^6.2.1",
-        "exit-on-epipe": "^1.0.1",
+        "codepage": "",
+        "commander": "",
+        "exit-on-epipe": "",
         "ssf": "0.8.2"
       },
       "dependencies": {
@@ -2208,7 +8271,7 @@
           "requires": {
             "colors": "0.6.2",
             "frac": "0.3.1",
-            "voc": "^1.2.0"
+            "voc": ""
           }
         }
       }
@@ -2457,9 +8520,9 @@
       "resolved": "https://registry.npmjs.org/j/-/j-0.4.5.tgz",
       "integrity": "sha1-As8p8d2+VOUnJj0HVNbo0hemBk4=",
       "requires": {
-        "commander": "^6.2.1",
-        "concat-stream": "^2.0.0",
-        "exit-on-epipe": "^1.0.1",
+        "commander": "",
+        "concat-stream": "",
+        "exit-on-epipe": "",
         "harb": "~0.1.1",
         "xlsjs": "~0.7.6",
         "xlsx": "~0.9.1"
@@ -2470,9 +8533,9 @@
           "resolved": "https://registry.npmjs.org/adler-32/-/adler-32-1.0.0.tgz",
           "integrity": "sha1-KHKKcXVvYpZm3RZTzYB5Op3xhlE=",
           "requires": {
-            "concat-stream": "^2.0.0",
-            "exit-on-epipe": "^1.0.1",
-            "printj": "^1.2.2"
+            "concat-stream": "",
+            "exit-on-epipe": "",
+            "printj": ""
           }
         },
         "codepage": {
@@ -2480,10 +8543,10 @@
           "resolved": "https://registry.npmjs.org/codepage/-/codepage-1.8.1.tgz",
           "integrity": "sha1-8aAJ1SYdwnVGKLrLb7vw5uKr/6o=",
           "requires": {
-            "commander": "^6.2.1",
-            "concat-stream": "^2.0.0",
-            "exit-on-epipe": "^1.0.1",
-            "voc": "^1.2.0"
+            "commander": "",
+            "concat-stream": "",
+            "exit-on-epipe": "",
+            "voc": ""
           }
         },
         "commander": {
@@ -2496,8 +8559,8 @@
           "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.0.2.tgz",
           "integrity": "sha1-CVB5hO6bzOO9G4hh8N6KsQroGH0=",
           "requires": {
-            "exit-on-epipe": "^1.0.1",
-            "printj": "^1.2.2"
+            "exit-on-epipe": "",
+            "printj": ""
           }
         },
         "exit-on-epipe": {
@@ -2510,7 +8573,7 @@
           "resolved": "https://registry.npmjs.org/frac/-/frac-1.0.6.tgz",
           "integrity": "sha1-mg38I5VoUqizIGI7688b6eoEgik=",
           "requires": {
-            "voc": "^1.2.0"
+            "voc": ""
           }
         },
         "printj": {
@@ -2525,7 +8588,7 @@
           "requires": {
             "colors": "0.6.2",
             "frac": "~1.0.6",
-            "voc": "^1.2.0"
+            "voc": ""
           }
         },
         "xlsx": {
@@ -4093,38 +10156,10 @@
       "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c="
     },
     "uglify-js": {
-      "version": "2.4.15",
-      "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.4.15.tgz",
-      "integrity": "sha1-ErxthDRfvDBuE/cHXWQ3qL9k1+M=",
-      "requires": {
-        "async": "~0.2.6",
-        "optimist": "~0.3.5",
-        "source-map": "0.1.34",
-        "uglify-to-browserify": "~1.0.0"
-      },
-      "dependencies": {
-        "optimist": {
-          "version": "0.3.7",
-          "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.3.7.tgz",
-          "integrity": "sha1-yQlBrVnkJzMokjB00s8ufLxuwNk=",
-          "requires": {
-            "wordwrap": "~0.0.2"
-          }
-        },
-        "source-map": {
-          "version": "0.1.34",
-          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.34.tgz",
-          "integrity": "sha1-p8/omux7FoLDsZjQrPtH19CQVms=",
-          "requires": {
-            "amdefine": ">=0.0.4"
-          }
-        },
-        "wordwrap": {
-          "version": "0.0.3",
-          "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz",
-          "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc="
-        }
-      }
+      "version": "3.15.3",
+      "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.15.3.tgz",
+      "integrity": "sha512-6iCVm2omGJbsu3JWac+p6kUiOpg3wFO2f8lIXjfEb8RrmLjzog1wTPMmwKB7swfzzqxj9YM+sGUM++u1qN4qJg==",
+      "dev": true
     },
     "uglify-to-browserify": {
       "version": "1.0.2",
@@ -4627,9 +10662,9 @@
       "integrity": "sha1-2IdUVpqrz47qcMwjlhtGJjSklWU=",
       "requires": {
         "cfb": "~0.11.0",
-        "codepage": "^1.14.0",
-        "commander": "^6.2.1",
-        "exit-on-epipe": "^1.0.1",
+        "codepage": "",
+        "commander": "",
+        "exit-on-epipe": "",
         "ssf": "~0.8.1"
       },
       "dependencies": {
@@ -4671,7 +10706,7 @@
           "requires": {
             "colors": "0.6.2",
             "frac": "0.3.1",
-            "voc": "^1.2.0"
+            "voc": ""
           }
         }
       }
@@ -4738,6 +10773,40 @@
         "node-uuid": "1.4.1",
         "socket.io": "1.0.6",
         "uglify-js": "2.4.15"
+      },
+      "dependencies": {
+        "optimist": {
+          "version": "0.3.7",
+          "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.3.7.tgz",
+          "integrity": "sha1-yQlBrVnkJzMokjB00s8ufLxuwNk=",
+          "requires": {
+            "wordwrap": "~0.0.2"
+          }
+        },
+        "source-map": {
+          "version": "0.1.34",
+          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.34.tgz",
+          "integrity": "sha1-p8/omux7FoLDsZjQrPtH19CQVms=",
+          "requires": {
+            "amdefine": ">=0.0.4"
+          }
+        },
+        "uglify-js": {
+          "version": "2.4.15",
+          "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.4.15.tgz",
+          "integrity": "sha1-ErxthDRfvDBuE/cHXWQ3qL9k1+M=",
+          "requires": {
+            "async": "~0.2.6",
+            "optimist": "~0.3.5",
+            "source-map": "0.1.34",
+            "uglify-to-browserify": "~1.0.0"
+          }
+        },
+        "wordwrap": {
+          "version": "0.0.3",
+          "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz",
+          "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc="
+        }
       }
     }
   }
diff --git a/package.json b/package.json
index a8011a71..7992da86 100644
--- a/package.json
+++ b/package.json
@@ -11,7 +11,6 @@
     "cors": "*",
     "csv-parse": "^0.0.6",
     "iconv-lite": "^0.4.13",
-    "xlsx": "^0.14.5",
     "j": "0.4.5",
     "livescript": "1.5.x",
     "minimatch": "*",
@@ -19,10 +18,10 @@
     "redis": "0.12.x",
     "socialcalc": "^2.3.0",
     "uuid-pure": "*",
+    "xlsx": "^0.14.5",
     "xoauth2": "*",
     "zappajs": "0.5.x"
   },
-  "optionalDependencies": {},
   "devDependencies": {
     "css-loader": "^0.9.0",
     "livescript-loader": "^0.1.5",
@@ -32,6 +31,7 @@
     "style-loader": "^0.8.2",
     "stylus-loader": "^3.0.2",
     "superagent": "^0.21.0",
+    "uglify-js": "^3.15.3",
     "webpack": "^1.4.13",
     "webpack-dev-server": "^1.6.6"
   },
diff --git a/static/ethercalc.js b/static/ethercalc.js
index f4ef887b..6304684c 100644
--- a/static/ethercalc.js
+++ b/static/ethercalc.js
@@ -1,26 +1 @@
-// Auto-generated from "make depends"; ALL CHANGES HERE WILL BE LOST!
-!function(e,t){"function"==typeof define&&define.amd?define([],t.bind(e,this)):"object"==typeof module&&module.exports?module.exports=t.call(e,this):e.SocialCalc=t.call(e,this)}(this,function(e){var t;t||(t={}),t.Constants={cellDataType:{v:"value",n:"value",t:"text",f:"formula",c:"constant"},textdatadefaulttype:"t",s_BrowserNotSupported:"Browser not supported.",s_InternalError:"Internal SocialCalc error (probably an internal bug): ",s_pssUnknownColType:"Unknown col type item",s_pssUnknownRowType:"Unknown row type item",s_pssUnknownLineType:"Unknown line type",s_cfspUnknownCellType:"Unknown cell type item",doCanonicalizeSheet:!0,s_escUnknownSheetCmd:"Unknown sheet command: ",s_escUnknownSetCoordCmd:"Unknown set coord command: ",s_escUnknownCmd:"Unknown command: ",s_caccCircRef:"Circular reference to ",defaultRowNameWidth:"30",defaultAssumedRowHeight:15,defaultCellIDPrefix:"cell_",defaultCellLayout:"padding:2px 2px 1px 2px;vertical-align:top;",defaultCellFontStyle:"normal normal",defaultCellFontSize:"small",defaultCellFontFamily:"Verdana,Arial,Helvetica,sans-serif",defaultPaneDividerWidth:"3",defaultPaneDividerHeight:"3",defaultGridCSS:"1px solid #C0C0C0;",defaultCommentClass:"",defaultCommentStyle:"background-repeat:no-repeat;background-position:top right;background-image:url(images/sc-commentbg.gif);",defaultCommentNoGridClass:"",defaultCommentNoGridStyle:"",defaultReadonlyClass:"",defaultReadonlyStyle:"background-repeat:no-repeat;background-position:top right;background-image:url(images/sc-lockbg.gif);",defaultReadonlyNoGridClass:"",defaultReadonlyNoGridStyle:"",defaultReadonlyComment:"Locked cell",defaultColWidth:"80",defaultMinimumColWidth:10,defaultHighlightTypeCursorClass:"",defaultHighlightTypeCursorStyle:"color:#FFF;backgroundColor:#A6A6A6;",defaultHighlightTypeRangeClass:"",defaultHighlightTypeRangeStyle:"color:#000;backgroundColor:#E5E5E5;",defaultColnameClass:"",defaultColnameStyle:"overflow:visible;font-size:small;text-align:center;color:#FFFFFF;background-color:#808080;",defaultSelectedColnameClass:"",defaultSelectedColnameStyle:"overflow:visible;font-size:small;text-align:center;color:#FFFFFF;background-color:#404040;",defaultRownameClass:"",defaultRownameStyle:"position:relative;overflow:visible;font-size:small;text-align:right;color:#FFFFFF;background-color:#808080;",defaultSelectedRownameClass:"",defaultSelectedRownameStyle:"position:relative;overflow:visible;font-size:small;text-align:right;color:#FFFFFF;background-color:#404040;",defaultUpperLeftClass:"",defaultUpperLeftStyle:"font-size:small;",defaultSkippedCellClass:"",defaultSkippedCellStyle:"font-size:small;background-color:#CCC",defaultPaneDividerClass:"",defaultPaneDividerStyle:"font-size:small;background-color:#C0C0C0;padding:0px;",defaultUnhideLeftClass:"",defaultUnhideLeftStyle:"float:right;width:9px;height:12px;cursor:pointer;background-image:url(images/sc-unhideleft.gif);padding:0;",defaultUnhideRightClass:"",defaultUnhideRightStyle:"float:left;width:9px;height:12px;cursor:pointer;background-image:url(images/sc-unhideright.gif);padding:0;",defaultUnhideTopClass:"",defaultUnhideTopStyle:"float:left;left:1px;position:absolute;bottom:-4px;width:12px;height:9px;cursor:pointer;background-image:url(images/sc-unhidetop.gif);padding:0;",defaultUnhideBottomClass:"",defaultUnhideBottomStyle:"float:left;width:12px;height:9px;cursor:pointer;background-image:url(images/sc-unhidebottom.gif);padding:0;",defaultColResizeBarClass:"col-resize-bar",defaultRowResizeBarClass:"row-resize-bar",s_rcMissingSheet:"Render Context must have a sheet object",defaultLinkFormatString:'<span style="font-size:smaller;text-decoration:none !important;background-color:#66B;color:#FFF;">Link</span>',defaultPageLinkFormatString:'<span style="font-size:smaller;text-decoration:none !important;background-color:#66B;color:#FFF;">Page</span>',defaultFormatp:"#,##0.0%",defaultFormatc:"[$$]#,##0.00",defaultFormatdt:"d-mmm-yyyy h:mm:ss",defaultFormatd:"d-mmm-yyyy",defaultFormatt:"[h]:mm:ss",defaultDisplayTRUE:"TRUE",defaultDisplayFALSE:"FALSE",defaultImagePrefix:"images/sc_",defaultTableEditorIDPrefix:"te_",defaultPageUpDnAmount:15,AllowCtrlS:!0,defaultTableControlThickness:20,cteGriddivClass:"",s_statusline_executing:"Executing...",s_statusline_displaying:"Displaying...",s_statusline_ordering:"Ordering...",s_statusline_calculating:"Calculating...",s_statusline_calculatingls:"Calculating... Loading Sheet...",s_statusline_doingserverfunc:"doing server function ",s_statusline_incell:" in cell ",s_statusline_calcstart:"Calculation start...",s_statusline_sum:"SUM",s_statusline_recalcneeded:'<span style="color:#999;">(Recalc needed)</span>',s_statusline_circref:'<span style="color:red;">Circular reference: ',s_statusline_sendemail:"Sending Email ",s_inputboxdisplaymultilinetext:"[Multi-line text: Click icon on right to edit]",defaultInputEchoClass:"",defaultInputEchoStyle:"filter:alpha(opacity=90);opacity:.9;backgroundColor:#FFD;border:1px solid #884;fontSize:small;padding:2px 10px 1px 2px;cursor:default;",defaultInputEchoPromptClass:"",defaultInputEchoPromptStyle:"filter:alpha(opacity=90);opacity:.9;backgroundColor:#FFD;borderLeft:1px solid #884;borderRight:1px solid #884;borderBottom:1px solid #884;fontSize:small;fontStyle:italic;padding:2px 10px 1px 2px;cursor:default;",defaultInputEchoHintClass:"",defaultInputEchoHintStyle:"filter:alpha(opacity=80);opacity:.8;backgroundColor:#884;border:1px solid #884;fontSize:small;fontWeight:bold;padding:2px 2px 2px 2px;color:#FFF;position:absolute;top:-20px;cursor:default;",ietUnknownFunction:"Unknown function ",CH_radius1:29,CH_radius2:41,s_CHfillAllTooltip:"Fill Contents and Formats Down/Right",s_CHfillContentsTooltip:"Fill Contents Only Down/Right",s_CHmovePasteAllTooltip:"Move Contents and Formats",s_CHmovePasteContentsTooltip:"Move Contents Only",s_CHmoveInsertAllTooltip:"Slide Contents and Formats within Row/Col",s_CHmoveInsertContentsTooltip:"Slide Contents within Row/Col",s_CHindicatorOperationLookup:{Fill:"Fill",FillC:"Fill Contents",Move:"Move",MoveI:"Slide",MoveC:"Move Contents",MoveIC:"Slide Contents"},s_CHindicatorDirectionLookup:{Down:" Down",Right:" Right",Horizontal:" Horizontal",Vertical:" Vertical"},defaultTCSliderThickness:9,defaultTCButtonThickness:20,defaultTCThumbThickness:15,TCmainStyle:"backgroundColor:#EEE;",TCmainClass:"",TCendcapStyle:"backgroundColor:#FFF;",TCendcapClass:"",TCpanesliderClass:"tc-paneslider",s_panesliderTooltiph:"Drag to lock pane vertically",s_panesliderTooltipv:"Drag to lock pane horizontally",TClessbuttonStyle:"backgroundColor:#AAA;",TClessbuttonClass:"",TClessbuttonRepeatWait:300,TClessbuttonRepeatInterval:20,TCmorebuttonStyle:"backgroundColor:#AAA;",TCmorebuttonClass:"",TCmorebuttonRepeatWait:300,TCmorebuttonRepeatInterval:20,TCscrollareaStyle:"backgroundColor:#DDD;",TCscrollareaClass:"",TCscrollareaRepeatWait:500,TCscrollareaRepeatInterval:100,TCthumbClass:"",TCthumbStyle:"backgroundColor:#CCC;",TCPStrackinglineClass:"tracklingine",TCPStrackinglineStyle:"overflow:hidden;position:absolute;zIndex:100;",TCPStrackinglineThickness:"2px",TCTDFSthumbstatusvClass:"",TCTDFSthumbstatusvStyle:"height:20px;width:auto;border:3px solid #808080;overflow:hidden;backgroundColor:#FFF;fontSize:small;position:absolute;zIndex:100;",TCTDFSthumbstatushClass:"",TCTDFSthumbstatushStyle:"height:20px;width:auto;border:1px solid black;padding:2px;backgroundColor:#FFF;fontSize:small;position:absolute;zIndex:100;",TCTDFSthumbstatusrownumClass:"",TCTDFSthumbstatusrownumStyle:"color:#FFF;background-color:#808080;font-size:small;white-space:nowrap;padding:3px;",TCTDFStopOffsetv:0,TCTDFSleftOffsetv:-80,s_TCTDFthumbstatusPrefixv:"Row ",TCTDFStopOffseth:-30,TCTDFSleftOffseth:0,s_TCTDFthumbstatusPrefixh:"Col ",TooltipOffsetX:2,TooltipOffsetY:10,TDpopupElementClass:"",TDpopupElementStyle:"border:1px solid black;padding:1px 2px 2px 2px;textAlign:center;backgroundColor:#FFF;fontSize:7pt;fontFamily:Verdana,Arial,Helvetica,sans-serif;position:absolute;width:auto;zIndex:110;",SCToolbarbackground:"background-color:#ffffff;",SCTabbackground:"background-color:#CCC;",SCTabselectedCSS:"font-size:small;padding:6px 30px 6px 8px;color:#FFF;background-color:#404040;cursor:default;border-right:1px solid #CCC;",SCTabplainCSS:"font-size:small;padding:6px 30px 6px 8px;color:#FFF;background-color:#808080;cursor:default;border-right:1px solid #CCC;",SCToolbartext:"font-size:x-small;font-weight:bold;color:#888",SCFormulabarheight:30,SCStatuslineheight:20,SCStatuslineCSS:"font-size:10px;padding:3px 0px;",SCFormatNumberFormats:"[cancel]:|[break]:|%loc!Default!:|[custom]:|%loc!Automatic!:general|%loc!Auto w/ commas!:[,]General|[break]:|00:00|000:000|0000:0000|00000:00000|[break]:|%loc!Formula!:formula|%loc!Hidden!:hidden|[newcol]:1234:0|1,234:#,##0|1,234.5:#,##0.0|1,234.56:#,##0.00|1,234.567:#,##0.000|1,234.5678:#,##0.0000|[break]:|1,234%:#,##0%|1,234.5%:#,##0.0%|1,234.56%:#,##0.00%|[newcol]:|$1,234:$#,##0|$1,234.5:$#,##0.0|$1,234.56:$#,##0.00|[break]:|(1,234):#,##0_);(#,##0)|(1,234.5):#,##0.0_);(#,##0.0)|(1,234.56):#,##0.00_);(#,##0.00)|[break]:|($1,234):$#,##0_);($#,##0)|($1,234.5):$#,##0.0_);($#,##0.0)|($1,234.56):$#,##0.00_);($#,##0.00)|[newcol]:|1/4/06:m/d/yy|01/04/2006:mm/dd/yyyy|2006-01-04:yyyy-mm-dd|4-Jan-06:d-mmm-yy|04-Jan-2006:dd-mmm-yyyy|January 4, 2006:mmmm d, yyyy|[break]:|1\\c23:h:mm|1\\c23 PM:h:mm AM/PM|1\\c23\\c45:h:mm:ss|01\\c23\\c45:hh:mm:ss|26\\c23 (h\\cm):[hh]:mm|69\\c45 (m\\cs):[mm]:ss|69 (s):[ss]|[newcol]:|2006-01-04 01\\c23\\c45:yyyy-mm-dd hh:mm:ss|January 4, 2006:mmmm d, yyyy hh:mm:ss|Wed:ddd|Wednesday:dddd|",SCFormatTextFormats:"[cancel]:|[break]:|%loc!Default!:|[custom]:|%loc!Automatic!:general|%loc!Plain Text!:text-plain|HTML:text-html|%loc!Wikitext!:text-wiki|%loc!Link!:text-link|%loc!Formula!:formula|%loc!Hidden!:hidden|",SCFormatPadsizes:"[cancel]:|[break]:|%loc!Default!:|[custom]:|%loc!No padding!:0px|[newcol]:|1 pixel:1px|2 pixels:2px|3 pixels:3px|4 pixels:4px|5 pixels:5px|6 pixels:6px|7 pixels:7px|8 pixels:8px|[newcol]:|9 pixels:9px|10 pixels:10px|11 pixels:11px|12 pixels:12px|13 pixels:13px|14 pixels:14px|16 pixels:16px|18 pixels:18px|[newcol]:|20 pixels:20px|22 pixels:22px|24 pixels:24px|28 pixels:28px|36 pixels:36px|",SCFormatFontsizes:"[cancel]:|[break]:|%loc!Default!:|[custom]:|X-Small:x-small|Small:small|Medium:medium|Large:large|X-Large:x-large|[newcol]:|6pt:6pt|7pt:7pt|8pt:8pt|9pt:9pt|10pt:10pt|11pt:11pt|12pt:12pt|14pt:14pt|16pt:16pt|[newcol]:|18pt:18pt|20pt:20pt|22pt:22pt|24pt:24pt|28pt:28pt|36pt:36pt|48pt:48pt|72pt:72pt|[newcol]:|8 pixels:8px|9 pixels:9px|10 pixels:10px|11 pixels:11px|12 pixels:12px|13 pixels:13px|14 pixels:14px|[newcol]:|16 pixels:16px|18 pixels:18px|20 pixels:20px|22 pixels:22px|24 pixels:24px|28 pixels:28px|36 pixels:36px|",SCFormatFontfamilies:"[cancel]:|[break]:|%loc!Default!:|[custom]:|Verdana:Verdana,Arial,Helvetica,sans-serif|Arial:arial,helvetica,sans-serif|Courier:'Courier New',Courier,monospace|",SCFormatFontlook:"[cancel]:|[break]:|%loc!Default!:|%loc!Normal!:normal normal|%loc!Bold!:normal bold|%loc!Italic!:italic normal|%loc!Bold Italic!:italic bold",SCFormatTextAlignhoriz:"[cancel]:|[break]:|%loc!Default!:|%loc!Left!:left|%loc!Center!:center|%loc!Right!:right|",SCFormatNumberAlignhoriz:"[cancel]:|[break]:|%loc!Default!:|%loc!Left!:left|%loc!Center!:center|%loc!Right!:right|",SCFormatAlignVertical:"[cancel]:|[break]:|%loc!Default!:|%loc!Top!:top|%loc!Middle!:middle|%loc!Bottom!:bottom|",SCFormatColwidth:"[cancel]:|[break]:|%loc!Default!:|[custom]:|[newcol]:|20 pixels:20|40:40|60:60|80:80|100:100|120:120|140:140|160:160|[newcol]:|180 pixels:180|200:200|220:220|240:240|260:260|280:280|300:300|",SCFormatRecalc:"[cancel]:|[break]:|%loc!Auto!:|%loc!Manual!:off|",SCFormatUserMaxCol:"[cancel]:|[break]:|%loc!Default!:|[custom]:|[newcol]:|Unlimited:0|10:10|20:20|30:30|40:40|50:50|60:60|80:80|100:100|",SCFormatUserMaxRow:"[cancel]:|[break]:|%loc!Default!:|[custom]:|[newcol]:|Unlimited:0|10:10|20:20|30:30|40:40|50:50|60:60|80:80|100:100|",ISCButtonNormalBackground:"transparent",ISCButtonBorderNormal:"none",ISCButtonBorderHover:"none",ISCButtonBorderDown:"none",ISCButtonDownBackground:"#888",s_PopupListCancel:"[Cancel]",s_PopupListCustom:"Custom",s_loc_align_center:"Align Center",s_loc_align_left:"Align Left",s_loc_align_right:"Align Right",s_loc_alignment:"Alignment",s_loc_audit:"Audit",s_loc_audit_trail_this_session:"Audit Trail This Session",s_loc_auto:"Auto",s_loc_auto_sum:"Auto Sum",s_loc_auto_wX_commas:"Auto w/ commas",s_loc_automatic:"Automatic",s_loc_background:"Background",s_loc_bold:"Bold",s_loc_bold_XampX_italics:"Bold &amp; Italics",s_loc_bold_italic:"Bold Italic",s_loc_borders:"Borders",s_loc_borders_off:"Borders Off",s_loc_borders_on:"Borders On",s_loc_bottom:"Bottom",s_loc_bottom_border:"Bottom Border",s_loc_cell_settings:"CELL SETTINGS",s_loc_csv_format:"CSV format",s_loc_cancel:"Cancel",s_loc_category:"Category",s_loc_center:"Center",s_loc_clear:"Clear",s_loc_clear_socialcalc_clipboard:"Clear SocialCalc Clipboard",s_loc_clipboard:"Clipboard",s_loc_color:"Color",s_loc_column_:"Column ",s_loc_comment:"Comment",s_loc_copy:"Copy",s_loc_custom:"Custom",s_loc_cut:"Cut",s_loc_default:"Default",s_loc_default_alignment:"Default Alignment",s_loc_default_column_width:"Default Column Width",s_loc_default_font:"Default Font",s_loc_default_format:"Default Format",s_loc_default_padding:"Default Padding",s_loc_delete:"Delete",s_loc_delete_column:"Delete Column",s_loc_delete_contents:"Delete Cell Contents",s_loc_delete_row:"Delete Row",s_loc_description:"Description",s_loc_display_clipboard_in:"Display Clipboard in",s_loc_down:"Down",s_loc_edit:"Edit",s_loc_existing_names:"Existing Names",s_loc_family:"Family",s_loc_fill_down:"Fill Down",s_loc_fill_right:"Fill Right",s_loc_font:"Font",s_loc_format:"Format",s_loc_formula:"Formula",s_loc_function_list:"Function List",s_loc_functions:"Functions",s_loc_grid:"Grid",s_loc_hidden:"Hidden",s_loc_hide_column:"Hide Column",s_loc_hide_row:"Hide Row",s_loc_horizontal:"Horizontal",s_loc_insert_column:"Insert Column Before",s_loc_insert_row:"Insert Row Before",s_loc_italic:"Italic",s_loc_last_sort:"Last Sort",s_loc_left:"Left",s_loc_left_border:"Left Border",s_loc_link:"Link",s_loc_link_input_box:"Link Input Box",s_loc_list:"List",s_loc_load_socialcalc_clipboard_with_this:"Load SocialCalc Clipboard With This",s_loc_lock_cell:"Lock Cell",s_loc_major_sort:"Major Sort",s_loc_manual:"Manual",s_loc_merge_cells:"Merge/Unmerge Cells",s_loc_middle:"Middle",s_loc_minor_sort:"Minor Sort",s_loc_move_insert:"Move Insert",s_loc_move_paste:"Move Paste",s_loc_multiXline_input_box:"Multi-line Input Box",s_loc_name:"Name",s_loc_names:"Names",s_loc_no_padding:"No padding",s_loc_normal:"Normal",s_loc_number:"Number",s_loc_number_horizontal:"Number Horizontal",s_loc_ok:"OK",s_loc_padding:"Padding",s_loc_page_name:"Page Name",s_loc_paste:"Paste",s_loc_paste_formats:"Paste Formats",s_loc_plain_text:"Plain Text",s_loc_recalc:"Recalc",s_loc_recalculation:"Recalculation",s_loc_redo:"Redo",s_loc_right:"Right",s_loc_right_border:"Right Border",s_loc_sheet_settings:"SHEET SETTINGS",s_loc_save:"Save",s_loc_save_to:"Save to",s_loc_set_cell_contents:"Set Cell Contents",s_loc_set_cells_to_sort:"Set Cells To Sort",s_loc_set_value_to:"Set Value To",s_loc_set_to_link_format:"Set to Link format",s_loc_setXclear_move_from:"Set/Clear Move From",s_loc_show_cell_settings:"Show Cell Settings",s_loc_show_sheet_settings:"Show Sheet Settings",s_loc_show_in_new_browser_window:"Show in new browser window",s_loc_size:"Size",s_loc_socialcalcXsave_format:"SocialCalc-save format",s_loc_sort:"Sort",s_loc_sort_:"Sort ",s_loc_sort_cells:"Sort Cells",s_loc_swap_colors:"Swap Colors",s_loc_tabXdelimited_format:"Tab-delimited format",s_loc_text:"Text",s_loc_text_horizontal:"Text Horizontal",s_loc_this_is_aXbrXsample:"This is a<br>sample",s_loc_top:"Top",s_loc_top_border:"Top Border",s_loc_undone_steps:"UNDONE STEPS",s_loc_url:"URL",s_loc_undo:"Undo",s_loc_unlock_cell:"Unlock Cell",s_loc_unmerge_cells:"Unmerge Cells",s_loc_up:"Up",s_loc_value:"Value",s_loc_vertical:"Vertical",s_loc_wikitext:"Wikitext",s_loc_workspace:"Workspace",s_loc_XnewX:"[New]",s_loc_XnoneX:"[None]",s_loc_Xselect_rangeX:"[select range]",SVStatuslineheight:20,SVStatuslineCSS:"font-size:10px;padding:3px 0px;",FormatNumber_separatorchar:",",FormatNumber_decimalchar:".",FormatNumber_defaultCurrency:"$",s_FormatNumber_daynames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],s_FormatNumber_daynames3:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],s_FormatNumber_monthnames:["January","February","March","April","May","June","July","August","September","October","November","December"],s_FormatNumber_monthnames3:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],s_FormatNumber_am:"AM",s_FormatNumber_am1:"A",s_FormatNumber_pm:"PM",s_FormatNumber_pm1:"P",s_parseerrexponent:"Improperly formed number exponent",s_parseerrchar:"Unexpected character in formula",s_parseerrstring:"Improperly formed string",s_parseerrspecialvalue:"Improperly formed special value",s_parseerrtwoops:"Error in formula (two operators inappropriately in a row)",s_parseerrmissingopenparen:"Missing open parenthesis in list with comma(s). ",s_parseerrcloseparennoopen:"Closing parenthesis without open parenthesis. ",s_parseerrmissingcloseparen:"Missing close parenthesis. ",s_parseerrmissingoperand:"Missing operand. ",s_parseerrerrorinformula:"Error in formula.",s_calcerrerrorvalueinformula:"Error value in formula",s_parseerrerrorinformulabadval:"Error in formula resulting in bad value",s_formularangeresult:"Formula results in range value:",s_calcerrnumericnan:"Formula results in an bad numeric value",s_calcerrnumericoverflow:"Numeric overflow",s_sheetunavailable:"Sheet unavailable:",s_calcerrcellrefmissing:"Cell reference missing when expected.",s_calcerrsheetnamemissing:"Sheet name missing when expected.",s_circularnameref:"Circular name reference to name",s_calcerrunknownname:"Unknown name",s_calcerrincorrectargstofunction:"Incorrect arguments to function",s_sheetfuncunknownfunction:"Unknown function",s_sheetfunclnarg:"LN argument must be greater than 0",s_sheetfunclog10arg:"LOG10 argument must be greater than 0",s_sheetfunclogsecondarg:"LOG second argument must be numeric greater than 0",s_sheetfunclogfirstarg:"LOG first argument must be greater than 0",s_sheetfuncroundsecondarg:"ROUND second argument must be numeric",s_sheetfuncddblife:"DDB life must be greater than 1",s_sheetfuncslnlife:"SLN life must be greater than 1",s_fdef_ABS:"Absolute value function. ",s_fdef_ACOS:"Trigonometric arccosine function. ",s_fdef_AND:"True if all arguments are true. ",s_fdef_ASIN:"Trigonometric arcsine function. ",s_fdef_ATAN:"Trigonometric arctan function. ",s_fdef_ATAN2:"Trigonometric arc tangent function (result is in radians). ",s_fdef_AVERAGE:"Averages the values. ",s_fdef_CHOOSE:"Returns the value specified by the index. The values may be ranges of cells. ",s_fdef_COLUMNS:"Returns the number of columns in the range. ",s_fdef_COS:"Trigonometric cosine function (value is in radians). ",s_fdef_CONCAT:"Join Together Text & Values to Create a Single Combined Text String. ",s_fdef_CONCATENATE:"Join Together Text & Values to Create a Single Combined Text String. ",s_fdef_COUNT:"Counts the number of numeric values, not blank, text, or error. ",s_fdef_COUNTA:"Counts the number of non-blank values. ",s_fdef_COUNTBLANK:'Counts the number of blank values. (Note: "" is not blank.) ',s_fdef_COUNTIF:'Counts the number of number of cells in the range that meet the criteria. The criteria may be a value ("x", 15, 1+3) or a test (>25). ',s_fdef_DATE:'Returns the appropriate date value given numbers for year, month, and day. For example: DATE(2006,2,1) for February 1, 2006. Note: In this program, day "1" is December 31, 1899 and the year 1900 is not a leap year. Some programs use January 1, 1900, as day "1" and treat 1900 as a leap year. In both cases, though, dates on or after March 1, 1900, are the same. ',s_fdef_DAVERAGE:"Averages the values in the specified field in records that meet the criteria. ",s_fdef_DAY:"Returns the day of month for a date value. ",s_fdef_DCOUNT:"Counts the number of numeric values, not blank, text, or error, in the specified field in records that meet the criteria. ",s_fdef_DCOUNTA:"Counts the number of non-blank values in the specified field in records that meet the criteria. ",s_fdef_DDB:"Returns the amount of depreciation at the given period of time (the default factor is 2 for double-declining balance).   ",s_fdef_DEGREES:"Converts value in radians into degrees. ",s_fdef_DGET:"Returns the value of the specified field in the single record that meets the criteria. ",s_fdef_DMAX:"Returns the maximum of the numeric values in the specified field in records that meet the criteria. ",s_fdef_DMIN:"Returns the maximum of the numeric values in the specified field in records that meet the criteria. ",s_fdef_DPRODUCT:"Returns the result of multiplying the numeric values in the specified field in records that meet the criteria. ",s_fdef_DSTDEV:"Returns the sample standard deviation of the numeric values in the specified field in records that meet the criteria. ",s_fdef_DSTDEVP:"Returns the standard deviation of the numeric values in the specified field in records that meet the criteria. ",s_fdef_DSUM:"Returns the sum of the numeric values in the specified field in records that meet the criteria. ",s_fdef_DVAR:"Returns the sample variance of the numeric values in the specified field in records that meet the criteria. ",s_fdef_DVARP:"Returns the variance of the numeric values in the specified field in records that meet the criteria. ",s_fdef_EVEN:"Rounds the value up in magnitude to the nearest even integer. ",s_fdef_EXACT:'Returns "true" if the values are exactly the same, including case, type, etc. ',s_fdef_EXP:"Returns e raised to the value power. ",s_fdef_FACT:"Returns factorial of the value. ",s_fdef_FALSE:'Returns the logical value "false". ',s_fdef_FIND:'Returns the starting position within string2 of the first occurrence of string1 at or after "start". If start is omitted, 1 is assumed. ',s_fdef_FV:"Returns the future value of repeated payments of money invested at the given rate for the specified number of periods, with optional present value (default 0) and payment type (default 0 = at end of period, 1 = beginning of period). ",s_fdef_HLOOKUP:"Look for the matching value for the given value in the range and return the corresponding value in the cell specified by the row offset. If rangelookup is 1 (the default) and not 0, match if within numeric brackets (match<=value) instead of exact match. ",s_fdef_HOUR:"Returns the hour portion of a time or date/time value. ",s_fdef_IF:"Results in true-value if logical-expression is TRUE or non-zero, otherwise results in false-value. ",s_fdef_INDEX:"Returns a cell or range reference for the specified row and column in the range. If range is 1-dimensional, then only one of rownum or colnum are needed. If range is 2-dimensional and rownum or colnum are zero, a reference to the range of just the specified column or row is returned. You can use the returned reference value in a range, e.g., sum(A1:INDEX(A2:A10,4)). ",s_fdef_INT:"Returns the value rounded down to the nearest integer (towards -infinity). ",s_fdef_IRR:"Returns the interest rate at which the cash flows in the range have a net present value of zero. Uses an iterative process that will return #NUM! error if it does not converge. There may be more than one possible solution. Providing the optional guess value may help in certain situations where it does not converge or finds an inappropriate solution (the default guess is 10%). ",s_fdef_ISBLANK:'Returns "true" if the value is a reference to a blank cell. ',s_fdef_ISERR:'Returns "true" if the value is of type "Error" but not "NA". ',s_fdef_ISERROR:'Returns "true" if the value is of type "Error". ',s_fdef_ISLOGICAL:'Returns "true" if the value is of type "Logical" (true/false). ',s_fdef_ISNA:'Returns "true" if the value is the error type "NA". ',s_fdef_ISNONTEXT:'Returns "true" if the value is not of type "Text". ',s_fdef_ISNUMBER:'Returns "true" if the value is of type "Number" (including logical values). ',s_fdef_ISTEXT:'Returns "true" if the value is of type "Text". ',s_fdef_LEFT:"Returns the specified number of characters from the text value. If count is omitted, 1 is assumed. ",s_fdef_LEN:"Returns the number of characters in the text value. ",s_fdef_LN:"Returns the natural logarithm of the value. ",s_fdef_LOG:"Returns the logarithm of the value using the specified base. ",s_fdef_LOG10:"Returns the base 10 logarithm of the value. ",s_fdef_LOWER:"Returns the text value with all uppercase characters converted to lowercase. ",s_fdef_MATCH:"Look for the matching value for the given value in the range and return position (the first is 1) in that range. If rangelookup is 1 (the default) and not 0, match if within numeric brackets (match<=value) instead of exact match. If rangelookup is -1, act like 1 but the bracket is match>=value. ",s_fdef_MAX:"Returns the maximum of the numeric values. ",s_fdef_MID:"Returns the specified number of characters from the text value starting from the specified position. ",s_fdef_MIN:"Returns the minimum of the numeric values. ",s_fdef_MINUTE:"Returns the minute portion of a time or date/time value. ",s_fdef_MOD:"Returns the remainder of the first value divided by the second. ",s_fdef_MONTH:"Returns the month part of a date value. ",s_fdef_N:"Returns the value if it is a numeric value otherwise an error. ",s_fdef_NA:"Returns the #N/A error value which propagates through most operations. ",s_fdef_NOT:"Returns FALSE if value is true, and TRUE if it is false. ",s_fdef_NOW:"Returns the current date/time. ",s_fdef_NPER:"Returns the number of periods at which payments invested each period at the given rate with optional future value (default 0) and payment type (default 0 = at end of period, 1 = beginning of period) has the given present value. ",s_fdef_NPV:"Returns the net present value of cash flows (which may be individual values and/or ranges) at the given rate. The flows are positive if income, negative if paid out, and are assumed at the end of each period. ",s_fdef_ODD:"Rounds the value up in magnitude to the nearest odd integer. ",s_fdef_OR:"True if any argument is true ",s_fdef_PI:"The value 3.1415926... ",s_fdef_PMT:"Returns the amount of each payment that must be invested at the given rate for the specified number of periods to have the specified present value, with optional future value (default 0) and payment type (default 0 = at end of period, 1 = beginning of period). ",s_fdef_POWER:"Returns the first value raised to the second value power. ",s_fdef_PRODUCT:"Returns the result of multiplying the numeric values. ",s_fdef_PROPER:"Returns the text value with the first letter of each word converted to uppercase and the others to lowercase. ",s_fdef_PV:"Returns the present value of the given number of payments each invested at the given rate, with optional future value (default 0) and payment type (default 0 = at end of period, 1 = beginning of period). ",s_fdef_RADIANS:"Converts value in degrees into radians. ",s_fdef_RATE:"Returns the rate at which the given number of payments each invested at the given rate has the specified present value, with optional future value (default 0) and payment type (default 0 = at end of period, 1 = beginning of period). Uses an iterative process that will return #NUM! error if it does not converge. There may be more than one possible solution. Providing the optional guess value may help in certain situations where it does not converge or finds an inappropriate solution (the default guess is 10%). ",s_fdef_REPLACE:"Returns text1 with the specified number of characters starting from the specified position replaced by text2. ",s_fdef_REPT:"Returns the text repeated the specified number of times. ",s_fdef_RIGHT:"Returns the specified number of characters from the text value starting from the end. If count is omitted, 1 is assumed. ",s_fdef_ROUND:"Rounds the value to the specified number of decimal places. If precision is negative, then round to powers of 10. The default precision is 0 (round to integer). ",s_fdef_ROWS:"Returns the number of rows in the range. ",s_fdef_SECOND:"Returns the second portion of a time or date/time value (truncated to an integer). ",s_fdef_SIN:"Trigonometric sine function (value is in radians) ",s_fdef_SLN:"Returns the amount of depreciation at each period of time using the straight-line method. ",s_fdef_SQRT:"Square root of the value ",s_fdef_STDEV:"Returns the sample standard deviation of the numeric values. ",s_fdef_STDEVP:"Returns the standard deviation of the numeric values. ",s_fdef_SUBSTITUTE:'Returns text1 with the all occurrences of oldtext replaced by newtext. If "occurrence" is present, then only that occurrence is replaced. ',s_fdef_SUM:"Adds the numeric values. The values to the sum function may be ranges in the form similar to A1:B5. ",s_fdef_SUMIF:'Sums the numeric values of cells in the range that meet the criteria. The criteria may be a value ("x", 15, 1+3) or a test (>25). If range2 is present, then range1 is tested and the corresponding range2 value is summed. ',s_fdef_SUMIFS:'Sums the numeric values of cells in the sum_range that meet the multiple criteria. The criteria may be a value ("x", 15, 1+3) or a test (>25).  ',s_fdef_SYD:"Depreciation by Sum of Year's Digits method. ",s_fdef_T:"Returns the text value or else a null string. ",s_fdef_TAN:"Trigonometric tangent function (value is in radians) ",s_fdef_TIME:"Returns the time value given the specified hour, minute, and second. ",s_fdef_TODAY:'Returns the current date (an integer). Note: In this program, day "1" is December 31, 1899 and the year 1900 is not a leap year. Some programs use January 1, 1900, as day "1" and treat 1900 as a leap year. In both cases, though, dates on or after March 1, 1900, are the same. ',s_fdef_TRIM:"Returns the text value with leading, trailing, and repeated spaces removed. ",s_fdef_TRUE:'Returns the logical value "true". ',s_fdef_TRUNC:"Truncates the value to the specified number of decimal places. If precision is negative, truncate to powers of 10. ",s_fdef_UPPER:"Returns the text value with all lowercase characters converted to uppercase. ",s_fdef_VALUE:"Converts the specified text value into a numeric value. Various forms that look like numbers (including digits followed by %, forms that look like dates, etc.) are handled. This may not handle all of the forms accepted by other spreadsheets and may be locale dependent. ",s_fdef_VAR:"Returns the sample variance of the numeric values. ",s_fdef_VARP:"Returns the variance of the numeric values. ",s_fdef_VLOOKUP:"Look for the matching value for the given value in the range and return the corresponding value in the cell specified by the column offset. If rangelookup is 1 (the default) and not 0, match if within numeric brackets (match>=value) instead of exact match. ",s_fdef_WEEKDAY:"Returns the day of week specified by the date value. If type is 1 (the default), Sunday is day and Saturday is day 7. If type is 2, Monday is day 1 and Sunday is day 7. If type is 3, Monday is day 0 and Sunday is day 6. ",s_fdef_YEAR:"Returns the year part of a date value. ",s_fdef_SUMPRODUCT:"Sums the pairwise products of 2 or more ranges. The ranges must be of equal length.",s_fdef_CEILING:"Rounds the given number up to the nearest integer or multiple of significance. Significance is the value to whose multiple of ten the value is to be rounded up (.01, .1, 1, 10, etc.)",s_fdef_FLOOR:"Rounds the given number down to the nearest multiple of significance. Significance is the value to whose multiple of ten the number is to be rounded down (.01, .1, 1, 10, etc.)",s_farg_v:"value",s_farg_vn:"value1, value2, ...",s_farg_xy:"valueX, valueY",s_farg_choose:"index, value1, value2, ...",s_farg_range:"range",s_farg_rangec:"range, criteria",s_farg_date:"year, month, day",s_farg_dfunc:"databaserange, fieldname, criteriarange",s_farg_ddb:"cost, salvage, lifetime, period, [factor]",s_farg_find:"string1, string2, [start]",s_farg_fv:"rate, n, payment, [pv, [paytype]]",s_farg_hlookup:"value, range, row, [rangelookup]",s_farg_iffunc:"logical-expression, true-value, [false-value]",s_farg_index:"range, rownum, colnum",s_farg_irr:"range, [guess]",s_farg_tc:"text, count",s_farg_log:"value, base",s_farg_match:"value, range, [rangelookup]",s_farg_mid:"text, start, length",s_farg_nper:"rate, payment, pv, [fv, [paytype]]",s_farg_npv:"rate, value1, value2, ...",s_farg_pmt:"rate, n, pv, [fv, [paytype]]",s_farg_pv:"rate, n, payment, [fv, [paytype]]",s_farg_rate:"n, payment, pv, [fv, [paytype, [guess]]]",s_farg_replace:"text1, start, length, text2",s_farg_vp:"value, [precision]",s_farg_valpre:"value, precision",s_farg_csl:"cost, salvage, lifetime",s_farg_cslp:"cost, salvage, lifetime, period",s_farg_subs:"text1, oldtext, newtext, [occurrence]",s_farg_sumif:"range1, criteria, [range2]",s_farg_hms:"hour, minute, second",s_farg_txt:"text",s_farg_vlookup:"value, range, col, [rangelookup]",s_farg_weekday:"date, [type]",s_farg_dt:"date",s_farg_rangen:"range1, range2, ...",s_farg_vsig:"value, [significance]",function_classlist:["all","stat","lookup","datetime","financial","test","math","text","gui","action"],s_fclass_all:"All",s_fclass_stat:"Statistics",s_fclass_lookup:"Lookup",s_fclass_datetime:"Date & Time",s_fclass_financial:"Financial",s_fclass_test:"Test",s_fclass_math:"Math",s_fclass_text:"Text",s_fclass_action:"Email & Copy",s_fclass_gui:"Button & Input",lastone:null},t.ConstantsDefaultClasses={defaultComment:"",defaultCommentNoGrid:"",defaultHighlightTypeCursor:"",defaultHighlightTypeRange:"",defaultColname:"",defaultSelectedColname:"",defaultRowname:"",defaultSelectedRowname:"",defaultUpperLeft:"",defaultSkippedCell:"",defaultPaneDivider:"",cteGriddiv:"",defaultInputEcho:{classname:"",style:"filter:alpha(opacity=90);opacity:.9;"},TCmain:"",TCendcap:"",TCpaneslider:"",TClessbutton:"",TCmorebutton:"",TCscrollarea:"",TCthumb:"",TCPStrackingline:"",TCTDFSthumbstatus:"",TDpopupElement:""},t.ConstantsSetClasses=function(e){var o,i=t.ConstantsDefaultClasses,n=t.Constants;
-e=e||"";for(o in i)"string"==typeof i[o]?(n[o+"Class"]=e+(i[o]||o),void 0!==n[o+"Style"]&&(n[o+"Style"]="")):"object"==typeof i[o]&&(n[o+"Class"]=e+(i[o].classname||o),n[o+"Style"]=i[o].style)},t.ConstantsSetImagePrefix=function(e){var o=t.Constants;for(var i in o)"string"==typeof o[i]&&(o[i]=o[i].replace(o.defaultImagePrefix,e));o.defaultImagePrefix=e};var t;t||(t={}),t.Callbacks={expand_wiki:null,expand_markup:function(e,o,i){return t.default_expand_markup(e,o,i)},MakePageLink:null,NormalizeSheetName:null},t.Cell=function(e){this.coord=e,this.datavalue="",this.datatype=null,this.formula="",this.valuetype="b",this.readonly=!1},t.CellProperties={coord:1,datavalue:1,datatype:1,formula:1,valuetype:1,errors:1,comment:1,readonly:1,bt:2,br:2,bb:2,bl:2,layout:2,font:2,color:2,bgcolor:2,cellformat:2,nontextvalueformat:2,textvalueformat:2,colspan:2,rowspan:2,cssc:2,csss:2,mod:2,displaystring:3,parseinfo:3,hcolspan:3,hrowspan:3},t.CellPropertiesTable={bt:"borderstyle",br:"borderstyle",bb:"borderstyle",bl:"borderstyle",layout:"layout",font:"font",color:"color",bgcolor:"color",cellformat:"cellformat",nontextvalueformat:"valueformat",textvalueformat:"valueformat"},t.Sheet=function(){t.ResetSheet(this),this.statuscallback=null,this.statuscallbackparams=null},t.ResetSheet=function(e){e.cells={},e.attribs={lastcol:1,lastrow:1,defaultlayout:0,usermaxcol:0,usermaxrow:0},e.rowattribs={hide:{},height:{}},e.colattribs={width:{},hide:{}},e.names={},e.layouts=[],e.layouthash={},e.fonts=[],e.fonthash={},e.colors=[],e.colorhash={},e.borderstyles=[],e.borderstylehash={},e.cellformats=[],e.cellformathash={},e.valueformats=[],e.valueformathash={},e.matched_cells=[],e.selected_search_cell=void 0,e.copiedfrom="",e.changes=new t.UndoStack,e.renderneeded=!1,e.changedrendervalues=!0,e.recalcchangedavalue=!1,e.hiddencolrow="",e.sci=new t.SheetCommandInfo(e),e.ioEventTree={},e.ioParameterList={}},t.Sheet.prototype.ResetSheet=function(){t.ResetSheet(this)},t.Sheet.prototype.AddCell=function(e){return this.cells[e.coord]=e},t.Sheet.prototype.LastCol=function(){var e=1;for(var o in this.cells){var i=t.coordToCr(o);i.col>e&&(e=i.col)}return e},t.Sheet.prototype.LastRow=function(){var e=1;for(var o in this.cells){var i=t.coordToCr(o);i.row>e&&(e=i.row)}return e},t.Sheet.prototype.GetAssuredCell=function(e){return this.cells[e]||this.AddCell(new t.Cell(e))},t.Sheet.prototype.ParseSheetSave=function(e){t.ParseSheetSave(e,this)},t.Sheet.prototype.CellFromStringParts=function(e,o,i){return t.CellFromStringParts(this,e,o,i)},t.Sheet.prototype.CreateSheetSave=function(e,o){return t.CreateSheetSave(this,e,o)},t.Sheet.prototype.CellToString=function(e){return t.CellToString(this,e)},t.Sheet.prototype.CanonicalizeSheet=function(e){return t.CanonicalizeSheet(this,e)},t.Sheet.prototype.EncodeCellAttributes=function(e){return t.EncodeCellAttributes(this,e)},t.Sheet.prototype.EncodeSheetAttributes=function(){return t.EncodeSheetAttributes(this)},t.Sheet.prototype.DecodeCellAttributes=function(e,o,i){return t.DecodeCellAttributes(this,e,o,i)},t.Sheet.prototype.DecodeSheetAttributes=function(e){return t.DecodeSheetAttributes(this,e)},t.Sheet.prototype.ScheduleSheetCommands=function(e,o){return t.ScheduleSheetCommands(this,e,o)},t.Sheet.prototype.SheetUndo=function(){return t.SheetUndo(this)},t.Sheet.prototype.SheetRedo=function(){return t.SheetRedo(this)},t.Sheet.prototype.CreateAuditString=function(){return t.CreateAuditString(this)},t.Sheet.prototype.GetStyleNum=function(e,o){return t.GetStyleNum(this,e,o)},t.Sheet.prototype.GetStyleString=function(e,o){return t.GetStyleString(this,e,o)},t.Sheet.prototype.RecalcSheet=function(){return t.RecalcSheet(this)},t.ParseSheetSave=function(e,o){var i,n,r,a,s,l,c,u,d,h=e.split(/\r\n|\n/),p=[],f=t.Constants;for(n=0;n<h.length;n++){switch(i=h[n],p=i.split(":"),p[0]){case"cell":c=o.GetAssuredCell(p[1]),r=2,o.CellFromStringParts(c,p,r);break;case"col":for(l=p[1],r=2;a=p[r++];)switch(a){case"w":o.colattribs.width[l]=p[r++];break;case"hide":o.colattribs.hide[l]=p[r++];break;default:throw f.s_pssUnknownColType+" '"+a+"'"}break;case"row":for(l=p[1]-0,r=2;a=p[r++];)switch(a){case"h":o.rowattribs.height[l]=p[r++]-0;break;case"hide":o.rowattribs.hide[l]=p[r++];break;default:throw f.s_pssUnknownRowType+" '"+a+"'"}break;case"sheet":for(u=o.attribs,r=1;a=p[r++];)switch(a){case"c":u.lastcol=p[r++]-0;break;case"r":u.lastrow=p[r++]-0;break;case"w":u.defaultcolwidth=p[r++]+"";break;case"h":u.defaultrowheight=p[r++]-0;break;case"tf":u.defaulttextformat=p[r++]-0;break;case"ntf":u.defaultnontextformat=p[r++]-0;break;case"layout":u.defaultlayout=p[r++]-0;break;case"font":u.defaultfont=p[r++]-0;break;case"tvf":u.defaulttextvalueformat=p[r++]-0;break;case"ntvf":u.defaultnontextvalueformat=p[r++]-0;break;case"color":u.defaultcolor=p[r++]-0;break;case"bgcolor":u.defaultbgcolor=p[r++]-0;break;case"circularreferencecell":u.circularreferencecell=p[r++];break;case"recalc":u.recalc=p[r++];break;case"needsrecalc":u.needsrecalc=p[r++];break;case"usermaxcol":u.usermaxcol=p[r++]-0;break;case"usermaxrow":u.usermaxrow=p[r++]-0;break;default:r+=1}break;case"name":d=t.decodeFromSave(p[1]).toUpperCase(),o.names[d]={desc:t.decodeFromSave(p[2])},o.names[d].definition=t.decodeFromSave(p[3]);break;case"layout":p=h[n].match(/^layout\:(\d+)\:(.+)$/),o.layouts[p[1]-0]=p[2],o.layouthash[p[2]]=p[1]-0;break;case"font":o.fonts[p[1]-0]=p[2],o.fonthash[p[2]]=p[1]-0;break;case"color":o.colors[p[1]-0]=p[2],o.colorhash[p[2]]=p[1]-0;break;case"border":o.borderstyles[p[1]-0]=p[2],o.borderstylehash[p[2]]=p[1]-0;break;case"cellformat":s=t.decodeFromSave(p[2]),o.cellformats[p[1]-0]=s,o.cellformathash[s]=p[1]-0;break;case"valueformat":s=t.decodeFromSave(p[2]),o.valueformats[p[1]-0]=s,o.valueformathash[s]=p[1]-0;break;case"version":break;case"copiedfrom":o.copiedfrom=p[1]+":"+p[2];break;case"clipboardrange":case"clipboard":break;case"":break;default:throw alert(f.s_pssUnknownLineType+" '"+p[0]+"'"),f.s_pssUnknownLineType+" '"+p[0]+"'"}p=null}},t.CellFromStringParts=function(e,o,i,n){for(var o,r,a;r=i[n++];)switch(r){case"v":o.datavalue=t.decodeFromSave(i[n++])-0,o.datatype="v",o.valuetype="n";break;case"t":o.datavalue=t.decodeFromSave(i[n++]),o.datatype="t",o.valuetype=t.Constants.textdatadefaulttype;break;case"vt":a=i[n++],o.valuetype=a,"n"==a.charAt(0)?(o.datatype="v",o.datavalue=t.decodeFromSave(i[n++])-0):(o.datatype="t",o.datavalue=t.decodeFromSave(i[n++]));break;case"vtf":a=i[n++],o.valuetype=a,o.datavalue="n"==a.charAt(0)?t.decodeFromSave(i[n++])-0:t.decodeFromSave(i[n++]),o.formula=t.decodeFromSave(i[n++]),o.datatype="f";break;case"vtc":a=i[n++],o.valuetype=a,o.datavalue="n"==a.charAt(0)?t.decodeFromSave(i[n++])-0:t.decodeFromSave(i[n++]),o.formula=t.decodeFromSave(i[n++]),o.datatype="c";break;case"ro":ro=t.decodeFromSave(i[n++]),o.readonly="yes"==ro.toLowerCase();break;case"e":o.errors=t.decodeFromSave(i[n++]);break;case"b":o.bt=i[n++]-0,o.br=i[n++]-0,o.bb=i[n++]-0,o.bl=i[n++]-0;break;case"l":o.layout=i[n++]-0;break;case"f":o.font=i[n++]-0;break;case"c":o.color=i[n++]-0;break;case"bg":o.bgcolor=i[n++]-0;break;case"cf":o.cellformat=i[n++]-0;break;case"ntvf":o.nontextvalueformat=i[n++]-0;break;case"tvf":o.textvalueformat=i[n++]-0;break;case"colspan":o.colspan=i[n++]-0;break;case"rowspan":o.rowspan=i[n++]-0;break;case"cssc":o.cssc=i[n++];break;case"csss":o.csss=t.decodeFromSave(i[n++]);break;case"mod":n+=1;break;case"comment":o.comment=t.decodeFromSave(i[n++]);break;default:throw t.Constants.s_cfspUnknownCellType+" '"+r+"'"}},t.sheetfields=["defaultrowheight","defaultcolwidth","circularreferencecell","recalc","needsrecalc","usermaxcol","usermaxrow"],t.sheetfieldsshort=["h","w","circularreferencecell","recalc","needsrecalc","usermaxcol","usermaxrow"],t.sheetfieldsxlat=["defaulttextformat","defaultnontextformat","defaulttextvalueformat","defaultnontextvalueformat","defaultcolor","defaultbgcolor","defaultfont","defaultlayout"],t.sheetfieldsxlatshort=["tf","ntf","tvf","ntvf","color","bgcolor","font","layout"],t.sheetfieldsxlatxlt=["cellformat","cellformat","valueformat","valueformat","color","color","font","layout"],t.CreateSheetSave=function(e,o,i){var n,r,a,s,l,c,u,d,h,p,f,m=[];e.CanonicalizeSheet(i||t.Constants.doCanonicalizeSheet);var g=e.xlt;for(f=o?t.ParseRange(o):{cr1:{row:1,col:1},cr2:{row:g.maxrow,col:g.maxcol}},r=f.cr1,a=f.cr2,m.push("version:1.5"),s=r.row;s<=a.row;s++)for(l=r.col;l<=a.col;l++)c=t.crToCoord(l,s),n=e.cells[c],n&&(u=e.CellToString(n),0!=u.length&&(u="cell:"+c+u,m.push(u)));for(l=1;l<=g.maxcol;l++)c=t.rcColname(l),e.colattribs.width[c]&&m.push("col:"+c+":w:"+e.colattribs.width[c]),e.colattribs.hide[c]&&m.push("col:"+c+":hide:"+e.colattribs.hide[c]);for(s=1;s<=g.maxrow;s++)e.rowattribs.height[s]&&m.push("row:"+s+":h:"+e.rowattribs.height[s]),e.rowattribs.hide[s]&&m.push("row:"+s+":hide:"+e.rowattribs.hide[s]);for(u="sheet:c:"+g.maxcol+":r:"+g.maxrow,h=0;h<t.sheetfields.length;h++)d=t.encodeForSave(e.attribs[t.sheetfields[h]]),d&&(u+=":"+t.sheetfieldsshort[h]+":"+d);for(h=0;h<t.sheetfieldsxlat.length;h++)d=e.attribs[t.sheetfieldsxlat[h]],d&&(u+=":"+t.sheetfieldsxlatshort[h]+":"+g[t.sheetfieldsxlatxlt[h]+"sxlat"][d]);for(m.push(u),h=1;h<g.newborderstyles.length;h++)m.push("border:"+h+":"+g.newborderstyles[h]);for(h=1;h<g.newcellformats.length;h++)m.push("cellformat:"+h+":"+t.encodeForSave(g.newcellformats[h]));for(h=1;h<g.newcolors.length;h++)m.push("color:"+h+":"+g.newcolors[h]);for(h=1;h<g.newfonts.length;h++)m.push("font:"+h+":"+g.newfonts[h]);for(h=1;h<g.newlayouts.length;h++)m.push("layout:"+h+":"+g.newlayouts[h]);for(h=1;h<g.newvalueformats.length;h++)m.push("valueformat:"+h+":"+t.encodeForSave(g.newvalueformats[h]));for(h=0;h<g.namesorder.length;h++)p=g.namesorder[h],m.push("name:"+t.encodeForSave(p).toUpperCase()+":"+t.encodeForSave(e.names[p].desc)+":"+t.encodeForSave(e.names[p].definition));return o&&m.push("copiedfrom:"+t.crToCoord(r.col,r.row)+":"+t.crToCoord(a.col,a.row)),m.push(""),delete e.xlt,m.join("\n")},t.CellToString=function(e,o){var o,i,n,r,a,s,l,c,u;return i="",o?(n=t.encodeForSave(o.datavalue),"v"==o.datatype?i+="n"==o.valuetype?":v:"+n:":vt:"+o.valuetype+":"+n:"t"==o.datatype?i+=o.valuetype==t.Constants.textdatadefaulttype?":t:"+n:":vt:"+o.valuetype+":"+n:(r=t.encodeForSave(o.formula),"f"==o.datatype?i+=":vtf:"+o.valuetype+":"+n+":"+r:"c"==o.datatype&&(i+=":vtc:"+o.valuetype+":"+n+":"+r)),o.readonly&&(i+=":ro:yes"),o.errors&&(i+=":e:"+t.encodeForSave(o.errors)),a=o.bt||"",s=o.br||"",l=o.bb||"",c=o.bl||"",e.xlt?(u=e.xlt,(a||s||l||c)&&(i+=":b:"+u.borderstylesxlat[a||0]+":"+u.borderstylesxlat[s||0]+":"+u.borderstylesxlat[l||0]+":"+u.borderstylesxlat[c||0]),o.layout&&(i+=":l:"+u.layoutsxlat[o.layout]),o.font&&(i+=":f:"+u.fontsxlat[o.font]),o.color&&(i+=":c:"+u.colorsxlat[o.color]),o.bgcolor&&(i+=":bg:"+u.colorsxlat[o.bgcolor]),o.cellformat&&(i+=":cf:"+u.cellformatsxlat[o.cellformat]),o.textvalueformat&&(i+=":tvf:"+u.valueformatsxlat[o.textvalueformat]),o.nontextvalueformat&&(i+=":ntvf:"+u.valueformatsxlat[o.nontextvalueformat])):((a||s||l||c)&&(i+=":b:"+a+":"+s+":"+l+":"+c),o.layout&&(i+=":l:"+o.layout),o.font&&(i+=":f:"+o.font),o.color&&(i+=":c:"+o.color),o.bgcolor&&(i+=":bg:"+o.bgcolor),o.cellformat&&(i+=":cf:"+o.cellformat),o.textvalueformat&&(i+=":tvf:"+o.textvalueformat),o.nontextvalueformat&&(i+=":ntvf:"+o.nontextvalueformat)),o.colspan&&(i+=":colspan:"+o.colspan),o.rowspan&&(i+=":rowspan:"+o.rowspan),o.cssc&&(i+=":cssc:"+o.cssc),o.csss&&(i+=":csss:"+t.encodeForSave(o.csss)),o.mod&&(i+=":mod:"+o.mod),o.comment&&(i+=":comment:"+t.encodeForSave(o.comment)),i):i},t.CanonicalizeSheet=function(e,o){var i,n,r,a,s,l,c,u,d,h,p,f,m,g=0,v=0,b=["borderstyle","cellformat","color","font","layout","valueformat"],y={};y.namesorder=[];for(c in e.names)y.namesorder.push(c);if(y.namesorder.sort(),!t.Constants.doCanonicalizeSheet||!o){for(l=0;l<b.length;l++){for(c=b[l],y["new"+c+"s"]=e[c+"s"],i=e[c+"s"].length,d=new Array(i),d[0]="",f=1;i>f;f++)d[f]=f;y[c+"sxlat"]=d}return y.maxrow=e.attribs.lastrow,y.maxcol=e.attribs.lastcol,void(e.xlt=y)}for(l=0;l<b.length;l++)c=b[l],y[c+"sUsed"]={};var C=y.colorsUsed,w=y.borderstylesUsed,x=y.fontsUsed,_=y.layoutsUsed,S=y.cellformatsUsed,k=y.valueformatsUsed;for(n in e.cells)r=t.coordToCr(n),a=e.cells[n],s=!1,a.valuetype&&"b"!=a.valuetype&&(s=!0),a.color&&(C[a.color]=1,s=!0),a.bgcolor&&(C[a.bgcolor]=1,s=!0),a.bt&&(w[a.bt]=1,s=!0),a.br&&(w[a.br]=1,s=!0),a.bb&&(w[a.bb]=1,s=!0),a.bl&&(w[a.bl]=1,s=!0),a.layout&&(_[a.layout]=1,s=!0),a.font&&(x[a.font]=1,s=!0),a.cellformat&&(S[a.cellformat]=1,s=!0),a.textvalueformat&&(k[a.textvalueformat]=1,s=!0),a.nontextvalueformat&&(k[a.nontextvalueformat]=1,s=!0),s&&(r.row>g&&(g=r.row),r.col>v&&(v=r.col));for(f=0;f<t.sheetfieldsxlat.length;f++)m=e.attribs[t.sheetfieldsxlat[f]],m&&(y[t.sheetfieldsxlatxlt[f]+"sUsed"][m]=1);c={height:1,hide:1};for(m in c)for(r in e.rowattribs[m])r>g&&(g=r);c={hide:1,width:1};for(m in c)for(n in e.colattribs[m])r=t.coordToCr(n+"1"),r.col>v&&(v=r.col);for(l=0;l<b.length;l++){c=b[l],u=[],h=y[c+"sUsed"];for(m in h)u.push(e[c+"s"][m]);for(u.sort(),u.unshift(""),d=[""],p=e[c+"hash"],f=1;f<u.length;f++)d[p[u[f]]]=f;y[c+"sxlat"]=d,y["new"+c+"s"]=u}y.maxrow=g||1,y.maxcol=v||1,e.xlt=y},t.EncodeCellAttributes=function(e,t){var o,i,n,r={},a=function(e){r[e]={def:!0,val:""}},s=function(e){for(var t=0;t<e.length;t++)a(e[t])},l=function(e,t){r[e].def=!1,r[e].val=t||""},c=function(e,t){"*"!=t&&(r[e].def=!1,r[e].val=t)},u=e.GetAssuredCell(t);for(a("alignhoriz"),u.cellformat&&l("alignhoriz",e.cellformats[u.cellformat]),s(["alignvert","padtop","padright","padbottom","padleft"]),u.layout&&(parts=e.layouts[u.layout].match(/^padding:\s*(\S+)\s+(\S+)\s+(\S+)\s+(\S+);vertical-align:\s*(\S+);/),c("padtop",parts[1]),c("padright",parts[2]),c("padbottom",parts[3]),c("padleft",parts[4]),c("alignvert",parts[5])),s(["fontfamily","fontlook","fontsize"]),u.font&&(parts=e.fonts[u.font].match(/^(\*|\S+? \S+?) (\S+?) (\S.*)$/),c("fontfamily",parts[3]),c("fontsize",parts[2]),c("fontlook",parts[1])),a("textcolor"),u.color&&l("textcolor",e.colors[u.color]),a("bgcolor"),u.bgcolor&&l("bgcolor",e.colors[u.bgcolor]),s(["numberformat","textformat"]),u.nontextvalueformat&&l("numberformat",e.valueformats[u.nontextvalueformat]),u.textvalueformat&&l("textformat",e.valueformats[u.textvalueformat]),s(["colspan","rowspan"]),l("colspan",u.colspan||1),l("rowspan",u.rowspan||1),o=0;4>o;o++)i="trbl".charAt(o),n="b"+i,a(n),l(n,u[n]?e.borderstyles[u[n]]:""),a(n+"thickness"),a(n+"style"),a(n+"color"),u[n]&&(parts=e.borderstyles[u[n]].match(/(\S+)\s+(\S+)\s+(\S.+)/),l(n+"thickness",parts[1]),l(n+"style",parts[2]),l(n+"color",parts[3]));return s(["cssc","csss","mod"]),l("cssc",u.cssc||""),l("csss",u.csss||""),l("mod",u.mod||"n"),r},t.EncodeSheetAttributes=function(e){var t,o=e.attribs,i={},n=function(e){i[e]={def:!0,val:""}},r=function(e){for(var t=0;t<e.length;t++)n(e[t])},a=function(e,o){i[e].def=!1,i[e].val=o||t},s=function(e,t){"*"!=t&&(i[e].def=!1,i[e].val=t)};return n("colwidth"),o.defaultcolwidth&&a("colwidth",o.defaultcolwidth),n("rowheight"),o.rowheight&&a("rowheight",o.defaultrowheight),n("textalignhoriz"),o.defaulttextformat&&a("textalignhoriz",e.cellformats[o.defaulttextformat]),n("numberalignhoriz"),o.defaultnontextformat&&a("numberalignhoriz",e.cellformats[o.defaultnontextformat]),r(["alignvert","padtop","padright","padbottom","padleft"]),o.defaultlayout&&(parts=e.layouts[o.defaultlayout].match(/^padding:\s*(\S+)\s+(\S+)\s+(\S+)\s+(\S+);vertical-align:\s*(\S+);/),s("padtop",parts[1]),s("padright",parts[2]),s("padbottom",parts[3]),s("padleft",parts[4]),s("alignvert",parts[5])),r(["fontfamily","fontlook","fontsize"]),o.defaultfont&&(parts=e.fonts[o.defaultfont].match(/^(\*|\S+? \S+?) (\S+?) (\S.*)$/),s("fontfamily",parts[3]),s("fontsize",parts[2]),s("fontlook",parts[1])),n("textcolor"),o.defaultcolor&&a("textcolor",e.colors[o.defaultcolor]),n("bgcolor"),o.defaultbgcolor&&a("bgcolor",e.colors[o.defaultbgcolor]),r(["numberformat","textformat"]),o.defaultnontextvalueformat&&a("numberformat",e.valueformats[o.defaultnontextvalueformat]),o.defaulttextvalueformat&&a("textformat",e.valueformats[o.defaulttextvalueformat]),n("recalc"),o.recalc&&a("recalc",o.recalc),n("usermaxcol"),o.usermaxcol&&a("usermaxcol",o.usermaxcol),n("usermaxrow"),o.usermaxrow&&a("usermaxrow",o.usermaxrow),i},t.DecodeCellAttributes=function(e,t,o,n){var r,a,s,l=e.GetAssuredCell(t),c=!1,u=function(e,t,i){var n;o[e]&&(n=o[e].def?"":o[e].val,n!=(t||"")&&h(i+" "+n))},d="",h=function(e){d&&(d+="\n"),d+="set "+(n||t)+" "+e,c=!0};for(u("alignhoriz",e.cellformats[l.cellformat],"cellformat"),r=o.alignvert.def&&o.padtop.def&&o.padright.def&&o.padbottom.def&&o.padleft.def?"":"padding:"+(o.padtop.def?"* ":o.padtop.val+" ")+(o.padright.def?"* ":o.padright.val+" ")+(o.padbottom.def?"* ":o.padbottom.val+" ")+(o.padleft.def?"*":o.padleft.val)+";vertical-align:"+(o.alignvert.def?"*;":o.alignvert.val+";"),r!=(e.layouts[l.layout]||"")&&h("layout "+r),r=o.fontlook.def&&o.fontsize.def&&o.fontfamily.def?"":(o.fontlook.def?"* ":o.fontlook.val+" ")+(o.fontsize.def?"* ":o.fontsize.val+" ")+(o.fontfamily.def?"*":o.fontfamily.val),r!=(e.fonts[l.font]||"")&&h("font "+r),u("textcolor",e.colors[l.color],"color"),u("bgcolor",e.colors[l.bgcolor],"bgcolor"),u("numberformat",e.valueformats[l.nontextvalueformat],"nontextvalueformat"),u("textformat",e.valueformats[l.textvalueformat],"textvalueformat"),i=0;4>i;i++)a="trbl".charAt(i),s="b"+a,u(s,e.borderstyles[l[s]],s);return u("cssc",l.cssc,"cssc"),u("csss",l.csss,"csss"),o.mod&&(r=o.mod.def?"n":o.mod.val,r!=(l.mod||"n")&&("n"==r&&(r=""),h("mod "+r))),c?d:null},t.DecodeSheetAttributes=function(e,t){var o,i=e.attribs,n=!1,r=function(e,o,i){var n;t[e]&&(n=t[e].def?"":t[e].val,n!=(o||"")&&s(i+" "+n))},a="",s=function(e){a&&(a+="\n"),a+="set sheet "+e,n=!0};return r("colwidth",i.defaultcolwidth,"defaultcolwidth"),r("rowheight",i.defaultrowheight,"defaultrowheight"),r("textalignhoriz",e.cellformats[i.defaulttextformat],"defaulttextformat"),r("numberalignhoriz",e.cellformats[i.defaultnontextformat],"defaultnontextformat"),o=t.alignvert.def&&t.padtop.def&&t.padright.def&&t.padbottom.def&&t.padleft.def?"":"padding:"+(t.padtop.def?"* ":t.padtop.val+" ")+(t.padright.def?"* ":t.padright.val+" ")+(t.padbottom.def?"* ":t.padbottom.val+" ")+(t.padleft.def?"*":t.padleft.val)+";vertical-align:"+(t.alignvert.def?"*;":t.alignvert.val+";"),o!=(e.layouts[i.defaultlayout]||"")&&s("defaultlayout "+o),o=t.fontlook.def&&t.fontsize.def&&t.fontfamily.def?"":(t.fontlook.def?"* ":t.fontlook.val+" ")+(t.fontsize.def?"* ":t.fontsize.val+" ")+(t.fontfamily.def?"*":t.fontfamily.val),o!=(e.fonts[i.defaultfont]||"")&&s("defaultfont "+o),r("textcolor",e.colors[i.defaultcolor],"defaultcolor"),r("bgcolor",e.colors[i.defaultbgcolor],"defaultbgcolor"),r("numberformat",e.valueformats[i.defaultnontextvalueformat],"defaultnontextvalueformat"),r("textformat",e.valueformats[i.defaulttextvalueformat],"defaulttextvalueformat"),r("recalc",e.attribs.recalc,"recalc"),r("usermaxcol",e.attribs.usermaxcol,"usermaxcol"),r("usermaxrow",e.attribs.usermaxrow,"usermaxrow"),n?a:null},t.SheetCommandInfo=function(e){this.sheetobj=e,this.timerobj=null,this.firsttimerdelay=50,this.timerdelay=1,this.maxtimeslice=100,this.saveundo=!1,this.CmdExtensionCallbacks={}},t.ScheduleSheetCommands=function(o,i,n){var r=o.sci,a=new t.Parse(i);r.sheetobj.statuscallback&&o.statuscallback(r,"cmdstart","",r.sheetobj.statuscallbackparams),n&&r.sheetobj.changes.PushChange(""),r.timerobj=e.setTimeout(function(){t.SheetCommandsTimerRoutine(r,a,n)},r.firsttimerdelay)},t.SheetCommandsTimerRoutine=function(o,i,n){var r,a=new Date;for(o.timerobj=null;!i.EOF();){try{r=t.ExecuteSheetCommand(o.sheetobj,i,n)}catch(s){r=s.message}if(r&&("function"==typeof alert?alert(r):console.log(r)),i.NextLine(),new Date-a>=o.maxtimeslice)return void(o.timerobj=e.setTimeout(function(){t.SheetCommandsTimerRoutine(o,i,n)},o.timerdelay))}o.sheetobj.statuscallback&&o.sheetobj.statuscallback(o,"cmdend","",o.sheetobj.statuscallbackparams)},t.ExecuteSheetCommand=function(e,o,i){function n(o){function i(e){return"v"==e||"c"==e}var n=t.GetSpreadsheetControlObject().editor,r=n.range2,a=void 0;if(r.hasrange){var s,l;o&&r.bottom-r.top==1&&r.left==r.right?(s=e.GetAssuredCell(t.crToCoord(r.left,r.top)),l=e.GetAssuredCell(t.crToCoord(r.left,r.bottom)),i(s.datatype)&&i(l.datatype)&&(a=l.datavalue-s.datavalue)):o||r.left==r.right||(s=e.GetAssuredCell(t.crToCoord(r.left,r.top)),l=e.GetAssuredCell(t.crToCoord(r.right,r.top)),i(s.datatype)&&i(l.datatype)&&(a=l.datavalue-s.datavalue))}return n.Range2Remove(),a}var r,a,s,l,c,u,d,h,p,f,m,g,v,b,y,C,w,x,_,S,k,T,F,E,D,P,A,I,M,R,N,L,O,z,H,B,U,j,V,W,G,$,Y,K,q,X,J,Z,Q,et,tt,ot,it,nt,rt,at,st,lt,ct,ut,dt,b,y,ht,pt,ft,mt=e.attribs,gt=e.changes,vt=t.CellProperties,bt=t.Constants,yt=!1,Ct=function(){var e=t.ParseRange(l);g=e.cr1,v=e.cr2,v.col>mt.lastcol&&(mt.lastcol=v.col),v.row>mt.lastrow&&(mt.lastrow=v.row)};switch(p="",r=o.RestOfStringNoMove(),i&&e.changes.AddDo(r),a=o.NextToken()){case"set":if(l=o.NextToken(),c=o.NextToken(),s=o.RestOfString(),f="set "+l+" "+c,"sheet"==l)switch(e.renderneeded=!0,c){case"defaultcolwidth":i&&gt.AddUndo(f,mt[c]),mt[c]=s;break;case"defaultcolor":case"defaultbgcolor":i&&gt.AddUndo(f,e.GetStyleString("color",mt[c])),mt[c]=e.GetStyleNum("color",s);break;case"defaultlayout":i&&gt.AddUndo(f,e.GetStyleString("layout",mt[c])),mt[c]=e.GetStyleNum("layout",s);break;case"defaultfont":i&&gt.AddUndo(f,e.GetStyleString("font",mt[c])),"* * *"==s&&(s=""),mt[c]=e.GetStyleNum("font",s);break;case"defaulttextformat":case"defaultnontextformat":i&&gt.AddUndo(f,e.GetStyleString("cellformat",mt[c])),mt[c]=e.GetStyleNum("cellformat",s);break;case"defaulttextvalueformat":case"defaultnontextvalueformat":i&&gt.AddUndo(f,e.GetStyleString("valueformat",mt[c])),mt[c]=e.GetStyleNum("valueformat",s);for(C in e.cells)delete e.cells[C].displaystring;break;case"lastcol":case"lastrow":i&&gt.AddUndo(f,mt[c]-0),u=s-0,"number"==typeof u&&(mt[c]=u>0?u:1);break;case"recalc":i&&gt.AddUndo(f,mt[c]),"off"==s?mt.recalc=s:delete mt.recalc;break;case"usermaxcol":case"usermaxrow":i&&gt.AddUndo(f,mt[c]-0),u=s-0,"number"==typeof u&&(mt[c]=u>0?u:0);break;default:p=bt.s_escUnknownSheetCmd+r}else if(/^[a-z]{1,2}(:[a-z]{1,2})?$/i.test(l))for(e.renderneeded=!0,l=l.toUpperCase(),d=l.indexOf(":"),d>=0?(g=t.coordToCr(l.substring(0,d)+"1"),v=t.coordToCr(l.substring(d+1)+"1")):(g=t.coordToCr(l+"1"),v=g),b=g.col;b<=v.col;b++)"width"==c?(C=t.rcColname(b),i&&gt.AddUndo("set "+C+" width",e.colattribs.width[C]),s.length>0?e.colattribs.width[C]=s:delete e.colattribs.width[C]):"hide"==c&&(e.hiddencolrow="col",C=t.rcColname(b),i&&gt.AddUndo("set "+C+" hide",e.colattribs.hide[C]),s.length>0?e.colattribs.hide[C]=s:delete e.colattribs.hide[C]);else if(/^\d+(:\d+)?$/i.test(l))for(e.renderneeded=!0,l=l.toUpperCase(),d=l.indexOf(":"),d>=0?(g=t.coordToCr("A"+l.substring(0,d)),v=t.coordToCr("A"+l.substring(d+1))):(g=t.coordToCr("A"+l),v=g),y=g.row;y<=v.row;y++)"height"==c?(i&&gt.AddUndo("set "+y+" height",e.rowattribs.height[y]),s.length>0?e.rowattribs.height[y]=s:delete e.rowattribs.height[y]):"hide"==c&&(e.hiddencolrow="row",i&&gt.AddUndo("set "+y+" hide",e.rowattribs.hide[y]),s.length>0?e.rowattribs.hide[y]=s:delete e.rowattribs.hide[y]);else if(/^[a-z]{1,2}\d+(:[a-z]{1,2}\d+)?$/i.test(l))for(yt=!0,Ct(),g.row!=v.row||g.col!=v.col||e.celldisplayneeded||e.renderneeded?(e.renderneeded=!0,e.celldisplayneeded=""):e.celldisplayneeded=t.crToCoord(g.col,g.row),y=g.row;y<=v.row;y++)for(b=g.col;b<=v.col;b++)C=t.crToCoord(b,y),w=e.GetAssuredCell(C),w.readonly&&"readonly"!=c||(i&&gt.AddUndo("set "+C+" all",e.CellToString(w)),"value"==c?(d=s.indexOf(" "),w.datavalue=s.substring(d+1)-0,delete w.errors,w.datatype="v",w.valuetype=s.substring(0,d),delete w.displaystring,delete w.parseinfo,mt.needsrecalc="yes"):"text"==c?(d=s.indexOf(" "),w.datavalue=t.decodeFromSave(s.substring(d+1)),delete w.errors,w.datatype="t",w.valuetype=s.substring(0,d),delete w.displaystring,delete w.parseinfo,mt.needsrecalc="yes"):"formula"==c?(w.datavalue=0,delete w.errors,w.datatype="f",t._app&&"e#N/A"!=w.valuetype&&(w.prevvaluetype=w.valuetype),w.valuetype="e#N/A",w.formula=s,delete w.displaystring,delete w.parseinfo,mt.needsrecalc="yes"):"constant"==c?(d=s.indexOf(" "),h=s.substring(d+1).indexOf(" "),w.datavalue=s.substring(d+1,d+1+h)-0,w.valuetype=s.substring(0,d),"e"==w.valuetype.charAt(0)?w.errors=w.valuetype.substring(1):delete w.errors,w.datatype="c",w.formula=s.substring(d+h+2),delete w.displaystring,delete w.parseinfo,mt.needsrecalc="yes"):"empty"==c?(w.datavalue="",delete w.errors,w.datatype=null,w.formula="",w.valuetype="b",delete w.displaystring,delete w.parseinfo,mt.needsrecalc="yes"):"all"==c?(s.length>0?(w=new t.Cell(C),e.CellFromStringParts(w,s.split(":"),1),e.cells[C]=w):delete e.cells[C],mt.needsrecalc="yes"):/^b[trbl]$/.test(c)?(w[c]=e.GetStyleNum("borderstyle",s),e.renderneeded=!0):"color"==c||"bgcolor"==c?w[c]=e.GetStyleNum("color",s):"layout"==c||"cellformat"==c?w[c]=e.GetStyleNum(c,s):"font"==c?("* * *"==s&&(s=""),w[c]=e.GetStyleNum("font",s)):"textvalueformat"==c||"nontextvalueformat"==c?(w[c]=e.GetStyleNum("valueformat",s),delete w.displaystring):"cssc"==c?(s=s.replace(/[^a-zA-Z0-9\-]/g,""),w.cssc=s):"csss"==c?(s=s.replace(/\n/g,""),w.csss=s):"mod"==c?(s=s.replace(/[^yY]/g,"").toLowerCase(),w.mod=s):"comment"==c?w.comment=t.decodeFromSave(s):"readonly"==c?w.readonly="yes"==s.toLowerCase():p=bt.s_escUnknownSetCoordCmd+r);break;case"merge":if(e.renderneeded=!0,l=o.NextToken(),s=o.RestOfString(),Ct(),w=e.GetAssuredCell(g.coord),w.readonly)break;for(y=g.row;y<=v.row;y++)for(b=g.col;b<=v.col;b++)(y!=g.row||b!=g.col)&&(quashedCellCoord=t.crToCoord(b,y),quashedCell=e.GetAssuredCell(quashedCellCoord),i&&gt.AddUndo("set "+quashedCellCoord+" all",e.CellToString(quashedCell)),delete e.cells[quashedCellCoord]);i&&gt.AddUndo("unmerge "+g.coord),v.col>g.col?w.colspan=v.col-g.col+1:delete w.colspan,v.row>g.row?w.rowspan=v.row-g.row+1:delete w.rowspan,e.changedrendervalues=!0;break;case"unmerge":if(e.renderneeded=!0,l=o.NextToken(),s=o.RestOfString(),Ct(),w=e.GetAssuredCell(g.coord),w.readonly)break;i&&gt.AddUndo("merge "+g.coord+":"+t.crToCoord(g.col+(w.colspan||1)-1,g.row+(w.rowspan||1)-1)),delete w.colspan,delete w.rowspan,e.changedrendervalues=!0;break;case"erase":case"cut":for(e.renderneeded=!0,e.changedrendervalues=!0,l=o.NextToken(),s=o.RestOfString(),Ct(),i&&gt.AddUndo("changedrendervalues"),"cut"==a&&(i&&gt.AddUndo("loadclipboard",t.encodeForSave(t.Clipboard.clipboard)),t.Clipboard.clipboard=t.CreateSheetSave(e,l)),y=g.row;y<=v.row;y++)for(b=g.col;b<=v.col;b++)C=t.crToCoord(b,y),w=e.GetAssuredCell(C),w.readonly||(i&&gt.AddUndo("set "+C+" all",e.CellToString(w)),"all"==s?delete e.cells[C]:"formulas"==s?(w.datavalue="",w.datatype=null,w.formula="",w.valuetype="b",delete w.errors,delete w.displaystring,delete w.parseinfo,w.comment&&delete w.comment):"formats"==s&&(x=new t.Cell(C),x.datavalue=w.datavalue,x.datatype=w.datatype,x.formula=w.formula,x.valuetype=w.valuetype,w.comment&&(x.comment=w.comment),e.cells[C]=x));mt.needsrecalc="yes";break;case"fillright":case"filldown":e.renderneeded=!0,e.changedrendervalues=!0,i&&gt.AddUndo("changedrendervalues"),l=o.NextToken(),s=o.RestOfString(),Ct();var wt;for("fillright"==a?(_=!0,S=g.row,k=g.col+1,wt=n(!1)):(_=!1,S=g.row+1,k=g.col,wt=n(!0)),y=S;y<=v.row;y++)for(b=k;b<=v.col;b++)if(C=t.crToCoord(b,y),w=e.GetAssuredCell(C),!w.readonly){if(i&&gt.AddUndo("set "+C+" all",e.CellToString(w)),_?(T=t.crToCoord(g.col,y),E=b-k+1,F=0):(T=t.crToCoord(b,g.row),E=0,F=y-S+1),D=e.GetAssuredCell(T),"all"==s||"formats"==s)for(c in vt)1!=vt[c]&&(void 0===typeof D[c]||3==vt[c]?delete w[c]:w[c]=D[c]);("all"==s||"formulas"==s)&&(w.datavalue=void 0!==wt?D.datavalue+(_?E:F)*wt:D.datavalue,w.datatype=D.datatype,w.valuetype=D.valuetype,w.formula="f"==w.datatype?t.OffsetFormulaCoords(D.formula,E,F):D.formula,delete w.parseinfo,w.errors=D.errors),delete w.displaystring}mt.needsrecalc="yes";break;case"copy":l=o.NextToken(),s=o.RestOfString(),i&&gt.AddUndo("loadclipboard",t.encodeForSave(t.Clipboard.clipboard)),t.Clipboard.clipboard=t.CreateSheetSave(e,l);break;case"loadclipboard":s=o.RestOfString(),i&&gt.AddUndo("loadclipboard",t.encodeForSave(t.Clipboard.clipboard)),t.Clipboard.clipboard=t.decodeFromSave(s);break;case"clearclipboard":i&&gt.AddUndo("loadclipboard",t.encodeForSave(t.Clipboard.clipboard)),t.Clipboard.clipboard="";break;case"paste":if(e.renderneeded=!0,e.changedrendervalues=!0,i&&gt.AddUndo("changedrendervalues"),l=o.NextToken(),s=o.RestOfString(),Ct(),!t.Clipboard.clipboard)break;for(P=new t.Sheet,P.ParseSheetSave(t.Clipboard.clipboard),A=t.ParseRange(P.copiedfrom),I=Math.max(v.col-g.col+1,A.cr2.col-A.cr1.col+1),M=Math.max(v.row-g.row+1,A.cr2.row-A.cr1.row+1),g.col+I-1>mt.lastcol&&(mt.lastcol=g.col+I-1),g.row+M-1>mt.lastrow&&(mt.lastrow=g.row+M-1),y=g.row;y<g.row+M;y++)for(b=g.col;b<g.col+I;b++)if(C=t.crToCoord(b,y),w=e.GetAssuredCell(C),!w.readonly){i&&gt.AddUndo("set "+C+" all",e.CellToString(w));var xt=A.cr1.col+(b-g.col)%(A.cr2.col-A.cr1.col+1),_t=A.cr1.row+(y-g.row)%(A.cr2.row-A.cr1.row+1);if(T=t.crToCoord(xt,_t),D=P.GetAssuredCell(T),"all"==s||"formats"==s){y==g.row&&(sourceColname=t.rcColname(A.cr1.col+(b-g.col)%(A.cr2.col-A.cr1.col+1)),colWidth=P.colattribs.width[sourceColname],colHide=P.colattribs.hide[sourceColname],null!=colWidth&&(e.colattribs.width[t.rcColname(b)]=colWidth),null!=colHide&&(e.colattribs.hide[t.rcColname(b)]=colHide)),b==g.col&&(sourceRow=A.cr1.row+(y-g.row)%(A.cr2.row-A.cr1.row+1),rowHide=P.rowattribs.hide[sourceRow],null!=rowHide&&(e.rowattribs.hide[y]=rowHide));for(c in vt)1!=vt[c]&&(void 0===typeof D[c]||3==vt[c]?delete w[c]:(R=t.CellPropertiesTable[c],w[c]=R&&D[c]?e.GetStyleNum(R,P.GetStyleString(R,D[c])):D[c]))}("all"==s||"formulas"==s)&&(w.datavalue=D.datavalue,w.datatype=D.datatype,w.valuetype=D.valuetype,w.formula="f"==w.datatype?t.OffsetFormulaCoords(D.formula,b-xt,y-_t):D.formula,delete w.parseinfo,w.errors=D.errors,D.comment?w.comment=D.comment:w.comment&&delete w.comment),delete w.displaystring}mt.needsrecalc="yes";break;case"sort":for(e.renderneeded=!0,e.changedrendervalues=!0,i&&gt.AddUndo("changedrendervalues"),l=o.NextToken(),Ct(),X=[],J=[],Z=0,Q=0;3>=Q;Q++)X[Q]=o.NextToken(),J[Q]=o.NextToken(),X[Q]&&(Z=Q);for(tt={},et=[],ot=[],it=[],y=g.row;y<=v.row;y++){for(b=g.col;b<=v.col;b++)C=t.crToCoord(b,y),w=e.cells[C],w?(tt[C]=e.CellToString(w),i&&gt.AddUndo("set "+C+" all",tt[C])):i&&gt.AddUndo("set "+C+" all");for(et.push(et.length),ot.push([]),it.push([]),slast=it.length-1,Q=0;Z>=Q;Q++)C=X[Q]+y,w=e.GetAssuredCell(C),m=w.datavalue,rt=w.valuetype.charAt(0)||"b","t"==rt&&(m=m.toLowerCase()),ot[slast].push(m),it[slast].push(rt)}for(nt=function(e,t){var o,i,n,r,a;for(o=0;Z>=o;o++)if("up"==J[o]?(i=e,n=t):(i=t,n=e),r=it[i][o],tb=it[n][o],"t"==r?"t"==tb?(i=ot[i][o],n=ot[n][o],a=i>n?1:n>i?-1:0):"n"==tb?a=1:"b"==tb?a="up"==J[o]?-1:1:"e"==tb&&(a=-1):"n"==r?"t"==tb?a=-1:"n"==tb?(i=ot[i][o]-0,n=ot[n][o]-0,a=i>n?1:n>i?-1:0):"b"==tb?a="up"==J[o]?-1:1:"e"==tb&&(a=-1):"e"==r?"e"==tb?(i=ot[i][o],n=ot[n][o],a=i>n?1:n>i?-1:0):a="b"==tb&&"up"==J[o]?-1:1:"b"==r&&(a="b"==tb?0:"up"==J[o]?1:-1),a)return a;return a=e>t?1:t>e?-1:0},et.sort(nt),y=g.row;y<=v.row;y++)for(at=et[y-g.row],b=g.col;b<=v.col;b++)C=t.crToCoord(b,y),st=t.crToCoord(b,at+g.row),tt[st]?(w=new t.Cell(C),e.CellFromStringParts(w,tt[st].split(":"),1),"f"==w.datatype&&(w.formula=t.OffsetFormulaCoords(w.formula,0,y-g.row-at)),e.cells[C]=w):delete e.cells[C];mt.needsrecalc="yes";break;case"insertcol":case"insertrow":for(e.renderneeded=!0,e.changedrendervalues=!0,e.widgetsClean=!1,l=o.NextToken(),s=o.RestOfString(),Ct(),"insertcol"==a?(E=1,N=g.col,F=0,L=1,O=g.col,H=g.col,z=1,B=mt.lastrow,i&&gt.AddUndo("deletecol "+g.coord)):(E=0,N=1,F=1,L=g.row,O=1,H=mt.lastcol,z=g.row,B=g.row,i&&gt.AddUndo("deleterow "+g.coord)),y=mt.lastrow;y>=L;y--)for(b=mt.lastcol;b>=N;b--)T=t.crToCoord(b,y),C=t.crToCoord(b+E,y+F),e.cells[T]?e.cells[C]=e.cells[T]:delete e.cells[C];
-for(y=z;B>=y;y++)for(b=O;H>=b;b++){C=t.crToCoord(b,y),w=new t.Cell(C),e.cells[C]=w,T=t.crToCoord(b-E,y-F),D=e.GetAssuredCell(T);for(c in vt)2==vt[c]&&(w[c]=D[c])}for(C in e.cells)w=e.cells[C],w&&"f"==w.datatype&&(w.formula=t.AdjustFormulaCoords(w.formula,g.col,E,g.row,F)),w&&delete w.parseinfo;for(lt in e.names)e.names[lt]&&(ct=e.names[lt].definition,ut="","="==ct.charAt(0)&&(ut="=",ct=ct.substring(1)),e.names[lt].definition=ut+t.AdjustFormulaCoords(ct,g.col,E,g.row,F));for(y=mt.lastrow;y>=L&&"insertrow"==a;y--){U=y+F;for(c in e.rowattribs)m=e.rowattribs[c][y],e.rowattribs[c][U]!=m&&(m?e.rowattribs[c][U]=m:delete e.rowattribs[c][U])}for(b=mt.lastcol;b>=N&&"insertcol"==a;b--){V=t.rcColname(b),j=t.rcColname(b+E);for(c in e.colattribs)m=e.colattribs[c][V],e.colattribs[c][j]!=m&&(m?e.colattribs[c][j]=m:delete e.colattribs[c][j])}var St=new t.RenderContext(e);St.CalculateCellSkipData();var kt={};for(var Tt in St.cellskip){var Ft=t.coordToCr(Tt),Et=St.cellskip[Tt];"insertcol"===a&&Ft.col===O&&(kt[Et]||(e.GetAssuredCell(Et).colspan+=E),kt[Et]=!0),"insertrow"===a&&Ft.row===z&&(kt[Et]||(e.GetAssuredCell(Et).rowspan+=F),kt[Et]=!0)}mt.lastcol+=E,mt.lastrow+=F,mt.needsrecalc="yes";break;case"deletecol":case"deleterow":for(e.renderneeded=!0,e.changedrendervalues=!0,e.widgetsClean=!1,l=o.NextToken(),s=o.RestOfString(),G=mt.lastcol,W=mt.lastrow,Ct(),"deletecol"==a?(E=g.col-v.col-1,F=0,k=v.col+1,S=1):(E=0,F=g.row-v.row-1,k=1,S=v.row+1),y=S;W-F>=y;y++)for(b=k;G-E>=b;b++)if(C=t.crToCoord(b+E,y+F),w=e.cells[C],w&&w.readonly)return p="Unable to remove "+("deletecol"==a?"column":"row")+", because cell "+w.coord+" is locked";for(y=S;W-F>=y;y++)for(b=k;G-E>=b;b++)C=t.crToCoord(b+E,y+F),i&&(S-F>y||k-E>b)&&(w=e.cells[C],w?gt.AddUndo("set "+C+" all",e.CellToString(w)):gt.AddUndo("erase "+C+" all")),T=t.crToCoord(b,y),w=e.cells[T],w?e.cells[C]=w:delete e.cells[C];for(C in e.cells)w=e.cells[C],w&&("f"==w.datatype?(K=w.formula,w.formula=t.AdjustFormulaCoords(K,g.col,E,g.row,F),w.formula!=K&&(delete w.parseinfo,i&&-1!=w.formula.indexOf("#REF!")&&(q=t.coordToCr(C),gt.AddUndo("set "+t.rcColname(q.col-E)+(q.row-F)+" formula "+K)))):delete w.parseinfo);for(lt in e.names)e.names[lt]&&(ct=e.names[lt].definition,ut="","="==ct.charAt(0)&&(ut="=",ct=ct.substring(1)),e.names[lt].definition=ut+t.AdjustFormulaCoords(ct,g.col,E,g.row,F));for(y=S;W-F>=y&&"deleterow"==a;y++){$=y+F;for(c in e.rowattribs)m=e.rowattribs[c][y],e.rowattribs[c][$]!=m&&(i&&gt.AddUndo("set "+$+" "+c,e.rowattribs[c][$]),m?e.rowattribs[c][$]=m:delete e.rowattribs[c][$])}for(b=k;G-E>=b&&"deletecol"==a;b++){V=t.rcColname(b),Y=t.rcColname(b+E);for(c in e.colattribs)m=e.colattribs[c][V],e.colattribs[c][Y]!=m&&(i&&gt.AddUndo("set "+Y+" "+c,e.colattribs[c][Y]),m?e.colattribs[c][Y]=m:delete e.colattribs[c][Y])}var St=new t.RenderContext(e);St.CalculateCellSkipData();var Dt={};for(var Tt in St.cellskip){var Ft=t.coordToCr(Tt),Et=St.cellskip[Tt],Pt=St.coordToCR[Et];"deletecol"===a&&Ft.col===k+E&&Pt.col<Ft.col&&(Dt[Et]||(e.GetAssuredCell(Et).colspan+=E),Dt[Et]=!0),"deleterow"===a&&Ft.row===S+F&&Pt.row<Ft.row&&(Dt[Et]||(e.GetAssuredCell(Et).rowspan+=F),Dt[Et]=!0)}if(i)if("deletecol"==a)for(b=g.col;b<=v.col;b++)gt.AddUndo("insertcol "+t.rcColname(g.col));else for(y=g.row;y<=v.row;y++)gt.AddUndo("insertrow "+g.row);"deletecol"==a?g.col<=G&&(v.col<=G?mt.lastcol+=E:mt.lastcol=g.col-1):g.row<=W&&(v.row<=W?mt.lastrow+=F:mt.lastrow=g.row-1),mt.needsrecalc="yes";break;case"movepaste":case"moveinsert":var At,It,Mt,Rt,Nt,Lt,Ot;for(e.renderneeded=!0,e.changedrendervalues=!0,i&&gt.AddUndo("changedrendervalues"),l=o.NextToken(),It=o.NextToken(),s=o.RestOfString(),""==s&&(s="all"),Ct(),Mt=t.coordToCr(It),E=Mt.col-g.col,F=Mt.row-g.row,I=v.col-g.col+1,M=v.row-g.row+1,At={},y=g.row;y<=v.row;y++)for(b=g.col;b<=v.col;b++)if(C=t.crToCoord(b,y),w=e.GetAssuredCell(C),!w.readonly&&(i&&gt.AddUndo("set "+C+" all",e.CellToString(w)),e.cells[C])){At[C]=new t.Cell(C);for(c in vt)void 0!==typeof w[c]&&(At[C][c]=w[c],"all"==s&&delete w[c],"formulas"==s&&(1==vt[c]||3==vt[c])&&delete w[c],"formats"==s&&2==vt[c]&&delete w[c]);"formulas"==s&&(w.datavalue="",w.datatype=null,w.formula="",w.valuetype="b"),"all"==s&&delete e.cells[C]}if("moveinsert"==a&&(Rt=!1,Nt=!1,0==F&&(Mt.col<g.col||Mt.col>v.col)?Mt.col<g.col?(Lt=g.col-Mt.col,Rt=-1):(Mt.col-=1,E=Mt.col-v.col,Lt=Mt.col-v.col,Rt=1):0==E&&(Mt.row<g.row||Mt.row>v.row)?Mt.row<g.row?(Lt=g.row-Mt.row,Nt=-1):(Mt.row-=1,F=Mt.row-v.row,Lt=Mt.row-v.row,Nt=1):a="movepaste"),Ot={},Nt)for(y=0;Lt>y;y++)for(b=g.col;b<=v.col;b++){if(0>Nt?(T=t.crToCoord(b,Mt.row+Lt-y-1),C=t.crToCoord(b,v.row-y)):(T=t.crToCoord(b,Mt.row-Lt+y+1),C=t.crToCoord(b,g.row+y)),D=e.GetAssuredCell(T),i&&gt.AddUndo("set "+T+" all",e.CellToString(D)),w=e.GetAssuredCell(C),"all"==s||"formats"==s)for(c in vt)1!=vt[c]&&(void 0===typeof D[c]||3==vt[c]?delete w[c]:w[c]=D[c]);("all"==s||"formulas"==s)&&(w.datavalue=D.datavalue,w.datatype=D.datatype,w.valuetype=D.valuetype,w.formula=D.formula,delete w.parseinfo,w.errors=D.errors),delete w.displaystring,Ot[T]=C}if(Rt)for(b=0;Lt>b;b++)for(y=g.row;y<=v.row;y++){if(0>Rt?(T=t.crToCoord(Mt.col+Lt-b-1,y),C=t.crToCoord(v.col-b,y)):(T=t.crToCoord(Mt.col-Lt+b+1,y),C=t.crToCoord(g.col+b,y)),D=e.GetAssuredCell(T),i&&gt.AddUndo("set "+T+" all",e.CellToString(D)),w=e.GetAssuredCell(C),"all"==s||"formats"==s)for(c in vt)1!=vt[c]&&(void 0===typeof D[c]||3==vt[c]?delete w[c]:w[c]=D[c]);("all"==s||"formulas"==s)&&(w.datavalue=D.datavalue,w.datatype=D.datatype,w.valuetype=D.valuetype,w.formula=D.formula,delete w.parseinfo,w.errors=D.errors),delete w.displaystring,Ot[T]=C}for(Mt.col+I-1>mt.lastcol&&(mt.lastcol=Mt.col+I-1),Mt.row+M-1>mt.lastrow&&(mt.lastrow=Mt.row+M-1),y=g.row;y<g.row+M;y++)for(b=g.col;b<g.col+I;b++)if(C=t.crToCoord(b+E,y+F),w=e.GetAssuredCell(C),!w.readonly)if(i&&gt.AddUndo("set "+C+" all",e.CellToString(w)),T=t.crToCoord(b,y),Ot[T]=C,"all"!=s||At[T]){if(D=At[T],D||(D=e.GetAssuredCell(T)),"all"==s||"formats"==s)for(c in vt)1!=vt[c]&&(void 0===typeof D[c]||3==vt[c]?delete w[c]:w[c]=D[c]);("all"==s||"formulas"==s)&&(w.datavalue=D.datavalue,w.datatype=D.datatype,w.valuetype=D.valuetype,w.formula=D.formula,delete w.parseinfo,w.errors=D.errors,D.comment?w.comment=D.comment:w.comment&&delete w.comment),delete w.displaystring}else delete e.cells[C];for(C in e.cells)w=e.cells[C],w&&("f"==w.datatype?(K=w.formula,w.formula=t.ReplaceFormulaCoords(K,Ot),w.formula!=K&&(delete w.parseinfo,i&&!Ot[C]&&gt.AddUndo("set "+C+" formula "+K))):delete w.parseinfo);for(lt in e.names)e.names[lt]&&(ct=e.names[lt].definition,K=ct,ut="","="==ct.charAt(0)&&(ut="=",ct=ct.substring(1)),e.names[lt].definition=ut+t.ReplaceFormulaCoords(ct,Ot),i&&e.names[lt].definition!=K&&gt.AddUndo("name define "+lt+" "+K));mt.needsrecalc="yes";break;case"name":if(l=o.NextToken(),lt=o.NextToken(),s=o.RestOfString(),lt=lt.toUpperCase().replace(/[^A-Z0-9_\.]/g,""),""==lt)break;if("define"==l){if(""==s)break;e.names[lt]?(i&&gt.AddUndo("name define "+lt+" "+e.names[lt].definition),e.names[lt].definition=s):(i&&gt.AddUndo("name delete "+lt),e.names[lt]={definition:s,desc:""})}else"desc"==l?e.names[lt]&&(i&&gt.AddUndo("name desc "+lt+" "+e.names[lt].desc),e.names[lt].desc=s):"delete"==l&&(i&&(e.names[lt].desc&&gt.AddUndo("name desc "+lt+" "+e.names[lt].desc),gt.AddUndo("name define "+lt+" "+e.names[lt].definition)),delete e.names[lt]);mt.needsrecalc="yes";break;case"recalc":mt.needsrecalc="yes",e.recalconce=!0;break;case"redisplay":e.renderneeded=!0;break;case"changedrendervalues":e.changedrendervalues=!0;break;case"pane":if(lt=o.NextToken().toUpperCase(),pt=1,ht=t.GetSpreadsheetControlObject().editor,"ROW"===lt.toUpperCase()){for(y=parseInt(o.NextToken(),10),"undefined"!=typeof ht.context.rowpanes[1]&&"number"==typeof ht.context.rowpanes[1].first&&(pt=ht.context.rowpanes[1].first),i&&gt.AddUndo("pane row "+pt);"yes"==ht.context.sheetobj.rowattribs.hide[y];)y++;(!y||y<=ht.context.rowpanes[0].first)&&ht.context.rowpanes.length>1?ht.context.rowpanes.length=1:ht.context.rowpanes.length-1&&!ht.timeout?(ht.context.SetRowPaneFirstLast(0,ht.context.rowpanes[0].first,y-1),ht.context.SetRowPaneFirstLast(1,y,y)):(ht.context.SetRowPaneFirstLast(0,ht.context.rowpanes[0].first,y-1),ht.context.SetRowPaneFirstLast(1,y,y)),ht.griddiv&&(ft=document.getElementById("trackingline-vertical"),ft&&(ht.griddiv.removeChild(ft),ht.FitToEditTable()))}else{for(b=parseInt(o.NextToken(),10),"undefined"!=typeof ht.context.colpanes[1]&&"number"==typeof ht.context.colpanes[1].first&&(pt=ht.context.colpanes[1].first),i&&gt.AddUndo("pane col "+pt);"yes"==ht.context.sheetobj.colattribs.hide[t.rcColname(b)];)b++;(!b||b<=ht.context.colpanes[0].first)&&ht.context.colpanes.length>1?ht.context.colpanes.length=1:ht.context.colpanes.length-1&&!ht.timeout?(ht.context.SetColPaneFirstLast(0,ht.context.colpanes[0].first,b-1),ht.context.SetColPaneFirstLast(1,b,b)):(ht.context.SetColPaneFirstLast(0,ht.context.colpanes[0].first,b-1),ht.context.SetColPaneFirstLast(1,b,b)),ht.griddiv&&(ft=document.getElementById("trackingline-horizon"),ft&&(ht.griddiv.removeChild(ft),ht.FitToEditTable()))}e.renderneeded=!0;break;case"startcmdextension":lt=o.NextToken(),dt=e.sci.CmdExtensionCallbacks[lt],dt&&dt.func(lt,dt.data,e,o,i);break;case"settimetrigger":case"sendemail":case"submitform":break;default:p=bt.s_escUnknownCmd+r}return t._app&&(yt?1==e.renderneeded&&"value"!=c&&"text"!=c&&"formula"!=c&&"constant"!=c&&"empty"!=c?e.widgetsClean=!1:"all"==c&&(e.widgetsClean=!1):1==e.renderneeded&&(e.widgetsClean=!1)),p},t.SheetUndo=function(e){var t,o=e.changes.TOS(),i=o?o.undo.length-1:-1,n="";for(t=i;t>=0;t--)n&&(n+="\n"),n+=o.undo[t];e.changes.Undo(),e.ScheduleSheetCommands(n,!1)},t.SheetRedo=function(e){var t,o,i=e.changes.Redo();if(!i)return void e.ScheduleSheetCommands("",!1);t=e.changes.TOS();var n="";for(o=0;t&&o<t.command.length;o++)n&&(n+="\n"),n+=t.command[o];e.ScheduleSheetCommands(n,!1)},t.CreateAuditString=function(e){var t,o,i="",n=e.changes.stack,r=e.changes.tos;for(t=0;r>=t;t++)for(o=0;o<n[t].command.length;o++)i+=n[t].command[o]+"\n";return i},t.GetStyleNum=function(e,t,o){var i;return 0==o.length?0:(i=e[t+"hash"][o],i||(e[t+"s"].length<1&&e[t+"s"].push(""),i=e[t+"s"].push(o)-1,e[t+"hash"][o]=i,e.changedrendervalues=!0),i)},t.GetStyleString=function(e,t,o){return o?e[t+"s"][o]:null},t.OffsetFormulaCoords=function(e,o,i){var n,r,a,s,l,c,u="",d=t.Formula;if(!d)return"Need SocialCalc.Formula";var h=d.TokenType,p=h.op,f=h.string,m=h.coord,g=d.TokenOpExpansion;for(n=d.ParseFormulaIntoTokens(e),s=0;s<n.length;s++)a=n[s].type,r=n[s].text,a==m?(c="",l=t.coordToCr(r),"$"!=r.charAt(0)?l.col+=o:c+="$",c+=t.rcColname(l.col),-1==r.indexOf("$",1)?l.row+=i:c+="$",c+=l.row,(l.row<1||l.col<1)&&(c="#REF!"),u+=c):u+=a==f?r.indexOf('"')>=0?'"'+r.replace(/"/,'""')+'"':'"'+r+'"':a==p?g[r]||r:r;return u},t.AdjustFormulaCoords=function(e,o,i,n,r){var a,s,l,c,u="",d=!1,h=t.Formula;if(!h)return"Need SocialCalc.Formula";var p=h.TokenType,f=p.op,m=p.string,g=p.coord,v=h.TokenOpExpansion;for(parseinfo=t.Formula.ParseFormulaIntoTokens(e),l=0;l<parseinfo.length;l++)a=parseinfo[l].type,s=parseinfo[l].text,a==f&&("!"==s?d=!0:":"!=s&&(d=!1),s=v[s]||s),a==g?(cr=t.coordToCr(s),(0>i&&cr.col>=o&&cr.col<o-i||0>r&&cr.row>=n&&cr.row<n-r)&&(d||(cr.col=0,cr.row=0)),d||(cr.col>=o&&(cr.col+=i),cr.row>=n&&(cr.row+=r)),c="$"==s.charAt(0)?"$"+t.rcColname(cr.col):t.rcColname(cr.col),c+=-1!=s.indexOf("$",1)?"$"+cr.row:cr.row,(cr.row<1||cr.col<1)&&(c="#REF!"),s=c):a==m&&(s=s.indexOf('"')>=0?'"'+s.replace(/"/,'""')+'"':'"'+s+'"'),u+=s;return u},t.ReplaceFormulaCoords=function(e,o){var i,n,r,a,s,l="",c=!1,u=t.Formula;if(!u)return"Need SocialCalc.Formula";var d=u.TokenType,h=d.op,p=d.string,f=d.coord,m=u.TokenOpExpansion;for(parseinfo=t.Formula.ParseFormulaIntoTokens(e),r=0;r<parseinfo.length;r++)i=parseinfo[r].type,n=parseinfo[r].text,i==h&&("!"==n?c=!0:":"!=n&&(c=!1),n=m[n]||n),i==f?(cr=t.coordToCr(n),s=t.crToCoord(cr.col,cr.row),o[s]&&!c&&(cr=t.coordToCr(o[s]),a="$"==n.charAt(0)?"$"+t.rcColname(cr.col):t.rcColname(cr.col),a+=-1!=n.indexOf("$",1)?"$"+cr.row:cr.row,n=a)):i==p&&(n=n.indexOf('"')>=0?'"'+n.replace(/"/,'""')+'"':'"'+n+'"'),l+=n;return l},t.RecalcInfo={sheet:null,currentState:0,state:{idle:0,start_calc:1,order:2,calc:3,start_wait:4,done_wait:5},recalctimer:null,maxtimeslice:100,timeslicedelay:1,starttime:0,queue:[],LoadSheet:function(){return!1}},t.RecalcData=function(){this.inrecalc=!0,this.celllist=[],this.celllistitem=0,this.calclist=null,this.calclistlength=0,this.firstcalc=null,this.lastcalc=null,this.nextcalc=null,this.count=0,this.checkinfo={}},t.RecalcCheckInfo=function(){this.oldcoord=null,this.parsepos=0,this.inrange=!1,this.inrangestart=!1,this.cr1=null,this.cr2=null,this.c1=null,this.c2=null,this.r1=null,this.r2=null,this.c=null,this.r=null},t.RecalcSheet=function(e){var o=t.RecalcInfo;return o.currentState!=o.state.idle?void o.queue.push(e):(delete e.attribs.circularreferencecell,t.Formula.FreshnessInfoReset(),t.RecalcClearTimeout(),o.sheet=e,o.currentState=o.state.start_calc,o.starttime=new Date,e.statuscallback&&e.statuscallback(o,"calcstart",null,e.statuscallbackparams),void t.RecalcSetTimeout())},t.RecalcSetTimeout=function(){var o=t.RecalcInfo;o.recalctimer=e.setTimeout(t.RecalcTimerRoutine,o.timeslicedelay)},t.RecalcClearTimeout=function(){var o=t.RecalcInfo;o.recalctimer&&(e.clearTimeout(o.recalctimer),o.recalctimer=null)},t.RecalcLoadedSheet=function(e,o,i,n){var r,a=t.RecalcInfo,s=t.Formula;r=t.Formula.AddSheetToCache(e||s.SheetCache.waitingForLoading,o,n),i&&r&&"off"!=r.attribs.recalc&&(r.previousrecalcsheet=a.sheet,a.sheet=r,a.currentState=a.state.start_calc),s.SheetCache.waitingForLoading=null,t.RecalcSetTimeout()},t.RecalcTimerRoutine=function(){var e,o,i,n,r,a=new Date,s=0,l=t.Formula;if(!l)return"Need SocialCalc.Formula";var c=t.RecalcInfo,u=c.sheet;if(u){var d=u.recalcdata||(u.recalcdata={}),h=function(e,t){u.statuscallback&&u.statuscallback(d,e,t,u.statuscallbackparams)};if(t.RecalcClearTimeout(),c.currentState==c.state.start_calc){d=new t.RecalcData,u.recalcdata=d;for(i in u.cells)i&&d.celllist.push(i);d.calclist={},c.currentState=c.state.order}if(c.currentState==c.state.order){for(;d.celllistitem<d.celllist.length;)if(i=d.celllist[d.celllistitem++],n=t.RecalcCheckCell(u,i),new Date-a>=c.maxtimeslice)return h("calcorder",{coord:i,total:d.celllist.length,count:d.celllistitem}),void t.RecalcSetTimeout();return h("calccheckdone",d.calclistlength),d.nextcalc=d.firstcalc,c.currentState=c.state.calc,void t.RecalcSetTimeout()}if(c.currentState==c.state.start_wait){if(c.currentState=c.state.done_wait,c.LoadSheet&&(r=c.LoadSheet(l.SheetCache.waitingForLoading)))return;return void t.RecalcLoadedSheet(null,"",!1)}if(c.currentState==c.state.done_wait)return c.currentState=c.state.calc,void t.RecalcSetTimeout();for(c.currentState!=c.state.calc&&alert("Recalc state error: "+c.currentState+". Error in SocialCalc code."),i=u.recalcdata.nextcalc;i;){if(o=u.cells[i],o.parseinfo||(o.parseinfo=l.ParseFormulaIntoTokens(o.formula)),o.parseinfo.coord=i,e=l.evaluate_parsed_formula(o.parseinfo,u,!1),l.SheetCache.waitingForLoading){if(1!=c.firstRenderScheduled){var p=t.GetSpreadsheetControlObject().editor;p.ScheduleRender(!1),c.firstRenderScheduled=!0}return d.nextcalc=i,d.count+=s,h("calcloading",{sheetname:l.SheetCache.waitingForLoading}),c.currentState=c.state.start_wait,void t.RecalcSetTimeout()}if(l.RemoteFunctionInfo.waitingForServer)return d.nextcalc=i,d.count+=s,h("calcserverfunc",{funcname:l.RemoteFunctionInfo.waitingForServer,coord:i,total:d.calclistlength,count:d.count}),void(c.currentState=c.state.done_wait);if((o.datavalue!=e.value||o.valuetype!=e.type)&&(o.datavalue=e.value,o.valuetype=e.type,delete o.displaystring,u.recalcchangedavalue=!0),e.error&&(o.errors=e.error),s++,i=u.recalcdata.calclist[i],new Date-a>=c.maxtimeslice)return d.nextcalc=i,d.count+=s,h("calcstep",{coord:i,total:d.calclistlength,count:d.count}),void t.RecalcSetTimeout()}if(d.inrecalc=!1,u.reRenderCellList=u.recalcdata.celllist,delete u.recalcdata,delete u.attribs.needsrecalc,c.sheet=u.previousrecalcsheet||null,c.sheet)return c.currentState=c.state.calc,void t.RecalcSetTimeout();l.FreshnessInfo.recalc_completed=!0,c.currentState=c.state.idle,h("calcfinished",new Date-c.starttime),c.queue.length>0&&(u=c.queue.shift(),u.RecalcSheet())}},t.RecalcCheckCell=function(e,o){var i,n,r,a,s,l,c,u,d,h,p=t.Formula;if(!p)return"Need SocialCalc.Formula";var f=p.TokenType,m=f.op,g=f.name,v=f.coord,b=e.recalcdata,y=b.checkinfo,C=!1,w=null,x=o;e:for(;x;)if(d=e.cells[x],h=y[x],!d||"f"!=d.datatype||h&&"object"!=typeof h)x=w,y[x]&&(w=y[x].oldcoord);else{for(h||(h=new t.RecalcCheckInfo,y[x]=h),d.errors&&delete d.errors,d.parseinfo||(d.parseinfo=p.ParseFormulaIntoTokens(d.formula)),i=d.parseinfo,a=h.parsepos;a<i.length;a++){if(h.inrange){if(h.inrangestart&&(h.cr1.col>h.cr2.col?(h.c1=h.cr2.col,h.c2=h.cr1.col):(h.c1=h.cr1.col,h.c2=h.cr2.col),h.c=h.c1-1,h.cr1.row>h.cr2.row?(h.r1=h.cr2.row,h.r2=h.cr1.row):(h.r1=h.cr1.row,h.r2=h.cr2.row),h.r=h.r1,h.inrangestart=!1),h.c+=1,h.c>h.c2){if(h.r+=1,h.r>h.r2){h.inrange=!1;continue}h.c=h.c1}if(s=t.crToCoord(h.c,h.r),h.parsepos=a,h.oldcoord=w,w=x,x=s,y[x]&&"object"==typeof y[x])return d.errors=t.Constants.s_caccCircRef+o,y[o]=!0,b.firstcalc?b.calclist[b.lastcalc]=o:b.firstcalc=o,b.lastcalc=o,b.calclistlength++,e.attribs.circularreferencecell=x+"|"+w,d.errors;continue e}if(r=i[a].type,n=i[a].text,r==m&&("!"==n?C=!0:":"!=n&&(C=!1)),r==g)if(l=p.LookupName(e,n),"range"==l.type){if(c=l.value.indexOf("|"),-1!=c){h.cr1=t.coordToCr(l.value.substring(0,c)),u=l.value.indexOf("|",c+1),h.cr2=t.coordToCr(l.value.substring(c+1,u)),h.inrange=!0,h.inrangestart=!0,a-=1;continue}}else"coord"==l.type&&(r=v,n=l.value);if(r==v){if(a>=2&&i[a-1].type==m&&":"==i[a-1].text&&i[a-2].type==v&&!C){h.cr1=t.coordToCr(i[a-2].text),h.cr2=t.coordToCr(n),h.inrange=!0,h.inrangestart=!0,a-=1;continue}if(!C){if(-1!=n.indexOf("$")&&(n=n.replace(/\$/g,"")),h.parsepos=a+1,h.oldcoord=w,w=x,x=n,y[x]&&"object"==typeof y[x])return d.errors=t.Constants.s_caccCircRef+o,y[o]=!0,b.firstcalc?b.calclist[b.lastcalc]=o:b.firstcalc=o,b.lastcalc=o,b.calclistlength++,e.attribs.circularreferencecell=x+"|"+w,d.errors;continue e}}}C=!1,y[x]=!0,b.firstcalc?b.calclist[b.lastcalc]=x:b.firstcalc=x,b.lastcalc=x,b.calclistlength++,x=w,w=y[x]?y[x].oldcoord:null}return""},t.Parse=function(e){this.str=e,this.pos=0,this.delimiter=" ",this.lineEnd=e.indexOf("\n"),this.lineEnd<0&&(this.lineEnd=e.length)},t.Parse.prototype.NextToken=function(){if(this.pos<0)return"";var e=this.str.indexOf(this.delimiter,this.pos),t=this.pos;return e>this.lineEnd&&(e=this.lineEnd),e>=0?(this.pos=e+1,this.str.substring(t,e)):(this.pos=this.lineEnd,this.str.substring(t,this.lineEnd))},t.Parse.prototype.RestOfString=function(){var e=this.pos;return this.pos<0||this.pos>=this.lineEnd?"":(this.pos=this.lineEnd,this.str.substring(e,this.lineEnd))},t.Parse.prototype.RestOfStringNoMove=function(){return this.pos<0||this.pos>=this.lineEnd?"":this.str.substring(this.pos,this.lineEnd)},t.Parse.prototype.NextLine=function(){this.pos=this.lineEnd+1,this.lineEnd=this.str.indexOf("\n",this.pos),this.lineEnd<0&&(this.lineEnd=this.str.length)},t.Parse.prototype.EOF=function(){return this.pos<0||this.pos>=this.str.length?!0:!1},t.UndoStack=function(){this.stack=[],this.tos=-1,this.maxRedo=0,this.maxUndo=50},t.UndoStack.prototype.PushChange=function(e){for(;this.stack.length>0&&this.stack.length-1>this.tos;)this.stack.pop();this.stack.push({command:[],type:e,undo:[]}),this.maxRedo&&this.stack.length>this.maxRedo&&this.stack.shift(),this.maxUndo&&this.stack.length>this.maxUndo&&(this.stack[this.stack.length-this.maxUndo-1].undo=[]),this.tos=this.stack.length-1},t.UndoStack.prototype.AddDo=function(){if(this.stack[this.stack.length-1]){for(var e=[],t=0;t<arguments.length;t++)null!=arguments[t]&&e.push(arguments[t]);var o=e.join(" ");this.stack[this.stack.length-1].command.push(o)}},t.UndoStack.prototype.AddUndo=function(){if(this.stack[this.stack.length-1]){for(var e=[],t=0;t<arguments.length;t++)null!=arguments[t]&&e.push(arguments[t]);var o=e.join(" ");this.stack[this.stack.length-1].undo.push(o)}},t.UndoStack.prototype.TOS=function(){return this.tos>=0?this.stack[this.tos]:null},t.UndoStack.prototype.Undo=function(){return this.tos>=0&&(!this.maxUndo||this.tos>this.stack.length-this.maxUndo-1)?(this.tos-=1,!0):!1},t.UndoStack.prototype.Redo=function(){return this.tos<this.stack.length-1?(this.tos+=1,!0):!1},t.Clipboard={clipboard:""},t.RenderContext=function(e){var o=e.attribs,i=t.Constants;if(this.sheetobj=e,this.hideRowsCols=!1,this.showGrid=!1,this.showRCHeaders=!1,this.rownamewidth=i.defaultRowNameWidth,this.pixelsPerRow=i.defaultAssumedRowHeight,this.cellskip={},this.coordToCR={},this.colwidth=[],this.rowheight=[],this.totalwidth=0,this.totalheight=0,this.rowpanes=[],this.colpanes=[],this.colunhideleft=[],this.colunhideright=[],this.rowunhidetop=[],this.rowunhidebottom=[],this.maxcol=0,this.maxrow=0,this.highlights={},this.cursorsuffix="",this.highlightTypes={cursor:{style:i.defaultHighlightTypeCursorStyle,className:i.defaultHighlightTypeCursorClass},range:{style:i.defaultHighlightTypeRangeStyle,className:i.defaultHighlightTypeRangeClass},cursorinsertup:{style:"color:#FFF;backgroundColor:#A6A6A6;backgroundRepeat:repeat-x;backgroundPosition:top left;backgroundImage:url("+i.defaultImagePrefix+"cursorinsertup.gif);",className:i.defaultHighlightTypeCursorClass},cursorinsertleft:{style:"color:#FFF;backgroundColor:#A6A6A6;backgroundRepeat:repeat-y;backgroundPosition:top left;backgroundImage:url("+i.defaultImagePrefix+"cursorinsertleft.gif);",className:i.defaultHighlightTypeCursorClass},range2:{style:"color:#000;backgroundColor:#FFF;backgroundImage:url("+i.defaultImagePrefix+"range2.gif);",className:""}},this.cellIDprefix=i.defaultCellIDPrefix,this.defaultlinkstyle=null,this.defaultHTMLlinkstyle={type:"html"},this.defaultfontstyle=i.defaultCellFontStyle,this.defaultfontsize=i.defaultCellFontSize,this.defaultfontfamily=i.defaultCellFontFamily,this.defaultlayout=i.defaultCellLayout,this.defaultpanedividerwidth=i.defaultPaneDividerWidth,this.defaultpanedividerheight=i.defaultPaneDividerHeight,this.gridCSS=i.defaultGridCSS,this.commentClassName=i.defaultCommentClass,this.commentCSS=i.defaultCommentStyle,this.commentNoGridClassName=i.defaultCommentNoGridClass,this.commentNoGridCSS=i.defaultCommentNoGridStyle,this.readonlyClassName=i.defaultReadonlyClass,this.readonlyCSS=i.defaultReadonlyStyle,this.readonlyNoGridClassName=i.defaultReadonlyNoGridClass,this.readonlyNoGridCSS=i.defaultReadonlyNoGridStyle,this.readonlyComment=i.defaultReadonlyComment,this.classnames={colname:i.defaultColnameClass,rowname:i.defaultRownameClass,selectedcolname:i.defaultSelectedColnameClass,selectedrowname:i.defaultSelectedRownameClass,upperleft:i.defaultUpperLeftClass,skippedcell:i.defaultSkippedCellClass,panedivider:i.defaultPaneDividerClass,unhideleft:i.defaultUnhideLeftClass,unhideright:i.defaultUnhideRightClass,unhidetop:i.defaultUnhideTopClass,unhidebottom:i.defaultUnhideBottomClass,colresizebar:i.defaultColResizeBarClass,rowresizebar:i.defaultRowResizeBarClass},this.explicitStyles={colname:i.defaultColnameStyle,rowname:i.defaultRownameStyle,selectedcolname:i.defaultSelectedColnameStyle,selectedrowname:i.defaultSelectedRownameStyle,upperleft:i.defaultUpperLeftStyle,skippedcell:i.defaultSkippedCellStyle,panedivider:i.defaultPaneDividerStyle,unhideleft:i.defaultUnhideLeftStyle,unhideright:i.defaultUnhideRightStyle,unhidetop:i.defaultUnhideTopStyle,unhidebottom:i.defaultUnhideBottomStyle},this.cellskip=null,this.needcellskip=!0,this.fonts=[],this.layouts=[],this.needprecompute=!0,!o)throw i.s_rcMissingSheet;this.rowpanes[0]={first:1,last:o.lastrow},this.colpanes[0]={first:1,last:o.lastcol},this.usermaxcol=o.usermaxcol,this.usermaxrow=o.usermaxrow},t.RenderContext.prototype.PrecomputeSheetFontsAndLayouts=function(){t.PrecomputeSheetFontsAndLayouts(this)},t.RenderContext.prototype.CalculateCellSkipData=function(){t.CalculateCellSkipData(this)},t.RenderContext.prototype.CalculateColWidthData=function(){t.CalculateColWidthData(this)},t.RenderContext.prototype.CalculateRowHeightData=function(){t.CalculateRowHeightData(this)},t.RenderContext.prototype.SetRowPaneFirstLast=function(e,t,o){this.rowpanes[e]={first:t,last:o}},t.RenderContext.prototype.SetColPaneFirstLast=function(e,t,o){this.colpanes[e]={first:t,last:o}},t.RenderContext.prototype.CoordInPane=function(e,o,i){return t.CoordInPane(this,e,o,i)},t.RenderContext.prototype.CellInPane=function(e,o,i,n){return t.CellInPane(this,e,o,i,n)},t.RenderContext.prototype.InitializeTable=function(e){t.InitializeTable(this,e)},t.RenderContext.prototype.RenderSheet=function(e,o){return t.RenderSheet(this,e,o)},t.RenderContext.prototype.RenderColGroup=function(){return t.RenderColGroup(this)},t.RenderContext.prototype.RenderColHeaders=function(){return t.RenderColHeaders(this)},t.RenderContext.prototype.RenderSizingRow=function(){return t.RenderSizingRow(this)},t.RenderContext.prototype.RenderRow=function(e,o,i){return t.RenderRow(this,e,o,i)},t.RenderContext.prototype.RenderSpacingRow=function(){return t.RenderSpacingRow(this)},t.RenderContext.prototype.RenderCell=function(e,o,i,n,r,a){return t.RenderCell(this,e,o,i,n,r,a)},t.PrecomputeSheetFontsAndLayouts=function(e){var o,i,n,r,a,s,l,c,u=e.sheetobj,d=u.attribs;for(d.defaultfont&&(o=u.fonts[d.defaultfont],o=o.replace(/^\*/,t.Constants.defaultCellFontStyle),o=o.replace(/(.+)\*(.+)/,"$1"+t.Constants.defaultCellFontSize+"$2"),o=o.replace(/\*$/,t.Constants.defaultCellFontFamily),i=o.match(/^(\S+? \S+?) (\S+?) (\S.*)$/),e.defaultfontstyle=i[1],e.defaultfontsize=i[2],e.defaultfontfamily=i[3]),s=1;s<u.fonts.length;s++)l=u.fonts[s],l=l.replace(/^\*/,e.defaultfontstyle),l=l.replace(/(.+)\*(.+)/,"$1"+e.defaultfontsize+"$2"),l=l.replace(/\*$/,e.defaultfontfamily),i=l.match(/^(\S+?) (\S+?) (\S+?) (\S.*)$/),i&&(e.fonts[s]={style:i[1],weight:i[2],size:i[3],family:i[4]});for(n=/^padding:\s*(\S+)\s+(\S+)\s+(\S+)\s+(\S+);vertical-align:\s*(\S+);/,r=t.Constants.defaultCellLayout.match(n),a=d.defaultlayout?u.layouts[d.defaultlayout].match(n):["","*","*","*","*","*"],s=1;s<u.layouts.length;s++)if(l=u.layouts[s],i=l.match(n)){for(c=1;5>=c;c++)"*"==i[c]&&(i[c]="*"!=a[c]?a[c]:r[c]);e.layouts[s]="padding:"+i[1]+" "+i[2]+" "+i[3]+" "+i[4]+";vertical-align:"+i[5]+";"}e.needprecompute=!1},t.CalculateCellSkipData=function(e){{var o,i,n,r,a,s,l,c,u,d=e.sheetobj;d.rowattribs,d.colattribs}for(e.maxrow=0,e.maxcol=0,e.cellskip={},o=1;o<=d.attribs.lastrow;o++)for(i=1;i<=d.attribs.lastcol;i++)if(n=t.crToCoord(i,o),r=d.cells[n],void 0!==r&&!e.cellskip[n]&&(a=r.colspan||1,s=r.rowspan||1,a>1||s>1))for(l=o;o+s>l;l++)for(c=i;i+a>c;c++)u=t.crToCoord(c,l),u==n?e.coordToCR[n]={row:o,col:i}:e.cellskip[u]=n,l>e.maxrow&&(maxrow=l),c>e.maxcol&&(maxcol=c);e.needcellskip=!1},t.CalculateColWidthData=function(e){{var o,i,n,r,a=e.sheetobj;a.colattribs}for(r=e.showRCHeaders?e.rownamewidth-0:0,colpane=0;colpane<e.colpanes.length;colpane++)for(o=e.colpanes[colpane].first;o<=e.colpanes[colpane].last;o++)i=t.rcColname(o),"yes"==a.colattribs.hide[i]?e.colwidth[o]=0:(n=a.colattribs.width[i]||a.attribs.defaultcolwidth||t.Constants.defaultColWidth,("blank"==n||"auto"==n)&&(n=""),e.colwidth[o]=n+"",r+=n&&n-0>0?n-0:10);e.totalwidth=r},t.CalculateRowHeightData=function(e){var o,i,n,r=e.sheetobj;for(n=e.showRCHeaders?e.pixelsPerRow:0,rowpane=0;rowpane<e.rowpanes.length;rowpane++)for(o=e.rowpanes[rowpane].first;o<=e.rowpanes[rowpane].last;o++)"yes"===r.rowattribs.hide[o]?e.rowheight[o]=0:(i=r.rowattribs.height[o]||r.attribs.defaultrowheight||t.Constants.defaultAssumedRowHeight,("blank"===i||"auto"===i)&&(i=""),e.rowheight[o]=i+"",n+=i&&i-0>0?i-0:10);e.totalheight=n},t.InitializeTable=function(e,t){t.style.borderCollapse="collapse",t.cellSpacing="0",t.cellPadding="0",t.style.width=e.totalwidth+"px"},t.RenderSheet=function(e,t,o){var i,n,r,a,s,l;for(e.sheetobj.changedrendervalues&&(e.needcellskip=!0,e.needprecompute=!0,e.sheetobj.changedrendervalues=!1),e.needcellskip&&e.CalculateCellSkipData(),e.needprecompute&&e.PrecomputeSheetFontsAndLayouts(),e.CalculateColWidthData(),e.CalculateRowHeightData(),r=document.createElement("table"),e.InitializeTable(r),a=e.RenderColGroup(),r.appendChild(a),s=document.createElement("tbody"),s.appendChild(e.RenderSizingRow()),e.showRCHeaders&&(i=e.RenderColHeaders(),i&&s.appendChild(i)),n=0;n<e.rowpanes.length;n++){for(rownum=e.rowpanes[n].first;rownum<=e.rowpanes[n].last;rownum++)i=e.RenderRow(rownum,n,o),s.appendChild(i);n<e.rowpanes.length-1&&(i=e.RenderSpacingRow(),s.appendChild(i))}return r.appendChild(s),t&&(l=t.parentNode,l&&l.replaceChild(r,t)),r},t.RenderRow=function(e,o,i,n){var r,a,s,l,c=e.sheetobj,u=document.createElement("tr");if(e.showRCHeaders){if(a=document.createElement("td"),e.classnames&&(a.className=e.classnames.rowname),e.explicitStyles&&(a.style.cssText=e.explicitStyles.rowname),a.width=e.rownamewidth,a.height=e.rowheight[o],a.style.verticalAlign="top",a.innerHTML=o+"",o<e.rowpanes[e.rowpanes.length-1].last&&"yes"==c.rowattribs.hide[o+1]){var d=document.createElement("div");d.style.position="relative";var h=document.createElement("div");e.classnames&&(h.className=e.classnames.unhidetop),e.explicitStyles&&(h.style.cssText=e.explicitStyles.unhidetop);var p=e.rowheight[o]-0-t.Constants.defaultAssumedRowHeight;p=0===p?4:p,h.style.bottom="-"+p+"px",e.rowunhidetop[o]=h,d.appendChild(h),a.appendChild(d)}if(o>1&&"yes"==c.rowattribs.hide[o-1]){var h=document.createElement("div");e.classnames&&(h.className=e.classnames.unhidebottom),e.explicitStyles&&(h.style.cssText=e.explicitStyles.unhidebottom),e.rowunhidebottom[o]=h,a.appendChild(h)}var f=document.createElement("div");f.className=e.classnames.rowresizebar,a.appendChild(f),u.appendChild(a)}for(s=0;s<e.colpanes.length;s++){for(r=e.colpanes[s].first;r<=e.colpanes[s].last;r++)a=e.RenderCell(o,r,i,s,null,n),a&&u.appendChild(a);s<e.colpanes.length-1&&(a=document.createElement("td"),a.width=e.defaultpanedividerwidth,e.classnames.panedivider&&(a.className=e.classnames.panedivider),e.explicitStyles.panedivider&&(a.style.cssText=e.explicitStyles.panedivider),l=document.createElement("div"),l.style.width=e.defaultpanedividerwidth+"px",l.style.overflow="hidden",a.appendChild(l),u.appendChild(a))}return"yes"==c.rowattribs.hide[o]&&(u.style.cssText+=";display:none"),u},t.RenderSpacingRow=function(e){var t,o,i,n,r=(e.sheetobj,document.createElement("tr"));for(e.showRCHeaders&&(o=document.createElement("td"),o.width=e.rownamewidth,o.height=e.defaultpanedividerheight,e.classnames.panedivider&&(o.className=e.classnames.panedivider),e.explicitStyles.panedivider&&(o.style.cssText=e.explicitStyles.panedivider),r.appendChild(o)),i=0;i<e.colpanes.length;i++){for(t=e.colpanes[i].first;t<=e.colpanes[i].last;t++)o=document.createElement("td"),n=e.colwidth[t],n&&(o.width=n),o.height=e.defaultpanedividerheight,e.classnames.panedivider&&(o.className=e.classnames.panedivider),e.explicitStyles.panedivider&&(o.style.cssText=e.explicitStyles.panedivider),o&&r.appendChild(o);i<e.colpanes.length-1&&(o=document.createElement("td"),o.width=e.defaultpanedividerwidth,o.height=e.defaultpanedividerheight,e.classnames.panedivider&&(o.className=e.classnames.panedivider),e.explicitStyles.panedivider&&(o.style.cssText=e.explicitStyles.panedivider),r.appendChild(o))}return r},t.RenderColHeaders=function(e){var o,i,n=e.sheetobj,r=document.createElement("tr");if(!e.showRCHeaders)return null;for(i=document.createElement("td"),e.classnames&&(i.className=e.classnames.upperleft),e.explicitStyles&&(i.style.cssText=e.explicitStyles.upperleft),i.width=e.rownamewidth,r.appendChild(i),colpane=0;colpane<e.colpanes.length;colpane++){for(o=e.colpanes[colpane].first;o<=e.colpanes[colpane].last;o++){if(i=document.createElement("td"),e.classnames&&(i.className=e.classnames.colname),e.explicitStyles&&(i.style.cssText=e.explicitStyles.colname),"yes"==n.colattribs.hide[t.rcColname(o)]&&(i.style.cssText+=";display:none"),i.innerHTML=t.rcColname(o),o<e.colpanes[e.colpanes.length-1].last&&"yes"==n.colattribs.hide[t.rcColname(o+1)]){var a=document.createElement("div");
-e.classnames&&(a.className=e.classnames.unhideleft),e.explicitStyles&&(a.style.cssText=e.explicitStyles.unhideleft),e.colunhideleft[o]=a,i.appendChild(a)}o>1&&"yes"==n.colattribs.hide[t.rcColname(o-1)]&&(a=document.createElement("div"),e.classnames&&(a.className=e.classnames.unhideright),e.explicitStyles&&(a.style.cssText=e.explicitStyles.unhideright),e.colunhideright[o]=a,i.appendChild(a));var s=document.createElement("span");s.style.height=t.Constants.defaultAssumedRowHeight+"px",s.className=e.classnames.colresizebar,i.appendChild(s),r.appendChild(i)}colpane<e.colpanes.length-1&&(i=document.createElement("td"),i.width=e.defaultpanedividerwidth,e.classnames.panedivider&&(i.className=e.classnames.panedivider),e.explicitStyles.panedivider&&(i.style.cssText=e.explicitStyles.panedivider),r.appendChild(i))}return r},t.RenderColGroup=function(e){var o,i,n,r,a=e.sheetobj,s=document.createElement("colgroup");for(e.showRCHeaders&&(n=document.createElement("col"),n.width=e.rownamewidth,s.appendChild(n)),o=0;o<e.colpanes.length;o++){for(i=e.colpanes[o].first;i<=e.colpanes[o].last;i++)n=document.createElement("col"),"yes"==a.colattribs.hide[t.rcColname(i)]?n.width="1":(r=e.colwidth[i],r&&(n.width=r),s.appendChild(n));o<e.colpanes.length-1&&(n=document.createElement("col"),n.width=e.defaultpanedividerwidth,s.appendChild(n))}return s},t.RenderSizingRow=function(e){var o,i,n,r,a=e.sheetobj,s=document.createElement("tr");for(e.showRCHeaders&&(n=document.createElement("td"),n.style.width=e.rownamewidth+"px",n.height="1",s.appendChild(n)),o=0;o<e.colpanes.length;o++){for(i=e.colpanes[o].first;i<=e.colpanes[o].last;i++)n=document.createElement("td"),"yes"==a.colattribs.hide[t.rcColname(i)]?n.width="1":(r=e.colwidth[i],r&&(n.width=r)),n.height="1",s.appendChild(n);o<e.colpanes.length-1&&(n=document.createElement("td"),n.width=e.defaultpanedividerwidth,n.height="1",s.appendChild(n))}return s},t.RenderCell=function(e,o,i,n,r,a,s){var l,c,u,d,h,p,f,m=e.sheetobj,g="";o-=0,i-=0;var v=t.crToCoord(i,o);if(e.cellskip[v])return e.CoordInPane(e.cellskip[v],n,r)?null:(u=a?t.CreatePseudoElement():document.createElement("td"),e.classnames.skippedcell&&(u.className=e.classnames.skippedcell),e.explicitStyles.skippedcell&&(u.style.cssText=e.explicitStyles.skippedcell),u.innerHTML="&nbsp;",u);if(u=a?t.CreatePseudoElement():document.createElement("td"),e.cellIDprefix&&(u.id=e.cellIDprefix+v),h=m.cells[v],h||(h=new t.Cell(v)),f=m.attribs,scc=t.Constants,h.colspan>1){for(d=1,l=1;l<h.colspan;l++)"yes"!=m.colattribs.hide[t.rcColname(i+l)]&&e.CellInPane(o,i+l,n,r)&&d++;u.colSpan=d}if(h.rowspan>1){for(d=1,l=1;l<h.rowspan;l++)"yes"!=m.rowattribs.hide[o+l+""]&&e.CellInPane(o+l,i,n,r)&&d++;u.rowSpan=d}return(void 0==h.displaystring||0==m.widgetsClean)&&(h.displaystring=t.FormatValueForDisplay(m,h.datavalue,v,s||e.defaultlinkstyle)),u.innerHTML=h.displaystring,l=h.layout||f.defaultlayout,g+=l&&"undefined"!=typeof e.layouts[l]?e.layouts[l]:scc.defaultCellLayout,l=h.font||f.defaultfont,l&&"undefined"!=typeof e.fonts[l]?(c=e.fonts[l],g+="font-style:"+c.style+";font-weight:"+c.weight+";font-size:"+c.size+";font-family:"+c.family+";"):(scc.defaultCellFontSize&&(g+="font-size:"+scc.defaultCellFontSize+";"),scc.defaultCellFontFamily&&(g+="font-family:"+scc.defaultCellFontFamily+";")),l=h.color||f.defaultcolor,l&&"undefined"!=typeof m.colors[l]&&(g+="color:"+m.colors[l]+";"),l=h.bgcolor||f.defaultbgcolor,l&&"undefined"!=typeof m.colors[l]&&(g+="background-color:"+m.colors[l]+";"),l=h.cellformat,l&&"undefined"!=typeof m.cellformats[l]?g+="text-align:"+m.cellformats[l]+";":(c=h.valuetype.charAt(0),"t"==c?(l=f.defaulttextformat,l&&"undefined"!=typeof m.cellformats[l]&&(g+="text-align:"+m.cellformats[l]+";")):"n"==c?(l=f.defaultnontextformat,g+=l&&"undefined"!=typeof m.cellformats[l]?"text-align:"+m.cellformats[l]+";":"text-align:right;"):g+="text-align:left;"),(h.colspan>1||h.rowspan>1)&&(p=m.cells[t.crToCoord(i+(h.colspan||1)-1,o+(h.rowspan||1)-1)]),l=h.bt,l&&"undefined"!=typeof m.borderstyles[l]&&(g+="border-top:"+m.borderstyles[l]+";"),l="undefined"!=typeof p?p.br:h.br,l&&"undefined"!=typeof m.borderstyles[l]?g+="border-right:"+m.borderstyles[l]+";":e.showGrid&&(c=e.CellInPane(o,i+(h.colspan||1),n,r)?t.crToCoord(i+(h.colspan||1),o):"nomatch",e.cellskip[c]&&(c=e.cellskip[c]),m.cells[c]&&m.cells[c].bl||(g+="border-right:"+e.gridCSS)),l="undefined"!=typeof p?p.bb:h.bb,l&&"undefined"!=typeof m.borderstyles[l]?g+="border-bottom:"+m.borderstyles[l]+";":e.showGrid&&(c=e.CellInPane(o+(h.rowspan||1),i,n,r)?t.crToCoord(i,o+(h.rowspan||1)):"nomatch",e.cellskip[c]&&(c=e.cellskip[c]),m.cells[c]&&m.cells[c].bt||(g+="border-bottom:"+e.gridCSS)),l=h.bl,l&&"undefined"!=typeof m.borderstyles[l]&&(g+="border-left:"+m.borderstyles[l]+";"),h.comment&&(u.title=h.comment,e.showGrid?(e.commentClassName&&(u.className=(u.className?u.className+" ":"")+e.commentClassName),g+=e.commentCSS):(e.commentNoGridClassName&&(u.className=(u.className?u.className+" ":"")+e.commentNoGridClassName),g+=e.commentNoGridCSS)),h.readonly&&(h.comment||(u.title=e.readonlyComment),e.showGrid?(e.readonlyClassName&&(u.className=(u.className?u.className+" ":"")+e.readonlyClassName),g+=e.readonlyCSS):(e.readonlyNoGridClassName&&(u.className=(u.className?u.className+" ":"")+e.readonlyNoGridClassName),g+=e.readonlyNoGridCSS)),u.style.cssText=g,void 0!==h.cssc&&(a?u.className=(u.className?u.className+" ":"")+h.cssc:u.classList.add(h.cssc)),c=e.highlights[v],c&&("cursor"==c&&(c+=e.cursorsuffix),e.highlightTypes[c].className&&(u.className=(u.className?u.className+" ":"")+e.highlightTypes[c].className),t.setStyles(u,e.highlightTypes[c].style)),"yes"==m.colattribs.hide[t.rcColname(i)]&&(u.style.cssText+=";display:none"),"yes"==m.rowattribs.hide[o]&&(u.style.cssText+=";display:none"),u},t.CoordInPane=function(e,t,o,i){var n=e.coordToCR[t];if(!n||!n.row||!n.col)throw"Bad coordToCR for "+t;return e.CellInPane(n.row,n.col,o,i)},t.CellInPane=function(e,t,o,i,n){var r=e.rowpanes[i],a=e.colpanes[n];if(!r||!a)throw"CellInPane called with unknown panes "+i+"/"+n;return t<r.first||t>r.last?!1:o<a.first||o>a.last?!1:!0},t.CreatePseudoElement=function(){return{style:{cssText:""},innerHTML:"",className:""}},t.rcColname=function(e){e>702&&(e=702),1>e&&(e=1);var t=(e-1)%26+65,o=Math.floor((e-1)/26);return o?String.fromCharCode(o+64)+String.fromCharCode(t):String.fromCharCode(t)},t.letters=["A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"],t.crToCoord=function(e,o){var i;1>e&&(e=1),e>702&&(e=702),1>o&&(o=1);var n=(e-1)%26,r=Math.floor((e-1)/26);return i=r?t.letters[r-1]+t.letters[n]+o:t.letters[n]+o},t.coordToCol={},t.coordToRow={},t.coordToCr=function(e){var o,i,n,r=t.coordToRow[e];if(r)return{row:r,col:t.coordToCol[e]};for(o=0,r=0,i=0;i<e.length;i++)n=e.charCodeAt(i),36==n||(57>=n?r=10*r+n-48:n>=97?o=26*o+n-96:n>=65&&(o=26*o+n-64));return t.coordToCol[e]=o,t.coordToRow[e]=r,{row:r,col:o}},t.ParseRange=function(e){var o,i,n,r;return e||(e="A1:A1"),e=e.toUpperCase(),o=e.indexOf(":"),o>=0?(i=e.substring(0,o),n=t.coordToCr(i),n.coord=i,i=e.substring(o+1),r=t.coordToCr(i),r.coord=i):(n=t.coordToCr(e),n.coord=e,r=t.coordToCr(e),r.coord=e),{cr1:n,cr2:r}},t.decodeFromSave=function(e){if("string"!=typeof e)return e;if(-1==e.indexOf("\\"))return e;var t=e.replace(/\\c/g,":");return t=t.replace(/\\n/g,"\n"),t.replace(/\\b/g,"\\")},t.decodeFromAjax=function(e){if("string"!=typeof e)return e;if(-1==e.indexOf("\\"))return e;var t=e.replace(/\\c/g,":");return t=t.replace(/\\n/g,"\n"),t=t.replace(/\\e/g,"]]"),t.replace(/\\b/g,"\\")},t.encodeForSave=function(e){return"string"!=typeof e?e:(-1!=e.indexOf("\\")&&(e=e.replace(/\\/g,"\\b")),-1!=e.indexOf(":")&&(e=e.replace(/:/g,"\\c")),-1!=e.indexOf("\n")&&(e=e.replace(/\n/g,"\\n")),e)},t.special_chars=function(e){return/[&<>"]/.test(e)&&(e=e.replace(/&/g,"&amp;"),e=e.replace(/</g,"&lt;"),e=e.replace(/>/g,"&gt;"),e=e.replace(/"/g,"&quot;")),e},t.Lookup=function(e,t){for(i=0;i<t.length;i++)if(t[i]>e)return i>0?i-1:null;return t.length-1},t.setStyles=function(e,t){var o,i,n,r,a;if(t)for(o=t.split(";"),i=0;i<o.length;i++)n=o[i].indexOf(":"),-1!=n&&(r=o[i].substring(0,n),a=o[i].substring(n+1),r&&a&&(e.style[r]=a))},t.GetViewportInfo=function(){var t={};return e.innerWidth?(t.width=e.innerWidth,t.height=e.innerHeight,t.horizontalScroll=e.pageXOffset,t.verticalScroll=e.pageYOffset):document.documentElement&&document.documentElement.clientWidth?(t.width=document.documentElement.clientWidth,t.height=document.documentElement.clientHeight,t.horizontalScroll=document.documentElement.scrollLeft,t.verticalScroll=document.documentElement.scrollTop):document.body.clientWidth&&(t.width=document.body.clientWidth,t.height=document.body.clientHeight,t.horizontalScroll=document.body.scrollLeft,t.verticalScroll=document.body.scrollTop),t},t.GetElementPosition=function(e){for(var o=0,i=0;e&&"relative"!=t.GetComputedStyle(e,"position");)o+=e.offsetLeft,i+=e.offsetTop,e=e.offsetParent;return{left:o,top:i}},t.GetElementPositionWithScroll=function(e){var t=e.getBoundingClientRect();return{left:t.left,right:t.right,top:t.top,bottom:t.bottom,width:t.width?t.width:t.right-t.left,height:t.height?t.height:t.bottom-t.top}},t.GetElementFixedParent=function(e){for(;e&&"HTML"!=e.tagName;){if("fixed"==t.GetComputedStyle(e,"position"))return e;e=e.parentNode}return!1},t.GetComputedStyle=function(e,t){var o;return o="undefined"!=typeof e.currentStyle?e.currentStyle:document.defaultView.getComputedStyle(e,null),o[t]},t.LookupElement=function(e,t){var o;for(o=0;o<t.length;o++)if(t[o].element==e)return t[o];return null},t.AssignID=function(e,t,o){e.idPrefix&&(t.id=e.idPrefix+o)},t.GetCellContents=function(e,t){var o="",i=e.cells[t];if(i)switch(i.datatype){case"v":o=i.datavalue+"";break;case"t":o="'"+i.datavalue;break;case"f":o="="+i.formula;break;case"c":o=i.formula}return o},t.FormatValueForDisplay=function(e,o,i,n){var r,a,s,l,c=e.attribs,u=(t.Constants,e.cells[i]);u||(u=new t.Cell(i)),l=o,a=u.valuetype||"",s=a.substring(1),valueinputwidget=a.charAt(1);var d=a.substring(2),h=null,p=null;if(a=a.charAt(0),u.errors||"e"==a)return l=u.errors||s||"Error in cell";if("t"==a){if(r=e.valueformats[u.textvalueformat-0]||e.valueformats[c.defaulttextvalueformat-0]||"","formula"==r)return l="f"==u.datatype?t.special_chars("="+u.formula)||"&nbsp;":"c"==u.datatype?t.special_chars("'"+u.formula)||"&nbsp;":t.special_chars("'"+l)||"&nbsp;";var h=l;l=t.format_text_for_display(l,u.valuetype,r,e,n,u.nontextvalueformat);var p=l}else if("n"==a){if(r=u.nontextvalueformat,(null==r||""==r)&&(r=c.defaultnontextvalueformat),r=e.valueformats[r-0],(null==r||"none"==r)&&(r=""),"formula"==r)return l="f"==u.datatype?t.special_chars("="+u.formula)||"&nbsp;":"c"==u.datatype?t.special_chars("'"+u.formula)||"&nbsp;":t.special_chars("'"+l)||"&nbsp;";if("forcetext"==r)return l="f"==u.datatype?t.special_chars("="+u.formula)||"&nbsp;":"c"==u.datatype?t.special_chars(u.formula)||"&nbsp;":t.special_chars(l)||"&nbsp;";var h=l;l=t.format_number_for_display(l,u.valuetype,r);var p=l}else l="&nbsp;";if("i"==valueinputwidget&&null!=h&&null!=p){var f=e.ioParameterList[i],m=t.Formula.FunctionList[d];if(m){var g=m[5],v=0==h?"":"checked";g=g.replace(/<%=checked%>/g,v),g=g.replace(/<%=formated_value%>/g,p),g=g.replace(/<%=display_value%>/g,h);var b;if(f){for(var y=0;y<f.length;y++){b="coord"==f[y].type?e.GetAssuredCell(f[y].value).datavalue:f[y].value;var C=new RegExp("<%=parameter"+y+"_value%>","g");g=g.replace(C,b)}if(f.html)for(var w=0;w<f.html.length;w++){var C=new RegExp("<%=html"+w+"_value%>","g");g=g.replace(C,f.html[w])}f.css&&(g=g.replace(/^(<\w+)(\W)/,"$1 style='"+f.css+"'$2"))}return g.replace(/<%=cell_reference%>/g,i)}return"error:Widget HTML missing"}return l},t.format_text_for_display=function(e,o,i,n,r,a){var i,s,l,c,u,d;return s=o.substring(1),d=e,("none"==i||null==i)&&(i=""),/^(text-|custom|hidden)/.test(i)||(i=""),(""==i||"General"==i)&&("h"==s&&(i="text-html"),("w"==s||"r"==s)&&(i="text-wiki"),"l"==s&&(i="text-link"),s||(i="text-plain")),"text-html"==i||(t.Callbacks.expand_wiki&&/^text-wiki/.test(i)?d=t.Callbacks.expand_wiki(d,n,r,i):"text-wiki"==i?d=t.Callbacks.expand_markup&&t.Callbacks.expand_markup(d,n,r)||t.special_chars("wiki-text:"+d):"text-url"==i?(l=t.special_chars(d),c=encodeURI(d),d='<a href="'+c+'">'+l+"</a>"):"text-link"==i?d=t.expand_text_link(d,n,r,i):"text-image"==i?(c=encodeURI(d),d='<img src="'+c+'">'):"text-custom:"==i.substring(0,12)?(l=t.special_chars(d),l=l.replace(/  /g,"&nbsp; "),l=l.replace(/\n/g,"<br>"),c=encodeURI(d),u={},u.r=d,u.s=l,u.u=c,d=i.substring(12),d=d.replace(/@(r|s|u)/g,function(e,t){return u[t]})):"custom"==i.substring(0,6)?(d=t.special_chars(d),d=d.replace(/  /g,"&nbsp; "),d=d.replace(/\n/g,"<br>"),d+=" (custom format)"):"hidden"==i?d="&nbsp;":null!=a&&""!=a&&"none"!=n.valueformats[a-0]&&""!=n.valueformats[a-0]?(i=n.valueformats[a],d=t.format_number_for_display(e,o,i)):(d=t.special_chars(d),d=d.replace(/  /g,"&nbsp; "),d=d.replace(/\n/g,"<br>"))),d},t.format_number_for_display=function(e,o,i){var n,r,a=t.Constants;return n=e-0,r=o.substring(1),("Auto"==i||""==i)&&(i="%"==r?a.defaultFormatp:"$"==r?a.defaultFormatc:"dt"==r?a.defaultFormatdt:"d"==r?a.defaultFormatd:"t"==r?a.defaultFormatt:"l"==r?"logical":"General"),"logical"==i?n?a.defaultDisplayTRUE:a.defaultDisplayFALSE:"hidden"==i?"&nbsp;":t.FormatNumber.formatNumberWithFormat(e,i,"")},t.DetermineValueType=function(e){var o,i,n,r,a,s,l,c,u,d,h=e+"",p="t";return o=h.replace(/^\s+/,""),o=o.replace(/\s+$/,""),0==h.length?p="":h.match(/^\s+$/)||(o.match(/^[-+]?\d*(?:\.)?\d*(?:[eE][-+]?\d+)?$/)?(h=o-0,isNaN(h)?h=e+"":p="n"):o.match(/^[-+]?\d*(?:\.)?\d*\s*%$/)?(h=(o.slice(0,-1)-0)/100,p="n%"):o.match(/^[-+]?\$\s*\d*(?:\.)?\d*\s*$/)&&o.match(/\d/)?(h=o.replace(/\$/,"")-0,p="n$"):o.match(/^[-+]?(\d*,\d*)+(?:\.)?\d*$/)?(h=o.replace(/,/g,"")-0,p="n"):o.match(/^[-+]?(\d*,\d*)+(?:\.)?\d*\s*%$/)?(h=(o.replace(/[%,]/g,"")-0)/100,p="n%"):o.match(/^[-+]?\$\s*(\d*,\d*)+(?:\.)?\d*$/)&&o.match(/\d/)?(h=o.replace(/[\$,]/g,"")-0,p="n$"):(i=h.match(/^(\d{1,2})[\/\-](\d{1,2})[\/\-](\d{1,4})\s*$/))?(n=i[3]-0,n=1e3>n?n+2e3:n,h=0===navigator.language.indexOf("fr")?t.FormatNumber.convert_date_gregorian_to_julian(n,i[2]-0,i[1]-0)-2415019:t.FormatNumber.convert_date_gregorian_to_julian(n,i[1]-0,i[2]-0)-2415019,p="nd"):(i=h.match(/^(\d{4})[\/\-](\d{1,2})[\/\-](\d{1,2})\s*$/))?(n=i[1]-0,n=1e3>n?n+2e3:n,h=t.FormatNumber.convert_date_gregorian_to_julian(n,i[2]-0,i[3]-0)-2415019,p="nd"):(i=h.match(/^(\d{4})[\/\-](\d{1,2})[\/\-](\d{1,2}) (\d{1,2}):(\d{1,2})\s*$/))?(n=i[1]-0,n=1e3>n?n+2e3:n,r=i[4]-0,a=i[5]-0,h=t.FormatNumber.convert_date_gregorian_to_julian(n,i[2]-0,i[3]-0)-2415019,p="nd",24>r&&60>a&&(h+=r/24+a/1440,p="ndt")):(i=h.match(/^(\d{4})[\/\-](\d{1,2})[\/\-](\d{1,2}) (\d{1,2}):(\d{1,2}):(\d{1,2})\s*$/))?(n=i[1]-0,n=1e3>n?n+2e3:n,r=i[4]-0,a=i[5]-0,s=i[6]-0,h=t.FormatNumber.convert_date_gregorian_to_julian(n,i[2]-0,i[3]-0)-2415019,p="nd",24>r&&60>a&&60>s&&(h+=r/24+a/1440+s/86400,p="ndt")):(i=h.match(/^(\d{1,2}):(\d{1,2})\s*$/))?(r=i[1]-0,a=i[2]-0,24>r&&60>a&&(h=r/24+a/1440,p="nt")):(i=h.match(/^(\d{1,2}):(\d{1,2}):(\d{1,2})\s*$/))?(r=i[1]-0,a=i[2]-0,s=i[3]-0,24>r&&60>a&&60>s&&(h=r/24+a/1440+s/86400,p="nt")):(i=h.match(/^\s*([-+]?\d+) (\d+)\/(\d+)\s*$/))?(u=i[1]-0,c=i[2]-0,l=i[3]-0,l&&l>0&&(h=u+(0>u?-c/l:c/l),p="n")):(d=t.InputConstants[h.toUpperCase()])?(c=d.indexOf(","),h=d.substring(0,c)-0,p=d.substring(c+1)):o.length>7&&"http://"==o.substring(0,7).toLowerCase()?(h=o,p="tl"):o.match(/<([A-Z][A-Z0-9]*)\b[^>]*>[\s\S]*?<\/\1>/i)&&(h=o,p="th")),{value:h,type:p}},t.InputConstants={TRUE:"1,nl",FALSE:"0,nl","#N/A":"0,e#N/A","#NULL!":"0,e#NULL!","#NUM!":"0,e#NUM!","#DIV/0!":"0,e#DIV/0!","#VALUE!":"0,e#VALUE!","#REF!":"0,e#REF!","#NAME?":"0,e#NAME?"},t.default_expand_markup=function(e){var o=e;return o=t.special_chars(o),o=o.replace(/  /g,"&nbsp; "),o=o.replace(/\n/g,"<br>")},t.expand_text_link=function(e,o,i,n){var r,a,s,l=t.Constants,c="",u=t.ParseCellLinkText(e+"");return r=u.desc?t.special_chars(u.desc):u.pagename?l.defaultPageLinkFormatString:l.defaultLinkFormatString,e.length>7&&"http://"==e.substring(0,7).toLowerCase()&&">"!=e.charAt(e.length-1)&&(r=r.substring(7)),a=u.newwin||!i?' target="_blank"':"",u.pagename?t.Callbacks.MakePageLink&&(c=t.Callbacks.MakePageLink(u.pagename,u.workspacename,i,n)):c=encodeURI(u.url),s='<a href="'+c+'"'+a+">"+r+"</a>"},t.ParseCellLinkText=function(e){var t={url:"",desc:"",newwin:!1,pagename:"",workspace:""},o=!1,i=e.length-1,n=0,r=e.lastIndexOf("<"),a=e.lastIndexOf("["),s=e.lastIndexOf("{"),l=-1;return">"==e.charAt(i)&&-1!=r||"]"==e.charAt(i)&&-1!=a||!("}"!=e.charAt(i)||"]"!=e.charAt(i-1)||-1==s||-1==a||s>a)?(">"==e.charAt(i)?(l=r-1,r>0&&"<"==e.charAt(l)&&">"==e.charAt(i-1)&&(l--,i--,t.newwin=!0)):"]"==e.charAt(i)?(l=a-1,o=!0,a>0&&"["==e.charAt(l)&&"]"==e.charAt(i-1)&&(l--,i--,t.newwin=!0)):"}"==e.charAt(i)&&(l=s-1,o=!0,wsend=a,i--,a>0&&"["==e.charAt(a-1)&&"]"==e.charAt(i-1)&&(wsend=a-1,i--,t.newwin=!0)," "==e.charAt(wsend-1)&&wsend--,t.workspace=e.substring(s+1,wsend)||"")," "==e.charAt(l)&&l--,'"'==e.charAt(n)&&'"'==e.charAt(l)&&(n++,l--)):(i++,l=i),o?t.pagename=e.substring(a+1,i)||"":t.url=e.substring(r+1,i)||"",l>=n&&(t.desc=e.substring(n,l+1)),t},t.ConvertSaveToOtherFormat=function(e,o,i){var n,r,a,s,l,c,u,d,h,p,f="";if("scsave"==o)return e;if(""==e)return"";if(n=new t.Sheet,n.ParseSheetSave(e),i)throw"SocialCalc.ConvertSaveToOtherFormat: Not doing recalc.";if(a=n.copiedfrom?t.ParseRange(n.copiedfrom):{cr1:{row:1,col:1},cr2:{row:n.attribs.lastrow,col:n.attribs.lastcol}},"html"==o)return r=new t.RenderContext(n),n.copiedfrom&&(r.rowpanes[0]={first:a.cr1.row,last:a.cr2.row},r.colpanes[0]={first:a.cr1.col,last:a.cr2.col}),s=document.createElement("div"),l=r.RenderSheet(null,r.defaultHTMLlinkstyle),s.appendChild(l),delete r,delete n,f=s.innerHTML,delete l,delete s,f;for(c=a.cr1.row;c<=a.cr2.row;c++){for(u=a.cr1.col;u<=a.cr2.col;u++)d=t.crToCoord(u,c),h=n.GetAssuredCell(d),p=h.errors?h.errors:h.datavalue+"","csv"==o?(-1!=p.indexOf('"')&&(p=p.replace(/"/g,'""')),/[, \n"]/.test(p)&&(p='"'+p+'"'),u>a.cr1.col&&(p=","+p)):"tab"==o&&(-1!=p.indexOf("\n")&&(-1!=p.indexOf('"')&&(p=p.replace(/"/g,'""')),p='"'+p+'"'),u>a.cr1.col&&(p="	"+p)),f+=p;f+="\n"}return f},t.ConvertOtherFormatToSave=function(e,o){var i,n,r,a,s,l,c,u,d,h,p,f,m="",g=function(){h++,h>f&&(f=h),p=t.crToCoord(h,d),t.SetConvertedCell(i,p,s),s=""};if("scsave"==o)return e;if(i=new t.Sheet,n=e.split(/\r\n|\n/),f=0,"csv"==o){for(d=0,l=!1,r=0;r<n.length&&(r!=n.length-1||""!=n[r]);r++)for(l?s+="\n":(s="",d++,h=0),a=n[r],c=0;c<a.length;c++)u=a.charAt(c),'"'!=u?(","!=u||l?s+=u:g(),c!=a.length-1||l||g()):l?c<a.length-1&&'"'==a.charAt(c+1)?(c++,s+='"'):(l=!1,c==a.length-1&&g()):l=!0;f>0&&(i.attribs.lastrow=d,i.attribs.lastcol=f,m=i.CreateSheetSave("A1:"+t.crToCoord(f,d)))}if("tab"==o){for(d=0,l=!1,r=0;r<n.length&&(r!=n.length-1||""!=n[r]);r++)for(l?s+="\n":(s="",d++,h=0),a=n[r],c=0;c<a.length;c++){if(u=a.charAt(c),'"'==u){if(l){c<a.length-1?'"'==a.charAt(c+1)?(c++,s+='"'):"	"==a.charAt(c+1)&&(c++,l=!1,g()):(l=!1,g());continue}if(""==s){l=!0;continue}}"	"!=u||l?s+=u:g(),c!=a.length-1||l||g()}f>0&&(i.attribs.lastrow=d,i.attribs.lastcol=f,m=i.CreateSheetSave("A1:"+t.crToCoord(f,d)))}return m},t.SetConvertedCell=function(e,o,i){var n,r;n=e.GetAssuredCell(o),r=t.DetermineValueType(i),"n"==r.type&&r.value==i?(n.datatype="v",n.valuetype="n",n.datavalue=r.value):"t"==r.type.charAt(0)?(n.datatype="t",n.valuetype=r.type,n.datavalue=r.value):(n.datatype="c",n.valuetype=r.type,n.datavalue=r.value,n.formula=i)};var t;t||(t={}),t.TableEditor=function(o){var i=t.Constants;this.context=o,this.toplevel=null,this.fullgrid=null,this.noEdit=!1,this.width=null,this.tablewidth=null,this.height=null,this.tableheight=null,this.inputBox=null,this.inputEcho=null,this.verticaltablecontrol=null,this.horizontaltablecontrol=null,this.logo=null,this.cellhandles=null,this.timeout=null,this.busy=!1,this.ensureecell=!1,this.deferredCommands=[],this.deferredEmailCommands=[],this.gridposition=null,this.headposition=null,this.firstscrollingrow=null,this.firstscrollingrowtop=null,this.lastnonscrollingrow=null,this.lastvisiblerow=null,this.firstscrollingcol=null,this.firstscrollingcolleft=null,this.lastnonscrollingcol=null,this.lastvisiblecol=null,this.rowpositions=[],this.colpositions=[],this.rowheight=[],this.colwidth=[],this.ecell=null,this.state="start",this.workingvalues={},this.imageprefix=i.defaultImagePrefix,this.idPrefix=i.defaultTableEditorIDPrefix,this.pageUpDnAmount=i.defaultPageUpDnAmount,this.recalcFunction=function(e){return e.context.sheetobj.RecalcSheet?void e.context.sheetobj.RecalcSheet(t.EditorSheetStatusCallback,e):null},this.ctrlkeyFunction=function(o,i){var n,r,a,s,l,c;switch(i){case"[ctrl-a]":return o.MoveECell("A1"),o.RangeAnchor("A1"),o.RangeExtend(t.crToCoord(o.context.sheetobj.attribs.lastcol,o.context.sheetobj.attribs.lastrow)),!1;case"[ctrl-c]":case"[ctrl-x]":return n=o.pasteTextarea,n.value="",r=t.GetEditorCellElement(o,o.ecell.row,o.ecell.col),r&&(a=t.GetElementPosition(r.element),n.style.left=a.left-1+"px",n.style.top=a.top-1+"px"),l=o.range.hasrange?t.crToCoord(o.range.left,o.range.top)+":"+t.crToCoord(o.range.right,o.range.bottom):o.ecell.coord,c=t.ConvertSaveToOtherFormat(t.CreateSheetSave(o.context.sheetobj,l),"tab"),s="[ctrl-c]"==i||o.noEdit||o.ECellReadonly()?"copy "+l+" formulas":"cut "+l+" formulas",o.EditorScheduleSheetCommands(s,!0,!1),n.style.display="block",n.value=c,n.focus(),n.select(),e.setTimeout(function(){var e=o.pasteTextarea;e.blur(),e.style.display="none",t.KeyboardFocus()},200),!0;case"[ctrl-v]":return o.noEdit||o.ECellReadonly()?!0:(n=o.pasteTextarea,n.value="",r=t.GetEditorCellElement(o,o.ecell.row,o.ecell.col),r&&(a=t.GetElementPosition(r.element),n.style.left=a.left-1+"px",n.style.top=a.top-1+"px"),n.style.display="block",n.value="",n.focus(),e.setTimeout(function(){var e=o.pasteTextarea,i=e.value;e.blur(),e.style.display="none";var n="";if(o.pastescclipboard)o.pastescclipboard=!1;else{var r=t.ConvertSaveToOtherFormat(t.Clipboard.clipboard,"tab");i=i.replace(/\r\n/g,"\n"),i==r||i.length-r.length==1&&i.substring(0,i.length-1)==r||(n="loadclipboard "+t.encodeForSave(t.ConvertOtherFormatToSave(i,"tab"))+"\n")}var a;if(o.range.hasrange){var s=new t.Sheet;s.ParseSheetSave(t.Clipboard.clipboard);var l=s.copiedfrom.match(/(.+):(.+)/);a=null!==l&&l[1]===l[2]?t.crToCoord(o.range.left,o.range.top)+":"+t.crToCoord(o.range.right,o.range.bottom):t.crToCoord(o.range.left,o.range.top)}else a=o.ecell.coord;n+="paste "+a+" formulas",o.EditorScheduleSheetCommands(n,!0,!1),t.KeyboardFocus()},200),!0);case"[ctrl-z]":return o.EditorScheduleSheetCommands("undo",!0,!1),!1;case"[ctrl-s]":if(!t.Constants.AllowCtrlS)break;return e.setTimeout(function(){var i=o.context.sheetobj,n=i.GetAssuredCell(o.ecell.coord),r=n.nontextvalueformat?i.valueformats[n.nontextvalueformat-0]||"":"",a=e.prompt("Advanced Feature:\n\nCustom Numeric Format or Command",r);if(null!=a){if(a.match(/^cmd:/))s=a.substring(4);else{if(a.match(/^edit:/))return s=a.substring(5),void(t.CtrlSEditor&&t.CtrlSEditor(s));l=o.range.hasrange?t.crToCoord(o.range.left,o.range.top)+":"+t.crToCoord(o.range.right,o.range.bottom):o.ecell.coord,s="set "+l+" nontextvalueformat "+a}o.EditorScheduleSheetCommands(s,!0,!1)}},200),!1}return!0},o.sheetobj.statuscallback=t.EditorSheetStatusCallback,o.sheetobj.statuscallbackparams=this,this.StatusCallback={},this.MoveECellCallback={},this.RangeChangeCallback={},this.SettingsCallbacks={},this.ecell={coord:"A1",row:1,col:1},o.highlights[this.ecell.coord]="cursor",this.range={hasrange:!1},this.range2={hasrange:!1}},t.TableEditor.prototype.CreateTableEditor=function(e,o){return t.CreateTableEditor(this,e,o)},t.TableEditor.prototype.ResizeTableEditor=function(e,o){return t.ResizeTableEditor(this,e,o)},t.TableEditor.prototype.SaveEditorSettings=function(){return t.SaveEditorSettings(this)},t.TableEditor.prototype.LoadEditorSettings=function(e,o){return t.LoadEditorSettings(this,e,o)},t.TableEditor.prototype.EditorRenderSheet=function(){t.EditorRenderSheet(this)},t.TableEditor.prototype.EditorScheduleSheetCommands=function(e,o,i){t.EditorScheduleSheetCommands(this,e,o,i)},t.TableEditor.prototype.ScheduleSheetCommands=function(e,t){this.context.sheetobj.ScheduleSheetCommands(e,t)},t.TableEditor.prototype.SheetUndo=function(){this.context.sheetobj.SheetUndo()},t.TableEditor.prototype.SheetRedo=function(){this.context.sheetobj.SheetRedo()},t.TableEditor.prototype.EditorStepSet=function(e,o){t.EditorStepSet(this,e,o)},t.TableEditor.prototype.GetStatuslineString=function(e,o,i){return t.EditorGetStatuslineString(this,e,o,i)},t.TableEditor.prototype.EditorMouseRegister=function(){return t.EditorMouseRegister(this)},t.TableEditor.prototype.EditorMouseUnregister=function(){return t.EditorMouseUnregister(this)},t.TableEditor.prototype.EditorMouseRange=function(e){return t.EditorMouseRange(this,e)},t.TableEditor.prototype.EditorProcessKey=function(e,o){return t.EditorProcessKey(this,e,o)},t.TableEditor.prototype.EditorAddToInput=function(e,o){return t.EditorAddToInput(this,e,o)},t.TableEditor.prototype.DisplayCellContents=function(){return t.EditorDisplayCellContents(this)},t.TableEditor.prototype.EditorSaveEdit=function(e){return t.EditorSaveEdit(this,e)},t.TableEditor.prototype.EditorApplySetCommandsToRange=function(e,o){return t.EditorApplySetCommandsToRange(this,e,o)},t.TableEditor.prototype.MoveECellWithKey=function(e){return t.MoveECellWithKey(this,e)},t.TableEditor.prototype.MoveECell=function(e){return t._app?"A1":t.MoveECell(this,e)},t.TableEditor.prototype.ReplaceCell=function(e,o,i){t.ReplaceCell(this,e,o,i)},t.TableEditor.prototype.UpdateCellCSS=function(e,o,i){t.UpdateCellCSS(this,e,o,i)},t.TableEditor.prototype.SetECellHeaders=function(e){t.SetECellHeaders(this,e)},t.TableEditor.prototype.EnsureECellVisible=function(){t.EnsureECellVisible(this)},t.TableEditor.prototype.ECellReadonly=function(e){return t.ECellReadonly(this,e)},t.TableEditor.prototype.RangeAnchor=function(e){t.RangeAnchor(this,e)},t.TableEditor.prototype.RangeExtend=function(e){t.RangeExtend(this,e)},t.TableEditor.prototype.RangeRemove=function(){t.RangeRemove(this)},t.TableEditor.prototype.Range2Remove=function(){t.Range2Remove(this)},t.TableEditor.prototype.FitToEditTable=function(){t.FitToEditTable(this)},t.TableEditor.prototype.CalculateEditorPositions=function(){t.CalculateEditorPositions(this)},t.TableEditor.prototype.ScheduleRender=function(){this.ScheduleRender(!0)},t.TableEditor.prototype.ScheduleRender=function(e){t._app&&1==e&&(this.context.sheetobj.widgetsClean=!1),t.ScheduleRender(this)},t.TableEditor.prototype.DoRenderStep=function(){t.DoRenderStep(this)},t.TableEditor.prototype.SchedulePositionCalculations=function(){t.SchedulePositionCalculations(this)},t.TableEditor.prototype.DoPositionCalculations=function(){t.DoPositionCalculations(this)},t.TableEditor.prototype.CalculateRowPositions=function(e,o,i){return t.CalculateRowPositions(this,e,o,i)},t.TableEditor.prototype.CalculateColPositions=function(e,o,i){return t.CalculateColPositions(this,e,o,i)},t.TableEditor.prototype.ScrollRelative=function(e,o){t.ScrollRelative(this,e,o)},t.TableEditor.prototype.ScrollRelativeBoth=function(e,o){t.ScrollRelativeBoth(this,e,o)},t.TableEditor.prototype.PageRelative=function(e,o){t.PageRelative(this,e,o)},t.TableEditor.prototype.LimitLastPanes=function(){t.LimitLastPanes(this)},t.TableEditor.prototype.ScrollTableUpOneRow=function(){return t.ScrollTableUpOneRow(this)},t.TableEditor.prototype.ScrollTableDownOneRow=function(){return t.ScrollTableDownOneRow(this)},t.TableEditor.prototype.ScrollTableLeftOneCol=function(){return t.ScrollTableLeftOneCol(this)},t.TableEditor.prototype.ScrollTableRightOneCol=function(){return t.ScrollTableRightOneCol(this)},t.TableEditor.prototype.StopPropagation=function(){return t.StopPropagation(this)},t.TableEditor.prototype.SetMouseMoveUp=function(){return t.SetMouseMoveUp(this)},t.TableEditor.prototype.RemoveMouseMoveUp=function(){return t.RemoveMouseMoveUp(this)},t.CreateTableEditor=function(o,i,n){var r=t.Constants,a=t.AssignID;o.toplevel=document.createElement("div"),o.toplevel.style.position="relative",a(o,o.toplevel,"toplevel"),o.width=i,o.height=n,o.griddiv=document.createElement("div"),o.tablewidth=Math.max(0,i-r.defaultTableControlThickness),o.tableheight=Math.max(0,n-r.defaultTableControlThickness),o.griddiv.style.width=o.tablewidth+"px",o.griddiv.style.height=o.tableheight+"px",o.griddiv.style.overflow="hidden",o.griddiv.style.cursor="default",r.cteGriddivClass&&(o.griddiv.className=r.cteGriddivClass),a(o,o.griddiv,"griddiv"),o.FitToEditTable(),o.EditorRenderSheet(),o.griddiv.appendChild(o.fullgrid),o.verticaltablecontrol=new t.TableControl(o,!0,o.tableheight),o.verticaltablecontrol.CreateTableControl(),a(o,o.verticaltablecontrol.main,"tablecontrolv"),o.horizontaltablecontrol=new t.TableControl(o,!1,o.tablewidth),o.horizontaltablecontrol.CreateTableControl(),a(o,o.horizontaltablecontrol.main,"tablecontrolh");var s,l,c,u,d;return s=document.createElement("table"),o.layouttable=s,s.cellSpacing=0,s.cellPadding=0,a(o,s,"layouttable"),l=document.createElement("tbody"),s.appendChild(l),c=document.createElement("tr"),l.appendChild(c),u=document.createElement("td"),u.appendChild(o.griddiv),c.appendChild(u),1!=t._app&&(u=document.createElement("td"),u.appendChild(o.verticaltablecontrol.main),c.appendChild(u)),c=document.createElement("tr"),l.appendChild(c),1!=t._app&&(u=document.createElement("td"),u.appendChild(o.horizontaltablecontrol.main),c.appendChild(u)),u=document.createElement("td"),u.style.background=t._app?"url("+o.imageprefix+"logo.gif) no-repeat right center":"url("+o.imageprefix+"logo.gif) no-repeat center center",u.innerHTML="<div style='cursor:pointer;font-size:1px;'><img src='"+o.imageprefix+"1x1.gif' border='0' width='18' height='18'></div>",c.appendChild(u),o.logo=u,a(o,o.logo,"logo"),u.firstChild.firstChild.title="SocialCalc",o.toplevel.appendChild(o.layouttable),o.noEdit||(o.inputEcho=new t.InputEcho(o),a(o,o.inputEcho.main,"inputecho")),o.cellhandles=new t.CellHandles(o),d=document.createElement("textarea"),t.setStyles(d,"display:none;position:absolute;height:1px;width:1px;opacity:0;filter:alpha(opacity=0);"),d.value="",o.pasteTextarea=d,a(o,o.pasteTextarea,"pastetextarea"),navigator.userAgent.match(/Safari\//)&&!navigator.userAgent.match(/Chrome\//)&&(e.removeEventListener("beforepaste",t.SafariPasteFunction,!1),e.addEventListener("beforepaste",t.SafariPasteFunction,!1),e.removeEventListener("beforecopy",t.SafariPasteFunction,!1),e.addEventListener("beforecopy",t.SafariPasteFunction,!1),e.removeEventListener("beforecut",t.SafariPasteFunction,!1),e.addEventListener("beforecut",t.SafariPasteFunction,!1)),o.toplevel.appendChild(o.pasteTextarea),t.MouseWheelRegister(o.toplevel,{WheelMove:t.EditorProcessMouseWheel,editor:o}),t.KeyboardSetFocus(o),t.EditorSheetStatusCallback(null,"startup",null,o),o.toplevel},t.SafariPasteFunction=function(e){e.preventDefault()},t.ResizeTableEditor=function(e,o,i){var n=t.Constants;e.width=o,e.height=i,e.toplevel.style.width=o+"px",e.toplevel.style.height=i+"px",e.tablewidth=t._app?Math.max(0,o):Math.max(0,o-n.defaultTableControlThickness),e.tableheight=Math.max(0,i-n.defaultTableControlThickness),e.griddiv.style.width=e.tablewidth+"px",e.griddiv.style.height=e.tableheight+"px",e.verticaltablecontrol.main.style.height=e.tableheight+"px",e.horizontaltablecontrol.main.style.width=e.tablewidth+"px",e.FitToEditTable(),e.ScheduleRender()},t.SaveEditorSettings=function(e){var t,o,i=e.context,n=e.range,r="";for(r+="version:1.0\n",t=0;t<i.rowpanes.length;t++)r+="rowpane:"+t+":"+i.rowpanes[t].first+":"+i.rowpanes[t].last+"\n";for(t=0;t<i.colpanes.length;t++)r+="colpane:"+t+":"+i.colpanes[t].first+":"+i.colpanes[t].last+"\n";e.ecell&&(r+="ecell:"+e.ecell.coord+"\n"),n.hasrange&&(r+="range:"+n.anchorcoord+":"+n.top+":"+n.bottom+":"+n.left+":"+n.right+"\n");
-for(o in e.SettingsCallbacks)r+=e.SettingsCallbacks[o].save(e,o);return r},t.LoadEditorSettings=function(e,o,i){var n,r,a,s,l,c,u,d,h,p=o.split(/\r\n|\n/),f=[],m=e.context;for(m.rowpanes=[{first:1,last:1}],m.colpanes=[{first:1,last:1}],e.ecell=null,e.range={hasrange:!1},e.range2={hasrange:!1},h=e.range,m.highlights={},d=m.highlights,r=0;r<p.length;r++)switch(n=p[r],f=n.split(":"),u=f[0]){case"version":break;case"rowpane":m.rowpanes[f[1]-0]={first:f[2]-0,last:f[3]-0};break;case"colpane":m.colpanes[f[1]-0]={first:f[2]-0,last:f[3]-0};break;case"ecell":e.ecell=t.coordToCr(f[1]),e.ecell.coord=f[1],d[f[1]]="cursor";break;case"range":for(h.hasrange=!0,h.anchorcoord=f[1],a=t.coordToCr(h.anchorcoord),h.anchorrow=a.row,h.anchorcol=a.col,h.top=f[2]-0,h.bottom=f[3]-0,h.left=f[4]-0,h.right=f[5]-0,s=h.top;s<=h.bottom;s++)for(l=h.left;l<=h.right;l++)c=t.crToCoord(l,s),"cursor"!=d[c]&&(d[c]="range");break;default:e.SettingsCallbacks[u]&&e.SettingsCallbacks[u].load(e,u,n,i)}},t.EditorRenderSheet=function(e){e.EditorMouseUnregister();var o=e.context.sheetobj;if(null!=o.reRenderCellList&&t._app&&o.widgetsClean===!0){for(var i in o.reRenderCellList){var n=o.reRenderCellList[i],r=o.cells[n].valuetype;("i"!=r.charAt(1)||r!=o.cells[n].prevvaluetype)&&(cr=t.coordToCr(n),cell=t.GetEditorCellElement(e,cr.row,cr.col),null!=cell&&e.ReplaceCell(cell,cr.row,cr.col))}o.reRenderCellList=[]}else e.fullgrid=e.context.RenderSheet(e.fullgrid),null!=o.reRenderCellList&&t._app&&(o.widgetsClean=!0,o.reRenderCellList=[]);e.ecell&&e.SetECellHeaders("selected"),t.AssignID(e,e.fullgrid,"fullgrid"),t._app||(e.fullgrid.className="te_download"),e.EditorMouseRegister()},t.EditorScheduleSheetCommands=function(e,o,i,n){if("start"==e.state||n){if(e.busy&&!n)return void e.deferredCommands.push({cmdstr:o,saveundo:i});var r=o.split(" ");switch(r[0]){case"recalc":case"redisplay":e.context.sheetobj.ScheduleSheetCommands(o,!1);break;case"undo":t._app&&(e.context.sheetobj.widgetsClean=!1),e.SheetUndo();break;case"redo":t._app&&(e.context.sheetobj.widgetsClean=!1),e.SheetRedo();break;case"setemailparameters":t.TriggerIoAction.Email(r[1],r[2]);break;default:e.context.sheetobj.ScheduleSheetCommands(o,i)}}},t.EditorSheetStatusCallback=function(e,o,i,n){var r,a,s,l=n.context.sheetobj,c=function(e){for(r in n.StatusCallback)n.StatusCallback[r].func&&n.StatusCallback[r].func(n,e,i,n.StatusCallback[r].params)};switch(o){case"startup":break;case"cmdstart":n.busy=!0,l.celldisplayneeded="";break;case"cmdextension":break;case"cmdend":if(c(o),l.changedrendervalues&&(n.context.PrecomputeSheetFontsAndLayouts(),n.context.CalculateCellSkipData(),l.changedrendervalues=!1),l.celldisplayneeded&&!l.renderneeded&&l.cells[l.celldisplayneeded]&&"e#N/A"!=l.cells[l.celldisplayneeded].valuetype&&(cr=t.coordToCr(l.celldisplayneeded),a=t.GetEditorCellElement(n,cr.row,cr.col),n.ReplaceCell(a,cr.row,cr.col)),n.deferredCommands.length)return s=n.deferredCommands.shift(),void n.EditorScheduleSheetCommands(s.cmdstr,s.saveundo,!0);if(l.attribs.needsrecalc&&("off"!=l.attribs.recalc||l.recalconce)&&n.recalcFunction?(n.FitToEditTable(),l.renderneeded=!1,l.recalconce&&delete l.recalconce,n.recalcFunction(n)):l.renderneeded?(n.FitToEditTable(),l.renderneeded=!1,n.ScheduleRender(!1)):n.SchedulePositionCalculations(),"col"==l.hiddencolrow&&null!==n.ecell){for(var u=n.ecell.col;"yes"==l.colattribs.hide[t.rcColname(u)];)u++;var d=t.crToCoord(u,n.ecell.row);n.MoveECell(d),l.hiddencolrow=""}if("row"==l.hiddencolrow&&null!==n.ecell){for(var h=n.ecell.row;"yes"==l.rowattribs.hide[h];)h++;var d=t.crToCoord(n.ecell.col,h);n.MoveECell(d),l.hiddencolrow=""}return;case"calcstart":n.busy=!0;break;case"calccheckdone":case"calcorder":case"calcstep":case"calcloading":case"calcserverfunc":break;case"calcfinished":return c(o),void n.ScheduleRender(!1);case"schedrender":n.busy=!0;break;case"renderdone":break;case"schedposcalc":n.busy=!0;break;case"doneposcalc":if(n.deferredEmailCommands.length){c(o);var p=n.deferredEmailCommands.shift();return void n.EditorScheduleSheetCommands(p.cmdstr,p.saveundo,!0)}return void(n.deferredCommands.length?(c(o),s=n.deferredCommands.shift(),n.EditorScheduleSheetCommands(s.cmdstr,s.saveundo,!0)):(n.busy=!1,c(o),"start"==n.state&&n.DisplayCellContents()));case"emailing":case"confirmemailsent":break;default:alert("Unknown status: "+o)}c(o)},t.EditorGetStatuslineString=function(e,o,i,n){var r,a,s,l,c,u,d,h,p=t.Constants;switch(a="",o){case"moveecell":case"rangechange":case"startup":break;case"cmdstart":n.command=!0,document.body.style.cursor="progress",e.griddiv.style.cursor="progress",a=p.s_statusline_executing;break;case"cmdextension":a="Command Extension: "+i;break;case"cmdend":n.command=!1;break;case"schedrender":a=p.s_statusline_displaying;break;case"renderdone":a=" ";break;case"schedposcalc":a=p.s_statusline_displaying;break;case"cmdendnorender":case"doneposcalc":document.body.style.cursor="default",e.griddiv.style.cursor="default","sent"==n.emailing&&(a=n.emailreponse,n.emailreponse="",n.emailing="done");break;case"calcorder":a=p.s_statusline_ordering+Math.floor(100*i.count/(i.total||1))+"%";break;case"calcstep":a=p.s_statusline_calculating+Math.floor(100*i.count/(i.total||1))+"%";break;case"calcloading":a=p.s_statusline_calculatingls+": "+i.sheetname;break;case"calcserverfunc":a=p.s_statusline_calculating+Math.floor(100*i.count/(i.total||1))+"%, "+p.s_statusline_doingserverfunc+i.funcname+p.s_statusline_incell+i.coord;break;case"calcstart":n.calculating=!0,document.body.style.cursor="progress",e.griddiv.style.cursor="progress",a=p.s_statusline_calcstart;break;case"calccheckdone":break;case"calcfinished":n.calculating=!1;break;case"emailing":n.emailing="sending",n.emailreponse="";break;case"confirmemailsent":n.emailing="sent","undefined"==typeof n.emailreponse&&(n.emailreponse=""),n.emailreponse+=i;break;default:a=o}if("sending"==n.emailing&&(a+=p.s_statusline_sendemail),"sent"==n.emailing&&(a+=n.emailreponse),!a&&n.calculating&&(a=p.s_statusline_calculating),!(n.calculating||n.command||a||!e.range.hasrange||e.range.left==e.range.right&&e.range.top==e.range.bottom)){for(h=0,c=e.range.top;c<=e.range.bottom;c++)for(u=e.range.left;u<=e.range.right;u++)d=e.context.sheetobj.cells[t.crToCoord(u,c)],d&&d.valuetype&&"n"==d.valuetype.charAt(0)&&(h+=d.datavalue-0);h=t.FormatNumber.formatNumberWithFormat(h,"[,]General",""),s=t.crToCoord(e.range.left,e.range.top)+":"+t.crToCoord(e.range.right,e.range.bottom),a=s+" ("+(e.range.right-e.range.left+1)+"x"+(e.range.bottom-e.range.top+1)+") "+p.s_statusline_sum+"="+h+" "+a}return r=(e.ecell||{}).coord+" &nbsp; "+a,n.calculating||"yes"!=e.context.sheetobj.attribs.needsrecalc||(r+=" &nbsp; "+p.s_statusline_recalcneeded),l=e.context.sheetobj.attribs.circularreferencecell,l&&(l=l.replace(/\|/," referenced by "),r+=" &nbsp; "+p.s_statusline_circref+l+"</span>"),r+=""},t.EditorMouseInfo={registeredElements:[],editor:null,element:null,ignore:!1,mousedowncoord:"",mouselastcoord:"",mouseresizecol:"",mouseresizeclientx:null,mouseresizedisplay:null},t.EditorMouseRegister=function(e){var o,i=t.EditorMouseInfo,n=e.fullgrid;for(o=0;o<i.registeredElements.length;o++)if(i.registeredElements[o].editor==e){if(i.registeredElements[o].element==n)return;break}if(o<i.registeredElements.length?i.registeredElements[o].element=n:i.registeredElements.push({element:n,editor:e}),n.addEventListener)n.addEventListener("mousedown",t.ProcessEditorMouseDown,!1),n.addEventListener("dblclick",t.ProcessEditorDblClick,!1);else{if(!n.attachEvent)throw"Browser not supported";n.attachEvent("onmousedown",t.ProcessEditorMouseDown),n.attachEvent("ondblclick",t.ProcessEditorDblClick)}i.ignore=!1},t.EditorMouseUnregister=function(e){{var o,i,n=t.EditorMouseInfo;e.fullgrid}for(o=0;o<n.registeredElements.length&&n.registeredElements[o].editor!=e;o++);o<n.registeredElements.length&&(i=n.registeredElements[o].element,i.removeEventListener?(i.removeEventListener("mousedown",t.ProcessEditorMouseDown,!1),i.removeEventListener("dblclick",t.ProcessEditorDblClick,!1)):i.detachEvent&&(i.detachEvent("onmousedown",t.ProcessEditorMouseDown),i.detachEvent("ondblclick",t.ProcessEditorDblClick)),n.registeredElements.splice(o,1))},t.StopPropagation=function(e){e.stopPropagation?e.stopPropagation():e.cancelBubble=!0,e.preventDefault?e.preventDefault():e.returnValue=!1},t.SetMouseMoveUp=function(e,o,i,n){document.addEventListener?(document.addEventListener("mousemove",e,!0),document.addEventListener("mouseup",o,!0)):i.attachEvent&&(i.setCapture(),i.attachEvent("onmousemove",e),i.attachEvent("onmouseup",o),i.attachEvent("onlosecapture",o)),t.StopPropagation(n)},t.RemoveMouseMoveUp=function(e,o,i,n){t.StopPropagation(n),document.removeEventListener?(document.removeEventListener("mousemove",e,!0),document.removeEventListener("mouseup",o,!0)):i.detachEvent&&(i.detachEvent("onlosecapture",o),i.detachEvent("onmouseup",o),i.detachEvent("onmousemove",e),i.releaseCapture())},t.ProcessEditorMouseDown=function(o){var i,n,r,a,s=o||e.event,l=t.EditorMouseInfo,c=s.target||s.srcElement,u=c;3==u.nodeType&&(u=u.parentNode);var d;if(!l.ignore){for(d=null;!d&&c;c=c.parentNode)d=t.LookupElement(c,l.registeredElements);if(!d)return void(l.editor=null);i=d.editor,l.element=c,a=i.range;var h=t.GetElementPositionWithScroll(i.toplevel),p=s.clientX-h.left,f=s.clientY-h.top;if(n=t.GridMousePosition(i,p,f)){if(l.editor=i,n.rowheader)return void(n.rowselect?t.ProcessEditorRowselectMouseDown(o,c,n):t.ProcessEditorRowsizeMouseDown(o,c,n));if(n.colheader)return void(n.colselect?t.ProcessEditorColselectMouseDown(o,c,n):t.ProcessEditorColsizeMouseDown(o,c,n));if(n.coord){if(a.hasrange||o.shiftKey&&i.RangeAnchor(),r=i.MoveECell(n.coord),1==t._app)return void t.CmdGotFocus(!0);var m=i.context.sheetobj.cells[r];if(m&&"i"==m.valuetype.charAt(1)){var g=m.valuetype.substring(2),v=g+"_"+r;if(u&&v==u.id){var b=document.getElementById(v);t.CmdGotFocus(b)}}else a.hasrange&&(o.shiftKey?i.RangeExtend():i.RangeRemove()),l.mousedowncoord=r,l.mouselastcoord=r,i.EditorMouseRange(r),t.KeyboardSetFocus(i),"start"!=i.state&&i.inputBox&&i.inputBox.element.focus(),t.SetMouseMoveUp(t.ProcessEditorMouseMove,t.ProcessEditorMouseUp,c,s)}}}},t.EditorMouseRange=function(e,o){var i,n,r=e.range;switch(e.state){case"input":i=e.inputBox.GetText(),n=e.workingvalues,("(+-*/,:!&<>=^".indexOf(i.slice(-1))>=0&&"="==i.slice(0,1)||"="==i)&&(n.partialexpr=i),n.partialexpr?o&&e.inputBox.SetText(r.hasrange?n.partialexpr+t.crToCoord(r.left,r.top)+":"+t.crToCoord(r.right,r.bottom):n.partialexpr+o):(e.inputBox.Blur(),e.inputBox.ShowInputBox(!1),e.state="start",e.cellhandles.ShowCellHandles(!0),e.EditorSaveEdit(),e.inputBox.DisplayCellContents(null));break;case"inputboxdirect":e.inputBox.Blur(),e.inputBox.ShowInputBox(!1),e.state="start",e.cellhandles.ShowCellHandles(!0),e.EditorSaveEdit(),e.inputBox.DisplayCellContents(null)}},t.ProcessEditorMouseMove=function(o){var i,n,r,a=o||e.event,s=t.EditorMouseInfo;if(i=s.editor,i&&!s.ignore){n=s.element;var l=t.GetElementPositionWithScroll(i.toplevel),c=a.clientX-l.left,u=a.clientY-l.top;if(r=t.GridMousePosition(i,c,u)){if(r&&!r.coord)return void t.SetDragAutoRepeat(i,r);t.SetDragAutoRepeat(i,null),r.coord&&(r.coord!=s.mouselastcoord&&(o.shiftKey||i.range.hasrange||i.RangeAnchor(s.mousedowncoord),i.MoveECell(r.coord),i.RangeExtend()),s.mouselastcoord=r.coord,i.EditorMouseRange(r.coord),t.StopPropagation(a))}}},t.ProcessEditorMouseUp=function(o){var i,n,r,a=o||e.event,s=t.EditorMouseInfo;if(i=s.editor,i&&!s.ignore){n=s.element;var l=t.GetElementPositionWithScroll(i.toplevel),c=a.clientX-l.left,u=a.clientY-l.top;if(r=t.GridMousePosition(i,c,u),t.SetDragAutoRepeat(i,null),r)return r.coord||(r.coord=i.ecell.coord),i.range.hasrange?(i.MoveECell(r.coord),i.RangeExtend()):r.coord&&r.coord!=s.mousedowncoord&&(i.RangeAnchor(s.mousedowncoord),i.MoveECell(r.coord),i.RangeExtend()),i.EditorMouseRange(r.coord),s.editor=null,t.RemoveMouseMoveUp(t.ProcessEditorMouseMove,t.ProcessEditorMouseUp,n,a),!1}},t.ProcessEditorColsizeMouseDown=function(o,i,n){var r=o||e.event,a=t.EditorMouseInfo,s=a.editor,l=t.GetElementPositionWithScroll(s.toplevel),c=r.clientX-l.left;if(a.mouseresizecolnum=n.coltoresize,a.mouseresizecol=t.rcColname(n.coltoresize),a.mousedownclientx=c,a.mousecoltounhide=n.coltounhide,n.coltoresize){var u=document.createElement("div");a.mouseresizedisplay=u,u.style.width="auto",u.style.position="absolute",u.style.zIndex=100,u.style.top=s.headposition.top+"px",u.style.left=s.colpositions[n.coltoresize]+"px",u.innerHTML='<table cellpadding="0" cellspacing="0"><tr><td style="height:100px;border:1px dashed black;background-color:white;width:'+(s.context.colwidth[a.mouseresizecolnum]-2)+'px;">&nbsp;</td><td><div style="font-size:small;color:white;background-color:gray;padding:4px;">'+s.context.colwidth[a.mouseresizecolnum]+"</div></td></tr></table>",t.setStyles(u.firstChild.lastChild.firstChild.childNodes[0],"filter:alpha(opacity=85);opacity:.85;"),s.toplevel.appendChild(u)}t.SetMouseMoveUp(t.ProcessEditorColsizeMouseMove,t.ProcessEditorColsizeMouseUp,s.toplevel,r)},t.ProcessEditorColsizeMouseMove=function(o){var i=o||e.event,n=t.EditorMouseInfo,r=n.editor;if(r){if(n.mouseresizecolnum){var a=t.GetElementPositionWithScroll(r.toplevel),s=i.clientX-a.left,l=r.context.colwidth[n.mouseresizecolnum]-0+(s-n.mousedownclientx);l<t.Constants.defaultMinimumColWidth&&(l=t.Constants.defaultMinimumColWidth);var c=n.mouseresizedisplay;c.innerHTML='<table cellpadding="0" cellspacing="0"><tr><td style="height:100px;border:1px dashed black;background-color:white;width:'+(l-2)+'px;">&nbsp;</td><td><div style="font-size:small;color:white;background-color:gray;padding:4px;">'+l+"</div></td></tr></table>",t.setStyles(c.firstChild.lastChild.firstChild.childNodes[0],"filter:alpha(opacity=85);opacity:.85;")}t.StopPropagation(i)}},t.ProcessEditorColsizeMouseUp=function(o){var i=o||e.event,n=t.EditorMouseInfo,r=n.editor;if(r){element=n.element;var a=t.GetElementPositionWithScroll(r.toplevel),s=i.clientX-a.left;if(t.RemoveMouseMoveUp(t.ProcessEditorColsizeMouseMove,t.ProcessEditorColsizeMouseUp,r.toplevel,i),n.mousecoltounhide)r.EditorScheduleSheetCommands("set "+t.rcColname(n.mousecoltounhide)+" hide",!0,!1);else if(n.mouseresizecolnum){var l=r.context.colwidth[n.mouseresizecolnum]-0+(s-n.mousedownclientx);l<t.Constants.defaultMinimumColWidth&&(l=t.Constants.defaultMinimumColWidth),r.EditorScheduleSheetCommands("set "+n.mouseresizecol+" width "+l,!0,!1),r.timeout&&e.clearTimeout(r.timeout),r.timeout=e.setTimeout(t.FinishColRowSize,1)}return!1}},t.FinishColRowSize=function(){var e=t.EditorMouseInfo,o=e.editor;o&&(o.toplevel.removeChild(e.mouseresizedisplay),e.mouseresizedisplay=null,e.editor=null)},t.ProcessEditorRowselectMouseDown=function(o,i,n){var r=o||e.event,a=t.EditorMouseInfo,s=a.editor,l=t.GetSpreadsheetControlObject().sheet;coord1=t.crToCoord(1,n.row),coord2=t.crToCoord(l.LastCol(),n.row),coord3=t.crToCoord(s.firstscrollingcol,n.row),s.RangeAnchor(coord1),s.RangeExtend(coord2),s.MoveECell(coord3),t.SetMouseMoveUp(t.ProcessEditorRowselectMouseMove,t.ProcessEditorRowselectMouseUp,s.toplevel,r)},t.ProcessEditorRowselectMouseMove=function(o){var i=o||e.event,n=t.EditorMouseInfo,r=n.editor,a=t.GetSpreadsheetControlObject().sheet;if(r){var s=t.GetElementPositionWithScroll(r.toplevel),l=i.clientX-s.left,c=i.clientY-s.top;result=t.GridMousePosition(r,l,c),coord2=t.crToCoord(a.LastCol(),result.row),coord3=t.crToCoord(r.firstscrollingcol,result.row),r.RangeExtend(coord2),r.MoveECell(coord3)}},t.ProcessEditorRowselectMouseUp=function(o){var i=(o||e.event,t.EditorMouseInfo),n=i.editor;n&&t.RemoveMouseMoveUp(t.ProcessEditorRowselectMouseMove,t.ProcessEditorRowselectMouseUp,n.toplevel,o)},t.ProcessEditorColselectMouseDown=function(o,i,n){var r=o||e.event,a=t.EditorMouseInfo,s=a.editor,l=t.GetSpreadsheetControlObject().sheet;coord1=t.crToCoord(n.col,1),coord2=t.crToCoord(n.col,l.LastRow()),coord3=t.crToCoord(n.col,s.firstscrollingrow),s.RangeAnchor(coord1),s.RangeExtend(coord2),s.MoveECell(coord3),t.SetMouseMoveUp(t.ProcessEditorColselectMouseMove,t.ProcessEditorColselectMouseUp,s.toplevel,r)},t.ProcessEditorColselectMouseMove=function(o){var i=o||e.event,n=t.EditorMouseInfo,r=n.editor,a=t.GetSpreadsheetControlObject().sheet;if(r){var s=t.GetElementPositionWithScroll(r.toplevel),l=i.clientX-s.left,c=i.clientY-s.top;result=t.GridMousePosition(r,l,c),coord2=t.crToCoord(result.col,a.LastRow()),coord3=t.crToCoord(result.col,r.firstscrollingrow),r.RangeExtend(coord2),r.MoveECell(coord3)}},t.ProcessEditorColselectMouseUp=function(o){var i=(o||e.event,t.EditorMouseInfo),n=i.editor;n&&t.RemoveMouseMoveUp(t.ProcessEditorColselectMouseMove,t.ProcessEditorColselectMouseUp,n.toplevel,o)},t.ProcessEditorRowsizeMouseDown=function(o,i,n){var r=o||e.event,a=t.EditorMouseInfo,s=a.editor,l=t.GetSpreadsheetControlObject().spreadsheetDiv.firstChild.offsetHeight,c=r.clientY-l;if(a.mouseresizerownum=n.rowtoresize,a.mouseresizerow=n.rowtoresize,a.mousedownclienty=c,a.mouserowtounhide=n.rowtounhide,n.rowtoresize){var u=document.createElement("div");a.mouseresizedisplay=u,u.style.width=s.context.totalwidth+"px",u.style.height=s.rowpositions[n.rowtoresize]+"px",u.style.position="absolute",u.style.zIndex=100,u.style.top=s.rowpositions[n.rowtoresize]+"px",u.style.left=s.headposition.left+"px",u.innerHTML='<table cellpadding="0" cellspacing="0"><tr><td style="width:100pxborder:1px dashed black;background-color:white;height:'+(s.context.rowheight[a.mouseresizerownum]-2)+'px;">&nbsp;</td><td><div style="font-size:small;color:white;background-color:gray;padding:4px;">'+s.context.rowheight[a.mouseresizerownum]+"</div></td></tr></table>",t.setStyles(u.firstChild.lastChild.firstChild.childNodes[0],"filter:alpha(opacity=85);opacity:.5;"),s.toplevel.appendChild(u)}t.SetMouseMoveUp(t.ProcessEditorRowsizeMouseMove,t.ProcessEditorRowsizeMouseUp,s.toplevel,r)},t.ProcessEditorRowsizeMouseMove=function(o){var i=o||e.event,n=t.EditorMouseInfo,r=n.editor;if(r){if(n.mouseresizerownum){var a=t.GetSpreadsheetControlObject().spreadsheetDiv.firstChild.offsetHeight,s=i.clientY-a,l=r.context.rowheight[n.mouseresizerownum]-0+(s-n.mousedownclienty);l<t.Constants.defaultAssumedRowHeight&&(l=t.Constants.defaultAssumedRowHeight);var c=n.mouseresizedisplay;c.innerHTML='<table cellpadding="0" cellspacing="0"><tr><td style="width:100px;border:1px dashed black;background-color:white;height:'+(l-2)+'px;">&nbsp;</td><td><div style="font-size:small;color:white;background-color:gray;padding:4px;">'+l+"</div></td></tr></table>",t.setStyles(c.firstChild.lastChild.firstChild.childNodes[0],"filter:alpha(opacity=85);opacity:.5;")}t.StopPropagation(i)}},t.ProcessEditorRowsizeMouseUp=function(o){var i=o||e.event,n=t.EditorMouseInfo,r=n.editor;if(r){element=n.element;var a=t.GetSpreadsheetControlObject().spreadsheetDiv.firstChild.offsetHeight,s=i.clientY-a;if(t.RemoveMouseMoveUp(t.ProcessEditorRowsizeMouseMove,t.ProcessEditorRowsizeMouseUp,r.toplevel,i),n.mouserowtounhide)r.EditorScheduleSheetCommands("set "+n.mouserowtounhide+" hide",!0,!1);else if(n.mouseresizerownum){var l=r.context.rowheight[n.mouseresizerownum]-0+(s-n.mousedownclienty);l<t.Constants.defaultAssumedRowHeight&&(l=t.Constants.defaultAssumedRowHeight),r.EditorScheduleSheetCommands("set "+n.mouseresizerownum+" height "+l,!0,!1),r.timeout&&e.clearTimeout(r.timeout),r.timeout=e.setTimeout(t.FinishColRowSize,1)}return!1}},t.AutoRepeatInfo={timer:null,mouseinfo:null,repeatinterval:1e3,editor:null,repeatcallback:null},t.SetDragAutoRepeat=function(o,i,n){var r,a,s=t.AutoRepeatInfo;if(s.repeatcallback=n,!i)return s.timer&&(e.clearTimeout(s.timer),s.timer=null),void(s.mouseinfo=null);if(s.editor=o,s.mouseinfo&&(i.rowheader||i.rowfooter?i.row!=s.mouseinfo.row&&(r=t.crToCoord(o.ecell.col,i.row),s.repeatcallback?(a=i.row<s.mouseinfo.row?"left":i.row>s.mouseinfo.row?"right":"",s.repeatcallback(r,a)):(o.MoveECell(r),o.MoveECell(r),o.RangeExtend(),o.EditorMouseRange(r))):(i.colheader||i.colfooter)&&i.col!=s.mouseinfo.col&&(r=t.crToCoord(i.col,o.ecell.row),s.repeatcallback?(a=i.row<s.mouseinfo.row?"left":i.row>s.mouseinfo.row?"right":"",s.repeatcallback(r,a)):(o.MoveECell(r),o.RangeExtend(),o.EditorMouseRange(r)))),s.mouseinfo=i,i.distance<5)s.repeatinterval=333;else if(i.distance<10)s.repeatinterval=250;else if(i.distance<25)s.repeatinterval=100;else{if(!(i.distance<35))return void(s.timer&&(e.clearTimeout(s.timer),s.timer=null));s.repeatinterval=75}s.timer||(s.timer=e.setTimeout(t.DragAutoRepeat,s.repeatinterval))},t.DragAutoRepeat=function(){var o,i,n,r=t.AutoRepeatInfo,a=r.mouseinfo;a.rowheader?o="left":a.rowfooter?o="right":a.colheader?o="up":a.colfooter&&(o="down"),r.repeatcallback?(n=t.coordToCr(r.editor.ecell.coord),"left"==o&&n.col>1?n.col--:"right"==o?n.col++:"up"==o&&n.row>1?n.row--:"down"==o&&n.row++,i=t.crToCoord(n.col,n.row),r.repeatcallback(i,o)):(i=r.editor.MoveECellWithKey("[a"+o+"]shifted"),i&&r.editor.EditorMouseRange(i)),r.timer=e.setTimeout(t.DragAutoRepeat,r.repeatinterval)},t.ProcessEditorDblClick=function(o){var i,n,r,a,s=o||e.event,l=t.EditorMouseInfo,c=s.target||s.srcElement;if(!l.ignore){for(a=null;!a&&c;c=c.parentNode)a=t.LookupElement(c,l.registeredElements);if(!a)return void(l.editor=null);i=a.editor;var u=t.GetElementPositionWithScroll(i.toplevel),d=s.clientX-u.left,h=s.clientY-u.top;if(n=t.GridMousePosition(i,d,h),n&&n.coord){switch(l.editor=i,l.element=c,r=i.range,sheetobj=i.context.sheetobj,i.state){case"start":t.EditorOpenCellEdit(i);break;case"input":}t.StopPropagation(s)}}},t.EditorOpenCellEdit=function(e){var t;return e.ecell&&e.inputBox?e.inputBox.element.disabled?!0:(e.inputBox.ShowInputBox(!0),e.inputBox.Focus(),e.inputBox.SetText(""),e.inputBox.DisplayCellContents(),e.inputBox.Select("end"),t=e.workingvalues,t.partialexpr="",t.ecoord=e.ecell.coord,t.erow=e.ecell.row,void(t.ecol=e.ecell.col)):!0},t.EditorProcessKey=function(e,o,i){var n,r,a,s,l=(e.context.sheetobj,e.workingvalues),c=e.range;switch("string"!=typeof o&&(o=""),e.state){case"start":if(i.shiftKey&&"[a"==o.substr(0,2)&&(o+="shifted"),"[enter]"==o&&(o="[adown]"),"[tab]"==o&&(o=i.shiftKey?"[aleft]":"[aright]"),"[a"==o.substr(0,2)||"[pg"==o.substr(0,3)||"[home]"==o)return n=e.MoveECellWithKey(o),!n;if("[del]"==o||"[backspace]"==o){e.noEdit||e.ECellReadonly()||e.EditorApplySetCommandsToRange("empty","");break}if("[esc]"==o){if(c.hasrange){e.RangeRemove(),e.MoveECell(c.anchorcoord);for(s in e.StatusCallback)e.StatusCallback[s].func(e,"specialkey",o,e.StatusCallback[s].params)}return!1}if("[f2]"==o)return e.noEdit||e.ECellReadonly()?!0:(t.EditorOpenCellEdit(e),e.state="inputboxdirect",!1);if(o.length>1&&"["==o.substr(0,1)||0==o.length)return e.ctrlkeyFunction&&o.length>0?e.ctrlkeyFunction(e,o):!0;if(!e.ecell)return!0;if(!e.inputBox)return!0;if(e.ECellReadonly())return!0;e.inputBox.element.disabled=!1,e.state="input",e.inputBox.ShowInputBox(!0),e.inputBox.Focus(),e.inputBox.SetText(o),e.inputBox.Select("end"),l.partialexpr="",l.ecoord=e.ecell.coord,l.erow=e.ecell.row,l.ecol=e.ecell.col,e.RangeRemove();break;case"input":if(a=e.inputBox.GetText(),e.inputBox.skipOne)return!1;if("[esc]"==o||"[enter]"==o||"[tab]"==o||o&&"[a"==o.substr(0,2)){if(("(+-*/,:!&<>=^".indexOf(a.slice(-1))>=0&&"="==a.slice(0,1)||"="==a)&&(l.partialexpr=a),l.partialexpr&&(i.shiftKey&&"[a"==o.substr(0,2)&&(o+="shifted"),r=e.MoveECellWithKey(o)))return e.inputBox.SetText(c.hasrange?l.partialexpr+t.crToCoord(c.left,c.top)+":"+t.crToCoord(c.right,c.bottom):l.partialexpr+r),!1;e.inputBox.Blur(),e.inputBox.ShowInputBox(!1),e.state="start",e.cellhandles.ShowCellHandles(!0),"[esc]"!=o?(e.EditorSaveEdit(),e.ecell.coord!=l.ecoord&&e.MoveECell(l.ecoord),"[enter]"==o&&(o="[adown]"),"[tab]"==o&&(o=i.shiftKey?"[aleft]":"[aright]"),"[a"==o.substr(0,2)&&e.MoveECellWithKey(o)):(e.inputBox.DisplayCellContents(),e.RangeRemove(),e.MoveECell(l.ecoord));break}return l.partialexpr&&"[backspace]"==o?(e.inputBox.SetText(l.partialexpr),l.partialexpr="",e.RangeRemove(),e.MoveECell(l.ecoord),e.inputBox.ShowInputBox(!0),!1):"[f2]"==o?(e.state="inputboxdirect",!1):(c.hasrange&&e.RangeRemove(),e.MoveECell(l.ecoord),l.partialexpr&&(e.inputBox.ShowInputBox(!0),l.partialexpr=""),!0);case"inputboxdirect":if(a=e.inputBox.GetText(),"[esc]"==o||"[enter]"==o||"[tab]"==o){e.inputBox.Blur(),e.inputBox.ShowInputBox(!1),e.state="start",e.cellhandles.ShowCellHandles(!0),"[esc]"==o?e.inputBox.DisplayCellContents():(e.EditorSaveEdit(),e.ecell.coord!=l.ecoord&&e.MoveECell(l.ecoord),"[enter]"==o&&(o="[adown]"),"[tab]"==o&&(o=i.shiftKey?"[aleft]":"[aright]"),"[a"==o.substr(0,2)&&e.MoveECellWithKey(o));break}return"[f2]"==o?(e.state="input",!1):!0;case"skip-and-start":return e.state="start",e.cellhandles.ShowCellHandles(!0),!1;default:return!0}return!1},t.EditorAddToInput=function(e,t,o){var i=e.workingvalues;if(!e.noEdit&&!e.ECellReadonly())switch(e.state){case"start":e.state="input",e.inputBox.ShowInputBox(!0),e.inputBox.element.disabled=!1,e.inputBox.Focus(),e.inputBox.SetText((o||"")+t),e.inputBox.Select("end"),i.partialexpr="",i.ecoord=e.ecell.coord,i.erow=e.ecell.row,i.ecol=e.ecell.col,e.RangeRemove();break;case"input":case"inputboxdirect":e.inputBox.element.focus(),i.partialexpr&&(e.inputBox.SetText(i.partialexpr),i.partialexpr="",e.RangeRemove(),e.MoveECell(i.ecoord)),e.inputBox.SetText(e.inputBox.GetText()+t)}},t.EditorDisplayCellContents=function(e){e.inputBox&&e.inputBox.DisplayCellContents()},t.EditorSaveEdit=function(e,o){var i,n,r,a,s,l,c=e.context.sheetobj,u=e.workingvalues;r="text t",a="string"==typeof o?o:e.inputBox.GetText(),s=t.GetCellContents(c,u.ecoord)+"",a!=s&&(n=a.charAt(0),"="==n&&-1==a.indexOf("\n")?(r="formula",a=a.substring(1)):"'"==n?(r="text t",a=a.substring(1),i=t.DetermineValueType(a),"t"==i.type.charAt(0)&&(r="text "+i.type)):0==a.length?r="empty":(i=t.DetermineValueType(a),r="n"==i.type&&a==i.value+""?"value n":"t"==i.type.charAt(0)?"text "+i.type:""==i.type?"text t":"constant "+i.type+" "+i.value),"t"==r.charAt(0)&&(a=t.encodeForSave(a)),l="set "+u.ecoord+" "+r+" "+a,e.EditorScheduleSheetCommands(l,!0,!1),"undefined"!=typeof c.ioEventTree&&"undefined"!=typeof c.ioParameterList&&"undefined"!=typeof c.ioEventTree[u.ecoord]&&t.EditedTriggerCell(c.ioEventTree[u.ecoord],u.ecoord,e,c))},t.EditedTriggerCell=function(e,t,o,i){for(var n in e){var r=i.ioParameterList[n];if("undefined"!=typeof r)switch(r.function_name){case"EMAILONEDIT":case"EMAILONEDITIF":cmdline="setemailparameters "+n+" "+t,o.deferredEmailCommands.push({cmdstr:cmdline,saveundo:!1})}}},t.EditorApplySetCommandsToRange=function(e,o){var i,n,r=(e.context.sheetobj,e.ecell),a=e.range;a.hasrange?(coord=t.crToCoord(a.left,a.top)+":"+t.crToCoord(a.right,a.bottom),i="set "+coord+" "+o,n=e.EditorScheduleSheetCommands(i,!0,!1)):(i="set "+r.coord+" "+o,n=e.EditorScheduleSheetCommands(i,!0,!1)),e.DisplayCellContents()},t.EditorProcessMouseWheel=function(e,t,o,i){i.functionobj.editor.busy||(t>0&&i.functionobj.editor.ScrollRelative(!0,Math.floor(1.5*-t)),0>t&&i.functionobj.editor.ScrollRelative(!0,Math.ceil(1.5*-t)))},t.GridMousePosition=function(e,o,i){var n,r,a,s,l,c,u={};for(n=1;n<e.rowpositions.length&&!(e.rowheight[n]&&e.rowpositions[n]+e.rowheight[n]>i);n++);for(a=1;a<e.colpositions.length&&!(e.colwidth[a]&&e.colpositions[a]+e.colwidth[a]>o);a++);if(u.row=n,u.col=a,e.headposition&&1!=t._app){if(o<e.headposition.left&&o>=e.gridposition.left){for(u.rowheader=!0,u.distance=e.headposition.left-o,u.rowtoresize=!1,u.rowselect=!1,l=1;l<e.rowpositions.length;l++)if(e.rowheight[l]&&e.rowpositions[l]+e.rowheight[l]-3<=i&&e.rowpositions[l]+e.rowheight[l]+3>=i){u.rowtoresize=l;break}if((unhide=e.context.rowunhidetop[n])&&(pos=t.GetElementPosition(unhide),o>=pos.left&&o<pos.left+unhide.offsetWidth&&i>=e.rowpositions[n]+e.rowheight[n]-unhide.offsetHeight&&i<e.rowpositions[n]+e.rowheight[n]&&(u.rowtounhide=n+1)),(unhide=e.context.rowunhidebottom[n])&&(pos=t.GetElementPosition(unhide),o>=pos.left&&o<pos.left+unhide.offsetWidth&&i>=e.rowpositions[n]&&i<e.rowpositions[n]+unhide.offsetHeight&&(u.rowtounhide=n-1)),null==u.rowtounhide){for(r=0;r<e.context.rowpanes.length;r++)if(u.rowtoresize>=e.context.rowpanes[r].first&&u.rowtoresize<=e.context.rowpanes[r].last)return u;u.rowselect=!0}return delete u.rowtoresize,u}if(i<e.headposition.top&&i>e.gridposition.top){for(u.colheader=!0,u.distance=e.headposition.top-i,u.coltoresize=!1,u.colselect=!1,c=1;c<e.colpositions.length;c++)if(e.colwidth[c]&&e.colpositions[c]+e.colwidth[c]-3<=o&&e.colpositions[c]+e.colwidth[c]+3>=o){u.coltoresize=c;break}if((unhide=e.context.colunhideleft[a])&&(pos=t.GetElementPosition(unhide),o>=pos.left&&o<pos.left+unhide.offsetWidth&&i>=pos.top&&i<pos.top+unhide.offsetHeight&&(u.coltounhide=a+1)),(unhide=e.context.colunhideright[a])&&(pos=t.GetElementPosition(unhide),o>=pos.left&&o<pos.left+unhide.offsetWidth&&i>=pos.top&&i<pos.top+unhide.offsetHeight&&(u.coltounhide=a-1)),null==u.coltounhide){for(s=0;s<e.context.colpanes.length;s++)if(u.coltoresize>=e.context.colpanes[s].first&&u.coltoresize<=e.context.colpanes[s].last)return u;u.colselect=!0}return delete u.coltoresize,u}return o>=e.verticaltablecontrol.controlborder?(u.rowfooter=!0,u.distance=o-e.verticaltablecontrol.controlborder,u):i>=e.horizontaltablecontrol.controlborder?(u.colfooter=!0,u.distance=i-e.horizontaltablecontrol.controlborder,u):o<e.gridposition.left?(u.rowheader=!0,u.distance=e.headposition.left-o,u):i<=e.gridposition.top?(u.colheader=!0,u.distance=e.headposition.top-i,u):(u.coord=t.crToCoord(u.col,u.row),e.context.cellskip[u.coord]&&(u.coord=e.context.cellskip[u.coord]),u)}return null},t.GetEditorCellElement=function(e,o,i){var n=0,r=0;if(0==e.context.showRCHeaders)var n=-1,r=-1;var a,s,l,c,u=0,d=0;for(a=0;a<e.context.rowpanes.length;a++){if(o>=e.context.rowpanes[a].first&&o<=e.context.rowpanes[a].last)for(s=0;s<e.context.colpanes.length;s++){if(i>=e.context.colpanes[s].first&&i<=e.context.colpanes[s].last){for(u+=o-e.context.rowpanes[a].first+2,l=e.context.colpanes[s].first;i>=l;l++)c=e.context.cellskip[t.crToCoord(l,o)],c&&e.context.CoordInPane(c,a,s)||d++;return{element:e.griddiv.firstChild.lastChild.childNodes[u+r].childNodes[d+n],rowpane:a,colpane:s}}for(l=e.context.colpanes[s].first;l<=e.context.colpanes[s].last;l++)c=e.context.cellskip[t.crToCoord(l,o)],c&&e.context.CoordInPane(c,a,s)||d++;d+=1}u+=e.context.rowpanes[a].last-e.context.rowpanes[a].first+1+1}return null},t.MoveECellWithKey=function(e,o){var i,n,r,a,s=!1,l=1;if(!e.ecell)return null;switch("shifted"==o.slice(-7)&&(o=o.slice(0,-7),s=!0),n=e.ecell.row,r=e.ecell.col,a=e.context.sheetobj.cells[e.ecell.coord],o){case"[adown]":n+=a&&a.rowspan||1;break;case"[aup]":n--,l=-1;break;case"[pgdn]":n+=e.pageUpDnAmount-1+(a&&a.rowspan||1);break;case"[pgup]":n-=e.pageUpDnAmount,l=-1;break;case"[aright]":r+=a&&a.colspan||1;break;case"[aleft]":r--,l=-1;break;case"[home]":n=1,r=1;break;default:return null}for(e.context.sheetobj.attribs.usermaxcol&&(r=Math.min(e.context.sheetobj.attribs.usermaxcol,r)),e.context.sheetobj.attribs.usermaxrow&&(n=Math.min(e.context.sheetobj.attribs.usermaxrow,n));"yes"==e.context.sheetobj.colattribs.hide[t.rcColname(r)];)r+=l,1>r&&(l=-l,r=1);for(;"yes"==e.context.sheetobj.rowattribs.hide[n];)n+=l,1>n&&(l=-l,n=1);return e.range.hasrange||s&&e.RangeAnchor(),i=e.MoveECell(t.crToCoord(r,n)),e.range.hasrange&&(s?e.RangeExtend():e.RangeRemove()),i},t.MoveECell=function(e,o){var i,n,r=e.context.highlights,a=t.coordToCr(o);if(e.context.sheetobj.attribs.usermaxcol&&a.col>e.context.sheetobj.attribs.usermaxcol&&(a.col=e.context.sheetobj.attribs.usermaxcol),e.context.sheetobj.attribs.usermaxrow&&a.row>e.context.sheetobj.attribs.usermaxrow&&(a.row=e.context.sheetobj.attribs.usermaxrow),o=t.crToCoord(a.col,a.row),e.ecell){if(e.ecell.coord==o)return o;i=t.GetEditorCellElement(e,e.ecell.row,e.ecell.col),delete r[e.ecell.coord],e.range2.hasrange&&e.ecell.row>=e.range2.top&&e.ecell.row<=e.range2.bottom&&e.ecell.col>=e.range2.left&&e.ecell.col<=e.range2.right&&(r[e.ecell.coord]="range2"),e.UpdateCellCSS(i,e.ecell.row,e.ecell.col),e.SetECellHeaders(""),e.cellhandles&&e.cellhandles.ShowCellHandles(!1)
-}o=e.context.cellskip[o]||o,e.ecell=t.coordToCr(o),e.ecell.coord=o,i=t.GetEditorCellElement(e,e.ecell.row,e.ecell.col),r[o]="cursor";for(n in e.MoveECellCallback)e.MoveECellCallback[n](e);e.UpdateCellCSS(i,e.ecell.row,e.ecell.col),e.SetECellHeaders("selected");for(n in e.StatusCallback)e.StatusCallback[n].func(e,"moveecell",o,e.StatusCallback[n].params);return e.busy?e.ensureecell=!0:(e.ensureecell=!1,e.EnsureECellVisible()),o},t.EnsureECellVisible=function(e){var t=0,o=0;e.ecell.row>e.lastnonscrollingrow&&(e.ecell.row<e.firstscrollingrow?t=e.ecell.row-e.firstscrollingrow-Math.floor((e.lastvisiblerow-e.firstscrollingrow)/2):e.ecell.row+1>e.lastvisiblerow&&(t=e.ecell.row-e.lastvisiblerow+Math.floor((e.lastvisiblerow-e.firstscrollingrow)/2))),e.ecell.col>e.lastnonscrollingcol&&(e.ecell.col<e.firstscrollingcol?o=e.ecell.col-e.firstscrollingcol-Math.floor((e.lastvisiblecol-e.firstscrollingcol)/2):e.ecell.col+1>e.lastvisiblecol&&(o=e.ecell.col-e.lastvisiblecol+Math.floor((e.lastvisiblecol-e.firstscrollingcol)/2))),0!=t||0!=o?e.ScrollRelativeBoth(t,o):e.cellhandles.ShowCellHandles(!0)},t.ReplaceCell=function(e,t,o,i){var n,r;if(t&&(n=e.context.RenderCell(o,i,t.rowpane,t.colpane,!0,null),n&&t.element)){t.element.innerHTML=n.innerHTML,t.element.style.cssText="",t.element.className=n.className;for(r in n.style)"cssText"!=n.style[r]&&(t.element.style[r]=n.style[r])}},t.UpdateCellCSS=function(e,t,o,i){var n,r;if(t&&(n=e.context.RenderCell(o,i,t.rowpane,t.colpane,!0,null))){t.element.style.cssText="",t.element.className=n.className;for(r in n.style)"cssText"!=n.style[r]&&(t.element.style[r]=n.style[r])}},t.SetECellHeaders=function(e,o){if(e.context.showRCHeaders!==!1){var i,n,r,a,s,l=e.ecell,c=e.context,u=0,d=0;if(l){for(;"yes"==c.sheetobj.colattribs.hide[t.rcColname(l.col)];)l.col++;for(;"yes"==c.sheetobj.rowattribs.hide[l.row];)l.row++;for(l.coord=t.crToCoord(l.col,l.row),i=0;i<c.rowpanes.length;i++){if(r=c.rowpanes[i].first,a=c.rowpanes[i].last,l.row>=r&&l.row<=a){var h=2+u+l.row-r;null!==e.fullgrid&&h>=0&&(s=e.fullgrid.childNodes[1].childNodes[h].childNodes[0],s&&(c.classnames&&(s.className=c.classnames[o+"rowname"]),c.explicitStyles&&(s.style.cssText=c.explicitStyles[o+"rowname"]),s.style.verticalAlign="top"))}u+=a-r+1+1}for(n=0;n<c.colpanes.length;n++){if(r=c.colpanes[n].first,a=c.colpanes[n].last,l.col>=r&&l.col<=a){var h=1+d+l.col-r;null!==e.fullgrid&&h>=0&&(s=e.fullgrid.childNodes[1].childNodes[1].childNodes[h],s&&(c.classnames&&(s.className=c.classnames[o+"colname"]),c.explicitStyles&&(s.style.cssText=c.explicitStyles[o+"colname"])))}d+=a-r+1+1}}}},t.ECellReadonly=function(e,t){if(!t&&e.ecell&&(t=e.ecell.coord),!t)return!1;var o=e.context.sheetobj.cells[t];return o&&o.readonly},t.RangeAnchor=function(e,t){e.range.hasrange&&e.RangeRemove(),e.RangeExtend(t)},t.RangeExtend=function(e,o){var i,n,r,a,s,l,c,u=e.context.highlights,d=e.range,h=e.range2;if(o?(c=t.coordToCr(o),c.coord=o):c=e.ecell,c){d.hasrange||(d.anchorcoord=c.coord,d.anchorrow=c.row,d.top=c.row,d.bottom=c.row,d.anchorcol=c.col,d.left=c.col,d.right=c.col,d.hasrange=!0),d.anchorrow<c.row?(d.top=d.anchorrow,d.bottom=c.row):(d.top=c.row,d.bottom=d.anchorrow),d.anchorcol<c.col?(d.left=d.anchorcol,d.right=c.col):(d.left=c.col,d.right=d.anchorcol);for(r in u)switch(u[r]){case"range":u[r]="unrange";break;case"range2":u[r]="unrange2"}for(a=d.top;a<=d.bottom;a++)for(s=d.left;s<=d.right;s++)switch(r=t.crToCoord(s,a),u[r]){case"unrange":u[r]="range";break;case"cursor":break;case"unrange2":default:u[r]="newrange"}for(a=h.top;h.hasrange&&a<=h.bottom;a++)for(s=h.left;s<=h.right;s++)switch(r=t.crToCoord(s,a),u[r]){case"unrange2":u[r]="range2";break;case"range":case"newrange":case"cursor":break;default:u[r]="newrange2"}for(r in u){switch(u[r]){case"unrange":delete u[r];break;case"newrange":u[r]="range";break;case"newrange2":u[r]="range2";break;case"range":case"range2":case"cursor":continue}n=t.coordToCr(r),i=t.GetEditorCellElement(e,n.row,n.col),e.UpdateCellCSS(i,n.row,n.col)}for(l in e.RangeChangeCallback)e.RangeChangeCallback[l](e);r=t.crToCoord(e.range.left,e.range.top),(e.range.left!=e.range.right||e.range.top!=e.range.bottom)&&(r+=":"+t.crToCoord(e.range.right,e.range.bottom));for(l in e.StatusCallback)e.StatusCallback[l].func(e,"rangechange",r,e.StatusCallback[l].params)}},t.RangeRemove=function(e){var o,i,n,r,a,s,l=e.context.highlights,c=e.range,u=e.range2;if(c.hasrange||u.hasrange){for(r=u.top;u.hasrange&&r<=u.bottom;r++)for(a=u.left;a<=u.right;a++)switch(n=t.crToCoord(a,r),l[n]){case"range":l[n]="newrange2";break;case"range2":case"cursor":break;default:l[n]="newrange2"}for(n in l){switch(l[n]){case"range":delete l[n];break;case"newrange2":l[n]="range2";break;case"cursor":continue}i=t.coordToCr(n),o=t.GetEditorCellElement(e,i.row,i.col),e.UpdateCellCSS(o,i.row,i.col)}c.hasrange=!1;for(s in e.RangeChangeCallback)e.RangeChangeCallback[s](e);for(s in e.StatusCallback)e.StatusCallback[s].func(e,"rangechange","",e.StatusCallback[s].params)}},t.Range2Remove=function(e){var o,i,n,r=e.context.highlights,a=e.range2;if(a.hasrange){for(n in r){switch(r[n]){case"range2":delete r[n];break;case"range":case"cursor":continue}i=t.coordToCr(n),o=t.GetEditorCellElement(e,i.row,i.col),e.UpdateCellCSS(o,i.row,i.col)}a.hasrange=!1}},t.FitToEditTable=function(e){{var o,i,n,r,a,s,l,c,u=e.context,d=u.sheetobj;d.colattribs}for(r=u.showRCHeaders?u.rownamewidth-0:0,colpane=0;colpane<u.colpanes.length-1;colpane++)for(o=u.colpanes[colpane].first;o<=u.colpanes[colpane].last;o++)i=t.rcColname(o),"yes"!=d.colattribs.hide[i]&&(n=d.colattribs.width[i]||d.attribs.defaultcolwidth||t.Constants.defaultColWidth,("blank"==n||"auto"==n)&&(n=""),r+=n&&n-0>0?n-0:10);for(o=u.colpanes[colpane].first;1e4>=o&&(i=t.rcColname(o),"yes"!=d.colattribs.hide[i]&&(n=d.colattribs.width[i]||d.attribs.defaultcolwidth||t.Constants.defaultColWidth,("blank"==n||"auto"==n)&&(n=""),r+=n&&n-0>0?n-0:10),!(r>e.tablewidth));o++);u.colpanes[colpane].last=u.sheetobj.attribs.usermaxcol||o;for(var h=u.rowpanes[0].first,p=u.sheetobj.attribs.lastrow;"yes"==d.rowattribs.hide[h]&&p>h;)h++;for(u.rowpanes[0].first=h,a=u.showRCHeaders?1:0,l=0;l<u.rowpanes.length-1;l++)for(a+=u.rowpanes[l].last-u.rowpanes[l].first+1,s=u.rowpanes[l].first;s<=u.rowpanes[l].last;s++)"yes"==d.rowattribs.hide[s]&&a--;c=e.tableheight-a*u.pixelsPerRow,u.rowpanes[l].last=u.sheetobj.attribs.usermaxrow||u.rowpanes[l].first+Math.floor(c/u.pixelsPerRow)+1},t.CalculateEditorPositions=function(e){var o,i,n;e.gridposition=t.GetElementPosition(e.griddiv);var r=e.griddiv.firstChild.lastChild.childNodes[1].childNodes[0];for(e.headposition=t.GetElementPosition(r),e.headposition.left+=r.offsetWidth,e.headposition.top+=r.offsetHeight,e.rowpositions=[],o=0;o<e.context.rowpanes.length;o++)e.CalculateRowPositions(o,e.rowpositions,e.rowheight);for(n=0;n<e.rowpositions.length&&!(e.rowpositions[n]>e.gridposition.top+e.tableheight);n++);for(e.lastvisiblerow=n-1,e.colpositions=[],i=0;i<e.context.colpanes.length;i++)e.CalculateColPositions(i,e.colpositions,e.colwidth);for(n=0;n<e.colpositions.length&&!(e.colpositions[n]>e.gridposition.left+e.tablewidth);n++);for(e.lastvisiblecol=n-1,e.firstscrollingrow=e.context.rowpanes[e.context.rowpanes.length-1].first;"yes"==e.context.sheetobj.rowattribs.hide[e.firstscrollingrow];)e.firstscrollingrow++;for(e.firstscrollingrowtop=e.rowpositions[e.firstscrollingrow]||e.headposition.top,e.lastnonscrollingrow=e.context.rowpanes.length-1>0?e.context.rowpanes[e.context.rowpanes.length-2].last:0,e.firstscrollingcol=e.context.colpanes[e.context.colpanes.length-1].first;"yes"==e.context.sheetobj.colattribs.hide[t.rcColname(e.firstscrollingcol)];)e.firstscrollingcol++;e.firstscrollingcolleft=e.colpositions[e.firstscrollingcol]||e.headposition.left,e.lastnonscrollingcol=e.context.colpanes.length-1>0?e.context.colpanes[e.context.colpanes.length-2].last:0,e.verticaltablecontrol.ComputeTableControlPositions(),e.horizontaltablecontrol.ComputeTableControlPositions()},t.ScheduleRender=function(o){1!=o.ignoreRender&&(o.timeout&&e.clearTimeout(o.timeout),t.EditorSheetStatusCallback(null,"schedrender",null,o),o.timeout=e.setTimeout(function(){t.DoRenderStep(o)},1))},t.DoRenderStep=function(o){o.timeout=null,o.EditorRenderSheet(),t.EditorSheetStatusCallback(null,"renderdone",null,o),t.EditorSheetStatusCallback(null,"schedposcalc",null,o),o.timeout=e.setTimeout(function(){t.DoPositionCalculations(o)},1)},t.SchedulePositionCalculations=function(o){t.EditorSheetStatusCallback(null,"schedposcalc",null,o),o.timeout=e.setTimeout(function(){t.DoPositionCalculations(o)},1)},t.DoPositionCalculations=function(e){e.timeout=null,e.CalculateEditorPositions(),e.verticaltablecontrol.PositionTableControlElements(),e.horizontaltablecontrol.PositionTableControlElements(),t.EditorSheetStatusCallback(null,"doneposcalc",null,e),e.ensureecell&&e.ecell&&!e.deferredCommands.length&&(e.ensureecell=!1,e.EnsureECellVisible()),e.cellhandles.ShowCellHandles(!0)},t.CalculateRowPositions=function(e,t,o,i){{var n,r,a,s,l,c,u=e.context;u.sheetobj}if(u.showRCHeaders){for(c=e.fullgrid.lastChild,n=2,r=0;t>r;r++)n+=u.rowpanes[r].last-u.rowpanes[r].first+2;for(s=0,a=u.rowpanes[r].first;a<=u.rowpanes[r].last;a++)l=c.childNodes[n+s],s++,l&&(o[a]||(o[a]=l.firstChild.offsetTop,i[a]=l.firstChild.offsetHeight))}},t.CalculateColPositions=function(e,o,i,n){{var r,a,s,l,c,u,d,h=e.context;h.sheetobj}if(h.showRCHeaders){for(d=e.fullgrid.lastChild,r=1,a=0;o>a;a++)r+=h.colpanes[a].last-h.colpanes[a].first+2;for(c=d.childNodes[1],l=0,s=h.colpanes[a].first;s<=h.colpanes[a].last;s++)u=t.GetElementPosition(c.childNodes[r+l]),i[s]||(i[s]=u.left,c.childNodes[r+l]&&(n[s]=c.childNodes[r+l].offsetWidth)),l++}},t.ScrollRelative=function(e,t,o){t?e.ScrollRelativeBoth(o,0):e.ScrollRelativeBoth(0,o)},t.ScrollRelativeBoth=function(e,o,i){var n=e.context,r=o>0?1:-1,a=i>0?1:-1,s=n.rowpanes.length,l=s>1?n.rowpanes[s-2].last+1:1;n.rowpanes[s-1].first+o<l&&(o=-n.rowpanes[s-1].first+l);var c=n.colpanes.length,u=c>1?n.colpanes[c-2].last+1:1;for(n.colpanes[c-1].first+i<u&&(i=-n.colpanes[c-1].first+u);"yes"==n.sheetobj.colattribs.hide[t.rcColname(n.colpanes[c-1].first+i)];)if(i+=a,1>i){i=0;break}for(;"yes"==n.sheetobj.rowattribs.hide[n.rowpanes[s-1].first+o];)if(o+=r,1>o){o=0;break}return 1!=o&&-1!=o||0!=i?void((0!=o||0!=i)&&(n.rowpanes[s-1].first+=o,n.rowpanes[s-1].last+=o,n.colpanes[c-1].first+=i,n.colpanes[c-1].last+=i,e.LimitLastPanes(),e.FitToEditTable(),e.ScheduleRender())):(1==o?e.ScrollTableUpOneRow():e.ScrollTableDownOneRow(),e.ecell&&e.SetECellHeaders("selected"),void e.SchedulePositionCalculations())},t.PageRelative=function(e,o,i){var n,r,a,s,l=e.context,c=o?"rowpanes":"colpanes",u=l[c][l[c].length-1],d=o?"lastvisiblerow":"lastvisiblecol",h=o?e.rowheight:e.colwidth,p=o?t.Constants.defaultAssumedRowHeight:t.Constants.defaultColWidth;if(i>0)r=e[d],r==u.first&&(r+=1);else{for(a=o?e.tableheight-(e.firstscrollingrowtop-e.gridposition.top):e.tablewidth-(e.firstscrollingcolleft-e.gridposition.left),a-=h[e[d]]>0?h[e[d]]:p,r=u.first-1;r>0&&(n=h[r]>0?h[r]:p,!(n>a));r--)a-=n;s=u.first,r>=s&&(r=s-1),1>r&&(r=1)}u.first=r,u.last=r+1,e.LimitLastPanes(),e.FitToEditTable(),e.ScheduleRender()},t.LimitLastPanes=function(e){var t,o=e.context;t=o.rowpanes.length,t>1&&o.rowpanes[t-1].first<=o.rowpanes[t-2].last&&(o.rowpanes[t-1].first=o.rowpanes[t-2].last+1),o.sheetobj.attribs.usermaxrow&&o.rowpanes[t-1].first>o.sheetobj.attribs.usermaxrow&&(o.rowpanes[t-1].first=o.sheetobj.attribs.usermaxrow),t=o.colpanes.length,t>1&&o.colpanes[t-1].first<=o.colpanes[t-2].last&&(o.colpanes[t-1].first=o.colpanes[t-2].last+1),o.sheetobj.attribs.usermaxcol&&o.colpanes[t-1].first>o.sheetobj.attribs.usermaxcol&&(o.colpanes[t-1].first=o.sheetobj.attribs.usermaxcol)},t.ScrollTableUpOneRow=function(e){var o,i,n,r,a,s,l,c,u,d,h,p,f={},m=e.context,g=m.sheetobj,v=e.fullgrid;for(p=v.lastChild,o=m.showRCHeaders?2:1,i=0;i<m.rowpanes.length-1;i++)o+=m.rowpanes[i].last-m.rowpanes[i].first+2;if(m.sheetobj.attribs.usermaxrow&&m.sheetobj.attribs.usermaxrow-m.rowpanes[i].first<1)return v;for(p.removeChild(p.childNodes[o]),m.rowpanes[i].first++,m.rowpanes[i].last++,e.FitToEditTable(),m.CalculateColWidthData(),m.sheetobj.attribs.usermaxrow&&m.rowpanes[i].last==m.sheetobj.attribs.usermaxrow||(c=m.RenderRow(m.rowpanes[i].last,i),p.appendChild(c)),maxrowspan=1,l=m.rowpanes[i].first-1,a=0;a<m.colpanes.length;a++)for(r=m.colpanes[a].first;r<=m.colpanes[a].last;r++)coord=t.crToCoord(r,l),m.cellskip[coord]||(s=g.cells[coord],s&&s.rowspan>maxrowspan&&(maxrowspan=s.rowspan));if(maxrowspan>1)for(n=1;maxrowspan>n&&!(n+l>=m.rowpanes[i].last);n++)u=m.RenderRow(n+l,i),d=p.childNodes[o+n-1],p.replaceChild(u,d);for(h=m.rowpanes[i].last,a=0;a<m.colpanes.length;a++)for(r=m.colpanes[a].first;r<=m.colpanes[a].last;r++)coord=m.cellskip[t.crToCoord(r,h)],coord&&(n=m.coordToCR[coord].row-0,n==m.rowpanes[i].last||n<m.rowpanes[i].first||(s=g.cells[coord],s&&s.rowspan>1&&(f[n]=!0)));for(n in f)u=m.RenderRow(n,i),d=p.childNodes[o+(n-m.rowpanes[i].first)],p.replaceChild(u,d);return v},t.ScrollTableDownOneRow=function(e){var o,i,n,r,a,s,l,c,u,d,h,p={},f=e.context,m=f.sheetobj,g=e.fullgrid;for(h=g.lastChild,o=f.showRCHeaders?2:1,i=0;i<f.rowpanes.length-1;i++)o+=f.rowpanes[i].last-f.rowpanes[i].first+2;for(f.sheetobj.attribs.usermaxrow||h.removeChild(h.childNodes[o+(f.rowpanes[i].last-f.rowpanes[i].first)]),f.rowpanes[i].first--,f.rowpanes[i].last--,e.FitToEditTable(),f.CalculateColWidthData(),c=f.RenderRow(f.rowpanes[i].first,i),h.insertBefore(c,h.childNodes[o]),maxrowspan=1,l=f.rowpanes[i].first,a=0;a<f.colpanes.length;a++)for(r=f.colpanes[a].first;r<=f.colpanes[a].last;r++)coord=t.crToCoord(r,l),f.cellskip[coord]||(s=m.cells[coord],s&&s.rowspan>maxrowspan&&(maxrowspan=s.rowspan));if(maxrowspan>1)for(n=1;maxrowspan>n&&!(n+l>f.rowpanes[i].last);n++)c=f.RenderRow(n+l,i),u=h.childNodes[o+n],h.replaceChild(c,u);for(d=f.rowpanes[i].last,a=0;a<f.colpanes.length;a++)for(r=f.colpanes[a].first;r<=f.colpanes[a].last;r++)coord=t.crToCoord(r,d),s=m.cells[coord],s&&s.rowspan>1?p[d]=!0:(coord=f.cellskip[t.crToCoord(r,d)],coord&&(n=f.coordToCR[coord].row-0,n==d||n<f.rowpanes[i].first||(s=m.cells[coord],s&&s.rowspan>1&&(p[n]=!0))));for(n in p)c=f.RenderRow(n,i),u=h.childNodes[o+(n-f.rowpanes[i].first)],h.replaceChild(c,u);return g},t.InputBox=function(e,o){e&&(this.element=e,this.editor=o,this.inputEcho=null,o.inputBox=this,e.onmousedown=t.InputBoxOnMouseDown,o.MoveECellCallback.formulabar=function(e){"start"==e.state&&o.inputBox.DisplayCellContents(e.ecell.coord)})},t.InputBox.prototype.DisplayCellContents=function(e){t.InputBoxDisplayCellContents(this,e)},t.InputBox.prototype.ShowInputBox=function(e){this.editor.inputEcho.ShowInputEcho(e)},t.InputBox.prototype.GetText=function(){return this.element.value},t.InputBox.prototype.SetText=function(e){this.element&&(this.element.value=e,this.editor.inputEcho.SetText(e+"_"))},t.InputBox.prototype.Focus=function(){t.InputBoxFocus(this)},t.InputBox.prototype.Blur=function(){return this.element.blur()},t.InputBox.prototype.Select=function(e){if(this.element)switch(e){case"end":if(document.selection&&document.selection.createRange)try{var t=document.selection.createRange().duplicate();t.moveToElementText(this.element),t.collapse(!1),t.select()}catch(o){void 0!=this.element.selectionStart&&(this.element.selectionStart=this.element.value.length,this.element.selectionEnd=this.element.value.length)}else void 0!=this.element.selectionStart&&(this.element.selectionStart=this.element.value.length,this.element.selectionEnd=this.element.value.length)}},t.InputBoxDisplayCellContents=function(e,o){var i=t.Constants;if(e){if(!o){if(!e.editor)return;if(!e.editor.ecell)return;o=e.editor.ecell.coord}var n=t.GetCellContents(e.editor.context.sheetobj,o);-1!=n.indexOf("\n")?(n=i.s_inputboxdisplaymultilinetext,e.element.disabled=!0):e.element.disabled=e.editor.ECellReadonly()?!0:!1,e.SetText(n)}},t.InputBoxFocus=function(e){if(e){e.element.focus();var t=e.editor;t.state="input";var o=t.workingvalues;o.partialexpr="",o.ecoord=t.ecell.coord,o.erow=t.ecell.row,o.ecol=t.ecell.col}},t.InputBoxOnMouseDown=function(){var e=t.Keyboard.focusTable;if(!e)return!0;var o=e.workingvalues;switch(e.state){case"start":e.state="inputboxdirect",o.partialexpr="",o.ecoord=e.ecell.coord,o.erow=e.ecell.row,o.ecol=e.ecell.col,e.inputEcho.ShowInputEcho(!0);break;case"input":o.partialexpr="",e.MoveECell(o.ecoord),e.state="inputboxdirect",t.KeyboardFocus();break;case"inputboxdirect":}},t.InputEcho=function(e){var o=t.Constants;this.editor=e,this.text="",this.interval=null,this.container=null,this.main=null,this.prompt=null,this.hint=null,this.functionbox=null,this.container=document.createElement("div"),t.setStyles(this.container,"display:none;position:absolute;zIndex:10;"),this.main=document.createElement("div"),o.defaultInputEchoClass&&(this.main.className=o.defaultInputEchoClass),o.defaultInputEchoStyle&&t.setStyles(this.main,o.defaultInputEchoStyle),this.main.innerHTML="&nbsp;",this.hint=document.createElement("div"),o.defaultInputEchoHintClass&&(this.hint.className=o.defaultInputEchoHintClass),o.defaultInputEchoHintStyle&&t.setStyles(this.hint,o.defaultInputEchoHintStyle),this.hint.innerHTML="",this.container.appendChild(this.hint),this.container.appendChild(this.main),this.prompt=document.createElement("div"),o.defaultInputEchoPromptClass&&(this.prompt.className=o.defaultInputEchoPromptClass),o.defaultInputEchoPromptStyle&&t.setStyles(this.prompt,o.defaultInputEchoPromptStyle),this.prompt.innerHTML="",this.container.appendChild(this.prompt),t.DragRegister(this.main,!0,!0,{MouseDown:t.DragFunctionStart,MouseMove:t.DragFunctionPosition,MouseUp:t.DragFunctionPosition,Disabled:null,positionobj:this.container},this.editor.toplevel),e.toplevel.appendChild(this.container)},t.InputEcho.prototype.ShowInputEcho=function(e){return t.ShowInputEcho(this,e)},t.InputEcho.prototype.SetText=function(e){return t.SetInputEchoText(this,e)},t.ShowInputEcho=function(o,i){var n,r,a=o.editor;a&&(i?(a.cellhandles.ShowCellHandles(!1),n=t.GetEditorCellElement(a,a.ecell.row,a.ecell.col),n&&(r=t.GetElementPosition(n.element),o.container.style.left=r.left-1+"px",o.container.style.top=r.top-1+"px"),o.hint.innerHTML=a.ecell.coord,o.container.style.display="block",o.interval&&e.clearInterval(o.interval),o.interval=e.setInterval(t.InputEchoHeartbeat,50)):(o.interval&&e.clearInterval(o.interval),o.container.style.display="none"))},t.SetInputEchoText=function(e,o){var i,n,r=t.Constants,a=t.special_chars(o);a=a.replace(/\n/g,"<br>"),e.text!=a&&(e.main.innerHTML=a,e.text=a);var s=o.match(/.*[\+\-\*\/\&\^\<\>\=\,\(]([A-Za-z][A-Za-z][\w\.]*?)\([^\)]*$/);"="==o.charAt(0)&&s?(i=s[1].toUpperCase(),t.Formula.FunctionList[i]?(t.Formula.FillFunctionInfo(),n=t.special_chars(i+"("+t.Formula.FunctionArgString(i)+")")):n=r.ietUnknownFunction+i,e.prompt.innerHTML!=n&&(e.prompt.innerHTML=n,e.prompt.style.display="block")):"none"!=e.prompt.style.display&&(e.prompt.innerHTML="",e.prompt.style.display="none")},t.InputEchoHeartbeat=function(){var e=t.Keyboard.focusTable;return e?void e.inputEcho.SetText(e.inputBox.GetText()+"_"):!0},t.InputEchoMouseDown=function(o){var i=(o||e.event,t.Keyboard.focusTable);return i?void i.inputBox.element.focus():!0},t.CellHandles=function(e){t.Constants;if(!e.noEdit){this.editor=e,this.noCursorSuffix=!1,this.movedmouse=!1,this.draghandle=document.createElement("div"),t.setStyles(this.draghandle,"display:none;position:absolute;zIndex:8;border:1px solid white;width:4px;height:4px;fontSize:1px;backgroundColor:#0E93D8;cursor:default;"),this.draghandle.innerHTML="&nbsp;",e.toplevel.appendChild(this.draghandle),t.AssignID(e,this.draghandle,"draghandle");var o="png";if(navigator.userAgent.match(/MSIE 6\.0/)&&(o="gif"),this.dragpalette=document.createElement("div"),t.setStyles(this.dragpalette,"display:none;position:absolute;zIndex:8;width:90px;height:90px;fontSize:1px;textAlign:center;cursor:default;backgroundImage:url("+t.Constants.defaultImagePrefix+"drag-handles."+o+");"),this.dragpalette.innerHTML="&nbsp;",e.toplevel.appendChild(this.dragpalette),t.AssignID(e,this.dragpalette,"dragpalette"),this.dragtooltip=document.createElement("div"),t.setStyles(this.dragtooltip,"display:none;position:absolute;zIndex:9;border:1px solid black;width:100px;height:auto;fontSize:10px;backgroundColor:#FFFFFF;"),this.dragtooltip.innerHTML="&nbsp;",e.toplevel.appendChild(this.dragtooltip),t.AssignID(e,this.dragtooltip,"dragtooltip"),this.fillinghandle=document.createElement("div"),t.setStyles(this.fillinghandle,"display:none;position:absolute;zIndex:9;border:1px solid black;width:auto;height:14px;fontSize:10px;backgroundColor:#FFFFFF;"),this.fillinghandle.innerHTML="&nbsp;",e.toplevel.appendChild(this.fillinghandle),t.AssignID(e,this.fillinghandle,"fillinghandle"),this.draghandle.addEventListener)this.draghandle.addEventListener("mousemove",t.CellHandlesMouseMoveOnHandle,!1),this.dragpalette.addEventListener("mousedown",t.CellHandlesMouseDown,!1),this.dragpalette.addEventListener("mousemove",t.CellHandlesMouseMoveOnHandle,!1);else{if(!this.draghandle.attachEvent)throw"Browser not supported";this.draghandle.attachEvent("onmousemove",t.CellHandlesMouseMoveOnHandle),this.dragpalette.attachEvent("onmousedown",t.CellHandlesMouseDown),this.dragpalette.attachEvent("onmousemove",t.CellHandlesMouseMoveOnHandle)}}},t.CellHandles.prototype.ShowCellHandles=function(e,o){return t.ShowCellHandles(this,e,o)},t.ShowCellHandles=function(e,o,i){var n,r,a,s=e.editor,l=!1,c=1,u=1;if(s&&s.ecell){do{if(!o)break;if(r=s.ecell.row,a=s.ecell.col,"start"!=s.state)break;if(r>=s.lastvisiblerow)break;if(a>=s.lastvisiblecol)break;if(r<s.firstscrollingrow)break;if(a<s.firstscrollingcol)break;for(;"yes"==s.context.sheetobj.colattribs.hide[t.rcColname(a+c)];)c++;for(;"yes"==s.context.sheetobj.rowattribs.hide[r+u];)u++;if(n=s.context.sheetobj.cells[t.crToCoord(a+c-1,r+u-1)],"undefined"!=typeof n&&(c+=(n.colspan||1)-1,u+=(n.rowspan||1)-1),s.rowpositions[r+u]+20>s.horizontaltablecontrol.controlborder)break;if(s.rowpositions[r+u]-10<s.headposition.top)break;if(s.colpositions[a+c]+20>s.verticaltablecontrol.controlborder)break;if(s.colpositions[a+c]-30<s.headposition.left)break;e.draghandle.style.left=s.colpositions[a+c]-1+"px",e.draghandle.style.top=s.rowpositions[r+u]-1+"px",e.draghandle.style.display="block",i&&(e.draghandle.style.display="none",e.dragpalette.style.left=s.colpositions[a+c]-45+"px",e.dragpalette.style.top=s.rowpositions[r+u]-45+"px",e.dragpalette.style.display="block",e.dragtooltip.style.left=s.colpositions[a+c]-45+"px",e.dragtooltip.style.top=s.rowpositions[r+u]+45+"px",e.dragtooltip.style.display="none"),l=!0}while(!1);l||(e.draghandle.style.display="none"),i||(e.dragpalette.style.display="none",e.dragtooltip.style.display="none")}},t.CellHandlesMouseMoveOnHandle=function(o){var i=t.Constants,n=o||e.event,r=n.target||n.srcElement,a=t.Keyboard.focusTable;if(!a)return!0;var s=a.cellhandles;if(!s.editor)return!0;var l=t.GetElementPositionWithScroll(a.toplevel),c=n.clientX-l.left,u=n.clientY-l.top;if(!a.cellhandles.mouseDown){if(a.cellhandles.ShowCellHandles(!0,!0),r==s.dragpalette){var d=t.SegmentDivHit([i.CH_radius1,i.CH_radius2],a.cellhandles.dragpalette,c,u);if(0==d)return void t.CellHandlesHoverTimeout()}s.timer&&(e.clearTimeout(s.timer),s.timer=null),s.timer=e.setTimeout(t.CellHandlesHoverTimeout,3e3)}},t.SegmentDivHit=function(e,t,o,i){var n=t.offsetWidth,r=t.offsetHeight,a=t.offsetLeft,s=t.offsetTop,l=0,c=e,u=Math.sqrt(Math.pow(o-a-(n/2-.5),2)+Math.pow(i-s-(r/2-.5),2));if(2==c.length)return o>=a&&a+n/2>o&&i>=s&&s+r/2>i&&(u<=e[0]?l=-1:u<=e[1]&&(l=1)),o>=a+n/2&&a+n>o&&i>=s&&s+r/2>i&&(u<=e[0]?l=-2:u<=e[1]&&(l=2)),o>=a+n/2&&a+n>o&&i>=s+r/2&&s+r>i&&(u<=e[0]?l=-3:u<=e[1]&&(l=3)),o>=a&&a+n/2>o&&i>=s+r/2&&s+r>i&&(u<=e[0]?l=-4:u<=e[1]&&(l=4)),l;for(;;)if(o>=a&&a+n/2>o&&i>=s&&s+r/2>i){if(quadrant+="1",l=c[0],"number"==typeof l)break;c=l,n/=2,r/=2}else if(o>=a+n/2&&a+n>o&&i>=s&&s+r/2>i){if(quadrant+="2",l=c[1],"number"==typeof l)break;c=l,n/=2,a+=n,r/=2}else if(o>=a+n/2&&a+n>o&&i>=s+r/2&&s+r>i){if(quadrant+="3",l=c[2],"number"==typeof l)break;c=l,n/=2,a+=n,r/=2,s+=r}else{if(!(o>=a&&a+n/2>o&&i>=s+r/2&&s+r>i))return 0;if(quadrant+="4",l=c[3],"number"==typeof l)break;c=l,n/=2,r/=2,s+=r}return l},t.CellHandlesHoverTimeout=function(){if(editor=t.Keyboard.focusTable,!editor)return!0;var o=editor.cellhandles;o.timer&&(e.clearTimeout(o.timer),o.timer=null),editor.cellhandles.ShowCellHandles(!0,!1)},t.CellHandlesMouseDown=function(o){var i,n,r,a=t.Constants,s=o||e.event,l=t.EditorMouseInfo;if(i=t.Keyboard.focusTable,!i)return!0;if(!i.busy){var c=i.cellhandles;c.movedmouse=!1;var u=t.GetElementPositionWithScroll(i.toplevel),d=s.clientX-u.left,h=s.clientY-u.top;c.timer&&(e.clearTimeout(c.timer),c.timer=null),c.dragtooltip.innerHTML="&nbsp;",c.dragtooltip.style.display="none",r=i.range;var p=t.SegmentDivHit([a.CH_radius1,a.CH_radius2],i.cellhandles.dragpalette,d,h);if(1==p||-1==p||0==p)return void c.ShowCellHandles(!0,!1);switch(l.ignore=!0,-3==p?(c.dragtype="Fill",c.noCursorSuffix=!1):3==p?(c.dragtype="FillC",c.noCursorSuffix=!1):-2==p?(c.dragtype="Move",c.noCursorSuffix=!0):-4==p?(c.dragtype="MoveI",c.noCursorSuffix=!1):2==p?(c.dragtype="MoveC",c.noCursorSuffix=!0):4==p&&(c.dragtype="MoveIC",c.noCursorSuffix=!1),c.filltype=null,c.dragtype){case"Fill":case"FillC":r.hasrange||i.RangeAnchor(),i.range2.top=i.range.top,i.range2.right=i.range.right,i.range2.bottom=i.range.bottom,i.range2.left=i.range.left,i.range2.hasrange=!0;break;case"Move":case"MoveI":case"MoveC":case"MoveIC":r.hasrange||i.RangeAnchor(),i.range2.top=i.range.top,i.range2.right=i.range.right,i.range2.bottom=i.range.bottom,i.range2.left=i.range.left,i.range2.hasrange=!0,i.RangeRemove();break;default:return}c.fillinghandle.style.left=d+"px",c.fillinghandle.style.top=h-17+"px",c.fillinghandle.innerHTML=a.s_CHindicatorOperationLookup[c.dragtype]+(a.s_CHindicatorDirectionLookup[i.cellhandles.filltype]||""),c.fillinghandle.style.display="block",c.ShowCellHandles(!0,!1),c.mouseDown=!0,l.editor=i,n=i.ecell.coord,c.startingcoord=n,c.startingX=d,c.startingY=h,l.mouselastcoord=n,t.KeyboardSetFocus(i),document.addEventListener?(document.addEventListener("mousemove",t.CellHandlesMouseMove,!0),document.addEventListener("mouseup",t.CellHandlesMouseUp,!0)):c.draghandle.attachEvent&&(c.draghandle.setCapture(),c.draghandle.attachEvent("onmousemove",t.CellHandlesMouseMove),c.draghandle.attachEvent("onmouseup",t.CellHandlesMouseUp),c.draghandle.attachEvent("onlosecapture",t.CellHandlesMouseUp)),t.StopPropagation(s)}},t.CellHandlesMouseMove=function(o){var i,n,r,a,s,l,c,u=t.Constants,d=o||e.event,h=t.EditorMouseInfo;if(i=h.editor){var p=i.cellhandles;n=h.element;var f=t.GetElementPositionWithScroll(i.toplevel),m=d.clientX-f.left,g=d.clientY-f.top;if(r=t.GridMousePosition(i,m,g)){if(r&&!r.coord)return void t.SetDragAutoRepeat(i,r,t.CellHandlesDragAutoRepeat);if(t.SetDragAutoRepeat(i,null),r.coord){switch(a=t.coordToCr(i.cellhandles.startingcoord),s=t.coordToCr(r.coord),p.movedmouse=!0,p.dragtype){case"Fill":case"FillC":r.coord==p.startingcoord?(p.filltype=null,p.startingX=m,p.startingY=g):p.filltype?"Down"==p.filltype?(s.col=a.col,s.row<a.row&&(s.row=a.row)):(s.row=a.row,s.col<a.col&&(s.col=a.col)):(Math.abs(g-p.startingY)>10?p.filltype="Down":Math.abs(m-p.startingX)>10&&(p.filltype="Right"),s.col=a.col,s.row=a.row),r.coord=t.crToCoord(s.col,s.row),r.coord!=h.mouselastcoord&&(i.MoveECell(r.coord),i.RangeExtend());break;case"Move":case"MoveC":r.coord!=h.mouselastcoord&&(i.MoveECell(r.coord),l=i.range2.right-i.range2.left+r.col,c=i.range2.bottom-i.range2.top+r.row,i.RangeAnchor(t.crToCoord(l,c)),i.RangeExtend());break;case"MoveI":case"MoveIC":r.coord==p.startingcoord?(p.filltype=null,p.startingX=m,p.startingY=g):p.filltype?"Vertical"==p.filltype?(s.col=i.range2.left,s.row>=i.range2.top&&s.row<=i.range2.bottom+1&&(s.row=i.range2.bottom+2)):(s.row=i.range2.top,s.col>=i.range2.left&&s.col<=i.range2.right+1&&(s.col=i.range2.right+2)):(Math.abs(g-p.startingY)>10?p.filltype="Vertical":Math.abs(m-p.startingX)>10&&(p.filltype="Horizontal"),s.col=a.col,s.row=a.row),r.coord=t.crToCoord(s.col,s.row),r.coord!=h.mouselastcoord&&(i.MoveECell(r.coord),p.filltype?(l=i.range2.right-i.range2.left+s.col,c=i.range2.bottom-i.range2.top+s.row,i.RangeAnchor(t.crToCoord(l,c)),i.RangeExtend()):i.RangeRemove())}p.fillinghandle.style.left=m+"px",p.fillinghandle.style.top=g-17+"px",p.fillinghandle.innerHTML=u.s_CHindicatorOperationLookup[p.dragtype]+(u.s_CHindicatorDirectionLookup[i.cellhandles.filltype]||""),p.fillinghandle.style.display="block",h.mouselastcoord=r.coord,t.StopPropagation(d)}}}},t.CellHandlesDragAutoRepeat=function(e,o){var i=t.EditorMouseInfo,n=i.editor;if(n){var r,a,s,l=n.cellhandles,c=t.coordToCr(n.cellhandles.startingcoord),u=t.coordToCr(e),d=0,h=0;switch("left"==o?h=-1:"right"==o?h=1:"up"==o?d=-1:"down"==o&&(d=1),n.ScrollRelativeBoth(d,h),l.dragtype){case"Fill":case"FillC":l.filltype?"Down"==l.filltype?(u.col=c.col,u.row<c.row&&(u.row=c.row)):(u.row=c.row,u.col<c.col&&(u.col=c.col)):(u.col=c.col,u.row=c.row),r=t.crToCoord(u.col,u.row),r!=i.mouselastcoord&&(n.MoveECell(e),n.RangeExtend());break;case"Move":case"MoveC":e!=i.mouselastcoord&&(n.MoveECell(e),a=n.range2.right-n.range2.left+n.ecell.col,s=n.range2.bottom-n.range2.top+n.ecell.row,n.RangeAnchor(t.crToCoord(a,s)),n.RangeExtend());break;case"MoveI":case"MoveIC":l.filltype?"Vertical"==l.filltype?(u.col=n.range2.left,u.row>=n.range2.top&&u.row<=n.range2.bottom+1&&(u.row=n.range2.bottom+2)):(u.row=n.range2.top,u.col>=n.range2.left&&u.col<=n.range2.right+1&&(u.col=n.range2.right+2)):(u.col=c.col,u.row=c.row),r=t.crToCoord(u.col,u.row),r!=i.mouselastcoord&&(n.MoveECell(r),a=n.range2.right-n.range2.left+u.col,s=n.range2.bottom-n.range2.top+u.row,n.RangeAnchor(t.crToCoord(a,s)),n.RangeExtend())}i.mouselastcoord=r}},t.CellHandlesMouseUp=function(o){var i,n,r,a,s,l,c,u,d,h,p,f,m=o||e.event,g=t.EditorMouseInfo;if(i=g.editor){var v=i.cellhandles;n=g.element,g.ignore=!1;var b=t.GetElementPositionWithScroll(i.toplevel),y=m.clientX-b.left,C=m.clientY-b.top;switch(r=t.GridMousePosition(i,y,C),t.SetDragAutoRepeat(i,null),v.mouseDown=!1,v.noCursorSuffix=!1,v.fillinghandle.style.display="none",r||(r={}),r.coord||(r.coord=i.ecell.coord),v.dragtype){case"Fill":case"Move":case"MoveI":l=" all";break;case"FillC":case"MoveC":case"MoveIC":l=" formulas"}switch(v.movedmouse||(v.dragtype="Nothing"),v.dragtype){case"Nothing":i.Range2Remove(),i.RangeRemove();break;case"Fill":case"FillC":c=t.coordToCr(v.startingcoord),u=t.coordToCr(r.coord),v.filltype&&("Down"==v.filltype?u.col=c.col:u.row=c.row),r.coord=t.crToCoord(u.col,u.row),i.MoveECell(r.coord),i.RangeExtend(),s="Right"==i.cellhandles.filltype?"right":"down",a="fill"+s+" "+t.crToCoord(i.range.left,i.range.top)+":"+t.crToCoord(i.range.right,i.range.bottom)+l,i.EditorScheduleSheetCommands(a,!0,!1);break;case"Move":case"MoveC":i.context.cursorsuffix="",a="movepaste "+t.crToCoord(i.range2.left,i.range2.top)+":"+t.crToCoord(i.range2.right,i.range2.bottom)+" "+i.ecell.coord+l,i.EditorScheduleSheetCommands(a,!0,!1),i.Range2Remove();break;case"MoveI":case"MoveIC":i.context.cursorsuffix="",d=i.range2.right-i.range2.left,h=i.range2.bottom-i.range2.top,p=i.ecell.col-i.range2.left,f=i.ecell.row-i.range2.top,a="moveinsert "+t.crToCoord(i.range2.left,i.range2.top)+":"+t.crToCoord(i.range2.right,i.range2.bottom)+" "+i.ecell.coord+l,i.EditorScheduleSheetCommands(a,!0,!1),i.Range2Remove(),i.RangeRemove()," Horizontal"==i.cellhandles.filltype&&p>0?i.MoveECell(t.crToCoord(i.ecell.col-d-1,i.ecell.row)):" Vertical"==i.cellhandles.filltype&&f>0&&i.MoveECell(t.crToCoord(i.ecell.col,i.ecell.row-h-1)),i.RangeAnchor(t.crToCoord(i.ecell.col+d,i.ecell.row+h)),i.RangeExtend()}return t.RemoveMouseMoveUp(t.CellHandlesMouseMove,t.CellHandlesMouseUp,v.draghandle,m),g.editor=null,!1}},t.TableControl=function(e,o,i){var n=t.Constants;this.editor=e,this.vertical=o,this.size=i,this.main=null,this.endcap=null,this.paneslider=null,this.lessbutton=null,this.morebutton=null,this.scrollarea=null,this.thumb=null,this.controlborder=null,this.endcapstart=null,this.panesliderstart=null,this.lessbuttonstart=null,this.morebuttonstart=null,this.scrollareastart=null,this.scrollareaend=null,this.scrollareasize=null,this.thumbpos=null,this.controlthickness=n.defaultTableControlThickness,this.sliderthickness=n.defaultTCSliderThickness,this.buttonthickness=n.defaultTCButtonThickness,this.thumbthickness=n.defaultTCThumbThickness,this.minscrollingpanesize=this.buttonthickness+this.buttonthickness+this.thumbthickness+20
-},t.TableControl.prototype.CreateTableControl=function(){return t.CreateTableControl(this)},t.TableControl.prototype.PositionTableControlElements=function(){t.PositionTableControlElements(this)},t.TableControl.prototype.ComputeTableControlPositions=function(){t.ComputeTableControlPositions(this)},t.CreateTableControl=function(e){var o,i,n,r=t.AssignID,a=t.setStyles,s=t.Constants,l=e.editor.imageprefix,c=e.vertical?"v":"h",u=t.LocalizeString;return e.main=document.createElement("div"),o=e.main.style,o.height=(e.vertical?e.size:e.controlthickness)+"px",o.width=(e.vertical?e.controlthickness:e.size)+"px",o.zIndex=0,a(e.main,s.TCmainStyle),o.backgroundImage="url("+l+"main-"+c+".gif)",s.TCmainClass&&(e.main.className=s.TCmainClass),e.main.style.display="none",e.endcap=document.createElement("div"),o=e.endcap.style,o.height=e.controlthickness+"px",o.width=e.controlthickness+"px",o.zIndex=1,o.overflow="hidden",o.position="absolute",a(e.endcap,s.TCendcapStyle),o.backgroundImage="url("+l+"endcap-"+c+".gif)",s.TCendcapClass&&(e.endcap.className=s.TCendcapClass),r(e.editor,e.endcap,"endcap"+c),e.main.appendChild(e.endcap),e.paneslider=document.createElement("div"),o=e.paneslider.style,o.height=(e.vertical?e.sliderthickness:e.controlthickness)+"px",o.overflow="hidden",o.width=(e.vertical?e.controlthickness:e.sliderthickness)+"px",o.position="absolute",o[e.vertical?"top":"left"]="4px",o.zIndex=3,o.backgroundImage="url("+l+"paneslider-"+c+".gif)",s.TCpanesliderClass&&(e.paneslider.className=s.TCpanesliderClass),r(e.editor,e.paneslider,"paneslider"+c),e.paneslider.title=u(e.vertical?"Drag to lock pane horizontally":"Drag to lock pane vertically"),i={MouseDown:t.TCPSDragFunctionStart,MouseMove:t.TCPSDragFunctionMove,MouseUp:t.TCPSDragFunctionStop,Disabled:function(){return e.editor.busy}},i.control=e,1!=t._app&&t.DragRegister(e.paneslider,e.vertical,!e.vertical,i,e.editor.toplevel),e.main.appendChild(e.paneslider),e.lessbutton=document.createElement("div"),o=e.lessbutton.style,o.height=(e.vertical?e.buttonthickness:e.controlthickness)+"px",o.width=(e.vertical?e.controlthickness:e.buttonthickness)+"px",o.zIndex=2,o.overflow="hidden",o.position="absolute",a(e.lessbutton,s.TClessbuttonStyle),o.backgroundImage="url("+l+"less-"+c+"n.gif)",s.TClessbuttonClass&&(e.lessbutton.className=s.TClessbuttonClass),r(e.editor,e.lessbutton,"lessbutton"+c),n={repeatwait:s.TClessbuttonRepeatWait,repeatinterval:s.TClessbuttonRepeatInterval,normalstyle:"backgroundImage:url("+l+"less-"+c+"n.gif);",downstyle:"backgroundImage:url("+l+"less-"+c+"d.gif);",hoverstyle:"backgroundImage:url("+l+"less-"+c+"h.gif);"},i={MouseDown:function(){e.editor.busy||e.editor.ScrollRelative(e.vertical,-1)},Repeat:function(){e.editor.busy||e.editor.ScrollRelative(e.vertical,-1)},Disabled:function(){return e.editor.busy}},t.ButtonRegister(e.editor,e.lessbutton,n,i),e.main.appendChild(e.lessbutton),e.morebutton=document.createElement("div"),o=e.morebutton.style,o.height=(e.vertical?e.buttonthickness:e.controlthickness)+"px",o.width=(e.vertical?e.controlthickness:e.buttonthickness)+"px",o.zIndex=2,o.overflow="hidden",o.position="absolute",a(e.morebutton,s.TCmorebuttonStyle),o.backgroundImage="url("+l+"more-"+c+"n.gif)",s.TCmorebuttonClass&&(e.morebutton.className=s.TCmorebuttonClass),r(e.editor,e.morebutton,"morebutton"+c),n={repeatwait:s.TCmorebuttonRepeatWait,repeatinterval:s.TCmorebuttonRepeatInterval,normalstyle:"backgroundImage:url("+l+"more-"+c+"n.gif);",downstyle:"backgroundImage:url("+l+"more-"+c+"d.gif);",hoverstyle:"backgroundImage:url("+l+"more-"+c+"h.gif);"},i={MouseDown:function(){e.editor.busy||e.editor.ScrollRelative(e.vertical,1)},Repeat:function(){e.editor.busy||e.editor.ScrollRelative(e.vertical,1)},Disabled:function(){return e.editor.busy}},t.ButtonRegister(e.editor,e.morebutton,n,i),e.main.appendChild(e.morebutton),e.scrollarea=document.createElement("div"),o=e.scrollarea.style,o.height=e.controlthickness+"px",o.width=e.controlthickness+"px",o.zIndex=1,o.overflow="hidden",o.position="absolute",a(e.scrollarea,s.TCscrollareaStyle),o.backgroundImage="url("+l+"scrollarea-"+c+".gif)",s.TCscrollareaClass&&(e.scrollarea.className=s.TCscrollareaClass),r(e.editor,e.scrollarea,"scrollarea"+c),n={repeatwait:s.TCscrollareaRepeatWait,repeatinterval:s.TCscrollareaRepeatWait},i={MouseDown:t.ScrollAreaClick,Repeat:t.ScrollAreaClick,Disabled:function(){return e.editor.busy}},i.control=e,t.ButtonRegister(e.editor,e.scrollarea,n,i),e.main.appendChild(e.scrollarea),e.thumb=document.createElement("div"),o=e.thumb.style,o.height=(e.vertical?e.thumbthickness:e.controlthickness)+"px",o.width=(e.vertical?e.controlthickness:e.thumbthickness)+"px",o.zIndex=2,o.overflow="hidden",o.position="absolute",a(e.thumb,s.TCthumbStyle),e.thumb.style.backgroundImage="url("+l+"thumb-"+c+"n.gif)",s.TCthumbClass&&(e.thumb.className=s.TCthumbClass),r(e.editor,e.thumb,"thumb"+c),i={MouseDown:t.TCTDragFunctionStart,MouseMove:t.TCTDragFunctionMove,MouseUp:t.TCTDragFunctionStop,Disabled:function(){return e.editor.busy}},i.control=e,1!=t._app&&t.DragRegister(e.thumb,e.vertical,!e.vertical,i,e.editor.toplevel),n={normalstyle:"backgroundImage:url("+l+"thumb-"+c+"n.gif)",name:"Thumb",downstyle:"backgroundImage:url("+l+"thumb-"+c+"d.gif)",hoverstyle:"backgroundImage:url("+l+"thumb-"+c+"h.gif)"},t.ButtonRegister(e.editor,e.thumb,n,null),e.main.appendChild(e.thumb),e.main},t.ScrollAreaClick=function(e,o,i){var n=i.functionobj.control,r=t.GetElementPositionWithScroll(n.editor.toplevel),a=n.vertical?o.clientY-r.top:o.clientX-r.left;n.editor.busy||n.editor.PageRelative(n.vertical,a>n.thumbpos?1:-1)},t.PositionTableControlElements=function(e){var t,o,i,n=e.editor;e.vertical?(t=e.controlborder+"px",e.endcap.style.top=e.endcapstart+"px",e.endcap.style.left=t,e.paneslider.style.top=e.panesliderstart+"px",e.paneslider.style.left=t,e.lessbutton.style.top=e.lessbuttonstart+"px",e.lessbutton.style.left=t,e.morebutton.style.top=e.morebuttonstart+"px",e.morebutton.style.left=t,e.scrollarea.style.top=e.scrollareastart+"px",e.scrollarea.style.left=t,e.scrollarea.style.height=e.scrollareasize+"px",o=Math.max(n.context.sheetobj.attribs.lastrow,n.firstscrollingrow+1),i=(n.firstscrollingrow-(n.lastnonscrollingrow+1))*(e.scrollareasize-3*e.thumbthickness)/(o-(n.lastnonscrollingrow+1))+e.scrollareastart-1,i=Math.floor(i),e.thumb.style.top=i+"px",e.thumb.style.left=t):(t=e.controlborder+"px",e.endcap.style.left=e.endcapstart+"px",e.endcap.style.top=t,e.paneslider.style.left=e.panesliderstart+"px",e.paneslider.style.top=t,e.lessbutton.style.left=e.lessbuttonstart+"px",e.lessbutton.style.top=t,e.morebutton.style.left=e.morebuttonstart+"px",e.morebutton.style.top=t,e.scrollarea.style.left=e.scrollareastart+"px",e.scrollarea.style.top=t,e.scrollarea.style.width=e.scrollareasize+"px",o=Math.max(n.context.sheetobj.attribs.lastcol,n.firstscrollingcol+1),i=(n.firstscrollingcol-(n.lastnonscrollingcol+1))*(e.scrollareasize-e.thumbthickness)/(o-n.lastnonscrollingcol)+e.scrollareastart-1,i=Math.floor(i),e.thumb.style.left=i+"px",e.thumb.style.top=t),e.thumbpos=i,e.main.style.display="block"},t.ComputeTableControlPositions=function(e){var t=e.editor;if(!t.gridposition||!t.headposition)throw"Can't compute table control positions before editor positions";e.vertical?(e.controlborder=t.gridposition.left+t.tablewidth,e.endcapstart=t.gridposition.top,e.panesliderstart=t.firstscrollingrowtop-e.sliderthickness,e.lessbuttonstart=t.firstscrollingrowtop-1,e.morebuttonstart=t.gridposition.top+t.tableheight-e.buttonthickness,e.scrollareastart=t.firstscrollingrowtop-1+e.buttonthickness,e.scrollareaend=e.morebuttonstart-1,e.scrollareasize=e.scrollareaend-e.scrollareastart+1):(e.controlborder=t.gridposition.top+t.tableheight,e.endcapstart=t.gridposition.left,e.panesliderstart=t.firstscrollingcolleft-e.sliderthickness,e.lessbuttonstart=t.firstscrollingcolleft-1,e.morebuttonstart=t.gridposition.left+t.tablewidth-e.buttonthickness,e.scrollareastart=t.firstscrollingcolleft-1+e.buttonthickness,e.scrollareaend=e.morebuttonstart-1,e.scrollareasize=e.scrollareaend-e.scrollareastart+1)},t.TCPSDragFunctionStart=function(e,o,i){var n=i.functionobj.control.editor,r=t.Constants;t.DragFunctionStart(e,o,i),o.trackingline=document.createElement("div"),o.trackingline.style.height=i.vertical?r.TCPStrackinglineThickness:n.tableheight-(n.headposition.top-n.gridposition.top)+"px",o.trackingline.style.width=i.vertical?n.tablewidth-(n.headposition.left-n.gridposition.left)+"px":r.TCPStrackinglineThickness,o.trackingline.style.backgroundImage="url("+n.imageprefix+"trackingline-"+(i.vertical?"v":"h")+".gif)",r.TCPStrackinglineClass&&(o.trackingline.className=r.TCPStrackinglineClass),t.setStyles(o.trackingline,r.TCPStrackinglineStyle),i.vertical?(row=t.Lookup(o.clientY+i.functionobj.control.sliderthickness,n.rowpositions),o.trackingline.style.top=(n.rowpositions[row]||n.headposition.top)+"px",o.trackingline.style.left=n.headposition.left+"px",o.trackingline.id="trackingline-vertical",n.context.rowpanes.length-1&&(n.context.SetRowPaneFirstLast(1,n.context.rowpanes[0].last+1,n.context.rowpanes[0].last+1),n.FitToEditTable(),n.ScheduleRender())):(col=t.Lookup(o.clientX+i.functionobj.control.sliderthickness,n.colpositions),o.trackingline.style.top=n.headposition.top+"px",o.trackingline.style.left=(n.colpositions[col]||n.headposition.left)+"px",o.trackingline.id="trackingline-horizon",n.context.colpanes.length-1&&(n.context.SetColPaneFirstLast(1,n.context.colpanes[0].last+1,n.context.colpanes[0].last+1),n.FitToEditTable(),n.ScheduleRender())),n.griddiv.appendChild(o.trackingline)},t.TCPSDragFunctionMove=function(e,o,i){var n,r,a,s,l=i.functionobj.control,c=l.sliderthickness,u=l.editor;if(i.vertical){for(a=l.morebuttonstart-l.minscrollingpanesize-o.offsetY,o.clientY>a&&(o.clientY=a),s=u.headposition.top-c-o.offsetY,o.clientY<s&&(o.clientY=s),n=t.Lookup(o.clientY+c,u.rowpositions);"yes"==u.context.sheetobj.rowattribs.hide[n];)n++;o.trackingline.style.top=(u.rowpositions[n]||u.headposition.top)+"px"}else{for(a=l.morebuttonstart-l.minscrollingpanesize-o.offsetX,o.clientX>a&&(o.clientX=a),s=u.headposition.left-c-o.offsetX,o.clientX<s&&(o.clientX=s),r=t.Lookup(o.clientX+c,u.colpositions);"yes"==u.context.sheetobj.colattribs.hide[t.rcColname(r)];)r++;o.trackingline.style.left=(u.colpositions[r]||u.headposition.left)+"px"}t.DragFunctionPosition(e,o,i)},t.TCPSDragFunctionStop=function(e,o,i){var n,r,a,s,l=i.functionobj.control,c=l.sliderthickness,u=l.editor;if(i.vertical){for(a=l.morebuttonstart-l.minscrollingpanesize-o.offsetY,o.clientY>a&&(o.clientY=a),s=u.headposition.top-c-o.offsetY,o.clientY<s&&(o.clientY=s),n=t.Lookup(o.clientY+c,u.rowpositions),n>u.context.sheetobj.attribs.lastrow&&(n=u.context.sheetobj.attribs.lastrow);"yes"==u.context.sheetobj.rowattribs.hide[n];)n++;u.EditorScheduleSheetCommands("pane row "+n,!0,!1)}else{for(a=l.morebuttonstart-l.minscrollingpanesize-o.offsetX,o.clientX>a&&(o.clientX=a),s=u.headposition.left-c-o.offsetX,o.clientX<s&&(o.clientX=s),r=t.Lookup(o.clientX+c,u.colpositions),r>u.context.sheetobj.attribs.lastcol&&(r=u.context.sheetobj.attribs.lastcol);"yes"==u.context.sheetobj.colattribs.hide[t.rcColname(r)];)r++;u.EditorScheduleSheetCommands("pane col "+r,!0,!1)}},t.TCTDragFunctionStart=function(e,o,i){var n=i.functionobj.control,r=n.editor,a=t.Constants;if(t.DragFunctionStart(e,o,i),o.thumbstatus&&(o.thumbstatus.rowmsgele&&(o.thumbstatus.rowmsgele=null),o.thumbstatus.rowpreviewele&&(o.thumbstatus.rowpreviewele=null),r.toplevel.removeChild(o.thumbstatus),o.thumbstatus=null),o.thumbstatus=document.createElement("div"),i.vertical){a.TCTDFSthumbstatusvClass&&(o.thumbstatus.className=a.TCTDFSthumbstatusvClass),t.setStyles(o.thumbstatus,a.TCTDFSthumbstatusvStyle),o.thumbstatus.style.top=o.clientY+a.TCTDFStopOffsetv+"px",o.thumbstatus.style.left=n.controlborder-10-r.tablewidth/2+"px",o.thumbstatus.style.width=r.tablewidth/2+"px",o.thumbcontext=new t.RenderContext(r.context.sheetobj),o.thumbcontext.showGrid=!0,o.thumbcontext.rowpanes=[{first:1,last:1}];var s=r.context.colpanes[r.context.colpanes.length-1];o.thumbcontext.colpanes=[{first:s.first,last:s.last}],o.thumbstatus.innerHTML='<table cellspacing="0" cellpadding="0"><tr><td valign="top" style="'+a.TCTDFSthumbstatusrownumStyle+'" class="'+a.TCTDFSthumbstatusrownumClass+'"><div>msg</div></td><td valign="top"><div style="overflow:hidden;">preview</div></td></tr></table>',o.thumbstatus.rowmsgele=o.thumbstatus.firstChild.firstChild.firstChild.firstChild.firstChild,o.thumbstatus.rowpreviewele=o.thumbstatus.firstChild.firstChild.firstChild.childNodes[1].firstChild,r.toplevel.appendChild(o.thumbstatus),t.TCTDragFunctionRowSetStatus(o,r,r.firstscrollingrow||1)}else a.TCTDFSthumbstatushClass&&(o.thumbstatus.className=a.TCTDFSthumbstatushClass),t.setStyles(o.thumbstatus,a.TCTDFSthumbstatushStyle),o.thumbstatus.style.top=n.controlborder+a.TCTDFStopOffseth+"px",o.thumbstatus.style.left=o.clientX+a.TCTDFSleftOffseth+"px",r.toplevel.appendChild(o.thumbstatus),o.thumbstatus.innerHTML=a.s_TCTDFthumbstatusPrefixh+t.rcColname(r.firstscrollingcol)},t.TCTDragFunctionRowSetStatus=function(e,o,i){var n=t.Constants,r=n.s_TCTDFthumbstatusPrefixv+i+" ";e.thumbstatus.rowmsgele.innerHTML=r,e.thumbcontext.rowpanes=[{first:i,last:i}],e.thumbrowshown=i;e.thumbcontext.RenderSheet(e.thumbstatus.rowpreviewele.firstChild,{type:"html"})},t.TCTDragFunctionMove=function(e,o,i){var n,r,a=i.functionobj.control,s=(a.thumbthickness,a.editor),l=t.Constants;i.vertical?(o.clientY>a.scrollareaend-o.offsetY-a.thumbthickness+2&&(o.clientY=a.scrollareaend-o.offsetY-a.thumbthickness+2),o.clientY<a.scrollareastart-o.offsetY-1&&(o.clientY=a.scrollareastart-o.offsetY-1),o.thumbstatus.style.top=o.clientY+"px",n=(o.clientY+o.offsetY-a.scrollareastart+1)/(a.scrollareasize-a.thumbthickness)*(s.context.sheetobj.attribs.lastrow-s.lastnonscrollingrow)+s.lastnonscrollingrow+1,n=Math.floor(n),n<=s.lastnonscrollingrow&&(n=s.lastnonscrollingrow+1),n>s.context.sheetobj.attribs.lastrow&&(n=s.context.sheetobj.attribs.lastrow),n!=o.thumbrowshown&&t.TCTDragFunctionRowSetStatus(o,s,n)):(o.clientX>a.scrollareaend-o.offsetX-a.thumbthickness+2&&(o.clientX=a.scrollareaend-o.offsetX-a.thumbthickness+2),o.clientX<a.scrollareastart-o.offsetX-1&&(o.clientX=a.scrollareastart-o.offsetX-1),o.thumbstatus.style.left=o.clientX+"px",n=(o.clientX+o.offsetX-a.scrollareastart+1)/(a.scrollareasize-a.thumbthickness)*(s.context.sheetobj.attribs.lastcol-s.lastnonscrollingcol)+s.lastnonscrollingcol+1,n=Math.floor(n),n<=s.lastnonscrollingcol&&(n=s.lastnonscrollingcol+1),n>s.context.sheetobj.attribs.lastcol&&(n=s.context.sheetobj.attribs.lastcol),r=l.s_TCTDFthumbstatusPrefixh+t.rcColname(n),o.thumbstatus.innerHTML=r),t.DragFunctionPosition(e,o,i)},t.TCTDragFunctionStop=function(e,t,o){var i,n=o.functionobj.control,r=n.editor;o.vertical?(i=(t.clientY+t.offsetY-n.scrollareastart+1)/(n.scrollareasize-n.thumbthickness)*(r.context.sheetobj.attribs.lastrow-r.lastnonscrollingrow)+r.lastnonscrollingrow+1,i=Math.floor(i),i<=r.lastnonscrollingrow&&(i=r.lastnonscrollingrow+1),i>r.context.sheetobj.attribs.lastrow&&(i=r.context.sheetobj.attribs.lastrow),r.context.SetRowPaneFirstLast(r.context.rowpanes.length-1,i,i+1)):(i=(t.clientX+t.offsetX-n.scrollareastart+1)/(n.scrollareasize-n.thumbthickness)*(r.context.sheetobj.attribs.lastcol-r.lastnonscrollingcol)+r.lastnonscrollingcol+1,i=Math.floor(i),i<=r.lastnonscrollingcol&&(i=r.lastnonscrollingcol+1),i>r.context.sheetobj.attribs.lastcol&&(i=r.context.sheetobj.attribs.lastcol),r.context.SetColPaneFirstLast(r.context.colpanes.length-1,i,i+1)),r.FitToEditTable(),t.thumbstatus.rowmsgele&&(t.thumbstatus.rowmsgele=null),t.thumbstatus.rowpreviewele&&(t.thumbstatus.rowpreviewele=null),r.toplevel.removeChild(t.thumbstatus),t.thumbstatus=null,r.ScheduleRender()},t.DragInfo={registeredElements:[],draggingElement:null,startX:0,startY:0,startZ:0,clientX:0,clientY:0,offsetX:0,offsetY:0,relativeOffset:{left:0,top:0}},t.DragRegister=function(e,o,i,n,r){var a=t.DragInfo;if(n||(n={MouseDown:t.DragFunctionStart,MouseMove:t.DragFunctionPosition,MouseUp:t.DragFunctionPosition,Disabled:null}),a.registeredElements.push({element:e,vertical:o,horizontal:i,functionobj:n,parent:r}),e.addEventListener)e.addEventListener("mousedown",t.DragMouseDown,!1);else{if(!e.attachEvent)throw t.Constants.s_BrowserNotSupported;e.attachEvent("onmousedown",t.DragMouseDown)}},t.DragUnregister=function(e){var o,i=t.DragInfo;if(e)for(o=0;o<i.registeredElements.length;o++)if(i.registeredElements[o].element==e)return i.registeredElements.splice(o,1),void(e.removeEventListener?e.removeEventListener("mousedown",t.DragMouseDown,!1):e.detachEvent("onmousedown",t.DragMouseDown))},t.DragMouseDown=function(o){var i=o||e.event,n=t.DragInfo,r=t.LookupElement(i.target||i.srcElement,n.registeredElements);return!r||r&&r.functionobj&&r.functionobj.Disabled&&r.functionobj.Disabled(i,n,r)?void 0:(n.draggingElement=r,r.parent&&(n.relativeOffset=t.GetElementPositionWithScroll(r.parent)),n.clientX=i.clientX-n.relativeOffset.left,n.clientY=i.clientY-n.relativeOffset.top,n.startX=n.clientX,n.startY=n.clientY,n.startZ=r.element.style.zIndex,n.offsetX=0,n.offsetY=0,r.element.style.zIndex="100",t.SetMouseMoveUp(t.DragMouseMove,t.DragMouseUp,r.element,i),r&&r.functionobj&&r.functionobj.MouseDown&&r.functionobj.MouseDown(i,n,r),!1)},t.DragMouseMove=function(o){var i=o||e.event,n=t.DragInfo,r=n.draggingElement;return n.clientX=i.clientX-n.relativeOffset.left,n.clientY=i.clientY-n.relativeOffset.top,t.StopPropagation(i),r&&r.functionobj&&r.functionobj.MouseMove&&r.functionobj.MouseMove(i,n,r),!1},t.DragMouseUp=function(o){var i=o||e.event,n=t.DragInfo,r=n.draggingElement;return n.clientX=i.clientX-n.relativeOffset.left,n.clientY=i.clientY-n.relativeOffset.top,r.element.style.zIndex=n.startZ,r&&r.functionobj&&r.functionobj.MouseUp&&r.functionobj.MouseUp(i,n,r),t.RemoveMouseMoveUp(t.DragMouseMove,t.DragMouseUp,r.element,i),n.draggingElement=null,!1},t.DragFunctionStart=function(e,t,o){var i=o.functionobj.positionobj||o.element;t.offsetY=parseInt(i.style.top)-t.clientY,t.offsetX=parseInt(i.style.left)-t.clientX},t.DragFunctionPosition=function(e,t,o){var i=o.functionobj.positionobj||o.element;o.vertical&&(i.style.top=t.clientY+t.offsetY+"px"),o.horizontal&&(i.style.left=t.clientX+t.offsetX+"px")},t.ButtonInfo={registeredElements:[],buttonElement:null,doingHover:!1,buttonDown:!1,timer:null,relativeOffset:null,clientX:0,clientY:0},t.ButtonRegister=function(e,o,i,n){var r=t.ButtonInfo;if(i||(i={}),r.registeredElements.push({name:i.name,element:o,editor:e,normalstyle:i.normalstyle,hoverstyle:i.hoverstyle,downstyle:i.downstyle,repeatwait:i.repeatwait,repeatinterval:i.repeatinterval,functionobj:n}),o.addEventListener)o.addEventListener("mousedown",t.ButtonMouseDown,!1),o.addEventListener("mouseover",t.ButtonMouseOver,!1),o.addEventListener("mouseout",t.ButtonMouseOut,!1);else{if(!o.attachEvent)throw t.Constants.s_BrowserNotSupported;o.attachEvent("onmousedown",t.ButtonMouseDown),o.attachEvent("onmouseover",t.ButtonMouseOver),o.attachEvent("onmouseout",t.ButtonMouseOut)}},t.ButtonMouseOver=function(o){var i=o||e.event,n=t.ButtonInfo,r=t.LookupElement(i.target||i.srcElement,n.registeredElements);if(r){if(n.buttonDown)return void(n.buttonElement==r&&(n.doingHover=!0));n.buttonElement&&n.buttonElement!=r&&n.doingHover&&t.setStyles(n.buttonElement.element,n.buttonElement.normalstyle),n.buttonElement=r,n.doingHover=!0,t.setStyles(r.element,r.hoverstyle),r&&r.functionobj&&r.functionobj.MouseOver&&r.functionobj.MouseOver(i,n,r)}},t.ButtonMouseOut=function(o){var i=o||e.event,n=t.ButtonInfo;if(n.buttonDown)return void(n.doingHover=!1);var r=t.LookupElement(i.target||i.srcElement,n.registeredElements);n.doingHover&&(n.buttonElement&&t.setStyles(n.buttonElement.element,n.buttonElement.normalstyle),n.buttonElement=null,n.doingHover=!1),r&&r.functionobj&&r.functionobj.MouseOut&&r.functionobj.MouseOut(i,n,r)},t.ButtonMouseDown=function(o){var i=o||e.event,n=t.ButtonInfo,r=(t.GetViewportInfo(),t.LookupElement(i.target||i.srcElement,n.registeredElements));r&&(r&&r.functionobj&&r.functionobj.Disabled&&r.functionobj.Disabled(i,n,r)||(n.buttonElement=r,n.buttonDown=!0,t.setStyles(r.element,n.buttonElement.downstyle),document.addEventListener?document.addEventListener("mouseup",t.ButtonMouseUp,!0):r.element.attachEvent&&(r.element.setCapture(),r.element.attachEvent("onmouseup",t.ButtonMouseUp),r.element.attachEvent("onlosecapture",t.ButtonMouseUp)),t.StopPropagation(i),n.relativeOffset=t.GetElementPositionWithScroll(r.editor.toplevel),n.clientX=i.clientX-n.relativeOffset.left,n.clientY=i.clientY-n.relativeOffset.top,r&&r.functionobj&&r.functionobj.MouseDown&&r.functionobj.MouseDown(i,n,r),r.repeatwait&&(n.timer=e.setTimeout(t.ButtonRepeat,r.repeatwait))))},t.ButtonMouseUp=function(o){var i=o||e.event,n=t.ButtonInfo,r=n.buttonElement;n.timer&&(e.clearTimeout(n.timer),n.timer=null),n.buttonDown&&(t.StopPropagation(i),document.removeEventListener?document.removeEventListener("mouseup",t.ButtonMouseUp,!0):document.detachEvent&&(r.element.detachEvent("onlosecapture",t.ButtonMouseUp),r.element.detachEvent("onmouseup",t.ButtonMouseUp),r.element.releaseCapture()),n.buttonElement.downstyle&&(n.doingHover?t.setStyles(r.element,n.buttonElement.hoverstyle):t.setStyles(r.element,n.buttonElement.normalstyle)),n.buttonDown=!1,r&&r.functionobj&&r.functionobj.MouseUp&&r.functionobj.MouseUp(i,n,r))},t.ButtonRepeat=function(){var o=t.ButtonInfo,i=o.buttonElement;i&&(i&&i.functionobj&&i.functionobj.Repeat&&i.functionobj.Repeat(null,o,i),o.timer=e.setTimeout(t.ButtonRepeat,i.repeatinterval||100))},t.MouseWheelInfo={registeredElements:[]},t.MouseWheelRegister=function(e,o){var i=t.MouseWheelInfo;if(i.registeredElements.push({element:e,functionobj:o}),e.addEventListener)e.addEventListener("DOMMouseScroll",t.ProcessMouseWheel,!1),e.addEventListener("mousewheel",t.ProcessMouseWheel,!1);else{if(!e.attachEvent)throw t.Constants.s_BrowserNotSupported;e.attachEvent("onmousewheel",t.ProcessMouseWheel)}},t.ProcessMouseWheel=function(o){var i,n=o||e.event;if(!t.Keyboard.passThru){var r,a=t.MouseWheelInfo,s=n.target||n.srcElement;for(r=null;!r&&s;s=s.parentNode)r=t.LookupElement(s,a.registeredElements);r&&(i=n.wheelDelta?n.wheelDelta/120:-n.detail/3,i||(i=0),r.functionobj&&r.functionobj.WheelMove&&r.functionobj.WheelMove(n,i,a,r),n.preventDefault&&n.preventDefault(),n.returnValue=!1)}},t.keyboardTables={specialKeysCommon:{8:"[backspace]",9:"[tab]",13:"[enter]",25:"[tab]",27:"[esc]",33:"[pgup]",34:"[pgdn]",35:"[end]",36:"[home]",37:"[aleft]",38:"[aup]",39:"[aright]",40:"[adown]",45:"[ins]",46:"[del]",113:"[f2]"},specialKeysIE:{8:"[backspace]",9:"[tab]",13:"[enter]",25:"[tab]",27:"[esc]",33:"[pgup]",34:"[pgdn]",35:"[end]",36:"[home]",37:"[aleft]",38:"[aup]",39:"[aright]",40:"[adown]",45:"[ins]",46:"[del]",113:"[f2]"},controlKeysIE:{65:"[ctrl-a]",67:"[ctrl-c]",83:"[ctrl-s]",86:"[ctrl-v]",88:"[ctrl-x]",90:"[ctrl-z]"},specialKeysOpera:{8:"[backspace]",9:"[tab]",13:"[enter]",25:"[tab]",27:"[esc]",33:"[pgup]",34:"[pgdn]",35:"[end]",36:"[home]",37:"[aleft]",38:"[aup]",39:"[aright]",40:"[adown]",45:"[ins]",46:"[del]",113:"[f2]"},controlKeysOpera:{65:"[ctrl-a]",67:"[ctrl-c]",83:"[ctrl-s]",86:"[ctrl-v]",88:"[ctrl-x]",90:"[ctrl-z]"},specialKeysSafari:{8:"[backspace]",9:"[tab]",13:"[enter]",25:"[tab]",27:"[esc]",63232:"[aup]",63233:"[adown]",63234:"[aleft]",63235:"[aright]",63272:"[del]",63273:"[home]",63275:"[end]",63276:"[pgup]",63277:"[pgdn]",63237:"[f2]"},controlKeysSafari:{97:"[ctrl-a]",99:"[ctrl-c]",115:"[ctrl-s]",118:"[ctrl-v]",120:"[ctrl-x]",122:"[ctrl-z]"},ignoreKeysSafari:{63236:"[f1]",63238:"[f3]",63239:"[f4]",63240:"[f5]",63241:"[f6]",63242:"[f7]",63243:"[f8]",63244:"[f9]",63245:"[f10]",63246:"[f11]",63247:"[f12]",63289:"[numlock]"},specialKeysFirefox:{8:"[backspace]",9:"[tab]",13:"[enter]",25:"[tab]",27:"[esc]",33:"[pgup]",34:"[pgdn]",35:"[end]",36:"[home]",37:"[aleft]",38:"[aup]",39:"[aright]",40:"[adown]",45:"[ins]",46:"[del]",113:"[f2]"},controlKeysFirefox:{97:"[ctrl-a]",99:"[ctrl-c]",115:"[ctrl-s]",118:"[ctrl-v]",120:"[ctrl-x]",122:"[ctrl-z]"},ignoreKeysFirefox:{16:"[shift]",17:"[ctrl]",18:"[alt]",20:"[capslock]",19:"[pause]",44:"[printscreen]",91:"[windows]",92:"[windows]",112:"[f1]",114:"[f3]",115:"[f4]",116:"[f5]",117:"[f6]",118:"[f7]",119:"[f8]",120:"[f9]",121:"[f10]",122:"[f11]",123:"[f12]",144:"[numlock]",145:"[scrolllock]",224:"[cmd]"}},t.Keyboard={areListener:!1,focusTable:null,passThru:null,didProcessKey:!1,statusFromProcessKey:!1,repeatingKeyPress:!1,chForProcessKey:""},t.KeyboardSetFocus=function(o){t.Keyboard.focusTable=o,t.Keyboard.areListener||(document.onkeydown=t.ProcessKeyDown,document.onkeypress=t.ProcessKeyPress,t.Keyboard.areListener=!0),t.Keyboard.passThru&&(t.Keyboard.passThru.blur&&t.Keyboard.passThru.blur(),t.Keyboard.passThru=null),e.focus()},t.KeyboardFocus=function(){t.Keyboard.passThru=null,e.focus()},t.ProcessKeyDown=function(o){var i=t.keyboardTables;i.didProcessKey=!1,i.statusFromProcessKey=!1,i.repeatingKeyPress=!1;var n="",r=!0;if(!t._app&&!t.Keyboard.passThru){if(o=o||e.event,void 0==o.which){if(n=i.specialKeysCommon[o.keyCode],!n&&(o.ctrlKey&&(n=i.controlKeysIE[o.keyCode]),!n))return!0;r=t.ProcessKey(n,o),r||(o.preventDefault&&o.preventDefault(),o.returnValue=!1)}else{if(n=i.specialKeysCommon[o.keyCode],!n&&((o.ctrlKey||o.metaKey)&&(n=i.controlKeysIE[o.keyCode]),!n))return!0;r=t.ProcessKey(n,o),i.didProcessKey=!0,i.statusFromProcessKey=r,i.chForProcessKey=n}return r}},t.ProcessKeyPress=function(o){var i=t.keyboardTables,n="";if(o=o||e.event,!t._app&&!t.Keyboard.passThru){if(i.didProcessKey)return i.repeatingKeyPress?t.ProcessKey(i.chForProcessKey,o):(i.repeatingKeyPress=!0,i.statusFromProcessKey);if(void 0==o.which)n=String.fromCharCode(o.keyCode);else{if(!o.which)return!1;if(void 0==o.charCode){if(0==o.which)return!0;if(o.which<32||144==o.which){if(n=i.specialKeysOpera[o.which])return!0}else n=o.ctrlKey?i.controlKeysOpera[o.keyCode]:String.fromCharCode(o.which)}else{if(0==o.keyCode&&0==o.charCode)return;if(o.keyCode==o.charCode){if(n=i.specialKeysSafari[o.keyCode],!n){if(i.ignoreKeysSafari[o.keyCode])return!0;n=o.metaKey?i.controlKeysSafari[o.keyCode]:String.fromCharCode(o.which)}}else{if(i.specialKeysFirefox[o.keyCode])return!0;n=String.fromCharCode(o.which),(o.ctrlKey||o.metaKey)&&(n=i.controlKeysFirefox[o.which])}}}var r=t.ProcessKey(n,o);return r||(o.preventDefault&&o.preventDefault(),o.returnValue=!1),r}},t.ProcessKey=function(e,o){var i=t.Keyboard.focusTable;return i?i.EditorProcessKey(e,o):!0};var t;t||(t={}),t.FormatNumber={},t.FormatNumber.format_definitions={},t.FormatNumber.separatorchar=",",t.FormatNumber.decimalchar=".",t.FormatNumber.daynames=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],t.FormatNumber.daynames3=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],t.FormatNumber.monthnames3=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],t.FormatNumber.monthnames=["January","February","March","April","May","June","July","August","September","October","November","December"],t.FormatNumber.allowedcolors={BLACK:"#000000",BLUE:"#0000FF",CYAN:"#00FFFF",GREEN:"#00FF00",MAGENTA:"#FF00FF",RED:"#FF0000",WHITE:"#FFFFFF",YELLOW:"#FFFF00"},t.FormatNumber.alloweddates={H:"h]",M:"m]",MM:"mm]",S:"s]",SS:"ss]"},t.FormatNumber.commands={copy:1,color:2,integer_placeholder:3,fraction_placeholder:4,decimal:5,currency:6,general:7,separator:8,date:9,comparison:10,section:11,style:12},t.FormatNumber.datevalues={julian_offset:2415019,seconds_in_a_day:86400,seconds_in_an_hour:3600},t.FormatNumber.formatNumberWithFormat=function(e,o,i){var n,r,a,s,l,c,u,d,h,p,f,m,g,v,b,y,C,w,x,_,S,k,T,F,E,D,P,A,I,M,R,N,L,O,z,H,B,U,j,V=t.Constants,W=t.FormatNumber,G="";if("string"==typeof e&&!e.length)return"";if(j=e-0,!isFinite(j))return"string"==typeof e?W.formatTextWithFormat(e,o):"NaN";e=j;var $=0>j?1:0;$&&(j=-j);var Y=0==j?1:0;if(i=i||V.FormatNumber_DefaultCurrency,W.parse_format_string(W.format_definitions,o),C=W.format_definitions[o],!C)throw"Format not parsed error!";if(w=C.sectioninfo.length-1,C.hascomparison)for(w=0,x=0,k=0;;k++){if(n=C.operators[k],r=C.operands[k],!n){x&&(o="General",W.parse_format_string(W.format_definitions,o),C=W.format_definitions[o],w=0);break}if(n!=W.commands.section){if(n==W.commands.comparison){if(E=r.indexOf(":"),_=r.substring(0,E),S=r.substring(E+1)-0,"<"==_&&S>e||"<="==_&&S>=e||"="==_&&e==S||"<>"==_&&e!=S||">="==_&&e>=S||">"==_&&e>S)break;x=1}}else{if(!x)break;x=0,w++}}else w>0&&(1==w?$?($=0,w=1):w=0:(2==w||3==w)&&($?($=0,w=1):w=Y?2:0));if(F=C.sectioninfo[w],F.commas>0)for(E=0;E<F.commas;E++)j/=1e3;if(F.percent>0)for(E=0;E<F.percent;E++)j*=100;for(D=1,E=0;E<F.fractiondigits;E++)D*=10;if(P=Math.floor(j*D+.5),P/=D,"number"!=typeof P)return"NaN";if(!isFinite(P))return"NaN";if(A=P+"",0==P&&(F.fractiondigits||F.integerdigits)&&($=0),A.indexOf("e")>=0)return e+"";if(I=A.match(/^\+{0,1}(\d*)(?:\.(\d*)){0,1}$/),!I)return"NaN";if(M=I[1],M&&"0"!=M||(M=""),R=I[2],R||(R=""),F.hasdate){if(0>e)return"??-???-??&nbsp;??:??:??";for(c=(e-Math.floor(e))*W.datevalues.seconds_in_a_day,u=e*W.datevalues.seconds_in_a_day,d=Math.floor(c/W.datevalues.seconds_in_an_hour),f=Math.floor(u/W.datevalues.seconds_in_an_hour),c-=d*W.datevalues.seconds_in_an_hour,h=Math.floor(c/60),m=Math.floor(u/60),p=c-60*h,D=1,E=0;E<F.fractiondigits;E++)D*=10;for(p=Math.floor(p*D+.5),p/=D,g=Math.floor(u*D+.5),g/=D,p>=60&&(p=0,h++,m++,h>=60&&(h=0,d++,f++,d>=24&&(d=0,e++))),R=p-Math.floor(p)+"",R=R.substring(2),b=t.FormatNumber.convert_date_julian_to_gregorian(Math.floor(e+W.datevalues.julian_offset)),y=0,mspos=F.sectionstart;(n=C.operators[mspos],r=C.operands[mspos],n)&&n!=W.commands.section;mspos++)n==W.commands.date?("am/pm"!=r.toLowerCase()&&"a/p"!=r.toLowerCase()||v||(d>=12?(d-=12,v="a/p"==r.toLowerCase()?V.s_FormatNumber_pm1:V.s_FormatNumber_pm):v="a/p"==r.toLowerCase()?V.s_FormatNumber_am1:V.s_FormatNumber_am,r.indexOf(v)<0&&(v=v.toLowerCase())),!y||"m"!=r&&"mm"!=r||(C.operands[mspos]+="in"),y="h"==r.charAt(0)?1:0):n!=W.commands.copy&&(y=0);for(y=0,--mspos;(n=C.operators[mspos],r=C.operands[mspos],n)&&n!=W.commands.section;mspos--)n==W.commands.date?(!y||"m"!=r&&"mm"!=r||(C.operands[mspos]+="in"),y="ss"==r?1:0):n!=W.commands.copy&&(y=0)}for(N=0,L=0,O=0,z="",H="",B=V.FormatNumber_separatorchar,B.indexOf(" ")>=0&&(B=B.replace(/ /g,"&nbsp;")),U=V.FormatNumber_decimalchar,U.indexOf(" ")>=0&&(U=U.replace(/ /g,"&nbsp;")),T=F.sectionstart;n=C.operators[T];)if(r=C.operands[T++],n==W.commands.copy)G+=r;else if(n==W.commands.color)z=r;else if(n==W.commands.style)H=r;else if(n==W.commands.integer_placeholder){if($&&(G+="-",$=0),N++,1==N&&M.length>F.integerdigits)for(;L<M.length-F.integerdigits;L++)G+=M.charAt(L),F.thousandssep&&(a=M.length-L-1,a>2&&a%3==0&&(G+=B));M.length<F.integerdigits&&N<=F.integerdigits-M.length?("0"==r||"?"==r)&&(G+="0"==r?"0":"&nbsp;",F.thousandssep&&(a=F.integerdigits-N,a>2&&a%3==0&&(G+=B))):(G+=M.charAt(L),F.thousandssep&&(a=M.length-L-1,a>2&&a%3==0&&(G+=B)),L++)}else if(n==W.commands.fraction_placeholder)O>=R.length?("0"==r||"?"==r)&&(G+="0"==r?"0":"&nbsp;"):G+=R.charAt(O),O++;else if(n==W.commands.decimal)$&&(G+="-",$=0),G+=U;else if(n==W.commands.currency)$&&(G+="-",$=0),G+=r;else if(n==W.commands.general){if(0!=j){var K=Math.floor(Math.LOG10E*Math.log(j));if(K=Math.pow(10,13-K),j=Math.floor(K*j+.5)/K,!isFinite(j))return"NaN"}if($&&(G+="-"),A=j+"",A.indexOf("e")>=0){G+=A;continue}if(I=A.match(/^\+{0,1}(\d*)(?:\.(\d*)){0,1}$/),M=I[1],M&&"0"!=M||(M=""),R=I[2],R||(R=""),L=0,O=0,M.length)for(;L<M.length;L++)G+=M.charAt(L),F.thousandssep&&(a=M.length-L-1,a>2&&a%3==0&&(G+=B));else G+="0";if(R.length)for(G+=U;O<R.length;O++)G+=R.charAt(O)}else if(n==W.commands.date)l=r.toLowerCase(),"y"==l||"yy"==l?G+=(b.year+"").substring(2):"yyyy"==l?G+=b.year+"":"d"==l?G+=b.day+"":"dd"==l?(s=1e3+b.day,G+=(s+"").substr(2)):"ddd"==l?(s=Math.floor(e+6)%7,G+=V.s_FormatNumber_daynames3[s]):"dddd"==l?(s=Math.floor(e+6)%7,G+=V.s_FormatNumber_daynames[s]):"m"==l?G+=b.month+"":"mm"==l?(s=1e3+b.month,G+=(s+"").substr(2)):"mmm"==l?G+=V.s_FormatNumber_monthnames3[b.month-1]:"mmmm"==l?G+=V.s_FormatNumber_monthnames[b.month-1]:"mmmmm"==l?G+=V.s_FormatNumber_monthnames[b.month-1].charAt(0):"h"==l?G+=d+"":"h]"==l?G+=f+"":"mmin"==l?(s=1e3+h+"",G+=s.substr(2)):"mm]"==l?100>m?(s=1e3+m+"",G+=s.substr(2)):G+=m+"":"min"==l?G+=h+"":"m]"==l?G+=m+"":"hh"==l?(s=1e3+d+"",G+=s.substr(2)):"s"==l?(s=Math.floor(p),G+=s+""):"ss"==l?(s=1e3+Math.floor(p)+"",G+=s.substr(2)):"am/pm"==l||"a/p"==l?G+=v:"ss]"==l&&(100>g?(s=1e3+Math.floor(g)+"",G+=s.substr(2)):(s=Math.floor(g),G+=s+""));
-else{if(n==W.commands.section)break;if(n==W.commands.comparison)continue;G+="!! Parse error !!"}return z&&(G='<span style="color:'+z+';">'+G+"</span>"),H&&(G='<span style="'+H+';">'+G+"</span>"),G},t.FormatNumber.formatTextWithFormat=function(e,o){var i,n,r,a,s=(t.Constants,t.FormatNumber),l=e+"",c="",u="",d="";if(s.parse_format_string(s.format_definitions,o),thisformat=s.format_definitions[o],!thisformat)throw"Format not parsed error!";if(i=thisformat.sectioninfo.length-1,0==i)i=0;else{if(3!=i)return l;i=3}for(n=thisformat.sectioninfo[i],r=n.sectionstart;op=thisformat.operators[r];)a=thisformat.operands[r++],op==s.commands.copy?c+="@"==a?l:a.replace(/ /g,"&nbsp;"):op==s.commands.color?u=a:op==s.commands.style&&(d=a);return u&&(c='<span style="color:'+u+';">'+c+"</span>"),d&&(c='<span style="'+d+';">'+c+"</span>"),c},t.FormatNumber.parse_format_string=function(e,o){var i,n,r,a,s,l,c,u,d,h,p,f,m,g,v,b,y,C=t.FormatNumber,w=1;if(!e[o]){for(i={operators:[],operands:[],sectioninfo:[{}]},e[o]=i,n=0,sectioninfo=i.sectioninfo[n],sectioninfo.sectionstart=0,sectioninfo.integerdigits=0,sectioninfo.fractiondigits=0,sectioninfo.commas=0,sectioninfo.percent=0,b=0;b<o.length;b++)if(y=o.charAt(b),c){if('"'==y){c=0,i.operators.push(C.commands.copy),i.operands.push(u);continue}u+=y}else if(d){if("]"==y){if(d=0,p=t.FormatNumber.parse_format_bracket(h),p.operator==C.commands.separator){sectioninfo.thousandssep=1;continue}p.operator==C.commands.date&&(sectioninfo.hasdate=1),p.operator==C.commands.comparison&&(i.hascomparison=1),i.operators.push(p.operator),i.operands.push(p.operand);continue}h+=y}else if(a)i.operators.push(C.commands.copy),i.operands.push(y),a=!1;else if(s)i.operators.push(C.commands.copy),i.operands.push(y+y+y+y+y),s=!1;else if(l)i.operators.push(C.commands.copy),i.operands.push("&nbsp;"),l=!1;else{if(f){if("general".charAt(f)==y.toLowerCase()){f++,7==f&&(i.operators.push(C.commands.general),i.operands.push(y),f=0);continue}f=0}if(v){if(v.charAt(0)==y){v+=y;continue}i.operators.push(C.commands.date),i.operands.push(v),sectioninfo.hasdate=1,v=""}m?(m+=y,g=m.toLowerCase(),g!="am/pm".substring(0,g.length)&&g!="a/p".substring(0,g.length)?ampstr="":("am/pm"==g||"a/p"==g)&&(i.operators.push(C.commands.date),i.operands.push(m),m="")):"#"==y||"0"==y||"?"==y?w?(sectioninfo.integerdigits++,sectioninfo.commas&&(sectioninfo.thousandssep=1,sectioninfo.commas=0),r=1,i.operators.push(C.commands.integer_placeholder),i.operands.push(y)):(sectioninfo.fractiondigits++,r=1,i.operators.push(C.commands.fraction_placeholder),i.operands.push(y)):"."==y?(r=0,i.operators.push(C.commands.decimal),i.operands.push(y),w=0):"$"==y?(r=0,i.operators.push(C.commands.currency),i.operands.push(y)):","==y?r?sectioninfo.commas++:(i.operators.push(C.commands.copy),i.operands.push(y)):"%"==y?(r=0,sectioninfo.percent++,i.operators.push(C.commands.copy),i.operands.push(y)):'"'==y?(r=0,c=1,u=""):"["==y?(r=0,d=1,h=""):"\\"==y?(a=1,r=0):"*"==y?(s=1,r=0):"_"==y?(l=1,r=0):";"==y?(n++,i.sectioninfo[n]={},sectioninfo=i.sectioninfo[n],sectioninfo.sectionstart=1+i.operators.length,sectioninfo.integerdigits=0,sectioninfo.fractiondigits=0,sectioninfo.commas=0,sectioninfo.percent=0,w=1,r=0,i.operators.push(C.commands.section),i.operands.push(y)):"g"==y.toLowerCase()?(f=1,r=0):"a"==y.toLowerCase()?(m=y,r=0):"dmyhHs".indexOf(y)>=0?v=y:(r=0,i.operators.push(C.commands.copy),i.operands.push(y))}v&&(i.operators.push(C.commands.date),i.operands.push(v),sectioninfo.hasdate=1)}},t.FormatNumber.parse_format_bracket=function(e){var o,i=t.FormatNumber,n=t.Constants,r={};return"$"==e.charAt(0)?(r.operator=i.commands.currency,o=e.match(/^\$(.+?)(\-.+?){0,1}$/),r.operand=o?o[1]||n.FormatNumber_defaultCurrency||"$":e.substring(1)||n.FormatNumber_defaultCurrency||"$"):"?$"==e?(r.operator=i.commands.currency,r.operand="[?$]"):i.allowedcolors[e.toUpperCase()]?(r.operator=i.commands.color,r.operand=i.allowedcolors[e.toUpperCase()]):(o=e.match(/^style=([^"]*)$/))?(r.operator=i.commands.style,r.operand=o[1]):","==e?(r.operator=i.commands.separator,r.operand=e):i.alloweddates[e.toUpperCase()]?(r.operator=i.commands.date,r.operand=i.alloweddates[e.toUpperCase()]):(o=e.match(/^[<>=]/))?(o=e.match(/^([<>=]+)(.+)$/),r.operator=i.commands.comparison,r.operand=o[1]+":"+o[2]):(r.operator=i.commands.copy,r.operand="["+e+"]"),r},t.FormatNumber.convert_date_gregorian_to_julian=function(e,o,i){var n;return n=i-32075+t.intFunc(1461*(e+4800+t.intFunc((o-14)/12))/4),n+=t.intFunc(367*(o-2-12*t.intFunc((o-14)/12))/12),n-=t.intFunc(3*t.intFunc((e+4900+t.intFunc((o-14)/12))/100)/4)},t.FormatNumber.convert_date_julian_to_gregorian=function(e){var t,o,i,n,r;return t=e+68569,o=Math.floor(4*t/146097),t-=Math.floor((146097*o+3)/4),i=Math.floor(4e3*(t+1)/1461001),t=t-Math.floor(1461*i/4)+31,n=Math.floor(80*t/2447),r=t-Math.floor(2447*n/80),t=Math.floor(n/11),n=n+2-12*t,i=100*(o-49)+i+t,{year:i,month:n,day:r}},t.intFunc=function(e){return 0>e?-Math.floor(-e):Math.floor(e)};var t;t||(t={}),t.Formula={},t.TriggerIoAction={},t.Formula.ParseState={num:1,alpha:2,coord:3,string:4,stringquote:5,numexp1:6,numexp2:7,alphanumeric:8,specialvalue:9},t.Formula.TokenType={num:1,coord:2,op:3,name:4,error:5,string:6,space:7},t.Formula.CharClass={num:1,numstart:2,op:3,eof:4,alpha:5,incoord:6,error:7,quote:8,space:9,specialstart:10},t.Formula.CharClassTable={" ":9,"!":3,'"':8,"'":8,"#":10,$:6,"%":3,"&":3,"(":3,")":3,"*":3,"+":3,",":3,"-":3,".":2,"/":3,0:1,1:1,2:1,3:1,4:1,5:1,6:1,7:1,8:1,9:1,":":3,"<":3,"=":3,">":3,A:5,B:5,C:5,D:5,E:5,F:5,G:5,H:5,I:5,J:5,K:5,L:5,M:5,N:5,O:5,P:5,Q:5,R:5,S:5,T:5,U:5,V:5,W:5,X:5,Y:5,Z:5,"^":3,_:5,a:5,b:5,c:5,d:5,e:5,f:5,g:5,h:5,i:5,j:5,k:5,l:5,m:5,n:5,o:5,p:5,q:5,r:5,s:5,t:5,u:5,v:5,w:5,x:5,y:5,z:5},t.Formula.UpperCaseTable={a:"A",b:"B",c:"C",d:"D",e:"E",f:"F",g:"G",h:"H",i:"I",j:"J",k:"K",l:"L",m:"M",n:"N",o:"O",p:"P",q:"Q",r:"R",s:"S",t:"T",u:"U",v:"V",w:"W",x:"X",y:"Y",z:"Z",A:"A",B:"B",C:"C",D:"D",E:"E",F:"F",G:"G",H:"H",I:"I",J:"J",K:"K",L:"L",M:"M",N:"N",O:"O",P:"P",Q:"Q",R:"R",S:"S",T:"T",U:"U",V:"V",W:"W",X:"X",Y:"Y",Z:"Z"},t.Formula.SpecialConstants={"#NULL!":"0,e#NULL!","#NUM!":"0,e#NUM!","#DIV/0!":"0,e#DIV/0!","#VALUE!":"0,e#VALUE!","#REF!":"0,e#REF!","#NAME?":"0,e#NAME?"},t.Formula.TokenPrecedence={"!":1,":":2,",":2,M:-3,P:-3,"%":4,"^":5,"*":6,"/":6,"+":7,"-":7,"&":8,"<":9,">":9,G:9,L:9,N:9},t.Formula.TokenOpExpansion={G:">=",L:"<=",M:"-",N:"<>",P:"+"},t.Formula.TypeLookupTable={unaryminus:{"n*":"|n*:1|","e*":"|e*:1|","t*":"|t*:e#VALUE!|",b:"|b:n|"},unaryplus:{"n*":"|n*:1|","e*":"|e*:1|","t*":"|t*:e#VALUE!|",b:"|b:n|"},unarypercent:{"n*":"|n:n%|n*:n|","e*":"|e*:1|","t*":"|t*:e#VALUE!|",b:"|b:n|"},plus:{"n%":"|n%:n%|nd:n|nt:n|ndt:n|n$:n|n:n|n*:n|b:n|e*:2|t*:e#VALUE!|",nd:"|n%:n|nd:nd|nt:ndt|ndt:ndt|n$:n|n:nd|n*:n|b:n|e*:2|t*:e#VALUE!|",nt:"|n%:n|nd:ndt|nt:nt|ndt:ndt|n$:n|n:nt|n*:n|b:n|e*:2|t*:e#VALUE!|",ndt:"|n%:n|nd:ndt|nt:ndt|ndt:ndt|n$:n|n:ndt|n*:n|b:n|e*:2|t*:e#VALUE!|",n$:"|n%:n|nd:n|nt:n|ndt:n|n$:n$|n:n$|n*:n|b:n|e*:2|t*:e#VALUE!|",nl:"|n%:n|nd:n|nt:n|ndt:n|n$:n|n:n|n*:n|b:n|e*:2|t*:e#VALUE!|",n:"|n%:n|nd:nd|nt:nt|ndt:ndt|n$:n$|n:n|n*:n|b:n|e*:2|t*:e#VALUE!|",b:"|n%:n%|nd:nd|nt:nt|ndt:ndt|n$:n$|n:n|n*:n|b:n|e*:2|t*:e#VALUE!|","t*":"|ni:1|n*:e#VALUE!|t*:e#VALUE!|b:e#VALUE!|e*:2|","n*":"|ni:1|e*:2|","e*":"|e*:1|n*:1|t*:1|b:1|"},concat:{t:"|t:t|th:th|tw:tw|tl:t|tr:tr|t*:2|e*:2|",th:"|t:th|th:th|tw:t|tl:th|tr:t|t*:t|e*:2|",tw:"|t:tw|th:t|tw:tw|tl:tw|tr:tw|t*:t|e*:2|",tl:"|t:tl|th:th|tw:tw|tl:tl|tr:tr|t*:t|e*:2|","t*":"|t*:t|e*:2|","e*":"|e*:1|n*:1|t*:1|"},oneargnumeric:{"n*":"|n*:n|","e*":"|e*:1|","t*":"|t*:e#VALUE!|",b:"|b:n|"},twoargnumeric:{"n*":"|n*:n|t*:e#VALUE!|e*:2|","e*":"|e*:1|n*:1|t*:1|","t*":"|t*:e#VALUE!|n*:e#VALUE!|e*:2|"},propagateerror:{"n*":"|n*:2|e*:2|","e*":"|e*:2|","t*":"|t*:2|e*:2|",b:"|b:2|e*:2|"}},t.Formula.ParseFormulaIntoTokens=function(e){var o,i,n,r,a,s,l,c,u=t.Formula,d=t.Constants,h=u.ParseState,p=u.TokenType,f=u.CharClass,m=u.CharClassTable,g=u.UpperCaseTable,v=u.ParsePushToken,b=/^\$?[A-Z]{1,2}\$?[1-9]\d*$/i,y=[],C="",w=0,r=!1,x="";for(o=0;o<=e.length;o++)o<e.length?(i=e.charAt(o),n=m[i]):(i="",n=f.eof),w==h.num&&(n==f.num?C+=i:n!=f.numstart||r?"E"==i||"e"==i?(C+=i,r=!1,w=h.numexp1):(v(y,C,p.num,0),r=!1,w=0):(r=!0,C+=i)),w==h.numexp1&&(n==h.num?w=h.numexp2:"+"!=i&&"-"!=i||"E"!=g[C.charAt(C.length-1)]?"E"==i||"e"==i||(v(y,d.s_parseerrexponent,p.error,0),w=0):C+=i),w==h.numexp2&&(n==f.num?C+=i:(v(y,C,p.num,0),w=0)),w==h.alpha&&(n==f.num?w=h.coord:n==f.alpha||"."==i?C+=i:n==f.incoord?w=h.coord:n==f.op||n==f.numstart||n==f.space||n==f.eof?(v(y,C.toUpperCase(),p.name,0),w=0):(v(y,d.s_parseerrchar,p.error,0),w=0)),w==h.coord&&(n==f.num?C+=i:n==f.incoord?C+=i:n==f.alpha?w=h.alphanumeric:n==f.op||n==f.numstart||n==f.eof||n==f.space?(c=b.test(C)?p.coord:p.name,v(y,C.toUpperCase(),c,0),w=0):(v(y,d.s_parseerrchar,p.error,0),w=0)),w==h.alphanumeric&&(n==f.num||n==f.alpha?C+=i:n==f.op||n==f.numstart||n==f.space||n==f.eof?(v(y,C.toUpperCase(),p.name,0),w=0):(v(y,d.s_parseerrchar,p.error,0),w=0)),w==h.string?n==f.quote?w=h.stringquote:n==f.eof?(v(y,d.s_parseerrstring,p.error,0),w=0):C+=i:w==h.stringquote?n==f.quote?(C+=i,w=h.string):(v(y,C,p.string,0),w=0):w==h.specialvalue&&("!"==C.charAt(C.length-1)?(v(y,C,p.name,0),w=0):n==f.eof?(v(y,d.s_parseerrspecialvalue,p.error,0),w=0):C+=i),0==w&&(n==f.num?(C=i,w=h.num):n==f.numstart?(C=i,r=!0,w=h.num):n==f.alpha||n==f.incoord?(C=i,w=h.alpha):n==f.specialstart?(C=i,w=h.specialvalue):n==f.op?(C=i,y.length>0?(a=y[y.length-1],s=a.type,l=a.text,s==f.op&&(x=l+C,("<="==x||">="==x||"<>"==x)&&(C=l+C,y.pop(),y.length>0?(a=y[y.length-1],s=a.type,l=a.text):(s=f.eof,l="EOF")))):(s=f.eof,l="EOF"),c=p.op,0==y.length||s==f.op&&")"!=l&&"%"!=l?"-"==C?(C="M",i="M"):"+"==C?(C="P",i="P"):")"==C&&"("==l||"("!=C&&(c=p.error,C=d.s_parseerrtwoops):C.length>1&&(">="==C?(C="G",i="G"):"<="==C?(C="L",i="L"):"<>"==C?(C="N",i="N"):(c=p.error,C=d.s_parseerrtwoops)),v(y,C,c,i),w=0):n==f.quote?(C="",w=h.string):n==f.space||n==f.eof||v(y,d.s_parseerrchar,p.error,0));return y},t.Formula.ParsePushToken=function(e,t,o,i){e.push({text:t,type:o,opcode:i})},t.Formula.evaluate_parsed_formula=function(e,o,i){{var n,r,a=t.Formula;a.TokenType}return r=a.ConvertInfixToPolish(e),n=a.EvaluatePolish(e,r,o,i)},t.Formula.ConvertInfixToPolish=function(e){var o,i,n,r,a,s,l=t.Formula,c=t.Constants,u=l.TokenType,d=l.TokenPrecedence,h=[],p=[],f="",m=-1;for(o=0;o<e.length;o++)if(i=e[o],n=i.type,r=i.text,n==u.num||n==u.coord||n==u.string)h.push(o);else if(n==u.name)p.push(o),h.push(m);else{if(n==u.space)continue;if(","==r){for(;p.length&&"("!=e[p[p.length-1]].text;)h.push(p.pop());if(0==p.length){f=c.s_parseerrmissingopenparen;break}}else if("("==r)p.push(o);else if(")"==r){for(;p.length&&"("!=e[p[p.length-1]].text;)h.push(p.pop());if(0==p.length){f=c.s_parseerrcloseparennoopen;break}p.pop(),p.length&&e[p[p.length-1]].type==u.name&&h.push(p.pop())}else{if(n!=u.op){if(n==u.error){f=r;break}f="Internal error while processing parsed formula. ";break}for(p.length&&e[p[p.length-1]].type==u.name&&h.push(p.pop());!(!p.length||e[p[p.length-1]].type!=u.op||"("==e[p[p.length-1]].text||(a=d[i.opcode],s=d[e[p[p.length-1]].opcode],a>=0&&s>a)||0>a&&(a=-a,0>s&&(s=-s),s>=a));)h.push(p.pop());p.push(o)}}for(;p.length>0;){if("("==e[p[p.length-1]].text){f=c.s_parseerrmissingcloseparen;break}h.push(p.pop())}return f?f:h},"undefined"==typeof t.debug_log&&(t.debug_log=[]),t.DebugLog=function(){},t.Formula.EvaluatePolish=function(e,o,i,n){var r,a,s,l,c,u,d,h,p,f,m,g,v,b,y=t.Formula,C=t.Constants,w=y.TokenType,x=y.LookupResultType,_=y.TypeLookupTable,S=y.OperandAsNumber,k=y.OperandAsText,T=y.OperandValueAndType,F=y.OperandsAsCoordOnSheet,E=t.format_number_for_display||function(e){return e+""},D="",P=-1,A={value:"",type:"e#VALUE!",error:C.s_parseerrmissingoperand},I=[],M=function(e,t){I.push({type:e,value:t})};if(!(e.length&&o instanceof Array))return{value:"",type:"e#VALUE!",error:"string"==typeof o?o:""};var R=[];for(r=0;r<o.length;r++)if(a=o[r],a!=P)if(s=e[a],l=s.type,c=s.text,R.push(s),l==w.num)M("n",c-0);else if(l==w.coord)M("coord",c);else if(l==w.string)M("t",c);else if(l==w.op){if(I.length<=0)return A;if("M"==c)u=S(i,I),f=x(u.type,u.type,_.unaryminus),M(f,-u.value);else if("P"==c)u=S(i,I),f=x(u.type,u.type,_.unaryplus),M(f,u.value);else if("%"==c)u=S(i,I),f=x(u.type,u.type,_.unarypercent),M(f,.01*u.value);else if("&"==c){if(I.length<=1)return A;d=k(i,I),u=k(i,I),f=x(u.type,u.type,_.concat),M(f,u.value+d.value)}else if(":"==c){if(I.length<=1)return A;u=y.OperandsAsRangeOnSheet(i,I),u.error&&(D=D||u.error),M(u.type,u.value)}else if("!"==c){if(I.length<=1)return A;u=F(i,I),u.error&&(D=D||u.error),M(u.type,u.value)}else if("<"==c||"L"==c||"="==c||"G"==c||">"==c||"N"==c){if(I.length<=1){D=C.s_parseerrmissingoperand;break}d=T(i,I),u=T(i,I),"n"==u.type.charAt(0)&&"n"==d.type.charAt(0)?(g=0,"<"==c?g=u.value<d.value?1:0:"L"==c?g=u.value<=d.value?1:0:"="==c?g=u.value==d.value?1:0:"G"==c?g=u.value>=d.value?1:0:">"==c?g=u.value>d.value?1:0:"N"==c&&(g=u.value!=d.value?1:0),M("nl",g)):"e"==u.type.charAt(0)?M(u.type,0):"e"==d.type.charAt(0)?M(d.type,0):(h=u.type.charAt(0),p=d.type.charAt(0),"n"==h?u.value=E(u.value,"n",""):"b"==h&&(u.value=""),"n"==p?d.value=E(d.value,"n",""):"b"==p&&(d.value=""),g=0,u.value=u.value.toLowerCase(),d.value=d.value.toLowerCase(),"<"==c?g=u.value<d.value?1:0:"L"==c?g=u.value<=d.value?1:0:"="==c?g=u.value==d.value?1:0:"G"==c?g=u.value>=d.value?1:0:">"==c?g=u.value>d.value?1:0:"N"==c&&(g=u.value!=d.value?1:0),M("nl",g))}else{if(I.length<=1){D=C.s_parseerrmissingoperand;break}"+"==c?(d=T(i,I),u=T(i,I),f=x(u.type,d.type,_.plus),M(f,u.value+d.value)):(d=S(i,I),u=S(i,I)),"-"==c?(f=x(u.type,d.type,_.plus),M(f,u.value-d.value)):"*"==c?(f=x(u.type,d.type,_.plus),M(f,u.value*d.value)):"/"==c?0!=d.value?M("n",u.value/d.value):M("e#DIV/0!",0):"^"==c&&(u.value=Math.pow(u.value,d.value),u.type="n",isNaN(u.value)&&(u.value=0,u.type="e#NUM!"),M(u.type,u.value))}}else{if(l!=w.name){D=C.s_InternalError+"Unknown token "+l+" ("+c+"). ";break}if(D=y.CalculateFunction(c,I,i,e.coord))break}else M("start",0);return value=I[0]?I[0].value:"",h=I[0]?I[0].type:"","name"==h&&(u=t.Formula.LookupName(i,value),value=u.value,h=u.type,D=D||u.error),"coord"==h&&(u=T(i,I),value=u.value,h=u.type,"b"==h&&(h="n",value=0)),I.length>1&&!D&&(D+=C.s_parseerrerrorinformula),m=h,"e"==h.charAt(0)?D=D||h.substring(1)||C.s_calcerrerrorvalueinformula:"range"==h&&(v=value.match(/^(.*)\|(.*)\|/),b=v[1].indexOf("!"),v[1]=b>=0?v[1].substring(b+1)+"!"+v[1].substring(0,b).toUpperCase():v[1].toUpperCase(),value=v[1]+":"+v[2].toUpperCase(),n||(D=C.s_formularangeresult+" "+value)),D&&"e"!=m.charAt(0)&&(value=D,m="e"),"n"!=m.charAt(0)||!isNaN(value)&&isFinite(value)||(value=0,m="e#NUM!",D=isNaN(value)?C.s_calcerrnumericnan:C.s_calcerrnumericoverflow),{value:value,type:m,error:D}},t.Formula.LookupResultType=function(e,t,o){var i,n,r,a=o[e];return a||(a=o[e.charAt(0)+"*"])?(i=a.indexOf("|"+t+":"),i>=0?(n=a.indexOf("|",i+1),0>n?"e#VALUE! (internal error, incorrect LookupResultType "+a+")":(r=a.substring(i+t.length+2,n),"1"==r?e:"2"==r?t:r)):(i=a.indexOf("|"+t.charAt(0)+"*:"),i>=0?(n=a.indexOf("|",i+1),0>n?"e#VALUE! (internal error, incorrect LookupResultType "+a+")":(r=a.substring(i+4,n),"1"==r?e:"2"==r?t:r)):"e#VALUE!")):"e#VALUE! (internal error, missing LookupResultType "+e.charAt(0)+"*)"},t.Formula.TopOfStackValueAndType=function(e,o){var i=t.Formula,n={type:"",value:""},r=o.length;return r?(n.value=o[r-1].value,n.type=o[r-1].type,o.pop(),"name"==n.type&&(n=i.LookupName(e,n.value)),n):(n.error=t.Constants.s_InternalError+"no operand on stack",n)},t.Formula.OperandAsNumber=function(e,o){var i,n,r=t.Formula.OperandValueAndType(e,o);return i=r.type.charAt(0),"n"==i?r.value=r.value-0:"b"==i?(r.type="n",r.value=0):"e"==i?r.value=0:(n=t.DetermineValueType?t.DetermineValueType(r.value):{value:r.value-0,type:"n"},"n"==n.type.charAt(0)?(r.value=n.value-0,r.type=n.type):(r.value=0,r.type=n.type)),r},t.Formula.OperandAsText=function(e,o){var i,n=t.Formula.OperandValueAndType(e,o);return i=n.type.charAt(0),"t"==i||("n"==i?(n.value=t.format_number_for_display?t.format_number_for_display(n.value,n.type,""):n.value=n.value+"",n.type="t"):"b"==i?(n.value="",n.type="t"):"e"==i?n.value="":(o.value=n.value+"",o.type="t")),n},t.Formula.OperandValueAndType=function(e,o){var i,n,r,a,s=t.Formula,l={type:"",value:""},c=o.length;if(!c)return l.error=t.Constants.s_InternalError+"no operand on stack",l;if(l.value=o[c-1].value,l.type=o[c-1].type,o.pop(),"name"==l.type&&(l=s.LookupName(e,l.value)),"range"==l.type&&(l=s.StepThroughRangeDown(o,l.value)),"coord"==l.type){if(a=e,r=l.value.indexOf("!"),-1!=r){if(a=s.FindInSheetCache(l.value.substring(r+1)),null==a)return l.type="e#REF!",l.error=t.Constants.s_sheetunavailable+" "+l.value.substring(r+1),l.value=0,l;l.value=l.value.substring(0,r)}a?(n=a.cells[t.Formula.PlainCoord(l.value)],n?(i=n.valuetype,l.value=n.datavalue):i="b"):(i="e#N/A",l.value=0),l.type=i||"b","b"==l.type&&(l.value=0)}return l},t.Formula.OperandAsCoord=function(e,o){return t.Formula.OperandAsType(e,o,"coord")},t.Formula.OperandAsRange=function(e,o){return t.Formula.OperandAsType(e,o,"range")},t.Formula.OperandAsType=function(e,o,i){var n=(t.Formula,{type:"",value:""}),r=o.length;return n.value=o[r-1].value,n.type=o[r-1].type,o.pop(),"name"==n.type&&(n=t.Formula.LookupName(e,n.value)),n.type==i?n:(n.value=t.Constants.s_calcerrcellrefmissing,n.type="e#REF!",n)},t.Formula.OperandsAsCoordOnSheet=function(e,o){var i,n,r,a,s={},l={},c=t.Formula,u=o.length;return s.value=o[u-1].value,s.type=o[u-1].type,o.pop(),i=c.OperandAsSheetName(e,o),n=c.FindInSheetCache(i.value),null==n?(l.type="e#REF!",l.value=0,l.error=t.Constants.s_sheetunavailable+" "+i.value,l):("name"==s.type&&(s=c.LookupName(n,s.value)),l.type=s.type,"coord"==s.type?l.value=s.value+"!"+i.value:"range"==s.type?(r=s.value.indexOf("|"),a=s.value.indexOf("|",r+1),l.value=s.value.substring(0,r)+"!"+i.value+"|"+s.value.substring(r+1,a)+"|"):"e"==s.type.charAt(0)?l.value=s.value:(l.error=t.Constants.s_calcerrcellrefmissing,l.type="e#REF!",l.value=0),l)},t.Formula.OperandsAsRangeOnSheet=function(e,o){var i,n,r,a,s={},l=t.Formula,c=t.Constants,u=o.length;return s.value=o[u-1].value,s.type=o[u-1].type,o.pop(),i=l.OperandAsCoord(e,o),"coord"!=i.type?{value:0,type:"e#REF!"}:(n=e,r=i.value.indexOf("!"),-1!=r&&(a=i.value.indexOf("|",r+1),0>a&&(a=i.value.length),n=l.FindInSheetCache(i.value.substring(r+1,a)),null==n)?{value:0,type:"e#REF!",errortext:c.s_sheetunavailable+" "+i.value.substring(r+1,a)}:("name"==s.type&&(s=l.LookupName(n,s.value,"end")),"coord"==s.type?{value:i.value+"|"+s.value+"|",type:"range"}:{value:c.s_calcerrcellrefmissing,type:"e#REF!"}))},t.Formula.OperandAsSheetName=function(e,o){var i,n,r=(t.Formula,{type:"",value:""}),a=o.length;if(r.value=o[a-1].value,r.type=o[a-1].type,o.pop(),"name"==r.type){if(i=t.Formula.LookupName(e,r.value),!i.value)return r;r.value=i.value,r.type=i.type}return"coord"==r.type&&(n=e.cells[t.Formula.PlainCoord(r.value)],n?(r.value=n.datavalue,r.type=n.valuetype):(r.value="",r.type="b")),"t"==r.type.charAt(0)?r:(r.value="",r.error=t.Constants.s_calcerrsheetnamemissing,r)},t.Formula.LookupName=function(e,o,i){var n,r,a,s=e.names,l={},c=!1;if(s[o.toUpperCase()]){if(l.value=s[o.toUpperCase()].definition,"="==l.value.charAt(0)){if(e.checknamecirc){if(e.checknamecirc[o])return l.type="e#NAME?",l.error=t.Constants.s_circularnameref+' "'+o+'".',l}else e.checknamecirc={},c=!0;if(e.checknamecirc[o]=!0,a=t.Formula.ParseFormulaIntoTokens(l.value.substring(1)),l=t.Formula.evaluate_parsed_formula(a,e,1),delete e.checknamecirc[o],c&&delete e.checknamecirc,"range"!=l.type)return l}return n=l.value.indexOf(":"),-1!=n?(l.type="range",l.value=l.value.substring(0,n)+"|"+l.value.substring(n+1)+"|",l.value=l.value.toUpperCase()):(l.type="coord",l.value=l.value.toUpperCase()),l}return(r=t.Formula.SpecialConstants[o.toUpperCase()])?(n=r.indexOf(","),l.value=r.substring(0,n)-0,l.type=r.substring(n+1),l):/^[a-zA-Z][a-zA-Z]?$/.test(o)?(l.type="coord",l.value=o.toUpperCase()+(i?e.attribs.lastrow:1),l):(l.value="",l.type="e#NAME?",l.error=t.Constants.s_calcerrunknownname+' "'+o+'"',l)},t.Formula.StepThroughRangeDown=function(e,o){var i,n,r,a,s,l,c,u,d,h,p=t.Formula;for(a=o.indexOf("|"),s=o.indexOf("|",a+1),i=o.substring(0,a),n=o.substring(a+1,s),r=o.substring(s+1)-0,a=i.indexOf("!"),-1!=a?(l=i.substring(a),i=i.substring(0,a)):l="",a=n.indexOf("!"),-1!=a&&(n=n.substring(0,a)),c=p.OrderRangeParts(i,n),h=0,d=c.r1;d<=c.r2;d++)for(u=c.c1;u<=c.c2;u++)if(h++,h>r)return(d!=c.r2||u!=c.c2)&&p.PushOperand(e,"range",i+l+"|"+n+"|"+h),{value:t.crToCoord(u,d)+l,type:"coord"}},t.Formula.DecodeRangeParts=function(e,o){var i,n,r,a,s,l,c,u=t.Formula;return r=o.indexOf("|"),a=o.indexOf("|",r+1),i=o.substring(0,r),n=o.substring(r+1,a),r=i.indexOf("!"),-1!=r?(s=i.substring(r+1),i=i.substring(0,r)):s="",r=n.indexOf("!"),-1!=r&&(n=n.substring(0,r)),l=e,s&&(l=u.FindInSheetCache(s),null==l)?null:(c=u.OrderRangeParts(i,n),{sheetdata:l,sheetname:s,col1num:c.c1,ncols:c.c2-c.c1+1,row1num:c.r1,nrows:c.r2-c.r1+1})},t.Formula.FunctionList||(t.Formula.FunctionList={}),t.Formula.FunctionClasses=null,t.Formula.FunctionArgDefs={},t.Formula.StoreIoEventFormula=function(e,o,i,n,r){var a=[];if(t.Formula.Clone(a,i),a.reverse(),0!=a.length){if("undefined"==typeof n.ioEventTree&&(n.ioEventTree={}),"undefined"==typeof n.ioParameterList&&(n.ioParameterList={}),"undefined"==typeof n.ioTimeTriggerList&&(n.ioTimeTriggerList={}),"undefined"==typeof n.radioGroupList&&(n.radioGroupList={}),"undefined"==typeof n.ioParameterList[o]&&(n.ioParameterList[o]={}),n.ioParameterList[o]=a,n.ioParameterList[o].function_name=e,"TimeTrigger"==r){var s=function(e,t,o){var i=o.cells[t];"undefined"!=typeof i&&"n"==i.valuetype.charAt(0)&&e.push(i.datavalue)},l=t.Formula.PlainCoord(a[0].value),c=[];if("range"==a[0].type)for(var u=t.Formula.DecodeRangeParts(n,l),d=0;d<u.ncols;d++)for(var h=0;h<u.nrows;h++){var p=t.crToCoord(u.col1num+d,u.row1num+h);s(c,p,n)}if("coord"==a[0].type&&s(c,l,n),"n"==a[0].type.charAt(0)&&c.push(a[0].value),"undefined"==typeof n.ioTimeTriggerList[o]||0==t.Formula.ArrayValuesEqual(n.ioTimeTriggerList[o],c)){n.ioTimeTriggerList[o]=c;for(var f=(new Date).getTimezoneOffset(),m=25569,g=[],v=0;v<c.length;++v)g[v]=Math.floor(24*(c[v]-m)*60+f);n.ScheduleSheetCommands("settimetrigger "+o+" "+g.toString())}}if("EventTree"==r&&("coord"==a[0].type||"range"==a[0].type)){var b=a[0].value.replace(/\$/g,""),y=function(e,t,o){"undefined"==typeof e[t]&&(e[t]={}),e[t][o]=o};if("range"==a[0].type)for(var u=t.Formula.DecodeRangeParts(n,b),d=0;d<u.ncols;d++)for(var h=0;h<u.nrows;h++){var C=t.crToCoord(u.col1num+d,u.row1num+h);y(n.ioEventTree,C,o)}"coord"==a[0].type&&y(n.ioEventTree,b,o)}if("Input"==r){var w=null!=t.CurrentSpreadsheetControlObject?t.CurrentSpreadsheetControlObject.formDataViewer:t.CurrentSpreadsheetViewerObject.formDataViewer;if(null!=w&&1==w.loaded){null==w.formFields&&t.Formula.LoadFormFields();var x=(e+o).toLowerCase(),_=null;if(null==w.formFields[x]){var S=w.formFields[x]=w.formFieldsLength++ +2,k=t.crToCoord(S,1);_="set "+k+" text t "+t.encodeForSave(e.toLowerCase()+o)}if("t"==a[0].type.charAt(0)||"n"==a[0].type.charAt(0)){var T=t.crToCoord(w.formFields[x],2);if(null==w.sheet.cells[T]||w.sheet.cells[T].datavalue!=a[0].value){var F="set "+T+" text t "+t.encodeForSave(a[0].value);_=null!=_?_+"\n"+F:F}}null!=_&&w.sheet.ScheduleSheetCommands(_,!1)}}}},t.Formula.ArrayValuesEqual=function(e,t){var o=e.length;if(o!=t.length)return!1;for(;o--;)if(e[o]!==t[o])return!1;return!0},t.Formula.Clone=function(e,o){for(var i in o)"object"==typeof o[i]&&null!==o[i]&&e[i]?t.Formula.Clone(e[i],o[i]):e[i]=o[i]},t.Formula.LoadFormFields=function(){var e=null!=t.CurrentSpreadsheetControlObject?t.CurrentSpreadsheetControlObject.formDataViewer:t.CurrentSpreadsheetViewerObject.formDataViewer;e.formFields={},null==e.sheet.cells.A1&&e.sheet.ScheduleSheetCommands("set A1 text t "+t.encodeForSave("FieldName:"),!1),null==e.sheet.cells.A2&&e.sheet.ScheduleSheetCommands("set A2 text t "+t.encodeForSave("Pending:"),!1);for(var o=2;;){var i=t.crToCoord(o,1),n=e.sheet.cells[i];if(!n)break;e.formFields[n.datavalue.toLowerCase()]=o,o++}e.formFieldsLength=o-2},t.Formula.CalculateFunction=function(e,o,i,n){var r,a,s,l,c,u=t.Formula,d="";if(r=u.FunctionList[e]){if(a=[],s=r[0],l=r[1],u.CopyFunctionArgs(o,a),r[6]&&""!=r[6]&&(t.DebugLog("action:"+e),u.StoreIoEventFormula(e,n,a,i,r[6])),100!=l)if(0>l){if(a.length<-l)return d=u.FunctionArgsError(e,o)}else if(a.length!=l)return d=u.FunctionArgsError(e,o);d=s(e,o,a,i,n)}else c=e,o.length&&"start"==o[o.length-1].type?(o.pop(),u.PushOperand(o,"name",c)):d=t.Constants.s_sheetfuncunknownfunction+" "+c+". ";return d},t.Formula.PushOperand=function(e,t,o){e.push({type:t,value:o})},t.Formula.CopyFunctionArgs=function(e,o){var o;for(t.Formula;e.length>0&&"start"!=e[e.length-1].type;)o.push(e.pop());e.pop()},t.Formula.FunctionArgsError=function(e,o){var i=t.Constants.s_calcerrincorrectargstofunction+" "+e+". ";return t.Formula.PushOperand(o,"e#VALUE!",i),i},t.Formula.FunctionSpecificError=function(e,o,i,n){return t.Formula.PushOperand(o,i,n),n},t.Formula.CheckForErrorValue=function(e,t){return"e"==t.type.charAt(0)?(e.push(t),!0):!1},t.Formula.FillFunctionInfo=function(){var e,o,i,n,r,a=t.Formula,s=t.Constants;if(!a.FunctionClasses){for(e in a.FunctionList)o=a.FunctionList[e],o[2]&&(a.FunctionArgDefs[o[2]]=s["s_farg_"+o[2]]||""),o[3]||s["s_fdef_"+e]&&(a.FunctionList[e][3]=s["s_fdef_"+e]);for(a.FunctionClasses={},r=0;r<s.function_classlist.length;r++)n=s.function_classlist[r],a.FunctionClasses[n]={name:s["s_fclass_"+n],items:[]};for(e in a.FunctionList)for(o=a.FunctionList[e],i=o[4]?o[4].split(","):[],i.push("all"),r=0;r<i.length;r++)n=i[r],a.FunctionClasses[n].items.push(e);for(n in a.FunctionClasses)a.FunctionClasses[n].items.sort()}},t.Formula.FunctionArgString=function(e){var o,i,n,r=t.Formula,a=r.FunctionList[e],s=a[2];if(!s){if(o=a[1],0!=o){if(o>0){for(n="v1",i=2;o>=i;i++)n+=", v"+i;return n}if(0>o){for(n="v1",i=2;-o>i;i++)n+=", v"+i;return n+", ..."}return"nargs: "+o}s=" "}return n=r.FunctionArgDefs[s]||s},t.Formula.SeriesFunctions=function(e,o,i,n){for(var r,a,s,l,c,u,d,h,p,f=t.Formula,m=f.OperandValueAndType,g=f.LookupResultType,v=f.TypeLookupTable.plus,b=function(e,t){o.push({type:e,value:t})},y="",C=0,w="",x=0,_=0,S=0,k=1;i.length>0;)r=m(n,i),a=r.type.charAt(0),"n"==a&&(x+=1),"b"!=a&&(_+=1),"b"==a&&(S+=1),"e"!=a&&"b"!=a&&(y+=r.value),"n"==a?(s=r.value-0,C+=s,k*=s,l=void 0!=l?s>l?s:l:s,c=void 0!=c?c>s?s:c:s,1==x?(h=s,p=0):(u=h+(s-h)/x,d=p+(s-h)*(s-u),p=d,h=u),w=g(r.type,w||r.type,v)):"e"==a&&"e"!=w.charAt(0)&&(w=r.type);switch(w=w||"n",e){case"CONCAT":case"CONCATENATE":b("t",y);break;case"SUM":b(w,C);break;case"PRODUCT":b(w,k);break;case"MIN":b(w,c||0);break;case"MAX":b(w,l||0);break;case"COUNT":b("n",x);break;case"COUNTA":b("n",_);break;case"COUNTBLANK":b("n",S);break;case"AVERAGE":x>0?b(w,C/x):b("e#DIV/0!",0);break;case"STDEV":x>1?b(w,Math.sqrt(d/(x-1))):b("e#DIV/0!",0);break;case"STDEVP":x>1?b(w,Math.sqrt(d/x)):b("e#DIV/0!",0);break;case"VAR":x>1?b(w,d/(x-1)):b("e#DIV/0!",0);break;case"VARP":x>1?b(w,d/x):b("e#DIV/0!",0)}return null},t.Formula.FunctionList.AVERAGE=[t.Formula.SeriesFunctions,-1,"vn",null,"stat"],t.Formula.FunctionList.CONCAT=[t.Formula.SeriesFunctions,-1,"vn",null,"text"],t.Formula.FunctionList.CONCATENATE=[t.Formula.SeriesFunctions,-1,"vn",null,"text"],t.Formula.FunctionList.COUNT=[t.Formula.SeriesFunctions,-1,"vn",null,"stat"],t.Formula.FunctionList.COUNTA=[t.Formula.SeriesFunctions,-1,"vn",null,"stat"],t.Formula.FunctionList.COUNTBLANK=[t.Formula.SeriesFunctions,-1,"vn",null,"stat"],t.Formula.FunctionList.MAX=[t.Formula.SeriesFunctions,-1,"vn",null,"stat"],t.Formula.FunctionList.MIN=[t.Formula.SeriesFunctions,-1,"vn",null,"stat"],t.Formula.FunctionList.PRODUCT=[t.Formula.SeriesFunctions,-1,"vn",null,"stat"],t.Formula.FunctionList.STDEV=[t.Formula.SeriesFunctions,-1,"vn",null,"stat"],t.Formula.FunctionList.STDEVP=[t.Formula.SeriesFunctions,-1,"vn",null,"stat"],t.Formula.FunctionList.SUM=[t.Formula.SeriesFunctions,-1,"vn",null,"stat"],t.Formula.FunctionList.VAR=[t.Formula.SeriesFunctions,-1,"vn",null,"stat"],t.Formula.FunctionList.VARP=[t.Formula.SeriesFunctions,-1,"vn",null,"stat"],t.Formula.SumProductFunction=function(e,o,n,r){for(var a,s=[],l=0,c=t.Formula,u=0,d=0,h=function(e,t){o.push({type:e,value:t})};n.length>0;){if(a=c.TopOfStackValueAndType(r,n),"range"!=a.type)return void h("e#VALUE!",0);if(rangeinfo=c.DecodeRangeParts(r,a.value),u){if(u!=rangeinfo.ncols)return void h("e#VALUE!",0)}else u=rangeinfo.ncols;if(d){if(d!=rangeinfo.nrows)return void h("e#VALUE!",0)}else d=rangeinfo.nrows;for(i=0;i<rangeinfo.ncols;i++)for(j=0;j<rangeinfo.nrows;j++)k=i*rangeinfo.nrows+j,cellcr=t.crToCoord(rangeinfo.col1num+i,rangeinfo.row1num+j),cell=rangeinfo.sheetdata.GetAssuredCell(cellcr),value="n"==cell.valuetype?cell.datavalue:0,s[k]=("undefined"!=typeof s[k]?s[k]:1)*value}for(i=0;i<s.length;i++)l+=s[i];h("n",l)},t.Formula.FunctionList.SUMPRODUCT=[t.Formula.SumProductFunction,-1,"rangen","","stat"],t.Formula.DSeriesFunctions=function(e,o,i,n){var r,a,s,l,c,u,d,h,p,f,m,g,v,b,y,C,w,x,_,S,k,T,F,E,D,P,A=t.Formula,I=(A.OperandValueAndType,A.LookupResultType),M=A.TypeLookupTable.plus,R=function(e,t){o.push({type:e,value:t})},r={},N=0,L="",O=0,z=0,H=0,B=0,U=1;if(s=A.TopOfStackValueAndType(n,i),l=A.OperandValueAndType(n,i),c=A.TopOfStackValueAndType(n,i),"range"!=s.type||"range"!=c.type)return A.FunctionArgsError(e,o);if(u=A.DecodeRangeParts(n,s.value),d=A.DecodeRangeParts(n,c.value),h=A.FieldToColnum(u.sheetdata,u.col1num,u.ncols,u.row1num,l.value,l.type),0>=h)return void R("e#VALUE!",0);for(p=u.col1num+h-1,b=[],f=0;f<d.ncols;f++){if(v=d.sheetdata.GetAssuredCell(t.crToCoord(d.col1num+f,d.row1num)),criterianum=A.FieldToColnum(u.sheetdata,u.col1num,u.ncols,u.row1num,v.datavalue,v.valuetype),0>=criterianum)return void R("e#VALUE!",0);b.push(u.col1num+criterianum-1)}for(f=1;f<u.nrows;f++){y=!1;e:for(m=1;m<d.nrows;m++){for(g=0;g<d.ncols;g++)if(C=t.crToCoord(d.col1num+g,d.row1num+m),v=d.sheetdata.GetAssuredCell(C),w=v.datavalue,("string"!=typeof w||0!=w.length)&&(x=b[g],_=t.crToCoord(x,u.row1num+f),v=u.sheetdata.GetAssuredCell(_),!A.TestCriteria(v.datavalue,v.valuetype||"b",w)))continue e;y=!0;break e}y&&(a=t.crToCoord(p,u.row1num+f),v=u.sheetdata.GetAssuredCell(a),r.value=v.datavalue,r.type=v.valuetype,S=r.type.charAt(0),B+=1,"n"==S&&(O+=1),"b"!=S&&(z+=1),"b"==S&&(H+=1),"n"==S?(v1=r.value-0,N+=v1,U*=v1,k=void 0!=k?v1>k?v1:k:v1,T=void 0!=T?T>v1?v1:T:v1,1==O?(D=v1,P=0):(F=D+(v1-D)/O,E=P+(v1-D)*(v1-F),P=E,D=F),L=I(r.type,L||r.type,M)):"e"==S&&"e"!=L.charAt(0)&&(L=r.type))}switch(L=L||"n",e){case"DSUM":R(L,N);break;case"DPRODUCT":R(L,U);break;case"DMIN":R(L,T||0);break;case"DMAX":R(L,k||0);break;case"DCOUNT":R("n",O);break;case"DCOUNTA":R("n",z);break;case"DAVERAGE":O>0?R(L,N/O):R("e#DIV/0!",0);break;case"DSTDEV":O>1?R(L,Math.sqrt(E/(O-1))):R("e#DIV/0!",0);break;case"DSTDEVP":O>1?R(L,Math.sqrt(E/O)):R("e#DIV/0!",0);break;case"DVAR":O>1?R(L,E/(O-1)):R("e#DIV/0!",0);break;case"DVARP":O>1?R(L,E/O):R("e#DIV/0!",0);break;case"DGET":1==B?R(r.type,r.value):0==B?R("e#VALUE!",0):R("e#NUM!",0)}},t.Formula.FunctionList.DAVERAGE=[t.Formula.DSeriesFunctions,3,"dfunc","","stat"],t.Formula.FunctionList.DCOUNT=[t.Formula.DSeriesFunctions,3,"dfunc","","stat"],t.Formula.FunctionList.DCOUNTA=[t.Formula.DSeriesFunctions,3,"dfunc","","stat"],t.Formula.FunctionList.DGET=[t.Formula.DSeriesFunctions,3,"dfunc","","stat"],t.Formula.FunctionList.DMAX=[t.Formula.DSeriesFunctions,3,"dfunc","","stat"],t.Formula.FunctionList.DMIN=[t.Formula.DSeriesFunctions,3,"dfunc","","stat"],t.Formula.FunctionList.DPRODUCT=[t.Formula.DSeriesFunctions,3,"dfunc","","stat"],t.Formula.FunctionList.DSTDEV=[t.Formula.DSeriesFunctions,3,"dfunc","","stat"],t.Formula.FunctionList.DSTDEVP=[t.Formula.DSeriesFunctions,3,"dfunc","","stat"],t.Formula.FunctionList.DSUM=[t.Formula.DSeriesFunctions,3,"dfunc","","stat"],t.Formula.FunctionList.DVAR=[t.Formula.DSeriesFunctions,3,"dfunc","","stat"],t.Formula.FunctionList.DVARP=[t.Formula.DSeriesFunctions,3,"dfunc","","stat"],t.Formula.FieldToColnum=function(e,o,i,n,r,a){var s,l,c;
-if("n"==a.charAt(0))return s=r-0,0>=s||s>i?0:Math.floor(s);if("t"!=a.charAt(0))return 0;for(r=r?r.toLowerCase():"",s=0;i>s;s++)if(l=e.GetAssuredCell(t.crToCoord(o+s,n)),c=l.datavalue,c=(c+"").toLowerCase(),c==r)return s+1;return 0},t.Formula.LookupFunctions=function(e,o,i,n){var r,a,s,l,c,u,d,h,p,f,m,g,v,b,y,C,r,w=t.Formula,x=w.OperandValueAndType,_=(w.LookupResultType,w.TypeLookupTable.plus,function(e,t){o.push({type:e,value:t})});if(r=x(n,i),"string"==typeof r.value&&(r.value=r.value.toLowerCase()),a=w.TopOfStackValueAndType(n,i),s=1,"MATCH"==e){if(i.length){if(s=w.OperandAsNumber(n,i),"n"!=s.type.charAt(0))return void _("e#VALUE!",0);if(i.length)return w.FunctionArgsError(e,o),0;s=s.value-0}}else{if(l=w.OperandAsNumber(n,i),"n"!=l.type.charAt(0))return void _("e#VALUE!",0);if(l=Math.floor(l.value),i.length){if(s=w.OperandAsNumber(n,i),"n"!=s.type.charAt(0))return void _("e#VALUE!",0);if(i.length)return w.FunctionArgsError(e,o),0;s=s.value?1:0}}if(r.type=r.type.charAt(0),"n"==r.type&&(r.value=r.value-0),"range"!=a.type)return w.FunctionArgsError(e,o),0;if(c=w.DecodeRangeParts(n,a.value,a.type),!c)return void _("e#REF!",0);if(u=0,d=0,h=0,p=0,"HLOOKUP"==e){if(h=1,l>c.nrows)return void _("e#REF!",0)}else if("VLOOKUP"==e){if(p=1,l>c.ncols)return void _("e#REF!",0)}else{if("MATCH"!=e)return w.FunctionArgsError(e,o),0;if(c.ncols>1){if(c.nrows>1)return void _("e#N/A",0);h=1}else p=1}if(1>l&&"MATCH"!=e)return _("e#VALUE!",0),0;for(;;){if(C=t.crToCoord(c.col1num+u,c.row1num+d),v=c.sheetdata.GetAssuredCell(C),b=v.datavalue,y=v.valuetype?v.valuetype.charAt(0):"b","n"==y&&(b-=0),s){if("n"==r.type&&"n"==y){if(r.value==b)break;if(s>0&&r.value>b||0>s&&r.value<b)f=1,m=u,g=d;else if(f){f=2;break}}else if("t"==r.type&&"t"==y){if(b="string"==typeof b?b.toLowerCase():"",r.value==b)break;if(s>0&&r.value>b||0>s&&r.value<b)f=1,m=u,g=d;else if(f){f=2;break}}}else if("n"==r.type&&"n"==y){if(r.value==b)break}else if("t"==r.type&&"t"==y&&(b="string"==typeof b?b.toLowerCase():"",r.value==b))break;if(d+=p,u+=h,d>=c.nrows||u>=c.ncols){if(f){f=2;break}return void _("e#N/A",0)}}2==f&&(d=g,u=m),"MATCH"==e?(b=u+d+1,y="n"):(C=t.crToCoord(c.col1num+u+("VLOOKUP"==e?l-1:0),c.row1num+d+("HLOOKUP"==e?l-1:0)),v=c.sheetdata.GetAssuredCell(C),b=v.datavalue,y=v.valuetype),_(y,b)},t.Formula.FunctionList.HLOOKUP=[t.Formula.LookupFunctions,-3,"hlookup","","lookup"],t.Formula.FunctionList.MATCH=[t.Formula.LookupFunctions,-2,"match","","lookup"],t.Formula.FunctionList.VLOOKUP=[t.Formula.LookupFunctions,-3,"vlookup","","lookup"],t.Formula.IndexFunction=function(e,o,i,n){var r,a,s,l,c,u,d,h=t.Formula,p=function(e,t){o.push({type:e,value:t})};if(r=h.TopOfStackValueAndType(n,i),"range"!=r.type)return h.FunctionArgsError(e,o),0;if(s=h.DecodeRangeParts(n,r.value,r.type),a=s.sheetname?"!"+s.sheetname:"",l={value:0},c={value:0},i.length){if(l=h.OperandAsNumber(n,i),"n"!=l.type.charAt(0)||l.value<0)return void p("e#VALUE!",0);if(i.length){if(c=h.OperandAsNumber(n,i),"n"!=c.type.charAt(0)||c.value<0)return void p("e#VALUE!",0);if(i.length)return h.FunctionArgsError(e,o),0}else 1==s.nrows&&(c.value=l.value,l.value=0)}return l.value>s.nrows||c.value>s.ncols?void p("e#REF!",0):(0==l.value?0==c.value?1==s.nrows&&1==s.ncols?(u=t.crToCoord(s.col1num,s.row1num)+a,d="coord"):(u=t.crToCoord(s.col1num,s.row1num)+a+"|"+t.crToCoord(s.col1num+s.ncols-1,s.row1num+s.nrows-1)+"|",d="range"):1==s.nrows?(u=t.crToCoord(s.col1num+c.value-1,s.row1num)+a,d="coord"):(u=t.crToCoord(s.col1num+c.value-1,s.row1num)+a+"|"+t.crToCoord(s.col1num+c.value-1,s.row1num+s.nrows-1)+"|",d="range"):0==c.value?1==s.ncols?(u=t.crToCoord(s.col1num,s.row1num+l.value-1)+a,d="coord"):(u=t.crToCoord(s.col1num,s.row1num+l.value-1)+a+"|"+t.crToCoord(s.col1num+s.ncols-1,s.row1num+l.value-1)+"|",d="range"):(u=t.crToCoord(s.col1num+c.value-1,s.row1num+l.value-1)+a,d="coord"),void p(d,u))},t.Formula.FunctionList.INDEX=[t.Formula.IndexFunction,-1,"index","","lookup"],t.Formula.CountifSumifFunctions=function(e,o,i,n){var r,a,s,l,c,u,d=0,h="",p=0,f=t.Formula,m=f.OperandValueAndType,g=f.LookupResultType,v=f.TypeLookupTable.plus,b=function(e,t){o.push({type:e,value:t})};if(r=f.TopOfStackValueAndType(n,i),a=f.OperandAsText(n,i),"SUMIF"==e)if(1==i.length)s=f.TopOfStackValueAndType(n,i);else{if(0!=i.length)return f.FunctionArgsError(e,o),0;s={value:r.value,type:r.type}}else s={value:r.value,type:r.type};if("n"==a.type.charAt(0)?a.value=a.value+"":"e"==a.type.charAt(0)?a.value=null:"b"==a.type.charAt(0)&&(a.value=null),"coord"!=r.type&&"range"!=r.type)return f.FunctionArgsError(e,o),0;if("SUMIF"==e&&"coord"!=s.type&&"range"!=s.type)return f.FunctionArgsError(e,o),0;for(i.push(r),l=[],l.push(s);i.length;)c=m(n,i),u=m(n,l),f.TestCriteria(c.value,c.type,a.value)&&(p+=1,"n"==u.type.charAt(0)?(d+=u.value-0,h=g(u.type,h||u.type,v)):"e"==u.type.charAt(0)&&"e"!=h.charAt(0)&&(h=u.type));h=h||"n","SUMIF"==e?b(h,d):"COUNTIF"==e&&b("n",p)},t.Formula.FunctionList.COUNTIF=[t.Formula.CountifSumifFunctions,2,"rangec","","stat"],t.Formula.FunctionList.SUMIF=[t.Formula.CountifSumifFunctions,-2,"sumif","","stat"],t.Formula.SumifsFunction=function(e,o,i,n){var r,a,s,l,c,u,d=0,h="",p=t.Formula,f=p.OperandValueAndType,m=p.LookupResultType,g=p.TypeLookupTable.plus,v=function(e,t){o.push({type:e,value:t})};if(s=p.TopOfStackValueAndType(n,i),"coord"!=s.type&&"range"!=s.type)return p.FunctionArgsError(e,o),0;for(var b=[],y=[];i.length;){if(r=p.TopOfStackValueAndType(n,i),a=p.OperandAsText(n,i),"n"==a.type.charAt(0)?a.value=a.value+"":"e"==a.type.charAt(0)?a.value=null:"b"==a.type.charAt(0)&&(a.value=null),"coord"!=r.type&&"range"!=r.type)return p.FunctionArgsError(e,o),0;b.push([r]),y.push(a)}for(l=[],l.push(s);l.length;){u=f(n,l);for(var C=!0,w=0;w<b.length;w++)c=f(n,b[w]),C&&(p.TestCriteria(c.value,c.type,y[w].value)||(C=!1));C&&("n"==u.type.charAt(0)?(d+=u.value-0,h=m(u.type,h||u.type,g)):"e"==u.type.charAt(0)&&"e"!=h.charAt(0)&&(h=u.type))}h=h||"n",v(h,d)},t.Formula.FunctionList.SUMIFS=[t.Formula.SumifsFunction,-3,"sum_range, criteria_range1, criteria1, [criteria_range2, criteria2, ... criteria_range_n, criteria_n]","","stat"],t.Formula.IfFunction=function(e,o,i,n){var r,a,s=t.Formula;if(r=t.Formula.OperandValueAndType(n,i),a=r.type.charAt(0),"n"!=a&&"b"!=a)return void o.push({type:"e#VALUE!",value:0});var l,c;if(l=i.pop(),1==i.length)c=i.pop();else{if(0!=i.length)return void s.FunctionArgsError(e,o);c={type:"n",value:0}}o.push(r.value?l:c)},t.Formula.FunctionList.IF=[t.Formula.IfFunction,-2,"iffunc","","test"],t.Formula.DateFunction=function(e,o,i,n){var r=t.Formula,a=0,s=r.OperandAsNumber(n,i),l=r.OperandAsNumber(n,i),c=r.OperandAsNumber(n,i),u=r.LookupResultType(s.type,l.type,r.TypeLookupTable.twoargnumeric);u=r.LookupResultType(u,c.type,r.TypeLookupTable.twoargnumeric),"n"==u.charAt(0)&&(a=t.FormatNumber.convert_date_gregorian_to_julian(Math.floor(s.value),Math.floor(l.value),Math.floor(c.value))-t.FormatNumber.datevalues.julian_offset,u="nd"),r.PushOperand(o,u,a)},t.Formula.FunctionList.DATE=[t.Formula.DateFunction,3,"date","","datetime"],t.Formula.TimeFunction=function(e,o,i,n){var r=t.Formula,a=0,s=r.OperandAsNumber(n,i),l=r.OperandAsNumber(n,i),c=r.OperandAsNumber(n,i),u=r.LookupResultType(s.type,l.type,r.TypeLookupTable.twoargnumeric);u=r.LookupResultType(u,c.type,r.TypeLookupTable.twoargnumeric),"n"==u.charAt(0)&&(a=(60*s.value*60+60*l.value+c.value)/86400,u="nt"),r.PushOperand(o,u,a)},t.Formula.FunctionList.TIME=[t.Formula.TimeFunction,3,"hms","","datetime"],t.Formula.DMYFunctions=function(e,o,i,n){var r,a,s,l=t.Formula,c=0,u=l.OperandAsNumber(n,i),d=l.LookupResultType(u.type,u.type,l.TypeLookupTable.oneargnumeric);if("n"==d.charAt(0))switch(r=t.FormatNumber.convert_date_julian_to_gregorian(Math.floor(u.value+t.FormatNumber.datevalues.julian_offset)),e){case"DAY":c=r.day;break;case"MONTH":c=r.month;break;case"YEAR":c=r.year;break;case"WEEKDAY":if(a={value:1},i.length){if(a=l.OperandAsNumber(n,i),"n"!=a.type.charAt(0)||a.value<1||a.value>3)return void l.PushOperand(o,"e#VALUE!",0);if(i.length)return void l.FunctionArgsError(e,o)}s=6,a.value>1&&(s-=1),c=Math.floor(u.value+s)%7+(a.value<3?1:0)}l.PushOperand(o,d,c)},t.Formula.FunctionList.DAY=[t.Formula.DMYFunctions,1,"v","","datetime"],t.Formula.FunctionList.MONTH=[t.Formula.DMYFunctions,1,"v","","datetime"],t.Formula.FunctionList.YEAR=[t.Formula.DMYFunctions,1,"v","","datetime"],t.Formula.FunctionList.WEEKDAY=[t.Formula.DMYFunctions,-1,"weekday","","datetime"],t.Formula.HMSFunctions=function(e,o,i,n){var r,a,s,l,c=t.Formula,u=0,d=c.OperandAsNumber(n,i),h=c.LookupResultType(d.type,d.type,c.TypeLookupTable.oneargnumeric);if("n"==h.charAt(0)){if(d.value<0)return void c.PushOperand(o,"e#NUM!",0);l=d.value-Math.floor(d.value),l*=24,r=Math.floor(l),l-=Math.floor(l),l*=60,a=Math.floor(l),l-=Math.floor(l),l*=60,s=Math.floor(l+(d.value>=0?.5:-.5)),"HOUR"==e?u=r:"MINUTE"==e?u=a:"SECOND"==e&&(u=s)}c.PushOperand(o,h,u)},t.Formula.FunctionList.HOUR=[t.Formula.HMSFunctions,1,"v","","datetime"],t.Formula.FunctionList.MINUTE=[t.Formula.HMSFunctions,1,"v","","datetime"],t.Formula.FunctionList.SECOND=[t.Formula.HMSFunctions,1,"v","","datetime"],t.Formula.ExactFunction=function(e,o,i,n){var r=t.Formula,a=0,s="nl",l=r.OperandValueAndType(n,i),c=l.type.charAt(0),u=r.OperandValueAndType(n,i),d=u.type.charAt(0);"t"==c?"t"==d?a=l.value==u.value?1:0:"b"==d?a=l.value.length?0:1:"n"==d?a=l.value==u.value+""?1:0:"e"==d?(a=u.value,s=u.type):a=0:"n"==c?"n"==d?a=l.value-0==u.value-0?1:0:"b"==d?a=0:"t"==d?a=l.value+""==u.value?1:0:"e"==d?(a=u.value,s=u.type):a=0:"b"==c?"t"==d?a=u.value.length?0:1:"b"==d?a=1:"n"==d?a=0:"e"==d?(a=u.value,s=u.type):a=0:"e"==c&&(a=l.value,s=l.type),r.PushOperand(o,s,a)},t.Formula.FunctionList.EXACT=[t.Formula.ExactFunction,2,"","","text"],t.Formula.ArgList={FIND:[1,1,0],LEFT:[1,0],LEN:[1],LOWER:[1],MID:[1,0,0],PROPER:[1],REPLACE:[1,0,0,1],REPT:[1,0],RIGHT:[1,0],SUBSTITUTE:[1,1,1,0],TRIM:[1],HEXCODE:[1],UPPER:[1]},t.Formula.StringFunctions=function(e,o,i,n){var r,a,s,l,c,u,d=t.Formula,h=0,p="e#VALUE!",f=i.length,m=d.ArgList[e],g=[],v=[];for(r=1;f>=r;r++){if(r>m.length)return void d.FunctionArgsError(e,o);if(0==m[r-1]?a=d.OperandAsNumber(n,i):1==m[r-1]?a=d.OperandAsText(n,i):-1==m[r-1]&&(a=d.OperandValueAndType(n,i)),g[r]=a.value,v[r]=a.type,"e"==a.type.charAt(0))return void d.PushOperand(o,a.type,h)}switch(e){case"FIND":s=v[3]?g[3]-1:0,0>s?h="Start is before string":(h=g[2].indexOf(g[1],s),h>=0?(h+=1,p="n"):h="Not found");break;case"LEFT":l=v[2]?g[2]-0:1,0>l?h="Negative length":(h=g[1].substring(0,l),p="t");break;case"LEN":h=g[1].length,p="n";break;case"LOWER":h=g[1].toLowerCase(),p="t";break;case"MID":c=g[2]-0,l=g[3]-0,1>l||1>c?h="Bad arguments":(h=g[1].substring(c-1,c+l-1),p="t");break;case"PROPER":h=g[1].replace(/\b\w+\b/g,function(e){return e.substring(0,1).toUpperCase()+e.substring(1)}),p="t";break;case"REPLACE":c=g[2]-0,l=g[3]-0,0>l||1>c?h="Bad arguments":(h=g[1].substring(0,c-1)+g[4]+g[1].substring(c-1+l),p="t");break;case"REPT":if(u=g[2]-0,0>u)h="Negative count";else{for(h="";u>0;u--)h+=g[1];p="t"}break;case"RIGHT":l=v[2]?g[2]-0:1,0>l?h="Negative length":(h=g[1].slice(-l),p="t");break;case"SUBSTITUTE":if(fulltext=g[1],oldtext=g[2],newtext=g[3],null!=g[4]){if(which=g[4]-0,0>=which){h="Non-positive instance number";break}}else which=0;for(u=0,oldpos=0,h="";;){if(pos=fulltext.indexOf(oldtext,oldpos),!(pos>=0)){h+=fulltext.substring(oldpos);break}if(u++,h+=fulltext.substring(oldpos,pos),0==which)h+=newtext;else{if(which==u){h+=newtext+fulltext.substring(pos+oldtext.length);break}h+=oldtext}oldpos=pos+oldtext.length}p="t";break;case"TRIM":h=g[1],h=h.replace(/^ */,""),h=h.replace(/ *$/,""),h=h.replace(/ +/g," "),p="t";break;case"HEXCODE":h=String(g[1]);var b=h.charCodeAt(0);if(b>=55296&&56319>=b){var y=h.charCodeAt(1);y>=56320&&57343>=y&&(b=1024*(b-55296)+(y-56320)+65536)}h=b.toString(16).toUpperCase(),p="t";break;case"UPPER":h=g[1].toUpperCase(),p="t"}d.PushOperand(o,p,h)},t.Formula.FunctionList.FIND=[t.Formula.StringFunctions,-2,"find","","text"],t.Formula.FunctionList.LEFT=[t.Formula.StringFunctions,-2,"tc","","text"],t.Formula.FunctionList.LEN=[t.Formula.StringFunctions,1,"txt","","text"],t.Formula.FunctionList.LOWER=[t.Formula.StringFunctions,1,"txt","","text"],t.Formula.FunctionList.MID=[t.Formula.StringFunctions,3,"mid","","text"],t.Formula.FunctionList.PROPER=[t.Formula.StringFunctions,1,"v","","text"],t.Formula.FunctionList.REPLACE=[t.Formula.StringFunctions,4,"replace","","text"],t.Formula.FunctionList.REPT=[t.Formula.StringFunctions,2,"tc","","text"],t.Formula.FunctionList.RIGHT=[t.Formula.StringFunctions,-1,"tc","","text"],t.Formula.FunctionList.SUBSTITUTE=[t.Formula.StringFunctions,-3,"subs","","text"],t.Formula.FunctionList.TRIM=[t.Formula.StringFunctions,1,"v","","text"],t.Formula.FunctionList.HEXCODE=[t.Formula.StringFunctions,1,"v","","text"],t.Formula.FunctionList.UPPER=[t.Formula.StringFunctions,1,"v","","text"],t.Formula.IsFunctions=function(e,o,i,n){var r=t.Formula,a=0,s="nl",l=r.OperandValueAndType(n,i),c=l.type.charAt(0);switch(e){case"ISBLANK":a="b"==l.type?1:0;break;case"ISERR":a="e"==c?"e#N/A"==l.type?0:1:0;break;case"ISERROR":a="e"==c?1:0;break;case"ISLOGICAL":a="nl"==l.type?1:0;break;case"ISNA":a="e#N/A"==l.type?1:0;break;case"ISNONTEXT":a="t"==c?0:1;break;case"ISNUMBER":a="n"==c?1:0;break;case"ISTEXT":a="t"==c?1:0}r.PushOperand(o,s,a)},t.Formula.FunctionList.ISBLANK=[t.Formula.IsFunctions,1,"v","","test"],t.Formula.FunctionList.ISERR=[t.Formula.IsFunctions,1,"v","","test"],t.Formula.FunctionList.ISERROR=[t.Formula.IsFunctions,1,"v","","test"],t.Formula.FunctionList.ISLOGICAL=[t.Formula.IsFunctions,1,"v","","test"],t.Formula.FunctionList.ISNA=[t.Formula.IsFunctions,1,"v","","test"],t.Formula.FunctionList.ISNONTEXT=[t.Formula.IsFunctions,1,"v","","test"],t.Formula.FunctionList.ISNUMBER=[t.Formula.IsFunctions,1,"v","","test"],t.Formula.FunctionList.ISTEXT=[t.Formula.IsFunctions,1,"v","","test"],t.Formula.NTVFunctions=function(e,o,i,n){var r=t.Formula,a=0,s="e#VALUE!",l=r.OperandValueAndType(n,i),c=l.type.charAt(0);switch(e){case"N":a="n"==c?l.value-0:0,s="n";break;case"T":a="t"==c?l.value+"":"",s="t";break;case"VALUE":"n"==c||"b"==c?(a=l.value||0,s="n"):"t"==c&&(l=t.DetermineValueType(l.value),"n"!=l.type.charAt(0)?(a=0,s="e#VALUE!"):(a=l.value-0,s="n"))}"e"==c&&(s=l.type),r.PushOperand(o,s,a)},t.Formula.FunctionList.N=[t.Formula.NTVFunctions,1,"v","","math"],t.Formula.FunctionList.T=[t.Formula.NTVFunctions,1,"v","","text"],t.Formula.FunctionList.VALUE=[t.Formula.NTVFunctions,1,"v","","text"],t.Formula.Math1Functions=function(e,o,i,n){var r,a,s,l={},c=t.Formula;if(r=c.OperandAsNumber(n,i),a=r.value,l.type=c.LookupResultType(r.type,r.type,c.TypeLookupTable.oneargnumeric),"n"==l.type)switch(e){case"ABS":a=Math.abs(a);break;case"ACOS":a>=-1&&1>=a?a=Math.acos(a):l.type="e#NUM!";break;case"ASIN":a>=-1&&1>=a?a=Math.asin(a):l.type="e#NUM!";break;case"ATAN":a=Math.atan(a);break;case"COS":a=Math.cos(a);break;case"DEGREES":a=180*a/Math.PI;break;case"EVEN":a=0>a?-a:a,a!=Math.floor(a)?a=Math.floor(a+1)+Math.floor(a+1)%2:a+=a%2,r.value<0&&(a=-a);break;case"EXP":a=Math.exp(a);break;case"FACT":for(s=1,a=Math.floor(a);a>0;a--)s*=a;a=s;break;case"INT":a=Math.floor(a);break;case"LN":0>=a&&(l.type="e#NUM!",l.error=t.Constants.s_sheetfunclnarg),a=Math.log(a);break;case"LOG10":0>=a&&(l.type="e#NUM!",l.error=t.Constants.s_sheetfunclog10arg),a=Math.log(a)/Math.log(10);break;case"ODD":a=0>a?-a:a,a!=Math.floor(a)?a=Math.floor(a+1)+(1-Math.floor(a+1)%2):a+=1-a%2,r.value<0&&(a=-a);break;case"RADIANS":a=a*Math.PI/180;break;case"SIN":a=Math.sin(a);break;case"SQRT":a>=0?a=Math.sqrt(a):l.type="e#NUM!";break;case"TAN":0!=Math.cos(a)?a=Math.tan(a):l.type="e#NUM!"}return l.value=a,o.push(l),null},t.Formula.FunctionList.ABS=[t.Formula.Math1Functions,1,"v","","math"],t.Formula.FunctionList.ACOS=[t.Formula.Math1Functions,1,"v","","math"],t.Formula.FunctionList.ASIN=[t.Formula.Math1Functions,1,"v","","math"],t.Formula.FunctionList.ATAN=[t.Formula.Math1Functions,1,"v","","math"],t.Formula.FunctionList.COS=[t.Formula.Math1Functions,1,"v","","math"],t.Formula.FunctionList.DEGREES=[t.Formula.Math1Functions,1,"v","","math"],t.Formula.FunctionList.EVEN=[t.Formula.Math1Functions,1,"v","","math"],t.Formula.FunctionList.EXP=[t.Formula.Math1Functions,1,"v","","math"],t.Formula.FunctionList.FACT=[t.Formula.Math1Functions,1,"v","","math"],t.Formula.FunctionList.INT=[t.Formula.Math1Functions,1,"v","","math"],t.Formula.FunctionList.LN=[t.Formula.Math1Functions,1,"v","","math"],t.Formula.FunctionList.LOG10=[t.Formula.Math1Functions,1,"v","","math"],t.Formula.FunctionList.ODD=[t.Formula.Math1Functions,1,"v","","math"],t.Formula.FunctionList.RADIANS=[t.Formula.Math1Functions,1,"v","","math"],t.Formula.FunctionList.SIN=[t.Formula.Math1Functions,1,"v","","math"],t.Formula.FunctionList.SQRT=[t.Formula.Math1Functions,1,"v","","math"],t.Formula.FunctionList.TAN=[t.Formula.Math1Functions,1,"v","","math"],t.Formula.Math2Functions=function(e,o,i,n){var r,a,s,l,c,u,d={},h=t.Formula;if(r=h.OperandAsNumber(n,i),a=h.OperandAsNumber(n,i),s=0,d.type=h.LookupResultType(r.type,a.type,h.TypeLookupTable.twoargnumeric),"n"==d.type)switch(e){case"ATAN2":0==r.value&&0==a.value?d.type="e#DIV/0!":d.value=Math.atan2(a.value,r.value);break;case"POWER":d.value=Math.pow(r.value,a.value),isNaN(d.value)&&(d.value=0,d.type="e#NUM!");break;case"MOD":0==a.value?d.type="e#DIV/0!":(l=r.value/a.value,l=Math.floor(l),d.value=r.value-l*a.value);break;case"TRUNC":if(c=1,a.value>=0){for(a.value=Math.floor(a.value),u=0;u<a.value;u++)c*=10;d.value=Math.floor(Math.abs(r.value)*c)/c}else if(a.value<0){for(a.value=Math.floor(-a.value),u=0;u<a.value;u++)c*=10;d.value=Math.floor(Math.abs(r.value)/c)*c}r.value<0&&(d.value=-d.value)}return o.push(d),null},t.Formula.FunctionList.ATAN2=[t.Formula.Math2Functions,2,"xy","","math"],t.Formula.FunctionList.MOD=[t.Formula.Math2Functions,2,"","","math"],t.Formula.FunctionList.POWER=[t.Formula.Math2Functions,2,"","","math"],t.Formula.FunctionList.TRUNC=[t.Formula.Math2Functions,2,"valpre","","math"],t.Formula.LogFunction=function(e,o,i,n){var r,a,s={},l=t.Formula;if(s.value=0,r=l.OperandAsNumber(n,i),s.type=l.LookupResultType(r.type,r.type,l.TypeLookupTable.oneargnumeric),1==i.length){if(a=l.OperandAsNumber(n,i),"n"!=a.type.charAt(0)||a.value<=0)return l.FunctionSpecificError(e,o,"e#NUM!",t.Constants.s_sheetfunclogsecondarg),0}else{if(0!=i.length)return l.FunctionArgsError(e,o),0;a={value:Math.E,type:"n"}}if("n"==s.type){if(r.value<=0)return l.FunctionSpecificError(e,o,"e#NUM!",t.Constants.s_sheetfunclogfirstarg),0;s.value=Math.log(r.value)/Math.log(a.value)}o.push(s)},t.Formula.FunctionList.LOG=[t.Formula.LogFunction,-1,"log","","math"],t.Formula.RoundFunction=function(e,o,i,n){var r,a,s,l,c=t.Formula,u=0,d="e#VALUE!",h=c.OperandValueAndType(n,i),d=c.LookupResultType(h.type,h.type,c.TypeLookupTable.oneargnumeric);if(1==i.length){if(r=c.OperandValueAndType(n,i),"n"!=r.type.charAt(0))return c.FunctionSpecificError(e,o,"e#NUM!",t.Constants.s_sheetfuncroundsecondarg),0}else{if(0!=i.length)return c.FunctionArgsError(e,o),0;r={value:0,type:"n"}}if("n"==d)if(r.value=r.value-0,0==r.value)u=Math.round(h.value);else if(r.value>0){for(a=1,r.value=Math.floor(r.value),l=0;l<r.value;l++)a*=10;s=Math.round(h.value*a),u=s/a}else if(r.value<0){for(a=1,r.value=Math.floor(-r.value),l=0;l<r.value;l++)a*=10;s=Math.round(h.value/a),u=s*a}c.PushOperand(o,d,u)},t.Formula.FunctionList.ROUND=[t.Formula.RoundFunction,-1,"vp","","math"],t.Formula.CeilingFloorFunctions=function(e,o,i,n){var r,a,s,l=t.Formula,c=function(e,t){o.push({type:e,value:t})};if(r=l.OperandValueAndType(n,i),s=r.type.charAt(0),"n"!=s)return void c("e#VALUE!",0);if(0==r.value)return void c("n",0);if(1==i.length){if(a=l.OperandValueAndType(n,i),s=r.type.charAt(0),"n"!=s)return void c("e#VALUE!",0)}else{if(0!=i.length)return void c("e#VALUE!",0);a={type:"n",value:r.value>0?1:-1}}if(0==a.value)return void c("n",0);if(a.value*r.value<0)return void c("e#NUM!",0);switch(e){case"CEILING":c("n",Math.ceil(r.value/a.value)*a.value);break;case"FLOOR":c("n",Math.floor(r.value/a.value)*a.value)}},t.Formula.FunctionList.CEILING=[t.Formula.CeilingFloorFunctions,-1,"vsig","","math"],t.Formula.FunctionList.FLOOR=[t.Formula.CeilingFloorFunctions,-1,"vsig","","math"],t.Formula.AndOrFunctions=function(e,o,i,n){var r,a,s=t.Formula,l="";for("AND"==e?a=1:"OR"==e&&(a=0);i.length;)r=s.OperandValueAndType(n,i),"n"==r.type.charAt(0)?(r.value=r.value-0,"AND"==e?a=0!=r.value?a:0:"OR"==e&&(a=0!=r.value?1:a),l=s.LookupResultType(r.type,l||"nl",s.TypeLookupTable.propagateerror)):"e"==r.type.charAt(0)&&"e"!=l.charAt(0)&&(l=r.type);l.length<1&&(l="e#VALUE!",a=0),s.PushOperand(o,l,a)},t.Formula.FunctionList.AND=[t.Formula.AndOrFunctions,-1,"vn","","test"],t.Formula.FunctionList.OR=[t.Formula.AndOrFunctions,-1,"vn","","test"],t.Formula.NotFunction=function(e,o,i,n){var r=0,a=t.Formula,s=a.OperandValueAndType(n,i),l=a.LookupResultType(s.type,s.type,a.TypeLookupTable.propagateerror);"n"==s.type.charAt(0)||"b"==s.type?(r=s.value-0!=0?0:1,l="nl"):"t"==s.type.charAt(0)&&(l="e#VALUE!"),a.PushOperand(o,l,r)},t.Formula.FunctionList.NOT=[t.Formula.NotFunction,1,"v","","test"],t.Formula.ChooseFunction=function(e,o,i,n){var r,a,s,l=0,c=t.Formula,u=c.OperandAsNumber(n,i);for("n"!=u.type.charAt(0)&&(u.value=0),u.value=Math.floor(u.value),a=0;i.length;)if(s=c.TopOfStackValueAndType(n,i),a+=1,u.value==a){l=s.value,r=s.type;break}r?c.PushOperand(o,r,l):c.PushOperand(o,"e#VALUE!",0)},t.Formula.FunctionList.CHOOSE=[t.Formula.ChooseFunction,-2,"choose","","lookup"],t.Formula.ColumnsRowsFunctions=function(e,o,i,n){var r,a,s=0,l=t.Formula,c=l.TopOfStackValueAndType(n,i);"coord"==c.type?(s=1,r="n"):"range"==c.type?(a=l.DecodeRangeParts(n,c.value),"COLUMNS"==e?s=a.ncols:"ROWS"==e&&(s=a.nrows),r="n"):(s=0,r="e#VALUE!"),l.PushOperand(o,r,s)},t.Formula.FunctionList.COLUMNS=[t.Formula.ColumnsRowsFunctions,1,"range","","lookup"],t.Formula.FunctionList.ROWS=[t.Formula.ColumnsRowsFunctions,1,"range","","lookup"],t.Formula.ZeroArgFunctions=function(e,o){var i,n,r,a,s,l={value:0};switch(e){case"FALSE":l.type="nl",l.value=0;break;case"NA":l.type="e#N/A";break;case"NOW":i=new Date,n=i.getTimezoneOffset(),i=i.getTime()/1e3,r=25569,a=86400,s=r+i/a-n/1440,l.value=s,l.type="ndt",t.Formula.FreshnessInfo.volatile.NOW=!0;break;case"PI":l.type="n",l.value=Math.PI;break;case"TODAY":i=new Date,n=i.getTimezoneOffset(),i=i.getTime()/1e3,r=25569,a=86400,s=r+i/a-n/1440,l.value=Math.floor(s),l.type="nd",t.Formula.FreshnessInfo.volatile.TODAY=!0;break;case"TRUE":l.type="nl",l.value=1;break;case"RAND":l.type="n",l.value=Math.random(),t.Formula.FreshnessInfo.volatile.RAND=!0}return o.push(l),null},t.Formula.FunctionList.FALSE=[t.Formula.ZeroArgFunctions,0,"","","test"],t.Formula.FunctionList.NA=[t.Formula.ZeroArgFunctions,0,"","","test"],t.Formula.FunctionList.NOW=[t.Formula.ZeroArgFunctions,0,"","","datetime"],t.Formula.FunctionList.RAND=[t.Formula.ZeroArgFunctions,0,"","","math"],t.Formula.FunctionList.PI=[t.Formula.ZeroArgFunctions,0,"","","math"],t.Formula.FunctionList.TODAY=[t.Formula.ZeroArgFunctions,0,"","","datetime"],t.Formula.FunctionList.TRUE=[t.Formula.ZeroArgFunctions,0,"","","test"],t.Formula.DDBFunction=function(e,o,i,n){var r,a,s,l,c=t.Formula,u=c.OperandAsNumber(n,i),d=c.OperandAsNumber(n,i),h=c.OperandAsNumber(n,i),p=c.OperandAsNumber(n,i);if(!(c.CheckForErrorValue(o,u)||c.CheckForErrorValue(o,d)||c.CheckForErrorValue(o,h)||c.CheckForErrorValue(o,p))){if(h.value<1)return c.FunctionSpecificError(e,o,"e#NUM!",t.Constants.s_sheetfuncddblife),0;if(r={value:2,type:"n"},i.length>0&&(r=c.OperandAsNumber(n,i)),0!=i.length)return c.FunctionArgsError(e,o),0;if(!c.CheckForErrorValue(o,r)){for(a=0,s=0,l=1;l<=p.value-0&&l<=h.value;l++)a=(u.value-s)*(r.value/h.value),u.value-s-a<d.value&&(a=u.value-s-d.value),s+=a;c.PushOperand(o,"n$",a)}}},t.Formula.FunctionList.DDB=[t.Formula.DDBFunction,-4,"ddb","","financial"],t.Formula.SLNFunction=function(e,o,i,n){var r,a=t.Formula,s=a.OperandAsNumber(n,i),l=a.OperandAsNumber(n,i),c=a.OperandAsNumber(n,i);if(!a.CheckForErrorValue(o,s)&&!a.CheckForErrorValue(o,l)&&!a.CheckForErrorValue(o,c)){if(c.value<1)return a.FunctionSpecificError(e,o,"e#NUM!",t.Constants.s_sheetfuncslnlife),0;r=(s.value-l.value)/c.value,a.PushOperand(o,"n$",r)}},t.Formula.FunctionList.SLN=[t.Formula.SLNFunction,3,"csl","","financial"],t.Formula.SYDFunction=function(e,o,i,n){var r,a,s=t.Formula,l=s.OperandAsNumber(n,i),c=s.OperandAsNumber(n,i),u=s.OperandAsNumber(n,i),d=s.OperandAsNumber(n,i);if(!(s.CheckForErrorValue(o,l)||s.CheckForErrorValue(o,c)||s.CheckForErrorValue(o,u)||s.CheckForErrorValue(o,d))){if(u.value<1||d.value<=0)return s.PushOperand(o,"e#NUM!",0),0;a=(u.value+1)*u.value/2,r=(l.value-c.value)*(u.value-d.value+1)/a,s.PushOperand(o,"n$",r)}},t.Formula.FunctionList.SYD=[t.Formula.SYDFunction,4,"cslp","","financial"],t.Formula.InterestFunctions=function(e,o,i,n){var r,a,s,l,c,u,d,h,p,f,m,g,v,b,y,C,w,x,_,S,h,k,T,F=t.Formula,E=F.OperandAsNumber(n,i),D=F.OperandAsNumber(n,i),P=F.OperandAsNumber(n,i);if(r=F.LookupResultType(E.type,D.type,F.TypeLookupTable.twoargnumeric),r=F.LookupResultType(r,P.type,F.TypeLookupTable.twoargnumeric),i.length&&(s=F.OperandAsNumber(n,i),r=F.LookupResultType(r,s.type,F.TypeLookupTable.twoargnumeric),i.length&&(l=F.OperandAsNumber(n,i),r=F.LookupResultType(r,l.type,F.TypeLookupTable.twoargnumeric),i.length))){if("RATE"!=e)return F.FunctionArgsError(e,o),0;c=F.OperandAsNumber(n,i),r=F.LookupResultType(r,c.type,F.TypeLookupTable.twoargnumeric)}if("n"==r)switch(e){case"FV":h=E.value,p=D.value,f=P.value,u=null!=s?s.value:0,m=null!=l&&l.value?1:0,d=0==h?-u-f*p:-(u*Math.pow(1+h,p)+f*(1+h*m)*(Math.pow(1+h,p)-1)/h),a=d,r="n$";break;case"NPER":if(h=E.value,f=D.value,u=P.value,d=null!=s?s.value:0,m=null!=l&&l.value?1:0,0==h){if(0==f)return void F.PushOperand(o,"e#NUM!",0);p=(u+d)/-f}else{if(v=f*(1+h*m)/h,b=u+v,0==b||-1>=h)return void F.PushOperand(o,"e#NUM!",0);if(y=(v-d)/b,0>=y)return void F.PushOperand(o,"e#NUM!",0);C=Math.log(y),w=Math.log(1+h),p=C/w}a=p,r="n";break;case"PMT":if(h=E.value,p=D.value,u=P.value,d=null!=s?s.value:0,m=null!=l&&l.value?1:0,0==p)return void F.PushOperand(o,"e#NUM!",0);f=0==h?(d-u)/p:(0-d-u*Math.pow(1+h,p))/((1+h*m)*(Math.pow(1+h,p)-1)/h),a=f,r="n$";break;case"PV":if(h=E.value,p=D.value,f=P.value,d=null!=s?s.value:0,m=null!=l&&l.value?1:0,-1==h)return void F.PushOperand(o,"e#DIV/0!",0);u=0==h?-d-f*p:(-d-f*(1+h*m)*(Math.pow(1+h,p)-1)/h)/Math.pow(1+h,p),a=u,r="n$";break;case"RATE":for(p=E.value,f=D.value,u=P.value,d=null!=s?s.value:0,m=null!=l&&l.value?1:0,g=null!=c?c.value:.1,_=100,S=0,delta=1,epsilon=1e-7,h=g||1e-8;(delta>=0?delta:-delta)>epsilon&&h!=k;)if(delta=d+u*Math.pow(1+h,p)+f*(1+h*m)*(Math.pow(1+h,p)-1)/h,null!=x?(T=(delta-x)/(h-k)||.001,k=h,h-=delta/T,x=delta):(k=h,h=1.1*h,x=delta),S++,S>=_)return void F.PushOperand(o,"e#NUM!",0);a=h,r="n%"}F.PushOperand(o,r,a)},t.Formula.FunctionList.FV=[t.Formula.InterestFunctions,-3,"fv","","financial"],t.Formula.FunctionList.NPER=[t.Formula.InterestFunctions,-3,"nper","","financial"],t.Formula.FunctionList.PMT=[t.Formula.InterestFunctions,-3,"pmt","","financial"],t.Formula.FunctionList.PV=[t.Formula.InterestFunctions,-3,"pv","","financial"],t.Formula.FunctionList.RATE=[t.Formula.InterestFunctions,-3,"rate","","financial"],t.Formula.NPVFunction=function(e,o,i,n){var r,a,s,l,c,u=t.Formula,a=u.OperandAsNumber(n,i);if(!u.CheckForErrorValue(o,a)){for(s=0,r="n",l=1;i.length;)if(c=u.OperandValueAndType(n,i),"n"==c.type.charAt(0)){if(l*=1+a.value,0==l)return void u.PushOperand(o,"e#DIV/0!",0);s+=c.value/l,r=u.LookupResultType(c.type,r||c.type,u.TypeLookupTable.plus)}else if("e"==c.type.charAt(0)&&"e"!=r.charAt(0)){r=c.type;break}"n"==r.charAt(0)&&(r="n$"),u.PushOperand(o,r,s)}},t.Formula.FunctionList.NPV=[t.Formula.NPVFunction,-2,"npv","","financial"],t.Formula.IRRFunction=function(e,o,i,n){var r,a,s,l,c,u,d,h,p,f,m,g,v=[],b=[],y=t.Formula;for(v.push(i.pop());v.length;)if(r=y.OperandValueAndType(n,v),"n"==r.type.charAt(0))b.push(r.value);else if("e"==r.type.charAt(0))return void y.PushOperand(o,"e#VALUE!",0);if(!b.length)return void y.PushOperand(o,"e#NUM!",0);if(a={value:0},i.length){if(a=y.OperandAsNumber(n,i),"n"!=a.type.charAt(0)&&"b"!=a.type.charAt(0))return void y.PushOperand(o,"e#VALUE!",0);if(i.length)return void y.FunctionArgsError(e,o)}for(a.value=a.value||.1,l=20,c=0,u=1e-7,d=a.value,f=1;(f>=0?f:-f)>u&&d!=h;){for(f=0,m=1,g=0;g<b.length;g++){if(m*=1+d,0==m)return void y.PushOperand(o,"e#DIV/0!",0);f+=b[g]/m}if(null!=s?(p=(f-s)/(d-h),h=d,d-=f/p,s=f):(h=d,d=1.1*d,s=f),c++,c>=l)return void y.PushOperand(o,"e#NUM!",0)}y.PushOperand(o,"n%",d)},t.Formula.FunctionList.IRR=[t.Formula.IRRFunction,-1,"irr","","financial"],t.Formula.IoFunctions=function(o,i,n,r,a){var s,l,c,u,d={BUTTON:[2],IMAGEBUTTON:[2],EMAIL:[14,14,14,14],EMAILIF:[13,14,14,14,14],EMAILONEDIT:[14,14,14,14,14],EMAILAT:[13,14,14,14,14],EMAILONEDITIF:[14,13,14,14,14,14],EMAILATIF:[13,13,14,14,14,14],SUBMIT:[2],TEXTBOX:[2],AUTOCOMPLETE:[2,14],SELECT:[2,14,1,1],CHECKBOX:[3],RADIOBUTTON:[2,2],COPYVALUE:[4,12,15],COPYFORMULA:[4,12,12],INSERT:[4,8,-12,-15],DELETEIF:[4,7,8],COMMAND:[4,14],COMMANDIF:[4,13,14],PANEL:[15,-12],SPLASH:[12],STYLE:[6]},h=t.Formula,p=0,f="e#VALUE!",m=n.length,g=d[o],v=[],b=[],y=-1;for(s=1;m>=s;s++){if(-1!=y)u=Math.abs(g[c+(s-1-c)%y]);else{if(s>g.length)return void h.FunctionArgsError(o,i);u=g[s-1],0>u&&(y=g.length-(s-1),c=s-1,u=Math.abs(u))}if(1==u)l=h.OperandAsNumber(r,n);else if(2==u)l=h.OperandAsText(r,n);else if(3==u)l=h.OperandValueAndType(r,n);else{var C=n[n.length-1].type,w=!1;if(("n"==C.charAt(0)&&0!=(1&u)||"t"==C.charAt(0)&&0!=(2&u))&&(w=!0,l=h.OperandValueAndType(r,n)),"coord"==C&&0!=(4&u)&&(w=!0,l=h.OperandAsCoord(r,n),l.value=t.Formula.PlainCoord(l.value)),"range"==C&&0!=(8&u)&&(w=!0,l=h.OperandAsRange(r,n),l.value=t.Formula.PlainCoord(l.value)),0==w)return void h.FunctionArgsError(o,i)}if(v[s]=l.value,b[s]=l.type,"e"==l.type.charAt(0))return void h.PushOperand(i,l.type,p)}switch(o){case"STYLE":var x=r.ioParameterList[a];if(x){var _=t.Formula.getStandardizedList(r,{value:v[1],type:b[1]});_.length>0&&(x.css=_[0],x.cssParameter="t"==b[1]?'"'+v[1]+'"':v[1]),p="",f="ni"}break;case"SELECT":var x=r.ioParameterList[a],S=t.Formula.getStandardizedList(r,x[1]);if(x.html=[],x.html[0]=1==v[4]?"multiple":"",x.html[1]=v[3]?""+v[3]:"1",S.length>0){var k="<option>"+S.join("</option><option>")+"</option>",T=new RegExp("<option>"+v[1],"");x.html[2]=k.replace(T,"<option selected>"+v[1])}p=v[1],f="ti"+o;break;case"SUBMIT":p="Submit";case"BUTTON":case"IMAGEBUTTON":case"TEXTBOX":case"AUTOCOMPLETE":m>0&&(p=v[1]),f="ti"+o;break;case"EMAIL":case"EMAILIF":f="ti"+o,p="Send";break;case"EMAILONEDIT":case"EMAILONEDITIF":case"EMAILAT":case"EMAILATIF":f="ti"+o,p="Send Now";break;case"CHECKBOX":case"RADIOBUTTON":p="t"==b[1].charAt(0)?"TRUE"==v[1].toUpperCase()?1:0:0==v[1]?0:1,f="ni"+o;break;case"COPYVALUE":case"COPYFORMULA":case"INSERT":case"DELETEIF":case"COMMAND":case"COMMANDIF":var F=r.cells[v[1]];if("undefined"==typeof F)break;p=F.datavalue,p=String(p).split("/"),p=p[p.length-1],f="t";break;case"PANEL":case"SPLASH":var E,D=2;if("SPLASH"==o){if(p="SPLASH:"+v[1],f="t",1==r.splashdone)break;r.splashdone=!0,D=1,E=[0]}else E=t.Formula.getStandardizedList(r,{value:v[1],type:b[1]}),p=o+":"+E;if(f="t",t._app){for(var P=[],A=[],I=D;I<v.length;++I){var M=!1;for(var R in E)if(E[R]==I-1){M=!0;break}if(M!==!1){for(var N=t.Formula.getStandardizedCoords(r,{value:v[I],type:b[I]}),s=0;s<N.ncols;s++)A[N.col1num+s]=!0;for(var L=0;L<N.nrows;L++)P[N.row1num+L]=!0}}var O=e.spreadsheet;null==O&&(O=e.ss);var z=!1,H=0,B=function(e,t,o,i,n){for(var r=1;t>=r;r++){var a=n(r);"undefined"==typeof o[a]?i[r]!==!0?(o[a]="yes",z=!0):H=r:i[r]===!0&&(delete o[a],z=!0,H=r)}},U=function(e){return e};B(r,r.attribs.lastrow,r.rowattribs.hide,P,U),H=0,B(r,r.attribs.lastcol,r.colattribs.hide,A,t.rcColname),r.attribs.usermaxcol=H,z&&(r.renderneeded=!0,r.widgetsClean=!1,O.editor.context.rowpanes[0].first=1,O.editor.context.CalculateColWidthData(),O.width=O.editor.context.totalwidth,O.height=2500,O.editor.ResizeTableEditor(O.editor.context.totalwidth,2500))
-}}h.PushOperand(i,f,p)},t.Formula.FunctionList.BUTTON=[t.Formula.IoFunctions,1,"label","","gui","<button type='button' onclick=\"SocialCalc.TriggerIoAction.Button('<%=cell_reference%>');\"><%=formated_value%></button>","ParameterList"],t.Formula.FunctionList.IMAGEBUTTON=[t.Formula.IoFunctions,1,"imageurl","","gui","<input type='image' src='<%=display_value%>' alt='Submit' onclick=\"SocialCalc.TriggerIoAction.Button('<%=cell_reference%>');\">","ParameterList"],t.Formula.FunctionList.EMAIL=[t.Formula.IoFunctions,-3,"to_range subject_range, body_range","","action","<button type='button' onclick=\"SocialCalc.TriggerIoAction.Email('<%=cell_reference%>');\"><%=formated_value%></button>","ParameterList"],t.Formula.FunctionList.EMAILIF=[t.Formula.IoFunctions,-4,"condition_range, to_range subject_range, body_range","","action","<button type='button' onclick=\"SocialCalc.TriggerIoAction.Email('<%=cell_reference%>');\"><%=formated_value%></button>","ParameterList"],t.Formula.FunctionList.EMAILONEDIT=[t.Formula.IoFunctions,-4,"editRange, to_range subject_range, body_range","","action","<button type='button' onclick=\"SocialCalc.TriggerIoAction.Email('<%=cell_reference%>');\"><%=formated_value%></button>","EventTree"],t.Formula.FunctionList.EMAILAT=[t.Formula.IoFunctions,-4,"datetime_value, to_range subject_range, body_range","","action","<button type='button' onclick=\"SocialCalc.TriggerIoAction.Email('<%=cell_reference%>');\"><%=formated_value%></button>","TimeTrigger"],t.Formula.FunctionList.EMAILONEDITIF=[t.Formula.IoFunctions,-5,"editRange, condition, to_range subject_range, body_range","","action","<button type='button' onclick=\"SocialCalc.TriggerIoAction.Email('<%=cell_reference%>');\"><%=formated_value%></button>","EventTree"],t.Formula.FunctionList.EMAILATIF=[t.Formula.IoFunctions,-5,"datetime_value, condition, to_range subject_range, body_range","","action","<button type='button' onclick=\"SocialCalc.TriggerIoAction.Email('<%=cell_reference%>');\"><%=formated_value%></button>","TimeTrigger"],t.Formula.FunctionList.SUBMIT=[t.Formula.IoFunctions,100,"[label]","","action","<button type='button' onclick=\"SocialCalc.TriggerIoAction.Submit('<%=cell_reference%>');\"><%=formated_value%></button>","ParameterList"],t.Formula.FunctionList.TEXTBOX=[t.Formula.IoFunctions,1,"value","","gui","<input type='text' id='TEXTBOX_<%=cell_reference%>' onblur='SocialCalc.CmdGotFocus(null);' oninput=\"SocialCalc.TriggerIoAction.TextBox('<%=cell_reference%>')\" value='<%=display_value%>' >","Input"],t.Formula.FunctionList.AUTOCOMPLETE=[t.Formula.IoFunctions,2,"value, range or csv_text","","gui","<input type='text' id='AUTOCOMPLETE_<%=cell_reference%>' onfocus=\"SocialCalc.TriggerIoAction.AddAutocomplete('<%=cell_reference%>');\" onblur='SocialCalc.CmdGotFocus(null);' value='<%=display_value%>' >","Input"],t.Formula.FunctionList.SELECT=[t.Formula.IoFunctions,-2,"value, range or csv_text [,size]","","gui","<select size='<%=html1_value%>' id='SELECT_<%=cell_reference%>' onchange=\"SocialCalc.TriggerIoAction.SelectList('<%=cell_reference%>')\" <%=html0_value%>><%=html2_value%></select>","Input"],t.Formula.FunctionList.CHECKBOX=[t.Formula.IoFunctions,1,"value","","gui","<input type='checkbox' id='CHECKBOX_<%=cell_reference%>' <%=checked%> onblur='SocialCalc.CmdGotFocus(null);' onchange=\"SocialCalc.TriggerIoAction.CheckBox('<%=cell_reference%>')\" >","Input"],t.Formula.FunctionList.RADIOBUTTON=[t.Formula.IoFunctions,2,"value, groupname","","gui","<input type='radio' value='<%=cell_reference%>' id='RADIOBUTTON_<%=cell_reference%>' <%=checked%> name='<%=parameter1_value%>' onblur=\"SocialCalc.CmdGotFocus(null);\" onclick=\"SocialCalc.TriggerIoAction.RadioButton('<%=parameter1_value%>');\" >","Input"],t.Formula.FunctionList.COPYVALUE=[t.Formula.IoFunctions,3,"trigger_cell, destinationCell, value_or_range","","action","","EventTree"],t.Formula.FunctionList.COPYFORMULA=[t.Formula.IoFunctions,3,"trigger_cell, destinationCell, formula_range","","action","","EventTree"],t.Formula.FunctionList.INSERT=[t.Formula.IoFunctions,-2,"trigger_cell, destination_range [,formula_range,value_or_range,formula_range, ...]","","action","","EventTree"],t.Formula.FunctionList.DELETEIF=[t.Formula.IoFunctions,-1,"trigger_cell, criteria , test_range","","action","","EventTree"],t.Formula.FunctionList.COMMAND=[t.Formula.IoFunctions,-1,"trigger_cell, commands","","action","","EventTree"],t.Formula.FunctionList.COMMANDIF=[t.Formula.IoFunctions,-1,"trigger_cell, conditions, commands","","action","","EventTree"],t.Formula.FunctionList.PANEL=[t.Formula.IoFunctions,-1,"showindices_range_or_csv, panel1_range [, panel2_range , ...]","","gui",""],t.Formula.FunctionList.SPLASH=[t.Formula.IoFunctions,-1,"splash_panel_range","","gui",""],t.Formula.FunctionList.STYLE=[t.Formula.IoFunctions,-1,"css","","gui",""],t.TriggerIoAction.AddAutocomplete=function(o){var i=e.spreadsheet;null==i&&(i=e.ss);var n=i.sheet,r=(t.Formula,n.ioParameterList[o]);if("undefined"!=typeof r){var a=t.Formula.getStandardizedList(n,r[1]);$.ui.autocomplete.filter=function(e,t){var o=new RegExp("\\b"+$.ui.autocomplete.escapeRegex(t),"i");return $.grep(e,function(e){return o.test(e.label||e.value||e)})},$("#AUTOCOMPLETE_"+o).autocomplete({source:a,minLength:1,autoFocus:!0,select:function(e,i){$(this).val(i.item.label),t.TriggerIoAction.AutoComplete(o)},change:function(e,i){null===i.item&&$(this).val(""),t.TriggerIoAction.AutoComplete(o)}})}},t.TriggerIoAction.Button=function(o){var i=e.spreadsheet;null==i&&(i=e.ss);{var n=i.sheet;t.Formula}if("undefined"!=typeof n.ioEventTree&&"undefined"!=typeof n.ioParameterList&&"undefined"!==n.ioEventTree[o])for(var r in n.ioEventTree[o]){var a=n.ioParameterList[r],s=null;switch(a.function_name){case"COPYVALUE":var l=t.Formula.getStandardizedValues(n,a[2]),c=t.coordToCr(a[1].value),u=t.TriggerIoAction.CopyValueToRange(l,c);i.editor.EditorScheduleSheetCommands(u,!0,!1);break;case"COPYFORMULA":var l=t.Formula.getStandardizedValues(n,a[2]),c=t.coordToCr(a[1].value),u=t.TriggerIoAction.CopyFormulaToRange(l,c);i.editor.EditorScheduleSheetCommands(u,!0,!1);break;case"INSERT":var l=t.Formula.getStandardizedValues(n,a[1]);if("range"!=l.type)break;var d,h,p;l.ncols>1&&(h=1,p=0,d="insertcol"),l.nrows>1&&(h=0,p=1,d="insertrow");for(var f=l.cellcoord[h][p],u=d+" "+f,c=t.coordToCr(f),m=2;m<a.length;)("range"==a[m].type||"coord"==a[m].type||m%2==1)&&(copyCellRange=t.Formula.getStandardizedValues(n,a[m]),u=m%2==0?u+"\n"+t.TriggerIoAction.CopyFormulaToRange(copyCellRange,c):u+"\n"+t.TriggerIoAction.CopyValueToRange(copyCellRange,c),l.nrows>1&&(c.col+=copyCellRange.ncols),l.ncols>1&&(c.row+=copyCellRange.nrows)),m++;i.editor.EditorScheduleSheetCommands(u,!0,!1);break;case"DELETEIF":var h,p,g,v=t.Formula.getStandardizedValues(n,a[1]),b=t.Formula.getStandardizedValues(n,a[2]),u="";if(b.ncols>1&&b.nrows>1)return;b.ncols>1&&(h=1,p=0,g="deletecol"),b.nrows>1&&(h=0,p=1,g="deleterow");for(var y=v.celldata[0][0].datavalue,C=b.ncols-h-1;C>=h;C--)for(var w=b.nrows-p-1;w>=p;w--){var x=b.celldata[C][w];1==t.Formula.TestCriteria(x.datavalue,x.valuetype,y)&&(""!=u&&(u+="\n"),u=u+g+" "+b.cellcoord[C][w])}""!=u&&i.editor.EditorScheduleSheetCommands(u,!0,!1);break;case"COMMANDIF":s=t.Formula.getStandardizedValues(n,a[1]);case"COMMAND":var _,u="";if(null!=s){var _=t.Formula.getStandardizedValues(n,a[2]);if(s.ncols!=_.ncols||s.nrows!=_.nrows)break}else _=t.Formula.getStandardizedValues(n,a[1]);for(var C=0;C<_.ncols;C++)for(var w=0;w<_.nrows;w++){if(null!=s){var S=s.celldata[C][w];if(0==S.datavalue)continue}""!=u&&(u+="\n");var k=_.celldata[C][w];u+=k.datavalue.toString().trim()}""!=u&&i.editor.EditorScheduleSheetCommands(u,!0,!1)}}},t.TriggerIoAction.CopyFormulaToRange=function(e,o){for(var i,n="",r=0;r<e.ncols;r++)for(var a=0;a<e.nrows;a++){var s=e.celldata[r][a],l=t.crToCoord(o.col+r,o.row+a);if((0!=r||0!=a)&&(n+="\n"),"undefined"!=typeof s&&"b"!=s.valuetype){var c=s.datatype,u=s.valuetype,d=s.datavalue,h=s.formula;"f"==c?(h=t.OffsetFormulaCoords(h,o.col-e.col1num,o.row-e.row1num),d="",u=""):"c"!=c&&(h=""),i="set "+l+" "+t.Constants.cellDataType[c]+" "+u+" "+t.encodeForSave(d)+" "+h}else i="set "+l+" empty";n+=i.trim()}return n},t.TriggerIoAction.CopyValueToRange=function(e,o){for(var i,n="",r=0;r<e.ncols;r++)for(var a=0;a<e.nrows;a++){var s=e.celldata[r][a],l=t.crToCoord(o.col+r,o.row+a);if((0!=r||0!=a)&&(n+="\n"),"undefined"!=typeof s&&"b"!=s.valuetype){var c=s.datatype,u=s.valuetype,d=s.datavalue,h=s.formula;"f"==c?(h="",c=u,"n"!=u&&"t"!=u.charAt(0)&&(c="c",h=s.displaystring),"t"==u.charAt(0)&&(c="t")):"c"!=c&&(h=""),i="set "+l+" "+t.Constants.cellDataType[c]+" "+u+" "+t.encodeForSave(d)+" "+h}else i="set "+l+" empty";n+=i.trim()}return n},t.TriggerIoAction.Email=function(o,i){i="undefined"!=typeof i?i:null;var n=t.Formula,r=e.spreadsheet;null==r&&(r=e.ss);var a=r.sheet,s=a.cells[o];if("undefined"!=typeof a.ioParameterList){var l=a.ioParameterList[o];if("undefined"!=typeof l){for(var c=[],u=[],d=1,h=0;h<l.length;h++)if("t"==l[h].type.charAt(0)&&(c[h]=[String(l[h].value).replace(/ /g,"%20")]),"coord"==l[h].type&&(c[h]=[String(a.GetAssuredCell(l[h].value).datavalue).replace(/ /g,"%20")]),"range"==l[h].type){var p=n.DecodeRangeParts(a,l[h].value);c[h]=[],u[h]=[];for(var f=0,m=0;m<p.ncols;m++)for(var g=0;g<p.nrows;g++){var v=t.crToCoord(p.col1num+m,p.row1num+g),s=p.sheetdata.GetAssuredCell(v);c[h].push(s.datavalue.toString().replace(/ /g,"%20")),u[h].push(v),f++}f>d&&(d=f)}var b=-1,y=0;switch(l.function_name){case"EMAILIF":b=0;case"EMAILAT":case"EMAILONEDIT":y=1;break;case"EMAILONEDITIF":case"EMAILATIF":b=1,y=2;break;case"EMAIL":}switch(l.function_name){case"EMAILONEDIT":case"EMAILONEDITIF":i&&"coord"==l[0].type&&l[0].value==i&&(i=null);break;default:i=null}for(var C=!1,w=[],x=d-1;x>-1;x--){if(-1!=b){var _=x>=c[b].length?0:x;if(0==c[b][_])continue}if(!i||i==u[0][x]){var S=x>=c[y].length?0:x,k=x>=c[y+1].length?0:x,T=x>=c[y+2].length?0:x,F=c[y][S]+" "+c[y+1][k]+" "+c[y+2][T];C=!0,a.ScheduleSheetCommands("sendemail "+F,!1),w.push([c[y][S],c[y+1][k],c[y+2][T]])}}return C&&t.EditorSheetStatusCallback(null,"emailing",null,r.editor),w}}},t.TriggerIoAction.Submit=function(){var o=null!=t.CurrentSpreadsheetControlObject?t.CurrentSpreadsheetControlObject.formDataViewer:t.CurrentSpreadsheetViewerObject.formDataViewer;if(null!=o&&1==o.loaded){var i=e.spreadsheet;null==i&&(i=e.ss);for(var n=i.sheet,r=new Date,a=""+r.getFullYear()+"-"+(r.getMonth()+1)+"-"+r.getDate()+" "+r.getHours()+":"+r.getMinutes()+":"+r.getSeconds(),s=2;s<=o.formFieldsLength+1;s++){var l=t.crToCoord(s,2);a+="\r"+o.sheet.cells[l].datavalue}n.ScheduleSheetCommands("submitform \r"+a,!1)}},t.TriggerIoAction.SelectList=function(e){var o=function(e){return e.value},i="SELECT";t.TriggerIoAction.updateInputWidgetFormula(i,e,o)},t.TriggerIoAction.AutoComplete=function(e){var o=function(e){return e.value},i="AUTOCOMPLETE";t.TriggerIoAction.updateInputWidgetFormula(i,e,o)},t.TriggerIoAction.TextBox=function(e){var o=function(e){return e.value},i="TEXTBOX";t.TriggerIoAction.updateInputWidgetFormula(i,e,o)},t.TriggerIoAction.CheckBox=function(e){var o=function(e){return e.checked?"TRUE":"FALSE"},i="CHECKBOX";t.TriggerIoAction.updateInputWidgetFormula(i,e,o)},t.TriggerIoAction.RadioButton=function(e){var o=function(e){return e.checked?"TRUE":"FALSE"},i="RADIOBUTTON";$('input[name="'+e+'"]').each(function(){t.TriggerIoAction.updateInputWidgetFormula(i,$(this).attr("id").replace(/RADIOBUTTON_/,""),o)})},t.TriggerIoAction.updateInputWidgetFormula=function(o,i,n){var r=e.spreadsheet;null==r&&(r=e.ss);var a=r.sheet,s=(a.cells[i],a.ioParameterList[i]);if("undefined"!=typeof s){var l=document.getElementById(o+"_"+i),c=n(l);c=t.encodeForSave(c);for(var u="set "+i+" formula "+o+'("'+c+'"',d=1;d<s.length;d++)"n"==s[d].type.charAt(0)&&(u+=","+s[d].value),"t"==s[d].type.charAt(0)&&(u+=',"'+s[d].value+'"'),"range"==s[d].type&&(u+=","+s[d].value.toString().replace(/(\$?[A-Z]+\$?[0-9]+)([!]?)([^|]*)[|](\$?[A-Z]+\$?[0-9]+)[|]/i,"$3$2$1:$4")),"coord"==s[d].type&&(u+=","+s[d].value);u+=")",s.cssParameter&&(u+="+style("+s.cssParameter+")"),r.editor.EditorScheduleSheetCommands(u,!0,!1),t.TriggerIoAction.UpdateFormDataSheet(o,i,c)}},t.TriggerIoAction.UpdateFormDataSheet=function(e,o,i){var n=null!=t.CurrentSpreadsheetControlObject?t.CurrentSpreadsheetControlObject.formDataViewer:t.CurrentSpreadsheetViewerObject.formDataViewer;if(null!=n){var r=(e+o).toLowerCase();if(null!=n.formFields[r]){var a=t.crToCoord(n.formFields[r],2);n.sheet.ScheduleSheetCommands("set "+a+" text t "+i,!1)}}},t.Formula.getStandardizedValues=function(e,o){return t.Formula.getStandardizedParameter(e,o,!0,!0)},t.Formula.getStandardizedCoords=function(e,o){return t.Formula.getStandardizedParameter(e,o,!0,!1)},t.Formula.getStandardizedList=function(e,o){var i=[],n=t.Formula.getStandardizedValues(e,o);if(1==n.ncols&&1==n.nrows)i=String(n.celldata[0][0].datavalue).split(",");else for(var r=0;r<n.ncols;r++)for(var a=0;a<n.nrows;a++){var s=n.celldata[r][a];i.push(s.datavalue.toString())}return i},t.Formula.getStandardizedParameter=function(e,o,i,n){var r={type:o.type,value:o.value};if(n&&(r.celldata=[]),"coord"!=o.type&&"range"!=o.type){if(r.ncols=1,r.nrows=1,r.col1num=1,r.row1num=1,i&&(r.cellcoord=null),n){r.celldata[0]=[];var a="n"==o.type?"v":"t"==o.type?o.type:"c";r.celldata[0][0]={coord:null,datatype:a,valuetype:o.type,datavalue:o.value}}}else{var s,l=t.Formula;if("coord"==o.type){var c=t.Formula.PlainCoord(o.value);s=l.DecodeRangeParts(e,c+"|"+c+"|")}"range"==o.type&&(s=l.DecodeRangeParts(e,o.value)),i&&(r.cellcoord=[]);for(var u=0;u<s.ncols;u++)for(var d=0;d<s.nrows;d++){var h=t.crToCoord(s.col1num+u,s.row1num+d);if(i&&("undefined"==typeof r.cellcoord[u]&&(r.cellcoord[u]=[]),r.cellcoord[u][d]=h),n){"undefined"==typeof r.celldata[u]&&(r.celldata[u]=[]);var p=s.sheetdata.GetAssuredCell(h);r.celldata[u][d]=p}}r.ncols=s.ncols,r.nrows=s.nrows,r.col1num=s.col1num,r.row1num=s.row1num}return r},t.Formula.SheetCache={sheets:{},waitingForLoading:null,constants:{asloaded:0,recalcing:1,recalcdone:2},loadsheet:null},t.Formula.FindInSheetCache=function(e){var o=t.Formula.SheetCache,i=t.Formula.NormalizeSheetName(e);return o.sheets[i]?o.sheets[i].sheet:o.waitingForLoading?null:o.loadsheet?(alert("Using SocialCalc.Formula.SheetCache.loadsheet - deprecated"),t.Formula.AddSheetToCache(i,o.loadsheet(i))):(o.waitingForLoading=i,null)},t.Formula.AddSheetToCache=function(e,o,i){var n=null,r=t.Formula.SheetCache,a=r.constants,s=t.Formula.NormalizeSheetName(e);return o&&(n=new t.Sheet,n.ParseSheetSave(o)),r.sheets[s]={sheet:n,recalcstate:a.asloaded,name:s},t.Formula.FreshnessInfo.sheets[s]="undefined"==typeof i||i===!1,n},t.Formula.NormalizeSheetName=function(e){return t.Callbacks.NormalizeSheetName?t.Callbacks.NormalizeSheetName(e):e.toLowerCase()},t.Formula.RemoteFunctionInfo={waitingForServer:null},t.Formula.FreshnessInfo={sheets:{},"volatile":{},recalc_completed:!1},t.Formula.FreshnessInfoReset=function(){var e=t.Formula.FreshnessInfo,o=t.Formula.SheetCache;for(var i in e.sheets)e.sheets[i]===!1&&delete o.sheets[i];e.sheets={},e.volatile={},e.recalc_completed=!1},t.Formula.PlainCoord=function(e){return-1==e.indexOf("$")?e:e.replace(/\$/g,"")},t.Formula.OrderRangeParts=function(e,o){var i,n,r={};return i=t.coordToCr(e),n=t.coordToCr(o),i.col>n.col?(r.c1=n.col,r.c2=i.col):(r.c1=i.col,r.c2=n.col),i.row>n.row?(r.r1=n.row,r.r2=i.row):(r.r1=i.row,r.r2=n.row),r},t.Formula.TestCriteria=function(e,o,i){var n,r,a,s,l;if(null==i)return!1;if(i+="",n=i.charAt(0),"="==n||"<"==n||">"==n?r=i.substring(1):-1!=i.search(/([^~]\*|^\*)/)||-1!=i.search(/([^~]\?|^\?)/)?(n="regex","*"==i?r=".+":(r=i.split("").reverse().join(""),r=r.replace(/\?(?=[^~])|\?$/g,"?.").replace(/\?~/g,"?\\").replace(/\*(?=[^~])|\*$/g,"*.").replace(/\*~/,"*\\"),r=r.split("").reverse().join("")),r="^"+r+"$"):(n=i.substring(0,2),"<="==n||"<>"==n||">="==n?r=i.substring(2):(n="none",r=i)),a=t.DetermineValueType(r),!a.type){if("none"==n)return!1;if("b"==o.charAt(0)){if("="==n)return!0}else if("<>"==n)return!0;return!1}if(s=!1,"n"==a.type.charAt(0)&&"t"==o.charAt(0)&&(l=t.DetermineValueType(e),"n"==l.type.charAt(0)&&(e=l.value,o=l.type)),"n"==o.charAt(0)&&"n"==a.type.charAt(0))switch(e-=0,a.value=a.value-0,n){case"<":s=e<a.value;break;case"<=":s=e<=a.value;break;case"=":case"none":s=e==a.value;break;case">=":s=e>=a.value;break;case">":s=e>a.value;break;case"<>":s=e!=a.value}else if("e"==o.charAt(0))s=!1;else if("e"==a.type.charAt(0))s=!1;else{if("n"==o.charAt(0)&&(e=t.format_number_for_display(e,"n","")),"n"==a.type.charAt(0))return!1;switch(e=e?e.toLowerCase():"",a.value=a.value?a.value.toLowerCase():"",n){case"<":s=e<a.value;break;case"<=":s=e<=a.value;break;case"=":s=e==a.value;break;case"none":s=e.substring(0,a.value.length)==a.value;break;case">=":s=e>=a.value;break;case">":s=e>a.value;break;case"<>":s=e!=a.value;break;case"regex":try{s=-1!=e.search(new RegExp(a.value))}catch(c){s=!1}}}return s};var t;t||(t={}),t.Popup={},t.Popup.Types={},t.Popup.Controls={},t.Popup.Current={},t.Popup.LocalizeString=function(e){return e},t.Popup.Create=function(e,o,i){var n=t.Popup.Types[e];n&&n.Create&&n.Create(e,o,i),t.Popup.imagePrefix=t.Constants.defaultImagePrefix},t.Popup.SetValue=function(e,o){var i=t.Popup,n=i.Types,r=i.Controls;if(!r[e])return void alert("Unknown control "+e);var a=r[e].type,s=n[a],l=r[e].data;s&&s.Create&&(s.SetValue(a,e,o),l.attribs&&l.attribs.changedcallback&&l.attribs.changedcallback(l.attribs,e,o))},t.Popup.SetDisabled=function(e,o){var i=t.Popup,n=i.Types,r=i.Controls;if(!r[e])return void alert("Unknown control "+e);var a=r[e].type,s=n[a];s&&s.Create&&(i.Current.id&&e==i.Current.id&&(s.Hide(a,i.Current.id),i.Current.id=null),s.SetDisabled(a,e,o))},t.Popup.GetValue=function(e){var o=t.Popup,i=o.Types,n=o.Controls;if(!n[e])return void alert("Unknown control "+e);var r=n[e].type,a=i[r];return a&&a.Create?a.GetValue(r,e):null},t.Popup.Initialize=function(e,o){var i=t.Popup,n=i.Types,r=i.Controls;if(!r[e])return void alert("Unknown control "+e);var a=r[e].type,s=n[a];s&&s.Initialize&&s.Initialize(a,e,o)},t.Popup.Reset=function(e){{var o=t.Popup,i=o.Types;o.Controls}i[e].Reset&&i[e].Reset(e)},t.Popup.CClick=function(e){var o=t.Popup,i=o.Types,n=o.Controls;if(!n[e])return void alert("Unknown control "+e);if(!n[e].data||!n[e].data.disabled){var r=n[e].type,a=i[r];if(o.Current.id&&(i[n[o.Current.id].type].Hide(r,o.Current.id),e==o.Current.id))return void(o.Current.id=null);a&&a.Show&&a.Show(r,e),o.Current.id=e}},t.Popup.Close=function(){{var e=t.Popup;e.Types,e.Controls}e.Current.id&&e.CClick(e.Current.id)},t.Popup.Cancel=function(){var e=t.Popup,o=e.Types,i=e.Controls;if(e.Current.id){var n=i[e.Current.id].type,r=o[n];r.Cancel(n,e.Current.id),e.Current.id=null}},t.Popup.CreatePopupDiv=function(e,o){var i,n=t.Popup,r=n.Controls,a=r[e].data,s=document.createElement("div");return s.style.position="absolute",i=t.GetElementPosition(a.mainele),s.style.top=i.top+a.mainele.offsetHeight+"px",s.style.left=i.left+"px",s.style.zIndex=100,s.style.backgroundColor="#FFF",s.style.border="1px solid black",o.width&&(s.style.width=o.width),a.mainele.appendChild(s),o.title&&(s.innerHTML='<table cellspacing="0" cellpadding="0" style="border-bottom:1px solid black;"><tr><td style="font-size:10px;cursor:default;width:100%;background-color:#999;color:#FFF;">'+o.title+'</td><td style="font-size:10px;cursor:default;color:#666;" onclick="SocialCalc.Popup.Cancel();">&nbsp;X&nbsp;</td></tr></table>',o.moveable&&(a.dragregistered=s.firstChild.firstChild.firstChild.firstChild,t.DragRegister(a.dragregistered,!0,!0,{MouseDown:t.DragFunctionStart,MouseMove:t.DragFunctionPosition,MouseUp:t.DragFunctionPosition,Disabled:null,positionobj:s},a.mainele))),s},t.Popup.EnsurePosition=function(e,o){function i(e){var o=t.GetElementPosition(e);return o.height=e.offsetHeight,o.width=e.offsetWidth,o.bottom=o.top+o.height,o.right=o.left+o.width,o}var n=t.Popup,r=n.Controls,a=r[e].data,s=a.mainele.firstChild;if(!s)return void alert("No main popup element firstChild.");var l=a.popupele,c=i(l),u=i(o),d=i(s),h=0;d.bottom+c.height<u.bottom&&d.left+c.width<u.right?(l.style.top=d.bottom+"px",l.style.left=d.left+"px",h=1):d.top-c.height>u.top&&d.left+c.width<u.right?(l.style.top=d.top-c.height+"px",l.style.left=d.left+"px",h=2):d.bottom+c.height<u.bottom&&d.right-c.width>u.left?(l.style.top=d.bottom+"px",l.style.left=d.right-c.width+"px",h=3):d.top-c.height>u.top&&d.right-c.width>u.left?(l.style.top=d.top-c.height+"px",l.style.left=d.right-c.width+"px",h=4):d.bottom+c.height<u.bottom&&c.width<u.width?(l.style.top=d.bottom+"px",l.style.left=u.left+Math.floor((u.width-c.width)/2)+"px",h=5):d.top-c.height>u.top&&c.width<u.width?(l.style.top=d.top-c.height+"px",l.style.left=u.left+Math.floor((u.width-c.width)/2)+"px",h=6):c.height<u.height&&d.right+c.width<u.right?(l.style.top=u.top+Math.floor((u.height-c.height)/2)+"px",l.style.left=d.right+"px",h=7):c.height<u.height&&d.left-c.width>u.left&&(l.style.top=u.top+Math.floor((u.height-c.height)/2)+"px",l.style.left=d.left-c.width+"px",h=8)},t.Popup.DestroyPopupDiv=function(e,o){e&&(e.innerHTML="",t.DragUnregister(o),e.parentNode&&e.parentNode.removeChild(e))},t.Popup.RGBToHex=function(e){var o=t.Popup;if(""==e)return"000000";var i=e.match(/(\d+)\D+(\d+)\D+(\d+)/);return i?o.ToHex(i[1])+o.ToHex(i[2])+o.ToHex(i[3]):"000000"},t.Popup.HexDigits="0123456789ABCDEF",t.Popup.ToHex=function(e){var o=t.Popup,i=Math.floor(e/16),n=e%16;return o.HexDigits.charAt(i)+o.HexDigits.charAt(n)},t.Popup.FromHex=function(e){var o=t.Popup,i=o.HexDigits.indexOf(e.charAt(0).toUpperCase()),n=o.HexDigits.indexOf(e.charAt(1).toUpperCase());return 16*(i>=0?i:0)+(n>=0?n:0)},t.Popup.HexToRGB=function(e){var o=t.Popup;return"rgb("+o.FromHex(e.substring(1,3))+","+o.FromHex(e.substring(3,5))+","+o.FromHex(e.substring(5,7))+")"},t.Popup.makeRGB=function(e,t,o){return"rgb("+(e>0?e:0)+","+(t>0?t:0)+","+(o>0?o:0)+")"},t.Popup.splitRGB=function(e){var t=e.match(/(\d+)\D+(\d+)\D+(\d+)\D/);return t?{r:t[1]-0,g:t[2]-0,b:t[3]-0}:{r:0,g:0,b:0}},t.Popup.Types.List={},t.Popup.Types.List.Create=function(e,o,i){var n=t.Popup,r=(n.Types,n.Controls),a={type:e,value:"",display:"",data:{}};r[o]=a;var s=a.data;s.attribs=i||{};var l=document.getElementById(o);return l?(s.mainele=l,l.innerHTML='<input style="cursor:pointer;width:100px;font-size:smaller;" onfocus="this.blur();" onclick="SocialCalc.Popup.CClick(\''+o+'\');" value="">',void(s.options=[])):void alert("Missing element "+o)},t.Popup.Types.List.SetValue=function(e,i,n){var r,a=t.Popup,s=(a.Types,a.Controls),l=s[i].data;for(l.value=n,l.custom=!1,r=0;r<l.options.length;r++)if(o=l.options[r],!(o.a&&(o.a.skip||o.a.custom||o.a.cancel)||o.v!=l.value)){l.display=o.o;break}r==l.options.length&&(l.display="Custom",l.custom=!0),l.mainele&&l.mainele.firstChild&&(l.mainele.firstChild.value=l.display)},t.Popup.Types.List.SetDisabled=function(e,o,i){var n=t.Popup,r=(n.Types,n.Controls),a=r[o].data;a.disabled=i,a.mainele&&a.mainele.firstChild&&(a.mainele.firstChild.disabled=i)},t.Popup.Types.List.GetValue=function(e,o){var i=t.Popup,n=(i.Types,i.Controls),r=n[o].data;return r.value},t.Popup.Types.List.Initialize=function(e,o,i){var n,r=t.Popup,a=(r.Types,r.Controls),s=a[o].data;for(n in i.attribs)s.attribs[n]=i.attribs[n];s.options=i?i.options:[],i.value&&r.SetValue(o,i.value)},t.Popup.Types.List.Reset=function(e){var o=t.Popup,i=o.Types,n=o.Controls;o.Current.id&&n[o.Current.id].type==e&&(i[e].Hide(e,o.Current.id),o.Current.id=null)},t.Popup.Types.List.Show=function(e,o){var i,n=t.Popup,r=(n.Types,n.Controls),a=r[o].data,s="";a.popupele=n.CreatePopupDiv(o,a.attribs),a.custom?(s=t.Popup.Types.List.MakeCustom(e,o),i=document.createElement("div"),i.innerHTML='<div style="cursor:default;padding:4px;background-color:#CCC;">'+s+"</div>",a.customele=i.firstChild.firstChild.childNodes[1],a.listdiv=null,a.contentele=i):(s=t.Popup.Types.List.MakeList(e,o),i=document.createElement("div"),i.innerHTML='<div style="cursor:default;padding:4px;">'+s+"</div>",a.customele=null,a.listdiv=i.firstChild,a.contentele=i),a.mainele&&a.mainele.firstChild&&(a.mainele.firstChild.disabled=!0),a.popupele.appendChild(i),a.attribs.ensureWithin&&t.Popup.EnsurePosition(o,a.attribs.ensureWithin)},t.Popup.Types.List.MakeList=function(e,o){var i,n,r,a=t.Popup,s=(a.Types,a.Controls),l=s[o].data,c='<table cellspacing="0" cellpadding="0"><tr>',u='<td style="vertical-align:top;">';for(c+=u,l.ncols=1,i=0;i<l.options.length;i++){if(n=l.options[i],n.a){if(n.a.newcol){c+="</td>"+u+"&nbsp;&nbsp;&nbsp;&nbsp;</td>"+u,l.ncols+=1;continue}if(n.a.skip){c+='<div style="font-size:x-small;white-space:nowrap;">'+n.o+"</div>";continue}}r=n.v!=l.value||n.a&&(n.a.custom||n.a.cancel)?"":"background-color:#DDF;",c+='<div style="font-size:x-small;white-space:nowrap;'+r+'" onclick="SocialCalc.Popup.Types.List.ItemClicked(\''+o+"','"+i+"');\" onmousemove=\"SocialCalc.Popup.Types.List.MouseMove('"+o+"',this);\">"+n.o+"</div>"}return c+="</td></tr></table>"},t.Popup.Types.List.MakeCustom=function(e,o){var i=t.Popup.LocalizeString,n=t.Popup,r=(n.Types,n.Controls),a=r[o].data,s='style="font-size:smaller;"',l="",c=a.value;return c=t.special_chars(c),l='<div style="white-space:nowrap;"><br><input id="customvalue" value="'+c+'"><br><br><input '+s+' type="button" value="'+i("OK")+'" onclick="SocialCalc.Popup.Types.List.CustomOK(\''+o+"');return false;\"><input "+s+' type="button" value="'+i("List")+'" onclick="SocialCalc.Popup.Types.List.CustomToList(\''+o+"');\"><input "+s+' type="button" value="'+i("Cancel")+'" onclick="SocialCalc.Popup.Close();"><br></div>'},t.Popup.Types.List.ItemClicked=function(e,o){var i,n,r,a=t.Popup,s=(a.Types,a.Controls),l=s[e].data,c=l.options[o].a;return c&&c.custom?(i=l.contentele,n=t.Popup.Types.List.MakeCustom("List",e),r=document.createElement("div"),r.innerHTML='<div style="cursor:default;padding:4px;background-color:#CCC;">'+n+"</div>",l.customele=r.firstChild.firstChild.childNodes[1],l.listdiv=null,l.contentele=r,l.popupele.replaceChild(r,i),void(l.attribs.ensureWithin&&t.Popup.EnsurePosition(e,l.attribs.ensureWithin))):c&&c.cancel?void t.Popup.Close():(t.Popup.SetValue(e,l.options[o].v),void t.Popup.Close())},t.Popup.Types.List.CustomToList=function(e){var o,i,n,r=t.Popup,a=(r.Types,r.Controls),s=a[e].data;o=s.contentele,i=t.Popup.Types.List.MakeList("List",e),n=document.createElement("div"),n.innerHTML='<div style="cursor:default;padding:4px;">'+i+"</div>",s.customele=null,s.listdiv=n.firstChild,s.contentele=n,s.popupele.replaceChild(n,o),s.attribs.ensureWithin&&t.Popup.EnsurePosition(e,s.attribs.ensureWithin)},t.Popup.Types.List.CustomOK=function(e){var o=t.Popup,i=(o.Types,o.Controls),n=i[e].data;t.Popup.SetValue(e,n.customele.value),t.Popup.Close()},t.Popup.Types.List.MouseMove=function(e,o){var i,n,r=t.Popup,a=(r.Types,r.Controls),s=a[e].data,l=s.listdiv;if(l){var c=l.firstChild.firstChild.firstChild;for(i=0;i<s.ncols;i++)for(n=0;n<c.childNodes[2*i].childNodes.length;n++)c.childNodes[2*i].childNodes[n].style.backgroundColor="#FFF";o.style.backgroundColor="#DDF"}},t.Popup.Types.List.Hide=function(e,o){var i=t.Popup,n=(i.Types,i.Controls),r=n[o].data;i.DestroyPopupDiv(r.popupele,r.dragregistered),r.popupele=null,r.mainele&&r.mainele.firstChild&&(r.mainele.firstChild.disabled=!1)},t.Popup.Types.List.Cancel=function(e,o){t.Popup.Types.List.Hide(e,o)},t.Popup.Types.ColorChooser={},t.Popup.Types.ColorChooser.Create=function(e,o,i){var n=t.Popup,r=(n.Types,n.Controls),a={type:e,value:"",display:"",data:{}};r[o]=a;var s=a.data;s.attribs=i||{};var l=s.attribs;s.value="";var c=document.getElementById(o);return c?(s.mainele=c,void(c.innerHTML='<div style="cursor:pointer;border:1px solid black;vertical-align:top;width:'+(l.sampleWidth||"15px")+";height:"+(l.sampleHeight||"15px")+';" onclick="SocialCalc.Popup.Types.ColorChooser.ControlClicked(\''+o+"');\">&nbsp;</div>")):void alert("Missing element "+o)},t.Popup.Types.ColorChooser.SetValue=function(e,o,i){var n,r,a=t.Popup,s=(a.Types,a.Controls),l=s[o].data,c=l.attribs;l.value=i,l.custom=!1,l.mainele&&l.mainele.firstChild&&(l.value?(l.mainele.firstChild.style.backgroundColor=l.value,n=c.backgroundImage?"url("+a.imagePrefix+c.backgroundImage+")":"",r="center center"):(l.mainele.firstChild.style.backgroundColor="#FFF",c.backgroundImageDefault?(n="url("+a.imagePrefix+c.backgroundImageDefault+")",r="center center"):(n="url("+a.imagePrefix+"defaultcolor.gif)",r="left top")),l.mainele.firstChild.style.backgroundPosition=r,l.mainele.firstChild.style.backgroundImage=n)},t.Popup.Types.ColorChooser.SetDisabled=function(e,o,i){var n=t.Popup,r=(n.Types,n.Controls),a=r[o].data,s=a.attribs;a.disabled=i,a.mainele&&a.mainele.firstChild&&(i?(a.mainele.firstChild.style.backgroundColor="#DDD",s.backgroundImageDisabled?(img="url("+n.imagePrefix+s.backgroundImageDisabled+")",pos="center center"):(img="url("+n.imagePrefix+"defaultcolor.gif)",pos="left top"),a.mainele.firstChild.style.backgroundPosition=pos,a.mainele.firstChild.style.backgroundImage=img):n.SetValue(o,a.value))},t.Popup.Types.ColorChooser.GetValue=function(e,o){var i=t.Popup,n=(i.Types,i.Controls),r=n[o].data;return r.value},t.Popup.Types.ColorChooser.Initialize=function(e,o,i){var n,r=t.Popup,a=(r.Types,r.Controls),s=a[o].data;for(n in i.attribs)s.attribs[n]=i.attribs[n];i.value&&r.SetValue(o,i.value)},t.Popup.Types.ColorChooser.Reset=function(e){var o=t.Popup,i=o.Types,n=o.Controls;o.Current.id&&n[o.Current.id].type==e&&(i[e].Hide(e,o.Current.id),o.Current.id=null)},t.Popup.Types.ColorChooser.Show=function(e,o){var i,n,r=t.Popup,a=(r.Types,r.Controls),s=a[o].data,l="";s.oldvalue=s.value,s.popupele=r.CreatePopupDiv(o,s.attribs),s.custom?(l=t.Popup.Types.ColorChooser.MakeCustom(e,o),i=document.createElement("div"),i.innerHTML='<div style="cursor:default;padding:4px;background-color:#CCC;">'+l+"</div>",s.customele=i.firstChild.firstChild.childNodes[2],s.contentele=i):(n=t.Popup.Types.ColorChooser.CreateGrid(e,o),i=document.createElement("div"),i.style.padding="3px",i.style.backgroundColor="#CCC",i.appendChild(n),s.customele=null,s.contentele=i),s.popupele.appendChild(i),s.attribs.ensureWithin&&t.Popup.EnsurePosition(o,s.attribs.ensureWithin)},t.Popup.Types.ColorChooser.MakeCustom=function(e,o){var i=t.Popup,n=(i.Types,i.Controls),r=n[o].data,a=i.LocalizeString,s='style="font-size:smaller;"',l="";return l='<div style="white-space:nowrap;"><br>#<input id="customvalue" style="width:75px;" value="'+r.value+'"><br><br><input '+s+' type="button" value="'+a("OK")+'" onclick="SocialCalc.Popup.Types.ColorChooser.CustomOK(\''+o+"');return false;\"><input "+s+' type="button" value="'+a("Grid")+'" onclick="SocialCalc.Popup.Types.ColorChooser.CustomToGrid(\''+o+"');\"><br></div>"},t.Popup.Types.ColorChooser.ItemClicked=function(e){{var o=t.Popup,i=(o.Types,o.Controls);i[e].data}t.Popup.Close()},t.Popup.Types.ColorChooser.CustomToList=function(e){{var o=t.Popup,i=(o.Types,o.Controls);i[e].data}},t.Popup.Types.ColorChooser.CustomOK=function(e){var o=t.Popup,i=(o.Types,o.Controls),n=i[e].data;o.SetValue(e,n.customele.value),o.Close()},t.Popup.Types.ColorChooser.Hide=function(e,o){var i=t.Popup,n=(i.Types,i.Controls),r=n[o].data;i.DestroyPopupDiv(r.popupele,r.dragregistered),r.popupele=null},t.Popup.Types.ColorChooser.Cancel=function(e,o){var i=t.Popup,n=(i.Types,i.Controls),r=n[o].data;i.SetValue(o,r.oldvalue),t.Popup.Types.ColorChooser.Hide(e,o)},t.Popup.Types.ColorChooser.CreateGrid=function(e,o){var i,n,r,a,s,l=t.Popup,c=l.Types,u=l.Controls,d=l.LocalizeString,h=u[o].data;h.grid={};var p=h.grid,f=document.createElement("div");for(i=document.createElement("table"),i.cellSpacing=0,i.cellPadding=0,i.style.width="100px",p.table=i,i=document.createElement("tbody"),p.table.appendChild(i),p.tbody=i,n=0;16>n;n++){for(r=document.createElement("tr"),a=0;5>a;a++)s={},p[n+","+a]=s,i=document.createElement("td"),i.style.fontSize="1px",i.innerHTML="&nbsp;",i.style.height="10px",1>=a?(i.style.width="17px",i.style.borderRight="3px solid white"):(i.style.width="20px",i.style.backgroundRepeat="no-repeat"),r.appendChild(i),s.ele=i;
-p.tbody.appendChild(r)}return f.appendChild(p.table),i=document.createElement("div"),i.style.marginTop="3px",i.innerHTML='<table cellspacing="0" cellpadding="0"><tr><td style="width:17px;background-color:#FFF;background-image:url('+l.imagePrefix+'defaultcolor.gif);height:16px;font-size:10px;cursor:pointer;" title="'+d("Default")+'">&nbsp;</td><td style="width:23px;height:16px;font-size:10px;text-align:center;cursor:pointer;" title="'+d("Custom")+'">#</td><td style="width:60px;height:16px;font-size:10px;text-align:center;cursor:pointer;">'+d("OK")+"</td></tr></table>",p.defaultbox=i.firstChild.firstChild.firstChild.childNodes[0],p.defaultbox.onclick=c.ColorChooser.DefaultClicked,p.custom=i.firstChild.firstChild.firstChild.childNodes[1],p.custom.onclick=c.ColorChooser.CustomClicked,p.msg=i.firstChild.firstChild.firstChild.childNodes[2],p.msg.onclick=c.ColorChooser.CloseOK,f.appendChild(i),p.table.onmousedown=c.ColorChooser.GridMouseDown,c.ColorChooser.DetermineColors(o),c.ColorChooser.SetColors(o),f},t.Popup.Types.ColorChooser.gridToG=function(e,t,o){return e[t+","+o]},t.Popup.Types.ColorChooser.DetermineColors=function(e){var o,i,n=t.Popup,r=n.Types,a=r.ColorChooser,s=n.Controls,l=s[e].data,c=l.grid,u=n.splitRGB(l.value);for(o=2,i=16-Math.floor((u.r+16)/16),c["selectedrow"+o]=i,i=0;16>i;i++)a.gridToG(c,i,o).rgb=n.makeRGB(17*(15-i),0,0);for(o=3,i=16-Math.floor((u.g+16)/16),c["selectedrow"+o]=i,i=0;16>i;i++)a.gridToG(c,i,o).rgb=n.makeRGB(0,17*(15-i),0);for(o=4,i=16-Math.floor((u.b+16)/16),c["selectedrow"+o]=i,i=0;16>i;i++)a.gridToG(c,i,o).rgb=n.makeRGB(0,0,17*(15-i));for(o=1,i=0;16>i;i++)a.gridToG(c,i,o).rgb=n.makeRGB(17*(15-i),17*(15-i),17*(15-i));o=0;var d,h=[0,68,153,204,255],p=["400","310","420","440","442","340","040","042","032","044","024","004","204","314","402","414"];for(i=0;16>i;i++)d=p[i],a.gridToG(c,i,o).rgb="rgb("+h[d.charAt(0)-0]+","+h[d.charAt(1)-0]+","+h[d.charAt(2)-0]+")"},t.Popup.Types.ColorChooser.SetColors=function(e){var o,i,n,r,a=t.Popup,s=a.Types,l=s.ColorChooser,c=a.Controls,u=c[e].data,d=u.grid;for(o=0;16>o;o++)for(i=0;5>i;i++)n=l.gridToG(d,o,i),n.ele.style.backgroundColor=n.rgb,n.ele.title=a.RGBToHex(n.rgb),n.ele.style.backgroundImage=d["selectedrow"+i]==o?"url("+a.imagePrefix+"chooserarrow.gif)":"";a.SetValue(e,u.value),d.msg.style.backgroundColor=u.value,r=a.splitRGB(u.value||"rgb(255,255,255)"),d.msg.style.color=r.r+r.g+r.b<220?"#FFF":"#000",u.value?(d.msg.style.backgroundImage="",d.msg.title=a.RGBToHex(u.value)):(d.msg.style.backgroundColor="#FFF",d.msg.style.backgroundImage="url("+a.imagePrefix+"defaultcolor.gif)",d.msg.title="Default")},t.Popup.Types.ColorChooser.GridMouseDown=function(o){var i=o||e.event,n=t.Popup,r=n.Types,a=r.ColorChooser,s=n.Controls,l=n.Current.id;if(l){var c=s[l].data,u=c.grid;switch(i.type){case"mousedown":u.mousedown=!0;break;case"mouseup":u.mousedown=!1;break;case"mousemove":if(!u.mousedown)return}var d=t.GetElementPositionWithScroll(c.mainele),h=i.clientX-d.left,p=i.clientY-d.top,f=t.GetElementPositionWithScroll(u.table);f.left-=d.left,f.top-=d.top;var m=Math.floor((p-f.top-2)/10);m=0>m?0:m;var g=Math.floor((h-f.left)/20);m=0>m?0:m>15?15:m,g=0>g?0:g>4?4:g;var v=a.gridToG(u,m,g).ele.style.backgroundColor,b=n.splitRGB(v),y=n.splitRGB(c.value);switch(g){case 2:c.value=n.makeRGB(b.r,y.g,y.b);break;case 3:c.value=n.makeRGB(y.r,b.g,y.b);break;case 4:c.value=n.makeRGB(y.r,y.g,b.b);break;case 0:case 1:c.value=v}a.DetermineColors(l),a.SetColors(l)}},t.Popup.Types.ColorChooser.ControlClicked=function(e){var o=t.Popup,i=o.Types,n=i.ColorChooser,r=(o.Controls,o.Current.id);return r&&e==r?void n.CloseOK():void o.CClick(e)},t.Popup.Types.ColorChooser.DefaultClicked=function(o){var i=(o||e.event,t.Popup),n=i.Types,r=(n.ColorChooser,i.Controls),a=i.Current.id;if(a){var s=r[a].data;s.value="",t.Popup.SetValue(a,s.value),t.Popup.Close()}},t.Popup.Types.ColorChooser.CustomClicked=function(o){var i=(o||e.event,t.Popup),n=i.Types,r=(n.ColorChooser,i.Controls),a=i.Current.id;if(a){var s,l,c,u=r[a].data;s=u.contentele,l=t.Popup.Types.ColorChooser.MakeCustom("ColorChooser",a),c=document.createElement("div"),c.innerHTML='<div style="cursor:default;padding:4px;background-color:#CCC;">'+l+"</div>",u.customele=c.firstChild.firstChild.childNodes[2],u.contentele=c,u.popupele.replaceChild(c,s),u.customele.value=i.RGBToHex(u.value),u.attribs.ensureWithin&&t.Popup.EnsurePosition(a,u.attribs.ensureWithin)}},t.Popup.Types.ColorChooser.CustomToGrid=function(e){var o,i,n=t.Popup,r=(n.Types,n.Controls),a=r[e].data;t.Popup.SetValue(e,n.HexToRGB("#"+a.customele.value));var o,s,i;o=a.contentele,s=t.Popup.Types.ColorChooser.CreateGrid("ColorChooser",e),i=document.createElement("div"),i.style.padding="3px",i.style.backgroundColor="#CCC",i.appendChild(s),a.customele=null,a.contentele=i,a.popupele.replaceChild(i,o),a.attribs.ensureWithin&&t.Popup.EnsurePosition(e,a.attribs.ensureWithin)},t.Popup.Types.ColorChooser.CustomOK=function(e){var o=t.Popup,i=(o.Types,o.Controls),n=i[e].data;t.Popup.SetValue(e,o.HexToRGB("#"+n.customele.value)),t.Popup.Close()},t.Popup.Types.ColorChooser.CloseOK=function(o){var i=(o||e.event,t.Popup),n=i.Types,r=(n.ColorChooser,i.Controls),a=i.Current.id;if(a){var s=r[a].data;t.Popup.SetValue(a,s.value),t.Popup.Close()}};var t;t||(alert("Main SocialCalc code module needed"),t={}),t.TableEditor||alert("SocialCalc TableEditor code module needed"),t.CurrentSpreadsheetControlObject=null,t.SpreadsheetControl=function(e){var o=t.Constants;this.parentNode=null,this.spreadsheetDiv=null,this.requestedHeight=0,this.requestedWidth=0,this.requestedSpaceBelow=0,this.height=0,this.width=0,this.viewheight=0,this.tabs=[],this.tabnums={},this.tabreplacements={},this.currentTab=-1,this.views={},this.sheet=null,this.context=null,this.editor=null,this.spreadsheetDiv=null,this.editorDiv=null,this.sortrange="",this.moverange="",this.idPrefix=e||"SocialCalc-",this.multipartBoundary="SocialCalcSpreadsheetControlSave",this.imagePrefix=o.defaultImagePrefix,this.toolbarbackground=o.SCToolbarbackground,this.tabbackground=o.SCTabbackground,this.tabselectedCSS=o.SCTabselectedCSS,this.tabplainCSS=o.SCTabplainCSS,this.toolbartext=o.SCToolbartext,this.formulabarheight=o.SCFormulabarheight,this.statuslineheight=o.SCStatuslineheight,this.statuslineCSS=o.SCStatuslineCSS,this.ExportCallback=null,"undefined"==typeof t.debug_log&&(t.debug_log=[]),this.sheet=new t.Sheet,this.context=new t.RenderContext(this.sheet),this.context.showGrid=!0,this.context.showRCHeaders=!0,this.editor=new t.TableEditor(this.context),this.editor.StatusCallback.statusline={func:t.SpreadsheetControlStatuslineCallback,params:{statuslineid:this.idPrefix+"statusline",recalcid1:this.idPrefix+"divider_recalc",recalcid2:this.idPrefix+"button_recalc"}},t.CurrentSpreadsheetControlObject=this,this.editor.MoveECellCallback.movefrom=function(e){var o=t.GetSpreadsheetControlObject();o.context.cursorsuffix="",e.range2.hasrange&&!e.cellhandles.noCursorSuffix&&(e.ecell.row==e.range2.top&&(e.ecell.col<e.range2.left||e.ecell.col>e.range2.right+1)&&(o.context.cursorsuffix="insertleft"),e.ecell.col==e.range2.left&&(e.ecell.row<e.range2.top||e.ecell.row>e.range2.bottom+1)&&(o.context.cursorsuffix="insertup"))},this.formulabuttons={formulafunctions:{image:"insertformula.png",tooltip:"Functions",command:t.SpreadsheetControl.DoFunctionList},multilineinput:{image:"listbox.png",tooltip:"Multi-line Input Box",command:t.SpreadsheetControl.DoMultiline},link:{image:"inserthyperlink.png",tooltip:"Link Input Box",command:t.SpreadsheetControl.DoLink},sum:{image:"autosum.png",tooltip:"Auto Sum",command:t.SpreadsheetControl.DoSum}},this.findbuttons={last:{image:"upsearch.png",tooltip:"Find Previous",command:t.SpreadsheetControl.SearchUp},next:{image:"downsearch.png",tooltip:"Find Next",command:t.SpreadsheetControl.SearchDown}},this.tabnums.edit=this.tabs.length,this.tabs.push({name:"edit",text:"Edit",html:' <div id="%id.edittools" style="padding:10px 0px 0px 0px;">&nbsp;<img id="%id.button_undo" src="%img.undo.png" style="vertical-align:bottom;"> <img id="%id.button_redo" src="%img.redo.png" style="vertical-align:bottom;"> &nbsp;<img src="%img.divider1.png" style="vertical-align:bottom;">&nbsp; <img id="%id.button_copy" src="%img.copy.png" style="vertical-align:bottom;"> <img id="%id.button_cut" src="%img.cut.png" style="vertical-align:bottom;"> <img id="%id.button_paste" src="%img.paste.png" style="vertical-align:bottom;"> &nbsp;<img src="%img.divider1.png" style="vertical-align:bottom;">&nbsp; <img id="%id.button_delete" src="%img.delete.png" style="vertical-align:bottom;"> <img id="%id.button_pasteformats" src="%img.formatpaintbrush.png" style="vertical-align:bottom;"> &nbsp;<img src="%img.divider1.png" style="vertical-align:bottom;">&nbsp;  <span id="%id.locktools"><img id="%id.button_lock" src="%img.lock.png" style="vertical-align:bottom;"> <img id="%id.button_unlock" src="%img.unlock.png" style="vertical-align:bottom;"> &nbsp;<img src="%img.divider1.png" style="vertical-align:bottom;">&nbsp;</span> <img id="%id.button_filldown" src="%img.filldown.png" style="vertical-align:bottom;"> <img id="%id.button_fillright" src="%img.fillright.png" style="vertical-align:bottom;"> &nbsp;<img src="%img.divider1.png" style="vertical-align:bottom;">&nbsp; <img id="%id.button_movefrom" src="%img.movefromoff.gif" style="vertical-align:bottom;"> <img id="%id.button_movepaste" src="%img.movepasteoff.gif" style="vertical-align:bottom;"> <img id="%id.button_moveinsert" src="%img.moveinsertoff.gif" style="vertical-align:bottom;"> &nbsp;<img src="%img.divider1.png" style="vertical-align:bottom;">&nbsp; <img id="%id.button_alignleft" src="%img.alignleft.png" style="vertical-align:bottom;"> <img id="%id.button_aligncenter" src="%img.aligncenter.png" style="vertical-align:bottom;"> <img id="%id.button_alignright" src="%img.alignright.png" style="vertical-align:bottom;"> &nbsp;<img src="%img.divider1.png" style="vertical-align:bottom;">&nbsp; <img id="%id.button_borderon" src="%img.borderson.png" style="vertical-align:bottom;">  <img id="%id.button_borderoff" src="%img.bordersoff.png" style="vertical-align:bottom;">  <img id="%id.button_swapcolors" src="%img.swapcolors.png" style="vertical-align:bottom;">  &nbsp;<img src="%img.divider1.png" style="vertical-align:bottom;">&nbsp; <img id="%id.button_merge" src="%img.mergecells.png" style="vertical-align:bottom;">  &nbsp;<img src="%img.divider1.png" style="vertical-align:bottom;">&nbsp; <img id="%id.button_insertrow" src="%img.insertrows.png" style="vertical-align:bottom;">  <img id="%id.button_insertcol" src="%img.insertcolumns.png" style="vertical-align:bottom;">  <img id="%id.button_deleterow" src="%img.deleterows.png" style="vertical-align:bottom;">  <img id="%id.button_deletecol" src="%img.deletecolumns.png" style="vertical-align:bottom;">  <img id="%id.button_hiderow" src="%img.hiderow.png" style="vertical-align:bottom;">  <img id="%id.button_hidecol" src="%img.hidecol.png" style="vertical-align:bottom;">  &nbsp;<img id="%id.divider_recalc" src="%img.divider1.png" style="vertical-align:bottom;">&nbsp; <img id="%id.button_recalc" src="%img.recalc.png" style="vertical-align:bottom;">  </div>',oncreate:null,onclick:null}),this.tabnums.settings=this.tabs.length,this.tabs.push({name:"settings",text:"Format",html:'<div id="%id.settingstools" style="display:none;"> <div id="%id.sheetsettingstoolbar" style="display:none;">  <table cellspacing="0" cellpadding="0"><tr><td>   <div style="%tbt.">%loc!SHEET SETTINGS!:</div>   </td></tr><tr><td>   <input id="%id.settings-savesheet" type="button" value="%loc!Save!" onclick="SocialCalc.SettingsControlSave(\'sheet\');">   <input type="button" value="%loc!Cancel!" onclick="SocialCalc.SettingsControlSave(\'cancel\');">   <input type="button" value="%loc!Show Cell Settings!" onclick="SocialCalc.SpreadsheetControlSettingsSwitch(\'cell\');return false;">   </td></tr></table> </div> <div id="%id.cellsettingstoolbar" style="display:none;">  <table cellspacing="0" cellpadding="0"><tr><td>   <div style="%tbt.">%loc!CELL SETTINGS!: <span id="%id.settingsecell">&nbsp;</span></div>   </td></tr><tr><td>  <input id="%id.settings-savecell" type="button" value="%loc!Save!" onclick="SocialCalc.SettingsControlSave(\'cell\');">  <input type="button" value="%loc!Cancel!" onclick="SocialCalc.SettingsControlSave(\'cancel\');">  <input type="button" value="%loc!Show Sheet Settings!" onclick="SocialCalc.SpreadsheetControlSettingsSwitch(\'sheet\');return false;">  </td></tr></table> </div></div>',view:"settings",onclick:function(e){t.SettingsControls.idPrefix=e.idPrefix,t.SettingControlReset();var o=e.sheet.EncodeSheetAttributes(),i=e.sheet.EncodeCellAttributes(e.editor.ecell.coord);t.SettingsControlLoadPanel(e.views.settings.values.sheetspanel,o),t.SettingsControlLoadPanel(e.views.settings.values.cellspanel,i),document.getElementById(e.idPrefix+"settingsecell").innerHTML=e.editor.ecell.coord,t.SpreadsheetControlSettingsSwitch("cell"),e.views.settings.element.style.height=e.viewheight+"px",e.views.settings.element.firstChild.style.height=e.viewheight+"px";var n;n=e.editor.range.hasrange?t.crToCoord(e.editor.range.left,e.editor.range.top)+":"+t.crToCoord(e.editor.range.right,e.editor.range.bottom):e.editor.ecell.coord,document.getElementById(e.idPrefix+"settings-savecell").value=t.LocalizeString("Save to")+": "+n},onclickFocus:!0}),this.views.settings={name:"settings",values:{},oncreate:function(e,o){var i=t.Constants;o.values.sheetspanel={colorchooser:{id:e.idPrefix+"scolorchooser"},formatnumber:{setting:"numberformat",type:"PopupList",id:e.idPrefix+"formatnumber",initialdata:i.SCFormatNumberFormats},formattext:{setting:"textformat",type:"PopupList",id:e.idPrefix+"formattext",initialdata:i.SCFormatTextFormats},fontfamily:{setting:"fontfamily",type:"PopupList",id:e.idPrefix+"fontfamily",initialdata:i.SCFormatFontfamilies},fontlook:{setting:"fontlook",type:"PopupList",id:e.idPrefix+"fontlook",initialdata:i.SCFormatFontlook},fontsize:{setting:"fontsize",type:"PopupList",id:e.idPrefix+"fontsize",initialdata:i.SCFormatFontsizes},textalignhoriz:{setting:"textalignhoriz",type:"PopupList",id:e.idPrefix+"textalignhoriz",initialdata:i.SCFormatTextAlignhoriz},numberalignhoriz:{setting:"numberalignhoriz",type:"PopupList",id:e.idPrefix+"numberalignhoriz",initialdata:i.SCFormatNumberAlignhoriz},alignvert:{setting:"alignvert",type:"PopupList",id:e.idPrefix+"alignvert",initialdata:i.SCFormatAlignVertical},textcolor:{setting:"textcolor",type:"ColorChooser",id:e.idPrefix+"textcolor"},bgcolor:{setting:"bgcolor",type:"ColorChooser",id:e.idPrefix+"bgcolor"},padtop:{setting:"padtop",type:"PopupList",id:e.idPrefix+"padtop",initialdata:i.SCFormatPadsizes},padright:{setting:"padright",type:"PopupList",id:e.idPrefix+"padright",initialdata:i.SCFormatPadsizes},padbottom:{setting:"padbottom",type:"PopupList",id:e.idPrefix+"padbottom",initialdata:i.SCFormatPadsizes},padleft:{setting:"padleft",type:"PopupList",id:e.idPrefix+"padleft",initialdata:i.SCFormatPadsizes},colwidth:{setting:"colwidth",type:"PopupList",id:e.idPrefix+"colwidth",initialdata:i.SCFormatColwidth},recalc:{setting:"recalc",type:"PopupList",id:e.idPrefix+"recalc",initialdata:i.SCFormatRecalc},usermaxcol:{setting:"usermaxcol",type:"PopupList",id:e.idPrefix+"usermaxcol",initialdata:i.SCFormatUserMaxCol},usermaxrow:{setting:"usermaxrow",type:"PopupList",id:e.idPrefix+"usermaxrow",initialdata:i.SCFormatUserMaxRow}},o.values.cellspanel={name:"cell",colorchooser:{id:e.idPrefix+"scolorchooser"},cformatnumber:{setting:"numberformat",type:"PopupList",id:e.idPrefix+"cformatnumber",initialdata:i.SCFormatNumberFormats},cformattext:{setting:"textformat",type:"PopupList",id:e.idPrefix+"cformattext",initialdata:i.SCFormatTextFormats},cfontfamily:{setting:"fontfamily",type:"PopupList",id:e.idPrefix+"cfontfamily",initialdata:i.SCFormatFontfamilies},cfontlook:{setting:"fontlook",type:"PopupList",id:e.idPrefix+"cfontlook",initialdata:i.SCFormatFontlook},cfontsize:{setting:"fontsize",type:"PopupList",id:e.idPrefix+"cfontsize",initialdata:i.SCFormatFontsizes},calignhoriz:{setting:"alignhoriz",type:"PopupList",id:e.idPrefix+"calignhoriz",initialdata:i.SCFormatTextAlignhoriz},calignvert:{setting:"alignvert",type:"PopupList",id:e.idPrefix+"calignvert",initialdata:i.SCFormatAlignVertical},ctextcolor:{setting:"textcolor",type:"ColorChooser",id:e.idPrefix+"ctextcolor"},cbgcolor:{setting:"bgcolor",type:"ColorChooser",id:e.idPrefix+"cbgcolor"},cbt:{setting:"bt",type:"BorderSide",id:e.idPrefix+"cbt"},cbr:{setting:"br",type:"BorderSide",id:e.idPrefix+"cbr"},cbb:{setting:"bb",type:"BorderSide",id:e.idPrefix+"cbb"},cbl:{setting:"bl",type:"BorderSide",id:e.idPrefix+"cbl"},cpadtop:{setting:"padtop",type:"PopupList",id:e.idPrefix+"cpadtop",initialdata:i.SCFormatPadsizes},cpadright:{setting:"padright",type:"PopupList",id:e.idPrefix+"cpadright",initialdata:i.SCFormatPadsizes},cpadbottom:{setting:"padbottom",type:"PopupList",id:e.idPrefix+"cpadbottom",initialdata:i.SCFormatPadsizes},cpadleft:{setting:"padleft",type:"PopupList",id:e.idPrefix+"cpadleft",initialdata:i.SCFormatPadsizes}},t.SettingsControlInitializePanel(o.values.sheetspanel),t.SettingsControlInitializePanel(o.values.cellspanel)},replacements:{itemtitle:{regex:/\%itemtitle\./g,replacement:'style="padding:12px 10px 0px 10px;font-weight:bold;text-align:right;vertical-align:top;font-size:small;"'},sectiontitle:{regex:/\%sectiontitle\./g,replacement:'style="padding:16px 10px 0px 0px;font-weight:bold;vertical-align:top;font-size:small;color:#C00;"'},parttitle:{regex:/\%parttitle\./g,replacement:'style="font-weight:bold;font-size:x-small;padding:0px 0px 3px 0px;"'},itembody:{regex:/\%itembody\./g,replacement:'style="padding:12px 0px 0px 0px;vertical-align:top;font-size:small;"'},bodypart:{regex:/\%bodypart\./g,replacement:'style="padding:0px 10px 0px 0px;font-size:small;vertical-align:top;"'}},divStyle:"border:1px solid black;overflow:auto;",html:'<div id="%id.scolorchooser" style="display:none;position:absolute;z-index:20;"></div><table cellspacing="0" cellpadding="0"> <tr><td style="vertical-align:top;"><table id="%id.sheetsettingstable" style="display:none;" cellspacing="0" cellpadding="0"><tr> <td %itemtitle.><br>%loc!Default Format!:</td> <td %itembody.>   <table cellspacing="0" cellpadding="0"><tr>    <td %bodypart.>     <div %parttitle.>%loc!Number!</div>     <span id="%id.formatnumber"></span>    </td>    <td %bodypart.>     <div %parttitle.>%loc!Text!</div>     <span id="%id.formattext"></span>    </td>   </tr></table> </td></tr><tr> <td %itemtitle.><br>%loc!Default Alignment!:</td> <td %itembody.>   <table cellspacing="0" cellpadding="0"><tr>    <td %bodypart.>     <div %parttitle.>%loc!Text Horizontal!</div>     <span id="%id.textalignhoriz"></span>    </td>    <td %bodypart.>     <div %parttitle.>%loc!Number Horizontal!</div>     <span id="%id.numberalignhoriz"></span>    </td>    <td %bodypart.>     <div %parttitle.>%loc!Vertical!</div>     <span id="%id.alignvert"></span>    </td>   </tr></table> </td></tr><tr> <td %itemtitle.><br>%loc!Default Font!:</td> <td %itembody.>   <table cellspacing="0" cellpadding="0"><tr>    <td %bodypart.>     <div %parttitle.>%loc!Family!</div>     <span id="%id.fontfamily"></span>    </td>    <td %bodypart.>     <div %parttitle.>%loc!Bold &amp; Italics!</div>     <span id="%id.fontlook"></span>    </td>    <td %bodypart.>     <div %parttitle.>%loc!Size!</div>     <span id="%id.fontsize"></span>    </td>    <td %bodypart.>     <div %parttitle.>%loc!Color!</div>     <div id="%id.textcolor"></div>    </td>    <td %bodypart.>     <div %parttitle.>%loc!Background!</div>     <div id="%id.bgcolor"></div>    </td>   </tr></table> </td></tr><tr> <td %itemtitle.><br>%loc!Default Padding!:</td> <td %itembody.>   <table cellspacing="0" cellpadding="0"><tr>    <td %bodypart.>     <div %parttitle.>%loc!Top!</div>     <span id="%id.padtop"></span>    </td>    <td %bodypart.>     <div %parttitle.>%loc!Right!</div>     <span id="%id.padright"></span>    </td>    <td %bodypart.>     <div %parttitle.>%loc!Bottom!</div>     <span id="%id.padbottom"></span>    </td>    <td %bodypart.>     <div %parttitle.>%loc!Left!</div>     <span id="%id.padleft"></span>    </td>   </tr></table> </td></tr><tr> <td %itemtitle.><br>%loc!Default Column Width!:</td> <td %itembody.>   <table cellspacing="0" cellpadding="0"><tr>    <td %bodypart.>     <div %parttitle.>&nbsp;</div>     <span id="%id.colwidth"></span>    </td>   </tr></table> </td></tr><tr> <td %itemtitle.><br>%loc!Recalculation!:</td> <td %itembody.>   <table cellspacing="0" cellpadding="0"><tr>    <td %bodypart.>     <div %parttitle.>&nbsp;</div>     <span id="%id.recalc"></span>    </td>   </tr></table> </td></tr><tr> <td %itemtitle.><br>%loc!Dimensions!:</td> <td %itembody.>   <table cellspacing="0" cellpadding="0"><tr>    <td %bodypart.>     <div %parttitle.>%loc!Columns!</div>     <span id="%id.usermaxcol"></span>    </td>    <td %bodypart.>     <div %parttitle.>%loc!Rows!</div>     <span id="%id.usermaxrow"></span>    </td>   </tr></table> </td></tr></table><table id="%id.cellsettingstable" cellspacing="0" cellpadding="0"><tr> <td %itemtitle.><br>%loc!Format!:</td> <td %itembody.>   <table cellspacing="0" cellpadding="0"><tr>    <td %bodypart.>     <div %parttitle.>%loc!Number!</div>     <span id="%id.cformatnumber"></span>    </td>    <td %bodypart.>     <div %parttitle.>%loc!Text!</div>     <span id="%id.cformattext"></span>    </td>   </tr></table> </td></tr><tr> <td %itemtitle.><br>%loc!Alignment!:</td> <td %itembody.>   <table cellspacing="0" cellpadding="0"><tr>    <td %bodypart.>     <div %parttitle.>%loc!Horizontal!</div>     <span id="%id.calignhoriz"></span>    </td>    <td %bodypart.>     <div %parttitle.>%loc!Vertical!</div>     <span id="%id.calignvert"></span>    </td>   </tr></table> </td></tr><tr> <td %itemtitle.><br>%loc!Font!:</td> <td %itembody.>   <table cellspacing="0" cellpadding="0"><tr>    <td %bodypart.>     <div %parttitle.>%loc!Family!</div>     <span id="%id.cfontfamily"></span>    </td>    <td %bodypart.>     <div %parttitle.>%loc!Bold &amp; Italics!</div>     <span id="%id.cfontlook"></span>    </td>    <td %bodypart.>     <div %parttitle.>%loc!Size!</div>     <span id="%id.cfontsize"></span>    </td>    <td %bodypart.>     <div %parttitle.>%loc!Color!</div>     <div id="%id.ctextcolor"></div>    </td>    <td %bodypart.>     <div %parttitle.>%loc!Background!</div>     <div id="%id.cbgcolor"></div>    </td>   </tr></table> </td></tr><tr> <td %itemtitle.><br>%loc!Borders!:</td> <td %itembody.>   <table cellspacing="0" cellpadding="0">    <tr><td %bodypart. colspan="3"><div %parttitle.>%loc!Top Border!</div></td>     <td %bodypart. colspan="3"><div %parttitle.>%loc!Right Border!</div></td>     <td %bodypart. colspan="3"><div %parttitle.>%loc!Bottom Border!</div></td>     <td %bodypart. colspan="3"><div %parttitle.>%loc!Left Border!</div></td>    </tr><tr>    <td %bodypart.>     <input id="%id.cbt-onoff-bcb" onclick="SocialCalc.SettingsControlOnchangeBorder(this);" type="checkbox">    </td>    <td %bodypart.>     <div id="%id.cbt-color"></div>    </td>    <td>&nbsp;&nbsp;&nbsp;&nbsp;</td>    <td %bodypart.>     <input id="%id.cbr-onoff-bcb" onclick="SocialCalc.SettingsControlOnchangeBorder(this);" type="checkbox">    </td>    <td %bodypart.>     <div id="%id.cbr-color"></div>    </td>    <td>&nbsp;&nbsp;&nbsp;&nbsp;</td>    <td %bodypart.>     <input id="%id.cbb-onoff-bcb" onclick="SocialCalc.SettingsControlOnchangeBorder(this);" type="checkbox">    </td>    <td %bodypart.>     <div id="%id.cbb-color"></div>    </td>    <td>&nbsp;&nbsp;&nbsp;&nbsp;</td>    <td %bodypart.>     <input id="%id.cbl-onoff-bcb" onclick="SocialCalc.SettingsControlOnchangeBorder(this);" type="checkbox">    </td>    <td %bodypart.>     <div id="%id.cbl-color"></div>    </td>    <td>&nbsp;&nbsp;&nbsp;&nbsp;</td>   </tr></table> </td></tr><tr> <td %itemtitle.><br>%loc!Padding!:</td> <td %itembody.>   <table cellspacing="0" cellpadding="0"><tr>    <td %bodypart.>     <div %parttitle.>%loc!Top!</div>     <span id="%id.cpadtop"></span>    </td>    <td %bodypart.>     <div %parttitle.>%loc!Right!</div>     <span id="%id.cpadright"></span>    </td>    <td %bodypart.>     <div %parttitle.>%loc!Bottom!</div>     <span id="%id.cpadbottom"></span>    </td>    <td %bodypart.>     <div %parttitle.>%loc!Left!</div>     <span id="%id.cpadleft"></span>    </td>   </tr></table> </td></tr></table> </td><td style="vertical-align:top;padding:12px 0px 0px 12px;">  <div style="width:100px;height:100px;overflow:hidden;border:1px solid black;background-color:#EEE;padding:6px;">   <table cellspacing="0" cellpadding="0"><tr>    <td id="sample-text" style="height:100px;width:100px;"><div>%loc!This is a<br>sample!</div><div>-1234.5</div></td>   </tr></table>  </div> </td></tr></table><br>'},this.tabnums.sort=this.tabs.length,this.tabs.push({name:"sort",text:"Sort",html:' <div id="%id.sorttools" style="display:none;">  <table cellspacing="0" cellpadding="0"><tr>   <td style="vertical-align:top;padding-right:4px;width:160px;">    <div style="%tbt.">%loc!Set Cells To Sort!</div>    <select id="%id.sortlist" size="1" onfocus="%s.CmdGotFocus(this);"><option selected>[select range]</option><option value="all">Sort All</option></select>    <input type="button" value="%loc!OK!" onclick="%s.DoCmd(this, \'ok-setsort\');" style="font-size:x-small;">   </td>   <td style="vertical-align:middle;padding-right:16px;width:100px;text-align:right;">    <div style="%tbt.">&nbsp;</div>    <input type="button" id="%id.sortbutton" value="%loc!Sort Cells! A1:A1" onclick="%s.DoCmd(this, \'dosort\');" style="visibility:hidden;">   </td>   <td style="vertical-align:top;padding-right:16px;">    <table cellspacing="0" cellpadding="0"><tr>     <td style="vertical-align:top;">      <div style="%tbt.">%loc!Major Sort!</div>      <select id="%id.majorsort" size="1" onfocus="%s.CmdGotFocus(this);"></select>     </td><td>      <input type="radio" name="majorsort" id="%id.majorsortup" value="up" checked><span style="font-size:x-small;color:#555753;">%loc!Up!</span><br>      <input type="radio" name="majorsort" id="%id.majorsortdown" value="down"><span style="font-size:x-small;color:#555753;">%loc!Down!</span>     </td>    </tr></table>   </td>   <td style="vertical-align:top;padding-right:16px;">    <table cellspacing="0" cellpadding="0"><tr>     <td style="vertical-align:top;">      <div style="%tbt.">%loc!Minor Sort!</div>      <select id="%id.minorsort" size="1" onfocus="%s.CmdGotFocus(this);"></select>     </td><td>      <input type="radio" name="minorsort" id="%id.minorsortup" value="up" checked><span style="font-size:x-small;color:#555753;">%loc!Up!</span><br>      <input type="radio" name="minorsort" id="%id.minorsortdown" value="down"><span style="font-size:x-small;color:#555753;">%loc!Down!</span>     </td>    </tr></table>   </td>   <td style="vertical-align:top;padding-right:16px;">    <table cellspacing="0" cellpadding="0"><tr>     <td style="vertical-align:top;">      <div style="%tbt.">%loc!Last Sort!</div>      <select id="%id.lastsort" size="1" onfocus="%s.CmdGotFocus(this);"></select>     </td><td>      <input type="radio" name="lastsort" id="%id.lastsortup" value="up" checked><span style="font-size:x-small;color:#555753;">%loc!Up!</span><br>      <input type="radio" name="lastsort" id="%id.lastsortdown" value="down"><span style="font-size:x-small;color:#555753;">%loc!Down!</span>     </td>    </tr></table>   </td>  </tr></table> </div>',onclick:t.SpreadsheetControlSortOnclick}),this.editor.SettingsCallbacks.sort={save:t.SpreadsheetControlSortSave,load:t.SpreadsheetControlSortLoad},this.tabnums.audit=this.tabs.length,this.tabs.push({name:"audit",text:"Audit",html:'<div id="%id.audittools" style="display:none;"> <div style="%tbt.">&nbsp;</div></div>',view:"audit",onclick:function(e){var o,i,n=t.LocalizeString,r='<table cellspacing="0" cellpadding="0" style="margin-bottom:10px;"><tr><td style="font-size:small;padding:6px;"><b>'+n("Audit Trail This Session")+":</b><br><br>",a=e.sheet.changes.stack,s=e.sheet.changes.tos;for(o=0;o<a.length;o++)for(o==s+1&&(r+='<br></td></tr><tr><td style="font-size:small;background-color:#EEE;padding:6px;">'+n("UNDONE STEPS")+":<br>"),i=0;i<a[o].command.length;i++)r+=t.special_chars(a[o].command[i])+"<br>";var l=function(e){if("string"==typeof e)return e;if(!e)return"null";if("object"==typeof e){l.check||(l.check=new Array);for(var t=0,o=l.check.length;o>t;++t)if(l.check[t]==e)return"{}";l.check.push(e)}var o="",i="undefined"==typeof e.length?1:0,n="";for(var r in e)i&&(o="'"+r+"':"),n+="string"==typeof e[r]?o+"'"+e[r]+"',":"object"==typeof e[r]?o+l(e[r])+",":o+e[r]+",";return"object"==typeof e&&l.check.pop(),i?"{"+n.slice(0,-1)+"}":"["+n.slice(0,-1)+"]"};if("undefined"!=typeof t.debug_log)for(var c in t.debug_log)r+=l(t.debug_log[c])+"<br>";e.views.audit.element.innerHTML=r+"</td></tr></table>",t.CmdGotFocus(!0)},onclickFocus:!0}),this.views.audit={name:"audit",divStyle:"border:1px solid black;overflow:auto;",html:"Audit Trail"},this.tabnums.comment=this.tabs.length,this.tabs.push({name:"comment",text:"Comment",html:'<div id="%id.commenttools" style="display:none;"><table cellspacing="0" cellpadding="0"><tr><td><textarea id="%id.commenttext" style="font-size:small;height:32px;width:600px;overflow:auto;" onfocus="%s.CmdGotFocus(this);"></textarea></td><td style="vertical-align:top;">&nbsp;<input type="button" value="%loc!Save!" onclick="%s.SpreadsheetControlCommentSet();" style="font-size:x-small;"></td></tr></table></div>',view:"sheet",onclick:t.SpreadsheetControlCommentOnclick,onunclick:t.SpreadsheetControlCommentOnunclick}),this.tabnums.names=this.tabs.length,this.tabs.push({name:"names",text:"Names",html:'<div id="%id.namestools" style="display:none;">  <table cellspacing="0" cellpadding="0"><tr>   <td style="vertical-align:top;padding-right:24px;">    <div style="%tbt.">%loc!Existing Names!</div>    <select id="%id.nameslist" size="1" onchange="%s.SpreadsheetControlNamesChangedName();" onfocus="%s.CmdGotFocus(this);"><option selected>[New]</option></select>   </td>   <td style="vertical-align:top;padding-right:6px;">    <div style="%tbt.">%loc!Name!</div>    <input type="text" id="%id.namesname" style="font-size:x-small;width:75px;" onfocus="%s.CmdGotFocus(this);">   </td>   <td style="vertical-align:top;padding-right:6px;">    <div style="%tbt.">%loc!Description!</div>    <input type="text" id="%id.namesdesc" style="font-size:x-small;width:150px;" onfocus="%s.CmdGotFocus(this);">   </td>   <td style="vertical-align:top;padding-right:6px;">    <div style="%tbt.">%loc!Value!</div>    <input type="text" id="%id.namesvalue" width="16" style="font-size:x-small;width:100px;" onfocus="%s.CmdGotFocus(this);">   </td>   <td style="vertical-align:top;padding-right:12px;width:100px;">    <div style="%tbt.">%loc!Set Value To!</div>    <input type="button" id="%id.namesrangeproposal" value="A1" onclick="%s.SpreadsheetControlNamesSetValue();" style="font-size:x-small;">   </td>   <td style="vertical-align:top;padding-right:6px;">    <div style="%tbt.">&nbsp;</div>    <input type="button" value="%loc!Save!" onclick="%s.SpreadsheetControlNamesSave();" style="font-size:x-small;">    <input type="button" value="%loc!Delete!" onclick="%s.SpreadsheetControlNamesDelete()" style="font-size:x-small;">   </td>  </tr></table></div>',view:"sheet",onclick:t.SpreadsheetControlNamesOnclick,onunclick:t.SpreadsheetControlNamesOnunclick}),this.tabnums.clipboard=this.tabs.length,this.tabs.push({name:"clipboard",text:"Clipboard",html:'<div id="%id.clipboardtools" style="display:none;">  <table cellspacing="0" cellpadding="0"><tr>   <td style="vertical-align:top;padding-right:24px;">    <div style="%tbt.">     &nbsp;    </div>   </td>  </tr></table></div>',view:"clipboard",onclick:t.SpreadsheetControlClipboardOnclick,onclickFocus:"clipboardtext"}),this.views.clipboard={name:"clipboard",divStyle:"overflow:auto;",html:' <div style="font-size:x-small;padding:5px 0px 10px 0px;">  <b>%loc!Display Clipboard in!:</b>  <input type="radio" id="%id.clipboardformat-tab" name="%id.clipboardformat" checked onclick="%s.SpreadsheetControlClipboardFormat(\'tab\');"> %loc!Tab-delimited format! &nbsp;  <input type="radio" id="%id.clipboardformat-csv" name="%id.clipboardformat" onclick="%s.SpreadsheetControlClipboardFormat(\'csv\');"> %loc!CSV format! &nbsp;  <input type="radio" id="%id.clipboardformat-scsave" name="%id.clipboardformat" onclick="%s.SpreadsheetControlClipboardFormat(\'scsave\');"> %loc!SocialCalc-save format! </div> <input type="button" value="%loc!Load SocialCalc Clipboard With This!" style="font-size:x-small;" onclick="%s.SpreadsheetControlClipboardLoad();">&nbsp;  <input type="button" value="%loc!Clear SocialCalc Clipboard!" style="font-size:x-small;" onclick="%s.SpreadsheetControlClipboardClear();">&nbsp;  <br> <textarea id="%id.clipboardtext" style="font-size:small;height:350px;width:800px;overflow:auto;" onfocus="%s.CmdGotFocus(this);"></textarea>'}
-},t.SpreadsheetControl.prototype.InitializeSpreadsheetControl=function(e,o,i,n){return t.InitializeSpreadsheetControl(this,e,o,i,n)},t.SpreadsheetControl.prototype.DoOnResize=function(){return t.DoOnResize(this)},t.SpreadsheetControl.prototype.SizeSSDiv=function(){return t.SizeSSDiv(this)},t.SpreadsheetControl.prototype.ExecuteCommand=function(e,o){return t.SpreadsheetControlExecuteCommand(this,e,o)},t.SpreadsheetControl.prototype.CreateSheetHTML=function(){return t.SpreadsheetControlCreateSheetHTML(this)},t.SpreadsheetControl.prototype.CreateSpreadsheetSave=function(e){return t.SpreadsheetControlCreateSpreadsheetSave(this,e)},t.SpreadsheetControl.prototype.DecodeSpreadsheetSave=function(e){return t.SpreadsheetControlDecodeSpreadsheetSave(this,e)},t.SpreadsheetControl.prototype.CreateCellHTML=function(e){return t.SpreadsheetControlCreateCellHTML(this,e)},t.SpreadsheetControl.prototype.CreateCellHTMLSave=function(e){return t.SpreadsheetControlCreateCellHTMLSave(this,e)},t.SpreadsheetControl.prototype.ParseSheetSave=function(e){return this.sheet.ParseSheetSave(e)},t.SpreadsheetControl.prototype.CreateSheetSave=function(){return this.sheet.CreateSheetSave()},t.InitializeSpreadsheetControl=function(e,o,i,n,r){var a,s,l,c,u,d,h,p,f=t.Constants,m=t.LocalizeString,g=t.LocalizeSubstrings,v=e.tabs,b=e.views;for(e.requestedHeight=i,e.requestedWidth=n,e.requestedSpaceBelow=r,"string"==typeof o&&(o=document.getElementById(o)),null==o&&alert("SocialCalc.SpreadsheetControl not given parent node."),e.parentNode=o,e.spreadsheetDiv=document.createElement("div"),e.SizeSSDiv(),s=o.firstChild;null!=s;s=o.firstChild)o.removeChild(s);for(a="<div>",a+='<div style="'+e.tabbackground+'"><table cellpadding="0" cellspacing="0"><tr>',l=0;l<v.length;l++)a+='  <td id="%id.'+v[l].name+'tab" style="'+(0==l?e.tabselectedCSS:e.tabplainCSS)+'" onclick="%s.SetTab(this);">'+m(v[l].text)+"</td>";for(a+=" </tr></table></div>",a+='<div style="'+e.toolbarbackground+'padding:12px 10px 10px 4px;">',l=0;l<v.length;l++)a+=v[l].html;a+="</div>",a+="</div>",e.currentTab=0;for(d in e.tabreplacements)a=a.replace(e.tabreplacements[d].regex,e.tabreplacements[d].replacement);a=a.replace(/\%s\./g,"SocialCalc."),a=a.replace(/\%id\./g,e.idPrefix),a=a.replace(/\%tbt\./g,e.toolbartext),a=a.replace(/\%img\./g,e.imagePrefix),a=g(a),e.spreadsheetDiv.innerHTML=a,o.appendChild(e.spreadsheetDiv),e.Buttons={button_undo:{tooltip:"Undo",command:"undo"},button_redo:{tooltip:"Redo",command:"redo"},button_copy:{tooltip:"Copy",command:"copy"},button_cut:{tooltip:"Cut",command:"cut"},button_paste:{tooltip:"Paste",command:"paste"},button_pasteformats:{tooltip:"Paste Formats",command:"pasteformats"},button_lock:{tooltip:"Lock Cell",command:"lock"},button_unlock:{tooltip:"Unlock Cell",command:"unlock"},button_delete:{tooltip:"Delete Cell Contents",command:"delete"},button_filldown:{tooltip:"Fill Down",command:"filldown"},button_fillright:{tooltip:"Fill Right",command:"fillright"},button_movefrom:{tooltip:"Set/Clear Move From",command:"movefrom"},button_movepaste:{tooltip:"Move Paste",command:"movepaste"},button_moveinsert:{tooltip:"Move Insert",command:"moveinsert"},button_alignleft:{tooltip:"Align Left",command:"align-left"},button_aligncenter:{tooltip:"Align Center",command:"align-center"},button_alignright:{tooltip:"Align Right",command:"align-right"},button_borderon:{tooltip:"Borders On",command:"borderon"},button_borderoff:{tooltip:"Borders Off",command:"borderoff"},button_swapcolors:{tooltip:"Swap Colors",command:"swapcolors"},button_merge:{tooltip:"Merge/Unmerge Cells",command:"merge"},button_insertrow:{tooltip:"Insert Row Before",command:"insertrow"},button_insertcol:{tooltip:"Insert Column Before",command:"insertcol"},button_deleterow:{tooltip:"Delete Row",command:"deleterow"},button_deletecol:{tooltip:"Delete Column",command:"deletecol"},button_hiderow:{tooltip:"Hide Row",command:"hiderow"},button_hidecol:{tooltip:"Hide Column",command:"hidecol"},button_recalc:{tooltip:"Recalculate",command:"recalc"}};for(h in e.Buttons)p=document.getElementById(e.idPrefix+h),p?(p.style.border="1px solid "+f.ISCButtonBorderNormal,p.title=m(e.Buttons[h].tooltip),t.ButtonRegister(e.editor,p,{normalstyle:"border:1px solid "+f.ISCButtonBorderNormal+";background-color:"+f.ISCButtonNormalBackground+";",hoverstyle:"border:1px solid "+f.ISCButtonBorderHover+";background-color:"+f.ISCButtonHoverBackground+";",downstyle:"border:1px solid "+f.ISCButtonBorderDown+";background-color:"+f.ISCButtonDownBackground+";"},{MouseDown:t.DoButtonCmd,command:e.Buttons[h].command})):alert("Button "+(e.idPrefix+h)+" missing");e.formulabarDiv=document.createElement("div"),e.formulabarDiv.innerHTML='<input type="text" size="60" value="">&nbsp;',e.spreadsheetDiv.appendChild(e.formulabarDiv);new t.InputBox(e.formulabarDiv.firstChild,e.editor);for(h in e.formulabuttons)p=document.createElement("img"),p.id=e.idPrefix+h,p.src=(e.formulabuttons[h].skipImagePrefix?"":e.imagePrefix)+e.formulabuttons[h].image,p.style.verticalAlign="middle",p.style.border="1px solid #FFF",p.style.marginLeft="4px",p.title=m(e.formulabuttons[h].tooltip),t.ButtonRegister(e.editor,p,{normalstyle:"border:1px solid #FFF;backgroundColor:#FFF;",hoverstyle:"border:1px solid #CCC;backgroundColor:#FFF;",downstyle:"border:1px solid #000;backgroundColor:#FFF;"},{MouseDown:e.formulabuttons[h].command,Disabled:function(){return e.editor.ECellReadonly()}}),e.formulabarDiv.appendChild(p);var y=$("<input id='searchbarinput' value='' placeholder='Search sheet…'>"),C=$("<span id='searchbar'></span>");C.append("<div id='searchstatus'></div>"),C.append(y);for(h in e.findbuttons)p=document.createElement("img"),p.id=e.idPrefix+h,p.src=e.imagePrefix+e.findbuttons[h].image,p.style.verticalAlign="middle",p.style.border="1px solid #FFF",p.title=m(e.findbuttons[h].tooltip),t.ButtonRegister(e.editor,p,{normalstyle:"border:1px solid #FFF;backgroundColor:#FFF;",hoverstyle:"border:1px solid #CCC;backgroundColor:#FFF;",downstyle:"border:1px solid #000;backgroundColor:#FFF;"},{MouseDown:e.findbuttons[h].command,Disabled:function(){return!1}}),C[0].appendChild(p);for(y.on("input",t.SpreadsheetControl.FindInSheet),y.on("focus",function(){t.Keyboard.passThru=!0}),y.on("blur",function(){t.Keyboard.passThru=!1}),y.keyup(function(e){13==e.keyCode&&(e.shiftKey?t.SpreadsheetControl.SearchUp():t.SpreadsheetControl.SearchDown())}),e.formulabarDiv.appendChild(C[0]),l=0;l<v.length;l++)v[l].oncreate&&v[l].oncreate(e,v[l].name);t.CalculateSheetNonViewHeight(e),e.viewheight=e.height-e.nonviewheight,e.editorDiv=e.editor.CreateTableEditor(e.width,e.viewheight);var w=document.createElement("div");w.id="te_appView",w.appendChild(e.editorDiv),e.editorDiv=w;var x=document.createElement("div");x.id="te_formData",x.style.display="none",e.editorDiv.appendChild(x),e.spreadsheetDiv.appendChild(e.editorDiv),e.formDataViewer=new t.SpreadsheetViewer("te_FormData-"),e.formDataViewer.InitializeSpreadsheetViewer(x.id,180,0,200),e.formDataViewer.editor.ignoreRender=!0;for(c in b){a=b[c].html;for(d in b[c].replacements)a=a.replace(b[c].replacements[d].regex,b[c].replacements[d].replacement);a=a.replace(/\%s\./g,"SocialCalc."),a=a.replace(/\%id\./g,e.idPrefix),a=a.replace(/\%tbt\./g,e.toolbartext),a=a.replace(/\%img\./g,e.imagePrefix),u=document.createElement("div"),t.setStyles(u,b[c].divStyle),u.style.display="none",u.style.width=e.width+"px",u.style.height=e.viewheight+"px",u.id=e.idPrefix+b[c].name+"view",a=g(a),u.innerHTML=a,e.spreadsheetDiv.appendChild(u),b[c].element=u,b[c].oncreate&&b[c].oncreate(e,b[c])}if(b.sheet={name:"sheet",element:e.editorDiv},e.statuslineDiv=document.createElement("div"),e.statuslineDiv.style.cssText=e.statuslineCSS,e.statuslineDiv.style.height=e.statuslineheight-(e.statuslineDiv.style.paddingTop.slice(0,-2)-0)-(e.statuslineDiv.style.paddingBottom.slice(0,-2)-0)+"px",e.statuslineDiv.id=e.idPrefix+"statusline",e.spreadsheetDiv.appendChild(e.statuslineDiv),e.spreadsheetDiv.addEventListener)e.spreadsheetDiv.addEventListener("mousedown",function(){t.SetSpreadsheetControlObject(e)},!1),e.spreadsheetDiv.addEventListener("mouseover",function(){t.SetSpreadsheetControlObject(e)},!1);else{if(!e.spreadsheetDiv.attachEvent)throw t.Constants.s_BrowserNotSupported;e.spreadsheetDiv.attachEvent("onmousedown",function(){t.SetSpreadsheetControlObject(e)}),e.spreadsheetDiv.attachEvent("onmouseover",function(){t.SetSpreadsheetControlObject(e)})}},t.CalculateSheetNonViewHeight=function(e){e.nonviewheight=e.statuslineheight;for(var t=0;t<e.spreadsheetDiv.childNodes.length;t++)"SocialCalc-statusline"!=e.spreadsheetDiv.childNodes[t].id&&(e.nonviewheight+=e.spreadsheetDiv.childNodes[t].offsetHeight)},t.LocalizeString=function(e){var o=t.LocalizeStringList[e];return o||(o=t.Constants["s_loc_"+e.toLowerCase().replace(/\s/g,"_").replace(/\W/g,"X")]||e,t.LocalizeStringList[e]=o),o},t.LocalizeStringList={},t.LocalizeSubstrings=function(e){var o=t.LocalizeString;return e.replace(/%(loc|ssc)!(.*?)!/g,function(e,i,n){return"ssc"==i?t.Constants[n]||alert("Missing constant: "+n):o(n)})},t.GetSpreadsheetControlObject=function(){var e=null!=t.CurrentSpreadsheetControlObject?t.CurrentSpreadsheetControlObject:t.CurrentSpreadsheetViewerObject;return e?e:void 0},t.SetSpreadsheetControlObject=function(e){t.CurrentSpreadsheetControlObject=e,t.Keyboard.focusTable&&e&&(t.Keyboard.focusTable=e.editor)},t.DoOnResize=function(e){var t,o=e.views,i=e.SizeSSDiv();if(i){for(vname in o)t=o[vname].element,t.style.width=e.width+"px",t.style.height=e.height-e.nonviewheight+"px";e.editor.ResizeTableEditor(e.width,e.height-e.nonviewheight)}},t.SizeSSDiv=function(e){var o,i,n,r,a,s=10,l=10;return n=!1,o=t.GetViewportInfo(),i=t.GetElementPosition(e.parentNode),i.bottom=0,i.right=0,r=e.parentNode.style,r.marginTop&&(i.top+=r.marginTop.slice(0,-2)-0),r.marginBottom&&(i.bottom+=r.marginBottom.slice(0,-2)-0),r.marginLeft&&(i.left+=r.marginLeft.slice(0,-2)-0),r.marginRight&&(i.right+=r.marginRight.slice(0,-2)-0),a=e.requestedHeight||o.height-(i.top+i.bottom+l)-(e.requestedSpaceBelow||0),e.height!=a&&(e.height=a,e.spreadsheetDiv.style.height=a+"px",n=!0),a=e.requestedWidth||o.width-(i.left+i.right+s)||700,e.width!=a&&(e.width=a,e.spreadsheetDiv.style.width=a+"px",n=!0),e.spreadsheetDiv.style.position="relative",n},t.SetTab=function(e){var o,i,n,r,a,s,l,c={},u={},d=t.GetSpreadsheetControlObject(),h=d.tabs,p=d.views;if(o="string"==typeof e?e:e.id.slice(d.idPrefix.length,-3),d.editor.busy&&(!h[d.currentTab].view||"sheet"==h[d.currentTab].view))for(a=0;a<h.length;a++)if(h[a].name==o&&h[a].view&&"sheet"!=h[a].view)return;for(d.tabs[d.currentTab].onunclick&&d.tabs[d.currentTab].onunclick(d,d.tabs[d.currentTab].name),a=0;a<h.length;a++)i=h[a].name,c[i]=document.getElementById(d.idPrefix+i+"tab"),u[i]=document.getElementById(d.idPrefix+i+"tools"),i==o?(n=a,u[i].style.display="block",c[i].style.cssText=d.tabselectedCSS):(u[i].style.display="none",c[i].style.cssText=d.tabplainCSS);d.currentTab=n,h[n].onclick&&h[n].onclick(d,o);for(s in p)!h[n].view&&"sheet"==s||h[n].view==s?(p[s].element.style.display="block",r=s):p[s].element.style.display="none";h[n].onclickFocus?(l=h[n].onclickFocus,"string"==typeof l&&(l=document.getElementById(d.idPrefix+l),l.focus()),t.CmdGotFocus(l)):t.KeyboardFocus(),p[r].needsresize&&p[r].onresize&&(p[r].needsresize=!1,p[r].onresize(d,p[r])),"sheet"==r?(d.statuslineDiv.style.display="block",d.editor.ScheduleRender()):d.statuslineDiv.style.display="none"},t.SpreadsheetControlStatuslineCallback=function(e,t,o,i){var n,r,a=document.getElementById(i.statuslineid);switch(a&&(a.innerHTML=e.GetStatuslineString(t,o,i)),t){case"cmdendnorender":case"calcfinished":case"doneposcalc":if(n=document.getElementById(i.recalcid1),r=document.getElementById(i.recalcid2),!n||!r)break;"yes"==e.context.sheetobj.attribs.needsrecalc?(n.style.display="inline",r.style.display="inline"):(n.style.display="none",r.style.display="none")}},t.UpdateSortRangeProposal=function(e){var o=document.getElementById(t.GetSpreadsheetControlObject().idPrefix+"sortlist");o.options[0].text=e.range.hasrange?t.crToCoord(e.range.left,e.range.top)+":"+t.crToCoord(e.range.right,e.range.bottom):t.LocalizeString("[select range]")},t.LoadColumnChoosers=function(e){var o,i,n,r,a,s,l,c=t.LocalizeString;e.sortrange&&-1==e.sortrange.indexOf(":")?(i=t.Formula.LookupName(e.sheet,e.sortrange||""),"range"==i.type?(n=i.value.match(/^(.*)\|(.*)\|$/),o=n[1]+":"+n[2]):o="A1:A1"):o=e.sortrange;var u=t.ParseRange(o);s=document.getElementById(e.idPrefix+"majorsort"),l=s.selectedIndex,s.options.length=0,s.options[s.options.length]=new Option(c("[None]"),"");for(var r=u.cr1.col;r<=u.cr2.col;r++)a=t.rcColname(r),s.options[s.options.length]=new Option(c("Column ")+a,a);s.selectedIndex=l>1&&l<=u.cr2.col-u.cr1.col+1?l:1,s=document.getElementById(e.idPrefix+"minorsort"),l=s.selectedIndex,s.options.length=0,s.options[s.options.length]=new Option(c("[None]"),"");for(var r=u.cr1.col;r<=u.cr2.col;r++)a=t.rcColname(r),s.options[s.options.length]=new Option(a,a);s.selectedIndex=l>0&&l<=u.cr2.col-u.cr1.col+1?l:0,s=document.getElementById(e.idPrefix+"lastsort"),l=s.selectedIndex,s.options.length=0,s.options[s.options.length]=new Option(c("[None]"),"");for(var r=u.cr1.col;r<=u.cr2.col;r++)a=t.rcColname(r),s.options[s.options.length]=new Option(a,a);s.selectedIndex=l>0&&l<=u.cr2.col-u.cr1.col+1?l:0},t.CmdGotFocus=function(e){t.Keyboard.passThru=e},t.DoButtonCmd=function(e,o,i){t.DoCmd(i.element,i.functionobj.command)},t.DoCmd=function(e,o){var i,n,r,a,s,l,c,u,d,h,p,f,m,g,v,b,y,C,w,x,_,S=t.GetSpreadsheetControlObject(),k=S.editor;switch(o){case"undo":S.ExecuteCommand("undo","");break;case"redo":S.ExecuteCommand("redo","");break;case"fill-rowcolstuff":case"fill-text":for(r=o.substring(5),s=document.getElementById(S.idPrefix+r+"list"),s.length=0,a=0;a<t.SpreadsheetCmdTable[r].length;a++)s.options[a]=new Option(t.SpreadsheetCmdTable[r][a].t);o="changed-"+r;case"changed-rowcolstuff":case"changed-text":for(r=o.substring(8),s=document.getElementById(S.idPrefix+r+"list"),l=t.SpreadsheetCmdTable.slists[t.SpreadsheetCmdTable[r][s.selectedIndex].s],c=document.getElementById(S.idPrefix+r+"slist"),c.length=0,a=0;a<(l.length||0);a++)c.options[a]=new Option(l[a].t,l[a].s);return;case"ok-rowcolstuff":case"ok-text":r=o.substring(3),s=document.getElementById(S.idPrefix+r+"list"),c=document.getElementById(S.idPrefix+r+"slist"),i=t.SpreadsheetCmdTable[r][s.selectedIndex].c,n=c[c.selectedIndex].value,t.SpreadsheetControlExecuteCommand(e,i,n);break;case"ok-setsort":if(p=document.getElementById(S.idPrefix+"sortlist"),0==p.selectedIndex)S.sortrange=k.range.hasrange?t.crToCoord(k.range.left,k.range.top)+":"+t.crToCoord(k.range.right,k.range.bottom):k.ecell.coord+":"+k.ecell.coord;else{var T=p.options[p.selectedIndex].value;if("all"==T){var F=S.sheet.cells,E=-1,D=-1,P=-1,A=-1;for(var I in F){var M=t.coordToCr(I);(-1==P||M.row<P)&&(P=M.row),(-1==E||M.col<E)&&(E=M.col),(-1==A||M.row>A)&&(A=M.row),(-1==D||M.col>D)&&(D=M.col)}S.sortrange=t.crToCoord(E,P)+":"+t.crToCoord(D,A),p.options[p.selectedIndex].text+=" ("+S.sortrange+")"}else S.sortrange=p.options[p.selectedIndex].value}return f=document.getElementById(S.idPrefix+"sortbutton"),f.value=t.LocalizeString("Sort ")+S.sortrange,f.style.visibility="visible",t.LoadColumnChoosers(S),e&&e.blur&&e.blur(),void t.KeyboardFocus();case"dosort":if(S.sortrange&&-1==S.sortrange.indexOf(":")){if(g=t.Formula.LookupName(S.sheet,S.sortrange||""),"range"!=g.type)return;v=g.value.match(/^(.*)\|(.*)\|$/),m=v[1]+":"+v[2]}else m=S.sortrange;if("A1:A1"==m)return;u="sort "+m+" ",d=document.getElementById(S.idPrefix+"majorsort"),h=document.getElementById(S.idPrefix+"majorsortup"),u+=d.options[d.selectedIndex].value+(h.checked?" up":" down"),d=document.getElementById(S.idPrefix+"minorsort"),d.selectedIndex>0&&(h=document.getElementById(S.idPrefix+"minorsortup"),u+=" "+d.options[d.selectedIndex].value+(h.checked?" up":" down")),d=document.getElementById(S.idPrefix+"lastsort"),d.selectedIndex>0&&(h=document.getElementById(S.idPrefix+"lastsortup"),u+=" "+d.options[d.selectedIndex].value+(h.checked?" up":" down")),S.ExecuteCommand(u,"");break;case"merge":i=t.SpreadsheetCmdLookup[o]||"",n=t.SpreadsheetCmdSLookup[o]||"",S.ExecuteCommand(i,n),k.range.hasrange&&(k.MoveECell(t.crToCoord(k.range.left,k.range.top)),k.RangeRemove());break;case"movefrom":k.range2.hasrange?(S.context.cursorsuffix="",k.Range2Remove(),S.ExecuteCommand("redisplay","")):k.range.hasrange?(k.range2.top=k.range.top,k.range2.right=k.range.right,k.range2.bottom=k.range.bottom,k.range2.left=k.range.left,k.range2.hasrange=!0,k.MoveECell(t.crToCoord(k.range.left,k.range.top))):(k.range2.top=k.ecell.row,k.range2.right=k.ecell.col,k.range2.bottom=k.ecell.row,k.range2.left=k.ecell.col,k.range2.hasrange=!0),u=k.range2.hasrange?"":"off",f=document.getElementById(S.idPrefix+"button_movefrom"),f.src=S.imagePrefix+"movefrom"+u+".gif",f=document.getElementById(S.idPrefix+"button_movepaste"),f.src=S.imagePrefix+"movepaste"+u+".gif",f=document.getElementById(S.idPrefix+"button_moveinsert"),f.src=S.imagePrefix+"moveinsert"+u+".gif",k.range2.hasrange&&k.RangeRemove();break;case"movepaste":case"moveinsert":k.range2.hasrange&&(S.context.cursorsuffix="",i=o+" "+t.crToCoord(k.range2.left,k.range2.top)+":"+t.crToCoord(k.range2.right,k.range2.bottom)+" "+k.ecell.coord,S.ExecuteCommand(i,""),k.Range2Remove(),f=document.getElementById(S.idPrefix+"button_movefrom"),f.src=S.imagePrefix+"movefromoff.gif",f=document.getElementById(S.idPrefix+"button_movepaste"),f.src=S.imagePrefix+"movepasteoff.gif",f=document.getElementById(S.idPrefix+"button_moveinsert"),f.src=S.imagePrefix+"moveinsertoff.gif");break;case"swapcolors":b=S.sheet,y=b.GetAssuredCell(k.ecell.coord),x=b.attribs.defaultcolor?b.colors[b.attribs.defaultcolor]:"rgb(0,0,0)",_=b.attribs.defaultbgcolor?b.colors[b.attribs.defaultbgcolor]:"rgb(255,255,255)",C=y.color?b.colors[y.color]:x,C==_&&(C=""),w=y.bgcolor?b.colors[y.bgcolor]:_,w==x&&(w=""),S.ExecuteCommand("set %C color "+w+"%Nset %C bgcolor "+C,"");break;default:i=t.SpreadsheetCmdLookup[o]||"",n=t.SpreadsheetCmdSLookup[o]||"",S.ExecuteCommand(i,n)}e&&e.blur&&e.blur(),t.KeyboardFocus()},t.SpreadsheetCmdLookup={copy:"copy %C all",cut:"cut %C all",paste:"paste %C all",pasteformats:"paste %C formats",lock:"set %C readonly yes",unlock:"set %C readonly no","delete":"erase %C formulas",filldown:"filldown %C all",fillright:"fillright %C all",erase:"erase %C all",borderon:"set %C bt %S%Nset %C br %S%Nset %C bb %S%Nset %C bl %S",borderoff:"set %C bt %S%Nset %C br %S%Nset %C bb %S%Nset %C bl %S",merge:"merge %C",unmerge:"unmerge %C","align-left":"set %C cellformat left","align-center":"set %C cellformat center","align-right":"set %C cellformat right","align-default":"set %C cellformat",insertrow:"insertrow %C",insertcol:"insertcol %C",deleterow:"deleterow %C",deletecol:"deletecol %C",hiderow:"set %H hide yes",hidecol:"set %W hide yes",undo:"undo",redo:"redo",recalc:"recalc"},t.SpreadsheetCmdSLookup={borderon:"1px solid rgb(0,0,0)",borderoff:""},t.SpreadsheetControlExecuteCommand=function(e,o,i){var n=t.GetSpreadsheetControlObject(),r=n.editor,a={};a.P="%",a.N="\n",r.range.hasrange?(a.R=t.crToCoord(r.range.left,r.range.top)+":"+t.crToCoord(r.range.right,r.range.bottom),a.C=a.R,a.W=t.rcColname(r.range.left)+":"+t.rcColname(r.range.right),a.H=r.range.top+":"+r.range.bottom):r.ecell?(a.C=r.ecell.coord,a.R=r.ecell.coord+":"+r.ecell.coord,a.W=t.rcColname(t.coordToCr(r.ecell.coord).col),a.H=t.coordToCr(r.ecell.coord).row):(a.C="A1",a.R="A1:A1",a.W=t.rcColname(t.coordToCr("A1").col),a.H=t.coordToCr("A1").row),a.S=i,o=o.replace(/%C/g,a.C),o=o.replace(/%R/g,a.R),o=o.replace(/%N/g,a.N),o=o.replace(/%S/g,a.S),o=o.replace(/%W/g,a.W),o=o.replace(/%H/g,a.H),o=o.replace(/%P/g,a.P),r.EditorScheduleSheetCommands(o,!0,!1)},t.SpreadsheetControlCreateSheetHTML=function(e){var o,i,n,r="";return o=new t.RenderContext(e.sheet),i=document.createElement("div"),n=o.RenderSheet(null,{type:"html"}),i.appendChild(n),delete o,r=i.innerHTML,delete n,delete i,r},t.SpreadsheetControlCreateCellHTML=function(e,o,i){var n="",r=e.sheet.cells[o];return r?(n=void 0==r.displaystring?t.FormatValueForDisplay(e.sheet,r.datavalue,o,i||e.context.defaultHTMLlinkstyle):r.displaystring,"&nbsp;"==n&&(n=""),n):""},t.SpreadsheetControlCreateCellHTMLSave=function(e,o,i){var n,r,a,s,l,c,u,d,h=[];for(d=o?t.ParseRange(o):{cr1:{row:1,col:1},cr2:{row:e.sheet.attribs.lastrow,col:e.sheet.attribs.lastcol}},n=d.cr1,r=d.cr2,h.push("version:1.0"),a=n.row;a<=r.row;a++)for(s=n.col;s<=r.col;s++)l=t.crToCoord(s,a),c=e.sheet.cells[l],c&&(u=void 0==c.displaystring?t.FormatValueForDisplay(e.sheet,c.datavalue,l,i||e.context.defaultHTMLlinkstyle):c.displaystring,"&nbsp;"!=u&&h.push(l+":"+t.encodeForSave(u)));return h.push(""),h.join("\n")},t.SpreadsheetControl.DoFunctionList=function(){var e,o,i,n=t.Formula,r=t.Constants,a=r.function_classlist,s=t.GetSpreadsheetControlObject(),l=s.idPrefix+"function";if(i=document.getElementById(l+"dialog"),!i){for(n.FillFunctionInfo(),o='<table><tr><td><span style="font-size:x-small;font-weight:bold">%loc!Category!</span><br><select id="'+l+'class" size="'+a.length+'" style="width:120px;" onchange="SocialCalc.SpreadsheetControl.FunctionClassChosen(this.options[this.selectedIndex].value);">',e=0;e<a.length;e++)o+='<option value="'+a[e]+'"'+(0==e?" selected>":">")+t.special_chars(n.FunctionClasses[a[e]].name)+"</option>";o+='</select></td><td>&nbsp;&nbsp;</td><td id="'+l+'list"><span style="font-size:x-small;font-weight:bold">%loc!Functions!</span><br><select id="'+l+'name" size="'+a.length+'" style="width:240px;" onchange="SocialCalc.SpreadsheetControl.FunctionChosen(this.options[this.selectedIndex].value);" ondblclick="SocialCalc.SpreadsheetControl.DoFunctionPaste();">',o+=t.SpreadsheetControl.GetFunctionNamesStr("all"),o+='</td></tr><tr><td colspan="3"><div id="'+l+'desc" style="width:380px;height:80px;overflow:auto;font-size:x-small;">'+t.SpreadsheetControl.GetFunctionInfoStr(n.FunctionClasses[a[0]].items[0])+'</div><div style="width:380px;text-align:right;padding-top:6px;font-size:small;"><input type="button" value="%loc!Paste!" style="font-size:smaller;" onclick="SocialCalc.SpreadsheetControl.DoFunctionPaste();">&nbsp;<input type="button" value="%loc!Cancel!" style="font-size:smaller;" onclick="SocialCalc.SpreadsheetControl.HideFunctions();"></div></td></tr></table>';var c=document.createElement("div");c.id=l+"dialog",c.style.position="absolute";var u=t.GetViewportInfo(),d=t.GetElementPositionWithScroll(s.spreadsheetDiv);c.style.top=u.height/3-d.top+"px",c.style.left=u.width/3-d.left+"px",c.style.zIndex=100,c.style.backgroundColor="#FFF",c.style.border="1px solid black",c.style.width="400px",o='<table cellspacing="0" cellpadding="0" style="border-bottom:1px solid black;"><tr><td style="font-size:10px;cursor:default;width:100%;background-color:#999;color:#FFF;">&nbsp;%loc!Function List!</td><td style="font-size:10px;cursor:default;color:#666;" onclick="SocialCalc.SpreadsheetControl.HideFunctions();">&nbsp;X&nbsp;</td></tr></table><div style="background-color:#DDD;">'+o+"</div>",o=t.LocalizeSubstrings(o),c.innerHTML=o,t.DragRegister(c.firstChild.firstChild.firstChild.firstChild,!0,!0,{MouseDown:t.DragFunctionStart,MouseMove:t.DragFunctionPosition,MouseUp:t.DragFunctionPosition,Disabled:null,positionobj:c},s.spreadsheetDiv),s.spreadsheetDiv.appendChild(c),i=document.getElementById(l+"name"),i.focus(),t.CmdGotFocus(i)}},t.SpreadsheetControl.GetFunctionNamesStr=function(e){var o,i,n=t.Formula,r="";for(i=n.FunctionClasses[e],o=0;o<i.items.length;o++)r+='<option value="'+i.items[o]+'"'+(0==o?" selected>":">")+i.items[o]+"</option>";return r},t.SpreadsheetControl.FillFunctionNames=function(e,o){var i,n,r=t.Formula;for(o.length=0,n=r.FunctionClasses[e],i=0;i<n.items.length;i++)o.options[i]=new Option(n.items[i],n.items[i]),0==i&&(o.options[i].selected=!0)},t.SpreadsheetControl.GetFunctionInfoStr=function(e){var o=t.Formula,i=o.FunctionList[e],n=t.special_chars,r="<b>"+e+"("+n(o.FunctionArgString(e))+")</b><br>";return r+=n(i[3])},t.SpreadsheetControl.FunctionClassChosen=function(e){var o=t.GetSpreadsheetControlObject(),i=o.idPrefix+"function",n=t.Formula;t.SpreadsheetControl.FillFunctionNames(e,document.getElementById(i+"name")),t.SpreadsheetControl.FunctionChosen(n.FunctionClasses[e].items[0])},t.SpreadsheetControl.FunctionChosen=function(e){var o=t.GetSpreadsheetControlObject(),i=o.idPrefix+"function";document.getElementById(i+"desc").innerHTML=t.SpreadsheetControl.GetFunctionInfoStr(e)},t.SpreadsheetControl.HideFunctions=function(){var e=t.GetSpreadsheetControlObject(),o=document.getElementById(e.idPrefix+"functiondialog");o.innerHTML="",t.DragUnregister(o),t.KeyboardFocus(),o.parentNode&&o.parentNode.removeChild(o)},t.SpreadsheetControl.DoFunctionPaste=function(){var e=t.GetSpreadsheetControlObject(),o=e.editor,i=document.getElementById(e.idPrefix+"functionname"),n=document.getElementById(e.idPrefix+"multilinetextarea"),r=i.value+"(";t.SpreadsheetControl.HideFunctions(),n?(n.value+=r,n.focus(),t.CmdGotFocus(n)):o.EditorAddToInput(r,"=")},t.SpreadsheetControl.DoMultiline=function(){var e,o,i,n=t.LocalizeSubstrings,r=(t.Constants,t.GetSpreadsheetControlObject()),a=r.editor,s=a.workingvalues,r=t.GetSpreadsheetControlObject(),l=r.idPrefix+"multiline";if(o=document.getElementById(l+"dialog"),!o){switch(a.state){case"start":s.ecoord=a.ecell.coord,s.erow=a.ecell.row,s.ecol=a.ecell.col,a.RangeRemove(),i=t.GetCellContents(a.context.sheetobj,s.ecoord);break;case"input":case"inputboxdirect":i=a.inputBox.GetText()}a.inputBox.element.disabled=!0,i=t.special_chars(i),e='<textarea id="'+l+'textarea" style="width:380px;height:120px;margin:10px 0px 0px 6px;">'+i+'</textarea><div style="width:380px;text-align:right;padding:6px 0px 4px 6px;font-size:small;">'+n('<input type="button" value="%loc!Set Cell Contents!" style="font-size:smaller;" onclick="SocialCalc.SpreadsheetControl.DoMultilinePaste();">&nbsp;<input type="button" value="%loc!Clear!" style="font-size:smaller;" onclick="SocialCalc.SpreadsheetControl.DoMultilineClear();">&nbsp;<input type="button" value="%loc!Cancel!" style="font-size:smaller;" onclick="SocialCalc.SpreadsheetControl.HideMultiline();"></div></div>');var c=document.createElement("div");c.id=l+"dialog",c.style.position="absolute";var u=t.GetViewportInfo(),d=t.GetElementPositionWithScroll(r.spreadsheetDiv);c.style.top=u.height/3-d.top+"px",c.style.left=u.width/3-d.left+"px",c.style.zIndex=100,c.style.backgroundColor="#FFF",c.style.border="1px solid black",c.style.width="400px",c.innerHTML='<table cellspacing="0" cellpadding="0" style="border-bottom:1px solid black;"><tr><td style="font-size:10px;cursor:default;width:100%;background-color:#999;color:#FFF;">'+n("&nbsp;%loc!Multi-line Input Box!")+'</td><td style="font-size:10px;cursor:default;color:#666;" onclick="SocialCalc.SpreadsheetControl.HideMultiline();">&nbsp;X&nbsp;</td></tr></table><div style="background-color:#DDD;">'+e+"</div>",t.DragRegister(c.firstChild.firstChild.firstChild.firstChild,!0,!0,{MouseDown:t.DragFunctionStart,MouseMove:t.DragFunctionPosition,MouseUp:t.DragFunctionPosition,Disabled:null,positionobj:c},r.spreadsheetDiv),r.spreadsheetDiv.appendChild(c),o=document.getElementById(l+"textarea"),o.focus(),t.CmdGotFocus(o)}},t.SpreadsheetControl.HideMultiline=function(){var e=(t.Constants,t.GetSpreadsheetControlObject()),o=e.editor,i=document.getElementById(e.idPrefix+"multilinedialog");switch(i.innerHTML="",t.DragUnregister(i),t.KeyboardFocus(),i.parentNode&&i.parentNode.removeChild(i),o.state){case"start":o.inputBox.DisplayCellContents(null);break;case"input":case"inputboxdirect":o.inputBox.element.disabled=!1,o.inputBox.Focus()}},t.SpreadsheetControl.DoMultilineClear=function(){var e=t.GetSpreadsheetControlObject(),o=document.getElementById(e.idPrefix+"multilinetextarea");o.value="",o.focus()},t.SpreadsheetControl.DoMultilinePaste=function(){var e=t.GetSpreadsheetControlObject(),o=e.editor,i=o.workingvalues,n=document.getElementById(e.idPrefix+"multilinetextarea"),r=n.value;switch(t.SpreadsheetControl.HideMultiline(),o.state){case"start":i.partialexpr="",i.ecoord=o.ecell.coord,i.erow=o.ecell.row,i.ecol=o.ecell.col;break;case"input":case"inputboxdirect":o.inputBox.Blur(),o.inputBox.ShowInputBox(!1),o.state="start"}o.EditorSaveEdit(r)},t.SpreadsheetControl.DoLink=function(){var e,o,i,n,r,a,s=t.LocalizeString,l=(t.Constants,t.GetSpreadsheetControlObject()),c=l.editor,u=c.workingvalues,l=t.GetSpreadsheetControlObject(),d=l.idPrefix+"link";if(o=document.getElementById(d+"dialog"),!o){switch(c.state){case"start":u.ecoord=c.ecell.coord,u.erow=c.ecell.row,u.ecol=c.ecell.col,c.RangeRemove(),i=t.GetCellContents(c.context.sheetobj,u.ecoord);break;case"input":case"inputboxdirect":i=c.inputBox.GetText()}c.inputBox.element.disabled=!0,"'"==i.charAt(0)&&(i=i.slice(1));var h=t.ParseCellLinkText(i);i=t.special_chars(i),n=l.sheet.cells[c.ecell.coord],r=n&&n.textvalueformat?"":" checked",a=h.newwin?" checked":"",e='<div style="padding:6px 0px 4px 6px;"><span style="font-size:smaller;">'+s("Description")+'</span><br><input type="text" id="'+d+'desc" style="width:380px;" value="'+t.special_chars(h.desc)+'"><br><span style="font-size:smaller;">'+s("URL")+'</span><br><input type="text" id="'+d+'url" style="width:380px;" value="'+t.special_chars(h.url)+'"><br>',t.Callbacks.MakePageLink&&(e+='<span style="font-size:smaller;">'+s("Page Name")+'</span><br><input type="text" id="'+d+'pagename" style="width:380px;" value="'+t.special_chars(h.pagename)+'"><br><span style="font-size:smaller;">'+s("Workspace")+'</span><br><input type="text" id="'+d+'workspace" style="width:380px;" value="'+t.special_chars(h.workspace)+'"><br>'),e+=t.LocalizeSubstrings('<input type="checkbox" id="'+d+'format"'+r+'>&nbsp;<span style="font-size:smaller;">%loc!Set to Link format!</span><br><input type="checkbox" id="'+d+'popup"'+a+'>&nbsp;<span style="font-size:smaller;">%loc!Show in new browser window!</span></div><div style="width:380px;text-align:right;padding:6px 0px 4px 6px;font-size:small;"><input type="button" value="%loc!Set Cell Contents!" style="font-size:smaller;" onclick="SocialCalc.SpreadsheetControl.DoLinkPaste();">&nbsp;<input type="button" value="%loc!Clear!" style="font-size:smaller;" onclick="SocialCalc.SpreadsheetControl.DoLinkClear();">&nbsp;<input type="button" value="%loc!Cancel!" style="font-size:smaller;" onclick="SocialCalc.SpreadsheetControl.HideLink();"></div></div>');var p=document.createElement("div");p.id=d+"dialog",p.style.position="absolute";var f=t.GetViewportInfo(),m=t.GetElementPositionWithScroll(l.spreadsheetDiv);p.style.top=f.height/3-m.top+"px",p.style.left=f.width/3-m.left+"px",p.style.zIndex=100,p.style.backgroundColor="#FFF",p.style.border="1px solid black",p.style.width="400px",p.innerHTML='<table cellspacing="0" cellpadding="0" style="border-bottom:1px solid black;"><tr><td style="font-size:10px;cursor:default;width:100%;background-color:#999;color:#FFF;">&nbsp;'+s("Link Input Box")+'</td><td style="font-size:10px;cursor:default;color:#666;" onclick="SocialCalc.SpreadsheetControl.HideLink();">&nbsp;X&nbsp;</td></tr></table><div style="background-color:#DDD;">'+e+"</div>",t.DragRegister(p.firstChild.firstChild.firstChild.firstChild,!0,!0,{MouseDown:t.DragFunctionStart,MouseMove:t.DragFunctionPosition,MouseUp:t.DragFunctionPosition,Disabled:null,positionobj:p},l.spreadsheetDiv),l.spreadsheetDiv.appendChild(p),o=document.getElementById(d+"url"),o.focus(),t.CmdGotFocus(o)}},t.SpreadsheetControl.HideLink=function(){var e=(t.Constants,t.GetSpreadsheetControlObject()),o=e.editor,i=document.getElementById(e.idPrefix+"linkdialog");switch(i.innerHTML="",t.DragUnregister(i),t.KeyboardFocus(),i.parentNode&&i.parentNode.removeChild(i),o.state){case"start":o.inputBox.DisplayCellContents(null);break;case"input":case"inputboxdirect":o.inputBox.element.disabled=!1,o.inputBox.Focus()}},t.SpreadsheetControl.DoLinkClear=function(){var e=t.GetSpreadsheetControlObject();
-document.getElementById(e.idPrefix+"linkdesc").value="",document.getElementById(e.idPrefix+"linkpagename").value="",document.getElementById(e.idPrefix+"linkworkspace").value="";var o=document.getElementById(e.idPrefix+"linkurl");o.value="",o.focus()},t.SpreadsheetControl.DoLinkPaste=function(){var e,o,i,n,r=t.GetSpreadsheetControlObject(),a=r.editor,s=a.workingvalues,l=document.getElementById(r.idPrefix+"linkdesc"),c=document.getElementById(r.idPrefix+"linkurl"),u=document.getElementById(r.idPrefix+"linkpagename"),d=document.getElementById(r.idPrefix+"linkworkspace"),h=document.getElementById(r.idPrefix+"linkformat"),p=document.getElementById(r.idPrefix+"linkpopup"),f="";switch(p.checked?(e="<<",o=">>",i="[[",n="]]"):(e="<",o=">",i="[",n="]"),f=u&&u.value?d.value?l.value+"{"+d.value+i+u.value+n+"}":l.value+i+u.value+n:l.value+e+c.value+o,t.SpreadsheetControl.HideLink(),a.state){case"start":s.partialexpr="",s.ecoord=a.ecell.coord,s.erow=a.ecell.row,s.ecol=a.ecell.col;break;case"input":case"inputboxdirect":a.inputBox.Blur(),a.inputBox.ShowInputBox(!1),a.state="start"}h.checked&&t.SpreadsheetControlExecuteCommand(null,"set %C textvalueformat text-link",""),a.EditorSaveEdit(f)},t.SpreadsheetControl.DoSum=function(){var e,o,i,n,r,a,s,l=t.GetSpreadsheetControlObject(),c=l.editor,u=c.context.sheetobj;if(c.range.hasrange)r=t.crToCoord(c.range.left,c.range.top)+":"+t.crToCoord(c.range.right,c.range.bottom),e="set "+t.crToCoord(c.range.right,c.range.bottom+1)+" formula sum("+r+")";else if(i=c.ecell.row-1,n=c.ecell.col,1>=i)e="set "+c.ecell.coord+" constant e#REF! 0 #REF!";else{for(s=!1;i>0;){if(a=t.crToCoord(n,i),o=u.GetAssuredCell(a),o.datatype&&"t"!=o.datatype)s=!0;else if(s){i++;break}i--}e="set "+c.ecell.coord+" formula sum("+t.crToCoord(n,i)+":"+t.crToCoord(n,c.ecell.row-1)+")"}c.EditorScheduleSheetCommands(e,!0,!1)},t.SpreadsheetControl.FindInSheet=function(){var e=$("#searchstatus"),o=t.GetSpreadsheetControlObject();if(!this.value.length)return e.text(""),o.sheet.search_cells=[],void(o.sheet.selected_search_cell=void 0);var i,n,r=o.sheet.cells,a=new RegExp(this.value,"im"),s=[];for(var l in r){i=r[l];var c=t.coordToCr(l);"yes"!==o.sheet.rowattribs.hide[c.row]&&"yes"!==o.sheet.colattribs.hide[t.rcColname(c.col)]&&(n="c"===i.datatype?i.displaystring:String(i.datavalue),void 0!==n&&n.match(a)&&s.push(l))}o.sheet.search_cells=s,s.length?(o.sheet.selected_search_cell=0,o.editor.MoveECell(s[0]),e.text("1 of "+s.length)):(o.sheet.selected_search_cell=void 0,e.text("No Matches"))},t.SpreadsheetControl.SearchSheet=function(e){var o=t.GetSpreadsheetControlObject(),i=o.sheet,n=i.search_cells;if(n.length){var r=i.selected_search_cell;r===(0===e?0:n.length-1)?r=0===e?n.length-1:0:r+=0===e?-1:1;var a=n[r];i.selected_search_cell=r,o.editor.MoveECell(a),document.getElementById("searchstatus").textContent=String(r+1)+" of "+n.length}},t.SpreadsheetControl.SearchUp=function(){t.SpreadsheetControl.SearchSheet(0)},t.SpreadsheetControl.SearchDown=function(){t.SpreadsheetControl.SearchSheet(1)},t.SpreadsheetControlSortOnclick=function(e){var o,i,n=[],r=document.getElementById(e.idPrefix+"sortlist");t.LoadColumnChoosers(e),e.editor.RangeChangeCallback.sort=t.UpdateSortRangeProposal;for(o in e.sheet.names)n.push(o);for(n.sort(),r.length=0,r.options[0]=new Option(t.LocalizeString("[select range]")),r.options[1]=new Option(t.LocalizeString("Sort All"),"all"),n_options=r.options.length,i=0;i<n.length;i++)o=n[i],r.options[i+n_options]=new Option(o,o),o==e.sortrange&&(r.options[i+n_options].selected=!0);""==e.sortrange&&(r.options[0].selected=!0),t.UpdateSortRangeProposal(e.editor),t.KeyboardFocus()},t.SpreadsheetControlSortSave=function(){var e,o,i,n=t.GetSpreadsheetControlObject();return e="sort:"+t.encodeForSave(n.sortrange)+":",o=document.getElementById(n.idPrefix+"majorsort"),i=document.getElementById(n.idPrefix+"majorsortup"),e+=o.selectedIndex+(i.checked?":up":":down"),o=document.getElementById(n.idPrefix+"minorsort"),o.selectedIndex>0?(i=document.getElementById(n.idPrefix+"minorsortup"),e+=":"+o.selectedIndex+(i.checked?":up":":down")):e+="::",o=document.getElementById(n.idPrefix+"lastsort"),o.selectedIndex>0?(i=document.getElementById(n.idPrefix+"lastsortup"),e+=":"+o.selectedIndex+(i.checked?":up":":down")):e+="::",e+"\n"},t.SpreadsheetControlSortLoad=function(e,o,i){var n,r,a=t.GetSpreadsheetControlObject();return n=i.split(":"),a.sortrange=t.decodeFromSave(n[1]),r=document.getElementById(a.idPrefix+"sortbutton"),a.sortrange?(r.value=t.LocalizeString("Sort ")+a.sortrange,r.style.visibility="visible"):r.style.visibility="hidden",t.LoadColumnChoosers(a),sele=document.getElementById(a.idPrefix+"majorsort"),sele.selectedIndex=n[2]-0,document.getElementById(a.idPrefix+"majorsort"+n[3]).checked=!0,sele=document.getElementById(a.idPrefix+"minorsort"),n[4]?(sele.selectedIndex=n[4]-0,document.getElementById(a.idPrefix+"minorsort"+n[5]).checked=!0):(sele.selectedIndex=0,document.getElementById(a.idPrefix+"minorsortup").checked=!0),sele=document.getElementById(a.idPrefix+"lastsort"),n[6]?(sele.selectedIndex=n[6]-0,document.getElementById(a.idPrefix+"lastsort"+n[7]).checked=!0):(sele.selectedIndex=0,document.getElementById(a.idPrefix+"lastsortup").checked=!0),!0},t.SpreadsheetControlCommentOnclick=function(e,o){e.editor.MoveECellCallback.comment=t.SpreadsheetControlCommentMoveECell,t.SpreadsheetControlCommentDisplay(e,o),t.KeyboardFocus()},t.SpreadsheetControlCommentDisplay=function(e){var t="";e.editor.ecell&&e.editor.ecell.coord&&e.sheet.cells[e.editor.ecell.coord]&&(t=e.sheet.cells[e.editor.ecell.coord].comment||""),document.getElementById(e.idPrefix+"commenttext").value=t},t.SpreadsheetControlCommentMoveECell=function(){t.SpreadsheetControlCommentDisplay(t.GetSpreadsheetControlObject(),"comment")},t.SpreadsheetControlCommentSet=function(){var e=t.GetSpreadsheetControlObject();e.ExecuteCommand("set %C comment "+t.encodeForSave(document.getElementById(e.idPrefix+"commenttext").value));var o=t.GetEditorCellElement(e.editor,e.editor.ecell.row,e.editor.ecell.col);e.editor.ECellReadonly()||(o.element.title=document.getElementById(e.idPrefix+"commenttext").value,e.editor.UpdateCellCSS(o,e.editor.ecell.row,e.editor.ecell.col)),t.KeyboardFocus()},t.SpreadsheetControlCommentOnunclick=function(e){delete e.editor.MoveECellCallback.comment},t.SpreadsheetControlNamesOnclick=function(e){document.getElementById(e.idPrefix+"namesname").value="",document.getElementById(e.idPrefix+"namesdesc").value="",document.getElementById(e.idPrefix+"namesvalue").value="",e.editor.RangeChangeCallback.names=t.SpreadsheetControlNamesRangeChange,e.editor.MoveECellCallback.names=t.SpreadsheetControlNamesRangeChange,t.SpreadsheetControlNamesRangeChange(e.editor),t.SpreadsheetControlNamesFillNameList(),t.SpreadsheetControlNamesChangedName()},t.SpreadsheetControlNamesFillNameList=function(){var e,o,i=t.LocalizeString,n=[],r=t.GetSpreadsheetControlObject(),a=document.getElementById(r.idPrefix+"nameslist"),s=document.getElementById(r.idPrefix+"namesname").value.toUpperCase().replace(/[^A-Z0-9_\.]/g,"");for(e in r.sheet.names)n.push(e);for(n.sort(),a.length=0,a.options[0]=new Option(n.length>0?i("[New]"):i("[None]")),o=0;o<n.length;o++)e=n[o],a.options[o+1]=new Option(e,e),e==s&&(a.options[o+1].selected=!0);""==s&&(a.options[0].selected=!0)},t.SpreadsheetControlNamesChangedName=function(){var e=t.GetSpreadsheetControlObject(),o=document.getElementById(e.idPrefix+"nameslist"),i=o.options[o.selectedIndex].value;e.sheet.names[i]?(document.getElementById(e.idPrefix+"namesname").value=i,document.getElementById(e.idPrefix+"namesdesc").value=e.sheet.names[i].desc||"",document.getElementById(e.idPrefix+"namesvalue").value=e.sheet.names[i].definition||""):(document.getElementById(e.idPrefix+"namesname").value="",document.getElementById(e.idPrefix+"namesdesc").value="",document.getElementById(e.idPrefix+"namesvalue").value="")},t.SpreadsheetControlNamesRangeChange=function(e){var o=t.GetSpreadsheetControlObject(),i=document.getElementById(o.idPrefix+"namesrangeproposal");i.value=e.range.hasrange?t.crToCoord(e.range.left,e.range.top)+":"+t.crToCoord(e.range.right,e.range.bottom):e.ecell.coord},t.SpreadsheetControlNamesOnunclick=function(e){delete e.editor.RangeChangeCallback.names,delete e.editor.MoveECellCallback.names},t.SpreadsheetControlNamesSetValue=function(){var e=t.GetSpreadsheetControlObject();document.getElementById(e.idPrefix+"namesvalue").value=document.getElementById(e.idPrefix+"namesrangeproposal").value,t.KeyboardFocus()},t.SpreadsheetControlNamesSave=function(){var e=t.GetSpreadsheetControlObject(),o=document.getElementById(e.idPrefix+"namesname").value;t.SetTab(e.tabs[0].name),t.KeyboardFocus(),""!=o&&e.ExecuteCommand("name define "+o+" "+document.getElementById(e.idPrefix+"namesvalue").value+"\nname desc "+o+" "+document.getElementById(e.idPrefix+"namesdesc").value)},t.SpreadsheetControlNamesDelete=function(){var e=t.GetSpreadsheetControlObject(),o=document.getElementById(e.idPrefix+"namesname").value;t.SetTab(e.tabs[0].name),t.KeyboardFocus(),""!=o&&e.ExecuteCommand("name delete "+o),t.KeyboardFocus()},t.SpreadsheetControlClipboardOnclick=function(e){var e=t.GetSpreadsheetControlObject();clipele=document.getElementById(e.idPrefix+"clipboardtext"),document.getElementById(e.idPrefix+"clipboardformat-tab").checked=!0;try{clipele.value=t.ConvertSaveToOtherFormat(t.Clipboard.clipboard,"tab")}catch(o){console.error(o)}},t.SpreadsheetControlClipboardFormat=function(e){var o=t.GetSpreadsheetControlObject();clipele=document.getElementById(o.idPrefix+"clipboardtext"),clipele.value=t.ConvertSaveToOtherFormat(t.Clipboard.clipboard,e)},t.SpreadsheetControlClipboardLoad=function(){var e=t.GetSpreadsheetControlObject(),o="tab";t.SetTab(e.tabs[0].name),t.KeyboardFocus(),document.getElementById(e.idPrefix+"clipboardformat-csv").checked?o="csv":document.getElementById(e.idPrefix+"clipboardformat-scsave").checked&&(o="scsave"),e.editor.pastescclipboard=!0,e.editor.EditorScheduleSheetCommands("loadclipboard "+t.encodeForSave(t.ConvertOtherFormatToSave(document.getElementById(e.idPrefix+"clipboardtext").value,o)),!0,!1)},t.SpreadsheetControlClipboardClear=function(){var e=t.GetSpreadsheetControlObject(),o=document.getElementById(e.idPrefix+"clipboardtext");o.value="",e.editor.EditorScheduleSheetCommands("clearclipboard",!0,!1),o.focus()},t.SpreadsheetControlClipboardExport=function(){var e=t.GetSpreadsheetControlObject();e.ExportCallback&&e.ExportCallback(e),t.SetTab(e.tabs[0].name),t.KeyboardFocus()},t.SpreadsheetControlSettingsSwitch=function(e){t.SettingControlReset();var o=t.GetSpreadsheetControlObject(),i=document.getElementById(o.idPrefix+"sheetsettingstable"),n=document.getElementById(o.idPrefix+"cellsettingstable"),r=document.getElementById(o.idPrefix+"sheetsettingstoolbar"),a=document.getElementById(o.idPrefix+"cellsettingstoolbar");"sheet"==e?(i.style.display="block",n.style.display="none",r.style.display="block",a.style.display="none",t.SettingsControlSetCurrentPanel(o.views.settings.values.sheetspanel)):(i.style.display="none",n.style.display="block",r.style.display="none",a.style.display="block",t.SettingsControlSetCurrentPanel(o.views.settings.values.cellspanel))},t.SettingsControlSave=function(e){var o,i,n=t.GetSpreadsheetControlObject(),r=t.SettingsControls,a=r.CurrentPanel,s=t.SettingsControlUnloadPanel(a);t.SetTab(n.tabs[0].name),t.KeyboardFocus(),"sheet"==e?i=n.sheet.DecodeSheetAttributes(s):"cell"==e&&(n.editor.range.hasrange&&(o=t.crToCoord(n.editor.range.left,n.editor.range.top)+":"+t.crToCoord(n.editor.range.right,n.editor.range.bottom)),i=n.sheet.DecodeCellAttributes(n.editor.ecell.coord,s,o)),i&&n.editor.EditorScheduleSheetCommands(i,!0,!1)},t.SpreadsheetControlCreateSpreadsheetSave=function(e,t){var o,i,n,r="",a="";if(t)for(i in t)n="\n"!=t[i].charAt(t[i]-1)?"\n":"",r+="--"+e.multipartBoundary+"\nContent-type: text/plain; charset=UTF-8\n\n"+t[i]+n,a+="part:"+i+"\n";return o="socialcalc:version:1.0\nMIME-Version: 1.0\nContent-Type: multipart/mixed; boundary="+e.multipartBoundary+"\n--"+e.multipartBoundary+"\nContent-type: text/plain; charset=UTF-8\n\n# SocialCalc Spreadsheet Control Save\nversion:1.0\npart:sheet\npart:edit\npart:audit\n"+a+"--"+e.multipartBoundary+"\nContent-type: text/plain; charset=UTF-8\n\n"+e.CreateSheetSave()+"--"+e.multipartBoundary+"\nContent-type: text/plain; charset=UTF-8\n\n"+e.editor.SaveEditorSettings()+"--"+e.multipartBoundary+"\nContent-type: text/plain; charset=UTF-8\n\n"+e.sheet.CreateAuditString()+r+"--"+e.multipartBoundary+"--\n"},t.SpreadsheetControlDecodeSpreadsheetSave=function(e,t){var o,i,n,r,a,s,l,c,u,d,u,h,p={},f=[];if(o=t.search(/^MIME-Version:\s1\.0/im),0>o)return p;if(i=/^Content-Type:\s*multipart\/mixed;\s*boundary=(\S+)/gim,i.lastIndex=o,n=i.exec(t),i.lastIndex<=0)return p;if(r=n[1],a=new RegExp("^--"+r+"(?:\r\n|\n)","mg"),a.lastIndex=i.lastIndex,n=a.exec(t),s=/(?:\r\n|\n)(?:\r\n|\n)/gm,s.lastIndex=a.lastIndex,n=s.exec(t),!n)return p;if(l=s.lastIndex,a.lastIndex=l,n=a.exec(t),!n)return p;for(c=n.index,u=t.substring(l,c).split(/\r\n|\n/),d=0;d<u.length;d++)switch(line=u[d],h=line.split(":"),h[0]){case"version":break;case"part":f.push(h[1])}for(pnum=0;pnum<f.length;pnum++){if(s.lastIndex=c,n=s.exec(t),!n)return p;if(l=s.lastIndex,pnum==f.length-1&&(a=new RegExp("^--"+r+"--$","mg")),a.lastIndex=l,n=a.exec(t),!n)return p;c=n.index,p[f[pnum]]={start:l,end:c}}return p},t.SettingsControls={Controls:{},CurrentPanel:null},t.SettingsControlSetCurrentPanel=function(e){t.SettingsControls.CurrentPanel=e,t.SettingsControls.PopupChangeCallback({panelobj:e},"",null)},t.SettingsControlInitializePanel=function(e){var o,i=t.SettingsControls;for(o in e)"name"!=o&&(ctrl=i.Controls[e[o].type],ctrl&&ctrl.Initialize&&ctrl.Initialize(e,o))},t.SettingsControlLoadPanel=function(e,o){var i,n=t.SettingsControls;for(i in e)"name"!=i&&(ctrl=n.Controls[e[i].type],ctrl&&ctrl.SetValue&&ctrl.SetValue(e,i,o[e[i].setting]))},t.SettingsControlUnloadPanel=function(e){var o,i=t.SettingsControls,n={};for(o in e)"name"!=o&&(ctrl=i.Controls[e[o].type],ctrl&&ctrl.GetValue&&(n[e[o].setting]=ctrl.GetValue(e,o)));return n},t.SettingsControls.PopupChangeCallback=function(e){var o=t.Constants,i=document.getElementById("sample-text");if(i&&e&&e.panelobj){var n,r,a,s,l,c=t.CurrentSpreadsheetControlObject.idPrefix,u="cell"==e.panelobj.name?"c":"";a=o.defaultCellLayout.match(/^padding.(\S+) (\S+) (\S+) (\S+).vertical.align.(\S+);$/)||[];var d={color:["textcolor"],backgroundColor:["bgcolor","#FFF"],fontSize:["fontsize",o.defaultCellFontSize],fontFamily:["fontfamily"],paddingTop:["padtop",a[1]],paddingRight:["padright",a[2]],paddingBottom:["padbottom",a[3]],paddingLeft:["padleft",a[4]],verticalAlign:["alignvert",a[5]]};for(r in d)n=t.Popup.GetValue(c+u+d[r][0])||d[r][1]||"",i.style[r]=n;if("c"==u){d={borderTop:"cbt",borderRight:"cbr",borderBottom:"cbb",borderLeft:"cbl"};for(r in d)n=t.SettingsControls.BorderSideGetValue(e.panelobj,d[r]),i.style[r]=n?n.val||"":"";n=t.Popup.GetValue(c+"calignhoriz"),i.style.textAlign=n||"left",i.childNodes[1].style.textAlign=n||"right"}else i.style.border="",n=t.Popup.GetValue(c+"textalignhoriz"),i.style.textAlign=n||"left",n=t.Popup.GetValue(c+"numberalignhoriz"),i.childNodes[1].style.textAlign=n||"right";n=t.Popup.GetValue(c+u+"fontlook"),a=n?n.match(/^(\S+) (\S+)$/)||[]:[],i.style.fontStyle=a[1]||"",i.style.fontWeight=a[2]||"",n=t.Popup.GetValue(c+u+"formatnumber")||"General",s=t.FormatNumber.formatNumberWithFormat(9.8765,n,""),l=t.FormatNumber.formatNumberWithFormat(-1234.5,n,""),"??-???-??&nbsp;??:??:??"!=l&&(s+="<br>"+l),i.childNodes[1].innerHTML=s}},t.SettingsControls.PopupListSetValue=function(e,o,i){if(!i)return void alert(o+" no value");var n=t.Popup;i.def?n.SetValue(e[o].id,""):n.SetValue(e[o].id,i.val)},t.SettingsControls.PopupListGetValue=function(e,o){var i=e[o];if(!i)return null;var n=t.Popup.GetValue(i.id);return n?{def:!1,val:n}:{def:!0,val:0}},t.SettingsControls.PopupListInitialize=function(e,o){var i,n,r,a,s=t.SettingsControls,l=e[o].initialdata||s.Controls[e[o].type].InitialData||"";l=t.LocalizeSubstrings(l);var c=l.split(/\|/),u=[];for(i=0;i<(c.length||0);i++)n=c[i],r=n.indexOf(":"),a=n.substring(0,r),-1!=a.indexOf("\\")&&(a=a.replace(/\\c/g,":"),a=a.replace(/\\b/g,"\\")),a=t.special_chars(a),u[i]="[custom]"==a?{o:t.Constants.s_PopupListCustom,v:n.substring(r+1),a:{custom:!0}}:"[cancel]"==a?{o:t.Constants.s_PopupListCancel,v:"",a:{cancel:!0}}:"[break]"==a?{o:"-----",v:"",a:{skip:!0}}:"[newcol]"==a?{o:"",v:"",a:{newcol:!0}}:{o:a,v:n.substring(r+1)};t.Popup.Create("List",e[o].id,{}),t.Popup.Initialize(e[o].id,{options:u,attribs:{changedcallback:t.SettingsControls.PopupChangeCallback,panelobj:e}})},t.SettingsControls.PopupListReset=function(){t.Popup.Reset("List")},t.SettingsControls.Controls.PopupList={SetValue:t.SettingsControls.PopupListSetValue,GetValue:t.SettingsControls.PopupListGetValue,Initialize:t.SettingsControls.PopupListInitialize,OnReset:t.SettingsControls.PopupListReset,ChangedCallback:null},t.SettingsControls.ColorChooserSetValue=function(e,o,i){if(!i)return void alert(o+" no value");var n=t.Popup;i.def?n.SetValue(e[o].id,""):n.SetValue(e[o].id,i.val)},t.SettingsControls.ColorChooserGetValue=function(e,o){var i=t.Popup.GetValue(e[o].id);return i?{def:!1,val:i}:{def:!0,val:0}},t.SettingsControls.ColorChooserInitialize=function(e,o){t.SettingsControls;t.Popup.Create("ColorChooser",e[o].id,{}),t.Popup.Initialize(e[o].id,{attribs:{title:"&nbsp;",moveable:!0,width:"106px",changedcallback:t.SettingsControls.PopupChangeCallback,panelobj:e}})},t.SettingsControls.ColorChooserReset=function(){t.Popup.Reset("ColorChooser")},t.SettingsControls.Controls.ColorChooser={SetValue:t.SettingsControls.ColorChooserSetValue,GetValue:t.SettingsControls.ColorChooserGetValue,Initialize:t.SettingsControls.ColorChooserInitialize,OnReset:t.SettingsControls.ColorChooserReset,ChangedCallback:null},t.SettingsControls.BorderSideSetValue=function(e,o,i){var n,r,a,s=(t.SettingsControls,e[o].id);return i?(n=document.getElementById(s+"-onoff-bcb"),void(n&&(i.val?(n.checked=!0,n.value=i.val,a=i.val.match(/(\S+)\s+(\S+)\s+(\S.+)/),r=s+"-color",t.Popup.SetValue(r,a[3]),t.Popup.SetDisabled(r,!1)):(n.checked=!1,n.value=i.val,r=s+"-color",t.Popup.SetValue(r,""),t.Popup.SetDisabled(r,!0))))):void alert(o+" no value")},t.SettingsControls.BorderSideGetValue=function(e,o){var i,n,r=(t.SettingsControls,e[o].id);return(i=document.getElementById(r+"-onoff-bcb"))?i.checked?(n=t.Popup.GetValue(r+"-color"),n="1px solid "+(n||"rgb(0,0,0)"),{def:!1,val:n}):{def:!1,val:""}:void 0},t.SettingsControls.BorderSideInitialize=function(e,o){var i=(t.SettingsControls,e[o].id);t.Popup.Create("ColorChooser",i+"-color",{}),t.Popup.Initialize(i+"-color",{attribs:{title:"&nbsp;",width:"106px",moveable:!0,changedcallback:t.SettingsControls.PopupChangeCallback,panelobj:e}})},t.SettingsControlOnchangeBorder=function(e){var o=t.SettingsControls,i=o.CurrentPanel,n=e.id.match(/(^.*\-)(\w+)\-(\w+)\-(\w+)$/);if(n){var r=(n[1],n[2]),a=(n[3],n[4]),s=i[r].type;switch(a){case"bcb":e.checked?o.Controls[s].SetValue(o.CurrentPanel,r,{def:!1,val:e.value||"1px solid rgb(0,0,0)"}):o.Controls[s].SetValue(o.CurrentPanel,r,{def:!1,val:""})}}},t.SettingsControls.Controls.BorderSide={SetValue:t.SettingsControls.BorderSideSetValue,GetValue:t.SettingsControls.BorderSideGetValue,OnClick:t.SettingsControls.ColorComboOnClick,Initialize:t.SettingsControls.BorderSideInitialize,InitialData:{thickness:"1 pixel:1px",style:"Solid:solid"},ChangedCallback:null},t.SettingControlReset=function(){var e,o=t.SettingsControls;for(e in o.Controls)o.Controls[e].OnReset&&o.Controls[e].OnReset(e)},t.OtherSaveParts={},t.CtrlSEditor=function(e){var o,i;if(e.length>0)o=t.special_chars(t.OtherSaveParts[e]||"");else{o="Listing of Parts\n";for(i in t.OtherSaveParts)o+=t.special_chars("\nPart: "+i+"\n=====\n"+t.OtherSaveParts[i]+"\n")}var n=document.createElement("div");n.style.cssText="position:absolute;z-index:500;width:300px;height:300px;left:100px;top:200px;border:1px solid black;background-color:#EEE;text-align:center;",n.id="socialcalc-editbox",n.innerHTML=e+'<br><br><textarea id="socialcalc-editbox-textarea" style="width:250px;height:200px;">'+o+"</textarea><br><br><input type=button onclick=\"SocialCalc.CtrlSEditorDone ('socialcalc-editbox', '"+e+'\');" value="OK">',document.body.appendChild(n);var r=document.getElementById("socialcalc-editbox-textarea");r.focus(),t.CmdGotFocus(r)},t.CtrlSEditorDone=function(e,o){var i=document.getElementById(e+"-textarea"),n=i.value;o.length>0&&(n.length>0?t.OtherSaveParts[o]=n:delete t.OtherSaveParts[o]);var r=document.getElementById(e);t.KeyboardFocus(),r.parentNode.removeChild(r)};var t;return t||(alert("Main SocialCalc code module needed"),t={}),t.TableEditor||alert("SocialCalc TableEditor code module needed"),t.CurrentSpreadsheetViewerObject=null,t.SpreadsheetViewer=function(e){var o=t.Constants;this.parentNode=null,this.spreadsheetDiv=null,this.requestedHeight=0,this.requestedWidth=0,this.requestedSpaceBelow=0,this.height=0,this.width=0,this.viewheight=0,this.sheet=null,this.context=null,this.editor=null,this.spreadsheetDiv=null,this.editorDiv=null,this.sortrange="",this.idPrefix=e||"SocialCalc-",this.imagePrefix=o.defaultImagePrefix,this.statuslineheight=o.SVStatuslineheight,this.statuslineCSS=o.SVStatuslineCSS,this.sheet=new t.Sheet,this.context=new t.RenderContext(this.sheet),(1==t._app||1==t._view)&&(o.defaultImagePrefix=this.imagePrefix="../"+this.imagePrefix),1==t._app?(this.context.showGrid=!1,this.context.showRCHeaders=!1,this.context.highlightTypes.range.style="",this.context.sheetobj.cells.A1=new t.Cell("A1"),this.context.sheetobj.cells.A1.displaystring="Loading ... "):(this.context.showGrid=!0,this.context.showRCHeaders=!0),this.editor=new t.TableEditor(this.context),this.editor.noEdit=!0,this.editor.StatusCallback.statusline={func:t.SpreadsheetViewerStatuslineCallback,params:{}},this.hasStatusLine=!0,this.statuslineHTML='<table cellspacing="0" cellpadding="0"><tr><td width="100%" style="overflow:hidden;">{status}</td><td>&nbsp;</td></tr></table>',this.statuslineFull=!0,this.noRecalc=!0,this.repeatingMacroTimer=null,this.repeatingMacroInterval=60,this.repeatingMacroCommands="",t.CurrentSpreadsheetViewerObject=this},t.SpreadsheetViewer.prototype.InitializeSpreadsheetViewer=function(e,o,i,n){return t.InitializeSpreadsheetViewer(this,e,o,i,n)},t.SpreadsheetViewer.prototype.LoadSave=function(e){return t.SpreadsheetViewerLoadSave(this,e)},t.SpreadsheetViewer.prototype.DoOnResize=function(){return t.DoOnResize(this)},t.SpreadsheetViewer.prototype.SizeSSDiv=function(){return t.SizeSSDiv(this)},t.SpreadsheetViewer.prototype.DecodeSpreadsheetSave=function(e){return t.SpreadsheetViewerDecodeSpreadsheetSave(this,e)},t.SpreadsheetViewer.prototype.ParseSheetSave=function(e){return this.sheet.ParseSheetSave(e)},t.InitializeSpreadsheetViewer=function(e,o,i,n,r){{var a;t.Constants,t.LocalizeString,t.LocalizeSubstrings,e.tabs,e.views}for(e.requestedHeight=i,e.requestedWidth=n,e.requestedSpaceBelow=r,"string"==typeof o&&(o=document.getElementById(o)),null==o&&alert("SocialCalc.SpreadsheetControl not given parent node."),e.parentNode=o,e.spreadsheetDiv=document.createElement("div"),e.SizeSSDiv(),a=o.firstChild;null!=a;a=o.firstChild)o.removeChild(a);o.appendChild(e.spreadsheetDiv),e.nonviewheight=e.hasStatusLine?e.statuslineheight:0,e.viewheight=e.height-e.nonviewheight,e.editorDiv=e.editor.CreateTableEditor(e.width,e.viewheight),e.spreadsheetDiv.appendChild(e.editorDiv),e.hasStatusLine&&(e.statuslineDiv=document.createElement("div"),e.statuslineDiv.style.cssText=e.statuslineCSS,e.statuslineDiv.style.height=e.statuslineheight-(e.statuslineDiv.style.paddingTop.slice(0,-2)-0)-(e.statuslineDiv.style.paddingBottom.slice(0,-2)-0)+"px",e.statuslineDiv.id=e.idPrefix+"statusline",e.spreadsheetDiv.appendChild(e.statuslineDiv),e.editor.StatusCallback.statusline={func:t.SpreadsheetViewerStatuslineCallback,params:{spreadsheetobj:e}}),1==t._app&&(e.formDataViewer=new t.SpreadsheetViewer("te_FormData-"),e.formDataViewer.sheet.statuscallback=null,t.CurrentSpreadsheetViewerObject=e)},t.SpreadsheetViewerLoadSave=function(o,i){var n,r,a,s,l=o.DecodeSpreadsheetSave(i);l&&(l.sheet&&(o.sheet.ResetSheet(),o.sheet.ParseSheetSave(i.substring(l.sheet.start,l.sheet.end))),l.edit&&o.editor.LoadEditorSettings(i.substring(l.edit.start,l.edit.end)),l.startupmacro&&o.editor.EditorScheduleSheetCommands(i.substring(l.startupmacro.start,l.startupmacro.end),!1,!0),l.repeatingmacro&&(n=i.substring(l.repeatingmacro.start,l.repeatingmacro.end),n=n.replace("\r",""),r=n.indexOf("\n"),r>0&&(a=n.substring(0,r)-0,s=a,o.repeatingMacroInterval=a,o.repeatingMacroCommands=n.substring(r+1),s>0&&(o.repeatingMacroTimer=e.setTimeout(t.SpreadsheetViewerDoRepeatingMacro,1e3*o.repeatingMacroInterval))))),"off"==o.editor.context.sheetobj.attribs.recalc||o.noRecalc?o.editor.ScheduleRender():o.editor.EditorScheduleSheetCommands("recalc")},t.SpreadsheetViewerDoRepeatingMacro=function(){var e=t.GetSpreadsheetViewerObject(),o=e.editor;e.repeatingMacroTimer=null,t.SheetCommandInfo.CmdExtensionCallbacks.repeatmacro={func:t.SpreadsheetViewerRepeatMacroCommand,data:null},o.EditorScheduleSheetCommands(e.repeatingMacroCommands)},t.SpreadsheetViewerRepeatMacroCommand=function(o,i,n,r){var a=t.GetSpreadsheetViewerObject(),s=r.RestOfString(),l=s-0;l>0||(l=a.repeatingMacroInterval),a.repeatingMacroInterval=l,a.repeatingMacroTimer=e.setTimeout(t.SpreadsheetViewerDoRepeatingMacro,1e3*a.repeatingMacroInterval)},t.SpreadsheetViewerStopRepeatingMacro=function(){var o=t.GetSpreadsheetViewerObject();o.repeatingMacroTimer&&(e.clearTimeout(o.repeatingMacroTimer),o.repeatingMacroTimer=null)},t.SpreadsheetViewerDoButtonCmd=function(e,o,i){var n=i.element,r=i.functionobj.command,a=t.GetSpreadsheetViewerObject(),s=a.editor;switch(r){case"recalc":s.EditorScheduleSheetCommands("recalc")}n&&n.blur&&n.blur(),t.KeyboardFocus()},t.LocalizeString=function(e){var o=t.LocalizeStringList[e];return o||(o=t.Constants["s_loc_"+e.toLowerCase().replace(/\s/g,"_").replace(/\W/g,"X")]||e,t.LocalizeStringList[e]=o),o},t.LocalizeStringList={},t.LocalizeSubstrings=function(e){var o=t.LocalizeString;return e.replace(/%(loc|ssc)!(.*?)!/g,function(e,i,n){return"ssc"==i?t.Constants[n]||alert("Missing constant: "+n):o(n)})},t.GetSpreadsheetViewerObject=function(){var e=t.CurrentSpreadsheetViewerObject;if(e)return e;throw"No current SpreadsheetViewer object."},t.DoOnResize=function(e){var o,i=e.views,n=e.SizeSSDiv();if(n){for(vname in i)o=i[vname].element,o.style.width=e.width+"px",o.style.height=e.height-e.nonviewheight+"px";t._app||e.editor.ResizeTableEditor(e.width,e.height-e.nonviewheight)}},t.SizeSSDiv=function(e){var o,i,n,r,a,s=10,l=10;return n=!1,o=t.GetViewportInfo(),i=t.GetElementPosition(e.parentNode),i.bottom=0,i.right=0,r=e.parentNode.style,r.marginTop&&(i.top+=r.marginTop.slice(0,-2)-0),r.marginBottom&&(i.bottom+=r.marginBottom.slice(0,-2)-0),r.marginLeft&&(i.left+=r.marginLeft.slice(0,-2)-0),r.marginRight&&(i.right+=r.marginRight.slice(0,-2)-0),a=e.requestedHeight||o.height-(i.top+i.bottom+l)-(e.requestedSpaceBelow||0),e.height!=a&&(e.height=a,e.spreadsheetDiv.style.height=a+"px",n=!0),a=e.requestedWidth||o.width-(i.left+i.right+s)||700,e.width!=a&&(e.width=a,e.spreadsheetDiv.style.width=a+"px",n=!0),e.spreadsheetDiv.style.position="relative",n},t.SpreadsheetViewerStatuslineCallback=function(e,t,o,i){var n=i.spreadsheetobj,r="";switch(n&&n.statuslineDiv&&(r=n.statuslineFull?e.GetStatuslineString(t,o,i):e.ecell.coord,r=n.statuslineHTML.replace(/\{status\}/,r),n.statuslineDiv.innerHTML=r),t){case"cmdendnorender":case"calcfinished":case"doneposcalc":}},t.CmdGotFocus=function(e){t.Keyboard.passThru=e},t.SpreadsheetViewerCreateSheetHTML=function(e){var o,i,n,r="";return o=new t.RenderContext(e.sheet),i=document.createElement("div"),n=o.RenderSheet(null,{type:"html"}),i.appendChild(n),delete o,r=i.innerHTML,delete n,delete i,r},t.SpreadsheetViewerDecodeSpreadsheetSave=function(e,t){var o,i,n,r,a,s,l,c,u,d,u,h,p={},f=[],m=/[^\n]\r[^\n]/;if(m.test(t)&&(t=t.replace(/([^\n])\r([^\n])/g,"$1\r\n$2")),o=t.search(/^MIME-Version:\s1\.0/im),0>o)return p;if(i=/^Content-Type:\s*multipart\/mixed;\s*boundary=(\S+)/gim,i.lastIndex=o,n=i.exec(t),i.lastIndex<=0)return p;if(r=n[1],a=new RegExp("^--"+r+"(?:\r\n|\n)","mg"),a.lastIndex=i.lastIndex,n=a.exec(t),s=/(?:\r\n|\n)(?:\r\n|\n)/gm,s.lastIndex=a.lastIndex,n=s.exec(t),!n)return p;if(l=s.lastIndex,a.lastIndex=l,n=a.exec(t),!n)return p;for(c=n.index,u=t.substring(l,c).split(/\r\n|\n/),d=0;d<u.length;d++)switch(line=u[d],h=line.split(":"),h[0]){case"version":break;case"part":f.push(h[1])}for(pnum=0;pnum<f.length;pnum++){if(s.lastIndex=c,n=s.exec(t),!n)return p;if(l=s.lastIndex,pnum==f.length-1&&(a=new RegExp("^--"+r+"--$","mg")),a.lastIndex=l,n=a.exec(t),!n)return p;c=n.index,p[f[pnum]]={start:l,end:c}}return p},"undefined"==typeof document&&(t.GetEditorCellElement=function(){},t.ReplaceCell=function(){},t.EditorRenderSheet=function(){},t.SpreadsheetControlSortSave=function(){return""},t.SpreadsheetControlStatuslineCallback=function(){},t.DoPositionCalculations=function(e){t.EditorSheetStatusCallback(null,"doneposcalc",null,e)}),"undefined"!=typeof self&&self.thread&&(e.setTimeout=function(e,t){1>=t&&self.thread.nextTick(e)},e.clearTimeout=function(){}),t}),function(){Class=function(classDefinition,classWrapper){if(!classDefinition)throw"Class requires a class definition string as its first argument";if(!classWrapper)throw"Class requires a class wrapper function as its second argument";if(!classDefinition.match(/^([\w\.]+)(?:\(\s*([\w\.]+)\s*\))?(?:\s+(.*?)\s*)?$/))throw"Can't parse Class Definition: '"+classDefinition+"'";var className=RegExp.$1,baseClassName=RegExp.$2||"",options=[];RegExp.$3&&(options=RegExp.$3.split(/\s+/));for(var incValues=[],strict=!0,i=0,l=options.length;l>i;i++){var option=options[i];"-nostrict"==option&&(strict=!1),option.match(/^-inc=(.+)$/)&&(incValues=RegExp.$1.split(","))}for(var parts=className.split("."),klass=Class.global,i=0;i<parts.length;i++)klass[parts[i]]||(klass[parts[i]]=function(){try{this.init()}catch(e){}}),klass=klass[parts[i]];klass.className=className,klass.isa=function(baseName){klass.baseClassName=baseName,baseName&&(klass.prototype=eval("new "+baseName+"()"),klass.prototype.superFunc=function(name){return eval(baseName).prototype[name]})},klass.isa(baseClassName),klass.global=Class.global,klass.addGlobal=function(){return this.newGlobals++,Class.global},klass.extend=function(e){if("object"!=typeof e)throw"extend requires an object of name:value pairs";for(var t in e)klass.prototype[t]=e[t]};for(var ii=0,ll=incValues.length;ll>ii;ii++){var value=incValues[ii];incValues[ii]="proto"==value?klass.prototype:"this"==value?klass:Class.global[value]}return strict?Class.eval_strict(classWrapper,klass,incValues):classWrapper.apply(klass,incValues),klass}}(),Class.global=this,Class.eval_strict=function(e,t,o){var i,n=0;for(var r in Class.global)n++,i=r;t.newGlobals=0,e.apply(t,o);var a=0;for(var r in Class.global)a++;if(n+t.newGlobals!=a)throw"Class '"+t.className+"' defines "+(a-n)+" new global JavaScript variables without using this.addGlobal()";delete t.newGlobals},Class("Document.Emitter",function(){var proto=this.prototype;proto.className="Document.Emitter",proto.instantiate=function(){return eval("new "+this.className+"()")},proto.init=function(){this.output=""},proto.content=function(){return this.output},proto.insert=function(e){this.output+=e.output}}),Class("Document.Emitter.HTML(Document.Emitter)",function(){var e=this.prototype;e.className="Document.Emitter.HTML",e.begin_node=function(e){var t=e.type;switch(t){case"asis":case"line":return;case"br":case"hr":return void(this.output+="<"+t+" />");case"html":return void(this.output+='<span class="wafl">Raw HTML section. Edit in Wiki Text mode.</span>');case"waflparagraph":case"waflphrase":case"im":if(e._wafl.match(/^image:\s*(\S+)(?:\s+size=(\w+))?/)){var o="if (typeof(ss) != 'undefined' && ss.editor) { var recalc = function () { try { ss.editor.DoPositionCalculations() } catch (e) { setTimeout(recalc, 500) } }; recalc() } if (!window.image_dimension_cache) window.image_dimension_cache = {};window.image_dimension_cache['/data/wafl/"+e._label.replace(/&/g,"&amp;").replace(/"/g,"&quot;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/'/g,"\\'").replace(/\\/g,"\\\\")+"'] = [ this.offsetWidth, this.offsetHeight ]; this.style.width = this.offsetWidth + 'px'; this.style.height = this.offsetHeight + 'px'",i=RegExp.$1,n=RegExp.$2;
-switch(n){case"small":n="100";break;case"medium":n="300";break;case"large":n="600"}return n&&(n=' width="'+n+'"'),void(this.output+='<img src="'+i.replace(/&/g,"&amp;").replace(/"/g,"&quot;").replace(/</g,"&lt;").replace(/>/g,"&gt;")+'" onload="'+o+'"'+n+" />")}return void(this.output+='<span class="wafl">'+e._label.replace(/&/g,"&amp;").replace(/"/g,"&quot;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/'/g,"\\'").replace(/\\/g,"\\\\")+"</span>");case"a":case"wikilink":return void(this.output+='<a href="'+encodeURI(e._href)+'">');case"file":return void(this.output+='<a title="(network resource)" href="'+encodeURI(e._href)+'">');case"ul":case"ol":case"table":case"tr":return void(this.output+="<"+t+">\n");default:return void(this.output+="<"+t+">")}},e.end_node=function(e){var t=e.type;switch(t){case"asis":case"br":case"hr":case"html":case"waflparagraph":case"waflphrase":case"im":return;case"line":return void(this.output+="<br />");case"file":case"wikilink":return void(this.output+="</a>");default:return void(this.output+=0==t.search(/^(?:p|ul|ol|li|h\d|table|tr|td)$/)?"</"+t+">\n":"</"+t+">")}},e.text_node=function(e){this.output+=e.replace(/&/g,"&amp;").replace(/>/g,"&gt;").replace(/</g,"&lt;").replace(/"/g,"&quot;").replace(/'/g,"&apos;")}}),Class("Document.Parser",function(){var proto=this.prototype;proto.className="Document.Parser",proto.init=function(){},proto.parse=function(e,t){return this.input=-1==e.search(/\n$/)?e+"\n":e,t&&(this.receiver=t),this.receiver.init(),this.grammar=this.create_grammar(),this.parse_blocks("top"),this.receiver.content()},proto.create_grammar=function(){throw"Please define create_grammar in a derived class of Document.Parser."},proto.parse_blocks=function(e){var t=this.grammar[e].blocks;if(t)for(;this.input.length;){for(var o=this.input.length,i=0;i<t.length;i++){var n=t[i],r=this.find_match("matched_block",n);if(r){this.input=this.input.substr(r.end),this.handle_match(n,r);break}}if(this.input.length>=o)throw this.classname+": Reduction error for:\n"+this.input+"\n"+JSON.stringify(this)}},proto.handle_match=function(e,t){var o=this.grammar[e],i=o.blocks?"parse_blocks":"parse_phrases";this.subparse(i,t,e,o.filter)},proto.find_match=function(e,t){var o=this.grammar[t].match;if(!o)throw"no regexp for type: "+t;var i=this.input.match(o);if(i){var n=this[e].call(this,i,this.grammar[t].lookbehind);return n.type=this.grammar[t].type||t,n}},proto.parse_phrases=function(e){var t=this.grammar[e].phrases;if(!t)return void this.receiver.text_node(this.input||"");for(;this.input.length;){for(var o=null,i=0;i<t.length;i++){var n=t[i],r=this.find_match("matched_phrase",n);if(r&&(!o||r.begin<o.begin)&&(o=r,0==o.begin))break}if(!o){this.receiver.text_node(this.input||"");break}0!=o.begin&&this.receiver.text_node(this.input.substr(0,o.begin)||""),this.input=this.input.substr(o.end),this.handle_match(o.type,o)}},proto.subparse=function(func,match,type,filter){match.type=this.grammar[type].type,null==match.type&&(match.type=type);var filtered_text=filter?filter(match):null;match.type&&this.receiver.begin_node(match);var parser=eval("new "+this.className+"()");parser.input=null==filtered_text?match.text:filtered_text,parser.grammar=this.grammar,parser.receiver=this.receiver.instantiate(),parser[func].call(parser,type),this.receiver.insert(parser.receiver),match.type&&this.receiver.end_node(match)},proto.matched_block=function(e){return{begin:e.index,text:e[1],end:e[0].length,1:e[2],2:e[3],3:e[4]}},proto.matched_phrase=function(e,t){if(t){var o=e[2],i=this.input.indexOf(e[1]);return{text:o,begin:i,end:i+e[1].length,1:RegExp.$2,2:RegExp.$3,3:RegExp.$4}}return{begin:e.index,text:e[1],end:e.index+e[0].length,1:e[2],2:e[3],3:e[4]}}}),Class("Document.Parser.Wikitext(Document.Parser)",function(){var e=this.prototype;e.className="Document.Parser.Wikitext",e.init=function(){},e.create_grammar=function(){var e=["pre","html","hr","hx","waflparagraph","ul","ol","blockquote","p","empty","else"],t=["waflphrase","asis","wikilink","wikilink2","a","im","mail","file","tt","b","i","del","a"],o=function(e,o){return o="\\"+(o||e),e="\\"+e,{match:new RegExp("(?:^|[^"+e+"\\w])("+e+"(?=\\S)(?!"+o+")(.*?)"+o+"(?=[^"+o+"\\w]|$))"),phrases:"\\`"==e?null:t,lookbehind:!0}},i={yahoo:"yahoo",ymsgr:"yahoo",callto:"callto",callme:"callto",skype:"callto",aim:"aim"},n={aim:"AIM: %1",yahoo:"Yahoo: %1",callto:"Skype: %1"},r="(\\b(";for(var a in i)r+=a+"|";r=r.replace(/\|$/,")\\:([^\\s\\>\\)]+))");var s=function(e,t){var o=new RegExp("(^|\n)"+t+" *","g");return{match:new RegExp("^("+e+"+ .*\n(?:[*-+#]+ .*\n)*)(?:s*\n)?"),blocks:["ul","ol","subl","li"],filter:function(e){return e.text.replace(o,"$1")}}};return{_all_blocks:e,_all_phrases:t,top:{blocks:e},ol:s("#","[*#]"),ul:s("[-+*]","[-+*#]"),blockquote:{match:/^((?:>[^\n]*\n)+)(?:\s*\n)?/,blocks:["blockquote","line"],filter:function(e){return e.text.replace(/(^|\n)>\ ?/g,"$1")}},line:{match:/([^\n]*)\n/,phrases:t},subl:{type:"li",match:/^(([^\n]*)\n[*#]+\ [^\n]*\n(?:[*#]+\ [^\n]*\n)*)(?:\s*\n)?/,blocks:["ul","ol","li2"]},li:{match:/([^\n]*)\n/,phrases:t},li2:{type:"",match:/([^\n]*)\n/,phrases:t},html:{match:/^(\.html\ *\n(?:[^\n]*\n)*?\.html)\ *\n(?:\s*\n)?/,filter:function(e){return e._html=e.text,""}},pre:{match:/^\.pre\ *\n((?:[^\n]*\n)*?)\.pre\ *\n(?:\s*\n)?/},hr:{match:/^--+(?:\s*\n)?/},hx:{match:/^((\^+) *([^\n]*?)(\s+=+)?\s*?\n+)/,phrases:t,filter:function(e){return e.type="h"+e[1].length,e[2]}},p:{match:/^((?:(?!(?:(?:\^+|\#+|\*+|\-+) |\>|\.\w+\s*\n|\{[^\}]+\}\s*\n))[^\n]*\S[^\n]*\n)+(?:(?=^|\n)\s*\n)*)/,phrases:t,filter:function(e){return e.text.replace(/\n$/,"")}},empty:{match:/^(\s*\n)/,filter:function(e){e.type=""}},"else":{match:/^(([^\n]*)\n)/,phrases:[],filter:function(e){e.type="p"}},waflparagraph:{match:/^\{(.*)\}[\ \t]*\n(?:\s*\n)?/,filter:function(e){return e._wafl=e._label=e.text,""}},waflphrase:{match:/(?:^|[\s\-])((?:"([^\n]+?)")?\{([\w-]+(?=[\:\ \}])(?:\s*:)?\s*[^\n]*?\s*)\}(?=[\W_]|$))/,filter:function(e){return e._wafl=e[2],e._label=e[1]||e._wafl,""},lookbehind:!0},asis:{match:/(\{\{([^\n]*?)\}\}(\}*))/,filter:function(e){return e.type="",e[1]+e[2]}},wikilink:{match:/(?:^|[_\W])(\[()(?=[^\s\[\]])(.*?)\](?=[_\W]|$))/,filter:function(e){return e._href="?"+e[2],e.text||e[2]},lookbehind:!0},wikilink2:{type:"wikilink",match:/(?:"([^"]*)"\s*)(\[(?=[^\s\[\]])(.*?)\](?=[_\W]|$))/,filter:function(e){return e._href="?"+e[2],e[1]||e[2]}},a:{match:/((?:"([^"]*)"\s*)?<?((?:http|https|ftp|irc|file):(?:\/\/)?[\;\/\?\:\@\&\=\+\$\,\[\]\#A-Za-z0-9\-\_\.\!\~\*\'\(\)]+[A-Za-z0-9\/#])>?)/,filter:function(e){return e._href=e[2],e[1]||e[2]}},file:{match:/((?:"([^"]*)")?<(\\\\[^\s\>\)]+)>)/,filter:function(e){var t=e[2].replace(/^\\\\/,"");return e._href="file://"+t.replace(/\\/g,"/"),e[1]||t}},im:{match:new RegExp(r),filter:function(e){return e._wafl=e[1]+": "+e[2],e._label=(n[i[e[1]]]||"%1").replace(/%1/g,e[2]),""}},mail:{match:/([\w+%\-\.]+@(?:[\w\-]+\.)+[\w\-]+)/,filter:function(e){e.type="a",e._href="mailto:"+e.text.replace(/%/g,"%25")}},tt:o("`"),b:o("*"),i:o("_"),del:o("-")}}}),!function(e,t){"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(e,t){function o(e){var t=e.length,o=rt.type(e);return"function"===o||rt.isWindow(e)?!1:1===e.nodeType&&t?!0:"array"===o||0===t||"number"==typeof t&&t>0&&t-1 in e}function i(e,t,o){if(rt.isFunction(t))return rt.grep(e,function(e,i){return!!t.call(e,i,e)!==o});if(t.nodeType)return rt.grep(e,function(e){return e===t!==o});if("string"==typeof t){if(pt.test(t))return rt.filter(t,e,o);t=rt.filter(t,e)}return rt.grep(e,function(e){return rt.inArray(e,t)>=0!==o})}function n(e,t){do e=e[t];while(e&&1!==e.nodeType);return e}function r(e){var t=wt[e]={};return rt.each(e.match(Ct)||[],function(e,o){t[o]=!0}),t}function a(){mt.addEventListener?(mt.removeEventListener("DOMContentLoaded",s,!1),e.removeEventListener("load",s,!1)):(mt.detachEvent("onreadystatechange",s),e.detachEvent("onload",s))}function s(){(mt.addEventListener||"load"===event.type||"complete"===mt.readyState)&&(a(),rt.ready())}function l(e,t,o){if(void 0===o&&1===e.nodeType){var i="data-"+t.replace(Tt,"-$1").toLowerCase();if(o=e.getAttribute(i),"string"==typeof o){try{o="true"===o?!0:"false"===o?!1:"null"===o?null:+o+""===o?+o:kt.test(o)?rt.parseJSON(o):o}catch(n){}rt.data(e,t,o)}else o=void 0}return o}function c(e){var t;for(t in e)if(("data"!==t||!rt.isEmptyObject(e[t]))&&"toJSON"!==t)return!1;return!0}function u(e,t,o,i){if(rt.acceptData(e)){var n,r,a=rt.expando,s=e.nodeType,l=s?rt.cache:e,c=s?e[a]:e[a]&&a;if(c&&l[c]&&(i||l[c].data)||void 0!==o||"string"!=typeof t)return c||(c=s?e[a]=K.pop()||rt.guid++:a),l[c]||(l[c]=s?{}:{toJSON:rt.noop}),("object"==typeof t||"function"==typeof t)&&(i?l[c]=rt.extend(l[c],t):l[c].data=rt.extend(l[c].data,t)),r=l[c],i||(r.data||(r.data={}),r=r.data),void 0!==o&&(r[rt.camelCase(t)]=o),"string"==typeof t?(n=r[t],null==n&&(n=r[rt.camelCase(t)])):n=r,n}}function d(e,t,o){if(rt.acceptData(e)){var i,n,r=e.nodeType,a=r?rt.cache:e,s=r?e[rt.expando]:rt.expando;if(a[s]){if(t&&(i=o?a[s]:a[s].data)){rt.isArray(t)?t=t.concat(rt.map(t,rt.camelCase)):t in i?t=[t]:(t=rt.camelCase(t),t=t in i?[t]:t.split(" ")),n=t.length;for(;n--;)delete i[t[n]];if(o?!c(i):!rt.isEmptyObject(i))return}(o||(delete a[s].data,c(a[s])))&&(r?rt.cleanData([e],!0):it.deleteExpando||a!=a.window?delete a[s]:a[s]=null)}}}function h(){return!0}function p(){return!1}function f(){try{return mt.activeElement}catch(e){}}function m(e){var t=Ot.split("|"),o=e.createDocumentFragment();if(o.createElement)for(;t.length;)o.createElement(t.pop());return o}function g(e,t){var o,i,n=0,r=typeof e.getElementsByTagName!==St?e.getElementsByTagName(t||"*"):typeof e.querySelectorAll!==St?e.querySelectorAll(t||"*"):void 0;if(!r)for(r=[],o=e.childNodes||e;null!=(i=o[n]);n++)!t||rt.nodeName(i,t)?r.push(i):rt.merge(r,g(i,t));return void 0===t||t&&rt.nodeName(e,t)?rt.merge([e],r):r}function v(e){At.test(e.type)&&(e.defaultChecked=e.checked)}function b(e,t){return rt.nodeName(e,"table")&&rt.nodeName(11!==t.nodeType?t:t.firstChild,"tr")?e.getElementsByTagName("tbody")[0]||e.appendChild(e.ownerDocument.createElement("tbody")):e}function y(e){return e.type=(null!==rt.find.attr(e,"type"))+"/"+e.type,e}function C(e){var t=Kt.exec(e.type);return t?e.type=t[1]:e.removeAttribute("type"),e}function w(e,t){for(var o,i=0;null!=(o=e[i]);i++)rt._data(o,"globalEval",!t||rt._data(t[i],"globalEval"))}function x(e,t){if(1===t.nodeType&&rt.hasData(e)){var o,i,n,r=rt._data(e),a=rt._data(t,r),s=r.events;if(s){delete a.handle,a.events={};for(o in s)for(i=0,n=s[o].length;n>i;i++)rt.event.add(t,o,s[o][i])}a.data&&(a.data=rt.extend({},a.data))}}function _(e,t){var o,i,n;if(1===t.nodeType){if(o=t.nodeName.toLowerCase(),!it.noCloneEvent&&t[rt.expando]){n=rt._data(t);for(i in n.events)rt.removeEvent(t,i,n.handle);t.removeAttribute(rt.expando)}"script"===o&&t.text!==e.text?(y(t).text=e.text,C(t)):"object"===o?(t.parentNode&&(t.outerHTML=e.outerHTML),it.html5Clone&&e.innerHTML&&!rt.trim(t.innerHTML)&&(t.innerHTML=e.innerHTML)):"input"===o&&At.test(e.type)?(t.defaultChecked=t.checked=e.checked,t.value!==e.value&&(t.value=e.value)):"option"===o?t.defaultSelected=t.selected=e.defaultSelected:("input"===o||"textarea"===o)&&(t.defaultValue=e.defaultValue)}}function S(t,o){var i=rt(o.createElement(t)).appendTo(o.body),n=e.getDefaultComputedStyle?e.getDefaultComputedStyle(i[0]).display:rt.css(i[0],"display");return i.detach(),n}function k(e){var t=mt,o=eo[e];return o||(o=S(e,t),"none"!==o&&o||(Qt=(Qt||rt("<iframe frameborder='0' width='0' height='0'/>")).appendTo(t.documentElement),t=(Qt[0].contentWindow||Qt[0].contentDocument).document,t.write(),t.close(),o=S(e,t),Qt.detach()),eo[e]=o),o}function T(e,t){return{get:function(){var o=e();return null!=o?o?void delete this.get:(this.get=t).apply(this,arguments):void 0}}}function F(e,t){if(t in e)return t;for(var o=t.charAt(0).toUpperCase()+t.slice(1),i=t,n=fo.length;n--;)if(t=fo[n]+o,t in e)return t;return i}function E(e,t){for(var o,i,n,r=[],a=0,s=e.length;s>a;a++)i=e[a],i.style&&(r[a]=rt._data(i,"olddisplay"),o=i.style.display,t?(r[a]||"none"!==o||(i.style.display=""),""===i.style.display&&Dt(i)&&(r[a]=rt._data(i,"olddisplay",k(i.nodeName)))):r[a]||(n=Dt(i),(o&&"none"!==o||!n)&&rt._data(i,"olddisplay",n?o:rt.css(i,"display"))));for(a=0;s>a;a++)i=e[a],i.style&&(t&&"none"!==i.style.display&&""!==i.style.display||(i.style.display=t?r[a]||"":"none"));return e}function D(e,t,o){var i=co.exec(t);return i?Math.max(0,i[1]-(o||0))+(i[2]||"px"):t}function P(e,t,o,i,n){for(var r=o===(i?"border":"content")?4:"width"===t?1:0,a=0;4>r;r+=2)"margin"===o&&(a+=rt.css(e,o+Et[r],!0,n)),i?("content"===o&&(a-=rt.css(e,"padding"+Et[r],!0,n)),"margin"!==o&&(a-=rt.css(e,"border"+Et[r]+"Width",!0,n))):(a+=rt.css(e,"padding"+Et[r],!0,n),"padding"!==o&&(a+=rt.css(e,"border"+Et[r]+"Width",!0,n)));return a}function A(e,t,o){var i=!0,n="width"===t?e.offsetWidth:e.offsetHeight,r=to(e),a=it.boxSizing()&&"border-box"===rt.css(e,"boxSizing",!1,r);if(0>=n||null==n){if(n=oo(e,t,r),(0>n||null==n)&&(n=e.style[t]),no.test(n))return n;i=a&&(it.boxSizingReliable()||n===e.style[t]),n=parseFloat(n)||0}return n+P(e,t,o||(a?"border":"content"),i,r)+"px"}function I(e,t,o,i,n){return new I.prototype.init(e,t,o,i,n)}function M(){return setTimeout(function(){mo=void 0}),mo=rt.now()}function R(e,t){var o,i={height:e},n=0;for(t=t?1:0;4>n;n+=2-t)o=Et[n],i["margin"+o]=i["padding"+o]=e;return t&&(i.opacity=i.width=e),i}function N(e,t,o){for(var i,n=(wo[t]||[]).concat(wo["*"]),r=0,a=n.length;a>r;r++)if(i=n[r].call(o,t,e))return i}function L(e,t,o){var i,n,r,a,s,l,c,u,d=this,h={},p=e.style,f=e.nodeType&&Dt(e),m=rt._data(e,"fxshow");o.queue||(s=rt._queueHooks(e,"fx"),null==s.unqueued&&(s.unqueued=0,l=s.empty.fire,s.empty.fire=function(){s.unqueued||l()}),s.unqueued++,d.always(function(){d.always(function(){s.unqueued--,rt.queue(e,"fx").length||s.empty.fire()})})),1===e.nodeType&&("height"in t||"width"in t)&&(o.overflow=[p.overflow,p.overflowX,p.overflowY],c=rt.css(e,"display"),u=k(e.nodeName),"none"===c&&(c=u),"inline"===c&&"none"===rt.css(e,"float")&&(it.inlineBlockNeedsLayout&&"inline"!==u?p.zoom=1:p.display="inline-block")),o.overflow&&(p.overflow="hidden",it.shrinkWrapBlocks()||d.always(function(){p.overflow=o.overflow[0],p.overflowX=o.overflow[1],p.overflowY=o.overflow[2]}));for(i in t)if(n=t[i],vo.exec(n)){if(delete t[i],r=r||"toggle"===n,n===(f?"hide":"show")){if("show"!==n||!m||void 0===m[i])continue;f=!0}h[i]=m&&m[i]||rt.style(e,i)}if(!rt.isEmptyObject(h)){m?"hidden"in m&&(f=m.hidden):m=rt._data(e,"fxshow",{}),r&&(m.hidden=!f),f?rt(e).show():d.done(function(){rt(e).hide()}),d.done(function(){var t;rt._removeData(e,"fxshow");for(t in h)rt.style(e,t,h[t])});for(i in h)a=N(f?m[i]:0,i,d),i in m||(m[i]=a.start,f&&(a.end=a.start,a.start="width"===i||"height"===i?1:0))}}function O(e,t){var o,i,n,r,a;for(o in e)if(i=rt.camelCase(o),n=t[i],r=e[o],rt.isArray(r)&&(n=r[1],r=e[o]=r[0]),o!==i&&(e[i]=r,delete e[o]),a=rt.cssHooks[i],a&&"expand"in a){r=a.expand(r),delete e[i];for(o in r)o in e||(e[o]=r[o],t[o]=n)}else t[i]=n}function z(e,t,o){var i,n,r=0,a=Co.length,s=rt.Deferred().always(function(){delete l.elem}),l=function(){if(n)return!1;for(var t=mo||M(),o=Math.max(0,c.startTime+c.duration-t),i=o/c.duration||0,r=1-i,a=0,l=c.tweens.length;l>a;a++)c.tweens[a].run(r);return s.notifyWith(e,[c,r,o]),1>r&&l?o:(s.resolveWith(e,[c]),!1)},c=s.promise({elem:e,props:rt.extend({},t),opts:rt.extend(!0,{specialEasing:{}},o),originalProperties:t,originalOptions:o,startTime:mo||M(),duration:o.duration,tweens:[],createTween:function(t,o){var i=rt.Tween(e,c.opts,t,o,c.opts.specialEasing[t]||c.opts.easing);return c.tweens.push(i),i},stop:function(t){var o=0,i=t?c.tweens.length:0;if(n)return this;for(n=!0;i>o;o++)c.tweens[o].run(1);return t?s.resolveWith(e,[c,t]):s.rejectWith(e,[c,t]),this}}),u=c.props;for(O(u,c.opts.specialEasing);a>r;r++)if(i=Co[r].call(c,e,u,c.opts))return i;return rt.map(u,N,c),rt.isFunction(c.opts.start)&&c.opts.start.call(e,c),rt.fx.timer(rt.extend(l,{elem:e,anim:c,queue:c.opts.queue})),c.progress(c.opts.progress).done(c.opts.done,c.opts.complete).fail(c.opts.fail).always(c.opts.always)}function H(e){return function(t,o){"string"!=typeof t&&(o=t,t="*");var i,n=0,r=t.toLowerCase().match(Ct)||[];if(rt.isFunction(o))for(;i=r[n++];)"+"===i.charAt(0)?(i=i.slice(1)||"*",(e[i]=e[i]||[]).unshift(o)):(e[i]=e[i]||[]).push(o)}}function B(e,t,o,i){function n(s){var l;return r[s]=!0,rt.each(e[s]||[],function(e,s){var c=s(t,o,i);return"string"!=typeof c||a||r[c]?a?!(l=c):void 0:(t.dataTypes.unshift(c),n(c),!1)}),l}var r={},a=e===Go;return n(t.dataTypes[0])||!r["*"]&&n("*")}function U(e,t){var o,i,n=rt.ajaxSettings.flatOptions||{};for(i in t)void 0!==t[i]&&((n[i]?e:o||(o={}))[i]=t[i]);return o&&rt.extend(!0,e,o),e}function j(e,t,o){for(var i,n,r,a,s=e.contents,l=e.dataTypes;"*"===l[0];)l.shift(),void 0===n&&(n=e.mimeType||t.getResponseHeader("Content-Type"));if(n)for(a in s)if(s[a]&&s[a].test(n)){l.unshift(a);break}if(l[0]in o)r=l[0];else{for(a in o){if(!l[0]||e.converters[a+" "+l[0]]){r=a;break}i||(i=a)}r=r||i}return r?(r!==l[0]&&l.unshift(r),o[r]):void 0}function V(e,t,o,i){var n,r,a,s,l,c={},u=e.dataTypes.slice();if(u[1])for(a in e.converters)c[a.toLowerCase()]=e.converters[a];for(r=u.shift();r;)if(e.responseFields[r]&&(o[e.responseFields[r]]=t),!l&&i&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),l=r,r=u.shift())if("*"===r)r=l;else if("*"!==l&&l!==r){if(a=c[l+" "+r]||c["* "+r],!a)for(n in c)if(s=n.split(" "),s[1]===r&&(a=c[l+" "+s[0]]||c["* "+s[0]])){a===!0?a=c[n]:c[n]!==!0&&(r=s[0],u.unshift(s[1]));break}if(a!==!0)if(a&&e["throws"])t=a(t);else try{t=a(t)}catch(d){return{state:"parsererror",error:a?d:"No conversion from "+l+" to "+r}}}return{state:"success",data:t}}function W(e,t,o,i){var n;if(rt.isArray(t))rt.each(t,function(t,n){o||qo.test(e)?i(e,n):W(e+"["+("object"==typeof n?t:"")+"]",n,o,i)});else if(o||"object"!==rt.type(t))i(e,t);else for(n in t)W(e+"["+n+"]",t[n],o,i)}function G(){try{return new e.XMLHttpRequest}catch(t){}}function $(){try{return new e.ActiveXObject("Microsoft.XMLHTTP")}catch(t){}}function Y(e){return rt.isWindow(e)?e:9===e.nodeType?e.defaultView||e.parentWindow:!1}var K=[],q=K.slice,X=K.concat,J=K.push,Z=K.indexOf,Q={},et=Q.toString,tt=Q.hasOwnProperty,ot="".trim,it={},nt="1.11.0",rt=function(e,t){return new rt.fn.init(e,t)},at=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,st=/^-ms-/,lt=/-([\da-z])/gi,ct=function(e,t){return t.toUpperCase()};rt.fn=rt.prototype={jquery:nt,constructor:rt,selector:"",length:0,toArray:function(){return q.call(this)},get:function(e){return null!=e?0>e?this[e+this.length]:this[e]:q.call(this)},pushStack:function(e){var t=rt.merge(this.constructor(),e);return t.prevObject=this,t.context=this.context,t},each:function(e,t){return rt.each(this,e,t)},map:function(e){return this.pushStack(rt.map(this,function(t,o){return e.call(t,o,t)}))},slice:function(){return this.pushStack(q.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,o=+e+(0>e?t:0);return this.pushStack(o>=0&&t>o?[this[o]]:[])},end:function(){return this.prevObject||this.constructor(null)},push:J,sort:K.sort,splice:K.splice},rt.extend=rt.fn.extend=function(){var e,t,o,i,n,r,a=arguments[0]||{},s=1,l=arguments.length,c=!1;for("boolean"==typeof a&&(c=a,a=arguments[s]||{},s++),"object"==typeof a||rt.isFunction(a)||(a={}),s===l&&(a=this,s--);l>s;s++)if(null!=(n=arguments[s]))for(i in n)e=a[i],o=n[i],a!==o&&(c&&o&&(rt.isPlainObject(o)||(t=rt.isArray(o)))?(t?(t=!1,r=e&&rt.isArray(e)?e:[]):r=e&&rt.isPlainObject(e)?e:{},a[i]=rt.extend(c,r,o)):void 0!==o&&(a[i]=o));return a},rt.extend({expando:"jQuery"+(nt+Math.random()).replace(/\D/g,""),isReady:!0,error:function(e){throw new Error(e)},noop:function(){},isFunction:function(e){return"function"===rt.type(e)},isArray:Array.isArray||function(e){return"array"===rt.type(e)},isWindow:function(e){return null!=e&&e==e.window},isNumeric:function(e){return e-parseFloat(e)>=0},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},isPlainObject:function(e){var t;if(!e||"object"!==rt.type(e)||e.nodeType||rt.isWindow(e))return!1;try{if(e.constructor&&!tt.call(e,"constructor")&&!tt.call(e.constructor.prototype,"isPrototypeOf"))return!1}catch(o){return!1}if(it.ownLast)for(t in e)return tt.call(e,t);for(t in e);return void 0===t||tt.call(e,t)},type:function(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?Q[et.call(e)]||"object":typeof e},globalEval:function(t){t&&rt.trim(t)&&(e.execScript||function(t){e.eval.call(e,t)})(t)},camelCase:function(e){return e.replace(st,"ms-").replace(lt,ct)},nodeName:function(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()},each:function(e,t,i){var n,r=0,a=e.length,s=o(e);if(i){if(s)for(;a>r&&(n=t.apply(e[r],i),n!==!1);r++);else for(r in e)if(n=t.apply(e[r],i),n===!1)break}else if(s)for(;a>r&&(n=t.call(e[r],r,e[r]),n!==!1);r++);else for(r in e)if(n=t.call(e[r],r,e[r]),n===!1)break;return e},trim:ot&&!ot.call(" ")?function(e){return null==e?"":ot.call(e)}:function(e){return null==e?"":(e+"").replace(at,"")},makeArray:function(e,t){var i=t||[];return null!=e&&(o(Object(e))?rt.merge(i,"string"==typeof e?[e]:e):J.call(i,e)),i},inArray:function(e,t,o){var i;if(t){if(Z)return Z.call(t,e,o);for(i=t.length,o=o?0>o?Math.max(0,i+o):o:0;i>o;o++)if(o in t&&t[o]===e)return o}return-1},merge:function(e,t){for(var o=+t.length,i=0,n=e.length;o>i;)e[n++]=t[i++];if(o!==o)for(;void 0!==t[i];)e[n++]=t[i++];return e.length=n,e},grep:function(e,t,o){for(var i,n=[],r=0,a=e.length,s=!o;a>r;r++)i=!t(e[r],r),i!==s&&n.push(e[r]);return n},map:function(e,t,i){var n,r=0,a=e.length,s=o(e),l=[];if(s)for(;a>r;r++)n=t(e[r],r,i),null!=n&&l.push(n);else for(r in e)n=t(e[r],r,i),null!=n&&l.push(n);return X.apply([],l)},guid:1,proxy:function(e,t){var o,i,n;return"string"==typeof t&&(n=e[t],t=e,e=n),rt.isFunction(e)?(o=q.call(arguments,2),i=function(){return e.apply(t||this,o.concat(q.call(arguments)))},i.guid=e.guid=e.guid||rt.guid++,i):void 0},now:function(){return+new Date},support:it}),rt.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(e,t){Q["[object "+t+"]"]=t.toLowerCase()});var ut=function(e){function t(e,t,o,i){var n,r,a,s,l,c,d,f,m,g;if((t?t.ownerDocument||t:B)!==I&&A(t),t=t||I,o=o||[],!e||"string"!=typeof e)return o;if(1!==(s=t.nodeType)&&9!==s)return[];if(R&&!i){if(n=bt.exec(e))if(a=n[1]){if(9===s){if(r=t.getElementById(a),!r||!r.parentNode)return o;if(r.id===a)return o.push(r),o}else if(t.ownerDocument&&(r=t.ownerDocument.getElementById(a))&&z(t,r)&&r.id===a)return o.push(r),o}else{if(n[2])return Q.apply(o,t.getElementsByTagName(e)),o;if((a=n[3])&&_.getElementsByClassName&&t.getElementsByClassName)return Q.apply(o,t.getElementsByClassName(a)),o}if(_.qsa&&(!N||!N.test(e))){if(f=d=H,m=t,g=9===s&&e,1===s&&"object"!==t.nodeName.toLowerCase()){for(c=h(e),(d=t.getAttribute("id"))?f=d.replace(Ct,"\\$&"):t.setAttribute("id",f),f="[id='"+f+"'] ",l=c.length;l--;)c[l]=f+p(c[l]);m=yt.test(e)&&u(t.parentNode)||t,g=c.join(",")}if(g)try{return Q.apply(o,m.querySelectorAll(g)),o}catch(v){}finally{d||t.removeAttribute("id")}}}return w(e.replace(lt,"$1"),t,o,i)}function o(){function e(o,i){return t.push(o+" ")>S.cacheLength&&delete e[t.shift()],e[o+" "]=i}var t=[];return e}function i(e){return e[H]=!0,e}function n(e){var t=I.createElement("div");try{return!!e(t)}catch(o){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function r(e,t){for(var o=e.split("|"),i=e.length;i--;)S.attrHandle[o[i]]=t}function a(e,t){var o=t&&e,i=o&&1===e.nodeType&&1===t.nodeType&&(~t.sourceIndex||K)-(~e.sourceIndex||K);if(i)return i;if(o)for(;o=o.nextSibling;)if(o===t)return-1;return e?1:-1}function s(e){return function(t){var o=t.nodeName.toLowerCase();return"input"===o&&t.type===e}}function l(e){return function(t){var o=t.nodeName.toLowerCase();return("input"===o||"button"===o)&&t.type===e}}function c(e){return i(function(t){return t=+t,i(function(o,i){for(var n,r=e([],o.length,t),a=r.length;a--;)o[n=r[a]]&&(o[n]=!(i[n]=o[n]))})})}function u(e){return e&&typeof e.getElementsByTagName!==Y&&e}function d(){}function h(e,o){var i,n,r,a,s,l,c,u=W[e+" "];if(u)return o?0:u.slice(0);for(s=e,l=[],c=S.preFilter;s;){(!i||(n=ct.exec(s)))&&(n&&(s=s.slice(n[0].length)||s),l.push(r=[])),i=!1,(n=ut.exec(s))&&(i=n.shift(),r.push({value:i,type:n[0].replace(lt," ")}),s=s.slice(i.length));for(a in S.filter)!(n=ft[a].exec(s))||c[a]&&!(n=c[a](n))||(i=n.shift(),r.push({value:i,type:a,matches:n}),s=s.slice(i.length));if(!i)break}return o?s.length:s?t.error(e):W(e,l).slice(0)}function p(e){for(var t=0,o=e.length,i="";o>t;t++)i+=e[t].value;return i}function f(e,t,o){var i=t.dir,n=o&&"parentNode"===i,r=j++;return t.first?function(t,o,r){for(;t=t[i];)if(1===t.nodeType||n)return e(t,o,r)}:function(t,o,a){var s,l,c=[U,r];if(a){for(;t=t[i];)if((1===t.nodeType||n)&&e(t,o,a))return!0}else for(;t=t[i];)if(1===t.nodeType||n){if(l=t[H]||(t[H]={}),(s=l[i])&&s[0]===U&&s[1]===r)return c[2]=s[2];if(l[i]=c,c[2]=e(t,o,a))return!0}}}function m(e){return e.length>1?function(t,o,i){for(var n=e.length;n--;)if(!e[n](t,o,i))return!1;return!0}:e[0]}function g(e,t,o,i,n){for(var r,a=[],s=0,l=e.length,c=null!=t;l>s;s++)(r=e[s])&&(!o||o(r,i,n))&&(a.push(r),c&&t.push(s));return a}function v(e,t,o,n,r,a){return n&&!n[H]&&(n=v(n)),r&&!r[H]&&(r=v(r,a)),i(function(i,a,s,l){var c,u,d,h=[],p=[],f=a.length,m=i||C(t||"*",s.nodeType?[s]:s,[]),v=!e||!i&&t?m:g(m,h,e,s,l),b=o?r||(i?e:f||n)?[]:a:v;if(o&&o(v,b,s,l),n)for(c=g(b,p),n(c,[],s,l),u=c.length;u--;)(d=c[u])&&(b[p[u]]=!(v[p[u]]=d));if(i){if(r||e){if(r){for(c=[],u=b.length;u--;)(d=b[u])&&c.push(v[u]=d);r(null,b=[],c,l)}for(u=b.length;u--;)(d=b[u])&&(c=r?tt.call(i,d):h[u])>-1&&(i[c]=!(a[c]=d))}}else b=g(b===a?b.splice(f,b.length):b),r?r(null,a,b,l):Q.apply(a,b)})}function b(e){for(var t,o,i,n=e.length,r=S.relative[e[0].type],a=r||S.relative[" "],s=r?1:0,l=f(function(e){return e===t},a,!0),c=f(function(e){return tt.call(t,e)>-1},a,!0),u=[function(e,o,i){return!r&&(i||o!==E)||((t=o).nodeType?l(e,o,i):c(e,o,i))}];n>s;s++)if(o=S.relative[e[s].type])u=[f(m(u),o)];else{if(o=S.filter[e[s].type].apply(null,e[s].matches),o[H]){for(i=++s;n>i&&!S.relative[e[i].type];i++);return v(s>1&&m(u),s>1&&p(e.slice(0,s-1).concat({value:" "===e[s-2].type?"*":""})).replace(lt,"$1"),o,i>s&&b(e.slice(s,i)),n>i&&b(e=e.slice(i)),n>i&&p(e))}u.push(o)}return m(u)}function y(e,o){var n=o.length>0,r=e.length>0,a=function(i,a,s,l,c){var u,d,h,p=0,f="0",m=i&&[],v=[],b=E,y=i||r&&S.find.TAG("*",c),C=U+=null==b?1:Math.random()||.1,w=y.length;for(c&&(E=a!==I&&a);f!==w&&null!=(u=y[f]);f++){if(r&&u){for(d=0;h=e[d++];)if(h(u,a,s)){l.push(u);break}c&&(U=C)}n&&((u=!h&&u)&&p--,i&&m.push(u))}if(p+=f,n&&f!==p){for(d=0;h=o[d++];)h(m,v,a,s);if(i){if(p>0)for(;f--;)m[f]||v[f]||(v[f]=J.call(l));v=g(v)}Q.apply(l,v),c&&!i&&v.length>0&&p+o.length>1&&t.uniqueSort(l)}return c&&(U=C,E=b),m};return n?i(a):a}function C(e,o,i){for(var n=0,r=o.length;r>n;n++)t(e,o[n],i);return i}function w(e,t,o,i){var n,r,a,s,l,c=h(e);if(!i&&1===c.length){if(r=c[0]=c[0].slice(0),r.length>2&&"ID"===(a=r[0]).type&&_.getById&&9===t.nodeType&&R&&S.relative[r[1].type]){if(t=(S.find.ID(a.matches[0].replace(wt,xt),t)||[])[0],!t)return o;e=e.slice(r.shift().value.length)}for(n=ft.needsContext.test(e)?0:r.length;n--&&(a=r[n],!S.relative[s=a.type]);)if((l=S.find[s])&&(i=l(a.matches[0].replace(wt,xt),yt.test(r[0].type)&&u(t.parentNode)||t))){if(r.splice(n,1),e=i.length&&p(r),!e)return Q.apply(o,i),o;break}}return F(e,c)(i,t,!R,o,yt.test(e)&&u(t.parentNode)||t),o}var x,_,S,k,T,F,E,D,P,A,I,M,R,N,L,O,z,H="sizzle"+-new Date,B=e.document,U=0,j=0,V=o(),W=o(),G=o(),$=function(e,t){return e===t&&(P=!0),0},Y="undefined",K=1<<31,q={}.hasOwnProperty,X=[],J=X.pop,Z=X.push,Q=X.push,et=X.slice,tt=X.indexOf||function(e){for(var t=0,o=this.length;o>t;t++)if(this[t]===e)return t;return-1},ot="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",it="[\\x20\\t\\r\\n\\f]",nt="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",rt=nt.replace("w","w#"),at="\\["+it+"*("+nt+")"+it+"*(?:([*^$|!~]?=)"+it+"*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|("+rt+")|)|)"+it+"*\\]",st=":("+nt+")(?:\\(((['\"])((?:\\\\.|[^\\\\])*?)\\3|((?:\\\\.|[^\\\\()[\\]]|"+at.replace(3,8)+")*)|.*)\\)|)",lt=new RegExp("^"+it+"+|((?:^|[^\\\\])(?:\\\\.)*)"+it+"+$","g"),ct=new RegExp("^"+it+"*,"+it+"*"),ut=new RegExp("^"+it+"*([>+~]|"+it+")"+it+"*"),dt=new RegExp("="+it+"*([^\\]'\"]*?)"+it+"*\\]","g"),ht=new RegExp(st),pt=new RegExp("^"+rt+"$"),ft={ID:new RegExp("^#("+nt+")"),CLASS:new RegExp("^\\.("+nt+")"),TAG:new RegExp("^("+nt.replace("w","w*")+")"),ATTR:new RegExp("^"+at),PSEUDO:new RegExp("^"+st),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+it+"*(even|odd|(([+-]|)(\\d*)n|)"+it+"*(?:([+-]|)"+it+"*(\\d+)|))"+it+"*\\)|)","i"),bool:new RegExp("^(?:"+ot+")$","i"),needsContext:new RegExp("^"+it+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+it+"*((?:-\\d)?\\d*)"+it+"*\\)|)(?=[^-]|$)","i")},mt=/^(?:input|select|textarea|button)$/i,gt=/^h\d$/i,vt=/^[^{]+\{\s*\[native \w/,bt=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,yt=/[+~]/,Ct=/'|\\/g,wt=new RegExp("\\\\([\\da-f]{1,6}"+it+"?|("+it+")|.)","ig"),xt=function(e,t,o){var i="0x"+t-65536;return i!==i||o?t:0>i?String.fromCharCode(i+65536):String.fromCharCode(i>>10|55296,1023&i|56320)};try{Q.apply(X=et.call(B.childNodes),B.childNodes),X[B.childNodes.length].nodeType}catch(_t){Q={apply:X.length?function(e,t){Z.apply(e,et.call(t))}:function(e,t){for(var o=e.length,i=0;e[o++]=t[i++];);e.length=o-1}}}_=t.support={},T=t.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return t?"HTML"!==t.nodeName:!1},A=t.setDocument=function(e){var t,o=e?e.ownerDocument||e:B,i=o.defaultView;return o!==I&&9===o.nodeType&&o.documentElement?(I=o,M=o.documentElement,R=!T(o),i&&i!==i.top&&(i.addEventListener?i.addEventListener("unload",function(){A()},!1):i.attachEvent&&i.attachEvent("onunload",function(){A()})),_.attributes=n(function(e){return e.className="i",!e.getAttribute("className")}),_.getElementsByTagName=n(function(e){return e.appendChild(o.createComment("")),!e.getElementsByTagName("*").length}),_.getElementsByClassName=vt.test(o.getElementsByClassName)&&n(function(e){return e.innerHTML="<div class='a'></div><div class='a i'></div>",e.firstChild.className="i",2===e.getElementsByClassName("i").length}),_.getById=n(function(e){return M.appendChild(e).id=H,!o.getElementsByName||!o.getElementsByName(H).length}),_.getById?(S.find.ID=function(e,t){if(typeof t.getElementById!==Y&&R){var o=t.getElementById(e);return o&&o.parentNode?[o]:[]}},S.filter.ID=function(e){var t=e.replace(wt,xt);return function(e){return e.getAttribute("id")===t}}):(delete S.find.ID,S.filter.ID=function(e){var t=e.replace(wt,xt);return function(e){var o=typeof e.getAttributeNode!==Y&&e.getAttributeNode("id");return o&&o.value===t}}),S.find.TAG=_.getElementsByTagName?function(e,t){return typeof t.getElementsByTagName!==Y?t.getElementsByTagName(e):void 0}:function(e,t){var o,i=[],n=0,r=t.getElementsByTagName(e);if("*"===e){for(;o=r[n++];)1===o.nodeType&&i.push(o);return i}return r},S.find.CLASS=_.getElementsByClassName&&function(e,t){return typeof t.getElementsByClassName!==Y&&R?t.getElementsByClassName(e):void 0},L=[],N=[],(_.qsa=vt.test(o.querySelectorAll))&&(n(function(e){e.innerHTML="<select t=''><option selected=''></option></select>",e.querySelectorAll("[t^='']").length&&N.push("[*^$]="+it+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||N.push("\\["+it+"*(?:value|"+ot+")"),e.querySelectorAll(":checked").length||N.push(":checked")}),n(function(e){var t=o.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&N.push("name"+it+"*[*^$|!~]?="),e.querySelectorAll(":enabled").length||N.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),N.push(",.*:")
-})),(_.matchesSelector=vt.test(O=M.webkitMatchesSelector||M.mozMatchesSelector||M.oMatchesSelector||M.msMatchesSelector))&&n(function(e){_.disconnectedMatch=O.call(e,"div"),O.call(e,"[s!='']:x"),L.push("!=",st)}),N=N.length&&new RegExp(N.join("|")),L=L.length&&new RegExp(L.join("|")),t=vt.test(M.compareDocumentPosition),z=t||vt.test(M.contains)?function(e,t){var o=9===e.nodeType?e.documentElement:e,i=t&&t.parentNode;return e===i||!(!i||1!==i.nodeType||!(o.contains?o.contains(i):e.compareDocumentPosition&&16&e.compareDocumentPosition(i)))}:function(e,t){if(t)for(;t=t.parentNode;)if(t===e)return!0;return!1},$=t?function(e,t){if(e===t)return P=!0,0;var i=!e.compareDocumentPosition-!t.compareDocumentPosition;return i?i:(i=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1,1&i||!_.sortDetached&&t.compareDocumentPosition(e)===i?e===o||e.ownerDocument===B&&z(B,e)?-1:t===o||t.ownerDocument===B&&z(B,t)?1:D?tt.call(D,e)-tt.call(D,t):0:4&i?-1:1)}:function(e,t){if(e===t)return P=!0,0;var i,n=0,r=e.parentNode,s=t.parentNode,l=[e],c=[t];if(!r||!s)return e===o?-1:t===o?1:r?-1:s?1:D?tt.call(D,e)-tt.call(D,t):0;if(r===s)return a(e,t);for(i=e;i=i.parentNode;)l.unshift(i);for(i=t;i=i.parentNode;)c.unshift(i);for(;l[n]===c[n];)n++;return n?a(l[n],c[n]):l[n]===B?-1:c[n]===B?1:0},o):I},t.matches=function(e,o){return t(e,null,null,o)},t.matchesSelector=function(e,o){if((e.ownerDocument||e)!==I&&A(e),o=o.replace(dt,"='$1']"),!(!_.matchesSelector||!R||L&&L.test(o)||N&&N.test(o)))try{var i=O.call(e,o);if(i||_.disconnectedMatch||e.document&&11!==e.document.nodeType)return i}catch(n){}return t(o,I,null,[e]).length>0},t.contains=function(e,t){return(e.ownerDocument||e)!==I&&A(e),z(e,t)},t.attr=function(e,t){(e.ownerDocument||e)!==I&&A(e);var o=S.attrHandle[t.toLowerCase()],i=o&&q.call(S.attrHandle,t.toLowerCase())?o(e,t,!R):void 0;return void 0!==i?i:_.attributes||!R?e.getAttribute(t):(i=e.getAttributeNode(t))&&i.specified?i.value:null},t.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},t.uniqueSort=function(e){var t,o=[],i=0,n=0;if(P=!_.detectDuplicates,D=!_.sortStable&&e.slice(0),e.sort($),P){for(;t=e[n++];)t===e[n]&&(i=o.push(n));for(;i--;)e.splice(o[i],1)}return D=null,e},k=t.getText=function(e){var t,o="",i=0,n=e.nodeType;if(n){if(1===n||9===n||11===n){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)o+=k(e)}else if(3===n||4===n)return e.nodeValue}else for(;t=e[i++];)o+=k(t);return o},S=t.selectors={cacheLength:50,createPseudo:i,match:ft,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(wt,xt),e[3]=(e[4]||e[5]||"").replace(wt,xt),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||t.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&t.error(e[0]),e},PSEUDO:function(e){var t,o=!e[5]&&e[2];return ft.CHILD.test(e[0])?null:(e[3]&&void 0!==e[4]?e[2]=e[4]:o&&ht.test(o)&&(t=h(o,!0))&&(t=o.indexOf(")",o.length-t)-o.length)&&(e[0]=e[0].slice(0,t),e[2]=o.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(wt,xt).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=V[e+" "];return t||(t=new RegExp("(^|"+it+")"+e+"("+it+"|$)"))&&V(e,function(e){return t.test("string"==typeof e.className&&e.className||typeof e.getAttribute!==Y&&e.getAttribute("class")||"")})},ATTR:function(e,o,i){return function(n){var r=t.attr(n,e);return null==r?"!="===o:o?(r+="","="===o?r===i:"!="===o?r!==i:"^="===o?i&&0===r.indexOf(i):"*="===o?i&&r.indexOf(i)>-1:"$="===o?i&&r.slice(-i.length)===i:"~="===o?(" "+r+" ").indexOf(i)>-1:"|="===o?r===i||r.slice(0,i.length+1)===i+"-":!1):!0}},CHILD:function(e,t,o,i,n){var r="nth"!==e.slice(0,3),a="last"!==e.slice(-4),s="of-type"===t;return 1===i&&0===n?function(e){return!!e.parentNode}:function(t,o,l){var c,u,d,h,p,f,m=r!==a?"nextSibling":"previousSibling",g=t.parentNode,v=s&&t.nodeName.toLowerCase(),b=!l&&!s;if(g){if(r){for(;m;){for(d=t;d=d[m];)if(s?d.nodeName.toLowerCase()===v:1===d.nodeType)return!1;f=m="only"===e&&!f&&"nextSibling"}return!0}if(f=[a?g.firstChild:g.lastChild],a&&b){for(u=g[H]||(g[H]={}),c=u[e]||[],p=c[0]===U&&c[1],h=c[0]===U&&c[2],d=p&&g.childNodes[p];d=++p&&d&&d[m]||(h=p=0)||f.pop();)if(1===d.nodeType&&++h&&d===t){u[e]=[U,p,h];break}}else if(b&&(c=(t[H]||(t[H]={}))[e])&&c[0]===U)h=c[1];else for(;(d=++p&&d&&d[m]||(h=p=0)||f.pop())&&((s?d.nodeName.toLowerCase()!==v:1!==d.nodeType)||!++h||(b&&((d[H]||(d[H]={}))[e]=[U,h]),d!==t)););return h-=n,h===i||h%i===0&&h/i>=0}}},PSEUDO:function(e,o){var n,r=S.pseudos[e]||S.setFilters[e.toLowerCase()]||t.error("unsupported pseudo: "+e);return r[H]?r(o):r.length>1?(n=[e,e,"",o],S.setFilters.hasOwnProperty(e.toLowerCase())?i(function(e,t){for(var i,n=r(e,o),a=n.length;a--;)i=tt.call(e,n[a]),e[i]=!(t[i]=n[a])}):function(e){return r(e,0,n)}):r}},pseudos:{not:i(function(e){var t=[],o=[],n=F(e.replace(lt,"$1"));return n[H]?i(function(e,t,o,i){for(var r,a=n(e,null,i,[]),s=e.length;s--;)(r=a[s])&&(e[s]=!(t[s]=r))}):function(e,i,r){return t[0]=e,n(t,null,r,o),!o.pop()}}),has:i(function(e){return function(o){return t(e,o).length>0}}),contains:i(function(e){return function(t){return(t.textContent||t.innerText||k(t)).indexOf(e)>-1}}),lang:i(function(e){return pt.test(e||"")||t.error("unsupported lang: "+e),e=e.replace(wt,xt).toLowerCase(),function(t){var o;do if(o=R?t.lang:t.getAttribute("xml:lang")||t.getAttribute("lang"))return o=o.toLowerCase(),o===e||0===o.indexOf(e+"-");while((t=t.parentNode)&&1===t.nodeType);return!1}}),target:function(t){var o=e.location&&e.location.hash;return o&&o.slice(1)===t.id},root:function(e){return e===M},focus:function(e){return e===I.activeElement&&(!I.hasFocus||I.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:function(e){return e.disabled===!1},disabled:function(e){return e.disabled===!0},checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,e.selected===!0},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!S.pseudos.empty(e)},header:function(e){return gt.test(e.nodeName)},input:function(e){return mt.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:c(function(){return[0]}),last:c(function(e,t){return[t-1]}),eq:c(function(e,t,o){return[0>o?o+t:o]}),even:c(function(e,t){for(var o=0;t>o;o+=2)e.push(o);return e}),odd:c(function(e,t){for(var o=1;t>o;o+=2)e.push(o);return e}),lt:c(function(e,t,o){for(var i=0>o?o+t:o;--i>=0;)e.push(i);return e}),gt:c(function(e,t,o){for(var i=0>o?o+t:o;++i<t;)e.push(i);return e})}},S.pseudos.nth=S.pseudos.eq;for(x in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})S.pseudos[x]=s(x);for(x in{submit:!0,reset:!0})S.pseudos[x]=l(x);return d.prototype=S.filters=S.pseudos,S.setFilters=new d,F=t.compile=function(e,t){var o,i=[],n=[],r=G[e+" "];if(!r){for(t||(t=h(e)),o=t.length;o--;)r=b(t[o]),r[H]?i.push(r):n.push(r);r=G(e,y(n,i))}return r},_.sortStable=H.split("").sort($).join("")===H,_.detectDuplicates=!!P,A(),_.sortDetached=n(function(e){return 1&e.compareDocumentPosition(I.createElement("div"))}),n(function(e){return e.innerHTML="<a href='#'></a>","#"===e.firstChild.getAttribute("href")})||r("type|href|height|width",function(e,t,o){return o?void 0:e.getAttribute(t,"type"===t.toLowerCase()?1:2)}),_.attributes&&n(function(e){return e.innerHTML="<input/>",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||r("value",function(e,t,o){return o||"input"!==e.nodeName.toLowerCase()?void 0:e.defaultValue}),n(function(e){return null==e.getAttribute("disabled")})||r(ot,function(e,t,o){var i;return o?void 0:e[t]===!0?t.toLowerCase():(i=e.getAttributeNode(t))&&i.specified?i.value:null}),t}(e);rt.find=ut,rt.expr=ut.selectors,rt.expr[":"]=rt.expr.pseudos,rt.unique=ut.uniqueSort,rt.text=ut.getText,rt.isXMLDoc=ut.isXML,rt.contains=ut.contains;var dt=rt.expr.match.needsContext,ht=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,pt=/^.[^:#\[\.,]*$/;rt.filter=function(e,t,o){var i=t[0];return o&&(e=":not("+e+")"),1===t.length&&1===i.nodeType?rt.find.matchesSelector(i,e)?[i]:[]:rt.find.matches(e,rt.grep(t,function(e){return 1===e.nodeType}))},rt.fn.extend({find:function(e){var t,o=[],i=this,n=i.length;if("string"!=typeof e)return this.pushStack(rt(e).filter(function(){for(t=0;n>t;t++)if(rt.contains(i[t],this))return!0}));for(t=0;n>t;t++)rt.find(e,i[t],o);return o=this.pushStack(n>1?rt.unique(o):o),o.selector=this.selector?this.selector+" "+e:e,o},filter:function(e){return this.pushStack(i(this,e||[],!1))},not:function(e){return this.pushStack(i(this,e||[],!0))},is:function(e){return!!i(this,"string"==typeof e&&dt.test(e)?rt(e):e||[],!1).length}});var ft,mt=e.document,gt=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,vt=rt.fn.init=function(e,t){var o,i;if(!e)return this;if("string"==typeof e){if(o="<"===e.charAt(0)&&">"===e.charAt(e.length-1)&&e.length>=3?[null,e,null]:gt.exec(e),!o||!o[1]&&t)return!t||t.jquery?(t||ft).find(e):this.constructor(t).find(e);if(o[1]){if(t=t instanceof rt?t[0]:t,rt.merge(this,rt.parseHTML(o[1],t&&t.nodeType?t.ownerDocument||t:mt,!0)),ht.test(o[1])&&rt.isPlainObject(t))for(o in t)rt.isFunction(this[o])?this[o](t[o]):this.attr(o,t[o]);return this}if(i=mt.getElementById(o[2]),i&&i.parentNode){if(i.id!==o[2])return ft.find(e);this.length=1,this[0]=i}return this.context=mt,this.selector=e,this}return e.nodeType?(this.context=this[0]=e,this.length=1,this):rt.isFunction(e)?"undefined"!=typeof ft.ready?ft.ready(e):e(rt):(void 0!==e.selector&&(this.selector=e.selector,this.context=e.context),rt.makeArray(e,this))};vt.prototype=rt.fn,ft=rt(mt);var bt=/^(?:parents|prev(?:Until|All))/,yt={children:!0,contents:!0,next:!0,prev:!0};rt.extend({dir:function(e,t,o){for(var i=[],n=e[t];n&&9!==n.nodeType&&(void 0===o||1!==n.nodeType||!rt(n).is(o));)1===n.nodeType&&i.push(n),n=n[t];return i},sibling:function(e,t){for(var o=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&o.push(e);return o}}),rt.fn.extend({has:function(e){var t,o=rt(e,this),i=o.length;return this.filter(function(){for(t=0;i>t;t++)if(rt.contains(this,o[t]))return!0})},closest:function(e,t){for(var o,i=0,n=this.length,r=[],a=dt.test(e)||"string"!=typeof e?rt(e,t||this.context):0;n>i;i++)for(o=this[i];o&&o!==t;o=o.parentNode)if(o.nodeType<11&&(a?a.index(o)>-1:1===o.nodeType&&rt.find.matchesSelector(o,e))){r.push(o);break}return this.pushStack(r.length>1?rt.unique(r):r)},index:function(e){return e?"string"==typeof e?rt.inArray(this[0],rt(e)):rt.inArray(e.jquery?e[0]:e,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(rt.unique(rt.merge(this.get(),rt(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),rt.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return rt.dir(e,"parentNode")},parentsUntil:function(e,t,o){return rt.dir(e,"parentNode",o)},next:function(e){return n(e,"nextSibling")},prev:function(e){return n(e,"previousSibling")},nextAll:function(e){return rt.dir(e,"nextSibling")},prevAll:function(e){return rt.dir(e,"previousSibling")},nextUntil:function(e,t,o){return rt.dir(e,"nextSibling",o)},prevUntil:function(e,t,o){return rt.dir(e,"previousSibling",o)},siblings:function(e){return rt.sibling((e.parentNode||{}).firstChild,e)},children:function(e){return rt.sibling(e.firstChild)},contents:function(e){return rt.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:rt.merge([],e.childNodes)}},function(e,t){rt.fn[e]=function(o,i){var n=rt.map(this,t,o);return"Until"!==e.slice(-5)&&(i=o),i&&"string"==typeof i&&(n=rt.filter(i,n)),this.length>1&&(yt[e]||(n=rt.unique(n)),bt.test(e)&&(n=n.reverse())),this.pushStack(n)}});var Ct=/\S+/g,wt={};rt.Callbacks=function(e){e="string"==typeof e?wt[e]||r(e):rt.extend({},e);var t,o,i,n,a,s,l=[],c=!e.once&&[],u=function(r){for(o=e.memory&&r,i=!0,a=s||0,s=0,n=l.length,t=!0;l&&n>a;a++)if(l[a].apply(r[0],r[1])===!1&&e.stopOnFalse){o=!1;break}t=!1,l&&(c?c.length&&u(c.shift()):o?l=[]:d.disable())},d={add:function(){if(l){var i=l.length;!function r(t){rt.each(t,function(t,o){var i=rt.type(o);"function"===i?e.unique&&d.has(o)||l.push(o):o&&o.length&&"string"!==i&&r(o)})}(arguments),t?n=l.length:o&&(s=i,u(o))}return this},remove:function(){return l&&rt.each(arguments,function(e,o){for(var i;(i=rt.inArray(o,l,i))>-1;)l.splice(i,1),t&&(n>=i&&n--,a>=i&&a--)}),this},has:function(e){return e?rt.inArray(e,l)>-1:!(!l||!l.length)},empty:function(){return l=[],n=0,this},disable:function(){return l=c=o=void 0,this},disabled:function(){return!l},lock:function(){return c=void 0,o||d.disable(),this},locked:function(){return!c},fireWith:function(e,o){return!l||i&&!c||(o=o||[],o=[e,o.slice?o.slice():o],t?c.push(o):u(o)),this},fire:function(){return d.fireWith(this,arguments),this},fired:function(){return!!i}};return d},rt.extend({Deferred:function(e){var t=[["resolve","done",rt.Callbacks("once memory"),"resolved"],["reject","fail",rt.Callbacks("once memory"),"rejected"],["notify","progress",rt.Callbacks("memory")]],o="pending",i={state:function(){return o},always:function(){return n.done(arguments).fail(arguments),this},then:function(){var e=arguments;return rt.Deferred(function(o){rt.each(t,function(t,r){var a=rt.isFunction(e[t])&&e[t];n[r[1]](function(){var e=a&&a.apply(this,arguments);e&&rt.isFunction(e.promise)?e.promise().done(o.resolve).fail(o.reject).progress(o.notify):o[r[0]+"With"](this===i?o.promise():this,a?[e]:arguments)})}),e=null}).promise()},promise:function(e){return null!=e?rt.extend(e,i):i}},n={};return i.pipe=i.then,rt.each(t,function(e,r){var a=r[2],s=r[3];i[r[1]]=a.add,s&&a.add(function(){o=s},t[1^e][2].disable,t[2][2].lock),n[r[0]]=function(){return n[r[0]+"With"](this===n?i:this,arguments),this},n[r[0]+"With"]=a.fireWith}),i.promise(n),e&&e.call(n,n),n},when:function(e){var t,o,i,n=0,r=q.call(arguments),a=r.length,s=1!==a||e&&rt.isFunction(e.promise)?a:0,l=1===s?e:rt.Deferred(),c=function(e,o,i){return function(n){o[e]=this,i[e]=arguments.length>1?q.call(arguments):n,i===t?l.notifyWith(o,i):--s||l.resolveWith(o,i)}};if(a>1)for(t=new Array(a),o=new Array(a),i=new Array(a);a>n;n++)r[n]&&rt.isFunction(r[n].promise)?r[n].promise().done(c(n,i,r)).fail(l.reject).progress(c(n,o,t)):--s;return s||l.resolveWith(i,r),l.promise()}});var xt;rt.fn.ready=function(e){return rt.ready.promise().done(e),this},rt.extend({isReady:!1,readyWait:1,holdReady:function(e){e?rt.readyWait++:rt.ready(!0)},ready:function(e){if(e===!0?!--rt.readyWait:!rt.isReady){if(!mt.body)return setTimeout(rt.ready);rt.isReady=!0,e!==!0&&--rt.readyWait>0||(xt.resolveWith(mt,[rt]),rt.fn.trigger&&rt(mt).trigger("ready").off("ready"))}}}),rt.ready.promise=function(t){if(!xt)if(xt=rt.Deferred(),"complete"===mt.readyState)setTimeout(rt.ready);else if(mt.addEventListener)mt.addEventListener("DOMContentLoaded",s,!1),e.addEventListener("load",s,!1);else{mt.attachEvent("onreadystatechange",s),e.attachEvent("onload",s);var o=!1;try{o=null==e.frameElement&&mt.documentElement}catch(i){}o&&o.doScroll&&!function n(){if(!rt.isReady){try{o.doScroll("left")}catch(e){return setTimeout(n,50)}a(),rt.ready()}}()}return xt.promise(t)};var _t,St="undefined";for(_t in rt(it))break;it.ownLast="0"!==_t,it.inlineBlockNeedsLayout=!1,rt(function(){var e,t,o=mt.getElementsByTagName("body")[0];o&&(e=mt.createElement("div"),e.style.cssText="border:0;width:0;height:0;position:absolute;top:0;left:-9999px;margin-top:1px",t=mt.createElement("div"),o.appendChild(e).appendChild(t),typeof t.style.zoom!==St&&(t.style.cssText="border:0;margin:0;width:1px;padding:1px;display:inline;zoom:1",(it.inlineBlockNeedsLayout=3===t.offsetWidth)&&(o.style.zoom=1)),o.removeChild(e),e=t=null)}),function(){var e=mt.createElement("div");if(null==it.deleteExpando){it.deleteExpando=!0;try{delete e.test}catch(t){it.deleteExpando=!1}}e=null}(),rt.acceptData=function(e){var t=rt.noData[(e.nodeName+" ").toLowerCase()],o=+e.nodeType||1;return 1!==o&&9!==o?!1:!t||t!==!0&&e.getAttribute("classid")===t};var kt=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,Tt=/([A-Z])/g;rt.extend({cache:{},noData:{"applet ":!0,"embed ":!0,"object ":"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"},hasData:function(e){return e=e.nodeType?rt.cache[e[rt.expando]]:e[rt.expando],!!e&&!c(e)},data:function(e,t,o){return u(e,t,o)},removeData:function(e,t){return d(e,t)},_data:function(e,t,o){return u(e,t,o,!0)},_removeData:function(e,t){return d(e,t,!0)}}),rt.fn.extend({data:function(e,t){var o,i,n,r=this[0],a=r&&r.attributes;if(void 0===e){if(this.length&&(n=rt.data(r),1===r.nodeType&&!rt._data(r,"parsedAttrs"))){for(o=a.length;o--;)i=a[o].name,0===i.indexOf("data-")&&(i=rt.camelCase(i.slice(5)),l(r,i,n[i]));rt._data(r,"parsedAttrs",!0)}return n}return"object"==typeof e?this.each(function(){rt.data(this,e)}):arguments.length>1?this.each(function(){rt.data(this,e,t)}):r?l(r,e,rt.data(r,e)):void 0},removeData:function(e){return this.each(function(){rt.removeData(this,e)})}}),rt.extend({queue:function(e,t,o){var i;return e?(t=(t||"fx")+"queue",i=rt._data(e,t),o&&(!i||rt.isArray(o)?i=rt._data(e,t,rt.makeArray(o)):i.push(o)),i||[]):void 0},dequeue:function(e,t){t=t||"fx";var o=rt.queue(e,t),i=o.length,n=o.shift(),r=rt._queueHooks(e,t),a=function(){rt.dequeue(e,t)};"inprogress"===n&&(n=o.shift(),i--),n&&("fx"===t&&o.unshift("inprogress"),delete r.stop,n.call(e,a,r)),!i&&r&&r.empty.fire()},_queueHooks:function(e,t){var o=t+"queueHooks";return rt._data(e,o)||rt._data(e,o,{empty:rt.Callbacks("once memory").add(function(){rt._removeData(e,t+"queue"),rt._removeData(e,o)})})}}),rt.fn.extend({queue:function(e,t){var o=2;return"string"!=typeof e&&(t=e,e="fx",o--),arguments.length<o?rt.queue(this[0],e):void 0===t?this:this.each(function(){var o=rt.queue(this,e,t);rt._queueHooks(this,e),"fx"===e&&"inprogress"!==o[0]&&rt.dequeue(this,e)})},dequeue:function(e){return this.each(function(){rt.dequeue(this,e)})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,t){var o,i=1,n=rt.Deferred(),r=this,a=this.length,s=function(){--i||n.resolveWith(r,[r])};for("string"!=typeof e&&(t=e,e=void 0),e=e||"fx";a--;)o=rt._data(r[a],e+"queueHooks"),o&&o.empty&&(i++,o.empty.add(s));return s(),n.promise(t)}});var Ft=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,Et=["Top","Right","Bottom","Left"],Dt=function(e,t){return e=t||e,"none"===rt.css(e,"display")||!rt.contains(e.ownerDocument,e)},Pt=rt.access=function(e,t,o,i,n,r,a){var s=0,l=e.length,c=null==o;if("object"===rt.type(o)){n=!0;for(s in o)rt.access(e,t,s,o[s],!0,r,a)}else if(void 0!==i&&(n=!0,rt.isFunction(i)||(a=!0),c&&(a?(t.call(e,i),t=null):(c=t,t=function(e,t,o){return c.call(rt(e),o)})),t))for(;l>s;s++)t(e[s],o,a?i:i.call(e[s],s,t(e[s],o)));return n?e:c?t.call(e):l?t(e[0],o):r},At=/^(?:checkbox|radio)$/i;!function(){var e=mt.createDocumentFragment(),t=mt.createElement("div"),o=mt.createElement("input");if(t.setAttribute("className","t"),t.innerHTML="  <link/><table></table><a href='/a'>a</a>",it.leadingWhitespace=3===t.firstChild.nodeType,it.tbody=!t.getElementsByTagName("tbody").length,it.htmlSerialize=!!t.getElementsByTagName("link").length,it.html5Clone="<:nav></:nav>"!==mt.createElement("nav").cloneNode(!0).outerHTML,o.type="checkbox",o.checked=!0,e.appendChild(o),it.appendChecked=o.checked,t.innerHTML="<textarea>x</textarea>",it.noCloneChecked=!!t.cloneNode(!0).lastChild.defaultValue,e.appendChild(t),t.innerHTML="<input type='radio' checked='checked' name='t'/>",it.checkClone=t.cloneNode(!0).cloneNode(!0).lastChild.checked,it.noCloneEvent=!0,t.attachEvent&&(t.attachEvent("onclick",function(){it.noCloneEvent=!1}),t.cloneNode(!0).click()),null==it.deleteExpando){it.deleteExpando=!0;try{delete t.test}catch(i){it.deleteExpando=!1}}e=t=o=null}(),function(){var t,o,i=mt.createElement("div");for(t in{submit:!0,change:!0,focusin:!0})o="on"+t,(it[t+"Bubbles"]=o in e)||(i.setAttribute(o,"t"),it[t+"Bubbles"]=i.attributes[o].expando===!1);i=null}();var It=/^(?:input|select|textarea)$/i,Mt=/^key/,Rt=/^(?:mouse|contextmenu)|click/,Nt=/^(?:focusinfocus|focusoutblur)$/,Lt=/^([^.]*)(?:\.(.+)|)$/;rt.event={global:{},add:function(e,t,o,i,n){var r,a,s,l,c,u,d,h,p,f,m,g=rt._data(e);if(g){for(o.handler&&(l=o,o=l.handler,n=l.selector),o.guid||(o.guid=rt.guid++),(a=g.events)||(a=g.events={}),(u=g.handle)||(u=g.handle=function(e){return typeof rt===St||e&&rt.event.triggered===e.type?void 0:rt.event.dispatch.apply(u.elem,arguments)},u.elem=e),t=(t||"").match(Ct)||[""],s=t.length;s--;)r=Lt.exec(t[s])||[],p=m=r[1],f=(r[2]||"").split(".").sort(),p&&(c=rt.event.special[p]||{},p=(n?c.delegateType:c.bindType)||p,c=rt.event.special[p]||{},d=rt.extend({type:p,origType:m,data:i,handler:o,guid:o.guid,selector:n,needsContext:n&&rt.expr.match.needsContext.test(n),namespace:f.join(".")},l),(h=a[p])||(h=a[p]=[],h.delegateCount=0,c.setup&&c.setup.call(e,i,f,u)!==!1||(e.addEventListener?e.addEventListener(p,u,!1):e.attachEvent&&e.attachEvent("on"+p,u))),c.add&&(c.add.call(e,d),d.handler.guid||(d.handler.guid=o.guid)),n?h.splice(h.delegateCount++,0,d):h.push(d),rt.event.global[p]=!0);e=null}},remove:function(e,t,o,i,n){var r,a,s,l,c,u,d,h,p,f,m,g=rt.hasData(e)&&rt._data(e);if(g&&(u=g.events)){for(t=(t||"").match(Ct)||[""],c=t.length;c--;)if(s=Lt.exec(t[c])||[],p=m=s[1],f=(s[2]||"").split(".").sort(),p){for(d=rt.event.special[p]||{},p=(i?d.delegateType:d.bindType)||p,h=u[p]||[],s=s[2]&&new RegExp("(^|\\.)"+f.join("\\.(?:.*\\.|)")+"(\\.|$)"),l=r=h.length;r--;)a=h[r],!n&&m!==a.origType||o&&o.guid!==a.guid||s&&!s.test(a.namespace)||i&&i!==a.selector&&("**"!==i||!a.selector)||(h.splice(r,1),a.selector&&h.delegateCount--,d.remove&&d.remove.call(e,a));l&&!h.length&&(d.teardown&&d.teardown.call(e,f,g.handle)!==!1||rt.removeEvent(e,p,g.handle),delete u[p])}else for(p in u)rt.event.remove(e,p+t[c],o,i,!0);rt.isEmptyObject(u)&&(delete g.handle,rt._removeData(e,"events"))}},trigger:function(t,o,i,n){var r,a,s,l,c,u,d,h=[i||mt],p=tt.call(t,"type")?t.type:t,f=tt.call(t,"namespace")?t.namespace.split("."):[];if(s=u=i=i||mt,3!==i.nodeType&&8!==i.nodeType&&!Nt.test(p+rt.event.triggered)&&(p.indexOf(".")>=0&&(f=p.split("."),p=f.shift(),f.sort()),a=p.indexOf(":")<0&&"on"+p,t=t[rt.expando]?t:new rt.Event(p,"object"==typeof t&&t),t.isTrigger=n?2:3,t.namespace=f.join("."),t.namespace_re=t.namespace?new RegExp("(^|\\.)"+f.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,t.result=void 0,t.target||(t.target=i),o=null==o?[t]:rt.makeArray(o,[t]),c=rt.event.special[p]||{},n||!c.trigger||c.trigger.apply(i,o)!==!1)){if(!n&&!c.noBubble&&!rt.isWindow(i)){for(l=c.delegateType||p,Nt.test(l+p)||(s=s.parentNode);s;s=s.parentNode)h.push(s),u=s;u===(i.ownerDocument||mt)&&h.push(u.defaultView||u.parentWindow||e)}for(d=0;(s=h[d++])&&!t.isPropagationStopped();)t.type=d>1?l:c.bindType||p,r=(rt._data(s,"events")||{})[t.type]&&rt._data(s,"handle"),r&&r.apply(s,o),r=a&&s[a],r&&r.apply&&rt.acceptData(s)&&(t.result=r.apply(s,o),t.result===!1&&t.preventDefault());if(t.type=p,!n&&!t.isDefaultPrevented()&&(!c._default||c._default.apply(h.pop(),o)===!1)&&rt.acceptData(i)&&a&&i[p]&&!rt.isWindow(i)){u=i[a],u&&(i[a]=null),rt.event.triggered=p;try{i[p]()}catch(m){}rt.event.triggered=void 0,u&&(i[a]=u)}return t.result}},dispatch:function(e){e=rt.event.fix(e);var t,o,i,n,r,a=[],s=q.call(arguments),l=(rt._data(this,"events")||{})[e.type]||[],c=rt.event.special[e.type]||{};if(s[0]=e,e.delegateTarget=this,!c.preDispatch||c.preDispatch.call(this,e)!==!1){for(a=rt.event.handlers.call(this,e,l),t=0;(n=a[t++])&&!e.isPropagationStopped();)for(e.currentTarget=n.elem,r=0;(i=n.handlers[r++])&&!e.isImmediatePropagationStopped();)(!e.namespace_re||e.namespace_re.test(i.namespace))&&(e.handleObj=i,e.data=i.data,o=((rt.event.special[i.origType]||{}).handle||i.handler).apply(n.elem,s),void 0!==o&&(e.result=o)===!1&&(e.preventDefault(),e.stopPropagation()));return c.postDispatch&&c.postDispatch.call(this,e),e.result}},handlers:function(e,t){var o,i,n,r,a=[],s=t.delegateCount,l=e.target;if(s&&l.nodeType&&(!e.button||"click"!==e.type))for(;l!=this;l=l.parentNode||this)if(1===l.nodeType&&(l.disabled!==!0||"click"!==e.type)){for(n=[],r=0;s>r;r++)i=t[r],o=i.selector+" ",void 0===n[o]&&(n[o]=i.needsContext?rt(o,this).index(l)>=0:rt.find(o,this,null,[l]).length),n[o]&&n.push(i);n.length&&a.push({elem:l,handlers:n})}return s<t.length&&a.push({elem:this,handlers:t.slice(s)}),a},fix:function(e){if(e[rt.expando])return e;var t,o,i,n=e.type,r=e,a=this.fixHooks[n];for(a||(this.fixHooks[n]=a=Rt.test(n)?this.mouseHooks:Mt.test(n)?this.keyHooks:{}),i=a.props?this.props.concat(a.props):this.props,e=new rt.Event(r),t=i.length;t--;)o=i[t],e[o]=r[o];return e.target||(e.target=r.srcElement||mt),3===e.target.nodeType&&(e.target=e.target.parentNode),e.metaKey=!!e.metaKey,a.filter?a.filter(e,r):e},props:"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(e,t){return null==e.which&&(e.which=null!=t.charCode?t.charCode:t.keyCode),e}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(e,t){var o,i,n,r=t.button,a=t.fromElement;return null==e.pageX&&null!=t.clientX&&(i=e.target.ownerDocument||mt,n=i.documentElement,o=i.body,e.pageX=t.clientX+(n&&n.scrollLeft||o&&o.scrollLeft||0)-(n&&n.clientLeft||o&&o.clientLeft||0),e.pageY=t.clientY+(n&&n.scrollTop||o&&o.scrollTop||0)-(n&&n.clientTop||o&&o.clientTop||0)),!e.relatedTarget&&a&&(e.relatedTarget=a===e.target?t.toElement:a),e.which||void 0===r||(e.which=1&r?1:2&r?3:4&r?2:0),e}},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==f()&&this.focus)try{return this.focus(),!1}catch(e){}},delegateType:"focusin"},blur:{trigger:function(){return this===f()&&this.blur?(this.blur(),!1):void 0},delegateType:"focusout"},click:{trigger:function(){return rt.nodeName(this,"input")&&"checkbox"===this.type&&this.click?(this.click(),!1):void 0},_default:function(e){return rt.nodeName(e.target,"a")}},beforeunload:{postDispatch:function(e){void 0!==e.result&&(e.originalEvent.returnValue=e.result)}}},simulate:function(e,t,o,i){var n=rt.extend(new rt.Event,o,{type:e,isSimulated:!0,originalEvent:{}});i?rt.event.trigger(n,null,t):rt.event.dispatch.call(t,n),n.isDefaultPrevented()&&o.preventDefault()}},rt.removeEvent=mt.removeEventListener?function(e,t,o){e.removeEventListener&&e.removeEventListener(t,o,!1)}:function(e,t,o){var i="on"+t;e.detachEvent&&(typeof e[i]===St&&(e[i]=null),e.detachEvent(i,o))},rt.Event=function(e,t){return this instanceof rt.Event?(e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||void 0===e.defaultPrevented&&(e.returnValue===!1||e.getPreventDefault&&e.getPreventDefault())?h:p):this.type=e,t&&rt.extend(this,t),this.timeStamp=e&&e.timeStamp||rt.now(),void(this[rt.expando]=!0)):new rt.Event(e,t)},rt.Event.prototype={isDefaultPrevented:p,isPropagationStopped:p,isImmediatePropagationStopped:p,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=h,e&&(e.preventDefault?e.preventDefault():e.returnValue=!1)},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=h,e&&(e.stopPropagation&&e.stopPropagation(),e.cancelBubble=!0)},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=h,this.stopPropagation()}},rt.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(e,t){rt.event.special[e]={delegateType:t,bindType:t,handle:function(e){var o,i=this,n=e.relatedTarget,r=e.handleObj;return(!n||n!==i&&!rt.contains(i,n))&&(e.type=r.origType,o=r.handler.apply(this,arguments),e.type=t),o}}}),it.submitBubbles||(rt.event.special.submit={setup:function(){return rt.nodeName(this,"form")?!1:void rt.event.add(this,"click._submit keypress._submit",function(e){var t=e.target,o=rt.nodeName(t,"input")||rt.nodeName(t,"button")?t.form:void 0;o&&!rt._data(o,"submitBubbles")&&(rt.event.add(o,"submit._submit",function(e){e._submit_bubble=!0}),rt._data(o,"submitBubbles",!0))})},postDispatch:function(e){e._submit_bubble&&(delete e._submit_bubble,this.parentNode&&!e.isTrigger&&rt.event.simulate("submit",this.parentNode,e,!0))},teardown:function(){return rt.nodeName(this,"form")?!1:void rt.event.remove(this,"._submit")}}),it.changeBubbles||(rt.event.special.change={setup:function(){return It.test(this.nodeName)?(("checkbox"===this.type||"radio"===this.type)&&(rt.event.add(this,"propertychange._change",function(e){"checked"===e.originalEvent.propertyName&&(this._just_changed=!0)}),rt.event.add(this,"click._change",function(e){this._just_changed&&!e.isTrigger&&(this._just_changed=!1),rt.event.simulate("change",this,e,!0)})),!1):void rt.event.add(this,"beforeactivate._change",function(e){var t=e.target;It.test(t.nodeName)&&!rt._data(t,"changeBubbles")&&(rt.event.add(t,"change._change",function(e){!this.parentNode||e.isSimulated||e.isTrigger||rt.event.simulate("change",this.parentNode,e,!0)}),rt._data(t,"changeBubbles",!0))})},handle:function(e){var t=e.target;return this!==t||e.isSimulated||e.isTrigger||"radio"!==t.type&&"checkbox"!==t.type?e.handleObj.handler.apply(this,arguments):void 0},teardown:function(){return rt.event.remove(this,"._change"),!It.test(this.nodeName)}}),it.focusinBubbles||rt.each({focus:"focusin",blur:"focusout"},function(e,t){var o=function(e){rt.event.simulate(t,e.target,rt.event.fix(e),!0)};rt.event.special[t]={setup:function(){var i=this.ownerDocument||this,n=rt._data(i,t);n||i.addEventListener(e,o,!0),rt._data(i,t,(n||0)+1)},teardown:function(){var i=this.ownerDocument||this,n=rt._data(i,t)-1;n?rt._data(i,t,n):(i.removeEventListener(e,o,!0),rt._removeData(i,t))}}}),rt.fn.extend({on:function(e,t,o,i,n){var r,a;if("object"==typeof e){"string"!=typeof t&&(o=o||t,t=void 0);for(r in e)this.on(r,t,o,e[r],n);return this}if(null==o&&null==i?(i=t,o=t=void 0):null==i&&("string"==typeof t?(i=o,o=void 0):(i=o,o=t,t=void 0)),i===!1)i=p;else if(!i)return this;return 1===n&&(a=i,i=function(e){return rt().off(e),a.apply(this,arguments)},i.guid=a.guid||(a.guid=rt.guid++)),this.each(function(){rt.event.add(this,e,i,o,t)})},one:function(e,t,o,i){return this.on(e,t,o,i,1)},off:function(e,t,o){var i,n;if(e&&e.preventDefault&&e.handleObj)return i=e.handleObj,rt(e.delegateTarget).off(i.namespace?i.origType+"."+i.namespace:i.origType,i.selector,i.handler),this;if("object"==typeof e){for(n in e)this.off(n,t,e[n]);return this}return(t===!1||"function"==typeof t)&&(o=t,t=void 0),o===!1&&(o=p),this.each(function(){rt.event.remove(this,e,o,t)})},trigger:function(e,t){return this.each(function(){rt.event.trigger(e,t,this)})},triggerHandler:function(e,t){var o=this[0];return o?rt.event.trigger(e,t,o,!0):void 0}});var Ot="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",zt=/ jQuery\d+="(?:null|\d+)"/g,Ht=new RegExp("<(?:"+Ot+")[\\s/>]","i"),Bt=/^\s+/,Ut=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,jt=/<([\w:]+)/,Vt=/<tbody/i,Wt=/<|&#?\w+;/,Gt=/<(?:script|style|link)/i,$t=/checked\s*(?:[^=]|=\s*.checked.)/i,Yt=/^$|\/(?:java|ecma)script/i,Kt=/^true\/(.*)/,qt=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,Xt={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],area:[1,"<map>","</map>"],param:[1,"<object>","</object>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:it.htmlSerialize?[0,"",""]:[1,"X<div>","</div>"]},Jt=m(mt),Zt=Jt.appendChild(mt.createElement("div"));
-Xt.optgroup=Xt.option,Xt.tbody=Xt.tfoot=Xt.colgroup=Xt.caption=Xt.thead,Xt.th=Xt.td,rt.extend({clone:function(e,t,o){var i,n,r,a,s,l=rt.contains(e.ownerDocument,e);if(it.html5Clone||rt.isXMLDoc(e)||!Ht.test("<"+e.nodeName+">")?r=e.cloneNode(!0):(Zt.innerHTML=e.outerHTML,Zt.removeChild(r=Zt.firstChild)),!(it.noCloneEvent&&it.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||rt.isXMLDoc(e)))for(i=g(r),s=g(e),a=0;null!=(n=s[a]);++a)i[a]&&_(n,i[a]);if(t)if(o)for(s=s||g(e),i=i||g(r),a=0;null!=(n=s[a]);a++)x(n,i[a]);else x(e,r);return i=g(r,"script"),i.length>0&&w(i,!l&&g(e,"script")),i=s=n=null,r},buildFragment:function(e,t,o,i){for(var n,r,a,s,l,c,u,d=e.length,h=m(t),p=[],f=0;d>f;f++)if(r=e[f],r||0===r)if("object"===rt.type(r))rt.merge(p,r.nodeType?[r]:r);else if(Wt.test(r)){for(s=s||h.appendChild(t.createElement("div")),l=(jt.exec(r)||["",""])[1].toLowerCase(),u=Xt[l]||Xt._default,s.innerHTML=u[1]+r.replace(Ut,"<$1></$2>")+u[2],n=u[0];n--;)s=s.lastChild;if(!it.leadingWhitespace&&Bt.test(r)&&p.push(t.createTextNode(Bt.exec(r)[0])),!it.tbody)for(r="table"!==l||Vt.test(r)?"<table>"!==u[1]||Vt.test(r)?0:s:s.firstChild,n=r&&r.childNodes.length;n--;)rt.nodeName(c=r.childNodes[n],"tbody")&&!c.childNodes.length&&r.removeChild(c);for(rt.merge(p,s.childNodes),s.textContent="";s.firstChild;)s.removeChild(s.firstChild);s=h.lastChild}else p.push(t.createTextNode(r));for(s&&h.removeChild(s),it.appendChecked||rt.grep(g(p,"input"),v),f=0;r=p[f++];)if((!i||-1===rt.inArray(r,i))&&(a=rt.contains(r.ownerDocument,r),s=g(h.appendChild(r),"script"),a&&w(s),o))for(n=0;r=s[n++];)Yt.test(r.type||"")&&o.push(r);return s=null,h},cleanData:function(e,t){for(var o,i,n,r,a=0,s=rt.expando,l=rt.cache,c=it.deleteExpando,u=rt.event.special;null!=(o=e[a]);a++)if((t||rt.acceptData(o))&&(n=o[s],r=n&&l[n])){if(r.events)for(i in r.events)u[i]?rt.event.remove(o,i):rt.removeEvent(o,i,r.handle);l[n]&&(delete l[n],c?delete o[s]:typeof o.removeAttribute!==St?o.removeAttribute(s):o[s]=null,K.push(n))}}}),rt.fn.extend({text:function(e){return Pt(this,function(e){return void 0===e?rt.text(this):this.empty().append((this[0]&&this[0].ownerDocument||mt).createTextNode(e))},null,e,arguments.length)},append:function(){return this.domManip(arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=b(this,e);t.appendChild(e)}})},prepend:function(){return this.domManip(arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=b(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return this.domManip(arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return this.domManip(arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},remove:function(e,t){for(var o,i=e?rt.filter(e,this):this,n=0;null!=(o=i[n]);n++)t||1!==o.nodeType||rt.cleanData(g(o)),o.parentNode&&(t&&rt.contains(o.ownerDocument,o)&&w(g(o,"script")),o.parentNode.removeChild(o));return this},empty:function(){for(var e,t=0;null!=(e=this[t]);t++){for(1===e.nodeType&&rt.cleanData(g(e,!1));e.firstChild;)e.removeChild(e.firstChild);e.options&&rt.nodeName(e,"select")&&(e.options.length=0)}return this},clone:function(e,t){return e=null==e?!1:e,t=null==t?e:t,this.map(function(){return rt.clone(this,e,t)})},html:function(e){return Pt(this,function(e){var t=this[0]||{},o=0,i=this.length;if(void 0===e)return 1===t.nodeType?t.innerHTML.replace(zt,""):void 0;if(!("string"!=typeof e||Gt.test(e)||!it.htmlSerialize&&Ht.test(e)||!it.leadingWhitespace&&Bt.test(e)||Xt[(jt.exec(e)||["",""])[1].toLowerCase()])){e=e.replace(Ut,"<$1></$2>");try{for(;i>o;o++)t=this[o]||{},1===t.nodeType&&(rt.cleanData(g(t,!1)),t.innerHTML=e);t=0}catch(n){}}t&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var e=arguments[0];return this.domManip(arguments,function(t){e=this.parentNode,rt.cleanData(g(this)),e&&e.replaceChild(t,this)}),e&&(e.length||e.nodeType)?this:this.remove()},detach:function(e){return this.remove(e,!0)},domManip:function(e,t){e=X.apply([],e);var o,i,n,r,a,s,l=0,c=this.length,u=this,d=c-1,h=e[0],p=rt.isFunction(h);if(p||c>1&&"string"==typeof h&&!it.checkClone&&$t.test(h))return this.each(function(o){var i=u.eq(o);p&&(e[0]=h.call(this,o,i.html())),i.domManip(e,t)});if(c&&(s=rt.buildFragment(e,this[0].ownerDocument,!1,this),o=s.firstChild,1===s.childNodes.length&&(s=o),o)){for(r=rt.map(g(s,"script"),y),n=r.length;c>l;l++)i=s,l!==d&&(i=rt.clone(i,!0,!0),n&&rt.merge(r,g(i,"script"))),t.call(this[l],i,l);if(n)for(a=r[r.length-1].ownerDocument,rt.map(r,C),l=0;n>l;l++)i=r[l],Yt.test(i.type||"")&&!rt._data(i,"globalEval")&&rt.contains(a,i)&&(i.src?rt._evalUrl&&rt._evalUrl(i.src):rt.globalEval((i.text||i.textContent||i.innerHTML||"").replace(qt,"")));s=o=null}return this}}),rt.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,t){rt.fn[e]=function(e){for(var o,i=0,n=[],r=rt(e),a=r.length-1;a>=i;i++)o=i===a?this:this.clone(!0),rt(r[i])[t](o),J.apply(n,o.get());return this.pushStack(n)}});var Qt,eo={};!function(){var e,t,o=mt.createElement("div"),i="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;padding:0;margin:0;border:0";o.innerHTML="  <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",e=o.getElementsByTagName("a")[0],e.style.cssText="float:left;opacity:.5",it.opacity=/^0.5/.test(e.style.opacity),it.cssFloat=!!e.style.cssFloat,o.style.backgroundClip="content-box",o.cloneNode(!0).style.backgroundClip="",it.clearCloneStyle="content-box"===o.style.backgroundClip,e=o=null,it.shrinkWrapBlocks=function(){var e,o,n,r;if(null==t){if(e=mt.getElementsByTagName("body")[0],!e)return;r="border:0;width:0;height:0;position:absolute;top:0;left:-9999px",o=mt.createElement("div"),n=mt.createElement("div"),e.appendChild(o).appendChild(n),t=!1,typeof n.style.zoom!==St&&(n.style.cssText=i+";width:1px;padding:1px;zoom:1",n.innerHTML="<div></div>",n.firstChild.style.width="5px",t=3!==n.offsetWidth),e.removeChild(o),e=o=n=null}return t}}();var to,oo,io=/^margin/,no=new RegExp("^("+Ft+")(?!px)[a-z%]+$","i"),ro=/^(top|right|bottom|left)$/;e.getComputedStyle?(to=function(e){return e.ownerDocument.defaultView.getComputedStyle(e,null)},oo=function(e,t,o){var i,n,r,a,s=e.style;return o=o||to(e),a=o?o.getPropertyValue(t)||o[t]:void 0,o&&(""!==a||rt.contains(e.ownerDocument,e)||(a=rt.style(e,t)),no.test(a)&&io.test(t)&&(i=s.width,n=s.minWidth,r=s.maxWidth,s.minWidth=s.maxWidth=s.width=a,a=o.width,s.width=i,s.minWidth=n,s.maxWidth=r)),void 0===a?a:a+""}):mt.documentElement.currentStyle&&(to=function(e){return e.currentStyle},oo=function(e,t,o){var i,n,r,a,s=e.style;return o=o||to(e),a=o?o[t]:void 0,null==a&&s&&s[t]&&(a=s[t]),no.test(a)&&!ro.test(t)&&(i=s.left,n=e.runtimeStyle,r=n&&n.left,r&&(n.left=e.currentStyle.left),s.left="fontSize"===t?"1em":a,a=s.pixelLeft+"px",s.left=i,r&&(n.left=r)),void 0===a?a:a+""||"auto"}),!function(){function t(){var t,o,i=mt.getElementsByTagName("body")[0];i&&(t=mt.createElement("div"),o=mt.createElement("div"),t.style.cssText=c,i.appendChild(t).appendChild(o),o.style.cssText="-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;position:absolute;display:block;padding:1px;border:1px;width:4px;margin-top:1%;top:1%",rt.swap(i,null!=i.style.zoom?{zoom:1}:{},function(){n=4===o.offsetWidth}),r=!0,a=!1,s=!0,e.getComputedStyle&&(a="1%"!==(e.getComputedStyle(o,null)||{}).top,r="4px"===(e.getComputedStyle(o,null)||{width:"4px"}).width),i.removeChild(t),o=i=null)}var o,i,n,r,a,s,l=mt.createElement("div"),c="border:0;width:0;height:0;position:absolute;top:0;left:-9999px",u="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;padding:0;margin:0;border:0";l.innerHTML="  <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",o=l.getElementsByTagName("a")[0],o.style.cssText="float:left;opacity:.5",it.opacity=/^0.5/.test(o.style.opacity),it.cssFloat=!!o.style.cssFloat,l.style.backgroundClip="content-box",l.cloneNode(!0).style.backgroundClip="",it.clearCloneStyle="content-box"===l.style.backgroundClip,o=l=null,rt.extend(it,{reliableHiddenOffsets:function(){if(null!=i)return i;var e,t,o,n=mt.createElement("div"),r=mt.getElementsByTagName("body")[0];return r?(n.setAttribute("className","t"),n.innerHTML="  <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",e=mt.createElement("div"),e.style.cssText=c,r.appendChild(e).appendChild(n),n.innerHTML="<table><tr><td></td><td>t</td></tr></table>",t=n.getElementsByTagName("td"),t[0].style.cssText="padding:0;margin:0;border:0;display:none",o=0===t[0].offsetHeight,t[0].style.display="",t[1].style.display="none",i=o&&0===t[0].offsetHeight,r.removeChild(e),n=r=null,i):void 0},boxSizing:function(){return null==n&&t(),n},boxSizingReliable:function(){return null==r&&t(),r},pixelPosition:function(){return null==a&&t(),a},reliableMarginRight:function(){var t,o,i,n;if(null==s&&e.getComputedStyle){if(t=mt.getElementsByTagName("body")[0],!t)return;o=mt.createElement("div"),i=mt.createElement("div"),o.style.cssText=c,t.appendChild(o).appendChild(i),n=i.appendChild(mt.createElement("div")),n.style.cssText=i.style.cssText=u,n.style.marginRight=n.style.width="0",i.style.width="1px",s=!parseFloat((e.getComputedStyle(n,null)||{}).marginRight),t.removeChild(o)}return s}})}(),rt.swap=function(e,t,o,i){var n,r,a={};for(r in t)a[r]=e.style[r],e.style[r]=t[r];n=o.apply(e,i||[]);for(r in t)e.style[r]=a[r];return n};var ao=/alpha\([^)]*\)/i,so=/opacity\s*=\s*([^)]*)/,lo=/^(none|table(?!-c[ea]).+)/,co=new RegExp("^("+Ft+")(.*)$","i"),uo=new RegExp("^([+-])=("+Ft+")","i"),ho={position:"absolute",visibility:"hidden",display:"block"},po={letterSpacing:0,fontWeight:400},fo=["Webkit","O","Moz","ms"];rt.extend({cssHooks:{opacity:{get:function(e,t){if(t){var o=oo(e,"opacity");return""===o?"1":o}}}},cssNumber:{columnCount:!0,fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":it.cssFloat?"cssFloat":"styleFloat"},style:function(e,t,o,i){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var n,r,a,s=rt.camelCase(t),l=e.style;if(t=rt.cssProps[s]||(rt.cssProps[s]=F(l,s)),a=rt.cssHooks[t]||rt.cssHooks[s],void 0===o)return a&&"get"in a&&void 0!==(n=a.get(e,!1,i))?n:l[t];if(r=typeof o,"string"===r&&(n=uo.exec(o))&&(o=(n[1]+1)*n[2]+parseFloat(rt.css(e,t)),r="number"),null!=o&&o===o&&("number"!==r||rt.cssNumber[s]||(o+="px"),it.clearCloneStyle||""!==o||0!==t.indexOf("background")||(l[t]="inherit"),!(a&&"set"in a&&void 0===(o=a.set(e,o,i)))))try{l[t]="",l[t]=o}catch(c){}}},css:function(e,t,o,i){var n,r,a,s=rt.camelCase(t);return t=rt.cssProps[s]||(rt.cssProps[s]=F(e.style,s)),a=rt.cssHooks[t]||rt.cssHooks[s],a&&"get"in a&&(r=a.get(e,!0,o)),void 0===r&&(r=oo(e,t,i)),"normal"===r&&t in po&&(r=po[t]),""===o||o?(n=parseFloat(r),o===!0||rt.isNumeric(n)?n||0:r):r}}),rt.each(["height","width"],function(e,t){rt.cssHooks[t]={get:function(e,o,i){return o?0===e.offsetWidth&&lo.test(rt.css(e,"display"))?rt.swap(e,ho,function(){return A(e,t,i)}):A(e,t,i):void 0},set:function(e,o,i){var n=i&&to(e);return D(e,o,i?P(e,t,i,it.boxSizing()&&"border-box"===rt.css(e,"boxSizing",!1,n),n):0)}}}),it.opacity||(rt.cssHooks.opacity={get:function(e,t){return so.test((t&&e.currentStyle?e.currentStyle.filter:e.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":t?"1":""},set:function(e,t){var o=e.style,i=e.currentStyle,n=rt.isNumeric(t)?"alpha(opacity="+100*t+")":"",r=i&&i.filter||o.filter||"";o.zoom=1,(t>=1||""===t)&&""===rt.trim(r.replace(ao,""))&&o.removeAttribute&&(o.removeAttribute("filter"),""===t||i&&!i.filter)||(o.filter=ao.test(r)?r.replace(ao,n):r+" "+n)}}),rt.cssHooks.marginRight=T(it.reliableMarginRight,function(e,t){return t?rt.swap(e,{display:"inline-block"},oo,[e,"marginRight"]):void 0}),rt.each({margin:"",padding:"",border:"Width"},function(e,t){rt.cssHooks[e+t]={expand:function(o){for(var i=0,n={},r="string"==typeof o?o.split(" "):[o];4>i;i++)n[e+Et[i]+t]=r[i]||r[i-2]||r[0];return n}},io.test(e)||(rt.cssHooks[e+t].set=D)}),rt.fn.extend({css:function(e,t){return Pt(this,function(e,t,o){var i,n,r={},a=0;if(rt.isArray(t)){for(i=to(e),n=t.length;n>a;a++)r[t[a]]=rt.css(e,t[a],!1,i);return r}return void 0!==o?rt.style(e,t,o):rt.css(e,t)},e,t,arguments.length>1)},show:function(){return E(this,!0)},hide:function(){return E(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each(function(){Dt(this)?rt(this).show():rt(this).hide()})}}),rt.Tween=I,I.prototype={constructor:I,init:function(e,t,o,i,n,r){this.elem=e,this.prop=o,this.easing=n||"swing",this.options=t,this.start=this.now=this.cur(),this.end=i,this.unit=r||(rt.cssNumber[o]?"":"px")},cur:function(){var e=I.propHooks[this.prop];return e&&e.get?e.get(this):I.propHooks._default.get(this)},run:function(e){var t,o=I.propHooks[this.prop];return this.pos=t=this.options.duration?rt.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),o&&o.set?o.set(this):I.propHooks._default.set(this),this}},I.prototype.init.prototype=I.prototype,I.propHooks={_default:{get:function(e){var t;return null==e.elem[e.prop]||e.elem.style&&null!=e.elem.style[e.prop]?(t=rt.css(e.elem,e.prop,""),t&&"auto"!==t?t:0):e.elem[e.prop]},set:function(e){rt.fx.step[e.prop]?rt.fx.step[e.prop](e):e.elem.style&&(null!=e.elem.style[rt.cssProps[e.prop]]||rt.cssHooks[e.prop])?rt.style(e.elem,e.prop,e.now+e.unit):e.elem[e.prop]=e.now}}},I.propHooks.scrollTop=I.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},rt.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2}},rt.fx=I.prototype.init,rt.fx.step={};var mo,go,vo=/^(?:toggle|show|hide)$/,bo=new RegExp("^(?:([+-])=|)("+Ft+")([a-z%]*)$","i"),yo=/queueHooks$/,Co=[L],wo={"*":[function(e,t){var o=this.createTween(e,t),i=o.cur(),n=bo.exec(t),r=n&&n[3]||(rt.cssNumber[e]?"":"px"),a=(rt.cssNumber[e]||"px"!==r&&+i)&&bo.exec(rt.css(o.elem,e)),s=1,l=20;if(a&&a[3]!==r){r=r||a[3],n=n||[],a=+i||1;do s=s||".5",a/=s,rt.style(o.elem,e,a+r);while(s!==(s=o.cur()/i)&&1!==s&&--l)}return n&&(a=o.start=+a||+i||0,o.unit=r,o.end=n[1]?a+(n[1]+1)*n[2]:+n[2]),o}]};rt.Animation=rt.extend(z,{tweener:function(e,t){rt.isFunction(e)?(t=e,e=["*"]):e=e.split(" ");for(var o,i=0,n=e.length;n>i;i++)o=e[i],wo[o]=wo[o]||[],wo[o].unshift(t)},prefilter:function(e,t){t?Co.unshift(e):Co.push(e)}}),rt.speed=function(e,t,o){var i=e&&"object"==typeof e?rt.extend({},e):{complete:o||!o&&t||rt.isFunction(e)&&e,duration:e,easing:o&&t||t&&!rt.isFunction(t)&&t};return i.duration=rt.fx.off?0:"number"==typeof i.duration?i.duration:i.duration in rt.fx.speeds?rt.fx.speeds[i.duration]:rt.fx.speeds._default,(null==i.queue||i.queue===!0)&&(i.queue="fx"),i.old=i.complete,i.complete=function(){rt.isFunction(i.old)&&i.old.call(this),i.queue&&rt.dequeue(this,i.queue)},i},rt.fn.extend({fadeTo:function(e,t,o,i){return this.filter(Dt).css("opacity",0).show().end().animate({opacity:t},e,o,i)},animate:function(e,t,o,i){var n=rt.isEmptyObject(e),r=rt.speed(t,o,i),a=function(){var t=z(this,rt.extend({},e),r);(n||rt._data(this,"finish"))&&t.stop(!0)};return a.finish=a,n||r.queue===!1?this.each(a):this.queue(r.queue,a)},stop:function(e,t,o){var i=function(e){var t=e.stop;delete e.stop,t(o)};return"string"!=typeof e&&(o=t,t=e,e=void 0),t&&e!==!1&&this.queue(e||"fx",[]),this.each(function(){var t=!0,n=null!=e&&e+"queueHooks",r=rt.timers,a=rt._data(this);if(n)a[n]&&a[n].stop&&i(a[n]);else for(n in a)a[n]&&a[n].stop&&yo.test(n)&&i(a[n]);for(n=r.length;n--;)r[n].elem!==this||null!=e&&r[n].queue!==e||(r[n].anim.stop(o),t=!1,r.splice(n,1));(t||!o)&&rt.dequeue(this,e)})},finish:function(e){return e!==!1&&(e=e||"fx"),this.each(function(){var t,o=rt._data(this),i=o[e+"queue"],n=o[e+"queueHooks"],r=rt.timers,a=i?i.length:0;for(o.finish=!0,rt.queue(this,e,[]),n&&n.stop&&n.stop.call(this,!0),t=r.length;t--;)r[t].elem===this&&r[t].queue===e&&(r[t].anim.stop(!0),r.splice(t,1));for(t=0;a>t;t++)i[t]&&i[t].finish&&i[t].finish.call(this);delete o.finish})}}),rt.each(["toggle","show","hide"],function(e,t){var o=rt.fn[t];rt.fn[t]=function(e,i,n){return null==e||"boolean"==typeof e?o.apply(this,arguments):this.animate(R(t,!0),e,i,n)}}),rt.each({slideDown:R("show"),slideUp:R("hide"),slideToggle:R("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,t){rt.fn[e]=function(e,o,i){return this.animate(t,e,o,i)}}),rt.timers=[],rt.fx.tick=function(){var e,t=rt.timers,o=0;for(mo=rt.now();o<t.length;o++)e=t[o],e()||t[o]!==e||t.splice(o--,1);t.length||rt.fx.stop(),mo=void 0},rt.fx.timer=function(e){rt.timers.push(e),e()?rt.fx.start():rt.timers.pop()},rt.fx.interval=13,rt.fx.start=function(){go||(go=setInterval(rt.fx.tick,rt.fx.interval))},rt.fx.stop=function(){clearInterval(go),go=null},rt.fx.speeds={slow:600,fast:200,_default:400},rt.fn.delay=function(e,t){return e=rt.fx?rt.fx.speeds[e]||e:e,t=t||"fx",this.queue(t,function(t,o){var i=setTimeout(t,e);o.stop=function(){clearTimeout(i)}})},function(){var e,t,o,i,n=mt.createElement("div");n.setAttribute("className","t"),n.innerHTML="  <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",e=n.getElementsByTagName("a")[0],o=mt.createElement("select"),i=o.appendChild(mt.createElement("option")),t=n.getElementsByTagName("input")[0],e.style.cssText="top:1px",it.getSetAttribute="t"!==n.className,it.style=/top/.test(e.getAttribute("style")),it.hrefNormalized="/a"===e.getAttribute("href"),it.checkOn=!!t.value,it.optSelected=i.selected,it.enctype=!!mt.createElement("form").enctype,o.disabled=!0,it.optDisabled=!i.disabled,t=mt.createElement("input"),t.setAttribute("value",""),it.input=""===t.getAttribute("value"),t.value="t",t.setAttribute("type","radio"),it.radioValue="t"===t.value,e=t=o=i=n=null}();var xo=/\r/g;rt.fn.extend({val:function(e){var t,o,i,n=this[0];return arguments.length?(i=rt.isFunction(e),this.each(function(o){var n;1===this.nodeType&&(n=i?e.call(this,o,rt(this).val()):e,null==n?n="":"number"==typeof n?n+="":rt.isArray(n)&&(n=rt.map(n,function(e){return null==e?"":e+""})),t=rt.valHooks[this.type]||rt.valHooks[this.nodeName.toLowerCase()],t&&"set"in t&&void 0!==t.set(this,n,"value")||(this.value=n))})):n?(t=rt.valHooks[n.type]||rt.valHooks[n.nodeName.toLowerCase()],t&&"get"in t&&void 0!==(o=t.get(n,"value"))?o:(o=n.value,"string"==typeof o?o.replace(xo,""):null==o?"":o)):void 0}}),rt.extend({valHooks:{option:{get:function(e){var t=rt.find.attr(e,"value");return null!=t?t:rt.text(e)}},select:{get:function(e){for(var t,o,i=e.options,n=e.selectedIndex,r="select-one"===e.type||0>n,a=r?null:[],s=r?n+1:i.length,l=0>n?s:r?n:0;s>l;l++)if(o=i[l],!(!o.selected&&l!==n||(it.optDisabled?o.disabled:null!==o.getAttribute("disabled"))||o.parentNode.disabled&&rt.nodeName(o.parentNode,"optgroup"))){if(t=rt(o).val(),r)return t;a.push(t)}return a},set:function(e,t){for(var o,i,n=e.options,r=rt.makeArray(t),a=n.length;a--;)if(i=n[a],rt.inArray(rt.valHooks.option.get(i),r)>=0)try{i.selected=o=!0}catch(s){i.scrollHeight}else i.selected=!1;return o||(e.selectedIndex=-1),n}}}}),rt.each(["radio","checkbox"],function(){rt.valHooks[this]={set:function(e,t){return rt.isArray(t)?e.checked=rt.inArray(rt(e).val(),t)>=0:void 0}},it.checkOn||(rt.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})});var _o,So,ko=rt.expr.attrHandle,To=/^(?:checked|selected)$/i,Fo=it.getSetAttribute,Eo=it.input;rt.fn.extend({attr:function(e,t){return Pt(this,rt.attr,e,t,arguments.length>1)},removeAttr:function(e){return this.each(function(){rt.removeAttr(this,e)})}}),rt.extend({attr:function(e,t,o){var i,n,r=e.nodeType;return e&&3!==r&&8!==r&&2!==r?typeof e.getAttribute===St?rt.prop(e,t,o):(1===r&&rt.isXMLDoc(e)||(t=t.toLowerCase(),i=rt.attrHooks[t]||(rt.expr.match.bool.test(t)?So:_o)),void 0===o?i&&"get"in i&&null!==(n=i.get(e,t))?n:(n=rt.find.attr(e,t),null==n?void 0:n):null!==o?i&&"set"in i&&void 0!==(n=i.set(e,o,t))?n:(e.setAttribute(t,o+""),o):void rt.removeAttr(e,t)):void 0},removeAttr:function(e,t){var o,i,n=0,r=t&&t.match(Ct);if(r&&1===e.nodeType)for(;o=r[n++];)i=rt.propFix[o]||o,rt.expr.match.bool.test(o)?Eo&&Fo||!To.test(o)?e[i]=!1:e[rt.camelCase("default-"+o)]=e[i]=!1:rt.attr(e,o,""),e.removeAttribute(Fo?o:i)},attrHooks:{type:{set:function(e,t){if(!it.radioValue&&"radio"===t&&rt.nodeName(e,"input")){var o=e.value;return e.setAttribute("type",t),o&&(e.value=o),t}}}}}),So={set:function(e,t,o){return t===!1?rt.removeAttr(e,o):Eo&&Fo||!To.test(o)?e.setAttribute(!Fo&&rt.propFix[o]||o,o):e[rt.camelCase("default-"+o)]=e[o]=!0,o}},rt.each(rt.expr.match.bool.source.match(/\w+/g),function(e,t){var o=ko[t]||rt.find.attr;ko[t]=Eo&&Fo||!To.test(t)?function(e,t,i){var n,r;return i||(r=ko[t],ko[t]=n,n=null!=o(e,t,i)?t.toLowerCase():null,ko[t]=r),n}:function(e,t,o){return o?void 0:e[rt.camelCase("default-"+t)]?t.toLowerCase():null}}),Eo&&Fo||(rt.attrHooks.value={set:function(e,t,o){return rt.nodeName(e,"input")?void(e.defaultValue=t):_o&&_o.set(e,t,o)}}),Fo||(_o={set:function(e,t,o){var i=e.getAttributeNode(o);return i||e.setAttributeNode(i=e.ownerDocument.createAttribute(o)),i.value=t+="","value"===o||t===e.getAttribute(o)?t:void 0}},ko.id=ko.name=ko.coords=function(e,t,o){var i;return o?void 0:(i=e.getAttributeNode(t))&&""!==i.value?i.value:null},rt.valHooks.button={get:function(e,t){var o=e.getAttributeNode(t);return o&&o.specified?o.value:void 0},set:_o.set},rt.attrHooks.contenteditable={set:function(e,t,o){_o.set(e,""===t?!1:t,o)}},rt.each(["width","height"],function(e,t){rt.attrHooks[t]={set:function(e,o){return""===o?(e.setAttribute(t,"auto"),o):void 0}}})),it.style||(rt.attrHooks.style={get:function(e){return e.style.cssText||void 0},set:function(e,t){return e.style.cssText=t+""}});var Do=/^(?:input|select|textarea|button|object)$/i,Po=/^(?:a|area)$/i;rt.fn.extend({prop:function(e,t){return Pt(this,rt.prop,e,t,arguments.length>1)},removeProp:function(e){return e=rt.propFix[e]||e,this.each(function(){try{this[e]=void 0,delete this[e]}catch(t){}})}}),rt.extend({propFix:{"for":"htmlFor","class":"className"},prop:function(e,t,o){var i,n,r,a=e.nodeType;return e&&3!==a&&8!==a&&2!==a?(r=1!==a||!rt.isXMLDoc(e),r&&(t=rt.propFix[t]||t,n=rt.propHooks[t]),void 0!==o?n&&"set"in n&&void 0!==(i=n.set(e,o,t))?i:e[t]=o:n&&"get"in n&&null!==(i=n.get(e,t))?i:e[t]):void 0},propHooks:{tabIndex:{get:function(e){var t=rt.find.attr(e,"tabindex");return t?parseInt(t,10):Do.test(e.nodeName)||Po.test(e.nodeName)&&e.href?0:-1}}}}),it.hrefNormalized||rt.each(["href","src"],function(e,t){rt.propHooks[t]={get:function(e){return e.getAttribute(t,4)}}}),it.optSelected||(rt.propHooks.selected={get:function(e){var t=e.parentNode;return t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex),null}}),rt.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){rt.propFix[this.toLowerCase()]=this}),it.enctype||(rt.propFix.enctype="encoding");var Ao=/[\t\r\n\f]/g;rt.fn.extend({addClass:function(e){var t,o,i,n,r,a,s=0,l=this.length,c="string"==typeof e&&e;if(rt.isFunction(e))return this.each(function(t){rt(this).addClass(e.call(this,t,this.className))});if(c)for(t=(e||"").match(Ct)||[];l>s;s++)if(o=this[s],i=1===o.nodeType&&(o.className?(" "+o.className+" ").replace(Ao," "):" ")){for(r=0;n=t[r++];)i.indexOf(" "+n+" ")<0&&(i+=n+" ");a=rt.trim(i),o.className!==a&&(o.className=a)}return this},removeClass:function(e){var t,o,i,n,r,a,s=0,l=this.length,c=0===arguments.length||"string"==typeof e&&e;if(rt.isFunction(e))return this.each(function(t){rt(this).removeClass(e.call(this,t,this.className))});if(c)for(t=(e||"").match(Ct)||[];l>s;s++)if(o=this[s],i=1===o.nodeType&&(o.className?(" "+o.className+" ").replace(Ao," "):"")){for(r=0;n=t[r++];)for(;i.indexOf(" "+n+" ")>=0;)i=i.replace(" "+n+" "," ");a=e?rt.trim(i):"",o.className!==a&&(o.className=a)}return this},toggleClass:function(e,t){var o=typeof e;return"boolean"==typeof t&&"string"===o?t?this.addClass(e):this.removeClass(e):this.each(rt.isFunction(e)?function(o){rt(this).toggleClass(e.call(this,o,this.className,t),t)}:function(){if("string"===o)for(var t,i=0,n=rt(this),r=e.match(Ct)||[];t=r[i++];)n.hasClass(t)?n.removeClass(t):n.addClass(t);else(o===St||"boolean"===o)&&(this.className&&rt._data(this,"__className__",this.className),this.className=this.className||e===!1?"":rt._data(this,"__className__")||"")})},hasClass:function(e){for(var t=" "+e+" ",o=0,i=this.length;i>o;o++)if(1===this[o].nodeType&&(" "+this[o].className+" ").replace(Ao," ").indexOf(t)>=0)return!0;return!1}}),rt.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(e,t){rt.fn[t]=function(e,o){return arguments.length>0?this.on(t,null,e,o):this.trigger(t)}}),rt.fn.extend({hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)},bind:function(e,t,o){return this.on(e,null,t,o)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,o,i){return this.on(t,e,o,i)},undelegate:function(e,t,o){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",o)}});var Io=rt.now(),Mo=/\?/,Ro=/(,)|(\[|{)|(}|])|"(?:[^"\\\r\n]|\\["\\\/bfnrt]|\\u[\da-fA-F]{4})*"\s*:?|true|false|null|-?(?!0\d)\d+(?:\.\d+|)(?:[eE][+-]?\d+|)/g;rt.parseJSON=function(t){if(e.JSON&&e.JSON.parse)return e.JSON.parse(t+"");var o,i=null,n=rt.trim(t+"");return n&&!rt.trim(n.replace(Ro,function(e,t,n,r){return o&&t&&(i=0),0===i?e:(o=n||t,i+=!r-!n,"")}))?Function("return "+n)():rt.error("Invalid JSON: "+t)},rt.parseXML=function(t){var o,i;if(!t||"string"!=typeof t)return null;try{e.DOMParser?(i=new DOMParser,o=i.parseFromString(t,"text/xml")):(o=new ActiveXObject("Microsoft.XMLDOM"),o.async="false",o.loadXML(t))}catch(n){o=void 0}return o&&o.documentElement&&!o.getElementsByTagName("parsererror").length||rt.error("Invalid XML: "+t),o};var No,Lo,Oo=/#.*$/,zo=/([?&])_=[^&]*/,Ho=/^(.*?):[ \t]*([^\r\n]*)\r?$/gm,Bo=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Uo=/^(?:GET|HEAD)$/,jo=/^\/\//,Vo=/^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/,Wo={},Go={},$o="*/".concat("*");try{Lo=location.href}catch(Yo){Lo=mt.createElement("a"),Lo.href="",Lo=Lo.href}No=Vo.exec(Lo.toLowerCase())||[],rt.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Lo,type:"GET",isLocal:Bo.test(No[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":$o,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":rt.parseJSON,"text xml":rt.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?U(U(e,rt.ajaxSettings),t):U(rt.ajaxSettings,e)},ajaxPrefilter:H(Wo),ajaxTransport:H(Go),ajax:function(e,t){function o(e,t,o,i){var n,u,v,b,C,x=t;2!==y&&(y=2,s&&clearTimeout(s),c=void 0,a=i||"",w.readyState=e>0?4:0,n=e>=200&&300>e||304===e,o&&(b=j(d,w,o)),b=V(d,b,w,n),n?(d.ifModified&&(C=w.getResponseHeader("Last-Modified"),C&&(rt.lastModified[r]=C),C=w.getResponseHeader("etag"),C&&(rt.etag[r]=C)),204===e||"HEAD"===d.type?x="nocontent":304===e?x="notmodified":(x=b.state,u=b.data,v=b.error,n=!v)):(v=x,(e||!x)&&(x="error",0>e&&(e=0))),w.status=e,w.statusText=(t||x)+"",n?f.resolveWith(h,[u,x,w]):f.rejectWith(h,[w,x,v]),w.statusCode(g),g=void 0,l&&p.trigger(n?"ajaxSuccess":"ajaxError",[w,d,n?u:v]),m.fireWith(h,[w,x]),l&&(p.trigger("ajaxComplete",[w,d]),--rt.active||rt.event.trigger("ajaxStop")))}"object"==typeof e&&(t=e,e=void 0),t=t||{};var i,n,r,a,s,l,c,u,d=rt.ajaxSetup({},t),h=d.context||d,p=d.context&&(h.nodeType||h.jquery)?rt(h):rt.event,f=rt.Deferred(),m=rt.Callbacks("once memory"),g=d.statusCode||{},v={},b={},y=0,C="canceled",w={readyState:0,getResponseHeader:function(e){var t;if(2===y){if(!u)for(u={};t=Ho.exec(a);)u[t[1].toLowerCase()]=t[2];t=u[e.toLowerCase()]}return null==t?null:t},getAllResponseHeaders:function(){return 2===y?a:null},setRequestHeader:function(e,t){var o=e.toLowerCase();return y||(e=b[o]=b[o]||e,v[e]=t),this},overrideMimeType:function(e){return y||(d.mimeType=e),this},statusCode:function(e){var t;if(e)if(2>y)for(t in e)g[t]=[g[t],e[t]];else w.always(e[w.status]);return this},abort:function(e){var t=e||C;return c&&c.abort(t),o(0,t),this}};if(f.promise(w).complete=m.add,w.success=w.done,w.error=w.fail,d.url=((e||d.url||Lo)+"").replace(Oo,"").replace(jo,No[1]+"//"),d.type=t.method||t.type||d.method||d.type,d.dataTypes=rt.trim(d.dataType||"*").toLowerCase().match(Ct)||[""],null==d.crossDomain&&(i=Vo.exec(d.url.toLowerCase()),d.crossDomain=!(!i||i[1]===No[1]&&i[2]===No[2]&&(i[3]||("http:"===i[1]?"80":"443"))===(No[3]||("http:"===No[1]?"80":"443")))),d.data&&d.processData&&"string"!=typeof d.data&&(d.data=rt.param(d.data,d.traditional)),B(Wo,d,t,w),2===y)return w;l=d.global,l&&0===rt.active++&&rt.event.trigger("ajaxStart"),d.type=d.type.toUpperCase(),d.hasContent=!Uo.test(d.type),r=d.url,d.hasContent||(d.data&&(r=d.url+=(Mo.test(r)?"&":"?")+d.data,delete d.data),d.cache===!1&&(d.url=zo.test(r)?r.replace(zo,"$1_="+Io++):r+(Mo.test(r)?"&":"?")+"_="+Io++)),d.ifModified&&(rt.lastModified[r]&&w.setRequestHeader("If-Modified-Since",rt.lastModified[r]),rt.etag[r]&&w.setRequestHeader("If-None-Match",rt.etag[r])),(d.data&&d.hasContent&&d.contentType!==!1||t.contentType)&&w.setRequestHeader("Content-Type",d.contentType),w.setRequestHeader("Accept",d.dataTypes[0]&&d.accepts[d.dataTypes[0]]?d.accepts[d.dataTypes[0]]+("*"!==d.dataTypes[0]?", "+$o+"; q=0.01":""):d.accepts["*"]);for(n in d.headers)w.setRequestHeader(n,d.headers[n]);if(d.beforeSend&&(d.beforeSend.call(h,w,d)===!1||2===y))return w.abort();C="abort";for(n in{success:1,error:1,complete:1})w[n](d[n]);if(c=B(Go,d,t,w)){w.readyState=1,l&&p.trigger("ajaxSend",[w,d]),d.async&&d.timeout>0&&(s=setTimeout(function(){w.abort("timeout")},d.timeout));try{y=1,c.send(v,o)}catch(x){if(!(2>y))throw x;o(-1,x)}}else o(-1,"No Transport");return w},getJSON:function(e,t,o){return rt.get(e,t,o,"json")},getScript:function(e,t){return rt.get(e,void 0,t,"script")}}),rt.each(["get","post"],function(e,t){rt[t]=function(e,o,i,n){return rt.isFunction(o)&&(n=n||i,i=o,o=void 0),rt.ajax({url:e,type:t,dataType:n,data:o,success:i})}}),rt.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){rt.fn[t]=function(e){return this.on(t,e)}}),rt._evalUrl=function(e){return rt.ajax({url:e,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0})},rt.fn.extend({wrapAll:function(e){if(rt.isFunction(e))return this.each(function(t){rt(this).wrapAll(e.call(this,t))});if(this[0]){var t=rt(e,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){for(var e=this;e.firstChild&&1===e.firstChild.nodeType;)e=e.firstChild;return e}).append(this)}return this},wrapInner:function(e){return this.each(rt.isFunction(e)?function(t){rt(this).wrapInner(e.call(this,t))}:function(){var t=rt(this),o=t.contents();o.length?o.wrapAll(e):t.append(e)})},wrap:function(e){var t=rt.isFunction(e);return this.each(function(o){rt(this).wrapAll(t?e.call(this,o):e)})},unwrap:function(){return this.parent().each(function(){rt.nodeName(this,"body")||rt(this).replaceWith(this.childNodes)}).end()}}),rt.expr.filters.hidden=function(e){return e.offsetWidth<=0&&e.offsetHeight<=0||!it.reliableHiddenOffsets()&&"none"===(e.style&&e.style.display||rt.css(e,"display"))},rt.expr.filters.visible=function(e){return!rt.expr.filters.hidden(e)};var Ko=/%20/g,qo=/\[\]$/,Xo=/\r?\n/g,Jo=/^(?:submit|button|image|reset|file)$/i,Zo=/^(?:input|select|textarea|keygen)/i;
-rt.param=function(e,t){var o,i=[],n=function(e,t){t=rt.isFunction(t)?t():null==t?"":t,i[i.length]=encodeURIComponent(e)+"="+encodeURIComponent(t)};if(void 0===t&&(t=rt.ajaxSettings&&rt.ajaxSettings.traditional),rt.isArray(e)||e.jquery&&!rt.isPlainObject(e))rt.each(e,function(){n(this.name,this.value)});else for(o in e)W(o,e[o],t,n);return i.join("&").replace(Ko,"+")},rt.fn.extend({serialize:function(){return rt.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=rt.prop(this,"elements");return e?rt.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!rt(this).is(":disabled")&&Zo.test(this.nodeName)&&!Jo.test(e)&&(this.checked||!At.test(e))}).map(function(e,t){var o=rt(this).val();return null==o?null:rt.isArray(o)?rt.map(o,function(e){return{name:t.name,value:e.replace(Xo,"\r\n")}}):{name:t.name,value:o.replace(Xo,"\r\n")}}).get()}}),rt.ajaxSettings.xhr=void 0!==e.ActiveXObject?function(){return!this.isLocal&&/^(get|post|head|put|delete|options)$/i.test(this.type)&&G()||$()}:G;var Qo=0,ei={},ti=rt.ajaxSettings.xhr();e.ActiveXObject&&rt(e).on("unload",function(){for(var e in ei)ei[e](void 0,!0)}),it.cors=!!ti&&"withCredentials"in ti,ti=it.ajax=!!ti,ti&&rt.ajaxTransport(function(e){if(!e.crossDomain||it.cors){var t;return{send:function(o,i){var n,r=e.xhr(),a=++Qo;if(r.open(e.type,e.url,e.async,e.username,e.password),e.xhrFields)for(n in e.xhrFields)r[n]=e.xhrFields[n];e.mimeType&&r.overrideMimeType&&r.overrideMimeType(e.mimeType),e.crossDomain||o["X-Requested-With"]||(o["X-Requested-With"]="XMLHttpRequest");for(n in o)void 0!==o[n]&&r.setRequestHeader(n,o[n]+"");r.send(e.hasContent&&e.data||null),t=function(o,n){var s,l,c;if(t&&(n||4===r.readyState))if(delete ei[a],t=void 0,r.onreadystatechange=rt.noop,n)4!==r.readyState&&r.abort();else{c={},s=r.status,"string"==typeof r.responseText&&(c.text=r.responseText);try{l=r.statusText}catch(u){l=""}s||!e.isLocal||e.crossDomain?1223===s&&(s=204):s=c.text?200:404}c&&i(s,l,c,r.getAllResponseHeaders())},e.async?4===r.readyState?setTimeout(t):r.onreadystatechange=ei[a]=t:t()},abort:function(){t&&t(void 0,!0)}}}}),rt.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/(?:java|ecma)script/},converters:{"text script":function(e){return rt.globalEval(e),e}}}),rt.ajaxPrefilter("script",function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type="GET",e.global=!1)}),rt.ajaxTransport("script",function(e){if(e.crossDomain){var t,o=mt.head||rt("head")[0]||mt.documentElement;return{send:function(i,n){t=mt.createElement("script"),t.async=!0,e.scriptCharset&&(t.charset=e.scriptCharset),t.src=e.url,t.onload=t.onreadystatechange=function(e,o){(o||!t.readyState||/loaded|complete/.test(t.readyState))&&(t.onload=t.onreadystatechange=null,t.parentNode&&t.parentNode.removeChild(t),t=null,o||n(200,"success"))},o.insertBefore(t,o.firstChild)},abort:function(){t&&t.onload(void 0,!0)}}}});var oi=[],ii=/(=)\?(?=&|$)|\?\?/;rt.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=oi.pop()||rt.expando+"_"+Io++;return this[e]=!0,e}}),rt.ajaxPrefilter("json jsonp",function(t,o,i){var n,r,a,s=t.jsonp!==!1&&(ii.test(t.url)?"url":"string"==typeof t.data&&!(t.contentType||"").indexOf("application/x-www-form-urlencoded")&&ii.test(t.data)&&"data");return s||"jsonp"===t.dataTypes[0]?(n=t.jsonpCallback=rt.isFunction(t.jsonpCallback)?t.jsonpCallback():t.jsonpCallback,s?t[s]=t[s].replace(ii,"$1"+n):t.jsonp!==!1&&(t.url+=(Mo.test(t.url)?"&":"?")+t.jsonp+"="+n),t.converters["script json"]=function(){return a||rt.error(n+" was not called"),a[0]},t.dataTypes[0]="json",r=e[n],e[n]=function(){a=arguments},i.always(function(){e[n]=r,t[n]&&(t.jsonpCallback=o.jsonpCallback,oi.push(n)),a&&rt.isFunction(r)&&r(a[0]),a=r=void 0}),"script"):void 0}),rt.parseHTML=function(e,t,o){if(!e||"string"!=typeof e)return null;"boolean"==typeof t&&(o=t,t=!1),t=t||mt;var i=ht.exec(e),n=!o&&[];return i?[t.createElement(i[1])]:(i=rt.buildFragment([e],t,n),n&&n.length&&rt(n).remove(),rt.merge([],i.childNodes))};var ni=rt.fn.load;rt.fn.load=function(e,t,o){if("string"!=typeof e&&ni)return ni.apply(this,arguments);var i,n,r,a=this,s=e.indexOf(" ");return s>=0&&(i=e.slice(s,e.length),e=e.slice(0,s)),rt.isFunction(t)?(o=t,t=void 0):t&&"object"==typeof t&&(r="POST"),a.length>0&&rt.ajax({url:e,type:r,dataType:"html",data:t}).done(function(e){n=arguments,a.html(i?rt("<div>").append(rt.parseHTML(e)).find(i):e)}).complete(o&&function(e,t){a.each(o,n||[e.responseText,t,e])}),this},rt.expr.filters.animated=function(e){return rt.grep(rt.timers,function(t){return e===t.elem}).length};var ri=e.document.documentElement;rt.offset={setOffset:function(e,t,o){var i,n,r,a,s,l,c,u=rt.css(e,"position"),d=rt(e),h={};"static"===u&&(e.style.position="relative"),s=d.offset(),r=rt.css(e,"top"),l=rt.css(e,"left"),c=("absolute"===u||"fixed"===u)&&rt.inArray("auto",[r,l])>-1,c?(i=d.position(),a=i.top,n=i.left):(a=parseFloat(r)||0,n=parseFloat(l)||0),rt.isFunction(t)&&(t=t.call(e,o,s)),null!=t.top&&(h.top=t.top-s.top+a),null!=t.left&&(h.left=t.left-s.left+n),"using"in t?t.using.call(e,h):d.css(h)}},rt.fn.extend({offset:function(e){if(arguments.length)return void 0===e?this:this.each(function(t){rt.offset.setOffset(this,e,t)});var t,o,i={top:0,left:0},n=this[0],r=n&&n.ownerDocument;return r?(t=r.documentElement,rt.contains(t,n)?(typeof n.getBoundingClientRect!==St&&(i=n.getBoundingClientRect()),o=Y(r),{top:i.top+(o.pageYOffset||t.scrollTop)-(t.clientTop||0),left:i.left+(o.pageXOffset||t.scrollLeft)-(t.clientLeft||0)}):i):void 0},position:function(){if(this[0]){var e,t,o={top:0,left:0},i=this[0];return"fixed"===rt.css(i,"position")?t=i.getBoundingClientRect():(e=this.offsetParent(),t=this.offset(),rt.nodeName(e[0],"html")||(o=e.offset()),o.top+=rt.css(e[0],"borderTopWidth",!0),o.left+=rt.css(e[0],"borderLeftWidth",!0)),{top:t.top-o.top-rt.css(i,"marginTop",!0),left:t.left-o.left-rt.css(i,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){for(var e=this.offsetParent||ri;e&&!rt.nodeName(e,"html")&&"static"===rt.css(e,"position");)e=e.offsetParent;return e||ri})}}),rt.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(e,t){var o=/Y/.test(t);rt.fn[e]=function(i){return Pt(this,function(e,i,n){var r=Y(e);return void 0===n?r?t in r?r[t]:r.document.documentElement[i]:e[i]:void(r?r.scrollTo(o?rt(r).scrollLeft():n,o?n:rt(r).scrollTop()):e[i]=n)},e,i,arguments.length,null)}}),rt.each(["top","left"],function(e,t){rt.cssHooks[t]=T(it.pixelPosition,function(e,o){return o?(o=oo(e,t),no.test(o)?rt(e).position()[t]+"px":o):void 0})}),rt.each({Height:"height",Width:"width"},function(e,t){rt.each({padding:"inner"+e,content:t,"":"outer"+e},function(o,i){rt.fn[i]=function(i,n){var r=arguments.length&&(o||"boolean"!=typeof i),a=o||(i===!0||n===!0?"margin":"border");return Pt(this,function(t,o,i){var n;return rt.isWindow(t)?t.document.documentElement["client"+e]:9===t.nodeType?(n=t.documentElement,Math.max(t.body["scroll"+e],n["scroll"+e],t.body["offset"+e],n["offset"+e],n["client"+e])):void 0===i?rt.css(t,o,a):rt.style(t,o,i,a)},t,r?i:void 0,r,null)}})}),rt.fn.size=function(){return this.length},rt.fn.andSelf=rt.fn.addBack,"function"==typeof define&&define.amd&&define("jquery",[],function(){return rt});var ai=e.jQuery,si=e.$;return rt.noConflict=function(t){return e.$===rt&&(e.$=si),t&&e.jQuery===rt&&(e.jQuery=ai),rt},typeof t===St&&(e.jQuery=e.$=rt),rt}),function(){var e;e=function(e){var t,o;return t=!1,e(function(){var i;return i=(document.body||document.documentElement).style,t=void 0!==i.animation||void 0!==i.WebkitAnimation||void 0!==i.MozAnimation||void 0!==i.MsAnimation||void 0!==i.OAnimation,e(window).bind("keyup.vex",function(e){return 27===e.keyCode?o.closeByEscape():void 0})}),o={globalID:1,animationEndEvent:"animationend webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend",baseClassNames:{vex:"vex",content:"vex-content",overlay:"vex-overlay",close:"vex-close",closing:"vex-closing",open:"vex-open"},defaultOptions:{content:"",showCloseButton:!0,escapeButtonCloses:!0,overlayClosesOnClick:!0,appendLocation:"body",className:"",css:{},overlayClassName:"",overlayCSS:{},contentClassName:"",contentCSS:{},closeClassName:"",closeCSS:{}},open:function(t){return t=e.extend({},o.defaultOptions,t),t.id=o.globalID,o.globalID+=1,t.$vex=e("<div>").addClass(o.baseClassNames.vex).addClass(t.className).css(t.css).data({vex:t}),t.$vexOverlay=e("<div>").addClass(o.baseClassNames.overlay).addClass(t.overlayClassName).css(t.overlayCSS).data({vex:t}),t.overlayClosesOnClick&&t.$vexOverlay.bind("click.vex",function(t){return t.target===this?o.close(e(this).data().vex.id):void 0}),t.$vex.append(t.$vexOverlay),t.$vexContent=e("<div>").addClass(o.baseClassNames.content).addClass(t.contentClassName).css(t.contentCSS).append(t.content).data({vex:t}),t.$vex.append(t.$vexContent),t.showCloseButton&&(t.$closeButton=e("<div>").addClass(o.baseClassNames.close).addClass(t.closeClassName).css(t.closeCSS).data({vex:t}).bind("click.vex",function(){return o.close(e(this).data().vex.id)}),t.$vexContent.append(t.$closeButton)),e(t.appendLocation).append(t.$vex),o.setupBodyClassName(t.$vex),t.afterOpen&&t.afterOpen(t.$vexContent,t),setTimeout(function(){return t.$vexContent.trigger("vexOpen",t)},0),t.$vexContent},getAllVexes:function(){return e("."+o.baseClassNames.vex+':not(".'+o.baseClassNames.closing+'") .'+o.baseClassNames.content)},getVexByID:function(t){return o.getAllVexes().filter(function(){return e(this).data().vex.id===t})},close:function(e){var t;if(!e){if(t=o.getAllVexes().last(),!t.length)return!1;e=t.data().vex.id}return o.closeByID(e)},closeAll:function(){var t;return t=o.getAllVexes().map(function(){return e(this).data().vex.id}).toArray(),(null!=t?t.length:void 0)?(e.each(t.reverse(),function(e,t){return o.closeByID(t)}),!0):!1},closeByID:function(i){var n,r,a,s,l;return r=o.getVexByID(i),r.length?(n=r.data().vex.$vex,l=e.extend({},r.data().vex),a=function(){return l.beforeClose?l.beforeClose(r,l):void 0},s=function(){return r.trigger("vexClose",l),n.remove(),l.afterClose?l.afterClose(r,l):void 0},t?(a(),n.unbind(o.animationEndEvent).bind(o.animationEndEvent,function(){return s()}).addClass(o.baseClassNames.closing)):(a(),s()),!0):void 0},closeByEscape:function(){var t,i,n;return n=o.getAllVexes().map(function(){return e(this).data().vex.id}).toArray(),(null!=n?n.length:void 0)?(i=Math.max.apply(Math,n),t=o.getVexByID(i),t.data().vex.escapeButtonCloses!==!0?!1:o.closeByID(i)):!1},setupBodyClassName:function(t){return t.bind("vexOpen.vex",function(){return e("body").addClass(o.baseClassNames.open)}).bind("vexClose.vex",function(){return o.getAllVexes().length?void 0:e("body").removeClass(o.baseClassNames.open)})},hideLoading:function(){return e(".vex-loading-spinner").remove()},showLoading:function(){return o.hideLoading(),e("body").append('<div class="vex-loading-spinner '+o.defaultOptions.className+'"></div>')}}},"function"==typeof define&&define.amd?define(["jquery"],e):"object"==typeof exports?module.exports=e(require("jquery")):window.vex=e(jQuery)}.call(this),function(){var e;e=function(e,t){var o,i;return null==t?e.error("Vex is required to use vex.dialog"):(o=function(t){var o;return o={},e.each(t.serializeArray(),function(){return o[this.name]?(o[this.name].push||(o[this.name]=[o[this.name]]),o[this.name].push(this.value||"")):o[this.name]=this.value||""}),o},i={},i.buttons={YES:{text:"OK",type:"submit",className:"vex-dialog-button-primary"},NO:{text:"Cancel",type:"button",className:"vex-dialog-button-secondary",click:function(e){return e.data().vex.value=!1,t.close(e.data().vex.id)}}},i.defaultOptions={callback:function(){},afterOpen:function(){},message:"Message",input:'<input name="vex" type="hidden" value="_vex-empty-value" />',value:!1,buttons:[i.buttons.YES,i.buttons.NO],showCloseButton:!1,onSubmit:function(n){var r,a;return r=e(this),a=r.parent(),n.preventDefault(),n.stopPropagation(),a.data().vex.value=i.getFormValueOnSubmit(o(r)),t.close(a.data().vex.id)},focusFirstInput:!0},i.defaultAlertOptions={message:"Alert",buttons:[i.buttons.YES]},i.defaultConfirmOptions={message:"Confirm"},i.open=function(o){var n;return o=e.extend({},t.defaultOptions,i.defaultOptions,o),o.content=i.buildDialogForm(o),o.beforeClose=function(e){return o.callback(e.data().vex.value)},n=t.open(o),o.focusFirstInput&&n.find('input[type="submit"], textarea, input[type="date"], input[type="datetime"], input[type="datetime-local"], input[type="email"], input[type="month"], input[type="number"], input[type="password"], input[type="search"], input[type="tel"], input[type="text"], input[type="time"], input[type="url"], input[type="week"]').first().focus(),n},i.alert=function(t){return"string"==typeof t&&(t={message:t}),t=e.extend({},i.defaultAlertOptions,t),i.open(t)},i.confirm=function(t){return"string"==typeof t?e.error("dialog.confirm(options) requires options.callback."):(t=e.extend({},i.defaultConfirmOptions,t),i.open(t))},i.prompt=function(t){var o;return"string"==typeof t?e.error("dialog.prompt(options) requires options.callback."):(o={message:'<label for="vex">'+(t.label||"Prompt:")+"</label>",input:'<input name="vex" type="text" class="vex-dialog-prompt-input" placeholder="'+(t.placeholder||"")+'"  value="'+(t.value||"")+'" />'},t=e.extend({},o,t),i.open(t))},i.buildDialogForm=function(t){var o,n,r;return o=e('<form class="vex-dialog-form" />'),r=e('<div class="vex-dialog-message" />'),n=e('<div class="vex-dialog-input" />'),o.append(r.append(t.message)).append(n.append(t.input)).append(i.buttonsToDOM(t.buttons)).bind("submit.vex",t.onSubmit),o},i.getFormValueOnSubmit=function(e){return e.vex||""===e.vex?"_vex-empty-value"===e.vex?!0:e.vex:e},i.buttonsToDOM=function(o){var i;return i=e('<div class="vex-dialog-buttons" />'),e.each(o,function(n,r){return i.append(e('<input type="'+r.type+'" />').val(r.text).addClass(r.className+" vex-dialog-button "+(0===n?"vex-first ":"")+(n===o.length-1?"vex-last ":"")).bind("click.vex",function(o){return r.click?r.click(e(this).parents("."+t.baseClassNames.content),o):void 0}))}),i},i)},"function"==typeof define&&define.amd?define(["jquery","vex"],e):"object"==typeof exports?module.exports=e(require("jquery"),require("vex")):window.vex.dialog=e(window.jQuery,window.vex)}.call(this),function(e){"function"==typeof define&&define.amd?define(["jquery"],e):e(jQuery)}(function(e){function t(t,i){var n,r,a,s=t.nodeName.toLowerCase();return"area"===s?(n=t.parentNode,r=n.name,t.href&&r&&"map"===n.nodeName.toLowerCase()?(a=e("img[usemap='#"+r+"']")[0],!!a&&o(a)):!1):(/^(input|select|textarea|button|object)$/.test(s)?!t.disabled:"a"===s?t.href||i:i)&&o(t)}function o(t){return e.expr.filters.visible(t)&&!e(t).parents().addBack().filter(function(){return"hidden"===e.css(this,"visibility")}).length}function i(e){for(var t,o;e.length&&e[0]!==document;){if(t=e.css("position"),("absolute"===t||"relative"===t||"fixed"===t)&&(o=parseInt(e.css("zIndex"),10),!isNaN(o)&&0!==o))return o;e=e.parent()}return 0}function n(){this._curInst=null,this._keyEvent=!1,this._disabledInputs=[],this._datepickerShowing=!1,this._inDialog=!1,this._mainDivId="ui-datepicker-div",this._inlineClass="ui-datepicker-inline",this._appendClass="ui-datepicker-append",this._triggerClass="ui-datepicker-trigger",this._dialogClass="ui-datepicker-dialog",this._disableClass="ui-datepicker-disabled",this._unselectableClass="ui-datepicker-unselectable",this._currentClass="ui-datepicker-current-day",this._dayOverClass="ui-datepicker-days-cell-over",this.regional=[],this.regional[""]={closeText:"Done",prevText:"Prev",nextText:"Next",currentText:"Today",monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su","Mo","Tu","We","Th","Fr","Sa"],weekHeader:"Wk",dateFormat:"mm/dd/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},this._defaults={showOn:"focus",showAnim:"fadeIn",showOptions:{},defaultDate:null,appendText:"",buttonText:"...",buttonImage:"",buttonImageOnly:!1,hideIfNoPrevNext:!1,navigationAsDateFormat:!1,gotoCurrent:!1,changeMonth:!1,changeYear:!1,yearRange:"c-10:c+10",showOtherMonths:!1,selectOtherMonths:!1,showWeek:!1,calculateWeek:this.iso8601Week,shortYearCutoff:"+10",minDate:null,maxDate:null,duration:"fast",beforeShowDay:null,beforeShow:null,onSelect:null,onChangeMonthYear:null,onClose:null,numberOfMonths:1,showCurrentAtPos:0,stepMonths:1,stepBigMonths:12,altField:"",altFormat:"",constrainInput:!0,showButtonPanel:!1,autoSize:!1,disabled:!1},e.extend(this._defaults,this.regional[""]),this.regional.en=e.extend(!0,{},this.regional[""]),this.regional["en-US"]=e.extend(!0,{},this.regional.en),this.dpDiv=r(e("<div id='"+this._mainDivId+"' class='ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all'></div>"))}function r(t){var o="button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a";return t.delegate(o,"mouseout",function(){e(this).removeClass("ui-state-hover"),-1!==this.className.indexOf("ui-datepicker-prev")&&e(this).removeClass("ui-datepicker-prev-hover"),-1!==this.className.indexOf("ui-datepicker-next")&&e(this).removeClass("ui-datepicker-next-hover")}).delegate(o,"mouseover",a)}function a(){e.datepicker._isDisabledDatepicker(v.inline?v.dpDiv.parent()[0]:v.input[0])||(e(this).parents(".ui-datepicker-calendar").find("a").removeClass("ui-state-hover"),e(this).addClass("ui-state-hover"),-1!==this.className.indexOf("ui-datepicker-prev")&&e(this).addClass("ui-datepicker-prev-hover"),-1!==this.className.indexOf("ui-datepicker-next")&&e(this).addClass("ui-datepicker-next-hover"))}function s(t,o){e.extend(t,o);for(var i in o)null==o[i]&&(t[i]=o[i]);return t}function l(e){return function(){var t=this.element.val();e.apply(this,arguments),this._refresh(),t!==this.element.val()&&this._trigger("change")}}e.ui=e.ui||{},e.extend(e.ui,{version:"1.11.4",keyCode:{BACKSPACE:8,COMMA:188,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SPACE:32,TAB:9,UP:38}}),e.fn.extend({scrollParent:function(t){var o=this.css("position"),i="absolute"===o,n=t?/(auto|scroll|hidden)/:/(auto|scroll)/,r=this.parents().filter(function(){var t=e(this);return i&&"static"===t.css("position")?!1:n.test(t.css("overflow")+t.css("overflow-y")+t.css("overflow-x"))}).eq(0);return"fixed"!==o&&r.length?r:e(this[0].ownerDocument||document)},uniqueId:function(){var e=0;return function(){return this.each(function(){this.id||(this.id="ui-id-"+ ++e)})}}(),removeUniqueId:function(){return this.each(function(){/^ui-id-\d+$/.test(this.id)&&e(this).removeAttr("id")})}}),e.extend(e.expr[":"],{data:e.expr.createPseudo?e.expr.createPseudo(function(t){return function(o){return!!e.data(o,t)}}):function(t,o,i){return!!e.data(t,i[3])},focusable:function(o){return t(o,!isNaN(e.attr(o,"tabindex")))},tabbable:function(o){var i=e.attr(o,"tabindex"),n=isNaN(i);return(n||i>=0)&&t(o,!n)}}),e("<a>").outerWidth(1).jquery||e.each(["Width","Height"],function(t,o){function i(t,o,i,r){return e.each(n,function(){o-=parseFloat(e.css(t,"padding"+this))||0,i&&(o-=parseFloat(e.css(t,"border"+this+"Width"))||0),r&&(o-=parseFloat(e.css(t,"margin"+this))||0)}),o}var n="Width"===o?["Left","Right"]:["Top","Bottom"],r=o.toLowerCase(),a={innerWidth:e.fn.innerWidth,innerHeight:e.fn.innerHeight,outerWidth:e.fn.outerWidth,outerHeight:e.fn.outerHeight};e.fn["inner"+o]=function(t){return void 0===t?a["inner"+o].call(this):this.each(function(){e(this).css(r,i(this,t)+"px")})},e.fn["outer"+o]=function(t,n){return"number"!=typeof t?a["outer"+o].call(this,t):this.each(function(){e(this).css(r,i(this,t,!0,n)+"px")})}}),e.fn.addBack||(e.fn.addBack=function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}),e("<a>").data("a-b","a").removeData("a-b").data("a-b")&&(e.fn.removeData=function(t){return function(o){return arguments.length?t.call(this,e.camelCase(o)):t.call(this)}}(e.fn.removeData)),e.ui.ie=!!/msie [\w.]+/.exec(navigator.userAgent.toLowerCase()),e.fn.extend({focus:function(t){return function(o,i){return"number"==typeof o?this.each(function(){var t=this;setTimeout(function(){e(t).focus(),i&&i.call(t)},o)}):t.apply(this,arguments)}}(e.fn.focus),disableSelection:function(){var e="onselectstart"in document.createElement("div")?"selectstart":"mousedown";return function(){return this.bind(e+".ui-disableSelection",function(e){e.preventDefault()})}}(),enableSelection:function(){return this.unbind(".ui-disableSelection")},zIndex:function(t){if(void 0!==t)return this.css("zIndex",t);if(this.length)for(var o,i,n=e(this[0]);n.length&&n[0]!==document;){if(o=n.css("position"),("absolute"===o||"relative"===o||"fixed"===o)&&(i=parseInt(n.css("zIndex"),10),!isNaN(i)&&0!==i))return i;n=n.parent()}return 0}}),e.ui.plugin={add:function(t,o,i){var n,r=e.ui[t].prototype;for(n in i)r.plugins[n]=r.plugins[n]||[],r.plugins[n].push([o,i[n]])},call:function(e,t,o,i){var n,r=e.plugins[t];if(r&&(i||e.element[0].parentNode&&11!==e.element[0].parentNode.nodeType))for(n=0;r.length>n;n++)e.options[r[n][0]]&&r[n][1].apply(e.element,o)}};var c=0,u=Array.prototype.slice;e.cleanData=function(t){return function(o){var i,n,r;for(r=0;null!=(n=o[r]);r++)try{i=e._data(n,"events"),i&&i.remove&&e(n).triggerHandler("remove")}catch(a){}t(o)}}(e.cleanData),e.widget=function(t,o,i){var n,r,a,s,l={},c=t.split(".")[0];return t=t.split(".")[1],n=c+"-"+t,i||(i=o,o=e.Widget),e.expr[":"][n.toLowerCase()]=function(t){return!!e.data(t,n)},e[c]=e[c]||{},r=e[c][t],a=e[c][t]=function(e,t){return this._createWidget?void(arguments.length&&this._createWidget(e,t)):new a(e,t)},e.extend(a,r,{version:i.version,_proto:e.extend({},i),_childConstructors:[]}),s=new o,s.options=e.widget.extend({},s.options),e.each(i,function(t,i){return e.isFunction(i)?void(l[t]=function(){var e=function(){return o.prototype[t].apply(this,arguments)},n=function(e){return o.prototype[t].apply(this,e)};return function(){var t,o=this._super,r=this._superApply;return this._super=e,this._superApply=n,t=i.apply(this,arguments),this._super=o,this._superApply=r,t}}()):void(l[t]=i)}),a.prototype=e.widget.extend(s,{widgetEventPrefix:r?s.widgetEventPrefix||t:t},l,{constructor:a,namespace:c,widgetName:t,widgetFullName:n}),r?(e.each(r._childConstructors,function(t,o){var i=o.prototype;e.widget(i.namespace+"."+i.widgetName,a,o._proto)}),delete r._childConstructors):o._childConstructors.push(a),e.widget.bridge(t,a),a},e.widget.extend=function(t){for(var o,i,n=u.call(arguments,1),r=0,a=n.length;a>r;r++)for(o in n[r])i=n[r][o],n[r].hasOwnProperty(o)&&void 0!==i&&(t[o]=e.isPlainObject(i)?e.isPlainObject(t[o])?e.widget.extend({},t[o],i):e.widget.extend({},i):i);return t},e.widget.bridge=function(t,o){var i=o.prototype.widgetFullName||t;e.fn[t]=function(n){var r="string"==typeof n,a=u.call(arguments,1),s=this;return r?this.each(function(){var o,r=e.data(this,i);return"instance"===n?(s=r,!1):r?e.isFunction(r[n])&&"_"!==n.charAt(0)?(o=r[n].apply(r,a),o!==r&&void 0!==o?(s=o&&o.jquery?s.pushStack(o.get()):o,!1):void 0):e.error("no such method '"+n+"' for "+t+" widget instance"):e.error("cannot call methods on "+t+" prior to initialization; attempted to call method '"+n+"'")}):(a.length&&(n=e.widget.extend.apply(null,[n].concat(a))),this.each(function(){var t=e.data(this,i);t?(t.option(n||{}),t._init&&t._init()):e.data(this,i,new o(n,this))})),s}},e.Widget=function(){},e.Widget._childConstructors=[],e.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",defaultElement:"<div>",options:{disabled:!1,create:null},_createWidget:function(t,o){o=e(o||this.defaultElement||this)[0],this.element=e(o),this.uuid=c++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=e(),this.hoverable=e(),this.focusable=e(),o!==this&&(e.data(o,this.widgetFullName,this),this._on(!0,this.element,{remove:function(e){e.target===o&&this.destroy()}}),this.document=e(o.style?o.ownerDocument:o.document||o),this.window=e(this.document[0].defaultView||this.document[0].parentWindow)),this.options=e.widget.extend({},this.options,this._getCreateOptions(),t),this._create(),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:e.noop,_getCreateEventData:e.noop,_create:e.noop,_init:e.noop,destroy:function(){this._destroy(),this.element.unbind(this.eventNamespace).removeData(this.widgetFullName).removeData(e.camelCase(this.widgetFullName)),this.widget().unbind(this.eventNamespace).removeAttr("aria-disabled").removeClass(this.widgetFullName+"-disabled ui-state-disabled"),this.bindings.unbind(this.eventNamespace),this.hoverable.removeClass("ui-state-hover"),this.focusable.removeClass("ui-state-focus")},_destroy:e.noop,widget:function(){return this.element},option:function(t,o){var i,n,r,a=t;if(0===arguments.length)return e.widget.extend({},this.options);if("string"==typeof t)if(a={},i=t.split("."),t=i.shift(),i.length){for(n=a[t]=e.widget.extend({},this.options[t]),r=0;i.length-1>r;r++)n[i[r]]=n[i[r]]||{},n=n[i[r]];if(t=i.pop(),1===arguments.length)return void 0===n[t]?null:n[t];n[t]=o}else{if(1===arguments.length)return void 0===this.options[t]?null:this.options[t];a[t]=o}return this._setOptions(a),this},_setOptions:function(e){var t;for(t in e)this._setOption(t,e[t]);return this},_setOption:function(e,t){return this.options[e]=t,"disabled"===e&&(this.widget().toggleClass(this.widgetFullName+"-disabled",!!t),t&&(this.hoverable.removeClass("ui-state-hover"),this.focusable.removeClass("ui-state-focus"))),this},enable:function(){return this._setOptions({disabled:!1})},disable:function(){return this._setOptions({disabled:!0})},_on:function(t,o,i){var n,r=this;"boolean"!=typeof t&&(i=o,o=t,t=!1),i?(o=n=e(o),this.bindings=this.bindings.add(o)):(i=o,o=this.element,n=this.widget()),e.each(i,function(i,a){function s(){return t||r.options.disabled!==!0&&!e(this).hasClass("ui-state-disabled")?("string"==typeof a?r[a]:a).apply(r,arguments):void 0}"string"!=typeof a&&(s.guid=a.guid=a.guid||s.guid||e.guid++);var l=i.match(/^([\w:-]*)\s*(.*)$/),c=l[1]+r.eventNamespace,u=l[2];u?n.delegate(u,c,s):o.bind(c,s)})},_off:function(t,o){o=(o||"").split(" ").join(this.eventNamespace+" ")+this.eventNamespace,t.unbind(o).undelegate(o),this.bindings=e(this.bindings.not(t).get()),this.focusable=e(this.focusable.not(t).get()),this.hoverable=e(this.hoverable.not(t).get())},_delay:function(e,t){function o(){return("string"==typeof e?i[e]:e).apply(i,arguments)}var i=this;return setTimeout(o,t||0)},_hoverable:function(t){this.hoverable=this.hoverable.add(t),this._on(t,{mouseenter:function(t){e(t.currentTarget).addClass("ui-state-hover")},mouseleave:function(t){e(t.currentTarget).removeClass("ui-state-hover")}})},_focusable:function(t){this.focusable=this.focusable.add(t),this._on(t,{focusin:function(t){e(t.currentTarget).addClass("ui-state-focus")},focusout:function(t){e(t.currentTarget).removeClass("ui-state-focus")}})},_trigger:function(t,o,i){var n,r,a=this.options[t];if(i=i||{},o=e.Event(o),o.type=(t===this.widgetEventPrefix?t:this.widgetEventPrefix+t).toLowerCase(),o.target=this.element[0],r=o.originalEvent)for(n in r)n in o||(o[n]=r[n]);return this.element.trigger(o,i),!(e.isFunction(a)&&a.apply(this.element[0],[o].concat(i))===!1||o.isDefaultPrevented())}},e.each({show:"fadeIn",hide:"fadeOut"},function(t,o){e.Widget.prototype["_"+t]=function(i,n,r){"string"==typeof n&&(n={effect:n});var a,s=n?n===!0||"number"==typeof n?o:n.effect||o:t;n=n||{},"number"==typeof n&&(n={duration:n}),a=!e.isEmptyObject(n),n.complete=r,n.delay&&i.delay(n.delay),a&&e.effects&&e.effects.effect[s]?i[t](n):s!==t&&i[s]?i[s](n.duration,n.easing,r):i.queue(function(o){e(this)[t](),r&&r.call(i[0]),o()})}}),e.widget;var d=!1;e(document).mouseup(function(){d=!1}),e.widget("ui.mouse",{version:"1.11.4",options:{cancel:"input,textarea,button,select,option",distance:1,delay:0},_mouseInit:function(){var t=this;this.element.bind("mousedown."+this.widgetName,function(e){return t._mouseDown(e)}).bind("click."+this.widgetName,function(o){return!0===e.data(o.target,t.widgetName+".preventClickEvent")?(e.removeData(o.target,t.widgetName+".preventClickEvent"),o.stopImmediatePropagation(),!1):void 0}),this.started=!1},_mouseDestroy:function(){this.element.unbind("."+this.widgetName),this._mouseMoveDelegate&&this.document.unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate)},_mouseDown:function(t){if(!d){this._mouseMoved=!1,this._mouseStarted&&this._mouseUp(t),this._mouseDownEvent=t;var o=this,i=1===t.which,n="string"==typeof this.options.cancel&&t.target.nodeName?e(t.target).closest(this.options.cancel).length:!1;return i&&!n&&this._mouseCapture(t)?(this.mouseDelayMet=!this.options.delay,this.mouseDelayMet||(this._mouseDelayTimer=setTimeout(function(){o.mouseDelayMet=!0},this.options.delay)),this._mouseDistanceMet(t)&&this._mouseDelayMet(t)&&(this._mouseStarted=this._mouseStart(t)!==!1,!this._mouseStarted)?(t.preventDefault(),!0):(!0===e.data(t.target,this.widgetName+".preventClickEvent")&&e.removeData(t.target,this.widgetName+".preventClickEvent"),this._mouseMoveDelegate=function(e){return o._mouseMove(e)},this._mouseUpDelegate=function(e){return o._mouseUp(e)},this.document.bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate),t.preventDefault(),d=!0,!0)):!0}},_mouseMove:function(t){if(this._mouseMoved){if(e.ui.ie&&(!document.documentMode||9>document.documentMode)&&!t.button)return this._mouseUp(t);if(!t.which)return this._mouseUp(t)}return(t.which||t.button)&&(this._mouseMoved=!0),this._mouseStarted?(this._mouseDrag(t),t.preventDefault()):(this._mouseDistanceMet(t)&&this._mouseDelayMet(t)&&(this._mouseStarted=this._mouseStart(this._mouseDownEvent,t)!==!1,this._mouseStarted?this._mouseDrag(t):this._mouseUp(t)),!this._mouseStarted)},_mouseUp:function(t){return this.document.unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,t.target===this._mouseDownEvent.target&&e.data(t.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(t)),d=!1,!1},_mouseDistanceMet:function(e){return Math.max(Math.abs(this._mouseDownEvent.pageX-e.pageX),Math.abs(this._mouseDownEvent.pageY-e.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),function(){function t(e,t,o){return[parseFloat(e[0])*(p.test(e[0])?t/100:1),parseFloat(e[1])*(p.test(e[1])?o/100:1)]}function o(t,o){return parseInt(e.css(t,o),10)||0}function i(t){var o=t[0];return 9===o.nodeType?{width:t.width(),height:t.height(),offset:{top:0,left:0}}:e.isWindow(o)?{width:t.width(),height:t.height(),offset:{top:t.scrollTop(),left:t.scrollLeft()}}:o.preventDefault?{width:0,height:0,offset:{top:o.pageY,left:o.pageX}}:{width:t.outerWidth(),height:t.outerHeight(),offset:t.offset()}}e.ui=e.ui||{};var n,r,a=Math.max,s=Math.abs,l=Math.round,c=/left|center|right/,u=/top|center|bottom/,d=/[\+\-]\d+(\.[\d]+)?%?/,h=/^\w+/,p=/%$/,f=e.fn.position;e.position={scrollbarWidth:function(){if(void 0!==n)return n;var t,o,i=e("<div style='display:block;position:absolute;width:50px;height:50px;overflow:hidden;'><div style='height:100px;width:auto;'></div></div>"),r=i.children()[0];return e("body").append(i),t=r.offsetWidth,i.css("overflow","scroll"),o=r.offsetWidth,t===o&&(o=i[0].clientWidth),i.remove(),n=t-o},getScrollInfo:function(t){var o=t.isWindow||t.isDocument?"":t.element.css("overflow-x"),i=t.isWindow||t.isDocument?"":t.element.css("overflow-y"),n="scroll"===o||"auto"===o&&t.width<t.element[0].scrollWidth,r="scroll"===i||"auto"===i&&t.height<t.element[0].scrollHeight;
-return{width:r?e.position.scrollbarWidth():0,height:n?e.position.scrollbarWidth():0}},getWithinInfo:function(t){var o=e(t||window),i=e.isWindow(o[0]),n=!!o[0]&&9===o[0].nodeType;return{element:o,isWindow:i,isDocument:n,offset:o.offset()||{left:0,top:0},scrollLeft:o.scrollLeft(),scrollTop:o.scrollTop(),width:i||n?o.width():o.outerWidth(),height:i||n?o.height():o.outerHeight()}}},e.fn.position=function(n){if(!n||!n.of)return f.apply(this,arguments);n=e.extend({},n);var p,m,g,v,b,y,C=e(n.of),w=e.position.getWithinInfo(n.within),x=e.position.getScrollInfo(w),_=(n.collision||"flip").split(" "),S={};return y=i(C),C[0].preventDefault&&(n.at="left top"),m=y.width,g=y.height,v=y.offset,b=e.extend({},v),e.each(["my","at"],function(){var e,t,o=(n[this]||"").split(" ");1===o.length&&(o=c.test(o[0])?o.concat(["center"]):u.test(o[0])?["center"].concat(o):["center","center"]),o[0]=c.test(o[0])?o[0]:"center",o[1]=u.test(o[1])?o[1]:"center",e=d.exec(o[0]),t=d.exec(o[1]),S[this]=[e?e[0]:0,t?t[0]:0],n[this]=[h.exec(o[0])[0],h.exec(o[1])[0]]}),1===_.length&&(_[1]=_[0]),"right"===n.at[0]?b.left+=m:"center"===n.at[0]&&(b.left+=m/2),"bottom"===n.at[1]?b.top+=g:"center"===n.at[1]&&(b.top+=g/2),p=t(S.at,m,g),b.left+=p[0],b.top+=p[1],this.each(function(){var i,c,u=e(this),d=u.outerWidth(),h=u.outerHeight(),f=o(this,"marginLeft"),y=o(this,"marginTop"),k=d+f+o(this,"marginRight")+x.width,T=h+y+o(this,"marginBottom")+x.height,F=e.extend({},b),E=t(S.my,u.outerWidth(),u.outerHeight());"right"===n.my[0]?F.left-=d:"center"===n.my[0]&&(F.left-=d/2),"bottom"===n.my[1]?F.top-=h:"center"===n.my[1]&&(F.top-=h/2),F.left+=E[0],F.top+=E[1],r||(F.left=l(F.left),F.top=l(F.top)),i={marginLeft:f,marginTop:y},e.each(["left","top"],function(t,o){e.ui.position[_[t]]&&e.ui.position[_[t]][o](F,{targetWidth:m,targetHeight:g,elemWidth:d,elemHeight:h,collisionPosition:i,collisionWidth:k,collisionHeight:T,offset:[p[0]+E[0],p[1]+E[1]],my:n.my,at:n.at,within:w,elem:u})}),n.using&&(c=function(e){var t=v.left-F.left,o=t+m-d,i=v.top-F.top,r=i+g-h,l={target:{element:C,left:v.left,top:v.top,width:m,height:g},element:{element:u,left:F.left,top:F.top,width:d,height:h},horizontal:0>o?"left":t>0?"right":"center",vertical:0>r?"top":i>0?"bottom":"middle"};d>m&&m>s(t+o)&&(l.horizontal="center"),h>g&&g>s(i+r)&&(l.vertical="middle"),l.important=a(s(t),s(o))>a(s(i),s(r))?"horizontal":"vertical",n.using.call(this,e,l)}),u.offset(e.extend(F,{using:c}))})},e.ui.position={fit:{left:function(e,t){var o,i=t.within,n=i.isWindow?i.scrollLeft:i.offset.left,r=i.width,s=e.left-t.collisionPosition.marginLeft,l=n-s,c=s+t.collisionWidth-r-n;t.collisionWidth>r?l>0&&0>=c?(o=e.left+l+t.collisionWidth-r-n,e.left+=l-o):e.left=c>0&&0>=l?n:l>c?n+r-t.collisionWidth:n:l>0?e.left+=l:c>0?e.left-=c:e.left=a(e.left-s,e.left)},top:function(e,t){var o,i=t.within,n=i.isWindow?i.scrollTop:i.offset.top,r=t.within.height,s=e.top-t.collisionPosition.marginTop,l=n-s,c=s+t.collisionHeight-r-n;t.collisionHeight>r?l>0&&0>=c?(o=e.top+l+t.collisionHeight-r-n,e.top+=l-o):e.top=c>0&&0>=l?n:l>c?n+r-t.collisionHeight:n:l>0?e.top+=l:c>0?e.top-=c:e.top=a(e.top-s,e.top)}},flip:{left:function(e,t){var o,i,n=t.within,r=n.offset.left+n.scrollLeft,a=n.width,l=n.isWindow?n.scrollLeft:n.offset.left,c=e.left-t.collisionPosition.marginLeft,u=c-l,d=c+t.collisionWidth-a-l,h="left"===t.my[0]?-t.elemWidth:"right"===t.my[0]?t.elemWidth:0,p="left"===t.at[0]?t.targetWidth:"right"===t.at[0]?-t.targetWidth:0,f=-2*t.offset[0];0>u?(o=e.left+h+p+f+t.collisionWidth-a-r,(0>o||s(u)>o)&&(e.left+=h+p+f)):d>0&&(i=e.left-t.collisionPosition.marginLeft+h+p+f-l,(i>0||d>s(i))&&(e.left+=h+p+f))},top:function(e,t){var o,i,n=t.within,r=n.offset.top+n.scrollTop,a=n.height,l=n.isWindow?n.scrollTop:n.offset.top,c=e.top-t.collisionPosition.marginTop,u=c-l,d=c+t.collisionHeight-a-l,h="top"===t.my[1],p=h?-t.elemHeight:"bottom"===t.my[1]?t.elemHeight:0,f="top"===t.at[1]?t.targetHeight:"bottom"===t.at[1]?-t.targetHeight:0,m=-2*t.offset[1];0>u?(i=e.top+p+f+m+t.collisionHeight-a-r,(0>i||s(u)>i)&&(e.top+=p+f+m)):d>0&&(o=e.top-t.collisionPosition.marginTop+p+f+m-l,(o>0||d>s(o))&&(e.top+=p+f+m))}},flipfit:{left:function(){e.ui.position.flip.left.apply(this,arguments),e.ui.position.fit.left.apply(this,arguments)},top:function(){e.ui.position.flip.top.apply(this,arguments),e.ui.position.fit.top.apply(this,arguments)}}},function(){var t,o,i,n,a,s=document.getElementsByTagName("body")[0],l=document.createElement("div");t=document.createElement(s?"div":"body"),i={visibility:"hidden",width:0,height:0,border:0,margin:0,background:"none"},s&&e.extend(i,{position:"absolute",left:"-1000px",top:"-1000px"});for(a in i)t.style[a]=i[a];t.appendChild(l),o=s||document.documentElement,o.insertBefore(t,o.firstChild),l.style.cssText="position: absolute; left: 10.7432222px;",n=e(l).offset().left,r=n>10&&11>n,t.innerHTML="",o.removeChild(t)}()}(),e.ui.position,e.widget("ui.draggable",e.ui.mouse,{version:"1.11.4",widgetEventPrefix:"drag",options:{addClasses:!0,appendTo:"parent",axis:!1,connectToSortable:!1,containment:!1,cursor:"auto",cursorAt:!1,grid:!1,handle:!1,helper:"original",iframeFix:!1,opacity:!1,refreshPositions:!1,revert:!1,revertDuration:500,scope:"default",scroll:!0,scrollSensitivity:20,scrollSpeed:20,snap:!1,snapMode:"both",snapTolerance:20,stack:!1,zIndex:!1,drag:null,start:null,stop:null},_create:function(){"original"===this.options.helper&&this._setPositionRelative(),this.options.addClasses&&this.element.addClass("ui-draggable"),this.options.disabled&&this.element.addClass("ui-draggable-disabled"),this._setHandleClassName(),this._mouseInit()},_setOption:function(e,t){this._super(e,t),"handle"===e&&(this._removeHandleClassName(),this._setHandleClassName())},_destroy:function(){return(this.helper||this.element).is(".ui-draggable-dragging")?void(this.destroyOnClear=!0):(this.element.removeClass("ui-draggable ui-draggable-dragging ui-draggable-disabled"),this._removeHandleClassName(),void this._mouseDestroy())},_mouseCapture:function(t){var o=this.options;return this._blurActiveElement(t),this.helper||o.disabled||e(t.target).closest(".ui-resizable-handle").length>0?!1:(this.handle=this._getHandle(t),this.handle?(this._blockFrames(o.iframeFix===!0?"iframe":o.iframeFix),!0):!1)},_blockFrames:function(t){this.iframeBlocks=this.document.find(t).map(function(){var t=e(this);return e("<div>").css("position","absolute").appendTo(t.parent()).outerWidth(t.outerWidth()).outerHeight(t.outerHeight()).offset(t.offset())[0]})},_unblockFrames:function(){this.iframeBlocks&&(this.iframeBlocks.remove(),delete this.iframeBlocks)},_blurActiveElement:function(t){var o=this.document[0];if(this.handleElement.is(t.target))try{o.activeElement&&"body"!==o.activeElement.nodeName.toLowerCase()&&e(o.activeElement).blur()}catch(i){}},_mouseStart:function(t){var o=this.options;return this.helper=this._createHelper(t),this.helper.addClass("ui-draggable-dragging"),this._cacheHelperProportions(),e.ui.ddmanager&&(e.ui.ddmanager.current=this),this._cacheMargins(),this.cssPosition=this.helper.css("position"),this.scrollParent=this.helper.scrollParent(!0),this.offsetParent=this.helper.offsetParent(),this.hasFixedAncestor=this.helper.parents().filter(function(){return"fixed"===e(this).css("position")}).length>0,this.positionAbs=this.element.offset(),this._refreshOffsets(t),this.originalPosition=this.position=this._generatePosition(t,!1),this.originalPageX=t.pageX,this.originalPageY=t.pageY,o.cursorAt&&this._adjustOffsetFromHelper(o.cursorAt),this._setContainment(),this._trigger("start",t)===!1?(this._clear(),!1):(this._cacheHelperProportions(),e.ui.ddmanager&&!o.dropBehaviour&&e.ui.ddmanager.prepareOffsets(this,t),this._normalizeRightBottom(),this._mouseDrag(t,!0),e.ui.ddmanager&&e.ui.ddmanager.dragStart(this,t),!0)},_refreshOffsets:function(e){this.offset={top:this.positionAbs.top-this.margins.top,left:this.positionAbs.left-this.margins.left,scroll:!1,parent:this._getParentOffset(),relative:this._getRelativeOffset()},this.offset.click={left:e.pageX-this.offset.left,top:e.pageY-this.offset.top}},_mouseDrag:function(t,o){if(this.hasFixedAncestor&&(this.offset.parent=this._getParentOffset()),this.position=this._generatePosition(t,!0),this.positionAbs=this._convertPositionTo("absolute"),!o){var i=this._uiHash();if(this._trigger("drag",t,i)===!1)return this._mouseUp({}),!1;this.position=i.position}return this.helper[0].style.left=this.position.left+"px",this.helper[0].style.top=this.position.top+"px",e.ui.ddmanager&&e.ui.ddmanager.drag(this,t),!1},_mouseStop:function(t){var o=this,i=!1;return e.ui.ddmanager&&!this.options.dropBehaviour&&(i=e.ui.ddmanager.drop(this,t)),this.dropped&&(i=this.dropped,this.dropped=!1),"invalid"===this.options.revert&&!i||"valid"===this.options.revert&&i||this.options.revert===!0||e.isFunction(this.options.revert)&&this.options.revert.call(this.element,i)?e(this.helper).animate(this.originalPosition,parseInt(this.options.revertDuration,10),function(){o._trigger("stop",t)!==!1&&o._clear()}):this._trigger("stop",t)!==!1&&this._clear(),!1},_mouseUp:function(t){return this._unblockFrames(),e.ui.ddmanager&&e.ui.ddmanager.dragStop(this,t),this.handleElement.is(t.target)&&this.element.focus(),e.ui.mouse.prototype._mouseUp.call(this,t)},cancel:function(){return this.helper.is(".ui-draggable-dragging")?this._mouseUp({}):this._clear(),this},_getHandle:function(t){return this.options.handle?!!e(t.target).closest(this.element.find(this.options.handle)).length:!0},_setHandleClassName:function(){this.handleElement=this.options.handle?this.element.find(this.options.handle):this.element,this.handleElement.addClass("ui-draggable-handle")},_removeHandleClassName:function(){this.handleElement.removeClass("ui-draggable-handle")},_createHelper:function(t){var o=this.options,i=e.isFunction(o.helper),n=i?e(o.helper.apply(this.element[0],[t])):"clone"===o.helper?this.element.clone().removeAttr("id"):this.element;return n.parents("body").length||n.appendTo("parent"===o.appendTo?this.element[0].parentNode:o.appendTo),i&&n[0]===this.element[0]&&this._setPositionRelative(),n[0]===this.element[0]||/(fixed|absolute)/.test(n.css("position"))||n.css("position","absolute"),n},_setPositionRelative:function(){/^(?:r|a|f)/.test(this.element.css("position"))||(this.element[0].style.position="relative")},_adjustOffsetFromHelper:function(t){"string"==typeof t&&(t=t.split(" ")),e.isArray(t)&&(t={left:+t[0],top:+t[1]||0}),"left"in t&&(this.offset.click.left=t.left+this.margins.left),"right"in t&&(this.offset.click.left=this.helperProportions.width-t.right+this.margins.left),"top"in t&&(this.offset.click.top=t.top+this.margins.top),"bottom"in t&&(this.offset.click.top=this.helperProportions.height-t.bottom+this.margins.top)},_isRootNode:function(e){return/(html|body)/i.test(e.tagName)||e===this.document[0]},_getParentOffset:function(){var t=this.offsetParent.offset(),o=this.document[0];return"absolute"===this.cssPosition&&this.scrollParent[0]!==o&&e.contains(this.scrollParent[0],this.offsetParent[0])&&(t.left+=this.scrollParent.scrollLeft(),t.top+=this.scrollParent.scrollTop()),this._isRootNode(this.offsetParent[0])&&(t={top:0,left:0}),{top:t.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:t.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if("relative"!==this.cssPosition)return{top:0,left:0};var e=this.element.position(),t=this._isRootNode(this.scrollParent[0]);return{top:e.top-(parseInt(this.helper.css("top"),10)||0)+(t?0:this.scrollParent.scrollTop()),left:e.left-(parseInt(this.helper.css("left"),10)||0)+(t?0:this.scrollParent.scrollLeft())}},_cacheMargins:function(){this.margins={left:parseInt(this.element.css("marginLeft"),10)||0,top:parseInt(this.element.css("marginTop"),10)||0,right:parseInt(this.element.css("marginRight"),10)||0,bottom:parseInt(this.element.css("marginBottom"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var t,o,i,n=this.options,r=this.document[0];return this.relativeContainer=null,n.containment?"window"===n.containment?void(this.containment=[e(window).scrollLeft()-this.offset.relative.left-this.offset.parent.left,e(window).scrollTop()-this.offset.relative.top-this.offset.parent.top,e(window).scrollLeft()+e(window).width()-this.helperProportions.width-this.margins.left,e(window).scrollTop()+(e(window).height()||r.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top]):"document"===n.containment?void(this.containment=[0,0,e(r).width()-this.helperProportions.width-this.margins.left,(e(r).height()||r.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top]):n.containment.constructor===Array?void(this.containment=n.containment):("parent"===n.containment&&(n.containment=this.helper[0].parentNode),o=e(n.containment),i=o[0],void(i&&(t=/(scroll|auto)/.test(o.css("overflow")),this.containment=[(parseInt(o.css("borderLeftWidth"),10)||0)+(parseInt(o.css("paddingLeft"),10)||0),(parseInt(o.css("borderTopWidth"),10)||0)+(parseInt(o.css("paddingTop"),10)||0),(t?Math.max(i.scrollWidth,i.offsetWidth):i.offsetWidth)-(parseInt(o.css("borderRightWidth"),10)||0)-(parseInt(o.css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left-this.margins.right,(t?Math.max(i.scrollHeight,i.offsetHeight):i.offsetHeight)-(parseInt(o.css("borderBottomWidth"),10)||0)-(parseInt(o.css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top-this.margins.bottom],this.relativeContainer=o))):void(this.containment=null)},_convertPositionTo:function(e,t){t||(t=this.position);var o="absolute"===e?1:-1,i=this._isRootNode(this.scrollParent[0]);return{top:t.top+this.offset.relative.top*o+this.offset.parent.top*o-("fixed"===this.cssPosition?-this.offset.scroll.top:i?0:this.offset.scroll.top)*o,left:t.left+this.offset.relative.left*o+this.offset.parent.left*o-("fixed"===this.cssPosition?-this.offset.scroll.left:i?0:this.offset.scroll.left)*o}},_generatePosition:function(e,t){var o,i,n,r,a=this.options,s=this._isRootNode(this.scrollParent[0]),l=e.pageX,c=e.pageY;return s&&this.offset.scroll||(this.offset.scroll={top:this.scrollParent.scrollTop(),left:this.scrollParent.scrollLeft()}),t&&(this.containment&&(this.relativeContainer?(i=this.relativeContainer.offset(),o=[this.containment[0]+i.left,this.containment[1]+i.top,this.containment[2]+i.left,this.containment[3]+i.top]):o=this.containment,e.pageX-this.offset.click.left<o[0]&&(l=o[0]+this.offset.click.left),e.pageY-this.offset.click.top<o[1]&&(c=o[1]+this.offset.click.top),e.pageX-this.offset.click.left>o[2]&&(l=o[2]+this.offset.click.left),e.pageY-this.offset.click.top>o[3]&&(c=o[3]+this.offset.click.top)),a.grid&&(n=a.grid[1]?this.originalPageY+Math.round((c-this.originalPageY)/a.grid[1])*a.grid[1]:this.originalPageY,c=o?n-this.offset.click.top>=o[1]||n-this.offset.click.top>o[3]?n:n-this.offset.click.top>=o[1]?n-a.grid[1]:n+a.grid[1]:n,r=a.grid[0]?this.originalPageX+Math.round((l-this.originalPageX)/a.grid[0])*a.grid[0]:this.originalPageX,l=o?r-this.offset.click.left>=o[0]||r-this.offset.click.left>o[2]?r:r-this.offset.click.left>=o[0]?r-a.grid[0]:r+a.grid[0]:r),"y"===a.axis&&(l=this.originalPageX),"x"===a.axis&&(c=this.originalPageY)),{top:c-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+("fixed"===this.cssPosition?-this.offset.scroll.top:s?0:this.offset.scroll.top),left:l-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+("fixed"===this.cssPosition?-this.offset.scroll.left:s?0:this.offset.scroll.left)}},_clear:function(){this.helper.removeClass("ui-draggable-dragging"),this.helper[0]===this.element[0]||this.cancelHelperRemoval||this.helper.remove(),this.helper=null,this.cancelHelperRemoval=!1,this.destroyOnClear&&this.destroy()},_normalizeRightBottom:function(){"y"!==this.options.axis&&"auto"!==this.helper.css("right")&&(this.helper.width(this.helper.width()),this.helper.css("right","auto")),"x"!==this.options.axis&&"auto"!==this.helper.css("bottom")&&(this.helper.height(this.helper.height()),this.helper.css("bottom","auto"))},_trigger:function(t,o,i){return i=i||this._uiHash(),e.ui.plugin.call(this,t,[o,i,this],!0),/^(drag|start|stop)/.test(t)&&(this.positionAbs=this._convertPositionTo("absolute"),i.offset=this.positionAbs),e.Widget.prototype._trigger.call(this,t,o,i)},plugins:{},_uiHash:function(){return{helper:this.helper,position:this.position,originalPosition:this.originalPosition,offset:this.positionAbs}}}),e.ui.plugin.add("draggable","connectToSortable",{start:function(t,o,i){var n=e.extend({},o,{item:i.element});i.sortables=[],e(i.options.connectToSortable).each(function(){var o=e(this).sortable("instance");o&&!o.options.disabled&&(i.sortables.push(o),o.refreshPositions(),o._trigger("activate",t,n))})},stop:function(t,o,i){var n=e.extend({},o,{item:i.element});i.cancelHelperRemoval=!1,e.each(i.sortables,function(){var e=this;e.isOver?(e.isOver=0,i.cancelHelperRemoval=!0,e.cancelHelperRemoval=!1,e._storedCSS={position:e.placeholder.css("position"),top:e.placeholder.css("top"),left:e.placeholder.css("left")},e._mouseStop(t),e.options.helper=e.options._helper):(e.cancelHelperRemoval=!0,e._trigger("deactivate",t,n))})},drag:function(t,o,i){e.each(i.sortables,function(){var n=!1,r=this;r.positionAbs=i.positionAbs,r.helperProportions=i.helperProportions,r.offset.click=i.offset.click,r._intersectsWith(r.containerCache)&&(n=!0,e.each(i.sortables,function(){return this.positionAbs=i.positionAbs,this.helperProportions=i.helperProportions,this.offset.click=i.offset.click,this!==r&&this._intersectsWith(this.containerCache)&&e.contains(r.element[0],this.element[0])&&(n=!1),n})),n?(r.isOver||(r.isOver=1,i._parent=o.helper.parent(),r.currentItem=o.helper.appendTo(r.element).data("ui-sortable-item",!0),r.options._helper=r.options.helper,r.options.helper=function(){return o.helper[0]},t.target=r.currentItem[0],r._mouseCapture(t,!0),r._mouseStart(t,!0,!0),r.offset.click.top=i.offset.click.top,r.offset.click.left=i.offset.click.left,r.offset.parent.left-=i.offset.parent.left-r.offset.parent.left,r.offset.parent.top-=i.offset.parent.top-r.offset.parent.top,i._trigger("toSortable",t),i.dropped=r.element,e.each(i.sortables,function(){this.refreshPositions()}),i.currentItem=i.element,r.fromOutside=i),r.currentItem&&(r._mouseDrag(t),o.position=r.position)):r.isOver&&(r.isOver=0,r.cancelHelperRemoval=!0,r.options._revert=r.options.revert,r.options.revert=!1,r._trigger("out",t,r._uiHash(r)),r._mouseStop(t,!0),r.options.revert=r.options._revert,r.options.helper=r.options._helper,r.placeholder&&r.placeholder.remove(),o.helper.appendTo(i._parent),i._refreshOffsets(t),o.position=i._generatePosition(t,!0),i._trigger("fromSortable",t),i.dropped=!1,e.each(i.sortables,function(){this.refreshPositions()}))})}}),e.ui.plugin.add("draggable","cursor",{start:function(t,o,i){var n=e("body"),r=i.options;n.css("cursor")&&(r._cursor=n.css("cursor")),n.css("cursor",r.cursor)},stop:function(t,o,i){var n=i.options;n._cursor&&e("body").css("cursor",n._cursor)}}),e.ui.plugin.add("draggable","opacity",{start:function(t,o,i){var n=e(o.helper),r=i.options;n.css("opacity")&&(r._opacity=n.css("opacity")),n.css("opacity",r.opacity)},stop:function(t,o,i){var n=i.options;n._opacity&&e(o.helper).css("opacity",n._opacity)}}),e.ui.plugin.add("draggable","scroll",{start:function(e,t,o){o.scrollParentNotHidden||(o.scrollParentNotHidden=o.helper.scrollParent(!1)),o.scrollParentNotHidden[0]!==o.document[0]&&"HTML"!==o.scrollParentNotHidden[0].tagName&&(o.overflowOffset=o.scrollParentNotHidden.offset())},drag:function(t,o,i){var n=i.options,r=!1,a=i.scrollParentNotHidden[0],s=i.document[0];a!==s&&"HTML"!==a.tagName?(n.axis&&"x"===n.axis||(i.overflowOffset.top+a.offsetHeight-t.pageY<n.scrollSensitivity?a.scrollTop=r=a.scrollTop+n.scrollSpeed:t.pageY-i.overflowOffset.top<n.scrollSensitivity&&(a.scrollTop=r=a.scrollTop-n.scrollSpeed)),n.axis&&"y"===n.axis||(i.overflowOffset.left+a.offsetWidth-t.pageX<n.scrollSensitivity?a.scrollLeft=r=a.scrollLeft+n.scrollSpeed:t.pageX-i.overflowOffset.left<n.scrollSensitivity&&(a.scrollLeft=r=a.scrollLeft-n.scrollSpeed))):(n.axis&&"x"===n.axis||(t.pageY-e(s).scrollTop()<n.scrollSensitivity?r=e(s).scrollTop(e(s).scrollTop()-n.scrollSpeed):e(window).height()-(t.pageY-e(s).scrollTop())<n.scrollSensitivity&&(r=e(s).scrollTop(e(s).scrollTop()+n.scrollSpeed))),n.axis&&"y"===n.axis||(t.pageX-e(s).scrollLeft()<n.scrollSensitivity?r=e(s).scrollLeft(e(s).scrollLeft()-n.scrollSpeed):e(window).width()-(t.pageX-e(s).scrollLeft())<n.scrollSensitivity&&(r=e(s).scrollLeft(e(s).scrollLeft()+n.scrollSpeed)))),r!==!1&&e.ui.ddmanager&&!n.dropBehaviour&&e.ui.ddmanager.prepareOffsets(i,t)}}),e.ui.plugin.add("draggable","snap",{start:function(t,o,i){var n=i.options;i.snapElements=[],e(n.snap.constructor!==String?n.snap.items||":data(ui-draggable)":n.snap).each(function(){var t=e(this),o=t.offset();this!==i.element[0]&&i.snapElements.push({item:this,width:t.outerWidth(),height:t.outerHeight(),top:o.top,left:o.left})})},drag:function(t,o,i){var n,r,a,s,l,c,u,d,h,p,f=i.options,m=f.snapTolerance,g=o.offset.left,v=g+i.helperProportions.width,b=o.offset.top,y=b+i.helperProportions.height;for(h=i.snapElements.length-1;h>=0;h--)l=i.snapElements[h].left-i.margins.left,c=l+i.snapElements[h].width,u=i.snapElements[h].top-i.margins.top,d=u+i.snapElements[h].height,l-m>v||g>c+m||u-m>y||b>d+m||!e.contains(i.snapElements[h].item.ownerDocument,i.snapElements[h].item)?(i.snapElements[h].snapping&&i.options.snap.release&&i.options.snap.release.call(i.element,t,e.extend(i._uiHash(),{snapItem:i.snapElements[h].item})),i.snapElements[h].snapping=!1):("inner"!==f.snapMode&&(n=m>=Math.abs(u-y),r=m>=Math.abs(d-b),a=m>=Math.abs(l-v),s=m>=Math.abs(c-g),n&&(o.position.top=i._convertPositionTo("relative",{top:u-i.helperProportions.height,left:0}).top),r&&(o.position.top=i._convertPositionTo("relative",{top:d,left:0}).top),a&&(o.position.left=i._convertPositionTo("relative",{top:0,left:l-i.helperProportions.width}).left),s&&(o.position.left=i._convertPositionTo("relative",{top:0,left:c}).left)),p=n||r||a||s,"outer"!==f.snapMode&&(n=m>=Math.abs(u-b),r=m>=Math.abs(d-y),a=m>=Math.abs(l-g),s=m>=Math.abs(c-v),n&&(o.position.top=i._convertPositionTo("relative",{top:u,left:0}).top),r&&(o.position.top=i._convertPositionTo("relative",{top:d-i.helperProportions.height,left:0}).top),a&&(o.position.left=i._convertPositionTo("relative",{top:0,left:l}).left),s&&(o.position.left=i._convertPositionTo("relative",{top:0,left:c-i.helperProportions.width}).left)),!i.snapElements[h].snapping&&(n||r||a||s||p)&&i.options.snap.snap&&i.options.snap.snap.call(i.element,t,e.extend(i._uiHash(),{snapItem:i.snapElements[h].item})),i.snapElements[h].snapping=n||r||a||s||p)}}),e.ui.plugin.add("draggable","stack",{start:function(t,o,i){var n,r=i.options,a=e.makeArray(e(r.stack)).sort(function(t,o){return(parseInt(e(t).css("zIndex"),10)||0)-(parseInt(e(o).css("zIndex"),10)||0)});a.length&&(n=parseInt(e(a[0]).css("zIndex"),10)||0,e(a).each(function(t){e(this).css("zIndex",n+t)}),this.css("zIndex",n+a.length))}}),e.ui.plugin.add("draggable","zIndex",{start:function(t,o,i){var n=e(o.helper),r=i.options;n.css("zIndex")&&(r._zIndex=n.css("zIndex")),n.css("zIndex",r.zIndex)},stop:function(t,o,i){var n=i.options;n._zIndex&&e(o.helper).css("zIndex",n._zIndex)}}),e.ui.draggable,e.widget("ui.droppable",{version:"1.11.4",widgetEventPrefix:"drop",options:{accept:"*",activeClass:!1,addClasses:!0,greedy:!1,hoverClass:!1,scope:"default",tolerance:"intersect",activate:null,deactivate:null,drop:null,out:null,over:null},_create:function(){var t,o=this.options,i=o.accept;this.isover=!1,this.isout=!0,this.accept=e.isFunction(i)?i:function(e){return e.is(i)},this.proportions=function(){return arguments.length?void(t=arguments[0]):t?t:t={width:this.element[0].offsetWidth,height:this.element[0].offsetHeight}},this._addToManager(o.scope),o.addClasses&&this.element.addClass("ui-droppable")},_addToManager:function(t){e.ui.ddmanager.droppables[t]=e.ui.ddmanager.droppables[t]||[],e.ui.ddmanager.droppables[t].push(this)},_splice:function(e){for(var t=0;e.length>t;t++)e[t]===this&&e.splice(t,1)},_destroy:function(){var t=e.ui.ddmanager.droppables[this.options.scope];this._splice(t),this.element.removeClass("ui-droppable ui-droppable-disabled")},_setOption:function(t,o){if("accept"===t)this.accept=e.isFunction(o)?o:function(e){return e.is(o)};else if("scope"===t){var i=e.ui.ddmanager.droppables[this.options.scope];this._splice(i),this._addToManager(o)}this._super(t,o)},_activate:function(t){var o=e.ui.ddmanager.current;this.options.activeClass&&this.element.addClass(this.options.activeClass),o&&this._trigger("activate",t,this.ui(o))},_deactivate:function(t){var o=e.ui.ddmanager.current;this.options.activeClass&&this.element.removeClass(this.options.activeClass),o&&this._trigger("deactivate",t,this.ui(o))},_over:function(t){var o=e.ui.ddmanager.current;o&&(o.currentItem||o.element)[0]!==this.element[0]&&this.accept.call(this.element[0],o.currentItem||o.element)&&(this.options.hoverClass&&this.element.addClass(this.options.hoverClass),this._trigger("over",t,this.ui(o)))},_out:function(t){var o=e.ui.ddmanager.current;o&&(o.currentItem||o.element)[0]!==this.element[0]&&this.accept.call(this.element[0],o.currentItem||o.element)&&(this.options.hoverClass&&this.element.removeClass(this.options.hoverClass),this._trigger("out",t,this.ui(o)))},_drop:function(t,o){var i=o||e.ui.ddmanager.current,n=!1;return i&&(i.currentItem||i.element)[0]!==this.element[0]?(this.element.find(":data(ui-droppable)").not(".ui-draggable-dragging").each(function(){var o=e(this).droppable("instance");return o.options.greedy&&!o.options.disabled&&o.options.scope===i.options.scope&&o.accept.call(o.element[0],i.currentItem||i.element)&&e.ui.intersect(i,e.extend(o,{offset:o.element.offset()}),o.options.tolerance,t)?(n=!0,!1):void 0}),n?!1:this.accept.call(this.element[0],i.currentItem||i.element)?(this.options.activeClass&&this.element.removeClass(this.options.activeClass),this.options.hoverClass&&this.element.removeClass(this.options.hoverClass),this._trigger("drop",t,this.ui(i)),this.element):!1):!1},ui:function(e){return{draggable:e.currentItem||e.element,helper:e.helper,position:e.position,offset:e.positionAbs}}}),e.ui.intersect=function(){function e(e,t,o){return e>=t&&t+o>e}return function(t,o,i,n){if(!o.offset)return!1;var r=(t.positionAbs||t.position.absolute).left+t.margins.left,a=(t.positionAbs||t.position.absolute).top+t.margins.top,s=r+t.helperProportions.width,l=a+t.helperProportions.height,c=o.offset.left,u=o.offset.top,d=c+o.proportions().width,h=u+o.proportions().height;switch(i){case"fit":return r>=c&&d>=s&&a>=u&&h>=l;case"intersect":return r+t.helperProportions.width/2>c&&d>s-t.helperProportions.width/2&&a+t.helperProportions.height/2>u&&h>l-t.helperProportions.height/2;case"pointer":return e(n.pageY,u,o.proportions().height)&&e(n.pageX,c,o.proportions().width);case"touch":return(a>=u&&h>=a||l>=u&&h>=l||u>a&&l>h)&&(r>=c&&d>=r||s>=c&&d>=s||c>r&&s>d);default:return!1}}}(),e.ui.ddmanager={current:null,droppables:{"default":[]},prepareOffsets:function(t,o){var i,n,r=e.ui.ddmanager.droppables[t.options.scope]||[],a=o?o.type:null,s=(t.currentItem||t.element).find(":data(ui-droppable)").addBack();e:for(i=0;r.length>i;i++)if(!(r[i].options.disabled||t&&!r[i].accept.call(r[i].element[0],t.currentItem||t.element))){for(n=0;s.length>n;n++)if(s[n]===r[i].element[0]){r[i].proportions().height=0;continue e}r[i].visible="none"!==r[i].element.css("display"),r[i].visible&&("mousedown"===a&&r[i]._activate.call(r[i],o),r[i].offset=r[i].element.offset(),r[i].proportions({width:r[i].element[0].offsetWidth,height:r[i].element[0].offsetHeight}))}},drop:function(t,o){var i=!1;return e.each((e.ui.ddmanager.droppables[t.options.scope]||[]).slice(),function(){this.options&&(!this.options.disabled&&this.visible&&e.ui.intersect(t,this,this.options.tolerance,o)&&(i=this._drop.call(this,o)||i),!this.options.disabled&&this.visible&&this.accept.call(this.element[0],t.currentItem||t.element)&&(this.isout=!0,this.isover=!1,this._deactivate.call(this,o)))}),i},dragStart:function(t,o){t.element.parentsUntil("body").bind("scroll.droppable",function(){t.options.refreshPositions||e.ui.ddmanager.prepareOffsets(t,o)})},drag:function(t,o){t.options.refreshPositions&&e.ui.ddmanager.prepareOffsets(t,o),e.each(e.ui.ddmanager.droppables[t.options.scope]||[],function(){if(!this.options.disabled&&!this.greedyChild&&this.visible){var i,n,r,a=e.ui.intersect(t,this,this.options.tolerance,o),s=!a&&this.isover?"isout":a&&!this.isover?"isover":null;s&&(this.options.greedy&&(n=this.options.scope,r=this.element.parents(":data(ui-droppable)").filter(function(){return e(this).droppable("instance").options.scope===n}),r.length&&(i=e(r[0]).droppable("instance"),i.greedyChild="isover"===s)),i&&"isover"===s&&(i.isover=!1,i.isout=!0,i._out.call(i,o)),this[s]=!0,this["isout"===s?"isover":"isout"]=!1,this["isover"===s?"_over":"_out"].call(this,o),i&&"isout"===s&&(i.isout=!1,i.isover=!0,i._over.call(i,o)))}})},dragStop:function(t,o){t.element.parentsUntil("body").unbind("scroll.droppable"),t.options.refreshPositions||e.ui.ddmanager.prepareOffsets(t,o)}},e.ui.droppable,e.widget("ui.resizable",e.ui.mouse,{version:"1.11.4",widgetEventPrefix:"resize",options:{alsoResize:!1,animate:!1,animateDuration:"slow",animateEasing:"swing",aspectRatio:!1,autoHide:!1,containment:!1,ghost:!1,grid:!1,handles:"e,s,se",helper:!1,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:90,resize:null,start:null,stop:null},_num:function(e){return parseInt(e,10)||0},_isNumber:function(e){return!isNaN(parseInt(e,10))},_hasScroll:function(t,o){if("hidden"===e(t).css("overflow"))return!1;var i=o&&"left"===o?"scrollLeft":"scrollTop",n=!1;return t[i]>0?!0:(t[i]=1,n=t[i]>0,t[i]=0,n)},_create:function(){var t,o,i,n,r,a=this,s=this.options;if(this.element.addClass("ui-resizable"),e.extend(this,{_aspectRatio:!!s.aspectRatio,aspectRatio:s.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:s.helper||s.ghost||s.animate?s.helper||"ui-resizable-helper":null}),this.element[0].nodeName.match(/^(canvas|textarea|input|select|button|img)$/i)&&(this.element.wrap(e("<div class='ui-wrapper' style='overflow: hidden;'></div>").css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("ui-resizable",this.element.resizable("instance")),this.elementIsWrapper=!0,this.element.css({marginLeft:this.originalElement.css("marginLeft"),marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom")}),this.originalElement.css({marginLeft:0,marginTop:0,marginRight:0,marginBottom:0}),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css({margin:this.originalElement.css("margin")}),this._proportionallyResize()),this.handles=s.handles||(e(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se"),this._handles=e(),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),t=this.handles.split(","),this.handles={},o=0;t.length>o;o++)i=e.trim(t[o]),r="ui-resizable-"+i,n=e("<div class='ui-resizable-handle "+r+"'></div>"),n.css({zIndex:s.zIndex}),"se"===i&&n.addClass("ui-icon ui-icon-gripsmall-diagonal-se"),this.handles[i]=".ui-resizable-"+i,this.element.append(n);this._renderAxis=function(t){var o,i,n,r;t=t||this.element;
-for(o in this.handles)this.handles[o].constructor===String?this.handles[o]=this.element.children(this.handles[o]).first().show():(this.handles[o].jquery||this.handles[o].nodeType)&&(this.handles[o]=e(this.handles[o]),this._on(this.handles[o],{mousedown:a._mouseDown})),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/^(textarea|input|select|button)$/i)&&(i=e(this.handles[o],this.element),r=/sw|ne|nw|se|n|s/.test(o)?i.outerHeight():i.outerWidth(),n=["padding",/ne|nw|n/.test(o)?"Top":/se|sw|s/.test(o)?"Bottom":/^e$/.test(o)?"Right":"Left"].join(""),t.css(n,r),this._proportionallyResize()),this._handles=this._handles.add(this.handles[o])},this._renderAxis(this.element),this._handles=this._handles.add(this.element.find(".ui-resizable-handle")),this._handles.disableSelection(),this._handles.mouseover(function(){a.resizing||(this.className&&(n=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),a.axis=n&&n[1]?n[1]:"se")}),s.autoHide&&(this._handles.hide(),e(this.element).addClass("ui-resizable-autohide").mouseenter(function(){s.disabled||(e(this).removeClass("ui-resizable-autohide"),a._handles.show())}).mouseleave(function(){s.disabled||a.resizing||(e(this).addClass("ui-resizable-autohide"),a._handles.hide())})),this._mouseInit()},_destroy:function(){this._mouseDestroy();var t,o=function(t){e(t).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing").removeData("resizable").removeData("ui-resizable").unbind(".resizable").find(".ui-resizable-handle").remove()};return this.elementIsWrapper&&(o(this.element),t=this.element,this.originalElement.css({position:t.css("position"),width:t.outerWidth(),height:t.outerHeight(),top:t.css("top"),left:t.css("left")}).insertAfter(t),t.remove()),this.originalElement.css("resize",this.originalResizeStyle),o(this.originalElement),this},_mouseCapture:function(t){var o,i,n=!1;for(o in this.handles)i=e(this.handles[o])[0],(i===t.target||e.contains(i,t.target))&&(n=!0);return!this.options.disabled&&n},_mouseStart:function(t){var o,i,n,r=this.options,a=this.element;return this.resizing=!0,this._renderProxy(),o=this._num(this.helper.css("left")),i=this._num(this.helper.css("top")),r.containment&&(o+=e(r.containment).scrollLeft()||0,i+=e(r.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:o,top:i},this.size=this._helper?{width:this.helper.width(),height:this.helper.height()}:{width:a.width(),height:a.height()},this.originalSize=this._helper?{width:a.outerWidth(),height:a.outerHeight()}:{width:a.width(),height:a.height()},this.sizeDiff={width:a.outerWidth()-a.width(),height:a.outerHeight()-a.height()},this.originalPosition={left:o,top:i},this.originalMousePosition={left:t.pageX,top:t.pageY},this.aspectRatio="number"==typeof r.aspectRatio?r.aspectRatio:this.originalSize.width/this.originalSize.height||1,n=e(".ui-resizable-"+this.axis).css("cursor"),e("body").css("cursor","auto"===n?this.axis+"-resize":n),a.addClass("ui-resizable-resizing"),this._propagate("start",t),!0},_mouseDrag:function(t){var o,i,n=this.originalMousePosition,r=this.axis,a=t.pageX-n.left||0,s=t.pageY-n.top||0,l=this._change[r];return this._updatePrevProperties(),l?(o=l.apply(this,[t,a,s]),this._updateVirtualBoundaries(t.shiftKey),(this._aspectRatio||t.shiftKey)&&(o=this._updateRatio(o,t)),o=this._respectSize(o,t),this._updateCache(o),this._propagate("resize",t),i=this._applyChanges(),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),e.isEmptyObject(i)||(this._updatePrevProperties(),this._trigger("resize",t,this.ui()),this._applyChanges()),!1):!1},_mouseStop:function(t){this.resizing=!1;var o,i,n,r,a,s,l,c=this.options,u=this;return this._helper&&(o=this._proportionallyResizeElements,i=o.length&&/textarea/i.test(o[0].nodeName),n=i&&this._hasScroll(o[0],"left")?0:u.sizeDiff.height,r=i?0:u.sizeDiff.width,a={width:u.helper.width()-r,height:u.helper.height()-n},s=parseInt(u.element.css("left"),10)+(u.position.left-u.originalPosition.left)||null,l=parseInt(u.element.css("top"),10)+(u.position.top-u.originalPosition.top)||null,c.animate||this.element.css(e.extend(a,{top:l,left:s})),u.helper.height(u.size.height),u.helper.width(u.size.width),this._helper&&!c.animate&&this._proportionallyResize()),e("body").css("cursor","auto"),this.element.removeClass("ui-resizable-resizing"),this._propagate("stop",t),this._helper&&this.helper.remove(),!1},_updatePrevProperties:function(){this.prevPosition={top:this.position.top,left:this.position.left},this.prevSize={width:this.size.width,height:this.size.height}},_applyChanges:function(){var e={};return this.position.top!==this.prevPosition.top&&(e.top=this.position.top+"px"),this.position.left!==this.prevPosition.left&&(e.left=this.position.left+"px"),this.size.width!==this.prevSize.width&&(e.width=this.size.width+"px"),this.size.height!==this.prevSize.height&&(e.height=this.size.height+"px"),this.helper.css(e),e},_updateVirtualBoundaries:function(e){var t,o,i,n,r,a=this.options;r={minWidth:this._isNumber(a.minWidth)?a.minWidth:0,maxWidth:this._isNumber(a.maxWidth)?a.maxWidth:1/0,minHeight:this._isNumber(a.minHeight)?a.minHeight:0,maxHeight:this._isNumber(a.maxHeight)?a.maxHeight:1/0},(this._aspectRatio||e)&&(t=r.minHeight*this.aspectRatio,i=r.minWidth/this.aspectRatio,o=r.maxHeight*this.aspectRatio,n=r.maxWidth/this.aspectRatio,t>r.minWidth&&(r.minWidth=t),i>r.minHeight&&(r.minHeight=i),r.maxWidth>o&&(r.maxWidth=o),r.maxHeight>n&&(r.maxHeight=n)),this._vBoundaries=r},_updateCache:function(e){this.offset=this.helper.offset(),this._isNumber(e.left)&&(this.position.left=e.left),this._isNumber(e.top)&&(this.position.top=e.top),this._isNumber(e.height)&&(this.size.height=e.height),this._isNumber(e.width)&&(this.size.width=e.width)},_updateRatio:function(e){var t=this.position,o=this.size,i=this.axis;return this._isNumber(e.height)?e.width=e.height*this.aspectRatio:this._isNumber(e.width)&&(e.height=e.width/this.aspectRatio),"sw"===i&&(e.left=t.left+(o.width-e.width),e.top=null),"nw"===i&&(e.top=t.top+(o.height-e.height),e.left=t.left+(o.width-e.width)),e},_respectSize:function(e){var t=this._vBoundaries,o=this.axis,i=this._isNumber(e.width)&&t.maxWidth&&t.maxWidth<e.width,n=this._isNumber(e.height)&&t.maxHeight&&t.maxHeight<e.height,r=this._isNumber(e.width)&&t.minWidth&&t.minWidth>e.width,a=this._isNumber(e.height)&&t.minHeight&&t.minHeight>e.height,s=this.originalPosition.left+this.originalSize.width,l=this.position.top+this.size.height,c=/sw|nw|w/.test(o),u=/nw|ne|n/.test(o);return r&&(e.width=t.minWidth),a&&(e.height=t.minHeight),i&&(e.width=t.maxWidth),n&&(e.height=t.maxHeight),r&&c&&(e.left=s-t.minWidth),i&&c&&(e.left=s-t.maxWidth),a&&u&&(e.top=l-t.minHeight),n&&u&&(e.top=l-t.maxHeight),e.width||e.height||e.left||!e.top?e.width||e.height||e.top||!e.left||(e.left=null):e.top=null,e},_getPaddingPlusBorderDimensions:function(e){for(var t=0,o=[],i=[e.css("borderTopWidth"),e.css("borderRightWidth"),e.css("borderBottomWidth"),e.css("borderLeftWidth")],n=[e.css("paddingTop"),e.css("paddingRight"),e.css("paddingBottom"),e.css("paddingLeft")];4>t;t++)o[t]=parseInt(i[t],10)||0,o[t]+=parseInt(n[t],10)||0;return{height:o[0]+o[2],width:o[1]+o[3]}},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var e,t=0,o=this.helper||this.element;this._proportionallyResizeElements.length>t;t++)e=this._proportionallyResizeElements[t],this.outerDimensions||(this.outerDimensions=this._getPaddingPlusBorderDimensions(e)),e.css({height:o.height()-this.outerDimensions.height||0,width:o.width()-this.outerDimensions.width||0})},_renderProxy:function(){var t=this.element,o=this.options;this.elementOffset=t.offset(),this._helper?(this.helper=this.helper||e("<div style='overflow:hidden;'></div>"),this.helper.addClass(this._helper).css({width:this.element.outerWidth()-1,height:this.element.outerHeight()-1,position:"absolute",left:this.elementOffset.left+"px",top:this.elementOffset.top+"px",zIndex:++o.zIndex}),this.helper.appendTo("body").disableSelection()):this.helper=this.element},_change:{e:function(e,t){return{width:this.originalSize.width+t}},w:function(e,t){var o=this.originalSize,i=this.originalPosition;return{left:i.left+t,width:o.width-t}},n:function(e,t,o){var i=this.originalSize,n=this.originalPosition;return{top:n.top+o,height:i.height-o}},s:function(e,t,o){return{height:this.originalSize.height+o}},se:function(t,o,i){return e.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[t,o,i]))},sw:function(t,o,i){return e.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[t,o,i]))},ne:function(t,o,i){return e.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[t,o,i]))},nw:function(t,o,i){return e.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[t,o,i]))}},_propagate:function(t,o){e.ui.plugin.call(this,t,[o,this.ui()]),"resize"!==t&&this._trigger(t,o,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),e.ui.plugin.add("resizable","animate",{stop:function(t){var o=e(this).resizable("instance"),i=o.options,n=o._proportionallyResizeElements,r=n.length&&/textarea/i.test(n[0].nodeName),a=r&&o._hasScroll(n[0],"left")?0:o.sizeDiff.height,s=r?0:o.sizeDiff.width,l={width:o.size.width-s,height:o.size.height-a},c=parseInt(o.element.css("left"),10)+(o.position.left-o.originalPosition.left)||null,u=parseInt(o.element.css("top"),10)+(o.position.top-o.originalPosition.top)||null;o.element.animate(e.extend(l,u&&c?{top:u,left:c}:{}),{duration:i.animateDuration,easing:i.animateEasing,step:function(){var i={width:parseInt(o.element.css("width"),10),height:parseInt(o.element.css("height"),10),top:parseInt(o.element.css("top"),10),left:parseInt(o.element.css("left"),10)};n&&n.length&&e(n[0]).css({width:i.width,height:i.height}),o._updateCache(i),o._propagate("resize",t)}})}}),e.ui.plugin.add("resizable","containment",{start:function(){var t,o,i,n,r,a,s,l=e(this).resizable("instance"),c=l.options,u=l.element,d=c.containment,h=d instanceof e?d.get(0):/parent/.test(d)?u.parent().get(0):d;h&&(l.containerElement=e(h),/document/.test(d)||d===document?(l.containerOffset={left:0,top:0},l.containerPosition={left:0,top:0},l.parentData={element:e(document),left:0,top:0,width:e(document).width(),height:e(document).height()||document.body.parentNode.scrollHeight}):(t=e(h),o=[],e(["Top","Right","Left","Bottom"]).each(function(e,i){o[e]=l._num(t.css("padding"+i))}),l.containerOffset=t.offset(),l.containerPosition=t.position(),l.containerSize={height:t.innerHeight()-o[3],width:t.innerWidth()-o[1]},i=l.containerOffset,n=l.containerSize.height,r=l.containerSize.width,a=l._hasScroll(h,"left")?h.scrollWidth:r,s=l._hasScroll(h)?h.scrollHeight:n,l.parentData={element:h,left:i.left,top:i.top,width:a,height:s}))},resize:function(t){var o,i,n,r,a=e(this).resizable("instance"),s=a.options,l=a.containerOffset,c=a.position,u=a._aspectRatio||t.shiftKey,d={top:0,left:0},h=a.containerElement,p=!0;h[0]!==document&&/static/.test(h.css("position"))&&(d=l),c.left<(a._helper?l.left:0)&&(a.size.width=a.size.width+(a._helper?a.position.left-l.left:a.position.left-d.left),u&&(a.size.height=a.size.width/a.aspectRatio,p=!1),a.position.left=s.helper?l.left:0),c.top<(a._helper?l.top:0)&&(a.size.height=a.size.height+(a._helper?a.position.top-l.top:a.position.top),u&&(a.size.width=a.size.height*a.aspectRatio,p=!1),a.position.top=a._helper?l.top:0),n=a.containerElement.get(0)===a.element.parent().get(0),r=/relative|absolute/.test(a.containerElement.css("position")),n&&r?(a.offset.left=a.parentData.left+a.position.left,a.offset.top=a.parentData.top+a.position.top):(a.offset.left=a.element.offset().left,a.offset.top=a.element.offset().top),o=Math.abs(a.sizeDiff.width+(a._helper?a.offset.left-d.left:a.offset.left-l.left)),i=Math.abs(a.sizeDiff.height+(a._helper?a.offset.top-d.top:a.offset.top-l.top)),o+a.size.width>=a.parentData.width&&(a.size.width=a.parentData.width-o,u&&(a.size.height=a.size.width/a.aspectRatio,p=!1)),i+a.size.height>=a.parentData.height&&(a.size.height=a.parentData.height-i,u&&(a.size.width=a.size.height*a.aspectRatio,p=!1)),p||(a.position.left=a.prevPosition.left,a.position.top=a.prevPosition.top,a.size.width=a.prevSize.width,a.size.height=a.prevSize.height)},stop:function(){var t=e(this).resizable("instance"),o=t.options,i=t.containerOffset,n=t.containerPosition,r=t.containerElement,a=e(t.helper),s=a.offset(),l=a.outerWidth()-t.sizeDiff.width,c=a.outerHeight()-t.sizeDiff.height;t._helper&&!o.animate&&/relative/.test(r.css("position"))&&e(this).css({left:s.left-n.left-i.left,width:l,height:c}),t._helper&&!o.animate&&/static/.test(r.css("position"))&&e(this).css({left:s.left-n.left-i.left,width:l,height:c})}}),e.ui.plugin.add("resizable","alsoResize",{start:function(){var t=e(this).resizable("instance"),o=t.options;e(o.alsoResize).each(function(){var t=e(this);t.data("ui-resizable-alsoresize",{width:parseInt(t.width(),10),height:parseInt(t.height(),10),left:parseInt(t.css("left"),10),top:parseInt(t.css("top"),10)})})},resize:function(t,o){var i=e(this).resizable("instance"),n=i.options,r=i.originalSize,a=i.originalPosition,s={height:i.size.height-r.height||0,width:i.size.width-r.width||0,top:i.position.top-a.top||0,left:i.position.left-a.left||0};e(n.alsoResize).each(function(){var t=e(this),i=e(this).data("ui-resizable-alsoresize"),n={},r=t.parents(o.originalElement[0]).length?["width","height"]:["width","height","top","left"];e.each(r,function(e,t){var o=(i[t]||0)+(s[t]||0);o&&o>=0&&(n[t]=o||null)}),t.css(n)})},stop:function(){e(this).removeData("resizable-alsoresize")}}),e.ui.plugin.add("resizable","ghost",{start:function(){var t=e(this).resizable("instance"),o=t.options,i=t.size;t.ghost=t.originalElement.clone(),t.ghost.css({opacity:.25,display:"block",position:"relative",height:i.height,width:i.width,margin:0,left:0,top:0}).addClass("ui-resizable-ghost").addClass("string"==typeof o.ghost?o.ghost:""),t.ghost.appendTo(t.helper)},resize:function(){var t=e(this).resizable("instance");t.ghost&&t.ghost.css({position:"relative",height:t.size.height,width:t.size.width})},stop:function(){var t=e(this).resizable("instance");t.ghost&&t.helper&&t.helper.get(0).removeChild(t.ghost.get(0))}}),e.ui.plugin.add("resizable","grid",{resize:function(){var t,o=e(this).resizable("instance"),i=o.options,n=o.size,r=o.originalSize,a=o.originalPosition,s=o.axis,l="number"==typeof i.grid?[i.grid,i.grid]:i.grid,c=l[0]||1,u=l[1]||1,d=Math.round((n.width-r.width)/c)*c,h=Math.round((n.height-r.height)/u)*u,p=r.width+d,f=r.height+h,m=i.maxWidth&&p>i.maxWidth,g=i.maxHeight&&f>i.maxHeight,v=i.minWidth&&i.minWidth>p,b=i.minHeight&&i.minHeight>f;i.grid=l,v&&(p+=c),b&&(f+=u),m&&(p-=c),g&&(f-=u),/^(se|s|e)$/.test(s)?(o.size.width=p,o.size.height=f):/^(ne)$/.test(s)?(o.size.width=p,o.size.height=f,o.position.top=a.top-h):/^(sw)$/.test(s)?(o.size.width=p,o.size.height=f,o.position.left=a.left-d):((0>=f-u||0>=p-c)&&(t=o._getPaddingPlusBorderDimensions(this)),f-u>0?(o.size.height=f,o.position.top=a.top-h):(f=u-t.height,o.size.height=f,o.position.top=a.top+r.height-f),p-c>0?(o.size.width=p,o.position.left=a.left-d):(p=c-t.width,o.size.width=p,o.position.left=a.left+r.width-p))}}),e.ui.resizable,e.widget("ui.selectable",e.ui.mouse,{version:"1.11.4",options:{appendTo:"body",autoRefresh:!0,distance:0,filter:"*",tolerance:"touch",selected:null,selecting:null,start:null,stop:null,unselected:null,unselecting:null},_create:function(){var t,o=this;this.element.addClass("ui-selectable"),this.dragged=!1,this.refresh=function(){t=e(o.options.filter,o.element[0]),t.addClass("ui-selectee"),t.each(function(){var t=e(this),o=t.offset();e.data(this,"selectable-item",{element:this,$element:t,left:o.left,top:o.top,right:o.left+t.outerWidth(),bottom:o.top+t.outerHeight(),startselected:!1,selected:t.hasClass("ui-selected"),selecting:t.hasClass("ui-selecting"),unselecting:t.hasClass("ui-unselecting")})})},this.refresh(),this.selectees=t.addClass("ui-selectee"),this._mouseInit(),this.helper=e("<div class='ui-selectable-helper'></div>")},_destroy:function(){this.selectees.removeClass("ui-selectee").removeData("selectable-item"),this.element.removeClass("ui-selectable ui-selectable-disabled"),this._mouseDestroy()},_mouseStart:function(t){var o=this,i=this.options;this.opos=[t.pageX,t.pageY],this.options.disabled||(this.selectees=e(i.filter,this.element[0]),this._trigger("start",t),e(i.appendTo).append(this.helper),this.helper.css({left:t.pageX,top:t.pageY,width:0,height:0}),i.autoRefresh&&this.refresh(),this.selectees.filter(".ui-selected").each(function(){var i=e.data(this,"selectable-item");i.startselected=!0,t.metaKey||t.ctrlKey||(i.$element.removeClass("ui-selected"),i.selected=!1,i.$element.addClass("ui-unselecting"),i.unselecting=!0,o._trigger("unselecting",t,{unselecting:i.element}))}),e(t.target).parents().addBack().each(function(){var i,n=e.data(this,"selectable-item");return n?(i=!t.metaKey&&!t.ctrlKey||!n.$element.hasClass("ui-selected"),n.$element.removeClass(i?"ui-unselecting":"ui-selected").addClass(i?"ui-selecting":"ui-unselecting"),n.unselecting=!i,n.selecting=i,n.selected=i,i?o._trigger("selecting",t,{selecting:n.element}):o._trigger("unselecting",t,{unselecting:n.element}),!1):void 0}))},_mouseDrag:function(t){if(this.dragged=!0,!this.options.disabled){var o,i=this,n=this.options,r=this.opos[0],a=this.opos[1],s=t.pageX,l=t.pageY;return r>s&&(o=s,s=r,r=o),a>l&&(o=l,l=a,a=o),this.helper.css({left:r,top:a,width:s-r,height:l-a}),this.selectees.each(function(){var o=e.data(this,"selectable-item"),c=!1;o&&o.element!==i.element[0]&&("touch"===n.tolerance?c=!(o.left>s||r>o.right||o.top>l||a>o.bottom):"fit"===n.tolerance&&(c=o.left>r&&s>o.right&&o.top>a&&l>o.bottom),c?(o.selected&&(o.$element.removeClass("ui-selected"),o.selected=!1),o.unselecting&&(o.$element.removeClass("ui-unselecting"),o.unselecting=!1),o.selecting||(o.$element.addClass("ui-selecting"),o.selecting=!0,i._trigger("selecting",t,{selecting:o.element}))):(o.selecting&&((t.metaKey||t.ctrlKey)&&o.startselected?(o.$element.removeClass("ui-selecting"),o.selecting=!1,o.$element.addClass("ui-selected"),o.selected=!0):(o.$element.removeClass("ui-selecting"),o.selecting=!1,o.startselected&&(o.$element.addClass("ui-unselecting"),o.unselecting=!0),i._trigger("unselecting",t,{unselecting:o.element}))),o.selected&&(t.metaKey||t.ctrlKey||o.startselected||(o.$element.removeClass("ui-selected"),o.selected=!1,o.$element.addClass("ui-unselecting"),o.unselecting=!0,i._trigger("unselecting",t,{unselecting:o.element})))))}),!1}},_mouseStop:function(t){var o=this;return this.dragged=!1,e(".ui-unselecting",this.element[0]).each(function(){var i=e.data(this,"selectable-item");i.$element.removeClass("ui-unselecting"),i.unselecting=!1,i.startselected=!1,o._trigger("unselected",t,{unselected:i.element})}),e(".ui-selecting",this.element[0]).each(function(){var i=e.data(this,"selectable-item");i.$element.removeClass("ui-selecting").addClass("ui-selected"),i.selecting=!1,i.selected=!0,i.startselected=!0,o._trigger("selected",t,{selected:i.element})}),this._trigger("stop",t),this.helper.remove(),!1}}),e.widget("ui.sortable",e.ui.mouse,{version:"1.11.4",widgetEventPrefix:"sort",ready:!1,options:{appendTo:"parent",axis:!1,connectWith:!1,containment:!1,cursor:"auto",cursorAt:!1,dropOnEmpty:!0,forcePlaceholderSize:!1,forceHelperSize:!1,grid:!1,handle:!1,helper:"original",items:"> *",opacity:!1,placeholder:!1,revert:!1,scroll:!0,scrollSensitivity:20,scrollSpeed:20,scope:"default",tolerance:"intersect",zIndex:1e3,activate:null,beforeStop:null,change:null,deactivate:null,out:null,over:null,receive:null,remove:null,sort:null,start:null,stop:null,update:null},_isOverAxis:function(e,t,o){return e>=t&&t+o>e},_isFloating:function(e){return/left|right/.test(e.css("float"))||/inline|table-cell/.test(e.css("display"))},_create:function(){this.containerCache={},this.element.addClass("ui-sortable"),this.refresh(),this.offset=this.element.offset(),this._mouseInit(),this._setHandleClassName(),this.ready=!0},_setOption:function(e,t){this._super(e,t),"handle"===e&&this._setHandleClassName()},_setHandleClassName:function(){this.element.find(".ui-sortable-handle").removeClass("ui-sortable-handle"),e.each(this.items,function(){(this.instance.options.handle?this.item.find(this.instance.options.handle):this.item).addClass("ui-sortable-handle")})},_destroy:function(){this.element.removeClass("ui-sortable ui-sortable-disabled").find(".ui-sortable-handle").removeClass("ui-sortable-handle"),this._mouseDestroy();for(var e=this.items.length-1;e>=0;e--)this.items[e].item.removeData(this.widgetName+"-item");return this},_mouseCapture:function(t,o){var i=null,n=!1,r=this;return this.reverting?!1:this.options.disabled||"static"===this.options.type?!1:(this._refreshItems(t),e(t.target).parents().each(function(){return e.data(this,r.widgetName+"-item")===r?(i=e(this),!1):void 0}),e.data(t.target,r.widgetName+"-item")===r&&(i=e(t.target)),i&&(!this.options.handle||o||(e(this.options.handle,i).find("*").addBack().each(function(){this===t.target&&(n=!0)}),n))?(this.currentItem=i,this._removeCurrentsFromItems(),!0):!1)},_mouseStart:function(t,o,i){var n,r,a=this.options;if(this.currentContainer=this,this.refreshPositions(),this.helper=this._createHelper(t),this._cacheHelperProportions(),this._cacheMargins(),this.scrollParent=this.helper.scrollParent(),this.offset=this.currentItem.offset(),this.offset={top:this.offset.top-this.margins.top,left:this.offset.left-this.margins.left},e.extend(this.offset,{click:{left:t.pageX-this.offset.left,top:t.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()}),this.helper.css("position","absolute"),this.cssPosition=this.helper.css("position"),this.originalPosition=this._generatePosition(t),this.originalPageX=t.pageX,this.originalPageY=t.pageY,a.cursorAt&&this._adjustOffsetFromHelper(a.cursorAt),this.domPosition={prev:this.currentItem.prev()[0],parent:this.currentItem.parent()[0]},this.helper[0]!==this.currentItem[0]&&this.currentItem.hide(),this._createPlaceholder(),a.containment&&this._setContainment(),a.cursor&&"auto"!==a.cursor&&(r=this.document.find("body"),this.storedCursor=r.css("cursor"),r.css("cursor",a.cursor),this.storedStylesheet=e("<style>*{ cursor: "+a.cursor+" !important; }</style>").appendTo(r)),a.opacity&&(this.helper.css("opacity")&&(this._storedOpacity=this.helper.css("opacity")),this.helper.css("opacity",a.opacity)),a.zIndex&&(this.helper.css("zIndex")&&(this._storedZIndex=this.helper.css("zIndex")),this.helper.css("zIndex",a.zIndex)),this.scrollParent[0]!==this.document[0]&&"HTML"!==this.scrollParent[0].tagName&&(this.overflowOffset=this.scrollParent.offset()),this._trigger("start",t,this._uiHash()),this._preserveHelperProportions||this._cacheHelperProportions(),!i)for(n=this.containers.length-1;n>=0;n--)this.containers[n]._trigger("activate",t,this._uiHash(this));return e.ui.ddmanager&&(e.ui.ddmanager.current=this),e.ui.ddmanager&&!a.dropBehaviour&&e.ui.ddmanager.prepareOffsets(this,t),this.dragging=!0,this.helper.addClass("ui-sortable-helper"),this._mouseDrag(t),!0},_mouseDrag:function(t){var o,i,n,r,a=this.options,s=!1;for(this.position=this._generatePosition(t),this.positionAbs=this._convertPositionTo("absolute"),this.lastPositionAbs||(this.lastPositionAbs=this.positionAbs),this.options.scroll&&(this.scrollParent[0]!==this.document[0]&&"HTML"!==this.scrollParent[0].tagName?(this.overflowOffset.top+this.scrollParent[0].offsetHeight-t.pageY<a.scrollSensitivity?this.scrollParent[0].scrollTop=s=this.scrollParent[0].scrollTop+a.scrollSpeed:t.pageY-this.overflowOffset.top<a.scrollSensitivity&&(this.scrollParent[0].scrollTop=s=this.scrollParent[0].scrollTop-a.scrollSpeed),this.overflowOffset.left+this.scrollParent[0].offsetWidth-t.pageX<a.scrollSensitivity?this.scrollParent[0].scrollLeft=s=this.scrollParent[0].scrollLeft+a.scrollSpeed:t.pageX-this.overflowOffset.left<a.scrollSensitivity&&(this.scrollParent[0].scrollLeft=s=this.scrollParent[0].scrollLeft-a.scrollSpeed)):(t.pageY-this.document.scrollTop()<a.scrollSensitivity?s=this.document.scrollTop(this.document.scrollTop()-a.scrollSpeed):this.window.height()-(t.pageY-this.document.scrollTop())<a.scrollSensitivity&&(s=this.document.scrollTop(this.document.scrollTop()+a.scrollSpeed)),t.pageX-this.document.scrollLeft()<a.scrollSensitivity?s=this.document.scrollLeft(this.document.scrollLeft()-a.scrollSpeed):this.window.width()-(t.pageX-this.document.scrollLeft())<a.scrollSensitivity&&(s=this.document.scrollLeft(this.document.scrollLeft()+a.scrollSpeed))),s!==!1&&e.ui.ddmanager&&!a.dropBehaviour&&e.ui.ddmanager.prepareOffsets(this,t)),this.positionAbs=this._convertPositionTo("absolute"),this.options.axis&&"y"===this.options.axis||(this.helper[0].style.left=this.position.left+"px"),this.options.axis&&"x"===this.options.axis||(this.helper[0].style.top=this.position.top+"px"),o=this.items.length-1;o>=0;o--)if(i=this.items[o],n=i.item[0],r=this._intersectsWithPointer(i),r&&i.instance===this.currentContainer&&n!==this.currentItem[0]&&this.placeholder[1===r?"next":"prev"]()[0]!==n&&!e.contains(this.placeholder[0],n)&&("semi-dynamic"===this.options.type?!e.contains(this.element[0],n):!0)){if(this.direction=1===r?"down":"up","pointer"!==this.options.tolerance&&!this._intersectsWithSides(i))break;this._rearrange(t,i),this._trigger("change",t,this._uiHash());break}return this._contactContainers(t),e.ui.ddmanager&&e.ui.ddmanager.drag(this,t),this._trigger("sort",t,this._uiHash()),this.lastPositionAbs=this.positionAbs,!1},_mouseStop:function(t,o){if(t){if(e.ui.ddmanager&&!this.options.dropBehaviour&&e.ui.ddmanager.drop(this,t),this.options.revert){var i=this,n=this.placeholder.offset(),r=this.options.axis,a={};r&&"x"!==r||(a.left=n.left-this.offset.parent.left-this.margins.left+(this.offsetParent[0]===this.document[0].body?0:this.offsetParent[0].scrollLeft)),r&&"y"!==r||(a.top=n.top-this.offset.parent.top-this.margins.top+(this.offsetParent[0]===this.document[0].body?0:this.offsetParent[0].scrollTop)),this.reverting=!0,e(this.helper).animate(a,parseInt(this.options.revert,10)||500,function(){i._clear(t)})}else this._clear(t,o);return!1}},cancel:function(){if(this.dragging){this._mouseUp({target:null}),"original"===this.options.helper?this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper"):this.currentItem.show();for(var t=this.containers.length-1;t>=0;t--)this.containers[t]._trigger("deactivate",null,this._uiHash(this)),this.containers[t].containerCache.over&&(this.containers[t]._trigger("out",null,this._uiHash(this)),this.containers[t].containerCache.over=0)}return this.placeholder&&(this.placeholder[0].parentNode&&this.placeholder[0].parentNode.removeChild(this.placeholder[0]),"original"!==this.options.helper&&this.helper&&this.helper[0].parentNode&&this.helper.remove(),e.extend(this,{helper:null,dragging:!1,reverting:!1,_noFinalSort:null}),this.domPosition.prev?e(this.domPosition.prev).after(this.currentItem):e(this.domPosition.parent).prepend(this.currentItem)),this},serialize:function(t){var o=this._getItemsAsjQuery(t&&t.connected),i=[];return t=t||{},e(o).each(function(){var o=(e(t.item||this).attr(t.attribute||"id")||"").match(t.expression||/(.+)[\-=_](.+)/);o&&i.push((t.key||o[1]+"[]")+"="+(t.key&&t.expression?o[1]:o[2]))}),!i.length&&t.key&&i.push(t.key+"="),i.join("&")},toArray:function(t){var o=this._getItemsAsjQuery(t&&t.connected),i=[];return t=t||{},o.each(function(){i.push(e(t.item||this).attr(t.attribute||"id")||"")}),i},_intersectsWith:function(e){var t=this.positionAbs.left,o=t+this.helperProportions.width,i=this.positionAbs.top,n=i+this.helperProportions.height,r=e.left,a=r+e.width,s=e.top,l=s+e.height,c=this.offset.click.top,u=this.offset.click.left,d="x"===this.options.axis||i+c>s&&l>i+c,h="y"===this.options.axis||t+u>r&&a>t+u,p=d&&h;return"pointer"===this.options.tolerance||this.options.forcePointerForContainers||"pointer"!==this.options.tolerance&&this.helperProportions[this.floating?"width":"height"]>e[this.floating?"width":"height"]?p:t+this.helperProportions.width/2>r&&a>o-this.helperProportions.width/2&&i+this.helperProportions.height/2>s&&l>n-this.helperProportions.height/2},_intersectsWithPointer:function(e){var t="x"===this.options.axis||this._isOverAxis(this.positionAbs.top+this.offset.click.top,e.top,e.height),o="y"===this.options.axis||this._isOverAxis(this.positionAbs.left+this.offset.click.left,e.left,e.width),i=t&&o,n=this._getDragVerticalDirection(),r=this._getDragHorizontalDirection();return i?this.floating?r&&"right"===r||"down"===n?2:1:n&&("down"===n?2:1):!1},_intersectsWithSides:function(e){var t=this._isOverAxis(this.positionAbs.top+this.offset.click.top,e.top+e.height/2,e.height),o=this._isOverAxis(this.positionAbs.left+this.offset.click.left,e.left+e.width/2,e.width),i=this._getDragVerticalDirection(),n=this._getDragHorizontalDirection();return this.floating&&n?"right"===n&&o||"left"===n&&!o:i&&("down"===i&&t||"up"===i&&!t)},_getDragVerticalDirection:function(){var e=this.positionAbs.top-this.lastPositionAbs.top;return 0!==e&&(e>0?"down":"up")},_getDragHorizontalDirection:function(){var e=this.positionAbs.left-this.lastPositionAbs.left;return 0!==e&&(e>0?"right":"left")},refresh:function(e){return this._refreshItems(e),this._setHandleClassName(),this.refreshPositions(),this},_connectWith:function(){var e=this.options;return e.connectWith.constructor===String?[e.connectWith]:e.connectWith},_getItemsAsjQuery:function(t){function o(){s.push(this)}var i,n,r,a,s=[],l=[],c=this._connectWith();if(c&&t)for(i=c.length-1;i>=0;i--)for(r=e(c[i],this.document[0]),n=r.length-1;n>=0;n--)a=e.data(r[n],this.widgetFullName),a&&a!==this&&!a.options.disabled&&l.push([e.isFunction(a.options.items)?a.options.items.call(a.element):e(a.options.items,a.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),a]);for(l.push([e.isFunction(this.options.items)?this.options.items.call(this.element,null,{options:this.options,item:this.currentItem}):e(this.options.items,this.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),this]),i=l.length-1;i>=0;i--)l[i][0].each(o);return e(s)},_removeCurrentsFromItems:function(){var t=this.currentItem.find(":data("+this.widgetName+"-item)");this.items=e.grep(this.items,function(e){for(var o=0;t.length>o;o++)if(t[o]===e.item[0])return!1;return!0})},_refreshItems:function(t){this.items=[],this.containers=[this];var o,i,n,r,a,s,l,c,u=this.items,d=[[e.isFunction(this.options.items)?this.options.items.call(this.element[0],t,{item:this.currentItem}):e(this.options.items,this.element),this]],h=this._connectWith();if(h&&this.ready)for(o=h.length-1;o>=0;o--)for(n=e(h[o],this.document[0]),i=n.length-1;i>=0;i--)r=e.data(n[i],this.widgetFullName),r&&r!==this&&!r.options.disabled&&(d.push([e.isFunction(r.options.items)?r.options.items.call(r.element[0],t,{item:this.currentItem}):e(r.options.items,r.element),r]),this.containers.push(r));for(o=d.length-1;o>=0;o--)for(a=d[o][1],s=d[o][0],i=0,c=s.length;c>i;i++)l=e(s[i]),l.data(this.widgetName+"-item",a),u.push({item:l,instance:a,width:0,height:0,left:0,top:0})},refreshPositions:function(t){this.floating=this.items.length?"x"===this.options.axis||this._isFloating(this.items[0].item):!1,this.offsetParent&&this.helper&&(this.offset.parent=this._getParentOffset());var o,i,n,r;for(o=this.items.length-1;o>=0;o--)i=this.items[o],i.instance!==this.currentContainer&&this.currentContainer&&i.item[0]!==this.currentItem[0]||(n=this.options.toleranceElement?e(this.options.toleranceElement,i.item):i.item,t||(i.width=n.outerWidth(),i.height=n.outerHeight()),r=n.offset(),i.left=r.left,i.top=r.top);if(this.options.custom&&this.options.custom.refreshContainers)this.options.custom.refreshContainers.call(this);else for(o=this.containers.length-1;o>=0;o--)r=this.containers[o].element.offset(),this.containers[o].containerCache.left=r.left,this.containers[o].containerCache.top=r.top,this.containers[o].containerCache.width=this.containers[o].element.outerWidth(),this.containers[o].containerCache.height=this.containers[o].element.outerHeight();
-return this},_createPlaceholder:function(t){t=t||this;var o,i=t.options;i.placeholder&&i.placeholder.constructor!==String||(o=i.placeholder,i.placeholder={element:function(){var i=t.currentItem[0].nodeName.toLowerCase(),n=e("<"+i+">",t.document[0]).addClass(o||t.currentItem[0].className+" ui-sortable-placeholder").removeClass("ui-sortable-helper");return"tbody"===i?t._createTrPlaceholder(t.currentItem.find("tr").eq(0),e("<tr>",t.document[0]).appendTo(n)):"tr"===i?t._createTrPlaceholder(t.currentItem,n):"img"===i&&n.attr("src",t.currentItem.attr("src")),o||n.css("visibility","hidden"),n},update:function(e,n){(!o||i.forcePlaceholderSize)&&(n.height()||n.height(t.currentItem.innerHeight()-parseInt(t.currentItem.css("paddingTop")||0,10)-parseInt(t.currentItem.css("paddingBottom")||0,10)),n.width()||n.width(t.currentItem.innerWidth()-parseInt(t.currentItem.css("paddingLeft")||0,10)-parseInt(t.currentItem.css("paddingRight")||0,10)))}}),t.placeholder=e(i.placeholder.element.call(t.element,t.currentItem)),t.currentItem.after(t.placeholder),i.placeholder.update(t,t.placeholder)},_createTrPlaceholder:function(t,o){var i=this;t.children().each(function(){e("<td>&#160;</td>",i.document[0]).attr("colspan",e(this).attr("colspan")||1).appendTo(o)})},_contactContainers:function(t){var o,i,n,r,a,s,l,c,u,d,h=null,p=null;for(o=this.containers.length-1;o>=0;o--)if(!e.contains(this.currentItem[0],this.containers[o].element[0]))if(this._intersectsWith(this.containers[o].containerCache)){if(h&&e.contains(this.containers[o].element[0],h.element[0]))continue;h=this.containers[o],p=o}else this.containers[o].containerCache.over&&(this.containers[o]._trigger("out",t,this._uiHash(this)),this.containers[o].containerCache.over=0);if(h)if(1===this.containers.length)this.containers[p].containerCache.over||(this.containers[p]._trigger("over",t,this._uiHash(this)),this.containers[p].containerCache.over=1);else{for(n=1e4,r=null,u=h.floating||this._isFloating(this.currentItem),a=u?"left":"top",s=u?"width":"height",d=u?"clientX":"clientY",i=this.items.length-1;i>=0;i--)e.contains(this.containers[p].element[0],this.items[i].item[0])&&this.items[i].item[0]!==this.currentItem[0]&&(l=this.items[i].item.offset()[a],c=!1,t[d]-l>this.items[i][s]/2&&(c=!0),n>Math.abs(t[d]-l)&&(n=Math.abs(t[d]-l),r=this.items[i],this.direction=c?"up":"down"));if(!r&&!this.options.dropOnEmpty)return;if(this.currentContainer===this.containers[p])return void(this.currentContainer.containerCache.over||(this.containers[p]._trigger("over",t,this._uiHash()),this.currentContainer.containerCache.over=1));r?this._rearrange(t,r,null,!0):this._rearrange(t,null,this.containers[p].element,!0),this._trigger("change",t,this._uiHash()),this.containers[p]._trigger("change",t,this._uiHash(this)),this.currentContainer=this.containers[p],this.options.placeholder.update(this.currentContainer,this.placeholder),this.containers[p]._trigger("over",t,this._uiHash(this)),this.containers[p].containerCache.over=1}},_createHelper:function(t){var o=this.options,i=e.isFunction(o.helper)?e(o.helper.apply(this.element[0],[t,this.currentItem])):"clone"===o.helper?this.currentItem.clone():this.currentItem;return i.parents("body").length||e("parent"!==o.appendTo?o.appendTo:this.currentItem[0].parentNode)[0].appendChild(i[0]),i[0]===this.currentItem[0]&&(this._storedCSS={width:this.currentItem[0].style.width,height:this.currentItem[0].style.height,position:this.currentItem.css("position"),top:this.currentItem.css("top"),left:this.currentItem.css("left")}),(!i[0].style.width||o.forceHelperSize)&&i.width(this.currentItem.width()),(!i[0].style.height||o.forceHelperSize)&&i.height(this.currentItem.height()),i},_adjustOffsetFromHelper:function(t){"string"==typeof t&&(t=t.split(" ")),e.isArray(t)&&(t={left:+t[0],top:+t[1]||0}),"left"in t&&(this.offset.click.left=t.left+this.margins.left),"right"in t&&(this.offset.click.left=this.helperProportions.width-t.right+this.margins.left),"top"in t&&(this.offset.click.top=t.top+this.margins.top),"bottom"in t&&(this.offset.click.top=this.helperProportions.height-t.bottom+this.margins.top)},_getParentOffset:function(){this.offsetParent=this.helper.offsetParent();var t=this.offsetParent.offset();return"absolute"===this.cssPosition&&this.scrollParent[0]!==this.document[0]&&e.contains(this.scrollParent[0],this.offsetParent[0])&&(t.left+=this.scrollParent.scrollLeft(),t.top+=this.scrollParent.scrollTop()),(this.offsetParent[0]===this.document[0].body||this.offsetParent[0].tagName&&"html"===this.offsetParent[0].tagName.toLowerCase()&&e.ui.ie)&&(t={top:0,left:0}),{top:t.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:t.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if("relative"===this.cssPosition){var e=this.currentItem.position();return{top:e.top-(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:e.left-(parseInt(this.helper.css("left"),10)||0)+this.scrollParent.scrollLeft()}}return{top:0,left:0}},_cacheMargins:function(){this.margins={left:parseInt(this.currentItem.css("marginLeft"),10)||0,top:parseInt(this.currentItem.css("marginTop"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var t,o,i,n=this.options;"parent"===n.containment&&(n.containment=this.helper[0].parentNode),("document"===n.containment||"window"===n.containment)&&(this.containment=[0-this.offset.relative.left-this.offset.parent.left,0-this.offset.relative.top-this.offset.parent.top,"document"===n.containment?this.document.width():this.window.width()-this.helperProportions.width-this.margins.left,("document"===n.containment?this.document.width():this.window.height()||this.document[0].body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top]),/^(document|window|parent)$/.test(n.containment)||(t=e(n.containment)[0],o=e(n.containment).offset(),i="hidden"!==e(t).css("overflow"),this.containment=[o.left+(parseInt(e(t).css("borderLeftWidth"),10)||0)+(parseInt(e(t).css("paddingLeft"),10)||0)-this.margins.left,o.top+(parseInt(e(t).css("borderTopWidth"),10)||0)+(parseInt(e(t).css("paddingTop"),10)||0)-this.margins.top,o.left+(i?Math.max(t.scrollWidth,t.offsetWidth):t.offsetWidth)-(parseInt(e(t).css("borderLeftWidth"),10)||0)-(parseInt(e(t).css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left,o.top+(i?Math.max(t.scrollHeight,t.offsetHeight):t.offsetHeight)-(parseInt(e(t).css("borderTopWidth"),10)||0)-(parseInt(e(t).css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top])},_convertPositionTo:function(t,o){o||(o=this.position);var i="absolute"===t?1:-1,n="absolute"!==this.cssPosition||this.scrollParent[0]!==this.document[0]&&e.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent,r=/(html|body)/i.test(n[0].tagName);return{top:o.top+this.offset.relative.top*i+this.offset.parent.top*i-("fixed"===this.cssPosition?-this.scrollParent.scrollTop():r?0:n.scrollTop())*i,left:o.left+this.offset.relative.left*i+this.offset.parent.left*i-("fixed"===this.cssPosition?-this.scrollParent.scrollLeft():r?0:n.scrollLeft())*i}},_generatePosition:function(t){var o,i,n=this.options,r=t.pageX,a=t.pageY,s="absolute"!==this.cssPosition||this.scrollParent[0]!==this.document[0]&&e.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent,l=/(html|body)/i.test(s[0].tagName);return"relative"!==this.cssPosition||this.scrollParent[0]!==this.document[0]&&this.scrollParent[0]!==this.offsetParent[0]||(this.offset.relative=this._getRelativeOffset()),this.originalPosition&&(this.containment&&(t.pageX-this.offset.click.left<this.containment[0]&&(r=this.containment[0]+this.offset.click.left),t.pageY-this.offset.click.top<this.containment[1]&&(a=this.containment[1]+this.offset.click.top),t.pageX-this.offset.click.left>this.containment[2]&&(r=this.containment[2]+this.offset.click.left),t.pageY-this.offset.click.top>this.containment[3]&&(a=this.containment[3]+this.offset.click.top)),n.grid&&(o=this.originalPageY+Math.round((a-this.originalPageY)/n.grid[1])*n.grid[1],a=this.containment?o-this.offset.click.top>=this.containment[1]&&o-this.offset.click.top<=this.containment[3]?o:o-this.offset.click.top>=this.containment[1]?o-n.grid[1]:o+n.grid[1]:o,i=this.originalPageX+Math.round((r-this.originalPageX)/n.grid[0])*n.grid[0],r=this.containment?i-this.offset.click.left>=this.containment[0]&&i-this.offset.click.left<=this.containment[2]?i:i-this.offset.click.left>=this.containment[0]?i-n.grid[0]:i+n.grid[0]:i)),{top:a-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+("fixed"===this.cssPosition?-this.scrollParent.scrollTop():l?0:s.scrollTop()),left:r-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+("fixed"===this.cssPosition?-this.scrollParent.scrollLeft():l?0:s.scrollLeft())}},_rearrange:function(e,t,o,i){o?o[0].appendChild(this.placeholder[0]):t.item[0].parentNode.insertBefore(this.placeholder[0],"down"===this.direction?t.item[0]:t.item[0].nextSibling),this.counter=this.counter?++this.counter:1;var n=this.counter;this._delay(function(){n===this.counter&&this.refreshPositions(!i)})},_clear:function(e,t){function o(e,t,o){return function(i){o._trigger(e,i,t._uiHash(t))}}this.reverting=!1;var i,n=[];if(!this._noFinalSort&&this.currentItem.parent().length&&this.placeholder.before(this.currentItem),this._noFinalSort=null,this.helper[0]===this.currentItem[0]){for(i in this._storedCSS)("auto"===this._storedCSS[i]||"static"===this._storedCSS[i])&&(this._storedCSS[i]="");this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper")}else this.currentItem.show();for(this.fromOutside&&!t&&n.push(function(e){this._trigger("receive",e,this._uiHash(this.fromOutside))}),!this.fromOutside&&this.domPosition.prev===this.currentItem.prev().not(".ui-sortable-helper")[0]&&this.domPosition.parent===this.currentItem.parent()[0]||t||n.push(function(e){this._trigger("update",e,this._uiHash())}),this!==this.currentContainer&&(t||(n.push(function(e){this._trigger("remove",e,this._uiHash())}),n.push(function(e){return function(t){e._trigger("receive",t,this._uiHash(this))}}.call(this,this.currentContainer)),n.push(function(e){return function(t){e._trigger("update",t,this._uiHash(this))}}.call(this,this.currentContainer)))),i=this.containers.length-1;i>=0;i--)t||n.push(o("deactivate",this,this.containers[i])),this.containers[i].containerCache.over&&(n.push(o("out",this,this.containers[i])),this.containers[i].containerCache.over=0);if(this.storedCursor&&(this.document.find("body").css("cursor",this.storedCursor),this.storedStylesheet.remove()),this._storedOpacity&&this.helper.css("opacity",this._storedOpacity),this._storedZIndex&&this.helper.css("zIndex","auto"===this._storedZIndex?"":this._storedZIndex),this.dragging=!1,t||this._trigger("beforeStop",e,this._uiHash()),this.placeholder[0].parentNode.removeChild(this.placeholder[0]),this.cancelHelperRemoval||(this.helper[0]!==this.currentItem[0]&&this.helper.remove(),this.helper=null),!t){for(i=0;n.length>i;i++)n[i].call(this,e);this._trigger("stop",e,this._uiHash())}return this.fromOutside=!1,!this.cancelHelperRemoval},_trigger:function(){e.Widget.prototype._trigger.apply(this,arguments)===!1&&this.cancel()},_uiHash:function(t){var o=t||this;return{helper:o.helper,placeholder:o.placeholder||e([]),position:o.position,originalPosition:o.originalPosition,offset:o.positionAbs,item:o.currentItem,sender:t?t.element:null}}}),e.widget("ui.accordion",{version:"1.11.4",options:{active:0,animate:{},collapsible:!1,event:"click",header:"> li > :first-child,> :not(li):even",heightStyle:"auto",icons:{activeHeader:"ui-icon-triangle-1-s",header:"ui-icon-triangle-1-e"},activate:null,beforeActivate:null},hideProps:{borderTopWidth:"hide",borderBottomWidth:"hide",paddingTop:"hide",paddingBottom:"hide",height:"hide"},showProps:{borderTopWidth:"show",borderBottomWidth:"show",paddingTop:"show",paddingBottom:"show",height:"show"},_create:function(){var t=this.options;this.prevShow=this.prevHide=e(),this.element.addClass("ui-accordion ui-widget ui-helper-reset").attr("role","tablist"),t.collapsible||t.active!==!1&&null!=t.active||(t.active=0),this._processPanels(),0>t.active&&(t.active+=this.headers.length),this._refresh()},_getCreateEventData:function(){return{header:this.active,panel:this.active.length?this.active.next():e()}},_createIcons:function(){var t=this.options.icons;t&&(e("<span>").addClass("ui-accordion-header-icon ui-icon "+t.header).prependTo(this.headers),this.active.children(".ui-accordion-header-icon").removeClass(t.header).addClass(t.activeHeader),this.headers.addClass("ui-accordion-icons"))},_destroyIcons:function(){this.headers.removeClass("ui-accordion-icons").children(".ui-accordion-header-icon").remove()},_destroy:function(){var e;this.element.removeClass("ui-accordion ui-widget ui-helper-reset").removeAttr("role"),this.headers.removeClass("ui-accordion-header ui-accordion-header-active ui-state-default ui-corner-all ui-state-active ui-state-disabled ui-corner-top").removeAttr("role").removeAttr("aria-expanded").removeAttr("aria-selected").removeAttr("aria-controls").removeAttr("tabIndex").removeUniqueId(),this._destroyIcons(),e=this.headers.next().removeClass("ui-helper-reset ui-widget-content ui-corner-bottom ui-accordion-content ui-accordion-content-active ui-state-disabled").css("display","").removeAttr("role").removeAttr("aria-hidden").removeAttr("aria-labelledby").removeUniqueId(),"content"!==this.options.heightStyle&&e.css("height","")},_setOption:function(e,t){return"active"===e?void this._activate(t):("event"===e&&(this.options.event&&this._off(this.headers,this.options.event),this._setupEvents(t)),this._super(e,t),"collapsible"!==e||t||this.options.active!==!1||this._activate(0),"icons"===e&&(this._destroyIcons(),t&&this._createIcons()),void("disabled"===e&&(this.element.toggleClass("ui-state-disabled",!!t).attr("aria-disabled",t),this.headers.add(this.headers.next()).toggleClass("ui-state-disabled",!!t))))},_keydown:function(t){if(!t.altKey&&!t.ctrlKey){var o=e.ui.keyCode,i=this.headers.length,n=this.headers.index(t.target),r=!1;switch(t.keyCode){case o.RIGHT:case o.DOWN:r=this.headers[(n+1)%i];break;case o.LEFT:case o.UP:r=this.headers[(n-1+i)%i];break;case o.SPACE:case o.ENTER:this._eventHandler(t);break;case o.HOME:r=this.headers[0];break;case o.END:r=this.headers[i-1]}r&&(e(t.target).attr("tabIndex",-1),e(r).attr("tabIndex",0),r.focus(),t.preventDefault())}},_panelKeyDown:function(t){t.keyCode===e.ui.keyCode.UP&&t.ctrlKey&&e(t.currentTarget).prev().focus()},refresh:function(){var t=this.options;this._processPanels(),t.active===!1&&t.collapsible===!0||!this.headers.length?(t.active=!1,this.active=e()):t.active===!1?this._activate(0):this.active.length&&!e.contains(this.element[0],this.active[0])?this.headers.length===this.headers.find(".ui-state-disabled").length?(t.active=!1,this.active=e()):this._activate(Math.max(0,t.active-1)):t.active=this.headers.index(this.active),this._destroyIcons(),this._refresh()},_processPanels:function(){var e=this.headers,t=this.panels;this.headers=this.element.find(this.options.header).addClass("ui-accordion-header ui-state-default ui-corner-all"),this.panels=this.headers.next().addClass("ui-accordion-content ui-helper-reset ui-widget-content ui-corner-bottom").filter(":not(.ui-accordion-content-active)").hide(),t&&(this._off(e.not(this.headers)),this._off(t.not(this.panels)))},_refresh:function(){var t,o=this.options,i=o.heightStyle,n=this.element.parent();this.active=this._findActive(o.active).addClass("ui-accordion-header-active ui-state-active ui-corner-top").removeClass("ui-corner-all"),this.active.next().addClass("ui-accordion-content-active").show(),this.headers.attr("role","tab").each(function(){var t=e(this),o=t.uniqueId().attr("id"),i=t.next(),n=i.uniqueId().attr("id");t.attr("aria-controls",n),i.attr("aria-labelledby",o)}).next().attr("role","tabpanel"),this.headers.not(this.active).attr({"aria-selected":"false","aria-expanded":"false",tabIndex:-1}).next().attr({"aria-hidden":"true"}).hide(),this.active.length?this.active.attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0}).next().attr({"aria-hidden":"false"}):this.headers.eq(0).attr("tabIndex",0),this._createIcons(),this._setupEvents(o.event),"fill"===i?(t=n.height(),this.element.siblings(":visible").each(function(){var o=e(this),i=o.css("position");"absolute"!==i&&"fixed"!==i&&(t-=o.outerHeight(!0))}),this.headers.each(function(){t-=e(this).outerHeight(!0)}),this.headers.next().each(function(){e(this).height(Math.max(0,t-e(this).innerHeight()+e(this).height()))}).css("overflow","auto")):"auto"===i&&(t=0,this.headers.next().each(function(){t=Math.max(t,e(this).css("height","").height())}).height(t))},_activate:function(t){var o=this._findActive(t)[0];o!==this.active[0]&&(o=o||this.active[0],this._eventHandler({target:o,currentTarget:o,preventDefault:e.noop}))},_findActive:function(t){return"number"==typeof t?this.headers.eq(t):e()},_setupEvents:function(t){var o={keydown:"_keydown"};t&&e.each(t.split(" "),function(e,t){o[t]="_eventHandler"}),this._off(this.headers.add(this.headers.next())),this._on(this.headers,o),this._on(this.headers.next(),{keydown:"_panelKeyDown"}),this._hoverable(this.headers),this._focusable(this.headers)},_eventHandler:function(t){var o=this.options,i=this.active,n=e(t.currentTarget),r=n[0]===i[0],a=r&&o.collapsible,s=a?e():n.next(),l=i.next(),c={oldHeader:i,oldPanel:l,newHeader:a?e():n,newPanel:s};t.preventDefault(),r&&!o.collapsible||this._trigger("beforeActivate",t,c)===!1||(o.active=a?!1:this.headers.index(n),this.active=r?e():n,this._toggle(c),i.removeClass("ui-accordion-header-active ui-state-active"),o.icons&&i.children(".ui-accordion-header-icon").removeClass(o.icons.activeHeader).addClass(o.icons.header),r||(n.removeClass("ui-corner-all").addClass("ui-accordion-header-active ui-state-active ui-corner-top"),o.icons&&n.children(".ui-accordion-header-icon").removeClass(o.icons.header).addClass(o.icons.activeHeader),n.next().addClass("ui-accordion-content-active")))},_toggle:function(t){var o=t.newPanel,i=this.prevShow.length?this.prevShow:t.oldPanel;this.prevShow.add(this.prevHide).stop(!0,!0),this.prevShow=o,this.prevHide=i,this.options.animate?this._animate(o,i,t):(i.hide(),o.show(),this._toggleComplete(t)),i.attr({"aria-hidden":"true"}),i.prev().attr({"aria-selected":"false","aria-expanded":"false"}),o.length&&i.length?i.prev().attr({tabIndex:-1,"aria-expanded":"false"}):o.length&&this.headers.filter(function(){return 0===parseInt(e(this).attr("tabIndex"),10)}).attr("tabIndex",-1),o.attr("aria-hidden","false").prev().attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0})},_animate:function(e,t,o){var i,n,r,a=this,s=0,l=e.css("box-sizing"),c=e.length&&(!t.length||e.index()<t.index()),u=this.options.animate||{},d=c&&u.down||u,h=function(){a._toggleComplete(o)};return"number"==typeof d&&(r=d),"string"==typeof d&&(n=d),n=n||d.easing||u.easing,r=r||d.duration||u.duration,t.length?e.length?(i=e.show().outerHeight(),t.animate(this.hideProps,{duration:r,easing:n,step:function(e,t){t.now=Math.round(e)}}),void e.hide().animate(this.showProps,{duration:r,easing:n,complete:h,step:function(e,o){o.now=Math.round(e),"height"!==o.prop?"content-box"===l&&(s+=o.now):"content"!==a.options.heightStyle&&(o.now=Math.round(i-t.outerHeight()-s),s=0)}})):t.animate(this.hideProps,r,n,h):e.animate(this.showProps,r,n,h)},_toggleComplete:function(e){var t=e.oldPanel;t.removeClass("ui-accordion-content-active").prev().removeClass("ui-corner-top").addClass("ui-corner-all"),t.length&&(t.parent()[0].className=t.parent()[0].className),this._trigger("activate",null,e)}}),e.widget("ui.menu",{version:"1.11.4",defaultElement:"<ul>",delay:300,options:{icons:{submenu:"ui-icon-carat-1-e"},items:"> *",menus:"ul",position:{my:"left-1 top",at:"right top"},role:"menu",blur:null,focus:null,select:null},_create:function(){this.activeMenu=this.element,this.mouseHandled=!1,this.element.uniqueId().addClass("ui-menu ui-widget ui-widget-content").toggleClass("ui-menu-icons",!!this.element.find(".ui-icon").length).attr({role:this.options.role,tabIndex:0}),this.options.disabled&&this.element.addClass("ui-state-disabled").attr("aria-disabled","true"),this._on({"mousedown .ui-menu-item":function(e){e.preventDefault()},"click .ui-menu-item":function(t){var o=e(t.target);!this.mouseHandled&&o.not(".ui-state-disabled").length&&(this.select(t),t.isPropagationStopped()||(this.mouseHandled=!0),o.has(".ui-menu").length?this.expand(t):!this.element.is(":focus")&&e(this.document[0].activeElement).closest(".ui-menu").length&&(this.element.trigger("focus",[!0]),this.active&&1===this.active.parents(".ui-menu").length&&clearTimeout(this.timer)))},"mouseenter .ui-menu-item":function(t){if(!this.previousFilter){var o=e(t.currentTarget);o.siblings(".ui-state-active").removeClass("ui-state-active"),this.focus(t,o)}},mouseleave:"collapseAll","mouseleave .ui-menu":"collapseAll",focus:function(e,t){var o=this.active||this.element.find(this.options.items).eq(0);t||this.focus(e,o)},blur:function(t){this._delay(function(){e.contains(this.element[0],this.document[0].activeElement)||this.collapseAll(t)})},keydown:"_keydown"}),this.refresh(),this._on(this.document,{click:function(e){this._closeOnDocumentClick(e)&&this.collapseAll(e),this.mouseHandled=!1}})},_destroy:function(){this.element.removeAttr("aria-activedescendant").find(".ui-menu").addBack().removeClass("ui-menu ui-widget ui-widget-content ui-menu-icons ui-front").removeAttr("role").removeAttr("tabIndex").removeAttr("aria-labelledby").removeAttr("aria-expanded").removeAttr("aria-hidden").removeAttr("aria-disabled").removeUniqueId().show(),this.element.find(".ui-menu-item").removeClass("ui-menu-item").removeAttr("role").removeAttr("aria-disabled").removeUniqueId().removeClass("ui-state-hover").removeAttr("tabIndex").removeAttr("role").removeAttr("aria-haspopup").children().each(function(){var t=e(this);t.data("ui-menu-submenu-carat")&&t.remove()}),this.element.find(".ui-menu-divider").removeClass("ui-menu-divider ui-widget-content")},_keydown:function(t){var o,i,n,r,a=!0;switch(t.keyCode){case e.ui.keyCode.PAGE_UP:this.previousPage(t);break;case e.ui.keyCode.PAGE_DOWN:this.nextPage(t);break;case e.ui.keyCode.HOME:this._move("first","first",t);break;case e.ui.keyCode.END:this._move("last","last",t);break;case e.ui.keyCode.UP:this.previous(t);break;case e.ui.keyCode.DOWN:this.next(t);break;case e.ui.keyCode.LEFT:this.collapse(t);break;case e.ui.keyCode.RIGHT:this.active&&!this.active.is(".ui-state-disabled")&&this.expand(t);break;case e.ui.keyCode.ENTER:case e.ui.keyCode.SPACE:this._activate(t);break;case e.ui.keyCode.ESCAPE:this.collapse(t);break;default:a=!1,i=this.previousFilter||"",n=String.fromCharCode(t.keyCode),r=!1,clearTimeout(this.filterTimer),n===i?r=!0:n=i+n,o=this._filterMenuItems(n),o=r&&-1!==o.index(this.active.next())?this.active.nextAll(".ui-menu-item"):o,o.length||(n=String.fromCharCode(t.keyCode),o=this._filterMenuItems(n)),o.length?(this.focus(t,o),this.previousFilter=n,this.filterTimer=this._delay(function(){delete this.previousFilter},1e3)):delete this.previousFilter}a&&t.preventDefault()},_activate:function(e){this.active.is(".ui-state-disabled")||(this.active.is("[aria-haspopup='true']")?this.expand(e):this.select(e))},refresh:function(){var t,o,i=this,n=this.options.icons.submenu,r=this.element.find(this.options.menus);this.element.toggleClass("ui-menu-icons",!!this.element.find(".ui-icon").length),r.filter(":not(.ui-menu)").addClass("ui-menu ui-widget ui-widget-content ui-front").hide().attr({role:this.options.role,"aria-hidden":"true","aria-expanded":"false"}).each(function(){var t=e(this),o=t.parent(),i=e("<span>").addClass("ui-menu-icon ui-icon "+n).data("ui-menu-submenu-carat",!0);o.attr("aria-haspopup","true").prepend(i),t.attr("aria-labelledby",o.attr("id"))}),t=r.add(this.element),o=t.find(this.options.items),o.not(".ui-menu-item").each(function(){var t=e(this);i._isDivider(t)&&t.addClass("ui-widget-content ui-menu-divider")}),o.not(".ui-menu-item, .ui-menu-divider").addClass("ui-menu-item").uniqueId().attr({tabIndex:-1,role:this._itemRole()}),o.filter(".ui-state-disabled").attr("aria-disabled","true"),this.active&&!e.contains(this.element[0],this.active[0])&&this.blur()},_itemRole:function(){return{menu:"menuitem",listbox:"option"}[this.options.role]},_setOption:function(e,t){"icons"===e&&this.element.find(".ui-menu-icon").removeClass(this.options.icons.submenu).addClass(t.submenu),"disabled"===e&&this.element.toggleClass("ui-state-disabled",!!t).attr("aria-disabled",t),this._super(e,t)},focus:function(e,t){var o,i;this.blur(e,e&&"focus"===e.type),this._scrollIntoView(t),this.active=t.first(),i=this.active.addClass("ui-state-focus").removeClass("ui-state-active"),this.options.role&&this.element.attr("aria-activedescendant",i.attr("id")),this.active.parent().closest(".ui-menu-item").addClass("ui-state-active"),e&&"keydown"===e.type?this._close():this.timer=this._delay(function(){this._close()},this.delay),o=t.children(".ui-menu"),o.length&&e&&/^mouse/.test(e.type)&&this._startOpening(o),this.activeMenu=t.parent(),this._trigger("focus",e,{item:t})},_scrollIntoView:function(t){var o,i,n,r,a,s;this._hasScroll()&&(o=parseFloat(e.css(this.activeMenu[0],"borderTopWidth"))||0,i=parseFloat(e.css(this.activeMenu[0],"paddingTop"))||0,n=t.offset().top-this.activeMenu.offset().top-o-i,r=this.activeMenu.scrollTop(),a=this.activeMenu.height(),s=t.outerHeight(),0>n?this.activeMenu.scrollTop(r+n):n+s>a&&this.activeMenu.scrollTop(r+n-a+s))},blur:function(e,t){t||clearTimeout(this.timer),this.active&&(this.active.removeClass("ui-state-focus"),this.active=null,this._trigger("blur",e,{item:this.active}))},_startOpening:function(e){clearTimeout(this.timer),"true"===e.attr("aria-hidden")&&(this.timer=this._delay(function(){this._close(),this._open(e)},this.delay))},_open:function(t){var o=e.extend({of:this.active},this.options.position);clearTimeout(this.timer),this.element.find(".ui-menu").not(t.parents(".ui-menu")).hide().attr("aria-hidden","true"),t.show().removeAttr("aria-hidden").attr("aria-expanded","true").position(o)},collapseAll:function(t,o){clearTimeout(this.timer),this.timer=this._delay(function(){var i=o?this.element:e(t&&t.target).closest(this.element.find(".ui-menu"));i.length||(i=this.element),this._close(i),this.blur(t),this.activeMenu=i},this.delay)},_close:function(e){e||(e=this.active?this.active.parent():this.element),e.find(".ui-menu").hide().attr("aria-hidden","true").attr("aria-expanded","false").end().find(".ui-state-active").not(".ui-state-focus").removeClass("ui-state-active")},_closeOnDocumentClick:function(t){return!e(t.target).closest(".ui-menu").length},_isDivider:function(e){return!/[^\-\u2014\u2013\s]/.test(e.text())},collapse:function(e){var t=this.active&&this.active.parent().closest(".ui-menu-item",this.element);t&&t.length&&(this._close(),this.focus(e,t))},expand:function(e){var t=this.active&&this.active.children(".ui-menu ").find(this.options.items).first();t&&t.length&&(this._open(t.parent()),this._delay(function(){this.focus(e,t)}))},next:function(e){this._move("next","first",e)},previous:function(e){this._move("prev","last",e)},isFirstItem:function(){return this.active&&!this.active.prevAll(".ui-menu-item").length},isLastItem:function(){return this.active&&!this.active.nextAll(".ui-menu-item").length},_move:function(e,t,o){var i;this.active&&(i="first"===e||"last"===e?this.active["first"===e?"prevAll":"nextAll"](".ui-menu-item").eq(-1):this.active[e+"All"](".ui-menu-item").eq(0)),i&&i.length&&this.active||(i=this.activeMenu.find(this.options.items)[t]()),this.focus(o,i)},nextPage:function(t){var o,i,n;return this.active?void(this.isLastItem()||(this._hasScroll()?(i=this.active.offset().top,n=this.element.height(),this.active.nextAll(".ui-menu-item").each(function(){return o=e(this),0>o.offset().top-i-n}),this.focus(t,o)):this.focus(t,this.activeMenu.find(this.options.items)[this.active?"last":"first"]()))):void this.next(t)},previousPage:function(t){var o,i,n;return this.active?void(this.isFirstItem()||(this._hasScroll()?(i=this.active.offset().top,n=this.element.height(),this.active.prevAll(".ui-menu-item").each(function(){return o=e(this),o.offset().top-i+n>0}),this.focus(t,o)):this.focus(t,this.activeMenu.find(this.options.items).first()))):void this.next(t)},_hasScroll:function(){return this.element.outerHeight()<this.element.prop("scrollHeight")},select:function(t){this.active=this.active||e(t.target).closest(".ui-menu-item");var o={item:this.active};this.active.has(".ui-menu").length||this.collapseAll(t,!0),this._trigger("select",t,o)},_filterMenuItems:function(t){var o=t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&"),i=RegExp("^"+o,"i");return this.activeMenu.find(this.options.items).filter(".ui-menu-item").filter(function(){return i.test(e.trim(e(this).text()))})}}),e.widget("ui.autocomplete",{version:"1.11.4",defaultElement:"<input>",options:{appendTo:null,autoFocus:!1,delay:300,minLength:1,position:{my:"left top",at:"left bottom",collision:"none"},source:null,change:null,close:null,focus:null,open:null,response:null,search:null,select:null},requestIndex:0,pending:0,_create:function(){var t,o,i,n=this.element[0].nodeName.toLowerCase(),r="textarea"===n,a="input"===n;this.isMultiLine=r?!0:a?!1:this.element.prop("isContentEditable"),this.valueMethod=this.element[r||a?"val":"text"],this.isNewMenu=!0,this.element.addClass("ui-autocomplete-input").attr("autocomplete","off"),this._on(this.element,{keydown:function(n){if(this.element.prop("readOnly"))return t=!0,i=!0,void(o=!0);t=!1,i=!1,o=!1;var r=e.ui.keyCode;switch(n.keyCode){case r.PAGE_UP:t=!0,this._move("previousPage",n);break;case r.PAGE_DOWN:t=!0,this._move("nextPage",n);break;case r.UP:t=!0,this._keyEvent("previous",n);break;case r.DOWN:t=!0,this._keyEvent("next",n);break;case r.ENTER:this.menu.active&&(t=!0,n.preventDefault(),this.menu.select(n));break;case r.TAB:this.menu.active&&this.menu.select(n);break;case r.ESCAPE:this.menu.element.is(":visible")&&(this.isMultiLine||this._value(this.term),this.close(n),n.preventDefault());break;default:o=!0,this._searchTimeout(n)}},keypress:function(i){if(t)return t=!1,void((!this.isMultiLine||this.menu.element.is(":visible"))&&i.preventDefault());if(!o){var n=e.ui.keyCode;switch(i.keyCode){case n.PAGE_UP:this._move("previousPage",i);break;case n.PAGE_DOWN:this._move("nextPage",i);break;case n.UP:this._keyEvent("previous",i);break;case n.DOWN:this._keyEvent("next",i)}}},input:function(e){return i?(i=!1,void e.preventDefault()):void this._searchTimeout(e)},focus:function(){this.selectedItem=null,this.previous=this._value()},blur:function(e){return this.cancelBlur?void delete this.cancelBlur:(clearTimeout(this.searching),this.close(e),void this._change(e))}}),this._initSource(),this.menu=e("<ul>").addClass("ui-autocomplete ui-front").appendTo(this._appendTo()).menu({role:null}).hide().menu("instance"),this._on(this.menu.element,{mousedown:function(t){t.preventDefault(),this.cancelBlur=!0,this._delay(function(){delete this.cancelBlur});var o=this.menu.element[0];e(t.target).closest(".ui-menu-item").length||this._delay(function(){var t=this;this.document.one("mousedown",function(i){i.target===t.element[0]||i.target===o||e.contains(o,i.target)||t.close()})})},menufocus:function(t,o){var i,n;return this.isNewMenu&&(this.isNewMenu=!1,t.originalEvent&&/^mouse/.test(t.originalEvent.type))?(this.menu.blur(),void this.document.one("mousemove",function(){e(t.target).trigger(t.originalEvent)})):(n=o.item.data("ui-autocomplete-item"),!1!==this._trigger("focus",t,{item:n})&&t.originalEvent&&/^key/.test(t.originalEvent.type)&&this._value(n.value),i=o.item.attr("aria-label")||n.value,void(i&&e.trim(i).length&&(this.liveRegion.children().hide(),e("<div>").text(i).appendTo(this.liveRegion))))
-},menuselect:function(e,t){var o=t.item.data("ui-autocomplete-item"),i=this.previous;this.element[0]!==this.document[0].activeElement&&(this.element.focus(),this.previous=i,this._delay(function(){this.previous=i,this.selectedItem=o})),!1!==this._trigger("select",e,{item:o})&&this._value(o.value),this.term=this._value(),this.close(e),this.selectedItem=o}}),this.liveRegion=e("<span>",{role:"status","aria-live":"assertive","aria-relevant":"additions"}).addClass("ui-helper-hidden-accessible").appendTo(this.document[0].body),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_destroy:function(){clearTimeout(this.searching),this.element.removeClass("ui-autocomplete-input").removeAttr("autocomplete"),this.menu.element.remove(),this.liveRegion.remove()},_setOption:function(e,t){this._super(e,t),"source"===e&&this._initSource(),"appendTo"===e&&this.menu.element.appendTo(this._appendTo()),"disabled"===e&&t&&this.xhr&&this.xhr.abort()},_appendTo:function(){var t=this.options.appendTo;return t&&(t=t.jquery||t.nodeType?e(t):this.document.find(t).eq(0)),t&&t[0]||(t=this.element.closest(".ui-front")),t.length||(t=this.document[0].body),t},_initSource:function(){var t,o,i=this;e.isArray(this.options.source)?(t=this.options.source,this.source=function(o,i){i(e.ui.autocomplete.filter(t,o.term))}):"string"==typeof this.options.source?(o=this.options.source,this.source=function(t,n){i.xhr&&i.xhr.abort(),i.xhr=e.ajax({url:o,data:t,dataType:"json",success:function(e){n(e)},error:function(){n([])}})}):this.source=this.options.source},_searchTimeout:function(e){clearTimeout(this.searching),this.searching=this._delay(function(){var t=this.term===this._value(),o=this.menu.element.is(":visible"),i=e.altKey||e.ctrlKey||e.metaKey||e.shiftKey;(!t||t&&!o&&!i)&&(this.selectedItem=null,this.search(null,e))},this.options.delay)},search:function(e,t){return e=null!=e?e:this._value(),this.term=this._value(),e.length<this.options.minLength?this.close(t):this._trigger("search",t)!==!1?this._search(e):void 0},_search:function(e){this.pending++,this.element.addClass("ui-autocomplete-loading"),this.cancelSearch=!1,this.source({term:e},this._response())},_response:function(){var t=++this.requestIndex;return e.proxy(function(e){t===this.requestIndex&&this.__response(e),this.pending--,this.pending||this.element.removeClass("ui-autocomplete-loading")},this)},__response:function(e){e&&(e=this._normalize(e)),this._trigger("response",null,{content:e}),!this.options.disabled&&e&&e.length&&!this.cancelSearch?(this._suggest(e),this._trigger("open")):this._close()},close:function(e){this.cancelSearch=!0,this._close(e)},_close:function(e){this.menu.element.is(":visible")&&(this.menu.element.hide(),this.menu.blur(),this.isNewMenu=!0,this._trigger("close",e))},_change:function(e){this.previous!==this._value()&&this._trigger("change",e,{item:this.selectedItem})},_normalize:function(t){return t.length&&t[0].label&&t[0].value?t:e.map(t,function(t){return"string"==typeof t?{label:t,value:t}:e.extend({},t,{label:t.label||t.value,value:t.value||t.label})})},_suggest:function(t){var o=this.menu.element.empty();this._renderMenu(o,t),this.isNewMenu=!0,this.menu.refresh(),o.show(),this._resizeMenu(),o.position(e.extend({of:this.element},this.options.position)),this.options.autoFocus&&this.menu.next()},_resizeMenu:function(){var e=this.menu.element;e.outerWidth(Math.max(e.width("").outerWidth()+1,this.element.outerWidth()))},_renderMenu:function(t,o){var i=this;e.each(o,function(e,o){i._renderItemData(t,o)})},_renderItemData:function(e,t){return this._renderItem(e,t).data("ui-autocomplete-item",t)},_renderItem:function(t,o){return e("<li>").text(o.label).appendTo(t)},_move:function(e,t){return this.menu.element.is(":visible")?this.menu.isFirstItem()&&/^previous/.test(e)||this.menu.isLastItem()&&/^next/.test(e)?(this.isMultiLine||this._value(this.term),void this.menu.blur()):void this.menu[e](t):void this.search(null,t)},widget:function(){return this.menu.element},_value:function(){return this.valueMethod.apply(this.element,arguments)},_keyEvent:function(e,t){(!this.isMultiLine||this.menu.element.is(":visible"))&&(this._move(e,t),t.preventDefault())}}),e.extend(e.ui.autocomplete,{escapeRegex:function(e){return e.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")},filter:function(t,o){var i=RegExp(e.ui.autocomplete.escapeRegex(o),"i");return e.grep(t,function(e){return i.test(e.label||e.value||e)})}}),e.widget("ui.autocomplete",e.ui.autocomplete,{options:{messages:{noResults:"No search results.",results:function(e){return e+(e>1?" results are":" result is")+" available, use up and down arrow keys to navigate."}}},__response:function(t){var o;this._superApply(arguments),this.options.disabled||this.cancelSearch||(o=t&&t.length?this.options.messages.results(t.length):this.options.messages.noResults,this.liveRegion.children().hide(),e("<div>").text(o).appendTo(this.liveRegion))}}),e.ui.autocomplete;var h,p="ui-button ui-widget ui-state-default ui-corner-all",f="ui-button-icons-only ui-button-icon-only ui-button-text-icons ui-button-text-icon-primary ui-button-text-icon-secondary ui-button-text-only",m=function(){var t=e(this);setTimeout(function(){t.find(":ui-button").button("refresh")},1)},g=function(t){var o=t.name,i=t.form,n=e([]);return o&&(o=o.replace(/'/g,"\\'"),n=i?e(i).find("[name='"+o+"'][type=radio]"):e("[name='"+o+"'][type=radio]",t.ownerDocument).filter(function(){return!this.form})),n};e.widget("ui.button",{version:"1.11.4",defaultElement:"<button>",options:{disabled:null,text:!0,label:null,icons:{primary:null,secondary:null}},_create:function(){this.element.closest("form").unbind("reset"+this.eventNamespace).bind("reset"+this.eventNamespace,m),"boolean"!=typeof this.options.disabled?this.options.disabled=!!this.element.prop("disabled"):this.element.prop("disabled",this.options.disabled),this._determineButtonType(),this.hasTitle=!!this.buttonElement.attr("title");var t=this,o=this.options,i="checkbox"===this.type||"radio"===this.type,n=i?"":"ui-state-active";null===o.label&&(o.label="input"===this.type?this.buttonElement.val():this.buttonElement.html()),this._hoverable(this.buttonElement),this.buttonElement.addClass(p).attr("role","button").bind("mouseenter"+this.eventNamespace,function(){o.disabled||this===h&&e(this).addClass("ui-state-active")}).bind("mouseleave"+this.eventNamespace,function(){o.disabled||e(this).removeClass(n)}).bind("click"+this.eventNamespace,function(e){o.disabled&&(e.preventDefault(),e.stopImmediatePropagation())}),this._on({focus:function(){this.buttonElement.addClass("ui-state-focus")},blur:function(){this.buttonElement.removeClass("ui-state-focus")}}),i&&this.element.bind("change"+this.eventNamespace,function(){t.refresh()}),"checkbox"===this.type?this.buttonElement.bind("click"+this.eventNamespace,function(){return o.disabled?!1:void 0}):"radio"===this.type?this.buttonElement.bind("click"+this.eventNamespace,function(){if(o.disabled)return!1;e(this).addClass("ui-state-active"),t.buttonElement.attr("aria-pressed","true");var i=t.element[0];g(i).not(i).map(function(){return e(this).button("widget")[0]}).removeClass("ui-state-active").attr("aria-pressed","false")}):(this.buttonElement.bind("mousedown"+this.eventNamespace,function(){return o.disabled?!1:(e(this).addClass("ui-state-active"),h=this,void t.document.one("mouseup",function(){h=null}))}).bind("mouseup"+this.eventNamespace,function(){return o.disabled?!1:void e(this).removeClass("ui-state-active")}).bind("keydown"+this.eventNamespace,function(t){return o.disabled?!1:void((t.keyCode===e.ui.keyCode.SPACE||t.keyCode===e.ui.keyCode.ENTER)&&e(this).addClass("ui-state-active"))}).bind("keyup"+this.eventNamespace+" blur"+this.eventNamespace,function(){e(this).removeClass("ui-state-active")}),this.buttonElement.is("a")&&this.buttonElement.keyup(function(t){t.keyCode===e.ui.keyCode.SPACE&&e(this).click()})),this._setOption("disabled",o.disabled),this._resetButton()},_determineButtonType:function(){var e,t,o;this.type=this.element.is("[type=checkbox]")?"checkbox":this.element.is("[type=radio]")?"radio":this.element.is("input")?"input":"button","checkbox"===this.type||"radio"===this.type?(e=this.element.parents().last(),t="label[for='"+this.element.attr("id")+"']",this.buttonElement=e.find(t),this.buttonElement.length||(e=e.length?e.siblings():this.element.siblings(),this.buttonElement=e.filter(t),this.buttonElement.length||(this.buttonElement=e.find(t))),this.element.addClass("ui-helper-hidden-accessible"),o=this.element.is(":checked"),o&&this.buttonElement.addClass("ui-state-active"),this.buttonElement.prop("aria-pressed",o)):this.buttonElement=this.element},widget:function(){return this.buttonElement},_destroy:function(){this.element.removeClass("ui-helper-hidden-accessible"),this.buttonElement.removeClass(p+" ui-state-active "+f).removeAttr("role").removeAttr("aria-pressed").html(this.buttonElement.find(".ui-button-text").html()),this.hasTitle||this.buttonElement.removeAttr("title")},_setOption:function(e,t){return this._super(e,t),"disabled"===e?(this.widget().toggleClass("ui-state-disabled",!!t),this.element.prop("disabled",!!t),void(t&&this.buttonElement.removeClass("checkbox"===this.type||"radio"===this.type?"ui-state-focus":"ui-state-focus ui-state-active"))):void this._resetButton()},refresh:function(){var t=this.element.is("input, button")?this.element.is(":disabled"):this.element.hasClass("ui-button-disabled");t!==this.options.disabled&&this._setOption("disabled",t),"radio"===this.type?g(this.element[0]).each(function(){e(this).is(":checked")?e(this).button("widget").addClass("ui-state-active").attr("aria-pressed","true"):e(this).button("widget").removeClass("ui-state-active").attr("aria-pressed","false")}):"checkbox"===this.type&&(this.element.is(":checked")?this.buttonElement.addClass("ui-state-active").attr("aria-pressed","true"):this.buttonElement.removeClass("ui-state-active").attr("aria-pressed","false"))},_resetButton:function(){if("input"===this.type)return void(this.options.label&&this.element.val(this.options.label));var t=this.buttonElement.removeClass(f),o=e("<span></span>",this.document[0]).addClass("ui-button-text").html(this.options.label).appendTo(t.empty()).text(),i=this.options.icons,n=i.primary&&i.secondary,r=[];i.primary||i.secondary?(this.options.text&&r.push("ui-button-text-icon"+(n?"s":i.primary?"-primary":"-secondary")),i.primary&&t.prepend("<span class='ui-button-icon-primary ui-icon "+i.primary+"'></span>"),i.secondary&&t.append("<span class='ui-button-icon-secondary ui-icon "+i.secondary+"'></span>"),this.options.text||(r.push(n?"ui-button-icons-only":"ui-button-icon-only"),this.hasTitle||t.attr("title",e.trim(o)))):r.push("ui-button-text-only"),t.addClass(r.join(" "))}}),e.widget("ui.buttonset",{version:"1.11.4",options:{items:"button, input[type=button], input[type=submit], input[type=reset], input[type=checkbox], input[type=radio], a, :data(ui-button)"},_create:function(){this.element.addClass("ui-buttonset")},_init:function(){this.refresh()},_setOption:function(e,t){"disabled"===e&&this.buttons.button("option",e,t),this._super(e,t)},refresh:function(){var t="rtl"===this.element.css("direction"),o=this.element.find(this.options.items),i=o.filter(":ui-button");o.not(":ui-button").button(),i.button("refresh"),this.buttons=o.map(function(){return e(this).button("widget")[0]}).removeClass("ui-corner-all ui-corner-left ui-corner-right").filter(":first").addClass(t?"ui-corner-right":"ui-corner-left").end().filter(":last").addClass(t?"ui-corner-left":"ui-corner-right").end().end()},_destroy:function(){this.element.removeClass("ui-buttonset"),this.buttons.map(function(){return e(this).button("widget")[0]}).removeClass("ui-corner-left ui-corner-right").end().button("destroy")}}),e.ui.button,e.extend(e.ui,{datepicker:{version:"1.11.4"}});var v;e.extend(n.prototype,{markerClassName:"hasDatepicker",maxRows:4,_widgetDatepicker:function(){return this.dpDiv},setDefaults:function(e){return s(this._defaults,e||{}),this},_attachDatepicker:function(t,o){var i,n,r;i=t.nodeName.toLowerCase(),n="div"===i||"span"===i,t.id||(this.uuid+=1,t.id="dp"+this.uuid),r=this._newInst(e(t),n),r.settings=e.extend({},o||{}),"input"===i?this._connectDatepicker(t,r):n&&this._inlineDatepicker(t,r)},_newInst:function(t,o){var i=t[0].id.replace(/([^A-Za-z0-9_\-])/g,"\\\\$1");return{id:i,input:t,selectedDay:0,selectedMonth:0,selectedYear:0,drawMonth:0,drawYear:0,inline:o,dpDiv:o?r(e("<div class='"+this._inlineClass+" ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all'></div>")):this.dpDiv}},_connectDatepicker:function(t,o){var i=e(t);o.append=e([]),o.trigger=e([]),i.hasClass(this.markerClassName)||(this._attachments(i,o),i.addClass(this.markerClassName).keydown(this._doKeyDown).keypress(this._doKeyPress).keyup(this._doKeyUp),this._autoSize(o),e.data(t,"datepicker",o),o.settings.disabled&&this._disableDatepicker(t))},_attachments:function(t,o){var i,n,r,a=this._get(o,"appendText"),s=this._get(o,"isRTL");o.append&&o.append.remove(),a&&(o.append=e("<span class='"+this._appendClass+"'>"+a+"</span>"),t[s?"before":"after"](o.append)),t.unbind("focus",this._showDatepicker),o.trigger&&o.trigger.remove(),i=this._get(o,"showOn"),("focus"===i||"both"===i)&&t.focus(this._showDatepicker),("button"===i||"both"===i)&&(n=this._get(o,"buttonText"),r=this._get(o,"buttonImage"),o.trigger=e(this._get(o,"buttonImageOnly")?e("<img/>").addClass(this._triggerClass).attr({src:r,alt:n,title:n}):e("<button type='button'></button>").addClass(this._triggerClass).html(r?e("<img/>").attr({src:r,alt:n,title:n}):n)),t[s?"before":"after"](o.trigger),o.trigger.click(function(){return e.datepicker._datepickerShowing&&e.datepicker._lastInput===t[0]?e.datepicker._hideDatepicker():e.datepicker._datepickerShowing&&e.datepicker._lastInput!==t[0]?(e.datepicker._hideDatepicker(),e.datepicker._showDatepicker(t[0])):e.datepicker._showDatepicker(t[0]),!1}))},_autoSize:function(e){if(this._get(e,"autoSize")&&!e.inline){var t,o,i,n,r=new Date(2009,11,20),a=this._get(e,"dateFormat");a.match(/[DM]/)&&(t=function(e){for(o=0,i=0,n=0;e.length>n;n++)e[n].length>o&&(o=e[n].length,i=n);return i},r.setMonth(t(this._get(e,a.match(/MM/)?"monthNames":"monthNamesShort"))),r.setDate(t(this._get(e,a.match(/DD/)?"dayNames":"dayNamesShort"))+20-r.getDay())),e.input.attr("size",this._formatDate(e,r).length)}},_inlineDatepicker:function(t,o){var i=e(t);i.hasClass(this.markerClassName)||(i.addClass(this.markerClassName).append(o.dpDiv),e.data(t,"datepicker",o),this._setDate(o,this._getDefaultDate(o),!0),this._updateDatepicker(o),this._updateAlternate(o),o.settings.disabled&&this._disableDatepicker(t),o.dpDiv.css("display","block"))},_dialogDatepicker:function(t,o,i,n,r){var a,l,c,u,d,h=this._dialogInst;return h||(this.uuid+=1,a="dp"+this.uuid,this._dialogInput=e("<input type='text' id='"+a+"' style='position: absolute; top: -100px; width: 0px;'/>"),this._dialogInput.keydown(this._doKeyDown),e("body").append(this._dialogInput),h=this._dialogInst=this._newInst(this._dialogInput,!1),h.settings={},e.data(this._dialogInput[0],"datepicker",h)),s(h.settings,n||{}),o=o&&o.constructor===Date?this._formatDate(h,o):o,this._dialogInput.val(o),this._pos=r?r.length?r:[r.pageX,r.pageY]:null,this._pos||(l=document.documentElement.clientWidth,c=document.documentElement.clientHeight,u=document.documentElement.scrollLeft||document.body.scrollLeft,d=document.documentElement.scrollTop||document.body.scrollTop,this._pos=[l/2-100+u,c/2-150+d]),this._dialogInput.css("left",this._pos[0]+20+"px").css("top",this._pos[1]+"px"),h.settings.onSelect=i,this._inDialog=!0,this.dpDiv.addClass(this._dialogClass),this._showDatepicker(this._dialogInput[0]),e.blockUI&&e.blockUI(this.dpDiv),e.data(this._dialogInput[0],"datepicker",h),this},_destroyDatepicker:function(t){var o,i=e(t),n=e.data(t,"datepicker");i.hasClass(this.markerClassName)&&(o=t.nodeName.toLowerCase(),e.removeData(t,"datepicker"),"input"===o?(n.append.remove(),n.trigger.remove(),i.removeClass(this.markerClassName).unbind("focus",this._showDatepicker).unbind("keydown",this._doKeyDown).unbind("keypress",this._doKeyPress).unbind("keyup",this._doKeyUp)):("div"===o||"span"===o)&&i.removeClass(this.markerClassName).empty(),v===n&&(v=null))},_enableDatepicker:function(t){var o,i,n=e(t),r=e.data(t,"datepicker");n.hasClass(this.markerClassName)&&(o=t.nodeName.toLowerCase(),"input"===o?(t.disabled=!1,r.trigger.filter("button").each(function(){this.disabled=!1}).end().filter("img").css({opacity:"1.0",cursor:""})):("div"===o||"span"===o)&&(i=n.children("."+this._inlineClass),i.children().removeClass("ui-state-disabled"),i.find("select.ui-datepicker-month, select.ui-datepicker-year").prop("disabled",!1)),this._disabledInputs=e.map(this._disabledInputs,function(e){return e===t?null:e}))},_disableDatepicker:function(t){var o,i,n=e(t),r=e.data(t,"datepicker");n.hasClass(this.markerClassName)&&(o=t.nodeName.toLowerCase(),"input"===o?(t.disabled=!0,r.trigger.filter("button").each(function(){this.disabled=!0}).end().filter("img").css({opacity:"0.5",cursor:"default"})):("div"===o||"span"===o)&&(i=n.children("."+this._inlineClass),i.children().addClass("ui-state-disabled"),i.find("select.ui-datepicker-month, select.ui-datepicker-year").prop("disabled",!0)),this._disabledInputs=e.map(this._disabledInputs,function(e){return e===t?null:e}),this._disabledInputs[this._disabledInputs.length]=t)},_isDisabledDatepicker:function(e){if(!e)return!1;for(var t=0;this._disabledInputs.length>t;t++)if(this._disabledInputs[t]===e)return!0;return!1},_getInst:function(t){try{return e.data(t,"datepicker")}catch(o){throw"Missing instance data for this datepicker"}},_optionDatepicker:function(t,o,i){var n,r,a,l,c=this._getInst(t);return 2===arguments.length&&"string"==typeof o?"defaults"===o?e.extend({},e.datepicker._defaults):c?"all"===o?e.extend({},c.settings):this._get(c,o):null:(n=o||{},"string"==typeof o&&(n={},n[o]=i),void(c&&(this._curInst===c&&this._hideDatepicker(),r=this._getDateDatepicker(t,!0),a=this._getMinMaxDate(c,"min"),l=this._getMinMaxDate(c,"max"),s(c.settings,n),null!==a&&void 0!==n.dateFormat&&void 0===n.minDate&&(c.settings.minDate=this._formatDate(c,a)),null!==l&&void 0!==n.dateFormat&&void 0===n.maxDate&&(c.settings.maxDate=this._formatDate(c,l)),"disabled"in n&&(n.disabled?this._disableDatepicker(t):this._enableDatepicker(t)),this._attachments(e(t),c),this._autoSize(c),this._setDate(c,r),this._updateAlternate(c),this._updateDatepicker(c))))},_changeDatepicker:function(e,t,o){this._optionDatepicker(e,t,o)},_refreshDatepicker:function(e){var t=this._getInst(e);t&&this._updateDatepicker(t)},_setDateDatepicker:function(e,t){var o=this._getInst(e);o&&(this._setDate(o,t),this._updateDatepicker(o),this._updateAlternate(o))},_getDateDatepicker:function(e,t){var o=this._getInst(e);return o&&!o.inline&&this._setDateFromField(o,t),o?this._getDate(o):null},_doKeyDown:function(t){var o,i,n,r=e.datepicker._getInst(t.target),a=!0,s=r.dpDiv.is(".ui-datepicker-rtl");if(r._keyEvent=!0,e.datepicker._datepickerShowing)switch(t.keyCode){case 9:e.datepicker._hideDatepicker(),a=!1;break;case 13:return n=e("td."+e.datepicker._dayOverClass+":not(."+e.datepicker._currentClass+")",r.dpDiv),n[0]&&e.datepicker._selectDay(t.target,r.selectedMonth,r.selectedYear,n[0]),o=e.datepicker._get(r,"onSelect"),o?(i=e.datepicker._formatDate(r),o.apply(r.input?r.input[0]:null,[i,r])):e.datepicker._hideDatepicker(),!1;case 27:e.datepicker._hideDatepicker();break;case 33:e.datepicker._adjustDate(t.target,t.ctrlKey?-e.datepicker._get(r,"stepBigMonths"):-e.datepicker._get(r,"stepMonths"),"M");break;case 34:e.datepicker._adjustDate(t.target,t.ctrlKey?+e.datepicker._get(r,"stepBigMonths"):+e.datepicker._get(r,"stepMonths"),"M");break;case 35:(t.ctrlKey||t.metaKey)&&e.datepicker._clearDate(t.target),a=t.ctrlKey||t.metaKey;break;case 36:(t.ctrlKey||t.metaKey)&&e.datepicker._gotoToday(t.target),a=t.ctrlKey||t.metaKey;break;case 37:(t.ctrlKey||t.metaKey)&&e.datepicker._adjustDate(t.target,s?1:-1,"D"),a=t.ctrlKey||t.metaKey,t.originalEvent.altKey&&e.datepicker._adjustDate(t.target,t.ctrlKey?-e.datepicker._get(r,"stepBigMonths"):-e.datepicker._get(r,"stepMonths"),"M");break;case 38:(t.ctrlKey||t.metaKey)&&e.datepicker._adjustDate(t.target,-7,"D"),a=t.ctrlKey||t.metaKey;break;case 39:(t.ctrlKey||t.metaKey)&&e.datepicker._adjustDate(t.target,s?-1:1,"D"),a=t.ctrlKey||t.metaKey,t.originalEvent.altKey&&e.datepicker._adjustDate(t.target,t.ctrlKey?+e.datepicker._get(r,"stepBigMonths"):+e.datepicker._get(r,"stepMonths"),"M");break;case 40:(t.ctrlKey||t.metaKey)&&e.datepicker._adjustDate(t.target,7,"D"),a=t.ctrlKey||t.metaKey;break;default:a=!1}else 36===t.keyCode&&t.ctrlKey?e.datepicker._showDatepicker(this):a=!1;a&&(t.preventDefault(),t.stopPropagation())},_doKeyPress:function(t){var o,i,n=e.datepicker._getInst(t.target);return e.datepicker._get(n,"constrainInput")?(o=e.datepicker._possibleChars(e.datepicker._get(n,"dateFormat")),i=String.fromCharCode(null==t.charCode?t.keyCode:t.charCode),t.ctrlKey||t.metaKey||" ">i||!o||o.indexOf(i)>-1):void 0},_doKeyUp:function(t){var o,i=e.datepicker._getInst(t.target);if(i.input.val()!==i.lastVal)try{o=e.datepicker.parseDate(e.datepicker._get(i,"dateFormat"),i.input?i.input.val():null,e.datepicker._getFormatConfig(i)),o&&(e.datepicker._setDateFromField(i),e.datepicker._updateAlternate(i),e.datepicker._updateDatepicker(i))}catch(n){}return!0},_showDatepicker:function(t){if(t=t.target||t,"input"!==t.nodeName.toLowerCase()&&(t=e("input",t.parentNode)[0]),!e.datepicker._isDisabledDatepicker(t)&&e.datepicker._lastInput!==t){var o,n,r,a,l,c,u;o=e.datepicker._getInst(t),e.datepicker._curInst&&e.datepicker._curInst!==o&&(e.datepicker._curInst.dpDiv.stop(!0,!0),o&&e.datepicker._datepickerShowing&&e.datepicker._hideDatepicker(e.datepicker._curInst.input[0])),n=e.datepicker._get(o,"beforeShow"),r=n?n.apply(t,[t,o]):{},r!==!1&&(s(o.settings,r),o.lastVal=null,e.datepicker._lastInput=t,e.datepicker._setDateFromField(o),e.datepicker._inDialog&&(t.value=""),e.datepicker._pos||(e.datepicker._pos=e.datepicker._findPos(t),e.datepicker._pos[1]+=t.offsetHeight),a=!1,e(t).parents().each(function(){return a|="fixed"===e(this).css("position"),!a}),l={left:e.datepicker._pos[0],top:e.datepicker._pos[1]},e.datepicker._pos=null,o.dpDiv.empty(),o.dpDiv.css({position:"absolute",display:"block",top:"-1000px"}),e.datepicker._updateDatepicker(o),l=e.datepicker._checkOffset(o,l,a),o.dpDiv.css({position:e.datepicker._inDialog&&e.blockUI?"static":a?"fixed":"absolute",display:"none",left:l.left+"px",top:l.top+"px"}),o.inline||(c=e.datepicker._get(o,"showAnim"),u=e.datepicker._get(o,"duration"),o.dpDiv.css("z-index",i(e(t))+1),e.datepicker._datepickerShowing=!0,e.effects&&e.effects.effect[c]?o.dpDiv.show(c,e.datepicker._get(o,"showOptions"),u):o.dpDiv[c||"show"](c?u:null),e.datepicker._shouldFocusInput(o)&&o.input.focus(),e.datepicker._curInst=o))}},_updateDatepicker:function(t){this.maxRows=4,v=t,t.dpDiv.empty().append(this._generateHTML(t)),this._attachHandlers(t);var o,i=this._getNumberOfMonths(t),n=i[1],r=17,s=t.dpDiv.find("."+this._dayOverClass+" a");s.length>0&&a.apply(s.get(0)),t.dpDiv.removeClass("ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4").width(""),n>1&&t.dpDiv.addClass("ui-datepicker-multi-"+n).css("width",r*n+"em"),t.dpDiv[(1!==i[0]||1!==i[1]?"add":"remove")+"Class"]("ui-datepicker-multi"),t.dpDiv[(this._get(t,"isRTL")?"add":"remove")+"Class"]("ui-datepicker-rtl"),t===e.datepicker._curInst&&e.datepicker._datepickerShowing&&e.datepicker._shouldFocusInput(t)&&t.input.focus(),t.yearshtml&&(o=t.yearshtml,setTimeout(function(){o===t.yearshtml&&t.yearshtml&&t.dpDiv.find("select.ui-datepicker-year:first").replaceWith(t.yearshtml),o=t.yearshtml=null},0))},_shouldFocusInput:function(e){return e.input&&e.input.is(":visible")&&!e.input.is(":disabled")&&!e.input.is(":focus")},_checkOffset:function(t,o,i){var n=t.dpDiv.outerWidth(),r=t.dpDiv.outerHeight(),a=t.input?t.input.outerWidth():0,s=t.input?t.input.outerHeight():0,l=document.documentElement.clientWidth+(i?0:e(document).scrollLeft()),c=document.documentElement.clientHeight+(i?0:e(document).scrollTop());return o.left-=this._get(t,"isRTL")?n-a:0,o.left-=i&&o.left===t.input.offset().left?e(document).scrollLeft():0,o.top-=i&&o.top===t.input.offset().top+s?e(document).scrollTop():0,o.left-=Math.min(o.left,o.left+n>l&&l>n?Math.abs(o.left+n-l):0),o.top-=Math.min(o.top,o.top+r>c&&c>r?Math.abs(r+s):0),o},_findPos:function(t){for(var o,i=this._getInst(t),n=this._get(i,"isRTL");t&&("hidden"===t.type||1!==t.nodeType||e.expr.filters.hidden(t));)t=t[n?"previousSibling":"nextSibling"];return o=e(t).offset(),[o.left,o.top]},_hideDatepicker:function(t){var o,i,n,r,a=this._curInst;!a||t&&a!==e.data(t,"datepicker")||this._datepickerShowing&&(o=this._get(a,"showAnim"),i=this._get(a,"duration"),n=function(){e.datepicker._tidyDialog(a)},e.effects&&(e.effects.effect[o]||e.effects[o])?a.dpDiv.hide(o,e.datepicker._get(a,"showOptions"),i,n):a.dpDiv["slideDown"===o?"slideUp":"fadeIn"===o?"fadeOut":"hide"](o?i:null,n),o||n(),this._datepickerShowing=!1,r=this._get(a,"onClose"),r&&r.apply(a.input?a.input[0]:null,[a.input?a.input.val():"",a]),this._lastInput=null,this._inDialog&&(this._dialogInput.css({position:"absolute",left:"0",top:"-100px"}),e.blockUI&&(e.unblockUI(),e("body").append(this.dpDiv))),this._inDialog=!1)},_tidyDialog:function(e){e.dpDiv.removeClass(this._dialogClass).unbind(".ui-datepicker-calendar")},_checkExternalClick:function(t){if(e.datepicker._curInst){var o=e(t.target),i=e.datepicker._getInst(o[0]);(o[0].id!==e.datepicker._mainDivId&&0===o.parents("#"+e.datepicker._mainDivId).length&&!o.hasClass(e.datepicker.markerClassName)&&!o.closest("."+e.datepicker._triggerClass).length&&e.datepicker._datepickerShowing&&(!e.datepicker._inDialog||!e.blockUI)||o.hasClass(e.datepicker.markerClassName)&&e.datepicker._curInst!==i)&&e.datepicker._hideDatepicker()}},_adjustDate:function(t,o,i){var n=e(t),r=this._getInst(n[0]);this._isDisabledDatepicker(n[0])||(this._adjustInstDate(r,o+("M"===i?this._get(r,"showCurrentAtPos"):0),i),this._updateDatepicker(r))},_gotoToday:function(t){var o,i=e(t),n=this._getInst(i[0]);this._get(n,"gotoCurrent")&&n.currentDay?(n.selectedDay=n.currentDay,n.drawMonth=n.selectedMonth=n.currentMonth,n.drawYear=n.selectedYear=n.currentYear):(o=new Date,n.selectedDay=o.getDate(),n.drawMonth=n.selectedMonth=o.getMonth(),n.drawYear=n.selectedYear=o.getFullYear()),this._notifyChange(n),this._adjustDate(i)},_selectMonthYear:function(t,o,i){var n=e(t),r=this._getInst(n[0]);r["selected"+("M"===i?"Month":"Year")]=r["draw"+("M"===i?"Month":"Year")]=parseInt(o.options[o.selectedIndex].value,10),this._notifyChange(r),this._adjustDate(n)},_selectDay:function(t,o,i,n){var r,a=e(t);e(n).hasClass(this._unselectableClass)||this._isDisabledDatepicker(a[0])||(r=this._getInst(a[0]),r.selectedDay=r.currentDay=e("a",n).html(),r.selectedMonth=r.currentMonth=o,r.selectedYear=r.currentYear=i,this._selectDate(t,this._formatDate(r,r.currentDay,r.currentMonth,r.currentYear)))},_clearDate:function(t){var o=e(t);this._selectDate(o,"")},_selectDate:function(t,o){var i,n=e(t),r=this._getInst(n[0]);o=null!=o?o:this._formatDate(r),r.input&&r.input.val(o),this._updateAlternate(r),i=this._get(r,"onSelect"),i?i.apply(r.input?r.input[0]:null,[o,r]):r.input&&r.input.trigger("change"),r.inline?this._updateDatepicker(r):(this._hideDatepicker(),this._lastInput=r.input[0],"object"!=typeof r.input[0]&&r.input.focus(),this._lastInput=null)},_updateAlternate:function(t){var o,i,n,r=this._get(t,"altField");r&&(o=this._get(t,"altFormat")||this._get(t,"dateFormat"),i=this._getDate(t),n=this.formatDate(o,i,this._getFormatConfig(t)),e(r).each(function(){e(this).val(n)}))},noWeekends:function(e){var t=e.getDay();return[t>0&&6>t,""]},iso8601Week:function(e){var t,o=new Date(e.getTime());return o.setDate(o.getDate()+4-(o.getDay()||7)),t=o.getTime(),o.setMonth(0),o.setDate(1),Math.floor(Math.round((t-o)/864e5)/7)+1},parseDate:function(t,o,i){if(null==t||null==o)throw"Invalid arguments";if(o="object"==typeof o?""+o:o+"",""===o)return null;var n,r,a,s,l=0,c=(i?i.shortYearCutoff:null)||this._defaults.shortYearCutoff,u="string"!=typeof c?c:(new Date).getFullYear()%100+parseInt(c,10),d=(i?i.dayNamesShort:null)||this._defaults.dayNamesShort,h=(i?i.dayNames:null)||this._defaults.dayNames,p=(i?i.monthNamesShort:null)||this._defaults.monthNamesShort,f=(i?i.monthNames:null)||this._defaults.monthNames,m=-1,g=-1,v=-1,b=-1,y=!1,C=function(e){var o=t.length>n+1&&t.charAt(n+1)===e;return o&&n++,o},w=function(e){var t=C(e),i="@"===e?14:"!"===e?20:"y"===e&&t?4:"o"===e?3:2,n="y"===e?i:1,r=RegExp("^\\d{"+n+","+i+"}"),a=o.substring(l).match(r);if(!a)throw"Missing number at position "+l;return l+=a[0].length,parseInt(a[0],10)},x=function(t,i,n){var r=-1,a=e.map(C(t)?n:i,function(e,t){return[[t,e]]}).sort(function(e,t){return-(e[1].length-t[1].length)});if(e.each(a,function(e,t){var i=t[1];return o.substr(l,i.length).toLowerCase()===i.toLowerCase()?(r=t[0],l+=i.length,!1):void 0}),-1!==r)return r+1;throw"Unknown name at position "+l},_=function(){if(o.charAt(l)!==t.charAt(n))throw"Unexpected literal at position "+l;l++};for(n=0;t.length>n;n++)if(y)"'"!==t.charAt(n)||C("'")?_():y=!1;else switch(t.charAt(n)){case"d":v=w("d");break;case"D":x("D",d,h);break;case"o":b=w("o");break;case"m":g=w("m");break;case"M":g=x("M",p,f);break;case"y":m=w("y");break;case"@":s=new Date(w("@")),m=s.getFullYear(),g=s.getMonth()+1,v=s.getDate();break;case"!":s=new Date((w("!")-this._ticksTo1970)/1e4),m=s.getFullYear(),g=s.getMonth()+1,v=s.getDate();break;case"'":C("'")?_():y=!0;break;default:_()}if(o.length>l&&(a=o.substr(l),!/^\s+/.test(a)))throw"Extra/unparsed characters found in date: "+a;if(-1===m?m=(new Date).getFullYear():100>m&&(m+=(new Date).getFullYear()-(new Date).getFullYear()%100+(u>=m?0:-100)),b>-1)for(g=1,v=b;r=this._getDaysInMonth(m,g-1),!(r>=v);)g++,v-=r;if(s=this._daylightSavingAdjust(new Date(m,g-1,v)),s.getFullYear()!==m||s.getMonth()+1!==g||s.getDate()!==v)throw"Invalid date";return s},ATOM:"yy-mm-dd",COOKIE:"D, dd M yy",ISO_8601:"yy-mm-dd",RFC_822:"D, d M y",RFC_850:"DD, dd-M-y",RFC_1036:"D, d M y",RFC_1123:"D, d M yy",RFC_2822:"D, d M yy",RSS:"D, d M y",TICKS:"!",TIMESTAMP:"@",W3C:"yy-mm-dd",_ticksTo1970:864e9*(718685+Math.floor(492.5)-Math.floor(19.7)+Math.floor(4.925)),formatDate:function(e,t,o){if(!t)return"";var i,n=(o?o.dayNamesShort:null)||this._defaults.dayNamesShort,r=(o?o.dayNames:null)||this._defaults.dayNames,a=(o?o.monthNamesShort:null)||this._defaults.monthNamesShort,s=(o?o.monthNames:null)||this._defaults.monthNames,l=function(t){var o=e.length>i+1&&e.charAt(i+1)===t;return o&&i++,o},c=function(e,t,o){var i=""+t;if(l(e))for(;o>i.length;)i="0"+i;return i},u=function(e,t,o,i){return l(e)?i[t]:o[t]},d="",h=!1;if(t)for(i=0;e.length>i;i++)if(h)"'"!==e.charAt(i)||l("'")?d+=e.charAt(i):h=!1;else switch(e.charAt(i)){case"d":d+=c("d",t.getDate(),2);break;case"D":d+=u("D",t.getDay(),n,r);break;case"o":d+=c("o",Math.round((new Date(t.getFullYear(),t.getMonth(),t.getDate()).getTime()-new Date(t.getFullYear(),0,0).getTime())/864e5),3);break;case"m":d+=c("m",t.getMonth()+1,2);break;case"M":d+=u("M",t.getMonth(),a,s);break;case"y":d+=l("y")?t.getFullYear():(10>t.getYear()%100?"0":"")+t.getYear()%100;break;case"@":d+=t.getTime();break;case"!":d+=1e4*t.getTime()+this._ticksTo1970;break;case"'":l("'")?d+="'":h=!0;break;default:d+=e.charAt(i)}return d},_possibleChars:function(e){var t,o="",i=!1,n=function(o){var i=e.length>t+1&&e.charAt(t+1)===o;return i&&t++,i};for(t=0;e.length>t;t++)if(i)"'"!==e.charAt(t)||n("'")?o+=e.charAt(t):i=!1;else switch(e.charAt(t)){case"d":case"m":case"y":case"@":o+="0123456789";break;case"D":case"M":return null;case"'":n("'")?o+="'":i=!0;break;default:o+=e.charAt(t)}return o},_get:function(e,t){return void 0!==e.settings[t]?e.settings[t]:this._defaults[t]},_setDateFromField:function(e,t){if(e.input.val()!==e.lastVal){var o=this._get(e,"dateFormat"),i=e.lastVal=e.input?e.input.val():null,n=this._getDefaultDate(e),r=n,a=this._getFormatConfig(e);
-try{r=this.parseDate(o,i,a)||n}catch(s){i=t?"":i}e.selectedDay=r.getDate(),e.drawMonth=e.selectedMonth=r.getMonth(),e.drawYear=e.selectedYear=r.getFullYear(),e.currentDay=i?r.getDate():0,e.currentMonth=i?r.getMonth():0,e.currentYear=i?r.getFullYear():0,this._adjustInstDate(e)}},_getDefaultDate:function(e){return this._restrictMinMax(e,this._determineDate(e,this._get(e,"defaultDate"),new Date))},_determineDate:function(t,o,i){var n=function(e){var t=new Date;return t.setDate(t.getDate()+e),t},r=function(o){try{return e.datepicker.parseDate(e.datepicker._get(t,"dateFormat"),o,e.datepicker._getFormatConfig(t))}catch(i){}for(var n=(o.toLowerCase().match(/^c/)?e.datepicker._getDate(t):null)||new Date,r=n.getFullYear(),a=n.getMonth(),s=n.getDate(),l=/([+\-]?[0-9]+)\s*(d|D|w|W|m|M|y|Y)?/g,c=l.exec(o);c;){switch(c[2]||"d"){case"d":case"D":s+=parseInt(c[1],10);break;case"w":case"W":s+=7*parseInt(c[1],10);break;case"m":case"M":a+=parseInt(c[1],10),s=Math.min(s,e.datepicker._getDaysInMonth(r,a));break;case"y":case"Y":r+=parseInt(c[1],10),s=Math.min(s,e.datepicker._getDaysInMonth(r,a))}c=l.exec(o)}return new Date(r,a,s)},a=null==o||""===o?i:"string"==typeof o?r(o):"number"==typeof o?isNaN(o)?i:n(o):new Date(o.getTime());return a=a&&"Invalid Date"==""+a?i:a,a&&(a.setHours(0),a.setMinutes(0),a.setSeconds(0),a.setMilliseconds(0)),this._daylightSavingAdjust(a)},_daylightSavingAdjust:function(e){return e?(e.setHours(e.getHours()>12?e.getHours()+2:0),e):null},_setDate:function(e,t,o){var i=!t,n=e.selectedMonth,r=e.selectedYear,a=this._restrictMinMax(e,this._determineDate(e,t,new Date));e.selectedDay=e.currentDay=a.getDate(),e.drawMonth=e.selectedMonth=e.currentMonth=a.getMonth(),e.drawYear=e.selectedYear=e.currentYear=a.getFullYear(),n===e.selectedMonth&&r===e.selectedYear||o||this._notifyChange(e),this._adjustInstDate(e),e.input&&e.input.val(i?"":this._formatDate(e))},_getDate:function(e){var t=!e.currentYear||e.input&&""===e.input.val()?null:this._daylightSavingAdjust(new Date(e.currentYear,e.currentMonth,e.currentDay));return t},_attachHandlers:function(t){var o=this._get(t,"stepMonths"),i="#"+t.id.replace(/\\\\/g,"\\");t.dpDiv.find("[data-handler]").map(function(){var t={prev:function(){e.datepicker._adjustDate(i,-o,"M")},next:function(){e.datepicker._adjustDate(i,+o,"M")},hide:function(){e.datepicker._hideDatepicker()},today:function(){e.datepicker._gotoToday(i)},selectDay:function(){return e.datepicker._selectDay(i,+this.getAttribute("data-month"),+this.getAttribute("data-year"),this),!1},selectMonth:function(){return e.datepicker._selectMonthYear(i,this,"M"),!1},selectYear:function(){return e.datepicker._selectMonthYear(i,this,"Y"),!1}};e(this).bind(this.getAttribute("data-event"),t[this.getAttribute("data-handler")])})},_generateHTML:function(e){var t,o,i,n,r,a,s,l,c,u,d,h,p,f,m,g,v,b,y,C,w,x,_,S,k,T,F,E,D,P,A,I,M,R,N,L,O,z,H,B=new Date,U=this._daylightSavingAdjust(new Date(B.getFullYear(),B.getMonth(),B.getDate())),j=this._get(e,"isRTL"),V=this._get(e,"showButtonPanel"),W=this._get(e,"hideIfNoPrevNext"),G=this._get(e,"navigationAsDateFormat"),$=this._getNumberOfMonths(e),Y=this._get(e,"showCurrentAtPos"),K=this._get(e,"stepMonths"),q=1!==$[0]||1!==$[1],X=this._daylightSavingAdjust(e.currentDay?new Date(e.currentYear,e.currentMonth,e.currentDay):new Date(9999,9,9)),J=this._getMinMaxDate(e,"min"),Z=this._getMinMaxDate(e,"max"),Q=e.drawMonth-Y,et=e.drawYear;if(0>Q&&(Q+=12,et--),Z)for(t=this._daylightSavingAdjust(new Date(Z.getFullYear(),Z.getMonth()-$[0]*$[1]+1,Z.getDate())),t=J&&J>t?J:t;this._daylightSavingAdjust(new Date(et,Q,1))>t;)Q--,0>Q&&(Q=11,et--);for(e.drawMonth=Q,e.drawYear=et,o=this._get(e,"prevText"),o=G?this.formatDate(o,this._daylightSavingAdjust(new Date(et,Q-K,1)),this._getFormatConfig(e)):o,i=this._canAdjustMonth(e,-1,et,Q)?"<a class='ui-datepicker-prev ui-corner-all' data-handler='prev' data-event='click' title='"+o+"'><span class='ui-icon ui-icon-circle-triangle-"+(j?"e":"w")+"'>"+o+"</span></a>":W?"":"<a class='ui-datepicker-prev ui-corner-all ui-state-disabled' title='"+o+"'><span class='ui-icon ui-icon-circle-triangle-"+(j?"e":"w")+"'>"+o+"</span></a>",n=this._get(e,"nextText"),n=G?this.formatDate(n,this._daylightSavingAdjust(new Date(et,Q+K,1)),this._getFormatConfig(e)):n,r=this._canAdjustMonth(e,1,et,Q)?"<a class='ui-datepicker-next ui-corner-all' data-handler='next' data-event='click' title='"+n+"'><span class='ui-icon ui-icon-circle-triangle-"+(j?"w":"e")+"'>"+n+"</span></a>":W?"":"<a class='ui-datepicker-next ui-corner-all ui-state-disabled' title='"+n+"'><span class='ui-icon ui-icon-circle-triangle-"+(j?"w":"e")+"'>"+n+"</span></a>",a=this._get(e,"currentText"),s=this._get(e,"gotoCurrent")&&e.currentDay?X:U,a=G?this.formatDate(a,s,this._getFormatConfig(e)):a,l=e.inline?"":"<button type='button' class='ui-datepicker-close ui-state-default ui-priority-primary ui-corner-all' data-handler='hide' data-event='click'>"+this._get(e,"closeText")+"</button>",c=V?"<div class='ui-datepicker-buttonpane ui-widget-content'>"+(j?l:"")+(this._isInRange(e,s)?"<button type='button' class='ui-datepicker-current ui-state-default ui-priority-secondary ui-corner-all' data-handler='today' data-event='click'>"+a+"</button>":"")+(j?"":l)+"</div>":"",u=parseInt(this._get(e,"firstDay"),10),u=isNaN(u)?0:u,d=this._get(e,"showWeek"),h=this._get(e,"dayNames"),p=this._get(e,"dayNamesMin"),f=this._get(e,"monthNames"),m=this._get(e,"monthNamesShort"),g=this._get(e,"beforeShowDay"),v=this._get(e,"showOtherMonths"),b=this._get(e,"selectOtherMonths"),y=this._getDefaultDate(e),C="",x=0;$[0]>x;x++){for(_="",this.maxRows=4,S=0;$[1]>S;S++){if(k=this._daylightSavingAdjust(new Date(et,Q,e.selectedDay)),T=" ui-corner-all",F="",q){if(F+="<div class='ui-datepicker-group",$[1]>1)switch(S){case 0:F+=" ui-datepicker-group-first",T=" ui-corner-"+(j?"right":"left");break;case $[1]-1:F+=" ui-datepicker-group-last",T=" ui-corner-"+(j?"left":"right");break;default:F+=" ui-datepicker-group-middle",T=""}F+="'>"}for(F+="<div class='ui-datepicker-header ui-widget-header ui-helper-clearfix"+T+"'>"+(/all|left/.test(T)&&0===x?j?r:i:"")+(/all|right/.test(T)&&0===x?j?i:r:"")+this._generateMonthYearHeader(e,Q,et,J,Z,x>0||S>0,f,m)+"</div><table class='ui-datepicker-calendar'><thead><tr>",E=d?"<th class='ui-datepicker-week-col'>"+this._get(e,"weekHeader")+"</th>":"",w=0;7>w;w++)D=(w+u)%7,E+="<th scope='col'"+((w+u+6)%7>=5?" class='ui-datepicker-week-end'":"")+"><span title='"+h[D]+"'>"+p[D]+"</span></th>";for(F+=E+"</tr></thead><tbody>",P=this._getDaysInMonth(et,Q),et===e.selectedYear&&Q===e.selectedMonth&&(e.selectedDay=Math.min(e.selectedDay,P)),A=(this._getFirstDayOfMonth(et,Q)-u+7)%7,I=Math.ceil((A+P)/7),M=q&&this.maxRows>I?this.maxRows:I,this.maxRows=M,R=this._daylightSavingAdjust(new Date(et,Q,1-A)),N=0;M>N;N++){for(F+="<tr>",L=d?"<td class='ui-datepicker-week-col'>"+this._get(e,"calculateWeek")(R)+"</td>":"",w=0;7>w;w++)O=g?g.apply(e.input?e.input[0]:null,[R]):[!0,""],z=R.getMonth()!==Q,H=z&&!b||!O[0]||J&&J>R||Z&&R>Z,L+="<td class='"+((w+u+6)%7>=5?" ui-datepicker-week-end":"")+(z?" ui-datepicker-other-month":"")+(R.getTime()===k.getTime()&&Q===e.selectedMonth&&e._keyEvent||y.getTime()===R.getTime()&&y.getTime()===k.getTime()?" "+this._dayOverClass:"")+(H?" "+this._unselectableClass+" ui-state-disabled":"")+(z&&!v?"":" "+O[1]+(R.getTime()===X.getTime()?" "+this._currentClass:"")+(R.getTime()===U.getTime()?" ui-datepicker-today":""))+"'"+(z&&!v||!O[2]?"":" title='"+O[2].replace(/'/g,"&#39;")+"'")+(H?"":" data-handler='selectDay' data-event='click' data-month='"+R.getMonth()+"' data-year='"+R.getFullYear()+"'")+">"+(z&&!v?"&#xa0;":H?"<span class='ui-state-default'>"+R.getDate()+"</span>":"<a class='ui-state-default"+(R.getTime()===U.getTime()?" ui-state-highlight":"")+(R.getTime()===X.getTime()?" ui-state-active":"")+(z?" ui-priority-secondary":"")+"' href='#'>"+R.getDate()+"</a>")+"</td>",R.setDate(R.getDate()+1),R=this._daylightSavingAdjust(R);F+=L+"</tr>"}Q++,Q>11&&(Q=0,et++),F+="</tbody></table>"+(q?"</div>"+($[0]>0&&S===$[1]-1?"<div class='ui-datepicker-row-break'></div>":""):""),_+=F}C+=_}return C+=c,e._keyEvent=!1,C},_generateMonthYearHeader:function(e,t,o,i,n,r,a,s){var l,c,u,d,h,p,f,m,g=this._get(e,"changeMonth"),v=this._get(e,"changeYear"),b=this._get(e,"showMonthAfterYear"),y="<div class='ui-datepicker-title'>",C="";if(r||!g)C+="<span class='ui-datepicker-month'>"+a[t]+"</span>";else{for(l=i&&i.getFullYear()===o,c=n&&n.getFullYear()===o,C+="<select class='ui-datepicker-month' data-handler='selectMonth' data-event='change'>",u=0;12>u;u++)(!l||u>=i.getMonth())&&(!c||n.getMonth()>=u)&&(C+="<option value='"+u+"'"+(u===t?" selected='selected'":"")+">"+s[u]+"</option>");C+="</select>"}if(b||(y+=C+(!r&&g&&v?"":"&#xa0;")),!e.yearshtml)if(e.yearshtml="",r||!v)y+="<span class='ui-datepicker-year'>"+o+"</span>";else{for(d=this._get(e,"yearRange").split(":"),h=(new Date).getFullYear(),p=function(e){var t=e.match(/c[+\-].*/)?o+parseInt(e.substring(1),10):e.match(/[+\-].*/)?h+parseInt(e,10):parseInt(e,10);return isNaN(t)?h:t},f=p(d[0]),m=Math.max(f,p(d[1]||"")),f=i?Math.max(f,i.getFullYear()):f,m=n?Math.min(m,n.getFullYear()):m,e.yearshtml+="<select class='ui-datepicker-year' data-handler='selectYear' data-event='change'>";m>=f;f++)e.yearshtml+="<option value='"+f+"'"+(f===o?" selected='selected'":"")+">"+f+"</option>";e.yearshtml+="</select>",y+=e.yearshtml,e.yearshtml=null}return y+=this._get(e,"yearSuffix"),b&&(y+=(!r&&g&&v?"":"&#xa0;")+C),y+="</div>"},_adjustInstDate:function(e,t,o){var i=e.drawYear+("Y"===o?t:0),n=e.drawMonth+("M"===o?t:0),r=Math.min(e.selectedDay,this._getDaysInMonth(i,n))+("D"===o?t:0),a=this._restrictMinMax(e,this._daylightSavingAdjust(new Date(i,n,r)));e.selectedDay=a.getDate(),e.drawMonth=e.selectedMonth=a.getMonth(),e.drawYear=e.selectedYear=a.getFullYear(),("M"===o||"Y"===o)&&this._notifyChange(e)},_restrictMinMax:function(e,t){var o=this._getMinMaxDate(e,"min"),i=this._getMinMaxDate(e,"max"),n=o&&o>t?o:t;return i&&n>i?i:n},_notifyChange:function(e){var t=this._get(e,"onChangeMonthYear");t&&t.apply(e.input?e.input[0]:null,[e.selectedYear,e.selectedMonth+1,e])},_getNumberOfMonths:function(e){var t=this._get(e,"numberOfMonths");return null==t?[1,1]:"number"==typeof t?[1,t]:t},_getMinMaxDate:function(e,t){return this._determineDate(e,this._get(e,t+"Date"),null)},_getDaysInMonth:function(e,t){return 32-this._daylightSavingAdjust(new Date(e,t,32)).getDate()},_getFirstDayOfMonth:function(e,t){return new Date(e,t,1).getDay()},_canAdjustMonth:function(e,t,o,i){var n=this._getNumberOfMonths(e),r=this._daylightSavingAdjust(new Date(o,i+(0>t?t:n[0]*n[1]),1));return 0>t&&r.setDate(this._getDaysInMonth(r.getFullYear(),r.getMonth())),this._isInRange(e,r)},_isInRange:function(e,t){var o,i,n=this._getMinMaxDate(e,"min"),r=this._getMinMaxDate(e,"max"),a=null,s=null,l=this._get(e,"yearRange");return l&&(o=l.split(":"),i=(new Date).getFullYear(),a=parseInt(o[0],10),s=parseInt(o[1],10),o[0].match(/[+\-].*/)&&(a+=i),o[1].match(/[+\-].*/)&&(s+=i)),(!n||t.getTime()>=n.getTime())&&(!r||t.getTime()<=r.getTime())&&(!a||t.getFullYear()>=a)&&(!s||s>=t.getFullYear())},_getFormatConfig:function(e){var t=this._get(e,"shortYearCutoff");return t="string"!=typeof t?t:(new Date).getFullYear()%100+parseInt(t,10),{shortYearCutoff:t,dayNamesShort:this._get(e,"dayNamesShort"),dayNames:this._get(e,"dayNames"),monthNamesShort:this._get(e,"monthNamesShort"),monthNames:this._get(e,"monthNames")}},_formatDate:function(e,t,o,i){t||(e.currentDay=e.selectedDay,e.currentMonth=e.selectedMonth,e.currentYear=e.selectedYear);var n=t?"object"==typeof t?t:this._daylightSavingAdjust(new Date(i,o,t)):this._daylightSavingAdjust(new Date(e.currentYear,e.currentMonth,e.currentDay));return this.formatDate(this._get(e,"dateFormat"),n,this._getFormatConfig(e))}}),e.fn.datepicker=function(t){if(!this.length)return this;e.datepicker.initialized||(e(document).mousedown(e.datepicker._checkExternalClick),e.datepicker.initialized=!0),0===e("#"+e.datepicker._mainDivId).length&&e("body").append(e.datepicker.dpDiv);var o=Array.prototype.slice.call(arguments,1);return"string"!=typeof t||"isDisabled"!==t&&"getDate"!==t&&"widget"!==t?"option"===t&&2===arguments.length&&"string"==typeof arguments[1]?e.datepicker["_"+t+"Datepicker"].apply(e.datepicker,[this[0]].concat(o)):this.each(function(){"string"==typeof t?e.datepicker["_"+t+"Datepicker"].apply(e.datepicker,[this].concat(o)):e.datepicker._attachDatepicker(this,t)}):e.datepicker["_"+t+"Datepicker"].apply(e.datepicker,[this[0]].concat(o))},e.datepicker=new n,e.datepicker.initialized=!1,e.datepicker.uuid=(new Date).getTime(),e.datepicker.version="1.11.4",e.datepicker,e.widget("ui.dialog",{version:"1.11.4",options:{appendTo:"body",autoOpen:!0,buttons:[],closeOnEscape:!0,closeText:"Close",dialogClass:"",draggable:!0,hide:null,height:"auto",maxHeight:null,maxWidth:null,minHeight:150,minWidth:150,modal:!1,position:{my:"center",at:"center",of:window,collision:"fit",using:function(t){var o=e(this).css(t).offset().top;0>o&&e(this).css("top",t.top-o)}},resizable:!0,show:null,title:null,width:300,beforeClose:null,close:null,drag:null,dragStart:null,dragStop:null,focus:null,open:null,resize:null,resizeStart:null,resizeStop:null},sizeRelatedOptions:{buttons:!0,height:!0,maxHeight:!0,maxWidth:!0,minHeight:!0,minWidth:!0,width:!0},resizableRelatedOptions:{maxHeight:!0,maxWidth:!0,minHeight:!0,minWidth:!0},_create:function(){this.originalCss={display:this.element[0].style.display,width:this.element[0].style.width,minHeight:this.element[0].style.minHeight,maxHeight:this.element[0].style.maxHeight,height:this.element[0].style.height},this.originalPosition={parent:this.element.parent(),index:this.element.parent().children().index(this.element)},this.originalTitle=this.element.attr("title"),this.options.title=this.options.title||this.originalTitle,this._createWrapper(),this.element.show().removeAttr("title").addClass("ui-dialog-content ui-widget-content").appendTo(this.uiDialog),this._createTitlebar(),this._createButtonPane(),this.options.draggable&&e.fn.draggable&&this._makeDraggable(),this.options.resizable&&e.fn.resizable&&this._makeResizable(),this._isOpen=!1,this._trackFocus()},_init:function(){this.options.autoOpen&&this.open()},_appendTo:function(){var t=this.options.appendTo;return t&&(t.jquery||t.nodeType)?e(t):this.document.find(t||"body").eq(0)},_destroy:function(){var e,t=this.originalPosition;this._untrackInstance(),this._destroyOverlay(),this.element.removeUniqueId().removeClass("ui-dialog-content ui-widget-content").css(this.originalCss).detach(),this.uiDialog.stop(!0,!0).remove(),this.originalTitle&&this.element.attr("title",this.originalTitle),e=t.parent.children().eq(t.index),e.length&&e[0]!==this.element[0]?e.before(this.element):t.parent.append(this.element)},widget:function(){return this.uiDialog},disable:e.noop,enable:e.noop,close:function(t){var o,i=this;if(this._isOpen&&this._trigger("beforeClose",t)!==!1){if(this._isOpen=!1,this._focusedElement=null,this._destroyOverlay(),this._untrackInstance(),!this.opener.filter(":focusable").focus().length)try{o=this.document[0].activeElement,o&&"body"!==o.nodeName.toLowerCase()&&e(o).blur()}catch(n){}this._hide(this.uiDialog,this.options.hide,function(){i._trigger("close",t)})}},isOpen:function(){return this._isOpen},moveToTop:function(){this._moveToTop()},_moveToTop:function(t,o){var i=!1,n=this.uiDialog.siblings(".ui-front:visible").map(function(){return+e(this).css("z-index")}).get(),r=Math.max.apply(null,n);return r>=+this.uiDialog.css("z-index")&&(this.uiDialog.css("z-index",r+1),i=!0),i&&!o&&this._trigger("focus",t),i},open:function(){var t=this;return this._isOpen?void(this._moveToTop()&&this._focusTabbable()):(this._isOpen=!0,this.opener=e(this.document[0].activeElement),this._size(),this._position(),this._createOverlay(),this._moveToTop(null,!0),this.overlay&&this.overlay.css("z-index",this.uiDialog.css("z-index")-1),this._show(this.uiDialog,this.options.show,function(){t._focusTabbable(),t._trigger("focus")}),this._makeFocusTarget(),void this._trigger("open"))},_focusTabbable:function(){var e=this._focusedElement;e||(e=this.element.find("[autofocus]")),e.length||(e=this.element.find(":tabbable")),e.length||(e=this.uiDialogButtonPane.find(":tabbable")),e.length||(e=this.uiDialogTitlebarClose.filter(":tabbable")),e.length||(e=this.uiDialog),e.eq(0).focus()},_keepFocus:function(t){function o(){var t=this.document[0].activeElement,o=this.uiDialog[0]===t||e.contains(this.uiDialog[0],t);o||this._focusTabbable()}t.preventDefault(),o.call(this),this._delay(o)},_createWrapper:function(){this.uiDialog=e("<div>").addClass("ui-dialog ui-widget ui-widget-content ui-corner-all ui-front "+this.options.dialogClass).hide().attr({tabIndex:-1,role:"dialog"}).appendTo(this._appendTo()),this._on(this.uiDialog,{keydown:function(t){if(this.options.closeOnEscape&&!t.isDefaultPrevented()&&t.keyCode&&t.keyCode===e.ui.keyCode.ESCAPE)return t.preventDefault(),void this.close(t);if(t.keyCode===e.ui.keyCode.TAB&&!t.isDefaultPrevented()){var o=this.uiDialog.find(":tabbable"),i=o.filter(":first"),n=o.filter(":last");t.target!==n[0]&&t.target!==this.uiDialog[0]||t.shiftKey?t.target!==i[0]&&t.target!==this.uiDialog[0]||!t.shiftKey||(this._delay(function(){n.focus()}),t.preventDefault()):(this._delay(function(){i.focus()}),t.preventDefault())}},mousedown:function(e){this._moveToTop(e)&&this._focusTabbable()}}),this.element.find("[aria-describedby]").length||this.uiDialog.attr({"aria-describedby":this.element.uniqueId().attr("id")})},_createTitlebar:function(){var t;this.uiDialogTitlebar=e("<div>").addClass("ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix").prependTo(this.uiDialog),this._on(this.uiDialogTitlebar,{mousedown:function(t){e(t.target).closest(".ui-dialog-titlebar-close")||this.uiDialog.focus()}}),this.uiDialogTitlebarClose=e("<button type='button'></button>").button({label:this.options.closeText,icons:{primary:"ui-icon-closethick"},text:!1}).addClass("ui-dialog-titlebar-close").appendTo(this.uiDialogTitlebar),this._on(this.uiDialogTitlebarClose,{click:function(e){e.preventDefault(),this.close(e)}}),t=e("<span>").uniqueId().addClass("ui-dialog-title").prependTo(this.uiDialogTitlebar),this._title(t),this.uiDialog.attr({"aria-labelledby":t.attr("id")})},_title:function(e){this.options.title||e.html("&#160;"),e.text(this.options.title)},_createButtonPane:function(){this.uiDialogButtonPane=e("<div>").addClass("ui-dialog-buttonpane ui-widget-content ui-helper-clearfix"),this.uiButtonSet=e("<div>").addClass("ui-dialog-buttonset").appendTo(this.uiDialogButtonPane),this._createButtons()},_createButtons:function(){var t=this,o=this.options.buttons;return this.uiDialogButtonPane.remove(),this.uiButtonSet.empty(),e.isEmptyObject(o)||e.isArray(o)&&!o.length?void this.uiDialog.removeClass("ui-dialog-buttons"):(e.each(o,function(o,i){var n,r;i=e.isFunction(i)?{click:i,text:o}:i,i=e.extend({type:"button"},i),n=i.click,i.click=function(){n.apply(t.element[0],arguments)},r={icons:i.icons,text:i.showText},delete i.icons,delete i.showText,e("<button></button>",i).button(r).appendTo(t.uiButtonSet)}),this.uiDialog.addClass("ui-dialog-buttons"),void this.uiDialogButtonPane.appendTo(this.uiDialog))},_makeDraggable:function(){function t(e){return{position:e.position,offset:e.offset}}var o=this,i=this.options;this.uiDialog.draggable({cancel:".ui-dialog-content, .ui-dialog-titlebar-close",handle:".ui-dialog-titlebar",containment:"document",start:function(i,n){e(this).addClass("ui-dialog-dragging"),o._blockFrames(),o._trigger("dragStart",i,t(n))},drag:function(e,i){o._trigger("drag",e,t(i))},stop:function(n,r){var a=r.offset.left-o.document.scrollLeft(),s=r.offset.top-o.document.scrollTop();i.position={my:"left top",at:"left"+(a>=0?"+":"")+a+" top"+(s>=0?"+":"")+s,of:o.window},e(this).removeClass("ui-dialog-dragging"),o._unblockFrames(),o._trigger("dragStop",n,t(r))}})},_makeResizable:function(){function t(e){return{originalPosition:e.originalPosition,originalSize:e.originalSize,position:e.position,size:e.size}}var o=this,i=this.options,n=i.resizable,r=this.uiDialog.css("position"),a="string"==typeof n?n:"n,e,s,w,se,sw,ne,nw";this.uiDialog.resizable({cancel:".ui-dialog-content",containment:"document",alsoResize:this.element,maxWidth:i.maxWidth,maxHeight:i.maxHeight,minWidth:i.minWidth,minHeight:this._minHeight(),handles:a,start:function(i,n){e(this).addClass("ui-dialog-resizing"),o._blockFrames(),o._trigger("resizeStart",i,t(n))},resize:function(e,i){o._trigger("resize",e,t(i))},stop:function(n,r){var a=o.uiDialog.offset(),s=a.left-o.document.scrollLeft(),l=a.top-o.document.scrollTop();i.height=o.uiDialog.height(),i.width=o.uiDialog.width(),i.position={my:"left top",at:"left"+(s>=0?"+":"")+s+" top"+(l>=0?"+":"")+l,of:o.window},e(this).removeClass("ui-dialog-resizing"),o._unblockFrames(),o._trigger("resizeStop",n,t(r))}}).css("position",r)},_trackFocus:function(){this._on(this.widget(),{focusin:function(t){this._makeFocusTarget(),this._focusedElement=e(t.target)}})},_makeFocusTarget:function(){this._untrackInstance(),this._trackingInstances().unshift(this)},_untrackInstance:function(){var t=this._trackingInstances(),o=e.inArray(this,t);-1!==o&&t.splice(o,1)},_trackingInstances:function(){var e=this.document.data("ui-dialog-instances");return e||(e=[],this.document.data("ui-dialog-instances",e)),e},_minHeight:function(){var e=this.options;return"auto"===e.height?e.minHeight:Math.min(e.minHeight,e.height)},_position:function(){var e=this.uiDialog.is(":visible");e||this.uiDialog.show(),this.uiDialog.position(this.options.position),e||this.uiDialog.hide()},_setOptions:function(t){var o=this,i=!1,n={};e.each(t,function(e,t){o._setOption(e,t),e in o.sizeRelatedOptions&&(i=!0),e in o.resizableRelatedOptions&&(n[e]=t)}),i&&(this._size(),this._position()),this.uiDialog.is(":data(ui-resizable)")&&this.uiDialog.resizable("option",n)},_setOption:function(e,t){var o,i,n=this.uiDialog;"dialogClass"===e&&n.removeClass(this.options.dialogClass).addClass(t),"disabled"!==e&&(this._super(e,t),"appendTo"===e&&this.uiDialog.appendTo(this._appendTo()),"buttons"===e&&this._createButtons(),"closeText"===e&&this.uiDialogTitlebarClose.button({label:""+t}),"draggable"===e&&(o=n.is(":data(ui-draggable)"),o&&!t&&n.draggable("destroy"),!o&&t&&this._makeDraggable()),"position"===e&&this._position(),"resizable"===e&&(i=n.is(":data(ui-resizable)"),i&&!t&&n.resizable("destroy"),i&&"string"==typeof t&&n.resizable("option","handles",t),i||t===!1||this._makeResizable()),"title"===e&&this._title(this.uiDialogTitlebar.find(".ui-dialog-title")))},_size:function(){var e,t,o,i=this.options;this.element.show().css({width:"auto",minHeight:0,maxHeight:"none",height:0}),i.minWidth>i.width&&(i.width=i.minWidth),e=this.uiDialog.css({height:"auto",width:i.width}).outerHeight(),t=Math.max(0,i.minHeight-e),o="number"==typeof i.maxHeight?Math.max(0,i.maxHeight-e):"none","auto"===i.height?this.element.css({minHeight:t,maxHeight:o,height:"auto"}):this.element.height(Math.max(0,i.height-e)),this.uiDialog.is(":data(ui-resizable)")&&this.uiDialog.resizable("option","minHeight",this._minHeight())},_blockFrames:function(){this.iframeBlocks=this.document.find("iframe").map(function(){var t=e(this);return e("<div>").css({position:"absolute",width:t.outerWidth(),height:t.outerHeight()}).appendTo(t.parent()).offset(t.offset())[0]})},_unblockFrames:function(){this.iframeBlocks&&(this.iframeBlocks.remove(),delete this.iframeBlocks)},_allowInteraction:function(t){return e(t.target).closest(".ui-dialog").length?!0:!!e(t.target).closest(".ui-datepicker").length},_createOverlay:function(){if(this.options.modal){var t=!0;this._delay(function(){t=!1}),this.document.data("ui-dialog-overlays")||this._on(this.document,{focusin:function(e){t||this._allowInteraction(e)||(e.preventDefault(),this._trackingInstances()[0]._focusTabbable())}}),this.overlay=e("<div>").addClass("ui-widget-overlay ui-front").appendTo(this._appendTo()),this._on(this.overlay,{mousedown:"_keepFocus"}),this.document.data("ui-dialog-overlays",(this.document.data("ui-dialog-overlays")||0)+1)}},_destroyOverlay:function(){if(this.options.modal&&this.overlay){var e=this.document.data("ui-dialog-overlays")-1;e?this.document.data("ui-dialog-overlays",e):this.document.unbind("focusin").removeData("ui-dialog-overlays"),this.overlay.remove(),this.overlay=null}}}),e.widget("ui.progressbar",{version:"1.11.4",options:{max:100,value:0,change:null,complete:null},min:0,_create:function(){this.oldValue=this.options.value=this._constrainedValue(),this.element.addClass("ui-progressbar ui-widget ui-widget-content ui-corner-all").attr({role:"progressbar","aria-valuemin":this.min}),this.valueDiv=e("<div class='ui-progressbar-value ui-widget-header ui-corner-left'></div>").appendTo(this.element),this._refreshValue()},_destroy:function(){this.element.removeClass("ui-progressbar ui-widget ui-widget-content ui-corner-all").removeAttr("role").removeAttr("aria-valuemin").removeAttr("aria-valuemax").removeAttr("aria-valuenow"),this.valueDiv.remove()},value:function(e){return void 0===e?this.options.value:(this.options.value=this._constrainedValue(e),void this._refreshValue())},_constrainedValue:function(e){return void 0===e&&(e=this.options.value),this.indeterminate=e===!1,"number"!=typeof e&&(e=0),this.indeterminate?!1:Math.min(this.options.max,Math.max(this.min,e))},_setOptions:function(e){var t=e.value;delete e.value,this._super(e),this.options.value=this._constrainedValue(t),this._refreshValue()},_setOption:function(e,t){"max"===e&&(t=Math.max(this.min,t)),"disabled"===e&&this.element.toggleClass("ui-state-disabled",!!t).attr("aria-disabled",t),this._super(e,t)},_percentage:function(){return this.indeterminate?100:100*(this.options.value-this.min)/(this.options.max-this.min)},_refreshValue:function(){var t=this.options.value,o=this._percentage();this.valueDiv.toggle(this.indeterminate||t>this.min).toggleClass("ui-corner-right",t===this.options.max).width(o.toFixed(0)+"%"),this.element.toggleClass("ui-progressbar-indeterminate",this.indeterminate),this.indeterminate?(this.element.removeAttr("aria-valuenow"),this.overlayDiv||(this.overlayDiv=e("<div class='ui-progressbar-overlay'></div>").appendTo(this.valueDiv))):(this.element.attr({"aria-valuemax":this.options.max,"aria-valuenow":t}),this.overlayDiv&&(this.overlayDiv.remove(),this.overlayDiv=null)),this.oldValue!==t&&(this.oldValue=t,this._trigger("change")),t===this.options.max&&this._trigger("complete")}}),e.widget("ui.selectmenu",{version:"1.11.4",defaultElement:"<select>",options:{appendTo:null,disabled:null,icons:{button:"ui-icon-triangle-1-s"},position:{my:"left top",at:"left bottom",collision:"none"},width:null,change:null,close:null,focus:null,open:null,select:null},_create:function(){var e=this.element.uniqueId().attr("id");this.ids={element:e,button:e+"-button",menu:e+"-menu"},this._drawButton(),this._drawMenu(),this.options.disabled&&this.disable()},_drawButton:function(){var t=this;this.label=e("label[for='"+this.ids.element+"']").attr("for",this.ids.button),this._on(this.label,{click:function(e){this.button.focus(),e.preventDefault()}}),this.element.hide(),this.button=e("<span>",{"class":"ui-selectmenu-button ui-widget ui-state-default ui-corner-all",tabindex:this.options.disabled?-1:0,id:this.ids.button,role:"combobox","aria-expanded":"false","aria-autocomplete":"list","aria-owns":this.ids.menu,"aria-haspopup":"true"}).insertAfter(this.element),e("<span>",{"class":"ui-icon "+this.options.icons.button}).prependTo(this.button),this.buttonText=e("<span>",{"class":"ui-selectmenu-text"}).appendTo(this.button),this._setText(this.buttonText,this.element.find("option:selected").text()),this._resizeButton(),this._on(this.button,this._buttonEvents),this.button.one("focusin",function(){t.menuItems||t._refreshMenu()}),this._hoverable(this.button),this._focusable(this.button)},_drawMenu:function(){var t=this;this.menu=e("<ul>",{"aria-hidden":"true","aria-labelledby":this.ids.button,id:this.ids.menu}),this.menuWrap=e("<div>",{"class":"ui-selectmenu-menu ui-front"}).append(this.menu).appendTo(this._appendTo()),this.menuInstance=this.menu.menu({role:"listbox",select:function(e,o){e.preventDefault(),t._setSelection(),t._select(o.item.data("ui-selectmenu-item"),e)},focus:function(e,o){var i=o.item.data("ui-selectmenu-item");null!=t.focusIndex&&i.index!==t.focusIndex&&(t._trigger("focus",e,{item:i}),t.isOpen||t._select(i,e)),t.focusIndex=i.index,t.button.attr("aria-activedescendant",t.menuItems.eq(i.index).attr("id"))}}).menu("instance"),this.menu.addClass("ui-corner-bottom").removeClass("ui-corner-all"),this.menuInstance._off(this.menu,"mouseleave"),this.menuInstance._closeOnDocumentClick=function(){return!1},this.menuInstance._isDivider=function(){return!1}},refresh:function(){this._refreshMenu(),this._setText(this.buttonText,this._getSelectedItem().text()),this.options.width||this._resizeButton()},_refreshMenu:function(){this.menu.empty();var e,t=this.element.find("option");t.length&&(this._parseOptions(t),this._renderMenu(this.menu,this.items),this.menuInstance.refresh(),this.menuItems=this.menu.find("li").not(".ui-selectmenu-optgroup"),e=this._getSelectedItem(),this.menuInstance.focus(null,e),this._setAria(e.data("ui-selectmenu-item")),this._setOption("disabled",this.element.prop("disabled")))},open:function(e){this.options.disabled||(this.menuItems?(this.menu.find(".ui-state-focus").removeClass("ui-state-focus"),this.menuInstance.focus(null,this._getSelectedItem())):this._refreshMenu(),this.isOpen=!0,this._toggleAttr(),this._resizeMenu(),this._position(),this._on(this.document,this._documentClick),this._trigger("open",e))},_position:function(){this.menuWrap.position(e.extend({of:this.button},this.options.position))},close:function(e){this.isOpen&&(this.isOpen=!1,this._toggleAttr(),this.range=null,this._off(this.document),this._trigger("close",e))},widget:function(){return this.button},menuWidget:function(){return this.menu},_renderMenu:function(t,o){var i=this,n="";e.each(o,function(o,r){r.optgroup!==n&&(e("<li>",{"class":"ui-selectmenu-optgroup ui-menu-divider"+(r.element.parent("optgroup").prop("disabled")?" ui-state-disabled":""),text:r.optgroup}).appendTo(t),n=r.optgroup),i._renderItemData(t,r)})},_renderItemData:function(e,t){return this._renderItem(e,t).data("ui-selectmenu-item",t)},_renderItem:function(t,o){var i=e("<li>");return o.disabled&&i.addClass("ui-state-disabled"),this._setText(i,o.label),i.appendTo(t)},_setText:function(e,t){t?e.text(t):e.html("&#160;")},_move:function(e,t){var o,i,n=".ui-menu-item";this.isOpen?o=this.menuItems.eq(this.focusIndex):(o=this.menuItems.eq(this.element[0].selectedIndex),n+=":not(.ui-state-disabled)"),i="first"===e||"last"===e?o["first"===e?"prevAll":"nextAll"](n).eq(-1):o[e+"All"](n).eq(0),i.length&&this.menuInstance.focus(t,i)},_getSelectedItem:function(){return this.menuItems.eq(this.element[0].selectedIndex)},_toggle:function(e){this[this.isOpen?"close":"open"](e)},_setSelection:function(){var e;this.range&&(window.getSelection?(e=window.getSelection(),e.removeAllRanges(),e.addRange(this.range)):this.range.select(),this.button.focus())},_documentClick:{mousedown:function(t){this.isOpen&&(e(t.target).closest(".ui-selectmenu-menu, #"+this.ids.button).length||this.close(t))}},_buttonEvents:{mousedown:function(){var e;window.getSelection?(e=window.getSelection(),e.rangeCount&&(this.range=e.getRangeAt(0))):this.range=document.selection.createRange()},click:function(e){this._setSelection(),this._toggle(e)},keydown:function(t){var o=!0;switch(t.keyCode){case e.ui.keyCode.TAB:case e.ui.keyCode.ESCAPE:this.close(t),o=!1;break;case e.ui.keyCode.ENTER:this.isOpen&&this._selectFocusedItem(t);break;case e.ui.keyCode.UP:t.altKey?this._toggle(t):this._move("prev",t);break;case e.ui.keyCode.DOWN:t.altKey?this._toggle(t):this._move("next",t);break;case e.ui.keyCode.SPACE:this.isOpen?this._selectFocusedItem(t):this._toggle(t);break;case e.ui.keyCode.LEFT:this._move("prev",t);
-break;case e.ui.keyCode.RIGHT:this._move("next",t);break;case e.ui.keyCode.HOME:case e.ui.keyCode.PAGE_UP:this._move("first",t);break;case e.ui.keyCode.END:case e.ui.keyCode.PAGE_DOWN:this._move("last",t);break;default:this.menu.trigger(t),o=!1}o&&t.preventDefault()}},_selectFocusedItem:function(e){var t=this.menuItems.eq(this.focusIndex);t.hasClass("ui-state-disabled")||this._select(t.data("ui-selectmenu-item"),e)},_select:function(e,t){var o=this.element[0].selectedIndex;this.element[0].selectedIndex=e.index,this._setText(this.buttonText,e.label),this._setAria(e),this._trigger("select",t,{item:e}),e.index!==o&&this._trigger("change",t,{item:e}),this.close(t)},_setAria:function(e){var t=this.menuItems.eq(e.index).attr("id");this.button.attr({"aria-labelledby":t,"aria-activedescendant":t}),this.menu.attr("aria-activedescendant",t)},_setOption:function(e,t){"icons"===e&&this.button.find("span.ui-icon").removeClass(this.options.icons.button).addClass(t.button),this._super(e,t),"appendTo"===e&&this.menuWrap.appendTo(this._appendTo()),"disabled"===e&&(this.menuInstance.option("disabled",t),this.button.toggleClass("ui-state-disabled",t).attr("aria-disabled",t),this.element.prop("disabled",t),t?(this.button.attr("tabindex",-1),this.close()):this.button.attr("tabindex",0)),"width"===e&&this._resizeButton()},_appendTo:function(){var t=this.options.appendTo;return t&&(t=t.jquery||t.nodeType?e(t):this.document.find(t).eq(0)),t&&t[0]||(t=this.element.closest(".ui-front")),t.length||(t=this.document[0].body),t},_toggleAttr:function(){this.button.toggleClass("ui-corner-top",this.isOpen).toggleClass("ui-corner-all",!this.isOpen).attr("aria-expanded",this.isOpen),this.menuWrap.toggleClass("ui-selectmenu-open",this.isOpen),this.menu.attr("aria-hidden",!this.isOpen)},_resizeButton:function(){var e=this.options.width;e||(e=this.element.show().outerWidth(),this.element.hide()),this.button.outerWidth(e)},_resizeMenu:function(){this.menu.outerWidth(Math.max(this.button.outerWidth(),this.menu.width("").outerWidth()+1))},_getCreateOptions:function(){return{disabled:this.element.prop("disabled")}},_parseOptions:function(t){var o=[];t.each(function(t,i){var n=e(i),r=n.parent("optgroup");o.push({element:n,index:t,value:n.val(),label:n.text(),optgroup:r.attr("label")||"",disabled:r.prop("disabled")||n.prop("disabled")})}),this.items=o},_destroy:function(){this.menuWrap.remove(),this.button.remove(),this.element.show(),this.element.removeUniqueId(),this.label.attr("for",this.ids.element)}}),e.widget("ui.slider",e.ui.mouse,{version:"1.11.4",widgetEventPrefix:"slide",options:{animate:!1,distance:0,max:100,min:0,orientation:"horizontal",range:!1,step:1,value:0,values:null,change:null,slide:null,start:null,stop:null},numPages:5,_create:function(){this._keySliding=!1,this._mouseSliding=!1,this._animateOff=!0,this._handleIndex=null,this._detectOrientation(),this._mouseInit(),this._calculateNewMax(),this.element.addClass("ui-slider ui-slider-"+this.orientation+" ui-widget ui-widget-content ui-corner-all"),this._refresh(),this._setOption("disabled",this.options.disabled),this._animateOff=!1},_refresh:function(){this._createRange(),this._createHandles(),this._setupEvents(),this._refreshValue()},_createHandles:function(){var t,o,i=this.options,n=this.element.find(".ui-slider-handle").addClass("ui-state-default ui-corner-all"),r="<span class='ui-slider-handle ui-state-default ui-corner-all' tabindex='0'></span>",a=[];for(o=i.values&&i.values.length||1,n.length>o&&(n.slice(o).remove(),n=n.slice(0,o)),t=n.length;o>t;t++)a.push(r);this.handles=n.add(e(a.join("")).appendTo(this.element)),this.handle=this.handles.eq(0),this.handles.each(function(t){e(this).data("ui-slider-handle-index",t)})},_createRange:function(){var t=this.options,o="";t.range?(t.range===!0&&(t.values?t.values.length&&2!==t.values.length?t.values=[t.values[0],t.values[0]]:e.isArray(t.values)&&(t.values=t.values.slice(0)):t.values=[this._valueMin(),this._valueMin()]),this.range&&this.range.length?this.range.removeClass("ui-slider-range-min ui-slider-range-max").css({left:"",bottom:""}):(this.range=e("<div></div>").appendTo(this.element),o="ui-slider-range ui-widget-header ui-corner-all"),this.range.addClass(o+("min"===t.range||"max"===t.range?" ui-slider-range-"+t.range:""))):(this.range&&this.range.remove(),this.range=null)},_setupEvents:function(){this._off(this.handles),this._on(this.handles,this._handleEvents),this._hoverable(this.handles),this._focusable(this.handles)},_destroy:function(){this.handles.remove(),this.range&&this.range.remove(),this.element.removeClass("ui-slider ui-slider-horizontal ui-slider-vertical ui-widget ui-widget-content ui-corner-all"),this._mouseDestroy()},_mouseCapture:function(t){var o,i,n,r,a,s,l,c,u=this,d=this.options;return d.disabled?!1:(this.elementSize={width:this.element.outerWidth(),height:this.element.outerHeight()},this.elementOffset=this.element.offset(),o={x:t.pageX,y:t.pageY},i=this._normValueFromMouse(o),n=this._valueMax()-this._valueMin()+1,this.handles.each(function(t){var o=Math.abs(i-u.values(t));(n>o||n===o&&(t===u._lastChangedValue||u.values(t)===d.min))&&(n=o,r=e(this),a=t)}),s=this._start(t,a),s===!1?!1:(this._mouseSliding=!0,this._handleIndex=a,r.addClass("ui-state-active").focus(),l=r.offset(),c=!e(t.target).parents().addBack().is(".ui-slider-handle"),this._clickOffset=c?{left:0,top:0}:{left:t.pageX-l.left-r.width()/2,top:t.pageY-l.top-r.height()/2-(parseInt(r.css("borderTopWidth"),10)||0)-(parseInt(r.css("borderBottomWidth"),10)||0)+(parseInt(r.css("marginTop"),10)||0)},this.handles.hasClass("ui-state-hover")||this._slide(t,a,i),this._animateOff=!0,!0))},_mouseStart:function(){return!0},_mouseDrag:function(e){var t={x:e.pageX,y:e.pageY},o=this._normValueFromMouse(t);return this._slide(e,this._handleIndex,o),!1},_mouseStop:function(e){return this.handles.removeClass("ui-state-active"),this._mouseSliding=!1,this._stop(e,this._handleIndex),this._change(e,this._handleIndex),this._handleIndex=null,this._clickOffset=null,this._animateOff=!1,!1},_detectOrientation:function(){this.orientation="vertical"===this.options.orientation?"vertical":"horizontal"},_normValueFromMouse:function(e){var t,o,i,n,r;return"horizontal"===this.orientation?(t=this.elementSize.width,o=e.x-this.elementOffset.left-(this._clickOffset?this._clickOffset.left:0)):(t=this.elementSize.height,o=e.y-this.elementOffset.top-(this._clickOffset?this._clickOffset.top:0)),i=o/t,i>1&&(i=1),0>i&&(i=0),"vertical"===this.orientation&&(i=1-i),n=this._valueMax()-this._valueMin(),r=this._valueMin()+i*n,this._trimAlignValue(r)},_start:function(e,t){var o={handle:this.handles[t],value:this.value()};return this.options.values&&this.options.values.length&&(o.value=this.values(t),o.values=this.values()),this._trigger("start",e,o)},_slide:function(e,t,o){var i,n,r;this.options.values&&this.options.values.length?(i=this.values(t?0:1),2===this.options.values.length&&this.options.range===!0&&(0===t&&o>i||1===t&&i>o)&&(o=i),o!==this.values(t)&&(n=this.values(),n[t]=o,r=this._trigger("slide",e,{handle:this.handles[t],value:o,values:n}),i=this.values(t?0:1),r!==!1&&this.values(t,o))):o!==this.value()&&(r=this._trigger("slide",e,{handle:this.handles[t],value:o}),r!==!1&&this.value(o))},_stop:function(e,t){var o={handle:this.handles[t],value:this.value()};this.options.values&&this.options.values.length&&(o.value=this.values(t),o.values=this.values()),this._trigger("stop",e,o)},_change:function(e,t){if(!this._keySliding&&!this._mouseSliding){var o={handle:this.handles[t],value:this.value()};this.options.values&&this.options.values.length&&(o.value=this.values(t),o.values=this.values()),this._lastChangedValue=t,this._trigger("change",e,o)}},value:function(e){return arguments.length?(this.options.value=this._trimAlignValue(e),this._refreshValue(),void this._change(null,0)):this._value()},values:function(t,o){var i,n,r;if(arguments.length>1)return this.options.values[t]=this._trimAlignValue(o),this._refreshValue(),void this._change(null,t);if(!arguments.length)return this._values();if(!e.isArray(arguments[0]))return this.options.values&&this.options.values.length?this._values(t):this.value();for(i=this.options.values,n=arguments[0],r=0;i.length>r;r+=1)i[r]=this._trimAlignValue(n[r]),this._change(null,r);this._refreshValue()},_setOption:function(t,o){var i,n=0;switch("range"===t&&this.options.range===!0&&("min"===o?(this.options.value=this._values(0),this.options.values=null):"max"===o&&(this.options.value=this._values(this.options.values.length-1),this.options.values=null)),e.isArray(this.options.values)&&(n=this.options.values.length),"disabled"===t&&this.element.toggleClass("ui-state-disabled",!!o),this._super(t,o),t){case"orientation":this._detectOrientation(),this.element.removeClass("ui-slider-horizontal ui-slider-vertical").addClass("ui-slider-"+this.orientation),this._refreshValue(),this.handles.css("horizontal"===o?"bottom":"left","");break;case"value":this._animateOff=!0,this._refreshValue(),this._change(null,0),this._animateOff=!1;break;case"values":for(this._animateOff=!0,this._refreshValue(),i=0;n>i;i+=1)this._change(null,i);this._animateOff=!1;break;case"step":case"min":case"max":this._animateOff=!0,this._calculateNewMax(),this._refreshValue(),this._animateOff=!1;break;case"range":this._animateOff=!0,this._refresh(),this._animateOff=!1}},_value:function(){var e=this.options.value;return e=this._trimAlignValue(e)},_values:function(e){var t,o,i;if(arguments.length)return t=this.options.values[e],t=this._trimAlignValue(t);if(this.options.values&&this.options.values.length){for(o=this.options.values.slice(),i=0;o.length>i;i+=1)o[i]=this._trimAlignValue(o[i]);return o}return[]},_trimAlignValue:function(e){if(this._valueMin()>=e)return this._valueMin();if(e>=this._valueMax())return this._valueMax();var t=this.options.step>0?this.options.step:1,o=(e-this._valueMin())%t,i=e-o;return 2*Math.abs(o)>=t&&(i+=o>0?t:-t),parseFloat(i.toFixed(5))},_calculateNewMax:function(){var e=this.options.max,t=this._valueMin(),o=this.options.step,i=Math.floor(+(e-t).toFixed(this._precision())/o)*o;e=i+t,this.max=parseFloat(e.toFixed(this._precision()))},_precision:function(){var e=this._precisionOf(this.options.step);return null!==this.options.min&&(e=Math.max(e,this._precisionOf(this.options.min))),e},_precisionOf:function(e){var t=""+e,o=t.indexOf(".");return-1===o?0:t.length-o-1},_valueMin:function(){return this.options.min},_valueMax:function(){return this.max},_refreshValue:function(){var t,o,i,n,r,a=this.options.range,s=this.options,l=this,c=this._animateOff?!1:s.animate,u={};this.options.values&&this.options.values.length?this.handles.each(function(i){o=100*((l.values(i)-l._valueMin())/(l._valueMax()-l._valueMin())),u["horizontal"===l.orientation?"left":"bottom"]=o+"%",e(this).stop(1,1)[c?"animate":"css"](u,s.animate),l.options.range===!0&&("horizontal"===l.orientation?(0===i&&l.range.stop(1,1)[c?"animate":"css"]({left:o+"%"},s.animate),1===i&&l.range[c?"animate":"css"]({width:o-t+"%"},{queue:!1,duration:s.animate})):(0===i&&l.range.stop(1,1)[c?"animate":"css"]({bottom:o+"%"},s.animate),1===i&&l.range[c?"animate":"css"]({height:o-t+"%"},{queue:!1,duration:s.animate}))),t=o}):(i=this.value(),n=this._valueMin(),r=this._valueMax(),o=r!==n?100*((i-n)/(r-n)):0,u["horizontal"===this.orientation?"left":"bottom"]=o+"%",this.handle.stop(1,1)[c?"animate":"css"](u,s.animate),"min"===a&&"horizontal"===this.orientation&&this.range.stop(1,1)[c?"animate":"css"]({width:o+"%"},s.animate),"max"===a&&"horizontal"===this.orientation&&this.range[c?"animate":"css"]({width:100-o+"%"},{queue:!1,duration:s.animate}),"min"===a&&"vertical"===this.orientation&&this.range.stop(1,1)[c?"animate":"css"]({height:o+"%"},s.animate),"max"===a&&"vertical"===this.orientation&&this.range[c?"animate":"css"]({height:100-o+"%"},{queue:!1,duration:s.animate}))},_handleEvents:{keydown:function(t){var o,i,n,r,a=e(t.target).data("ui-slider-handle-index");switch(t.keyCode){case e.ui.keyCode.HOME:case e.ui.keyCode.END:case e.ui.keyCode.PAGE_UP:case e.ui.keyCode.PAGE_DOWN:case e.ui.keyCode.UP:case e.ui.keyCode.RIGHT:case e.ui.keyCode.DOWN:case e.ui.keyCode.LEFT:if(t.preventDefault(),!this._keySliding&&(this._keySliding=!0,e(t.target).addClass("ui-state-active"),o=this._start(t,a),o===!1))return}switch(r=this.options.step,i=n=this.options.values&&this.options.values.length?this.values(a):this.value(),t.keyCode){case e.ui.keyCode.HOME:n=this._valueMin();break;case e.ui.keyCode.END:n=this._valueMax();break;case e.ui.keyCode.PAGE_UP:n=this._trimAlignValue(i+(this._valueMax()-this._valueMin())/this.numPages);break;case e.ui.keyCode.PAGE_DOWN:n=this._trimAlignValue(i-(this._valueMax()-this._valueMin())/this.numPages);break;case e.ui.keyCode.UP:case e.ui.keyCode.RIGHT:if(i===this._valueMax())return;n=this._trimAlignValue(i+r);break;case e.ui.keyCode.DOWN:case e.ui.keyCode.LEFT:if(i===this._valueMin())return;n=this._trimAlignValue(i-r)}this._slide(t,a,n)},keyup:function(t){var o=e(t.target).data("ui-slider-handle-index");this._keySliding&&(this._keySliding=!1,this._stop(t,o),this._change(t,o),e(t.target).removeClass("ui-state-active"))}}}),e.widget("ui.spinner",{version:"1.11.4",defaultElement:"<input>",widgetEventPrefix:"spin",options:{culture:null,icons:{down:"ui-icon-triangle-1-s",up:"ui-icon-triangle-1-n"},incremental:!0,max:null,min:null,numberFormat:null,page:10,step:1,change:null,spin:null,start:null,stop:null},_create:function(){this._setOption("max",this.options.max),this._setOption("min",this.options.min),this._setOption("step",this.options.step),""!==this.value()&&this._value(this.element.val(),!0),this._draw(),this._on(this._events),this._refresh(),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_getCreateOptions:function(){var t={},o=this.element;return e.each(["min","max","step"],function(e,i){var n=o.attr(i);void 0!==n&&n.length&&(t[i]=n)}),t},_events:{keydown:function(e){this._start(e)&&this._keydown(e)&&e.preventDefault()},keyup:"_stop",focus:function(){this.previous=this.element.val()},blur:function(e){return this.cancelBlur?void delete this.cancelBlur:(this._stop(),this._refresh(),void(this.previous!==this.element.val()&&this._trigger("change",e)))},mousewheel:function(e,t){if(t){if(!this.spinning&&!this._start(e))return!1;this._spin((t>0?1:-1)*this.options.step,e),clearTimeout(this.mousewheelTimer),this.mousewheelTimer=this._delay(function(){this.spinning&&this._stop(e)},100),e.preventDefault()}},"mousedown .ui-spinner-button":function(t){function o(){var e=this.element[0]===this.document[0].activeElement;e||(this.element.focus(),this.previous=i,this._delay(function(){this.previous=i}))}var i;i=this.element[0]===this.document[0].activeElement?this.previous:this.element.val(),t.preventDefault(),o.call(this),this.cancelBlur=!0,this._delay(function(){delete this.cancelBlur,o.call(this)}),this._start(t)!==!1&&this._repeat(null,e(t.currentTarget).hasClass("ui-spinner-up")?1:-1,t)},"mouseup .ui-spinner-button":"_stop","mouseenter .ui-spinner-button":function(t){return e(t.currentTarget).hasClass("ui-state-active")?this._start(t)===!1?!1:void this._repeat(null,e(t.currentTarget).hasClass("ui-spinner-up")?1:-1,t):void 0},"mouseleave .ui-spinner-button":"_stop"},_draw:function(){var e=this.uiSpinner=this.element.addClass("ui-spinner-input").attr("autocomplete","off").wrap(this._uiSpinnerHtml()).parent().append(this._buttonHtml());this.element.attr("role","spinbutton"),this.buttons=e.find(".ui-spinner-button").attr("tabIndex",-1).button().removeClass("ui-corner-all"),this.buttons.height()>Math.ceil(.5*e.height())&&e.height()>0&&e.height(e.height()),this.options.disabled&&this.disable()},_keydown:function(t){var o=this.options,i=e.ui.keyCode;switch(t.keyCode){case i.UP:return this._repeat(null,1,t),!0;case i.DOWN:return this._repeat(null,-1,t),!0;case i.PAGE_UP:return this._repeat(null,o.page,t),!0;case i.PAGE_DOWN:return this._repeat(null,-o.page,t),!0}return!1},_uiSpinnerHtml:function(){return"<span class='ui-spinner ui-widget ui-widget-content ui-corner-all'></span>"},_buttonHtml:function(){return"<a class='ui-spinner-button ui-spinner-up ui-corner-tr'><span class='ui-icon "+this.options.icons.up+"'>&#9650;</span></a><a class='ui-spinner-button ui-spinner-down ui-corner-br'><span class='ui-icon "+this.options.icons.down+"'>&#9660;</span></a>"},_start:function(e){return this.spinning||this._trigger("start",e)!==!1?(this.counter||(this.counter=1),this.spinning=!0,!0):!1},_repeat:function(e,t,o){e=e||500,clearTimeout(this.timer),this.timer=this._delay(function(){this._repeat(40,t,o)},e),this._spin(t*this.options.step,o)},_spin:function(e,t){var o=this.value()||0;this.counter||(this.counter=1),o=this._adjustValue(o+e*this._increment(this.counter)),this.spinning&&this._trigger("spin",t,{value:o})===!1||(this._value(o),this.counter++)},_increment:function(t){var o=this.options.incremental;return o?e.isFunction(o)?o(t):Math.floor(t*t*t/5e4-t*t/500+17*t/200+1):1},_precision:function(){var e=this._precisionOf(this.options.step);return null!==this.options.min&&(e=Math.max(e,this._precisionOf(this.options.min))),e},_precisionOf:function(e){var t=""+e,o=t.indexOf(".");return-1===o?0:t.length-o-1},_adjustValue:function(e){var t,o,i=this.options;return t=null!==i.min?i.min:0,o=e-t,o=Math.round(o/i.step)*i.step,e=t+o,e=parseFloat(e.toFixed(this._precision())),null!==i.max&&e>i.max?i.max:null!==i.min&&i.min>e?i.min:e},_stop:function(e){this.spinning&&(clearTimeout(this.timer),clearTimeout(this.mousewheelTimer),this.counter=0,this.spinning=!1,this._trigger("stop",e))},_setOption:function(e,t){if("culture"===e||"numberFormat"===e){var o=this._parse(this.element.val());return this.options[e]=t,void this.element.val(this._format(o))}("max"===e||"min"===e||"step"===e)&&"string"==typeof t&&(t=this._parse(t)),"icons"===e&&(this.buttons.first().find(".ui-icon").removeClass(this.options.icons.up).addClass(t.up),this.buttons.last().find(".ui-icon").removeClass(this.options.icons.down).addClass(t.down)),this._super(e,t),"disabled"===e&&(this.widget().toggleClass("ui-state-disabled",!!t),this.element.prop("disabled",!!t),this.buttons.button(t?"disable":"enable"))},_setOptions:l(function(e){this._super(e)}),_parse:function(e){return"string"==typeof e&&""!==e&&(e=window.Globalize&&this.options.numberFormat?Globalize.parseFloat(e,10,this.options.culture):+e),""===e||isNaN(e)?null:e},_format:function(e){return""===e?"":window.Globalize&&this.options.numberFormat?Globalize.format(e,this.options.numberFormat,this.options.culture):e},_refresh:function(){this.element.attr({"aria-valuemin":this.options.min,"aria-valuemax":this.options.max,"aria-valuenow":this._parse(this.element.val())})},isValid:function(){var e=this.value();return null===e?!1:e===this._adjustValue(e)},_value:function(e,t){var o;""!==e&&(o=this._parse(e),null!==o&&(t||(o=this._adjustValue(o)),e=this._format(o))),this.element.val(e),this._refresh()},_destroy:function(){this.element.removeClass("ui-spinner-input").prop("disabled",!1).removeAttr("autocomplete").removeAttr("role").removeAttr("aria-valuemin").removeAttr("aria-valuemax").removeAttr("aria-valuenow"),this.uiSpinner.replaceWith(this.element)},stepUp:l(function(e){this._stepUp(e)}),_stepUp:function(e){this._start()&&(this._spin((e||1)*this.options.step),this._stop())},stepDown:l(function(e){this._stepDown(e)}),_stepDown:function(e){this._start()&&(this._spin((e||1)*-this.options.step),this._stop())},pageUp:l(function(e){this._stepUp((e||1)*this.options.page)}),pageDown:l(function(e){this._stepDown((e||1)*this.options.page)}),value:function(e){return arguments.length?void l(this._value).call(this,e):this._parse(this.element.val())},widget:function(){return this.uiSpinner}}),e.widget("ui.tabs",{version:"1.11.4",delay:300,options:{active:null,collapsible:!1,event:"click",heightStyle:"content",hide:null,show:null,activate:null,beforeActivate:null,beforeLoad:null,load:null},_isLocal:function(){var e=/#.*$/;return function(t){var o,i;t=t.cloneNode(!1),o=t.href.replace(e,""),i=location.href.replace(e,"");try{o=decodeURIComponent(o)}catch(n){}try{i=decodeURIComponent(i)}catch(n){}return t.hash.length>1&&o===i}}(),_create:function(){var t=this,o=this.options;this.running=!1,this.element.addClass("ui-tabs ui-widget ui-widget-content ui-corner-all").toggleClass("ui-tabs-collapsible",o.collapsible),this._processTabs(),o.active=this._initialActive(),e.isArray(o.disabled)&&(o.disabled=e.unique(o.disabled.concat(e.map(this.tabs.filter(".ui-state-disabled"),function(e){return t.tabs.index(e)}))).sort()),this.active=this.options.active!==!1&&this.anchors.length?this._findActive(o.active):e(),this._refresh(),this.active.length&&this.load(o.active)},_initialActive:function(){var t=this.options.active,o=this.options.collapsible,i=location.hash.substring(1);return null===t&&(i&&this.tabs.each(function(o,n){return e(n).attr("aria-controls")===i?(t=o,!1):void 0}),null===t&&(t=this.tabs.index(this.tabs.filter(".ui-tabs-active"))),(null===t||-1===t)&&(t=this.tabs.length?0:!1)),t!==!1&&(t=this.tabs.index(this.tabs.eq(t)),-1===t&&(t=o?!1:0)),!o&&t===!1&&this.anchors.length&&(t=0),t},_getCreateEventData:function(){return{tab:this.active,panel:this.active.length?this._getPanelForTab(this.active):e()}},_tabKeydown:function(t){var o=e(this.document[0].activeElement).closest("li"),i=this.tabs.index(o),n=!0;if(!this._handlePageNav(t)){switch(t.keyCode){case e.ui.keyCode.RIGHT:case e.ui.keyCode.DOWN:i++;break;case e.ui.keyCode.UP:case e.ui.keyCode.LEFT:n=!1,i--;break;case e.ui.keyCode.END:i=this.anchors.length-1;break;case e.ui.keyCode.HOME:i=0;break;case e.ui.keyCode.SPACE:return t.preventDefault(),clearTimeout(this.activating),void this._activate(i);case e.ui.keyCode.ENTER:return t.preventDefault(),clearTimeout(this.activating),void this._activate(i===this.options.active?!1:i);default:return}t.preventDefault(),clearTimeout(this.activating),i=this._focusNextTab(i,n),t.ctrlKey||t.metaKey||(o.attr("aria-selected","false"),this.tabs.eq(i).attr("aria-selected","true"),this.activating=this._delay(function(){this.option("active",i)},this.delay))}},_panelKeydown:function(t){this._handlePageNav(t)||t.ctrlKey&&t.keyCode===e.ui.keyCode.UP&&(t.preventDefault(),this.active.focus())},_handlePageNav:function(t){return t.altKey&&t.keyCode===e.ui.keyCode.PAGE_UP?(this._activate(this._focusNextTab(this.options.active-1,!1)),!0):t.altKey&&t.keyCode===e.ui.keyCode.PAGE_DOWN?(this._activate(this._focusNextTab(this.options.active+1,!0)),!0):void 0},_findNextTab:function(t,o){function i(){return t>n&&(t=0),0>t&&(t=n),t}for(var n=this.tabs.length-1;-1!==e.inArray(i(),this.options.disabled);)t=o?t+1:t-1;return t},_focusNextTab:function(e,t){return e=this._findNextTab(e,t),this.tabs.eq(e).focus(),e},_setOption:function(e,t){return"active"===e?void this._activate(t):"disabled"===e?void this._setupDisabled(t):(this._super(e,t),"collapsible"===e&&(this.element.toggleClass("ui-tabs-collapsible",t),t||this.options.active!==!1||this._activate(0)),"event"===e&&this._setupEvents(t),void("heightStyle"===e&&this._setupHeightStyle(t)))},_sanitizeSelector:function(e){return e?e.replace(/[!"$%&'()*+,.\/:;<=>?@\[\]\^`{|}~]/g,"\\$&"):""},refresh:function(){var t=this.options,o=this.tablist.children(":has(a[href])");t.disabled=e.map(o.filter(".ui-state-disabled"),function(e){return o.index(e)}),this._processTabs(),t.active!==!1&&this.anchors.length?this.active.length&&!e.contains(this.tablist[0],this.active[0])?this.tabs.length===t.disabled.length?(t.active=!1,this.active=e()):this._activate(this._findNextTab(Math.max(0,t.active-1),!1)):t.active=this.tabs.index(this.active):(t.active=!1,this.active=e()),this._refresh()},_refresh:function(){this._setupDisabled(this.options.disabled),this._setupEvents(this.options.event),this._setupHeightStyle(this.options.heightStyle),this.tabs.not(this.active).attr({"aria-selected":"false","aria-expanded":"false",tabIndex:-1}),this.panels.not(this._getPanelForTab(this.active)).hide().attr({"aria-hidden":"true"}),this.active.length?(this.active.addClass("ui-tabs-active ui-state-active").attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0}),this._getPanelForTab(this.active).show().attr({"aria-hidden":"false"})):this.tabs.eq(0).attr("tabIndex",0)},_processTabs:function(){var t=this,o=this.tabs,i=this.anchors,n=this.panels;this.tablist=this._getList().addClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all").attr("role","tablist").delegate("> li","mousedown"+this.eventNamespace,function(t){e(this).is(".ui-state-disabled")&&t.preventDefault()}).delegate(".ui-tabs-anchor","focus"+this.eventNamespace,function(){e(this).closest("li").is(".ui-state-disabled")&&this.blur()}),this.tabs=this.tablist.find("> li:has(a[href])").addClass("ui-state-default ui-corner-top").attr({role:"tab",tabIndex:-1}),this.anchors=this.tabs.map(function(){return e("a",this)[0]}).addClass("ui-tabs-anchor").attr({role:"presentation",tabIndex:-1}),this.panels=e(),this.anchors.each(function(o,i){var n,r,a,s=e(i).uniqueId().attr("id"),l=e(i).closest("li"),c=l.attr("aria-controls");t._isLocal(i)?(n=i.hash,a=n.substring(1),r=t.element.find(t._sanitizeSelector(n))):(a=l.attr("aria-controls")||e({}).uniqueId()[0].id,n="#"+a,r=t.element.find(n),r.length||(r=t._createPanel(a),r.insertAfter(t.panels[o-1]||t.tablist)),r.attr("aria-live","polite")),r.length&&(t.panels=t.panels.add(r)),c&&l.data("ui-tabs-aria-controls",c),l.attr({"aria-controls":a,"aria-labelledby":s}),r.attr("aria-labelledby",s)}),this.panels.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom").attr("role","tabpanel"),o&&(this._off(o.not(this.tabs)),this._off(i.not(this.anchors)),this._off(n.not(this.panels)))},_getList:function(){return this.tablist||this.element.find("ol,ul").eq(0)},_createPanel:function(t){return e("<div>").attr("id",t).addClass("ui-tabs-panel ui-widget-content ui-corner-bottom").data("ui-tabs-destroy",!0)},_setupDisabled:function(t){e.isArray(t)&&(t.length?t.length===this.anchors.length&&(t=!0):t=!1);for(var o,i=0;o=this.tabs[i];i++)t===!0||-1!==e.inArray(i,t)?e(o).addClass("ui-state-disabled").attr("aria-disabled","true"):e(o).removeClass("ui-state-disabled").removeAttr("aria-disabled");this.options.disabled=t},_setupEvents:function(t){var o={};t&&e.each(t.split(" "),function(e,t){o[t]="_eventHandler"}),this._off(this.anchors.add(this.tabs).add(this.panels)),this._on(!0,this.anchors,{click:function(e){e.preventDefault()}}),this._on(this.anchors,o),this._on(this.tabs,{keydown:"_tabKeydown"}),this._on(this.panels,{keydown:"_panelKeydown"}),this._focusable(this.tabs),this._hoverable(this.tabs)},_setupHeightStyle:function(t){var o,i=this.element.parent();"fill"===t?(o=i.height(),o-=this.element.outerHeight()-this.element.height(),this.element.siblings(":visible").each(function(){var t=e(this),i=t.css("position");"absolute"!==i&&"fixed"!==i&&(o-=t.outerHeight(!0))}),this.element.children().not(this.panels).each(function(){o-=e(this).outerHeight(!0)}),this.panels.each(function(){e(this).height(Math.max(0,o-e(this).innerHeight()+e(this).height()))}).css("overflow","auto")):"auto"===t&&(o=0,this.panels.each(function(){o=Math.max(o,e(this).height("").height())}).height(o))},_eventHandler:function(t){var o=this.options,i=this.active,n=e(t.currentTarget),r=n.closest("li"),a=r[0]===i[0],s=a&&o.collapsible,l=s?e():this._getPanelForTab(r),c=i.length?this._getPanelForTab(i):e(),u={oldTab:i,oldPanel:c,newTab:s?e():r,newPanel:l};t.preventDefault(),r.hasClass("ui-state-disabled")||r.hasClass("ui-tabs-loading")||this.running||a&&!o.collapsible||this._trigger("beforeActivate",t,u)===!1||(o.active=s?!1:this.tabs.index(r),this.active=a?e():r,this.xhr&&this.xhr.abort(),c.length||l.length||e.error("jQuery UI Tabs: Mismatching fragment identifier."),l.length&&this.load(this.tabs.index(r),t),this._toggle(t,u))},_toggle:function(t,o){function i(){r.running=!1,r._trigger("activate",t,o)}function n(){o.newTab.closest("li").addClass("ui-tabs-active ui-state-active"),a.length&&r.options.show?r._show(a,r.options.show,i):(a.show(),i())}var r=this,a=o.newPanel,s=o.oldPanel;this.running=!0,s.length&&this.options.hide?this._hide(s,this.options.hide,function(){o.oldTab.closest("li").removeClass("ui-tabs-active ui-state-active"),n()}):(o.oldTab.closest("li").removeClass("ui-tabs-active ui-state-active"),s.hide(),n()),s.attr("aria-hidden","true"),o.oldTab.attr({"aria-selected":"false","aria-expanded":"false"}),a.length&&s.length?o.oldTab.attr("tabIndex",-1):a.length&&this.tabs.filter(function(){return 0===e(this).attr("tabIndex")}).attr("tabIndex",-1),a.attr("aria-hidden","false"),o.newTab.attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0})},_activate:function(t){var o,i=this._findActive(t);i[0]!==this.active[0]&&(i.length||(i=this.active),o=i.find(".ui-tabs-anchor")[0],this._eventHandler({target:o,currentTarget:o,preventDefault:e.noop}))},_findActive:function(t){return t===!1?e():this.tabs.eq(t)},_getIndex:function(e){return"string"==typeof e&&(e=this.anchors.index(this.anchors.filter("[href$='"+e+"']"))),e},_destroy:function(){this.xhr&&this.xhr.abort(),this.element.removeClass("ui-tabs ui-widget ui-widget-content ui-corner-all ui-tabs-collapsible"),this.tablist.removeClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all").removeAttr("role"),this.anchors.removeClass("ui-tabs-anchor").removeAttr("role").removeAttr("tabIndex").removeUniqueId(),this.tablist.unbind(this.eventNamespace),this.tabs.add(this.panels).each(function(){e.data(this,"ui-tabs-destroy")?e(this).remove():e(this).removeClass("ui-state-default ui-state-active ui-state-disabled ui-corner-top ui-corner-bottom ui-widget-content ui-tabs-active ui-tabs-panel").removeAttr("tabIndex").removeAttr("aria-live").removeAttr("aria-busy").removeAttr("aria-selected").removeAttr("aria-labelledby").removeAttr("aria-hidden").removeAttr("aria-expanded").removeAttr("role")}),this.tabs.each(function(){var t=e(this),o=t.data("ui-tabs-aria-controls");o?t.attr("aria-controls",o).removeData("ui-tabs-aria-controls"):t.removeAttr("aria-controls")}),this.panels.show(),"content"!==this.options.heightStyle&&this.panels.css("height","")},enable:function(t){var o=this.options.disabled;o!==!1&&(void 0===t?o=!1:(t=this._getIndex(t),o=e.isArray(o)?e.map(o,function(e){return e!==t?e:null}):e.map(this.tabs,function(e,o){return o!==t?o:null})),this._setupDisabled(o))},disable:function(t){var o=this.options.disabled;if(o!==!0){if(void 0===t)o=!0;else{if(t=this._getIndex(t),-1!==e.inArray(t,o))return;o=e.isArray(o)?e.merge([t],o).sort():[t]}this._setupDisabled(o)}},load:function(t,o){t=this._getIndex(t);var i=this,n=this.tabs.eq(t),r=n.find(".ui-tabs-anchor"),a=this._getPanelForTab(n),s={tab:n,panel:a},l=function(e,t){"abort"===t&&i.panels.stop(!1,!0),n.removeClass("ui-tabs-loading"),a.removeAttr("aria-busy"),e===i.xhr&&delete i.xhr};this._isLocal(r[0])||(this.xhr=e.ajax(this._ajaxSettings(r,o,s)),this.xhr&&"canceled"!==this.xhr.statusText&&(n.addClass("ui-tabs-loading"),a.attr("aria-busy","true"),this.xhr.done(function(e,t,n){setTimeout(function(){a.html(e),i._trigger("load",o,s),l(n,t)},1)}).fail(function(e,t){setTimeout(function(){l(e,t)},1)})))},_ajaxSettings:function(t,o,i){var n=this;return{url:t.attr("href"),beforeSend:function(t,r){return n._trigger("beforeLoad",o,e.extend({jqXHR:t,ajaxSettings:r},i))}}},_getPanelForTab:function(t){var o=e(t).attr("aria-controls");return this.element.find(this._sanitizeSelector("#"+o))}}),e.widget("ui.tooltip",{version:"1.11.4",options:{content:function(){var t=e(this).attr("title")||"";return e("<a>").text(t).html()},hide:!0,items:"[title]:not([disabled])",position:{my:"left top+15",at:"left bottom",collision:"flipfit flip"},show:!0,tooltipClass:null,track:!1,close:null,open:null},_addDescribedBy:function(t,o){var i=(t.attr("aria-describedby")||"").split(/\s+/);i.push(o),t.data("ui-tooltip-id",o).attr("aria-describedby",e.trim(i.join(" ")))},_removeDescribedBy:function(t){var o=t.data("ui-tooltip-id"),i=(t.attr("aria-describedby")||"").split(/\s+/),n=e.inArray(o,i);
--1!==n&&i.splice(n,1),t.removeData("ui-tooltip-id"),i=e.trim(i.join(" ")),i?t.attr("aria-describedby",i):t.removeAttr("aria-describedby")},_create:function(){this._on({mouseover:"open",focusin:"open"}),this.tooltips={},this.parents={},this.options.disabled&&this._disable(),this.liveRegion=e("<div>").attr({role:"log","aria-live":"assertive","aria-relevant":"additions"}).addClass("ui-helper-hidden-accessible").appendTo(this.document[0].body)},_setOption:function(t,o){var i=this;return"disabled"===t?(this[o?"_disable":"_enable"](),void(this.options[t]=o)):(this._super(t,o),void("content"===t&&e.each(this.tooltips,function(e,t){i._updateContent(t.element)})))},_disable:function(){var t=this;e.each(this.tooltips,function(o,i){var n=e.Event("blur");n.target=n.currentTarget=i.element[0],t.close(n,!0)}),this.element.find(this.options.items).addBack().each(function(){var t=e(this);t.is("[title]")&&t.data("ui-tooltip-title",t.attr("title")).removeAttr("title")})},_enable:function(){this.element.find(this.options.items).addBack().each(function(){var t=e(this);t.data("ui-tooltip-title")&&t.attr("title",t.data("ui-tooltip-title"))})},open:function(t){var o=this,i=e(t?t.target:this.element).closest(this.options.items);i.length&&!i.data("ui-tooltip-id")&&(i.attr("title")&&i.data("ui-tooltip-title",i.attr("title")),i.data("ui-tooltip-open",!0),t&&"mouseover"===t.type&&i.parents().each(function(){var t,i=e(this);i.data("ui-tooltip-open")&&(t=e.Event("blur"),t.target=t.currentTarget=this,o.close(t,!0)),i.attr("title")&&(i.uniqueId(),o.parents[this.id]={element:this,title:i.attr("title")},i.attr("title",""))}),this._registerCloseHandlers(t,i),this._updateContent(i,t))},_updateContent:function(e,t){var o,i=this.options.content,n=this,r=t?t.type:null;return"string"==typeof i?this._open(t,e,i):(o=i.call(e[0],function(o){n._delay(function(){e.data("ui-tooltip-open")&&(t&&(t.type=r),this._open(t,e,o))})}),void(o&&this._open(t,e,o)))},_open:function(t,o,i){function n(e){c.of=e,a.is(":hidden")||a.position(c)}var r,a,s,l,c=e.extend({},this.options.position);if(i){if(r=this._find(o))return void r.tooltip.find(".ui-tooltip-content").html(i);o.is("[title]")&&(t&&"mouseover"===t.type?o.attr("title",""):o.removeAttr("title")),r=this._tooltip(o),a=r.tooltip,this._addDescribedBy(o,a.attr("id")),a.find(".ui-tooltip-content").html(i),this.liveRegion.children().hide(),i.clone?(l=i.clone(),l.removeAttr("id").find("[id]").removeAttr("id")):l=i,e("<div>").html(l).appendTo(this.liveRegion),this.options.track&&t&&/^mouse/.test(t.type)?(this._on(this.document,{mousemove:n}),n(t)):a.position(e.extend({of:o},this.options.position)),a.hide(),this._show(a,this.options.show),this.options.show&&this.options.show.delay&&(s=this.delayedShow=setInterval(function(){a.is(":visible")&&(n(c.of),clearInterval(s))},e.fx.interval)),this._trigger("open",t,{tooltip:a})}},_registerCloseHandlers:function(t,o){var i={keyup:function(t){if(t.keyCode===e.ui.keyCode.ESCAPE){var i=e.Event(t);i.currentTarget=o[0],this.close(i,!0)}}};o[0]!==this.element[0]&&(i.remove=function(){this._removeTooltip(this._find(o).tooltip)}),t&&"mouseover"!==t.type||(i.mouseleave="close"),t&&"focusin"!==t.type||(i.focusout="close"),this._on(!0,o,i)},close:function(t){var o,i=this,n=e(t?t.currentTarget:this.element),r=this._find(n);return r?(o=r.tooltip,void(r.closing||(clearInterval(this.delayedShow),n.data("ui-tooltip-title")&&!n.attr("title")&&n.attr("title",n.data("ui-tooltip-title")),this._removeDescribedBy(n),r.hiding=!0,o.stop(!0),this._hide(o,this.options.hide,function(){i._removeTooltip(e(this))}),n.removeData("ui-tooltip-open"),this._off(n,"mouseleave focusout keyup"),n[0]!==this.element[0]&&this._off(n,"remove"),this._off(this.document,"mousemove"),t&&"mouseleave"===t.type&&e.each(this.parents,function(t,o){e(o.element).attr("title",o.title),delete i.parents[t]}),r.closing=!0,this._trigger("close",t,{tooltip:o}),r.hiding||(r.closing=!1)))):void n.removeData("ui-tooltip-open")},_tooltip:function(t){var o=e("<div>").attr("role","tooltip").addClass("ui-tooltip ui-widget ui-corner-all ui-widget-content "+(this.options.tooltipClass||"")),i=o.uniqueId().attr("id");return e("<div>").addClass("ui-tooltip-content").appendTo(o),o.appendTo(this.document[0].body),this.tooltips[i]={element:t,tooltip:o}},_find:function(e){var t=e.data("ui-tooltip-id");return t?this.tooltips[t]:null},_removeTooltip:function(e){e.remove(),delete this.tooltips[e.attr("id")]},_destroy:function(){var t=this;e.each(this.tooltips,function(o,i){var n=e.Event("blur"),r=i.element;n.target=n.currentTarget=r[0],t.close(n,!0),e("#"+o).remove(),r.data("ui-tooltip-title")&&(r.attr("title")||r.attr("title",r.data("ui-tooltip-title")),r.removeData("ui-tooltip-title"))}),this.liveRegion.remove()}})});
-//# sourceMappingURL=ethercalc.js.map
\ No newline at end of file
+!function(e,t){"function"==typeof define&&define.amd?define([],t.bind(e,this)):"object"==typeof module&&module.exports?module.exports=t.call(e,this):e.SocialCalc=t.call(e,this)}(this,function(M){var Re;return(Re=Re||{}).Constants={cellDataType:{v:"value",n:"value",t:"text",f:"formula",c:"constant"},textdatadefaulttype:"t",s_BrowserNotSupported:"Browser not supported.",s_InternalError:"Internal SocialCalc error (probably an internal bug): ",s_pssUnknownColType:"Unknown col type item",s_pssUnknownRowType:"Unknown row type item",s_pssUnknownLineType:"Unknown line type",s_cfspUnknownCellType:"Unknown cell type item",doCanonicalizeSheet:!0,s_escUnknownSheetCmd:"Unknown sheet command: ",s_escUnknownSetCoordCmd:"Unknown set coord command: ",s_escUnknownCmd:"Unknown command: ",s_caccCircRef:"Circular reference to ",defaultRowNameWidth:"30",defaultAssumedRowHeight:15,defaultCellIDPrefix:"cell_",defaultCellLayout:"padding:2px 2px 1px 2px;vertical-align:top;",defaultCellFontStyle:"normal normal",defaultCellFontSize:"small",defaultCellFontFamily:"Verdana,Arial,Helvetica,sans-serif",defaultPaneDividerWidth:"3",defaultPaneDividerHeight:"3",defaultGridCSS:"1px solid #C0C0C0;",defaultCommentClass:"",defaultCommentStyle:"background-repeat:no-repeat;background-position:top right;background-image:url(images/sc-commentbg.gif);",defaultCommentNoGridClass:"",defaultCommentNoGridStyle:"",defaultReadonlyClass:"",defaultReadonlyStyle:"background-repeat:no-repeat;background-position:top right;background-image:url(images/sc-lockbg.gif);",defaultReadonlyNoGridClass:"",defaultReadonlyNoGridStyle:"",defaultReadonlyComment:"Locked cell",defaultColWidth:"80",defaultMinimumColWidth:10,defaultHighlightTypeCursorClass:"",defaultHighlightTypeCursorStyle:"color:#FFF;backgroundColor:#A6A6A6;",defaultHighlightTypeRangeClass:"",defaultHighlightTypeRangeStyle:"color:#000;backgroundColor:#E5E5E5;",defaultColnameClass:"",defaultColnameStyle:"overflow:visible;font-size:small;text-align:center;color:#FFFFFF;background-color:#808080;",defaultSelectedColnameClass:"",defaultSelectedColnameStyle:"overflow:visible;font-size:small;text-align:center;color:#FFFFFF;background-color:#404040;",defaultRownameClass:"",defaultRownameStyle:"position:relative;overflow:visible;font-size:small;text-align:right;color:#FFFFFF;background-color:#808080;",defaultSelectedRownameClass:"",defaultSelectedRownameStyle:"position:relative;overflow:visible;font-size:small;text-align:right;color:#FFFFFF;background-color:#404040;",defaultUpperLeftClass:"",defaultUpperLeftStyle:"font-size:small;",defaultSkippedCellClass:"",defaultSkippedCellStyle:"font-size:small;background-color:#CCC",defaultPaneDividerClass:"",defaultPaneDividerStyle:"font-size:small;background-color:#C0C0C0;padding:0px;",defaultUnhideLeftClass:"",defaultUnhideLeftStyle:"float:right;width:9px;height:12px;cursor:pointer;background-image:url(images/sc-unhideleft.gif);padding:0;",defaultUnhideRightClass:"",defaultUnhideRightStyle:"float:left;width:9px;height:12px;cursor:pointer;background-image:url(images/sc-unhideright.gif);padding:0;",defaultUnhideTopClass:"",defaultUnhideTopStyle:"float:left;left:1px;position:absolute;bottom:-4px;width:12px;height:9px;cursor:pointer;background-image:url(images/sc-unhidetop.gif);padding:0;",defaultUnhideBottomClass:"",defaultUnhideBottomStyle:"float:left;width:12px;height:9px;cursor:pointer;background-image:url(images/sc-unhidebottom.gif);padding:0;",defaultColResizeBarClass:"col-resize-bar",defaultRowResizeBarClass:"row-resize-bar",s_rcMissingSheet:"Render Context must have a sheet object",defaultLinkFormatString:'<span style="font-size:smaller;text-decoration:none !important;background-color:#66B;color:#FFF;">Link</span>',defaultPageLinkFormatString:'<span style="font-size:smaller;text-decoration:none !important;background-color:#66B;color:#FFF;">Page</span>',defaultFormatp:"#,##0.0%",defaultFormatc:"[$$]#,##0.00",defaultFormatdt:"d-mmm-yyyy h:mm:ss",defaultFormatd:"d-mmm-yyyy",defaultFormatt:"[h]:mm:ss",defaultDisplayTRUE:"TRUE",defaultDisplayFALSE:"FALSE",defaultImagePrefix:"images/sc_",defaultTableEditorIDPrefix:"te_",defaultPageUpDnAmount:15,AllowCtrlS:!0,defaultTableControlThickness:20,cteGriddivClass:"",s_statusline_executing:"Executing...",s_statusline_displaying:"Displaying...",s_statusline_ordering:"Ordering...",s_statusline_calculating:"Calculating...",s_statusline_calculatingls:"Calculating... Loading Sheet...",s_statusline_doingserverfunc:"doing server function ",s_statusline_incell:" in cell ",s_statusline_calcstart:"Calculation start...",s_statusline_sum:"SUM",s_statusline_recalcneeded:'<span style="color:#999;">(Recalc needed)</span>',s_statusline_circref:'<span style="color:red;">Circular reference: ',s_statusline_sendemail:"Sending Email ",s_inputboxdisplaymultilinetext:"[Multi-line text: Click icon on right to edit]",defaultInputEchoClass:"",defaultInputEchoStyle:"filter:alpha(opacity=90);opacity:.9;backgroundColor:#FFD;border:1px solid #884;fontSize:small;padding:2px 10px 1px 2px;cursor:default;",defaultInputEchoPromptClass:"",defaultInputEchoPromptStyle:"filter:alpha(opacity=90);opacity:.9;backgroundColor:#FFD;borderLeft:1px solid #884;borderRight:1px solid #884;borderBottom:1px solid #884;fontSize:small;fontStyle:italic;padding:2px 10px 1px 2px;cursor:default;",defaultInputEchoHintClass:"",defaultInputEchoHintStyle:"filter:alpha(opacity=80);opacity:.8;backgroundColor:#884;border:1px solid #884;fontSize:small;fontWeight:bold;padding:2px 2px 2px 2px;color:#FFF;position:absolute;top:-20px;cursor:default;",ietUnknownFunction:"Unknown function ",CH_radius1:29,CH_radius2:41,s_CHfillAllTooltip:"Fill Contents and Formats Down/Right",s_CHfillContentsTooltip:"Fill Contents Only Down/Right",s_CHmovePasteAllTooltip:"Move Contents and Formats",s_CHmovePasteContentsTooltip:"Move Contents Only",s_CHmoveInsertAllTooltip:"Slide Contents and Formats within Row/Col",s_CHmoveInsertContentsTooltip:"Slide Contents within Row/Col",s_CHindicatorOperationLookup:{Fill:"Fill",FillC:"Fill Contents",Move:"Move",MoveI:"Slide",MoveC:"Move Contents",MoveIC:"Slide Contents"},s_CHindicatorDirectionLookup:{Down:" Down",Right:" Right",Horizontal:" Horizontal",Vertical:" Vertical"},defaultTCSliderThickness:9,defaultTCButtonThickness:20,defaultTCThumbThickness:15,TCmainStyle:"backgroundColor:#EEE;",TCmainClass:"",TCendcapStyle:"backgroundColor:#FFF;",TCendcapClass:"",TCpanesliderClass:"tc-paneslider",s_panesliderTooltiph:"Drag to lock pane vertically",s_panesliderTooltipv:"Drag to lock pane horizontally",TClessbuttonStyle:"backgroundColor:#AAA;",TClessbuttonClass:"",TClessbuttonRepeatWait:300,TClessbuttonRepeatInterval:20,TCmorebuttonStyle:"backgroundColor:#AAA;",TCmorebuttonClass:"",TCmorebuttonRepeatWait:300,TCmorebuttonRepeatInterval:20,TCscrollareaStyle:"backgroundColor:#DDD;",TCscrollareaClass:"",TCscrollareaRepeatWait:500,TCscrollareaRepeatInterval:100,TCthumbClass:"",TCthumbStyle:"backgroundColor:#CCC;",TCPStrackinglineClass:"tracklingine",TCPStrackinglineStyle:"overflow:hidden;position:absolute;zIndex:100;",TCPStrackinglineThickness:"2px",TCTDFSthumbstatusvClass:"",TCTDFSthumbstatusvStyle:"height:20px;width:auto;border:3px solid #808080;overflow:hidden;backgroundColor:#FFF;fontSize:small;position:absolute;zIndex:100;",TCTDFSthumbstatushClass:"",TCTDFSthumbstatushStyle:"height:20px;width:auto;border:1px solid black;padding:2px;backgroundColor:#FFF;fontSize:small;position:absolute;zIndex:100;",TCTDFSthumbstatusrownumClass:"",TCTDFSthumbstatusrownumStyle:"color:#FFF;background-color:#808080;font-size:small;white-space:nowrap;padding:3px;",TCTDFStopOffsetv:0,TCTDFSleftOffsetv:-80,s_TCTDFthumbstatusPrefixv:"Row ",TCTDFStopOffseth:-30,TCTDFSleftOffseth:0,s_TCTDFthumbstatusPrefixh:"Col ",TooltipOffsetX:2,TooltipOffsetY:10,TDpopupElementClass:"",TDpopupElementStyle:"border:1px solid black;padding:1px 2px 2px 2px;textAlign:center;backgroundColor:#FFF;fontSize:7pt;fontFamily:Verdana,Arial,Helvetica,sans-serif;position:absolute;width:auto;zIndex:110;",SCToolbarbackground:"background-color:#ffffff;",SCTabbackground:"background-color:#CCC;",SCTabselectedCSS:"font-size:small;padding:6px 30px 6px 8px;color:#FFF;background-color:#404040;cursor:default;border-right:1px solid #CCC;",SCTabplainCSS:"font-size:small;padding:6px 30px 6px 8px;color:#FFF;background-color:#808080;cursor:default;border-right:1px solid #CCC;",SCToolbartext:"font-size:x-small;font-weight:bold;color:#888",SCFormulabarheight:30,SCStatuslineheight:20,SCStatuslineCSS:"font-size:10px;padding:3px 0px;",SCFormatNumberFormats:"[cancel]:|[break]:|%loc!Default!:|[custom]:|%loc!Automatic!:general|%loc!Auto w/ commas!:[,]General|[break]:|00:00|000:000|0000:0000|00000:00000|[break]:|%loc!Formula!:formula|%loc!Hidden!:hidden|[newcol]:1234:0|1,234:#,##0|1,234.5:#,##0.0|1,234.56:#,##0.00|1,234.567:#,##0.000|1,234.5678:#,##0.0000|[break]:|1,234%:#,##0%|1,234.5%:#,##0.0%|1,234.56%:#,##0.00%|[newcol]:|$1,234:$#,##0|$1,234.5:$#,##0.0|$1,234.56:$#,##0.00|[break]:|(1,234):#,##0_);(#,##0)|(1,234.5):#,##0.0_);(#,##0.0)|(1,234.56):#,##0.00_);(#,##0.00)|[break]:|($1,234):$#,##0_);($#,##0)|($1,234.5):$#,##0.0_);($#,##0.0)|($1,234.56):$#,##0.00_);($#,##0.00)|[newcol]:|1/4/06:m/d/yy|01/04/2006:mm/dd/yyyy|2006-01-04:yyyy-mm-dd|4-Jan-06:d-mmm-yy|04-Jan-2006:dd-mmm-yyyy|January 4, 2006:mmmm d, yyyy|[break]:|1\\c23:h:mm|1\\c23 PM:h:mm AM/PM|1\\c23\\c45:h:mm:ss|01\\c23\\c45:hh:mm:ss|26\\c23 (h\\cm):[hh]:mm|69\\c45 (m\\cs):[mm]:ss|69 (s):[ss]|[newcol]:|2006-01-04 01\\c23\\c45:yyyy-mm-dd hh:mm:ss|January 4, 2006:mmmm d, yyyy hh:mm:ss|Wed:ddd|Wednesday:dddd|",SCFormatTextFormats:"[cancel]:|[break]:|%loc!Default!:|[custom]:|%loc!Automatic!:general|%loc!Plain Text!:text-plain|HTML:text-html|%loc!Wikitext!:text-wiki|%loc!Link!:text-link|%loc!Formula!:formula|%loc!Hidden!:hidden|",SCFormatPadsizes:"[cancel]:|[break]:|%loc!Default!:|[custom]:|%loc!No padding!:0px|[newcol]:|1 pixel:1px|2 pixels:2px|3 pixels:3px|4 pixels:4px|5 pixels:5px|6 pixels:6px|7 pixels:7px|8 pixels:8px|[newcol]:|9 pixels:9px|10 pixels:10px|11 pixels:11px|12 pixels:12px|13 pixels:13px|14 pixels:14px|16 pixels:16px|18 pixels:18px|[newcol]:|20 pixels:20px|22 pixels:22px|24 pixels:24px|28 pixels:28px|36 pixels:36px|",SCFormatFontsizes:"[cancel]:|[break]:|%loc!Default!:|[custom]:|X-Small:x-small|Small:small|Medium:medium|Large:large|X-Large:x-large|[newcol]:|6pt:6pt|7pt:7pt|8pt:8pt|9pt:9pt|10pt:10pt|11pt:11pt|12pt:12pt|14pt:14pt|16pt:16pt|[newcol]:|18pt:18pt|20pt:20pt|22pt:22pt|24pt:24pt|28pt:28pt|36pt:36pt|48pt:48pt|72pt:72pt|[newcol]:|8 pixels:8px|9 pixels:9px|10 pixels:10px|11 pixels:11px|12 pixels:12px|13 pixels:13px|14 pixels:14px|[newcol]:|16 pixels:16px|18 pixels:18px|20 pixels:20px|22 pixels:22px|24 pixels:24px|28 pixels:28px|36 pixels:36px|",SCFormatFontfamilies:"[cancel]:|[break]:|%loc!Default!:|[custom]:|Verdana:Verdana,Arial,Helvetica,sans-serif|Arial:arial,helvetica,sans-serif|Courier:'Courier New',Courier,monospace|",SCFormatFontlook:"[cancel]:|[break]:|%loc!Default!:|%loc!Normal!:normal normal|%loc!Bold!:normal bold|%loc!Italic!:italic normal|%loc!Bold Italic!:italic bold",SCFormatTextAlignhoriz:"[cancel]:|[break]:|%loc!Default!:|%loc!Left!:left|%loc!Center!:center|%loc!Right!:right|",SCFormatNumberAlignhoriz:"[cancel]:|[break]:|%loc!Default!:|%loc!Left!:left|%loc!Center!:center|%loc!Right!:right|",SCFormatAlignVertical:"[cancel]:|[break]:|%loc!Default!:|%loc!Top!:top|%loc!Middle!:middle|%loc!Bottom!:bottom|",SCFormatColwidth:"[cancel]:|[break]:|%loc!Default!:|[custom]:|[newcol]:|20 pixels:20|40:40|60:60|80:80|100:100|120:120|140:140|160:160|[newcol]:|180 pixels:180|200:200|220:220|240:240|260:260|280:280|300:300|",SCFormatRecalc:"[cancel]:|[break]:|%loc!Auto!:|%loc!Manual!:off|",SCFormatUserMaxCol:"[cancel]:|[break]:|%loc!Default!:|[custom]:|[newcol]:|Unlimited:0|10:10|20:20|30:30|40:40|50:50|60:60|80:80|100:100|",SCFormatUserMaxRow:"[cancel]:|[break]:|%loc!Default!:|[custom]:|[newcol]:|Unlimited:0|10:10|20:20|30:30|40:40|50:50|60:60|80:80|100:100|",ISCButtonNormalBackground:"transparent",ISCButtonBorderNormal:"none",ISCButtonBorderHover:"none",ISCButtonBorderDown:"none",ISCButtonDownBackground:"#888",s_PopupListCancel:"[Cancel]",s_PopupListCustom:"Custom",s_loc_align_center:"Align Center",s_loc_align_left:"Align Left",s_loc_align_right:"Align Right",s_loc_alignment:"Alignment",s_loc_audit:"Audit",s_loc_audit_trail_this_session:"Audit Trail This Session",s_loc_auto:"Auto",s_loc_auto_sum:"Auto Sum",s_loc_auto_wX_commas:"Auto w/ commas",s_loc_automatic:"Automatic",s_loc_background:"Background",s_loc_bold:"Bold",s_loc_bold_XampX_italics:"Bold &amp; Italics",s_loc_bold_italic:"Bold Italic",s_loc_borders:"Borders",s_loc_borders_off:"Borders Off",s_loc_borders_on:"Borders On",s_loc_bottom:"Bottom",s_loc_bottom_border:"Bottom Border",s_loc_cell_settings:"CELL SETTINGS",s_loc_csv_format:"CSV format",s_loc_cancel:"Cancel",s_loc_category:"Category",s_loc_center:"Center",s_loc_clear:"Clear",s_loc_clear_socialcalc_clipboard:"Clear SocialCalc Clipboard",s_loc_clipboard:"Clipboard",s_loc_color:"Color",s_loc_column_:"Column ",s_loc_comment:"Comment",s_loc_copy:"Copy",s_loc_custom:"Custom",s_loc_cut:"Cut",s_loc_default:"Default",s_loc_default_alignment:"Default Alignment",s_loc_default_column_width:"Default Column Width",s_loc_default_font:"Default Font",s_loc_default_format:"Default Format",s_loc_default_padding:"Default Padding",s_loc_delete:"Delete",s_loc_delete_column:"Delete Column",s_loc_delete_contents:"Delete Cell Contents",s_loc_delete_row:"Delete Row",s_loc_description:"Description",s_loc_display_clipboard_in:"Display Clipboard in",s_loc_down:"Down",s_loc_edit:"Edit",s_loc_existing_names:"Existing Names",s_loc_family:"Family",s_loc_fill_down:"Fill Down",s_loc_fill_right:"Fill Right",s_loc_font:"Font",s_loc_format:"Format",s_loc_formula:"Formula",s_loc_function_list:"Function List",s_loc_functions:"Functions",s_loc_grid:"Grid",s_loc_hidden:"Hidden",s_loc_hide_column:"Hide Column",s_loc_hide_row:"Hide Row",s_loc_horizontal:"Horizontal",s_loc_insert_column:"Insert Column Before",s_loc_insert_row:"Insert Row Before",s_loc_italic:"Italic",s_loc_last_sort:"Last Sort",s_loc_left:"Left",s_loc_left_border:"Left Border",s_loc_link:"Link",s_loc_link_input_box:"Link Input Box",s_loc_list:"List",s_loc_load_socialcalc_clipboard_with_this:"Load SocialCalc Clipboard With This",s_loc_lock_cell:"Lock Cell",s_loc_major_sort:"Major Sort",s_loc_manual:"Manual",s_loc_merge_cells:"Merge/Unmerge Cells",s_loc_middle:"Middle",s_loc_minor_sort:"Minor Sort",s_loc_move_insert:"Move Insert",s_loc_move_paste:"Move Paste",s_loc_multiXline_input_box:"Multi-line Input Box",s_loc_name:"Name",s_loc_names:"Names",s_loc_no_padding:"No padding",s_loc_normal:"Normal",s_loc_number:"Number",s_loc_number_horizontal:"Number Horizontal",s_loc_ok:"OK",s_loc_padding:"Padding",s_loc_page_name:"Page Name",s_loc_paste:"Paste",s_loc_paste_formats:"Paste Formats",s_loc_plain_text:"Plain Text",s_loc_recalc:"Recalc",s_loc_recalculation:"Recalculation",s_loc_redo:"Redo",s_loc_right:"Right",s_loc_right_border:"Right Border",s_loc_sheet_settings:"SHEET SETTINGS",s_loc_save:"Save",s_loc_save_to:"Save to",s_loc_set_cell_contents:"Set Cell Contents",s_loc_set_cells_to_sort:"Set Cells To Sort",s_loc_set_value_to:"Set Value To",s_loc_set_to_link_format:"Set to Link format",s_loc_setXclear_move_from:"Set/Clear Move From",s_loc_show_cell_settings:"Show Cell Settings",s_loc_show_sheet_settings:"Show Sheet Settings",s_loc_show_in_new_browser_window:"Show in new browser window",s_loc_size:"Size",s_loc_socialcalcXsave_format:"SocialCalc-save format",s_loc_sort:"Sort",s_loc_sort_:"Sort ",s_loc_sort_cells:"Sort Cells",s_loc_swap_colors:"Swap Colors",s_loc_tabXdelimited_format:"Tab-delimited format",s_loc_text:"Text",s_loc_text_horizontal:"Text Horizontal",s_loc_this_is_aXbrXsample:"This is a<br>sample",s_loc_top:"Top",s_loc_top_border:"Top Border",s_loc_undone_steps:"UNDONE STEPS",s_loc_url:"URL",s_loc_undo:"Undo",s_loc_unlock_cell:"Unlock Cell",s_loc_unmerge_cells:"Unmerge Cells",s_loc_up:"Up",s_loc_value:"Value",s_loc_vertical:"Vertical",s_loc_wikitext:"Wikitext",s_loc_workspace:"Workspace",s_loc_XnewX:"[New]",s_loc_XnoneX:"[None]",s_loc_Xselect_rangeX:"[select range]",SVStatuslineheight:20,SVStatuslineCSS:"font-size:10px;padding:3px 0px;",FormatNumber_separatorchar:",",FormatNumber_decimalchar:".",FormatNumber_defaultCurrency:"$",s_FormatNumber_daynames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],s_FormatNumber_daynames3:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],s_FormatNumber_monthnames:["January","February","March","April","May","June","July","August","September","October","November","December"],s_FormatNumber_monthnames3:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],s_FormatNumber_am:"AM",s_FormatNumber_am1:"A",s_FormatNumber_pm:"PM",s_FormatNumber_pm1:"P",s_parseerrexponent:"Improperly formed number exponent",s_parseerrchar:"Unexpected character in formula",s_parseerrstring:"Improperly formed string",s_parseerrspecialvalue:"Improperly formed special value",s_parseerrtwoops:"Error in formula (two operators inappropriately in a row)",s_parseerrmissingopenparen:"Missing open parenthesis in list with comma(s). ",s_parseerrcloseparennoopen:"Closing parenthesis without open parenthesis. ",s_parseerrmissingcloseparen:"Missing close parenthesis. ",s_parseerrmissingoperand:"Missing operand. ",s_parseerrerrorinformula:"Error in formula.",s_calcerrerrorvalueinformula:"Error value in formula",s_parseerrerrorinformulabadval:"Error in formula resulting in bad value",s_formularangeresult:"Formula results in range value:",s_calcerrnumericnan:"Formula results in an bad numeric value",s_calcerrnumericoverflow:"Numeric overflow",s_sheetunavailable:"Sheet unavailable:",s_calcerrcellrefmissing:"Cell reference missing when expected.",s_calcerrsheetnamemissing:"Sheet name missing when expected.",s_circularnameref:"Circular name reference to name",s_calcerrunknownname:"Unknown name",s_calcerrincorrectargstofunction:"Incorrect arguments to function",s_sheetfuncunknownfunction:"Unknown function",s_sheetfunclnarg:"LN argument must be greater than 0",s_sheetfunclog10arg:"LOG10 argument must be greater than 0",s_sheetfunclogsecondarg:"LOG second argument must be numeric greater than 0",s_sheetfunclogfirstarg:"LOG first argument must be greater than 0",s_sheetfuncroundsecondarg:"ROUND second argument must be numeric",s_sheetfuncddblife:"DDB life must be greater than 1",s_sheetfuncslnlife:"SLN life must be greater than 1",s_fdef_ABS:"Absolute value function. ",s_fdef_ACOS:"Trigonometric arccosine function. ",s_fdef_AND:"True if all arguments are true. ",s_fdef_ASIN:"Trigonometric arcsine function. ",s_fdef_ATAN:"Trigonometric arctan function. ",s_fdef_ATAN2:"Trigonometric arc tangent function (result is in radians). ",s_fdef_AVERAGE:"Averages the values. ",s_fdef_CHOOSE:"Returns the value specified by the index. The values may be ranges of cells. ",s_fdef_COLUMNS:"Returns the number of columns in the range. ",s_fdef_COS:"Trigonometric cosine function (value is in radians). ",s_fdef_CONCAT:"Join Together Text & Values to Create a Single Combined Text String. ",s_fdef_CONCATENATE:"Join Together Text & Values to Create a Single Combined Text String. ",s_fdef_COUNT:"Counts the number of numeric values, not blank, text, or error. ",s_fdef_COUNTA:"Counts the number of non-blank values. ",s_fdef_COUNTBLANK:'Counts the number of blank values. (Note: "" is not blank.) ',s_fdef_COUNTIF:'Counts the number of number of cells in the range that meet the criteria. The criteria may be a value ("x", 15, 1+3) or a test (>25). ',s_fdef_DATE:'Returns the appropriate date value given numbers for year, month, and day. For example: DATE(2006,2,1) for February 1, 2006. Note: In this program, day "1" is December 31, 1899 and the year 1900 is not a leap year. Some programs use January 1, 1900, as day "1" and treat 1900 as a leap year. In both cases, though, dates on or after March 1, 1900, are the same. ',s_fdef_DAVERAGE:"Averages the values in the specified field in records that meet the criteria. ",s_fdef_DAY:"Returns the day of month for a date value. ",s_fdef_DCOUNT:"Counts the number of numeric values, not blank, text, or error, in the specified field in records that meet the criteria. ",s_fdef_DCOUNTA:"Counts the number of non-blank values in the specified field in records that meet the criteria. ",s_fdef_DDB:"Returns the amount of depreciation at the given period of time (the default factor is 2 for double-declining balance).   ",s_fdef_DEGREES:"Converts value in radians into degrees. ",s_fdef_DGET:"Returns the value of the specified field in the single record that meets the criteria. ",s_fdef_DMAX:"Returns the maximum of the numeric values in the specified field in records that meet the criteria. ",s_fdef_DMIN:"Returns the maximum of the numeric values in the specified field in records that meet the criteria. ",s_fdef_DPRODUCT:"Returns the result of multiplying the numeric values in the specified field in records that meet the criteria. ",s_fdef_DSTDEV:"Returns the sample standard deviation of the numeric values in the specified field in records that meet the criteria. ",s_fdef_DSTDEVP:"Returns the standard deviation of the numeric values in the specified field in records that meet the criteria. ",s_fdef_DSUM:"Returns the sum of the numeric values in the specified field in records that meet the criteria. ",s_fdef_DVAR:"Returns the sample variance of the numeric values in the specified field in records that meet the criteria. ",s_fdef_DVARP:"Returns the variance of the numeric values in the specified field in records that meet the criteria. ",s_fdef_EVEN:"Rounds the value up in magnitude to the nearest even integer. ",s_fdef_EXACT:'Returns "true" if the values are exactly the same, including case, type, etc. ',s_fdef_EXP:"Returns e raised to the value power. ",s_fdef_FACT:"Returns factorial of the value. ",s_fdef_FALSE:'Returns the logical value "false". ',s_fdef_FIND:'Returns the starting position within string2 of the first occurrence of string1 at or after "start". If start is omitted, 1 is assumed. ',s_fdef_FV:"Returns the future value of repeated payments of money invested at the given rate for the specified number of periods, with optional present value (default 0) and payment type (default 0 = at end of period, 1 = beginning of period). ",s_fdef_HLOOKUP:"Look for the matching value for the given value in the range and return the corresponding value in the cell specified by the row offset. If rangelookup is 1 (the default) and not 0, match if within numeric brackets (match<=value) instead of exact match. ",s_fdef_HOUR:"Returns the hour portion of a time or date/time value. ",s_fdef_IF:"Results in true-value if logical-expression is TRUE or non-zero, otherwise results in false-value. ",s_fdef_INDEX:"Returns a cell or range reference for the specified row and column in the range. If range is 1-dimensional, then only one of rownum or colnum are needed. If range is 2-dimensional and rownum or colnum are zero, a reference to the range of just the specified column or row is returned. You can use the returned reference value in a range, e.g., sum(A1:INDEX(A2:A10,4)). ",s_fdef_INT:"Returns the value rounded down to the nearest integer (towards -infinity). ",s_fdef_IRR:"Returns the interest rate at which the cash flows in the range have a net present value of zero. Uses an iterative process that will return #NUM! error if it does not converge. There may be more than one possible solution. Providing the optional guess value may help in certain situations where it does not converge or finds an inappropriate solution (the default guess is 10%). ",s_fdef_ISBLANK:'Returns "true" if the value is a reference to a blank cell. ',s_fdef_ISERR:'Returns "true" if the value is of type "Error" but not "NA". ',s_fdef_ISERROR:'Returns "true" if the value is of type "Error". ',s_fdef_ISLOGICAL:'Returns "true" if the value is of type "Logical" (true/false). ',s_fdef_ISNA:'Returns "true" if the value is the error type "NA". ',s_fdef_ISNONTEXT:'Returns "true" if the value is not of type "Text". ',s_fdef_ISNUMBER:'Returns "true" if the value is of type "Number" (including logical values). ',s_fdef_ISTEXT:'Returns "true" if the value is of type "Text". ',s_fdef_LEFT:"Returns the specified number of characters from the text value. If count is omitted, 1 is assumed. ",s_fdef_LEN:"Returns the number of characters in the text value. ",s_fdef_LN:"Returns the natural logarithm of the value. ",s_fdef_LOG:"Returns the logarithm of the value using the specified base. ",s_fdef_LOG10:"Returns the base 10 logarithm of the value. ",s_fdef_LOWER:"Returns the text value with all uppercase characters converted to lowercase. ",s_fdef_MATCH:"Look for the matching value for the given value in the range and return position (the first is 1) in that range. If rangelookup is 1 (the default) and not 0, match if within numeric brackets (match<=value) instead of exact match. If rangelookup is -1, act like 1 but the bracket is match>=value. ",s_fdef_MAX:"Returns the maximum of the numeric values. ",s_fdef_MID:"Returns the specified number of characters from the text value starting from the specified position. ",s_fdef_MIN:"Returns the minimum of the numeric values. ",s_fdef_MINUTE:"Returns the minute portion of a time or date/time value. ",s_fdef_MOD:"Returns the remainder of the first value divided by the second. ",s_fdef_MONTH:"Returns the month part of a date value. ",s_fdef_N:"Returns the value if it is a numeric value otherwise an error. ",s_fdef_NA:"Returns the #N/A error value which propagates through most operations. ",s_fdef_NOT:"Returns FALSE if value is true, and TRUE if it is false. ",s_fdef_NOW:"Returns the current date/time. ",s_fdef_NPER:"Returns the number of periods at which payments invested each period at the given rate with optional future value (default 0) and payment type (default 0 = at end of period, 1 = beginning of period) has the given present value. ",s_fdef_NPV:"Returns the net present value of cash flows (which may be individual values and/or ranges) at the given rate. The flows are positive if income, negative if paid out, and are assumed at the end of each period. ",s_fdef_ODD:"Rounds the value up in magnitude to the nearest odd integer. ",s_fdef_OR:"True if any argument is true ",s_fdef_PI:"The value 3.1415926... ",s_fdef_PMT:"Returns the amount of each payment that must be invested at the given rate for the specified number of periods to have the specified present value, with optional future value (default 0) and payment type (default 0 = at end of period, 1 = beginning of period). ",s_fdef_POWER:"Returns the first value raised to the second value power. ",s_fdef_PRODUCT:"Returns the result of multiplying the numeric values. ",s_fdef_PROPER:"Returns the text value with the first letter of each word converted to uppercase and the others to lowercase. ",s_fdef_PV:"Returns the present value of the given number of payments each invested at the given rate, with optional future value (default 0) and payment type (default 0 = at end of period, 1 = beginning of period). ",s_fdef_RADIANS:"Converts value in degrees into radians. ",s_fdef_RATE:"Returns the rate at which the given number of payments each invested at the given rate has the specified present value, with optional future value (default 0) and payment type (default 0 = at end of period, 1 = beginning of period). Uses an iterative process that will return #NUM! error if it does not converge. There may be more than one possible solution. Providing the optional guess value may help in certain situations where it does not converge or finds an inappropriate solution (the default guess is 10%). ",s_fdef_REPLACE:"Returns text1 with the specified number of characters starting from the specified position replaced by text2. ",s_fdef_REPT:"Returns the text repeated the specified number of times. ",s_fdef_RIGHT:"Returns the specified number of characters from the text value starting from the end. If count is omitted, 1 is assumed. ",s_fdef_ROUND:"Rounds the value to the specified number of decimal places. If precision is negative, then round to powers of 10. The default precision is 0 (round to integer). ",s_fdef_ROWS:"Returns the number of rows in the range. ",s_fdef_SECOND:"Returns the second portion of a time or date/time value (truncated to an integer). ",s_fdef_SIN:"Trigonometric sine function (value is in radians) ",s_fdef_SLN:"Returns the amount of depreciation at each period of time using the straight-line method. ",s_fdef_SQRT:"Square root of the value ",s_fdef_STDEV:"Returns the sample standard deviation of the numeric values. ",s_fdef_STDEVP:"Returns the standard deviation of the numeric values. ",s_fdef_SUBSTITUTE:'Returns text1 with the all occurrences of oldtext replaced by newtext. If "occurrence" is present, then only that occurrence is replaced. ',s_fdef_SUM:"Adds the numeric values. The values to the sum function may be ranges in the form similar to A1:B5. ",s_fdef_SUMIF:'Sums the numeric values of cells in the range that meet the criteria. The criteria may be a value ("x", 15, 1+3) or a test (>25). If range2 is present, then range1 is tested and the corresponding range2 value is summed. ',s_fdef_SUMIFS:'Sums the numeric values of cells in the sum_range that meet the multiple criteria. The criteria may be a value ("x", 15, 1+3) or a test (>25).  ',s_fdef_SYD:"Depreciation by Sum of Year's Digits method. ",s_fdef_T:"Returns the text value or else a null string. ",s_fdef_TAN:"Trigonometric tangent function (value is in radians) ",s_fdef_TIME:"Returns the time value given the specified hour, minute, and second. ",s_fdef_TODAY:'Returns the current date (an integer). Note: In this program, day "1" is December 31, 1899 and the year 1900 is not a leap year. Some programs use January 1, 1900, as day "1" and treat 1900 as a leap year. In both cases, though, dates on or after March 1, 1900, are the same. ',s_fdef_TRIM:"Returns the text value with leading, trailing, and repeated spaces removed. ",s_fdef_TRUE:'Returns the logical value "true". ',s_fdef_TRUNC:"Truncates the value to the specified number of decimal places. If precision is negative, truncate to powers of 10. ",s_fdef_UPPER:"Returns the text value with all lowercase characters converted to uppercase. ",s_fdef_VALUE:"Converts the specified text value into a numeric value. Various forms that look like numbers (including digits followed by %, forms that look like dates, etc.) are handled. This may not handle all of the forms accepted by other spreadsheets and may be locale dependent. ",s_fdef_VAR:"Returns the sample variance of the numeric values. ",s_fdef_VARP:"Returns the variance of the numeric values. ",s_fdef_VLOOKUP:"Look for the matching value for the given value in the range and return the corresponding value in the cell specified by the column offset. If rangelookup is 1 (the default) and not 0, match if within numeric brackets (match>=value) instead of exact match. ",s_fdef_WEEKDAY:"Returns the day of week specified by the date value. If type is 1 (the default), Sunday is day and Saturday is day 7. If type is 2, Monday is day 1 and Sunday is day 7. If type is 3, Monday is day 0 and Sunday is day 6. ",s_fdef_YEAR:"Returns the year part of a date value. ",s_fdef_SUMPRODUCT:"Sums the pairwise products of 2 or more ranges. The ranges must be of equal length.",s_fdef_CEILING:"Rounds the given number up to the nearest integer or multiple of significance. Significance is the value to whose multiple of ten the value is to be rounded up (.01, .1, 1, 10, etc.)",s_fdef_FLOOR:"Rounds the given number down to the nearest multiple of significance. Significance is the value to whose multiple of ten the number is to be rounded down (.01, .1, 1, 10, etc.)",s_farg_v:"value",s_farg_vn:"value1, value2, ...",s_farg_xy:"valueX, valueY",s_farg_choose:"index, value1, value2, ...",s_farg_range:"range",s_farg_rangec:"range, criteria",s_farg_date:"year, month, day",s_farg_dfunc:"databaserange, fieldname, criteriarange",s_farg_ddb:"cost, salvage, lifetime, period, [factor]",s_farg_find:"string1, string2, [start]",s_farg_fv:"rate, n, payment, [pv, [paytype]]",s_farg_hlookup:"value, range, row, [rangelookup]",s_farg_iffunc:"logical-expression, true-value, [false-value]",s_farg_index:"range, rownum, colnum",s_farg_irr:"range, [guess]",s_farg_tc:"text, count",s_farg_log:"value, base",s_farg_match:"value, range, [rangelookup]",s_farg_mid:"text, start, length",s_farg_nper:"rate, payment, pv, [fv, [paytype]]",s_farg_npv:"rate, value1, value2, ...",s_farg_pmt:"rate, n, pv, [fv, [paytype]]",s_farg_pv:"rate, n, payment, [fv, [paytype]]",s_farg_rate:"n, payment, pv, [fv, [paytype, [guess]]]",s_farg_replace:"text1, start, length, text2",s_farg_vp:"value, [precision]",s_farg_valpre:"value, precision",s_farg_csl:"cost, salvage, lifetime",s_farg_cslp:"cost, salvage, lifetime, period",s_farg_subs:"text1, oldtext, newtext, [occurrence]",s_farg_sumif:"range1, criteria, [range2]",s_farg_hms:"hour, minute, second",s_farg_txt:"text",s_farg_vlookup:"value, range, col, [rangelookup]",s_farg_weekday:"date, [type]",s_farg_dt:"date",s_farg_rangen:"range1, range2, ...",s_farg_vsig:"value, [significance]",function_classlist:["all","stat","lookup","datetime","financial","test","math","text","gui","action"],s_fclass_all:"All",s_fclass_stat:"Statistics",s_fclass_lookup:"Lookup",s_fclass_datetime:"Date & Time",s_fclass_financial:"Financial",s_fclass_test:"Test",s_fclass_math:"Math",s_fclass_text:"Text",s_fclass_action:"Email & Copy",s_fclass_gui:"Button & Input",lastone:null},Re.ConstantsDefaultClasses={defaultComment:"",defaultCommentNoGrid:"",defaultHighlightTypeCursor:"",defaultHighlightTypeRange:"",defaultColname:"",defaultSelectedColname:"",defaultRowname:"",defaultSelectedRowname:"",defaultUpperLeft:"",defaultSkippedCell:"",defaultPaneDivider:"",cteGriddiv:"",defaultInputEcho:{classname:"",style:"filter:alpha(opacity=90);opacity:.9;"},TCmain:"",TCendcap:"",TCpaneslider:"",TClessbutton:"",TCmorebutton:"",TCscrollarea:"",TCthumb:"",TCPStrackingline:"",TCTDFSthumbstatus:"",TDpopupElement:""},Re.ConstantsSetClasses=function(e){var t,o=Re.ConstantsDefaultClasses,i=Re.Constants;for(t in e=e||"",o)"string"==typeof o[t]?(i[t+"Class"]=e+(o[t]||t),void 0!==i[t+"Style"]&&(i[t+"Style"]="")):"object"==typeof o[t]&&(i[t+"Class"]=e+(o[t].classname||t),i[t+"Style"]=o[t].style)},Re.ConstantsSetImagePrefix=function(e){var t,o=Re.Constants;for(t in o)"string"==typeof o[t]&&(o[t]=o[t].replace(o.defaultImagePrefix,e));o.defaultImagePrefix=e},(Re=Re||{}).Callbacks={expand_wiki:null,expand_markup:function(e,t,o){return Re.default_expand_markup(e,t,o)},MakePageLink:null,NormalizeSheetName:null},Re.Cell=function(e){this.coord=e,this.datavalue="",this.datatype=null,this.formula="",this.valuetype="b",this.readonly=!1},Re.CellProperties={coord:1,datavalue:1,datatype:1,formula:1,valuetype:1,errors:1,comment:1,readonly:1,bt:2,br:2,bb:2,bl:2,layout:2,font:2,color:2,bgcolor:2,cellformat:2,nontextvalueformat:2,textvalueformat:2,colspan:2,rowspan:2,cssc:2,csss:2,mod:2,displaystring:3,parseinfo:3,hcolspan:3,hrowspan:3},Re.CellPropertiesTable={bt:"borderstyle",br:"borderstyle",bb:"borderstyle",bl:"borderstyle",layout:"layout",font:"font",color:"color",bgcolor:"color",cellformat:"cellformat",nontextvalueformat:"valueformat",textvalueformat:"valueformat"},Re.Sheet=function(){Re.ResetSheet(this),this.statuscallback=null,this.statuscallbackparams=null},Re.ResetSheet=function(e,t){e.cells={},e.attribs={lastcol:1,lastrow:1,defaultlayout:0,usermaxcol:0,usermaxrow:0},e.rowattribs={hide:{},height:{}},e.colattribs={width:{},hide:{}},e.names={},e.layouts=[],e.layouthash={},e.fonts=[],e.fonthash={},e.colors=[],e.colorhash={},e.borderstyles=[],e.borderstylehash={},e.cellformats=[],e.cellformathash={},e.valueformats=[],e.valueformathash={},e.matched_cells=[],e.selected_search_cell=void 0,e.copiedfrom="",e.changes=new Re.UndoStack,e.renderneeded=!1,e.changedrendervalues=!0,e.recalcchangedavalue=!1,e.hiddencolrow="",e.sci=new Re.SheetCommandInfo(e),e.ioEventTree={},e.ioParameterList={}},Re.Sheet.prototype.ResetSheet=function(){Re.ResetSheet(this)},Re.Sheet.prototype.AddCell=function(e){return this.cells[e.coord]=e},Re.Sheet.prototype.LastCol=function(){var e,t=1;for(e in this.cells){var o=Re.coordToCr(e);o.col>t&&(t=o.col)}return t},Re.Sheet.prototype.LastRow=function(){var e,t=1;for(e in this.cells){var o=Re.coordToCr(e);o.row>t&&(t=o.row)}return t},Re.Sheet.prototype.GetAssuredCell=function(e){return this.cells[e]||this.AddCell(new Re.Cell(e))},Re.Sheet.prototype.ParseSheetSave=function(e){Re.ParseSheetSave(e,this)},Re.Sheet.prototype.CellFromStringParts=function(e,t,o){return Re.CellFromStringParts(this,e,t,o)},Re.Sheet.prototype.CreateSheetSave=function(e,t){return Re.CreateSheetSave(this,e,t)},Re.Sheet.prototype.CellToString=function(e){return Re.CellToString(this,e)},Re.Sheet.prototype.CanonicalizeSheet=function(e){return Re.CanonicalizeSheet(this,e)},Re.Sheet.prototype.EncodeCellAttributes=function(e){return Re.EncodeCellAttributes(this,e)},Re.Sheet.prototype.EncodeSheetAttributes=function(){return Re.EncodeSheetAttributes(this)},Re.Sheet.prototype.DecodeCellAttributes=function(e,t,o){return Re.DecodeCellAttributes(this,e,t,o)},Re.Sheet.prototype.DecodeSheetAttributes=function(e){return Re.DecodeSheetAttributes(this,e)},Re.Sheet.prototype.ScheduleSheetCommands=function(e,t){return Re.ScheduleSheetCommands(this,e,t)},Re.Sheet.prototype.SheetUndo=function(){return Re.SheetUndo(this)},Re.Sheet.prototype.SheetRedo=function(){return Re.SheetRedo(this)},Re.Sheet.prototype.CreateAuditString=function(){return Re.CreateAuditString(this)},Re.Sheet.prototype.GetStyleNum=function(e,t){return Re.GetStyleNum(this,e,t)},Re.Sheet.prototype.GetStyleString=function(e,t){return Re.GetStyleString(this,e,t)},Re.Sheet.prototype.RecalcSheet=function(){return Re.RecalcSheet(this)},Re.ParseSheetSave=function(e,t){for(var o,i,n,r,s,a,l=e.split(/\r\n|\n/),c=[],u=Re.Constants,d=0;d<l.length;d++){switch((c=l[d].split(":"))[0]){case"cell":a=t.GetAssuredCell(c[1]),t.CellFromStringParts(a,c,o=2);break;case"col":for(r=c[1],o=2;i=c[o++];)switch(i){case"w":t.colattribs.width[r]=c[o++];break;case"hide":t.colattribs.hide[r]=c[o++];break;default:throw u.s_pssUnknownColType+" '"+i+"'"}break;case"row":for(r=+c[1],o=2;i=c[o++];)switch(i){case"h":t.rowattribs.height[r]=+c[o++];break;case"hide":t.rowattribs.hide[r]=c[o++];break;default:throw u.s_pssUnknownRowType+" '"+i+"'"}break;case"sheet":for(s=t.attribs,o=1;i=c[o++];)switch(i){case"c":s.lastcol=+c[o++];break;case"r":s.lastrow=+c[o++];break;case"w":s.defaultcolwidth=c[o++]+"";break;case"h":s.defaultrowheight=+c[o++];break;case"tf":s.defaulttextformat=+c[o++];break;case"ntf":s.defaultnontextformat=+c[o++];break;case"layout":s.defaultlayout=+c[o++];break;case"font":s.defaultfont=+c[o++];break;case"tvf":s.defaulttextvalueformat=+c[o++];break;case"ntvf":s.defaultnontextvalueformat=+c[o++];break;case"color":s.defaultcolor=+c[o++];break;case"bgcolor":s.defaultbgcolor=+c[o++];break;case"circularreferencecell":s.circularreferencecell=c[o++];break;case"recalc":s.recalc=c[o++];break;case"needsrecalc":s.needsrecalc=c[o++];break;case"usermaxcol":s.usermaxcol=+c[o++];break;case"usermaxrow":s.usermaxrow=+c[o++];break;default:o+=1}break;case"name":a=Re.decodeFromSave(c[1]).toUpperCase(),t.names[a]={desc:Re.decodeFromSave(c[2])},t.names[a].definition=Re.decodeFromSave(c[3]);break;case"layout":c=l[d].match(/^layout\:(\d+)\:(.+)$/),t.layouts[+c[1]]=c[2],t.layouthash[c[2]]=+c[1];break;case"font":t.fonts[+c[1]]=c[2],t.fonthash[c[2]]=+c[1];break;case"color":t.colors[+c[1]]=c[2],t.colorhash[c[2]]=+c[1];break;case"border":t.borderstyles[+c[1]]=c[2],t.borderstylehash[c[2]]=+c[1];break;case"cellformat":n=Re.decodeFromSave(c[2]),t.cellformats[+c[1]]=n,t.cellformathash[n]=+c[1];break;case"valueformat":n=Re.decodeFromSave(c[2]),t.valueformats[+c[1]]=n,t.valueformathash[n]=+c[1];break;case"version":break;case"copiedfrom":t.copiedfrom=c[1]+":"+c[2];break;case"clipboardrange":case"clipboard":case"":break;default:throw alert(u.s_pssUnknownLineType+" '"+c[0]+"'"),u.s_pssUnknownLineType+" '"+c[0]+"'"}c=null}},Re.CellFromStringParts=function(e,t,o,i){for(var n,r;n=o[i++];)switch(n){case"v":t.datavalue=+Re.decodeFromSave(o[i++]),t.datatype="v",t.valuetype="n";break;case"t":t.datavalue=Re.decodeFromSave(o[i++]),t.datatype="t",t.valuetype=Re.Constants.textdatadefaulttype;break;case"vt":r=o[i++],"n"==(t.valuetype=r).charAt(0)?(t.datatype="v",t.datavalue=+Re.decodeFromSave(o[i++])):(t.datatype="t",t.datavalue=Re.decodeFromSave(o[i++]));break;case"vtf":r=o[i++],"n"==(t.valuetype=r).charAt(0)?t.datavalue=+Re.decodeFromSave(o[i++]):t.datavalue=Re.decodeFromSave(o[i++]),t.formula=Re.decodeFromSave(o[i++]),t.datatype="f";break;case"vtc":r=o[i++],"n"==(t.valuetype=r).charAt(0)?t.datavalue=+Re.decodeFromSave(o[i++]):t.datavalue=Re.decodeFromSave(o[i++]),t.formula=Re.decodeFromSave(o[i++]),t.datatype="c";break;case"ro":ro=Re.decodeFromSave(o[i++]),t.readonly="yes"==ro.toLowerCase();break;case"e":t.errors=Re.decodeFromSave(o[i++]);break;case"b":t.bt=+o[i++],t.br=+o[i++],t.bb=+o[i++],t.bl=+o[i++];break;case"l":t.layout=+o[i++];break;case"f":t.font=+o[i++];break;case"c":t.color=+o[i++];break;case"bg":t.bgcolor=+o[i++];break;case"cf":t.cellformat=+o[i++];break;case"ntvf":t.nontextvalueformat=+o[i++];break;case"tvf":t.textvalueformat=+o[i++];break;case"colspan":t.colspan=+o[i++];break;case"rowspan":t.rowspan=+o[i++];break;case"cssc":t.cssc=o[i++];break;case"csss":t.csss=Re.decodeFromSave(o[i++]);break;case"mod":i+=1;break;case"comment":t.comment=Re.decodeFromSave(o[i++]);break;default:throw Re.Constants.s_cfspUnknownCellType+" '"+n+"'"}},Re.sheetfields=["defaultrowheight","defaultcolwidth","circularreferencecell","recalc","needsrecalc","usermaxcol","usermaxrow"],Re.sheetfieldsshort=["h","w","circularreferencecell","recalc","needsrecalc","usermaxcol","usermaxrow"],Re.sheetfieldsxlat=["defaulttextformat","defaultnontextformat","defaulttextvalueformat","defaultnontextvalueformat","defaultcolor","defaultbgcolor","defaultfont","defaultlayout"],Re.sheetfieldsxlatshort=["tf","ntf","tvf","ntvf","color","bgcolor","font","layout"],Re.sheetfieldsxlatxlt=["cellformat","cellformat","valueformat","valueformat","color","color","font","layout"],Re.CreateSheetSave=function(e,t,o){var i,n,r,s,a,l,c,u,d=[],h=(e.CanonicalizeSheet(o||Re.Constants.doCanonicalizeSheet),e.xlt),o=t?Re.ParseRange(t):{cr1:{row:1,col:1},cr2:{row:h.maxrow,col:h.maxcol}},p=o.cr1,f=o.cr2;for(d.push("version:1.5"),n=p.row;n<=f.row;n++)for(r=p.col;r<=f.col;r++)s=Re.crToCoord(r,n),(i=e.cells[s])&&0!=(a=e.CellToString(i)).length&&d.push(a="cell:"+s+a);for(r=1;r<=h.maxcol;r++)s=Re.rcColname(r),e.colattribs.width[s]&&d.push("col:"+s+":w:"+e.colattribs.width[s]),e.colattribs.hide[s]&&d.push("col:"+s+":hide:"+e.colattribs.hide[s]);for(n=1;n<=h.maxrow;n++)e.rowattribs.height[n]&&d.push("row:"+n+":h:"+e.rowattribs.height[n]),e.rowattribs.hide[n]&&d.push("row:"+n+":hide:"+e.rowattribs.hide[n]);for(a="sheet:c:"+h.maxcol+":r:"+h.maxrow,c=0;c<Re.sheetfields.length;c++)(l=Re.encodeForSave(e.attribs[Re.sheetfields[c]]))&&(a+=":"+Re.sheetfieldsshort[c]+":"+l);for(c=0;c<Re.sheetfieldsxlat.length;c++)(l=e.attribs[Re.sheetfieldsxlat[c]])&&(a+=":"+Re.sheetfieldsxlatshort[c]+":"+h[Re.sheetfieldsxlatxlt[c]+"sxlat"][l]);for(d.push(a),c=1;c<h.newborderstyles.length;c++)d.push("border:"+c+":"+h.newborderstyles[c]);for(c=1;c<h.newcellformats.length;c++)d.push("cellformat:"+c+":"+Re.encodeForSave(h.newcellformats[c]));for(c=1;c<h.newcolors.length;c++)d.push("color:"+c+":"+h.newcolors[c]);for(c=1;c<h.newfonts.length;c++)d.push("font:"+c+":"+h.newfonts[c]);for(c=1;c<h.newlayouts.length;c++)d.push("layout:"+c+":"+h.newlayouts[c]);for(c=1;c<h.newvalueformats.length;c++)d.push("valueformat:"+c+":"+Re.encodeForSave(h.newvalueformats[c]));for(c=0;c<h.namesorder.length;c++)u=h.namesorder[c],d.push("name:"+Re.encodeForSave(u).toUpperCase()+":"+Re.encodeForSave(e.names[u].desc)+":"+Re.encodeForSave(e.names[u].definition));return t&&d.push("copiedfrom:"+Re.crToCoord(p.col,p.row)+":"+Re.crToCoord(f.col,f.row)),d.push(""),delete e.xlt,d.join("\n")},Re.CellToString=function(e,t){var o,i,n,r,s="";return t&&(o=Re.encodeForSave(t.datavalue),"v"==t.datatype?"n"==t.valuetype?s+=":v:"+o:s+=":vt:"+t.valuetype+":"+o:"t"==t.datatype?t.valuetype==Re.Constants.textdatadefaulttype?s+=":t:"+o:s+=":vt:"+t.valuetype+":"+o:(i=Re.encodeForSave(t.formula),"f"==t.datatype?s+=":vtf:"+t.valuetype+":"+o+":"+i:"c"==t.datatype&&(s+=":vtc:"+t.valuetype+":"+o+":"+i)),t.readonly&&(s+=":ro:yes"),t.errors&&(s+=":e:"+Re.encodeForSave(t.errors)),o=t.bt||"",i=t.br||"",n=t.bb||"",r=t.bl||"",e.xlt?(e=e.xlt,(o||i||n||r)&&(s+=":b:"+e.borderstylesxlat[o||0]+":"+e.borderstylesxlat[i||0]+":"+e.borderstylesxlat[n||0]+":"+e.borderstylesxlat[r||0]),t.layout&&(s+=":l:"+e.layoutsxlat[t.layout]),t.font&&(s+=":f:"+e.fontsxlat[t.font]),t.color&&(s+=":c:"+e.colorsxlat[t.color]),t.bgcolor&&(s+=":bg:"+e.colorsxlat[t.bgcolor]),t.cellformat&&(s+=":cf:"+e.cellformatsxlat[t.cellformat]),t.textvalueformat&&(s+=":tvf:"+e.valueformatsxlat[t.textvalueformat]),t.nontextvalueformat&&(s+=":ntvf:"+e.valueformatsxlat[t.nontextvalueformat])):((o||i||n||r)&&(s+=":b:"+o+":"+i+":"+n+":"+r),t.layout&&(s+=":l:"+t.layout),t.font&&(s+=":f:"+t.font),t.color&&(s+=":c:"+t.color),t.bgcolor&&(s+=":bg:"+t.bgcolor),t.cellformat&&(s+=":cf:"+t.cellformat),t.textvalueformat&&(s+=":tvf:"+t.textvalueformat),t.nontextvalueformat&&(s+=":ntvf:"+t.nontextvalueformat)),t.colspan&&(s+=":colspan:"+t.colspan),t.rowspan&&(s+=":rowspan:"+t.rowspan),t.cssc&&(s+=":cssc:"+t.cssc),t.csss&&(s+=":csss:"+Re.encodeForSave(t.csss)),t.mod&&(s+=":mod:"+t.mod),t.comment&&(s+=":comment:"+Re.encodeForSave(t.comment))),s},Re.CanonicalizeSheet=function(e,t){var o,i,n,r,s,a,l,c,u,d,h,p,f=0,m=0,g=["borderstyle","cellformat","color","font","layout","valueformat"],v={namesorder:[]};for(l in e.names)v.namesorder.push(l);if(v.namesorder.sort(),!Re.Constants.doCanonicalizeSheet||!t){for(a=0;a<g.length;a++){for(v["new"+(l=g[a])+"s"]=e[l+"s"],o=e[l+"s"].length,(u=new Array(o))[0]="",h=1;h<o;h++)u[h]=h;v[l+"sxlat"]=u}return v.maxrow=e.attribs.lastrow,v.maxcol=e.attribs.lastcol,void(e.xlt=v)}for(a=0;a<g.length;a++)v[(l=g[a])+"sUsed"]={};var b=v.colorsUsed,y=v.borderstylesUsed,C=v.fontsUsed,w=v.layoutsUsed,x=v.cellformatsUsed,_=v.valueformatsUsed;for(i in e.cells)n=Re.coordToCr(i),s=!1,(r=e.cells[i]).valuetype&&"b"!=r.valuetype&&(s=!0),r.color&&(b[r.color]=1,s=!0),r.bgcolor&&(b[r.bgcolor]=1,s=!0),r.bt&&(y[r.bt]=1,s=!0),r.br&&(y[r.br]=1,s=!0),r.bb&&(y[r.bb]=1,s=!0),r.bl&&(y[r.bl]=1,s=!0),r.layout&&(w[r.layout]=1,s=!0),r.font&&(C[r.font]=1,s=!0),r.cellformat&&(x[r.cellformat]=1,s=!0),r.textvalueformat&&(_[r.textvalueformat]=1,s=!0),r.nontextvalueformat&&(_[r.nontextvalueformat]=1,s=!0),s&&(n.row>f&&(f=n.row),n.col>m&&(m=n.col));for(h=0;h<Re.sheetfieldsxlat.length;h++)(p=e.attribs[Re.sheetfieldsxlat[h]])&&(v[Re.sheetfieldsxlatxlt[h]+"sUsed"][p]=1);for(p in l={height:1,hide:1})for(n in e.rowattribs[p])f<n&&(f=n);for(p in l={hide:1,width:1})for(i in e.colattribs[p])(n=Re.coordToCr(i+"1")).col>m&&(m=n.col);for(a=0;a<g.length;a++){for(p in c=[],v[(l=g[a])+"sUsed"])c.push(e[l+"s"][p]);for(c.sort(),c.unshift(""),u=[""],d=e[l+"hash"],h=1;h<c.length;h++)u[d[c[h]]]=h;v[l+"sxlat"]=u,v["new"+l+"s"]=c}v.maxrow=f||1,v.maxcol=m||1,e.xlt=v},Re.EncodeCellAttributes=function(e,t){function o(e){l[e]={def:!0,val:""}}function i(e){for(var t=0;t<e.length;t++)o(e[t])}function n(e,t){l[e].def=!1,l[e].val=t||""}function r(e,t){"*"!=t&&(l[e].def=!1,l[e].val=t)}var s,a,l={},c=e.GetAssuredCell(t);for(o("alignhoriz"),c.cellformat&&n("alignhoriz",e.cellformats[c.cellformat]),i(["alignvert","padtop","padright","padbottom","padleft"]),c.layout&&(r("padtop",(parts=e.layouts[c.layout].match(/^padding:\s*(\S+)\s+(\S+)\s+(\S+)\s+(\S+);vertical-align:\s*(\S+);/))[1]),r("padright",parts[2]),r("padbottom",parts[3]),r("padleft",parts[4]),r("alignvert",parts[5])),i(["fontfamily","fontlook","fontsize"]),c.font&&(r("fontfamily",(parts=e.fonts[c.font].match(/^(\*|\S+? \S+?) (\S+?) (\S.*)$/))[3]),r("fontsize",parts[2]),r("fontlook",parts[1])),o("textcolor"),c.color&&n("textcolor",e.colors[c.color]),o("bgcolor"),c.bgcolor&&n("bgcolor",e.colors[c.bgcolor]),i(["numberformat","textformat"]),c.nontextvalueformat&&n("numberformat",e.valueformats[c.nontextvalueformat]),c.textvalueformat&&n("textformat",e.valueformats[c.textvalueformat]),i(["colspan","rowspan"]),n("colspan",c.colspan||1),n("rowspan",c.rowspan||1),s=0;s<4;s++)a="trbl".charAt(s),o(a="b"+a),n(a,c[a]?e.borderstyles[c[a]]:""),o(a+"thickness"),o(a+"style"),o(a+"color"),c[a]&&(n(a+"thickness",(parts=e.borderstyles[c[a]].match(/(\S+)\s+(\S+)\s+(\S.+)/))[1]),n(a+"style",parts[2]),n(a+"color",parts[3]));return i(["cssc","csss","mod"]),n("cssc",c.cssc||""),n("csss",c.csss||""),n("mod",c.mod||"n"),l},Re.EncodeSheetAttributes=function(e){function o(e){s[e]={def:!0,val:""}}function t(e){for(var t=0;t<e.length;t++)o(e[t])}function i(e,t){s[e].def=!1,s[e].val=t||void 0}function n(e,t){"*"!=t&&(s[e].def=!1,s[e].val=t)}var r=e.attribs,s={};return o("colwidth"),r.defaultcolwidth&&i("colwidth",r.defaultcolwidth),o("rowheight"),r.rowheight&&i("rowheight",r.defaultrowheight),o("textalignhoriz"),r.defaulttextformat&&i("textalignhoriz",e.cellformats[r.defaulttextformat]),o("numberalignhoriz"),r.defaultnontextformat&&i("numberalignhoriz",e.cellformats[r.defaultnontextformat]),t(["alignvert","padtop","padright","padbottom","padleft"]),r.defaultlayout&&(n("padtop",(parts=e.layouts[r.defaultlayout].match(/^padding:\s*(\S+)\s+(\S+)\s+(\S+)\s+(\S+);vertical-align:\s*(\S+);/))[1]),n("padright",parts[2]),n("padbottom",parts[3]),n("padleft",parts[4]),n("alignvert",parts[5])),t(["fontfamily","fontlook","fontsize"]),r.defaultfont&&(n("fontfamily",(parts=e.fonts[r.defaultfont].match(/^(\*|\S+? \S+?) (\S+?) (\S.*)$/))[3]),n("fontsize",parts[2]),n("fontlook",parts[1])),o("textcolor"),r.defaultcolor&&i("textcolor",e.colors[r.defaultcolor]),o("bgcolor"),r.defaultbgcolor&&i("bgcolor",e.colors[r.defaultbgcolor]),t(["numberformat","textformat"]),r.defaultnontextvalueformat&&i("numberformat",e.valueformats[r.defaultnontextvalueformat]),r.defaulttextvalueformat&&i("textformat",e.valueformats[r.defaulttextvalueformat]),o("recalc"),r.recalc&&i("recalc",r.recalc),o("usermaxcol"),r.usermaxcol&&i("usermaxcol",r.usermaxcol),o("usermaxrow"),r.usermaxrow&&i("usermaxrow",r.usermaxrow),s},Re.DecodeCellAttributes=function(e,t,n,o){function r(e,t,o){n[e]&&(e=n[e].def?"":n[e].val)!=(t||"")&&s(o+" "+e)}function s(e){d&&(d+="\n"),d+="set "+(o||t)+" "+e,u=!0}var a,l,c=e.GetAssuredCell(t),u=!1,d="";for(r("alignhoriz",e.cellformats[c.cellformat],"cellformat"),(a=n.alignvert.def&&n.padtop.def&&n.padright.def&&n.padbottom.def&&n.padleft.def?"":"padding:"+(n.padtop.def?"* ":n.padtop.val+" ")+(n.padright.def?"* ":n.padright.val+" ")+(n.padbottom.def?"* ":n.padbottom.val+" ")+(n.padleft.def?"*":n.padleft.val)+";vertical-align:"+(n.alignvert.def?"*;":n.alignvert.val+";"))!=(e.layouts[c.layout]||"")&&s("layout "+a),(a=n.fontlook.def&&n.fontsize.def&&n.fontfamily.def?"":(n.fontlook.def?"* ":n.fontlook.val+" ")+(n.fontsize.def?"* ":n.fontsize.val+" ")+(n.fontfamily.def?"*":n.fontfamily.val))!=(e.fonts[c.font]||"")&&s("font "+a),r("textcolor",e.colors[c.color],"color"),r("bgcolor",e.colors[c.bgcolor],"bgcolor"),r("numberformat",e.valueformats[c.nontextvalueformat],"nontextvalueformat"),r("textformat",e.valueformats[c.textvalueformat],"textvalueformat"),i=0;i<4;i++)r(l="b"+"trbl".charAt(i),e.borderstyles[c[l]],l);return r("cssc",c.cssc,"cssc"),r("csss",c.csss,"csss"),n.mod&&(a=n.mod.def?"n":n.mod.val)!=(c.mod||"n")&&s("mod "+(a="n"==a?"":a)),u?d:null},Re.DecodeSheetAttributes=function(e,i){function t(e,t,o){i[e]&&(e=i[e].def?"":i[e].val)!=(t||"")&&n(o+" "+e)}function n(e){a&&(a+="\n"),a+="set sheet "+e,s=!0}var o,r=e.attribs,s=!1,a="";return t("colwidth",r.defaultcolwidth,"defaultcolwidth"),t("rowheight",r.defaultrowheight,"defaultrowheight"),t("textalignhoriz",e.cellformats[r.defaulttextformat],"defaulttextformat"),t("numberalignhoriz",e.cellformats[r.defaultnontextformat],"defaultnontextformat"),(o=i.alignvert.def&&i.padtop.def&&i.padright.def&&i.padbottom.def&&i.padleft.def?"":"padding:"+(i.padtop.def?"* ":i.padtop.val+" ")+(i.padright.def?"* ":i.padright.val+" ")+(i.padbottom.def?"* ":i.padbottom.val+" ")+(i.padleft.def?"*":i.padleft.val)+";vertical-align:"+(i.alignvert.def?"*;":i.alignvert.val+";"))!=(e.layouts[r.defaultlayout]||"")&&n("defaultlayout "+o),(o=i.fontlook.def&&i.fontsize.def&&i.fontfamily.def?"":(i.fontlook.def?"* ":i.fontlook.val+" ")+(i.fontsize.def?"* ":i.fontsize.val+" ")+(i.fontfamily.def?"*":i.fontfamily.val))!=(e.fonts[r.defaultfont]||"")&&n("defaultfont "+o),t("textcolor",e.colors[r.defaultcolor],"defaultcolor"),t("bgcolor",e.colors[r.defaultbgcolor],"defaultbgcolor"),t("numberformat",e.valueformats[r.defaultnontextvalueformat],"defaultnontextvalueformat"),t("textformat",e.valueformats[r.defaulttextvalueformat],"defaulttextvalueformat"),t("recalc",e.attribs.recalc,"recalc"),t("usermaxcol",e.attribs.usermaxcol,"usermaxcol"),t("usermaxrow",e.attribs.usermaxrow,"usermaxrow"),s?a:null},Re.SheetCommandInfo=function(e){this.sheetobj=e,this.timerobj=null,this.firsttimerdelay=50,this.timerdelay=1,this.maxtimeslice=100,this.saveundo=!1,this.CmdExtensionCallbacks={}},Re.ScheduleSheetCommands=function(e,t,o){var i=e.sci,n=new Re.Parse(t);i.sheetobj.statuscallback&&e.statuscallback(i,"cmdstart","",i.sheetobj.statuscallbackparams),o&&i.sheetobj.changes.PushChange(""),i.timerobj=M.setTimeout(function(){Re.SheetCommandsTimerRoutine(i,n,o)},i.firsttimerdelay)},Re.SheetCommandsTimerRoutine=function(e,t,o){var i,n=new Date;for(e.timerobj=null;!t.EOF();){try{i=Re.ExecuteSheetCommand(e.sheetobj,t,o)}catch(e){i=e.message}if(i&&("function"==typeof alert?alert(i):console.log(i)),t.NextLine(),new Date-n>=e.maxtimeslice)return void(e.timerobj=M.setTimeout(function(){Re.SheetCommandsTimerRoutine(e,t,o)},e.timerdelay))}e.sheetobj.statuscallback&&e.sheetobj.statuscallback(e,"cmdend","",e.sheetobj.statuscallbackparams)},Re.ExecuteSheetCommand=function(a,e,t){function o(){var e=Re.ParseRange(r);d=e.cr1,(h=e.cr2).col>P.lastcol&&(P.lastcol=h.col),h.row>P.lastrow&&(P.lastrow=h.row)}var i,n,r,s,L,l,O,c,u,d,h,p,f,z,H,m,g,v,b,B,y,U,j,V,W,G,$,Y,K,q,X,J,Z,Q,ee,te,oe,C,ie,ne,re,se,w,ae,le,ce,ue,de,he,pe,x,_,fe,S,k,T,me,ge,ve,F,E,be,ye,D,Ce,P=a.attribs,A=a.changes,I=Re.CellProperties,we=Re.Constants,xe=!1,_e="",Se=e.RestOfStringNoMove();switch(t&&a.changes.AddDo(Se),i=e.NextToken()){case"set":if(r=e.NextToken(),s=e.NextToken(),n=e.RestOfString(),c="set "+r+" "+s,"sheet"==r)switch(a.renderneeded=!0,s){case"defaultcolwidth":t&&A.AddUndo(c,P[s]),P[s]=n;break;case"defaultcolor":case"defaultbgcolor":t&&A.AddUndo(c,a.GetStyleString("color",P[s])),P[s]=a.GetStyleNum("color",n);break;case"defaultlayout":t&&A.AddUndo(c,a.GetStyleString("layout",P[s])),P[s]=a.GetStyleNum("layout",n);break;case"defaultfont":t&&A.AddUndo(c,a.GetStyleString("font",P[s])),P[s]=a.GetStyleNum("font",n="* * *"==n?"":n);break;case"defaulttextformat":case"defaultnontextformat":t&&A.AddUndo(c,a.GetStyleString("cellformat",P[s])),P[s]=a.GetStyleNum("cellformat",n);break;case"defaulttextvalueformat":case"defaultnontextvalueformat":for(p in t&&A.AddUndo(c,a.GetStyleString("valueformat",P[s])),P[s]=a.GetStyleNum("valueformat",n),a.cells)delete a.cells[p].displaystring;break;case"lastcol":case"lastrow":t&&A.AddUndo(c,+P[s]),"number"==typeof(L=+n)&&(P[s]=0<L?L:1);break;case"recalc":t&&A.AddUndo(c,P[s]),"off"==n?P.recalc=n:delete P.recalc;break;case"usermaxcol":case"usermaxrow":t&&A.AddUndo(c,+P[s]),"number"==typeof(L=+n)&&(P[s]=0<L?L:0);break;default:_e=we.s_escUnknownSheetCmd+Se}else if(/^[a-z]{1,2}(:[a-z]{1,2})?$/i.test(r))for(a.renderneeded=!0,l=(r=r.toUpperCase()).indexOf(":"),h=0<=l?(d=Re.coordToCr(r.substring(0,l)+"1"),Re.coordToCr(r.substring(l+1)+"1")):d=Re.coordToCr(r+"1"),S=d.col;S<=h.col;S++)"width"==s?(p=Re.rcColname(S),t&&A.AddUndo("set "+p+" width",a.colattribs.width[p]),0<n.length?a.colattribs.width[p]=n:delete a.colattribs.width[p]):"hide"==s&&(a.hiddencolrow="col",p=Re.rcColname(S),t&&A.AddUndo("set "+p+" hide",a.colattribs.hide[p]),0<n.length?a.colattribs.hide[p]=n:delete a.colattribs.hide[p]);else if(/^\d+(:\d+)?$/i.test(r))for(a.renderneeded=!0,l=(r=r.toUpperCase()).indexOf(":"),h=0<=l?(d=Re.coordToCr("A"+r.substring(0,l)),Re.coordToCr("A"+r.substring(l+1))):d=Re.coordToCr("A"+r),k=d.row;k<=h.row;k++)"height"==s?(t&&A.AddUndo("set "+k+" height",a.rowattribs.height[k]),0<n.length?a.rowattribs.height[k]=n:delete a.rowattribs.height[k]):"hide"==s&&(a.hiddencolrow="row",t&&A.AddUndo("set "+k+" hide",a.rowattribs.hide[k]),0<n.length?a.rowattribs.hide[k]=n:delete a.rowattribs.hide[k]);else if(/^[a-z]{1,2}\d+(:[a-z]{1,2}\d+)?$/i.test(r))for(xe=!0,o(),d.row!=h.row||d.col!=h.col||a.celldisplayneeded||a.renderneeded?(a.renderneeded=!0,a.celldisplayneeded=""):a.celldisplayneeded=Re.crToCoord(d.col,d.row),k=d.row;k<=h.row;k++)for(S=d.col;S<=h.col;S++)p=Re.crToCoord(S,k),(f=a.GetAssuredCell(p)).readonly&&"readonly"!=s||(t&&A.AddUndo("set "+p+" all",a.CellToString(f)),"value"==s?(l=n.indexOf(" "),f.datavalue=+n.substring(l+1),delete f.errors,f.datatype="v",f.valuetype=n.substring(0,l),delete f.displaystring,delete f.parseinfo,P.needsrecalc="yes"):"text"==s?(l=n.indexOf(" "),f.datavalue=Re.decodeFromSave(n.substring(l+1)),delete f.errors,f.datatype="t",f.valuetype=n.substring(0,l),delete f.displaystring,delete f.parseinfo,P.needsrecalc="yes"):"formula"==s?(f.datavalue=0,delete f.errors,f.datatype="f",Re._app&&"e#N/A"!=f.valuetype&&(f.prevvaluetype=f.valuetype),f.valuetype="e#N/A",f.formula=n,delete f.displaystring,delete f.parseinfo,P.needsrecalc="yes"):"constant"==s?(l=n.indexOf(" "),O=n.substring(l+1).indexOf(" "),f.datavalue=+n.substring(l+1,l+1+O),f.valuetype=n.substring(0,l),"e"==f.valuetype.charAt(0)?f.errors=f.valuetype.substring(1):delete f.errors,f.datatype="c",f.formula=n.substring(l+O+2),delete f.displaystring,delete f.parseinfo,P.needsrecalc="yes"):"empty"==s?(f.datavalue="",delete f.errors,f.datatype=null,f.formula="",f.valuetype="b",delete f.displaystring,delete f.parseinfo,P.needsrecalc="yes"):"all"==s?(0<n.length?(f=new Re.Cell(p),a.CellFromStringParts(f,n.split(":"),1),a.cells[p]=f):delete a.cells[p],P.needsrecalc="yes"):/^b[trbl]$/.test(s)?(f[s]=a.GetStyleNum("borderstyle",n),a.renderneeded=!0):"color"==s||"bgcolor"==s?f[s]=a.GetStyleNum("color",n):"layout"==s||"cellformat"==s?f[s]=a.GetStyleNum(s,n):"font"==s?f[s]=a.GetStyleNum("font",n="* * *"==n?"":n):"textvalueformat"==s||"nontextvalueformat"==s?(f[s]=a.GetStyleNum("valueformat",n),delete f.displaystring):"cssc"==s?(n=n.replace(/[^a-zA-Z0-9\-]/g,""),f.cssc=n):"csss"==s?(n=n.replace(/\n/g,""),f.csss=n):"mod"==s?(n=n.replace(/[^yY]/g,"").toLowerCase(),f.mod=n):"comment"==s?f.comment=Re.decodeFromSave(n):"readonly"==s?f.readonly="yes"==n.toLowerCase():_e=we.s_escUnknownSetCoordCmd+Se);break;case"merge":if(a.renderneeded=!0,r=e.NextToken(),n=e.RestOfString(),o(),(f=a.GetAssuredCell(d.coord)).readonly)break;for(k=d.row;k<=h.row;k++)for(S=d.col;S<=h.col;S++)k==d.row&&S==d.col||(quashedCellCoord=Re.crToCoord(S,k),quashedCell=a.GetAssuredCell(quashedCellCoord),t&&A.AddUndo("set "+quashedCellCoord+" all",a.CellToString(quashedCell)),delete a.cells[quashedCellCoord]);t&&A.AddUndo("unmerge "+d.coord),h.col>d.col?f.colspan=h.col-d.col+1:delete f.colspan,h.row>d.row?f.rowspan=h.row-d.row+1:delete f.rowspan,a.changedrendervalues=!0;break;case"unmerge":if(a.renderneeded=!0,r=e.NextToken(),n=e.RestOfString(),o(),(f=a.GetAssuredCell(d.coord)).readonly)break;t&&A.AddUndo("merge "+d.coord+":"+Re.crToCoord(d.col+(f.colspan||1)-1,d.row+(f.rowspan||1)-1)),delete f.colspan,delete f.rowspan,a.changedrendervalues=!0;break;case"erase":case"cut":for(a.renderneeded=!0,a.changedrendervalues=!0,r=e.NextToken(),n=e.RestOfString(),o(),t&&A.AddUndo("changedrendervalues"),"cut"==i&&(t&&A.AddUndo("loadclipboard",Re.encodeForSave(Re.Clipboard.clipboard)),Re.Clipboard.clipboard=Re.CreateSheetSave(a,r)),k=d.row;k<=h.row;k++)for(S=d.col;S<=h.col;S++)p=Re.crToCoord(S,k),(f=a.GetAssuredCell(p)).readonly||(t&&A.AddUndo("set "+p+" all",a.CellToString(f)),"all"==n?delete a.cells[p]:"formulas"==n?(f.datavalue="",f.datatype=null,f.formula="",f.valuetype="b",delete f.errors,delete f.displaystring,delete f.parseinfo,f.comment&&delete f.comment):"formats"==n&&((z=new Re.Cell(p)).datavalue=f.datavalue,z.datatype=f.datatype,z.formula=f.formula,z.valuetype=f.valuetype,f.comment&&(z.comment=f.comment),a.cells[p]=z));P.needsrecalc="yes";break;case"fillright":case"filldown":function ke(e){function t(e){return"v"==e||"c"==e}var o,i,n=Re.GetSpreadsheetControlObject().editor,r=n.range2,s=void 0;return r.hasrange&&(e&&r.bottom-r.top==1&&r.left==r.right?(o=a.GetAssuredCell(Re.crToCoord(r.left,r.top)),i=a.GetAssuredCell(Re.crToCoord(r.left,r.bottom)),t(o.datatype)&&t(i.datatype)&&(s=i.datavalue-o.datavalue)):e||r.left==r.right||(o=a.GetAssuredCell(Re.crToCoord(r.left,r.top)),i=a.GetAssuredCell(Re.crToCoord(r.right,r.top)),t(o.datatype)&&t(i.datatype)&&(s=i.datavalue-o.datavalue))),n.Range2Remove(),s}for(a.renderneeded=!0,a.changedrendervalues=!0,t&&A.AddUndo("changedrendervalues"),r=e.NextToken(),n=e.RestOfString(),o(),ge="fillright"==i?(m=d.row,g=d.col+1,ke(!(H=!0))):(m=d.row+1,g=d.col,ke(!(H=!1))),k=m;k<=h.row;k++)for(S=g;S<=h.col;S++)if(p=Re.crToCoord(S,k),!(f=a.GetAssuredCell(p)).readonly){if(t&&A.AddUndo("set "+p+" all",a.CellToString(f)),v=H?(M=Re.crToCoord(d.col,k),b=S-g+1,0):(M=Re.crToCoord(S,d.row),b=0,k-m+1),R=a.GetAssuredCell(M),"all"==n||"formats"==n)for(s in I)1!=I[s]&&(R[s],3==I[s]?delete f[s]:f[s]=R[s]);"all"!=n&&"formulas"!=n||(f.datavalue=void 0!==ge?R.datavalue+(H?b:v)*ge:R.datavalue,f.datatype=R.datatype,f.valuetype=R.valuetype,"f"==f.datatype?f.formula=Re.OffsetFormulaCoords(R.formula,b,v):f.formula=R.formula,delete f.parseinfo,f.errors=R.errors),delete f.displaystring}P.needsrecalc="yes";break;case"copy":r=e.NextToken(),n=e.RestOfString(),t&&A.AddUndo("loadclipboard",Re.encodeForSave(Re.Clipboard.clipboard)),Re.Clipboard.clipboard=Re.CreateSheetSave(a,r);break;case"loadclipboard":n=e.RestOfString(),t&&A.AddUndo("loadclipboard",Re.encodeForSave(Re.Clipboard.clipboard)),Re.Clipboard.clipboard=Re.decodeFromSave(n);break;case"clearclipboard":t&&A.AddUndo("loadclipboard",Re.encodeForSave(Re.Clipboard.clipboard)),Re.Clipboard.clipboard="";break;case"paste":if(a.renderneeded=!0,a.changedrendervalues=!0,t&&A.AddUndo("changedrendervalues"),r=e.NextToken(),n=e.RestOfString(),o(),!Re.Clipboard.clipboard)break;for((B=new Re.Sheet).ParseSheetSave(Re.Clipboard.clipboard),y=Re.ParseRange(B.copiedfrom),U=Math.max(h.col-d.col+1,y.cr2.col-y.cr1.col+1),j=Math.max(h.row-d.row+1,y.cr2.row-y.cr1.row+1),d.col+U-1>P.lastcol&&(P.lastcol=d.col+U-1),d.row+j-1>P.lastrow&&(P.lastrow=d.row+j-1),k=d.row;k<d.row+j;k++)for(S=d.col;S<d.col+U;S++)if(p=Re.crToCoord(S,k),!(f=a.GetAssuredCell(p)).readonly){t&&A.AddUndo("set "+p+" all",a.CellToString(f));var Te=y.cr1.col+(S-d.col)%(y.cr2.col-y.cr1.col+1),Fe=y.cr1.row+(k-d.row)%(y.cr2.row-y.cr1.row+1),M=Re.crToCoord(Te,Fe),R=B.GetAssuredCell(M);if("all"==n||"formats"==n)for(s in k==d.row&&(sourceColname=Re.rcColname(y.cr1.col+(S-d.col)%(y.cr2.col-y.cr1.col+1)),colWidth=B.colattribs.width[sourceColname],colHide=B.colattribs.hide[sourceColname],null!=colWidth&&(a.colattribs.width[Re.rcColname(S)]=colWidth),null!=colHide&&(a.colattribs.hide[Re.rcColname(S)]=colHide)),S==d.col&&(sourceRow=y.cr1.row+(k-d.row)%(y.cr2.row-y.cr1.row+1),null!=(rowHide=B.rowattribs.hide[sourceRow])&&(a.rowattribs.hide[k]=rowHide)),I)1!=I[s]&&(R[s],3==I[s]?delete f[s]:(V=Re.CellPropertiesTable[s])&&R[s]?f[s]=a.GetStyleNum(V,B.GetStyleString(V,R[s])):f[s]=R[s]);"all"!=n&&"formulas"!=n||(f.datavalue=R.datavalue,f.datatype=R.datatype,f.valuetype=R.valuetype,"f"==f.datatype?f.formula=Re.OffsetFormulaCoords(R.formula,S-Te,k-Fe):f.formula=R.formula,delete f.parseinfo,f.errors=R.errors,R.comment?f.comment=R.comment:f.comment&&delete f.comment),delete f.displaystring}P.needsrecalc="yes";break;case"sort":for(a.renderneeded=!0,a.changedrendervalues=!0,t&&A.AddUndo("changedrendervalues"),r=e.NextToken(),o(),ne=[],re=[],w=se=0;w<=3;w++)ne[w]=e.NextToken(),re[w]=e.NextToken(),ne[w]&&(se=w);for(le={},ae=[],ce=[],ue=[],k=d.row;k<=h.row;k++){for(S=d.col;S<=h.col;S++)p=Re.crToCoord(S,k),(f=a.cells[p])?(le[p]=a.CellToString(f),t&&A.AddUndo("set "+p+" all",le[p])):t&&A.AddUndo("set "+p+" all");for(ae.push(ae.length),ce.push([]),ue.push([]),slast=ue.length-1,w=0;w<=se;w++)p=ne[w]+k,u=(f=a.GetAssuredCell(p)).datavalue,"t"==(de=f.valuetype.charAt(0)||"b")&&(u=u.toLowerCase()),ce[slast].push(u),ue[slast].push(de)}for(ae.sort(function(e,t){for(var o,i,n,r,s=0;s<=se;s++)if(i="up"==re[s]?(o=e,t):(o=t,e),n=ue[o][s],tb=ue[i][s],"t"==n?"t"==tb?(o=ce[o][s],r=(i=ce[i][s])<o?1:o<i?-1:0):"n"==tb?r=1:"b"==tb?r="up"==re[s]?-1:1:"e"==tb&&(r=-1):"n"==n?"t"==tb?r=-1:"n"==tb?(o=+ce[o][s],r=(i=+ce[i][s])<o?1:o<i?-1:0):"b"==tb?r="up"==re[s]?-1:1:"e"==tb&&(r=-1):"e"==n?r="e"==tb?(o=ce[o][s],(i=ce[i][s])<o?1:o<i?-1:0):"b"==tb&&"up"==re[s]?-1:1:"b"==n&&(r="b"==tb?0:"up"==re[s]?1:-1),r)return r;return r=t<e?1:e<t?-1:0}),k=d.row;k<=h.row;k++)for(he=ae[k-d.row],S=d.col;S<=h.col;S++)p=Re.crToCoord(S,k),le[pe=Re.crToCoord(S,he+d.row)]?(f=new Re.Cell(p),a.CellFromStringParts(f,le[pe].split(":"),1),"f"==f.datatype&&(f.formula=Re.OffsetFormulaCoords(f.formula,0,k-d.row-he)),a.cells[p]=f):delete a.cells[p];P.needsrecalc="yes";break;case"insertcol":case"insertrow":for(a.renderneeded=!0,a.changedrendervalues=!0,a.widgetsClean=!1,r=e.NextToken(),n=e.RestOfString(),o(),"insertcol"==i?(W=d.col,v=0,$=d.col,K=d.col,Y=G=b=1,q=P.lastrow,t&&A.AddUndo("deletecol "+d.coord)):(b=0,G=d.row,$=v=W=1,K=P.lastcol,Y=d.row,q=d.row,t&&A.AddUndo("deleterow "+d.coord)),k=P.lastrow;G<=k;k--)for(S=P.lastcol;W<=S;S--)M=Re.crToCoord(S,k),p=Re.crToCoord(S+b,k+v),a.cells[M]?a.cells[p]=a.cells[M]:delete a.cells[p];for(k=Y;k<=q;k++)for(S=$;S<=K;S++)for(s in p=Re.crToCoord(S,k),f=new Re.Cell(p),a.cells[p]=f,M=Re.crToCoord(S-b,k-v),R=a.GetAssuredCell(M),I)2==I[s]&&(f[s]=R[s]);for(p in a.cells)(f=a.cells[p])&&"f"==f.datatype&&(f.formula=Re.AdjustFormulaCoords(f.formula,d.col,b,d.row,v)),f&&delete f.parseinfo;for(x in a.names)a.names[x]&&(fe="","="==(_=a.names[x].definition).charAt(0)&&(fe="=",_=_.substring(1)),a.names[x].definition=fe+Re.AdjustFormulaCoords(_,d.col,b,d.row,v));for(k=P.lastrow;G<=k&&"insertrow"==i;k--)for(s in X=k+v,a.rowattribs)u=a.rowattribs[s][k],a.rowattribs[s][X]!=u&&(u?a.rowattribs[s][X]=u:delete a.rowattribs[s][X]);for(S=P.lastcol;W<=S&&"insertcol"==i;S--)for(s in Z=Re.rcColname(S),J=Re.rcColname(S+b),a.colattribs)u=a.colattribs[s][Z],a.colattribs[s][J]!=u&&(u?a.colattribs[s][J]=u:delete a.colattribs[s][J]);(Pe=new Re.RenderContext(a)).CalculateCellSkipData();var Ee={};for(Ae in Pe.cellskip){var De=Re.coordToCr(Ae),N=Pe.cellskip[Ae];"insertcol"===i&&De.col===$&&(Ee[N]||(a.GetAssuredCell(N).colspan+=b),Ee[N]=!0),"insertrow"===i&&De.row===Y&&(Ee[N]||(a.GetAssuredCell(N).rowspan+=v),Ee[N]=!0)}P.lastcol+=b,P.lastrow+=v,P.needsrecalc="yes";break;case"deletecol":case"deleterow":for(a.renderneeded=!0,a.changedrendervalues=!0,a.widgetsClean=!1,r=e.NextToken(),n=e.RestOfString(),ee=P.lastcol,Q=P.lastrow,o(),k=m="deletecol"==i?(b=d.col-h.col-1,v=0,g=h.col+1,1):(b=0,v=d.row-h.row-1,h.row+(g=1));k<=Q-v;k++)for(S=g;S<=ee-b;S++)if(p=Re.crToCoord(S+b,k+v),(f=a.cells[p])&&f.readonly)return _e="Unable to remove "+("deletecol"==i?"column":"row")+", because cell "+f.coord+" is locked";for(k=m;k<=Q-v;k++)for(S=g;S<=ee-b;S++)p=Re.crToCoord(S+b,k+v),t&&(k<m-v||S<g-b)&&((f=a.cells[p])?A.AddUndo("set "+p+" all",a.CellToString(f)):A.AddUndo("erase "+p+" all")),M=Re.crToCoord(S,k),(f=a.cells[M])?a.cells[p]=f:delete a.cells[p];for(p in a.cells)(f=a.cells[p])&&("f"==f.datatype?(C=f.formula,f.formula=Re.AdjustFormulaCoords(C,d.col,b,d.row,v),f.formula!=C&&(delete f.parseinfo,t&&-1!=f.formula.indexOf("#REF!")&&(ie=Re.coordToCr(p),A.AddUndo("set "+Re.rcColname(ie.col-b)+(ie.row-v)+" formula "+C)))):delete f.parseinfo);for(x in a.names)a.names[x]&&(fe="","="==(_=a.names[x].definition).charAt(0)&&(fe="=",_=_.substring(1)),a.names[x].definition=fe+Re.AdjustFormulaCoords(_,d.col,b,d.row,v));for(k=m;k<=Q-v&&"deleterow"==i;k++)for(s in te=k+v,a.rowattribs)u=a.rowattribs[s][k],a.rowattribs[s][te]!=u&&(t&&A.AddUndo("set "+te+" "+s,a.rowattribs[s][te]),u?a.rowattribs[s][te]=u:delete a.rowattribs[s][te]);for(S=g;S<=ee-b&&"deletecol"==i;S++)for(s in Z=Re.rcColname(S),oe=Re.rcColname(S+b),a.colattribs)u=a.colattribs[s][Z],a.colattribs[s][oe]!=u&&(t&&A.AddUndo("set "+oe+" "+s,a.colattribs[s][oe]),u?a.colattribs[s][oe]=u:delete a.colattribs[s][oe]);(Pe=new Re.RenderContext(a)).CalculateCellSkipData();var Pe,Ae,Ie={};for(Ae in Pe.cellskip){var De=Re.coordToCr(Ae),N=Pe.cellskip[Ae],Me=Pe.coordToCR[N];"deletecol"===i&&De.col===g+b&&Me.col<De.col&&(Ie[N]||(a.GetAssuredCell(N).colspan+=b),Ie[N]=!0),"deleterow"===i&&De.row===m+v&&Me.row<De.row&&(Ie[N]||(a.GetAssuredCell(N).rowspan+=v),Ie[N]=!0)}if(t)if("deletecol"==i)for(S=d.col;S<=h.col;S++)A.AddUndo("insertcol "+Re.rcColname(d.col));else for(k=d.row;k<=h.row;k++)A.AddUndo("insertrow "+d.row);"deletecol"==i?d.col<=ee&&(h.col<=ee?P.lastcol+=b:P.lastcol=d.col-1):d.row<=Q&&(h.row<=Q?P.lastrow+=v:P.lastrow=d.row-1),P.needsrecalc="yes";break;case"movepaste":case"moveinsert":for(a.renderneeded=!0,a.changedrendervalues=!0,t&&A.AddUndo("changedrendervalues"),r=e.NextToken(),F=e.NextToken(),""==(n=e.RestOfString())&&(n="all"),o(),b=(E=Re.coordToCr(F)).col-d.col,v=E.row-d.row,U=h.col-d.col+1,j=h.row-d.row+1,ve={},k=d.row;k<=h.row;k++)for(S=d.col;S<=h.col;S++)if(p=Re.crToCoord(S,k),!(f=a.GetAssuredCell(p)).readonly&&(t&&A.AddUndo("set "+p+" all",a.CellToString(f)),a.cells[p])){for(s in ve[p]=new Re.Cell(p),I)f[s],ve[p][s]=f[s],"all"==n&&delete f[s],"formulas"!=n||1!=I[s]&&3!=I[s]||delete f[s],"formats"==n&&2==I[s]&&delete f[s];"formulas"==n&&(f.datavalue="",f.datatype=null,f.formula="",f.valuetype="b"),"all"==n&&delete a.cells[p]}if("moveinsert"==i&&(ye=be=!1,0==v&&(E.col<d.col||E.col>h.col)?be=E.col<d.col?(D=d.col-E.col,-1):(--E.col,b=E.col-h.col,D=E.col-h.col,1):0==b&&(E.row<d.row||E.row>h.row)?ye=E.row<d.row?(D=d.row-E.row,-1):(--E.row,v=E.row-h.row,D=E.row-h.row,1):i="movepaste"),Ce={},ye)for(k=0;k<D;k++)for(S=d.col;S<=h.col;S++){if(p=ye<0?(M=Re.crToCoord(S,E.row+D-k-1),Re.crToCoord(S,h.row-k)):(M=Re.crToCoord(S,E.row-D+k+1),Re.crToCoord(S,d.row+k)),R=a.GetAssuredCell(M),t&&A.AddUndo("set "+M+" all",a.CellToString(R)),f=a.GetAssuredCell(p),"all"==n||"formats"==n)for(s in I)1!=I[s]&&(R[s],3==I[s]?delete f[s]:f[s]=R[s]);"all"!=n&&"formulas"!=n||(f.datavalue=R.datavalue,f.datatype=R.datatype,f.valuetype=R.valuetype,f.formula=R.formula,delete f.parseinfo,f.errors=R.errors),delete f.displaystring,Ce[M]=p}if(be)for(S=0;S<D;S++)for(k=d.row;k<=h.row;k++){if(p=be<0?(M=Re.crToCoord(E.col+D-S-1,k),Re.crToCoord(h.col-S,k)):(M=Re.crToCoord(E.col-D+S+1,k),Re.crToCoord(d.col+S,k)),R=a.GetAssuredCell(M),t&&A.AddUndo("set "+M+" all",a.CellToString(R)),f=a.GetAssuredCell(p),"all"==n||"formats"==n)for(s in I)1!=I[s]&&(R[s],3==I[s]?delete f[s]:f[s]=R[s]);"all"!=n&&"formulas"!=n||(f.datavalue=R.datavalue,f.datatype=R.datatype,f.valuetype=R.valuetype,f.formula=R.formula,delete f.parseinfo,f.errors=R.errors),delete f.displaystring,Ce[M]=p}for(E.col+U-1>P.lastcol&&(P.lastcol=E.col+U-1),E.row+j-1>P.lastrow&&(P.lastrow=E.row+j-1),k=d.row;k<d.row+j;k++)for(S=d.col;S<d.col+U;S++)if(p=Re.crToCoord(S+b,k+v),!(f=a.GetAssuredCell(p)).readonly)if(t&&A.AddUndo("set "+p+" all",a.CellToString(f)),Ce[M=Re.crToCoord(S,k)]=p,"all"!=n||ve[M]){if(R=(R=ve[M])||a.GetAssuredCell(M),"all"==n||"formats"==n)for(s in I)1!=I[s]&&(R[s],3==I[s]?delete f[s]:f[s]=R[s]);"all"!=n&&"formulas"!=n||(f.datavalue=R.datavalue,f.datatype=R.datatype,f.valuetype=R.valuetype,f.formula=R.formula,delete f.parseinfo,f.errors=R.errors,R.comment?f.comment=R.comment:f.comment&&delete f.comment),delete f.displaystring}else delete a.cells[p];for(p in a.cells)(f=a.cells[p])&&("f"==f.datatype?(C=f.formula,f.formula=Re.ReplaceFormulaCoords(C,Ce),f.formula!=C&&(delete f.parseinfo,t&&!Ce[p]&&A.AddUndo("set "+p+" formula "+C))):delete f.parseinfo);for(x in a.names)a.names[x]&&(fe="","="==(C=_=a.names[x].definition).charAt(0)&&(fe="=",_=_.substring(1)),a.names[x].definition=fe+Re.ReplaceFormulaCoords(_,Ce),t&&a.names[x].definition!=C&&A.AddUndo("name define "+x+" "+C));P.needsrecalc="yes";break;case"name":if(r=e.NextToken(),x=e.NextToken(),n=e.RestOfString(),""==(x=x.toUpperCase().replace(/[^A-Z0-9_\.]/g,"")))break;if("define"==r){if(""==n)break;a.names[x]?(t&&A.AddUndo("name define "+x+" "+a.names[x].definition),a.names[x].definition=n):(t&&A.AddUndo("name delete "+x),a.names[x]={definition:n,desc:""})}else"desc"==r?a.names[x]&&(t&&A.AddUndo("name desc "+x+" "+a.names[x].desc),a.names[x].desc=n):"delete"==r&&(t&&(a.names[x].desc&&A.AddUndo("name desc "+x+" "+a.names[x].desc),A.AddUndo("name define "+x+" "+a.names[x].definition)),delete a.names[x]);P.needsrecalc="yes";break;case"recalc":P.needsrecalc="yes",a.recalconce=!0;break;case"redisplay":a.renderneeded=!0;break;case"changedrendervalues":a.changedrendervalues=!0;break;case"pane":if(x=e.NextToken().toUpperCase(),F=1,T=Re.GetSpreadsheetControlObject().editor,"ROW"===x.toUpperCase()){for(k=parseInt(e.NextToken(),10),void 0!==T.context.rowpanes[1]&&"number"==typeof T.context.rowpanes[1].first&&(F=T.context.rowpanes[1].first),t&&A.AddUndo("pane row "+F);"yes"==T.context.sheetobj.rowattribs.hide[k];)k++;(!k||k<=T.context.rowpanes[0].first)&&1<T.context.rowpanes.length?T.context.rowpanes.length=1:(T.context.rowpanes.length-1&&T.timeout,T.context.SetRowPaneFirstLast(0,T.context.rowpanes[0].first,k-1),T.context.SetRowPaneFirstLast(1,k,k)),T.griddiv&&(me=document.getElementById("trackingline-vertical"))&&(T.griddiv.removeChild(me),T.FitToEditTable())}else{for(S=parseInt(e.NextToken(),10),void 0!==T.context.colpanes[1]&&"number"==typeof T.context.colpanes[1].first&&(F=T.context.colpanes[1].first),t&&A.AddUndo("pane col "+F);"yes"==T.context.sheetobj.colattribs.hide[Re.rcColname(S)];)S++;(!S||S<=T.context.colpanes[0].first)&&1<T.context.colpanes.length?T.context.colpanes.length=1:(T.context.colpanes.length-1&&T.timeout,T.context.SetColPaneFirstLast(0,T.context.colpanes[0].first,S-1),T.context.SetColPaneFirstLast(1,S,S)),T.griddiv&&(me=document.getElementById("trackingline-horizon"))&&(T.griddiv.removeChild(me),T.FitToEditTable())}a.renderneeded=!0;break;case"startcmdextension":x=e.NextToken(),(F=a.sci.CmdExtensionCallbacks[x])&&F.func(x,F.data,a,e,t);break;case"settimetrigger":case"sendemail":case"submitform":break;default:_e=we.s_escUnknownCmd+Se}return Re._app&&(xe?(1==a.renderneeded&&"value"!=s&&"text"!=s&&"formula"!=s&&"constant"!=s&&"empty"!=s||"all"==s)&&(a.widgetsClean=!1):1==a.renderneeded&&(a.widgetsClean=!1)),_e},Re.SheetUndo=function(e){for(var t=e.changes.TOS(),o="",i=t?t.undo.length-1:-1;0<=i;i--)o&&(o+="\n"),o+=t.undo[i];e.changes.Undo(),e.ScheduleSheetCommands(o,!1)},Re.SheetRedo=function(e){if(e.changes.Redo()){for(var t=e.changes.TOS(),o="",i=0;t&&i<t.command.length;i++)o&&(o+="\n"),o+=t.command[i];e.ScheduleSheetCommands(o,!1)}else e.ScheduleSheetCommands("",!1)},Re.CreateAuditString=function(e){for(var t,o="",i=e.changes.stack,n=e.changes.tos,r=0;r<=n;r++)for(t=0;t<i[r].command.length;t++)o+=i[r].command[t]+"\n";return o},Re.GetStyleNum=function(e,t,o){var i;return 0==o.length?0:((i=e[t+"hash"][o])||(e[t+"s"].length<1&&e[t+"s"].push(""),i=e[t+"s"].push(o)-1,e[t+"hash"][o]=i,e.changedrendervalues=!0),i)},Re.GetStyleString=function(e,t,o){return o?e[t+"s"][o]:null},Re.OffsetFormulaCoords=function(e,t,o){var i,n,r,s,a="",l=Re.Formula;if(!l)return"Need SocialCalc.Formula";for(var c=l.TokenType,u=c.op,d=c.string,h=c.coord,p=l.TokenOpExpansion,f=l.ParseFormulaIntoTokens(e),m=0;m<f.length;m++)n=f[m].type,i=f[m].text,n==h?(s="",r=Re.coordToCr(i),"$"!=i.charAt(0)?r.col+=t:s+="$",s+=Re.rcColname(r.col),-1==i.indexOf("$",1)?r.row+=o:s+="$",s+=r.row,a+=s=r.row<1||r.col<1?"#REF!":s):n==d?0<=i.indexOf('"')?a+='"'+i.replace(/"/,'""')+'"':a+='"'+i+'"':a+=n==u&&p[i]||i;return a},Re.AdjustFormulaCoords=function(e,t,o,i,n){var r,s,a,l,c="",u=!1,d=Re.Formula;if(!d)return"Need SocialCalc.Formula";var h=d.TokenType,p=h.op,f=h.string,m=h.coord,g=d.TokenOpExpansion;for(parseinfo=Re.Formula.ParseFormulaIntoTokens(e),a=0;a<parseinfo.length;a++)r=parseinfo[a].type,s=parseinfo[a].text,r==p&&("!"==s?u=!0:":"!=s&&(u=!1),s=g[s]||s),r==m?(cr=Re.coordToCr(s),(o<0&&cr.col>=t&&cr.col<t-o||n<0&&cr.row>=i&&cr.row<i-n)&&!u&&(cr.col=0,cr.row=0),u||(cr.col>=t&&(cr.col+=o),cr.row>=i&&(cr.row+=n)),l="$"==s.charAt(0)?"$"+Re.rcColname(cr.col):Re.rcColname(cr.col),-1!=s.indexOf("$",1)?l+="$"+cr.row:l+=cr.row,s=l=cr.row<1||cr.col<1?"#REF!":l):r==f&&(s=0<=s.indexOf('"')?'"'+s.replace(/"/,'""')+'"':'"'+s+'"'),c+=s;return c},Re.ReplaceFormulaCoords=function(e,t){var o,i,n,r,s="",a=!1,l=Re.Formula;if(!l)return"Need SocialCalc.Formula";var c=l.TokenType,u=c.op,d=c.string,h=c.coord,p=l.TokenOpExpansion;for(parseinfo=Re.Formula.ParseFormulaIntoTokens(e),n=0;n<parseinfo.length;n++)o=parseinfo[n].type,i=parseinfo[n].text,o==u&&("!"==i?a=!0:":"!=i&&(a=!1),i=p[i]||i),o==h?(cr=Re.coordToCr(i),t[r=Re.crToCoord(cr.col,cr.row)]&&!a&&(cr=Re.coordToCr(t[r]),r="$"==i.charAt(0)?"$"+Re.rcColname(cr.col):Re.rcColname(cr.col),-1!=i.indexOf("$",1)?r+="$"+cr.row:r+=cr.row,i=r)):o==d&&(i=0<=i.indexOf('"')?'"'+i.replace(/"/,'""')+'"':'"'+i+'"'),s+=i;return s},Re.RecalcInfo={sheet:null,currentState:0,state:{idle:0,start_calc:1,order:2,calc:3,start_wait:4,done_wait:5},recalctimer:null,maxtimeslice:100,timeslicedelay:1,starttime:0,queue:[],LoadSheet:function(e){return!1}},Re.RecalcData=function(){this.inrecalc=!0,this.celllist=[],this.celllistitem=0,this.calclist=null,this.calclistlength=0,this.firstcalc=null,this.lastcalc=null,this.nextcalc=null,this.count=0,this.checkinfo={}},Re.RecalcCheckInfo=function(){this.oldcoord=null,this.parsepos=0,this.inrange=!1,this.inrangestart=!1,this.cr1=null,this.cr2=null,this.c1=null,this.c2=null,this.r1=null,this.r2=null,this.c=null,this.r=null},Re.RecalcSheet=function(e){var t=Re.RecalcInfo;t.currentState!=t.state.idle?t.queue.push(e):(delete e.attribs.circularreferencecell,Re.Formula.FreshnessInfoReset(),Re.RecalcClearTimeout(),t.sheet=e,t.currentState=t.state.start_calc,t.starttime=new Date,e.statuscallback&&e.statuscallback(t,"calcstart",null,e.statuscallbackparams),Re.RecalcSetTimeout())},Re.RecalcSetTimeout=function(){var e=Re.RecalcInfo;e.recalctimer=M.setTimeout(Re.RecalcTimerRoutine,e.timeslicedelay)},Re.RecalcClearTimeout=function(){var e=Re.RecalcInfo;e.recalctimer&&(M.clearTimeout(e.recalctimer),e.recalctimer=null)},Re.RecalcLoadedSheet=function(e,t,o,i){var n=Re.RecalcInfo,r=Re.Formula,e=Re.Formula.AddSheetToCache(e||r.SheetCache.waitingForLoading,t,i);o&&e&&"off"!=e.attribs.recalc&&(e.previousrecalcsheet=n.sheet,n.sheet=e,n.currentState=n.state.start_calc),r.SheetCache.waitingForLoading=null,Re.RecalcSetTimeout()},Re.RecalcTimerRoutine=function(){var e,t,o=new Date,i=0,n=Re.Formula;if(!n)return"Need SocialCalc.Formula";var r=Re.RecalcInfo,s=r.sheet;if(s){function a(e,t){s.statuscallback&&s.statuscallback(c,e,t,s.statuscallbackparams)}var l,c=s.recalcdata||(s.recalcdata={});if(Re.RecalcClearTimeout(),r.currentState==r.state.start_calc){for(t in c=new Re.RecalcData,s.recalcdata=c,s.cells)t&&c.celllist.push(t);c.calclist={},r.currentState=r.state.order}if(r.currentState==r.state.order){for(;c.celllistitem<c.celllist.length;)if(t=c.celllist[c.celllistitem++],Re.RecalcCheckCell(s,t),new Date-o>=r.maxtimeslice)return a("calcorder",{coord:t,total:c.celllist.length,count:c.celllistitem}),void Re.RecalcSetTimeout();return a("calccheckdone",c.calclistlength),c.nextcalc=c.firstcalc,r.currentState=r.state.calc,void Re.RecalcSetTimeout()}if(r.currentState==r.state.start_wait)return r.currentState=r.state.done_wait,r.LoadSheet&&r.LoadSheet(n.SheetCache.waitingForLoading)?void 0:void Re.RecalcLoadedSheet(null,"",!1);if(r.currentState==r.state.done_wait)return r.currentState=r.state.calc,void Re.RecalcSetTimeout();for(r.currentState!=r.state.calc&&alert("Recalc state error: "+r.currentState+". Error in SocialCalc code."),t=s.recalcdata.nextcalc;t;){if((l=s.cells[t]).parseinfo||(l.parseinfo=n.ParseFormulaIntoTokens(l.formula)),l.parseinfo.coord=t,e=n.evaluate_parsed_formula(l.parseinfo,s,!1),n.SheetCache.waitingForLoading)return 1!=r.firstRenderScheduled&&(Re.GetSpreadsheetControlObject().editor.ScheduleRender(!1),r.firstRenderScheduled=!0),c.nextcalc=t,c.count+=i,a("calcloading",{sheetname:n.SheetCache.waitingForLoading}),r.currentState=r.state.start_wait,void Re.RecalcSetTimeout();if(n.RemoteFunctionInfo.waitingForServer)return c.nextcalc=t,c.count+=i,a("calcserverfunc",{funcname:n.RemoteFunctionInfo.waitingForServer,coord:t,total:c.calclistlength,count:c.count}),void(r.currentState=r.state.done_wait);if(l.datavalue==e.value&&l.valuetype==e.type||(l.datavalue=e.value,l.valuetype=e.type,delete l.displaystring,s.recalcchangedavalue=!0),e.error&&(l.errors=e.error),i++,t=s.recalcdata.calclist[t],new Date-o>=r.maxtimeslice)return c.nextcalc=t,c.count+=i,a("calcstep",{coord:t,total:c.calclistlength,count:c.count}),void Re.RecalcSetTimeout()}if(c.inrecalc=!1,s.reRenderCellList=s.recalcdata.celllist,delete s.recalcdata,delete s.attribs.needsrecalc,r.sheet=s.previousrecalcsheet||null,r.sheet)return r.currentState=r.state.calc,void Re.RecalcSetTimeout();n.FreshnessInfo.recalc_completed=!0,r.currentState=r.state.idle,a("calcfinished",new Date-r.starttime),0<r.queue.length&&(s=r.queue.shift()).RecalcSheet()}},Re.RecalcCheckCell=function(e,t){var o,i,n,r,s,a,l,c,u,d=Re.Formula;if(!d)return"Need SocialCalc.Formula";var h=d.TokenType,p=h.op,f=h.name,m=h.coord,g=e.recalcdata,v=g.checkinfo,b=!1,y=null,C=t;e:for(;C;)if(c=e.cells[C],u=v[C],!c||"f"!=c.datatype||u&&"object"!=typeof u)v[C=y]&&(y=v[C].oldcoord);else{for(u||(u=new Re.RecalcCheckInfo,v[C]=u),c.errors&&delete c.errors,c.parseinfo||(c.parseinfo=d.ParseFormulaIntoTokens(c.formula)),o=c.parseinfo,n=u.parsepos;n<o.length;n++){if(u.inrange){if(u.inrangestart&&(u.cr1.col>u.cr2.col?(u.c1=u.cr2.col,u.c2=u.cr1.col):(u.c1=u.cr1.col,u.c2=u.cr2.col),u.c=u.c1-1,u.cr1.row>u.cr2.row?(u.r1=u.cr2.row,u.r2=u.cr1.row):(u.r1=u.cr1.row,u.r2=u.cr2.row),u.r=u.r1,u.inrangestart=!1),u.c+=1,u.c>u.c2){if(u.r+=1,u.r>u.r2){u.inrange=!1;continue}u.c=u.c1}if(r=Re.crToCoord(u.c,u.r),u.parsepos=n,u.oldcoord=y,y=C,v[C=r]&&"object"==typeof v[C])return c.errors=Re.Constants.s_caccCircRef+t,v[t]=!0,g.firstcalc?g.calclist[g.lastcalc]=t:g.firstcalc=t,g.lastcalc=t,g.calclistlength++,e.attribs.circularreferencecell=C+"|"+y,c.errors;continue e}if(r=o[n].type,i=o[n].text,r==p&&("!"==i?b=!0:":"!=i&&(b=!1)),r==f)if("range"==(s=d.LookupName(e,i)).type){if(-1!=(a=s.value.indexOf("|"))){u.cr1=Re.coordToCr(s.value.substring(0,a)),l=s.value.indexOf("|",a+1),u.cr2=Re.coordToCr(s.value.substring(a+1,l)),u.inrange=!0,u.inrangestart=!0,n-=1;continue}}else"coord"==s.type&&(r=m,i=s.value);if(r==m)if(2<=n&&o[n-1].type==p&&":"==o[n-1].text&&o[n-2].type==m&&!b)u.cr1=Re.coordToCr(o[n-2].text),u.cr2=Re.coordToCr(i),u.inrange=!0,u.inrangestart=!0,n-=1;else if(!b){if(-1!=i.indexOf("$")&&(i=i.replace(/\$/g,"")),u.parsepos=n+1,u.oldcoord=y,y=C,v[C=i]&&"object"==typeof v[C])return c.errors=Re.Constants.s_caccCircRef+t,v[t]=!0,g.firstcalc?g.calclist[g.lastcalc]=t:g.firstcalc=t,g.lastcalc=t,g.calclistlength++,e.attribs.circularreferencecell=C+"|"+y,c.errors;continue e}}v[C]=!(b=!1),g.firstcalc?g.calclist[g.lastcalc]=C:g.firstcalc=C,g.lastcalc=C,g.calclistlength++,y=v[C=y]?v[C].oldcoord:null}return""},Re.Parse=function(e){this.str=e,this.pos=0,this.delimiter=" ",this.lineEnd=e.indexOf("\n"),this.lineEnd<0&&(this.lineEnd=e.length)},Re.Parse.prototype.NextToken=function(){if(this.pos<0)return"";var e=this.str.indexOf(this.delimiter,this.pos),t=this.pos;return 0<=(e=e>this.lineEnd?this.lineEnd:e)?(this.pos=e+1,this.str.substring(t,e)):(this.pos=this.lineEnd,this.str.substring(t,this.lineEnd))},Re.Parse.prototype.RestOfString=function(){var e=this.pos;return this.pos<0||this.pos>=this.lineEnd?"":(this.pos=this.lineEnd,this.str.substring(e,this.lineEnd))},Re.Parse.prototype.RestOfStringNoMove=function(){return this.pos<0||this.pos>=this.lineEnd?"":this.str.substring(this.pos,this.lineEnd)},Re.Parse.prototype.NextLine=function(){this.pos=this.lineEnd+1,this.lineEnd=this.str.indexOf("\n",this.pos),this.lineEnd<0&&(this.lineEnd=this.str.length)},Re.Parse.prototype.EOF=function(){return this.pos<0||this.pos>=this.str.length},Re.UndoStack=function(){this.stack=[],this.tos=-1,this.maxRedo=0,this.maxUndo=50},Re.UndoStack.prototype.PushChange=function(e){for(;0<this.stack.length&&this.stack.length-1>this.tos;)this.stack.pop();this.stack.push({command:[],type:e,undo:[]}),this.maxRedo&&this.stack.length>this.maxRedo&&this.stack.shift(),this.maxUndo&&this.stack.length>this.maxUndo&&(this.stack[this.stack.length-this.maxUndo-1].undo=[]),this.tos=this.stack.length-1},Re.UndoStack.prototype.AddDo=function(){if(this.stack[this.stack.length-1]){for(var e=[],t=0;t<arguments.length;t++)null!=arguments[t]&&e.push(arguments[t]);var o=e.join(" ");this.stack[this.stack.length-1].command.push(o)}},Re.UndoStack.prototype.AddUndo=function(){if(this.stack[this.stack.length-1]){for(var e=[],t=0;t<arguments.length;t++)null!=arguments[t]&&e.push(arguments[t]);var o=e.join(" ");this.stack[this.stack.length-1].undo.push(o)}},Re.UndoStack.prototype.TOS=function(){return 0<=this.tos?this.stack[this.tos]:null},Re.UndoStack.prototype.Undo=function(){return 0<=this.tos&&(!this.maxUndo||this.tos>this.stack.length-this.maxUndo-1)&&(--this.tos,!0)},Re.UndoStack.prototype.Redo=function(){return this.tos<this.stack.length-1&&(this.tos+=1,!0)},Re.Clipboard={clipboard:""},Re.RenderContext=function(e){var t=e.attribs,o=Re.Constants;if(this.sheetobj=e,this.hideRowsCols=!1,this.showGrid=!1,this.showRCHeaders=!1,this.rownamewidth=o.defaultRowNameWidth,this.pixelsPerRow=o.defaultAssumedRowHeight,this.cellskip={},this.coordToCR={},this.colwidth=[],this.rowheight=[],this.totalwidth=0,this.totalheight=0,this.rowpanes=[],this.colpanes=[],this.colunhideleft=[],this.colunhideright=[],this.rowunhidetop=[],this.rowunhidebottom=[],this.maxcol=0,this.maxrow=0,this.highlights={},this.cursorsuffix="",this.highlightTypes={cursor:{style:o.defaultHighlightTypeCursorStyle,className:o.defaultHighlightTypeCursorClass},range:{style:o.defaultHighlightTypeRangeStyle,className:o.defaultHighlightTypeRangeClass},cursorinsertup:{style:"color:#FFF;backgroundColor:#A6A6A6;backgroundRepeat:repeat-x;backgroundPosition:top left;backgroundImage:url("+o.defaultImagePrefix+"cursorinsertup.gif);",className:o.defaultHighlightTypeCursorClass},cursorinsertleft:{style:"color:#FFF;backgroundColor:#A6A6A6;backgroundRepeat:repeat-y;backgroundPosition:top left;backgroundImage:url("+o.defaultImagePrefix+"cursorinsertleft.gif);",className:o.defaultHighlightTypeCursorClass},range2:{style:"color:#000;backgroundColor:#FFF;backgroundImage:url("+o.defaultImagePrefix+"range2.gif);",className:""}},this.cellIDprefix=o.defaultCellIDPrefix,this.defaultlinkstyle=null,this.defaultHTMLlinkstyle={type:"html"},this.defaultfontstyle=o.defaultCellFontStyle,this.defaultfontsize=o.defaultCellFontSize,this.defaultfontfamily=o.defaultCellFontFamily,this.defaultlayout=o.defaultCellLayout,this.defaultpanedividerwidth=o.defaultPaneDividerWidth,this.defaultpanedividerheight=o.defaultPaneDividerHeight,this.gridCSS=o.defaultGridCSS,this.commentClassName=o.defaultCommentClass,this.commentCSS=o.defaultCommentStyle,this.commentNoGridClassName=o.defaultCommentNoGridClass,this.commentNoGridCSS=o.defaultCommentNoGridStyle,this.readonlyClassName=o.defaultReadonlyClass,this.readonlyCSS=o.defaultReadonlyStyle,this.readonlyNoGridClassName=o.defaultReadonlyNoGridClass,this.readonlyNoGridCSS=o.defaultReadonlyNoGridStyle,this.readonlyComment=o.defaultReadonlyComment,this.classnames={colname:o.defaultColnameClass,rowname:o.defaultRownameClass,selectedcolname:o.defaultSelectedColnameClass,selectedrowname:o.defaultSelectedRownameClass,upperleft:o.defaultUpperLeftClass,skippedcell:o.defaultSkippedCellClass,panedivider:o.defaultPaneDividerClass,unhideleft:o.defaultUnhideLeftClass,unhideright:o.defaultUnhideRightClass,unhidetop:o.defaultUnhideTopClass,unhidebottom:o.defaultUnhideBottomClass,colresizebar:o.defaultColResizeBarClass,rowresizebar:o.defaultRowResizeBarClass},this.explicitStyles={colname:o.defaultColnameStyle,rowname:o.defaultRownameStyle,selectedcolname:o.defaultSelectedColnameStyle,selectedrowname:o.defaultSelectedRownameStyle,upperleft:o.defaultUpperLeftStyle,skippedcell:o.defaultSkippedCellStyle,panedivider:o.defaultPaneDividerStyle,unhideleft:o.defaultUnhideLeftStyle,unhideright:o.defaultUnhideRightStyle,unhidetop:o.defaultUnhideTopStyle,unhidebottom:o.defaultUnhideBottomStyle},this.cellskip=null,this.needcellskip=!0,this.fonts=[],this.layouts=[],this.needprecompute=!0,!t)throw o.s_rcMissingSheet;this.rowpanes[0]={first:1,last:t.lastrow},this.colpanes[0]={first:1,last:t.lastcol},this.usermaxcol=t.usermaxcol,this.usermaxrow=t.usermaxrow},Re.RenderContext.prototype.PrecomputeSheetFontsAndLayouts=function(){Re.PrecomputeSheetFontsAndLayouts(this)},Re.RenderContext.prototype.CalculateCellSkipData=function(){Re.CalculateCellSkipData(this)},Re.RenderContext.prototype.CalculateColWidthData=function(){Re.CalculateColWidthData(this)},Re.RenderContext.prototype.CalculateRowHeightData=function(){Re.CalculateRowHeightData(this)},Re.RenderContext.prototype.SetRowPaneFirstLast=function(e,t,o){this.rowpanes[e]={first:t,last:o}},Re.RenderContext.prototype.SetColPaneFirstLast=function(e,t,o){this.colpanes[e]={first:t,last:o}},Re.RenderContext.prototype.CoordInPane=function(e,t,o){return Re.CoordInPane(this,e,t,o)},Re.RenderContext.prototype.CellInPane=function(e,t,o,i){return Re.CellInPane(this,e,t,o,i)},Re.RenderContext.prototype.InitializeTable=function(e){Re.InitializeTable(this,e)},Re.RenderContext.prototype.RenderSheet=function(e,t){return Re.RenderSheet(this,e,t)},Re.RenderContext.prototype.RenderColGroup=function(){return Re.RenderColGroup(this)},Re.RenderContext.prototype.RenderColHeaders=function(){return Re.RenderColHeaders(this)},Re.RenderContext.prototype.RenderSizingRow=function(){return Re.RenderSizingRow(this)},Re.RenderContext.prototype.RenderRow=function(e,t,o){return Re.RenderRow(this,e,t,o)},Re.RenderContext.prototype.RenderSpacingRow=function(){return Re.RenderSpacingRow(this)},Re.RenderContext.prototype.RenderCell=function(e,t,o,i,n,r){return Re.RenderCell(this,e,t,o,i,n,r)},Re.PrecomputeSheetFontsAndLayouts=function(e){var t,o,i,n,r,s,a=e.sheetobj,l=a.attribs;for(l.defaultfont&&(t=a.fonts[l.defaultfont].replace(/^\*/,Re.Constants.defaultCellFontStyle).replace(/(.+)\*(.+)/,"$1"+Re.Constants.defaultCellFontSize+"$2").replace(/\*$/,Re.Constants.defaultCellFontFamily).match(/^(\S+? \S+?) (\S+?) (\S.*)$/),e.defaultfontstyle=t[1],e.defaultfontsize=t[2],e.defaultfontfamily=t[3]),r=1;r<a.fonts.length;r++)(t=a.fonts[r].replace(/^\*/,e.defaultfontstyle).replace(/(.+)\*(.+)/,"$1"+e.defaultfontsize+"$2").replace(/\*$/,e.defaultfontfamily).match(/^(\S+?) (\S+?) (\S+?) (\S.*)$/))&&(e.fonts[r]={style:t[1],weight:t[2],size:t[3],family:t[4]});for(i=Re.Constants.defaultCellLayout.match(o=/^padding:\s*(\S+)\s+(\S+)\s+(\S+)\s+(\S+);vertical-align:\s*(\S+);/),n=l.defaultlayout?a.layouts[l.defaultlayout].match(o):["","*","*","*","*","*"],r=1;r<a.layouts.length;r++)if(t=a.layouts[r].match(o)){for(s=1;s<=5;s++)"*"==t[s]&&(t[s]=("*"!=n[s]?n:i)[s]);e.layouts[r]="padding:"+t[1]+" "+t[2]+" "+t[3]+" "+t[4]+";vertical-align:"+t[5]+";"}e.needprecompute=!1},Re.CalculateCellSkipData=function(e){var t,o,i,n,r,s,a,l,c,u=e.sheetobj;u.rowattribs,u.colattribs;for(e.maxrow=0,e.maxcol=0,e.cellskip={},t=1;t<=u.attribs.lastrow;t++)for(o=1;o<=u.attribs.lastcol;o++)if(i=Re.crToCoord(o,t),void 0!==(n=u.cells[i])&&!e.cellskip[i]&&(r=n.colspan||1,s=n.rowspan||1,1<r||1<s))for(a=t;a<t+s;a++)for(l=o;l<o+r;l++)(c=Re.crToCoord(l,a))==i?e.coordToCR[i]={row:t,col:o}:e.cellskip[c]=i,a>e.maxrow&&(maxrow=a),l>e.maxcol&&(maxcol=l);e.needcellskip=!1},Re.CalculateColWidthData=function(e){var t,o,i=e.sheetobj,n=(i.colattribs,e.showRCHeaders?+e.rownamewidth:0);for(colpane=0;colpane<e.colpanes.length;colpane++)for(t=e.colpanes[colpane].first;t<=e.colpanes[colpane].last;t++)o=Re.rcColname(t),"yes"==i.colattribs.hide[o]?e.colwidth[t]=0:("blank"!=(o=i.colattribs.width[o]||i.attribs.defaultcolwidth||Re.Constants.defaultColWidth)&&"auto"!=o||(o=""),e.colwidth[t]=o+"",n+=o&&0<+o?+o:10);e.totalwidth=n},Re.CalculateRowHeightData=function(e){var t,o,i=e.sheetobj,n=e.showRCHeaders?e.pixelsPerRow:0;for(rowpane=0;rowpane<e.rowpanes.length;rowpane++)for(t=e.rowpanes[rowpane].first;t<=e.rowpanes[rowpane].last;t++)"yes"===i.rowattribs.hide[t]?e.rowheight[t]=0:("blank"!==(o=i.rowattribs.height[t]||i.attribs.defaultrowheight||Re.Constants.defaultAssumedRowHeight)&&"auto"!==o||(o=""),e.rowheight[t]=o+"",n+=o&&0<+o?+o:10);e.totalheight=n},Re.InitializeTable=function(e,t){t.style.borderCollapse="collapse",t.cellSpacing="0",t.cellPadding="0",t.style.width=e.totalwidth+"px"},Re.RenderSheet=function(e,t,o){var i,n,r,s,a;for(e.sheetobj.changedrendervalues&&(e.needcellskip=!0,e.needprecompute=!0,e.sheetobj.changedrendervalues=!1),e.needcellskip&&e.CalculateCellSkipData(),e.needprecompute&&e.PrecomputeSheetFontsAndLayouts(),e.CalculateColWidthData(),e.CalculateRowHeightData(),r=document.createElement("table"),e.InitializeTable(r),a=e.RenderColGroup(),r.appendChild(a),(s=document.createElement("tbody")).appendChild(e.RenderSizingRow()),e.showRCHeaders&&(i=e.RenderColHeaders())&&s.appendChild(i),n=0;n<e.rowpanes.length;n++){for(rownum=e.rowpanes[n].first;rownum<=e.rowpanes[n].last;rownum++)i=e.RenderRow(rownum,n,o),s.appendChild(i);n<e.rowpanes.length-1&&(i=e.RenderSpacingRow(),s.appendChild(i))}return r.appendChild(s),t&&(a=t.parentNode)&&a.replaceChild(r,t),r},Re.RenderRow=function(e,t,o,i){var n,r,s,a,l,c,u,d=e.sheetobj,h=document.createElement("tr");for(e.showRCHeaders&&(c=document.createElement("td"),e.classnames&&(c.className=e.classnames.rowname),e.explicitStyles&&(c.style.cssText=e.explicitStyles.rowname),c.width=e.rownamewidth,c.height=e.rowheight[t],c.style.verticalAlign="top",c.innerHTML=t+"",t<e.rowpanes[e.rowpanes.length-1].last&&"yes"==d.rowattribs.hide[t+1]&&((a=document.createElement("div")).style.position="relative",l=document.createElement("div"),e.classnames&&(l.className=e.classnames.unhidetop),e.explicitStyles&&(l.style.cssText=e.explicitStyles.unhidetop),u=0===(u=+e.rowheight[t]-Re.Constants.defaultAssumedRowHeight)?4:u,l.style.bottom="-"+u+"px",e.rowunhidetop[t]=l,a.appendChild(l),c.appendChild(a)),1<t&&"yes"==d.rowattribs.hide[t-1]&&(l=document.createElement("div"),e.classnames&&(l.className=e.classnames.unhidebottom),e.explicitStyles&&(l.style.cssText=e.explicitStyles.unhidebottom),e.rowunhidebottom[t]=l,c.appendChild(l)),(u=document.createElement("div")).className=e.classnames.rowresizebar,c.appendChild(u),h.appendChild(c)),r=0;r<e.colpanes.length;r++){for(n=e.colpanes[r].first;n<=e.colpanes[r].last;n++)(c=e.RenderCell(t,n,o,r,null,i))&&h.appendChild(c);r<e.colpanes.length-1&&((c=document.createElement("td")).width=e.defaultpanedividerwidth,e.classnames.panedivider&&(c.className=e.classnames.panedivider),e.explicitStyles.panedivider&&(c.style.cssText=e.explicitStyles.panedivider),(s=document.createElement("div")).style.width=e.defaultpanedividerwidth+"px",s.style.overflow="hidden",c.appendChild(s),h.appendChild(c))}return"yes"==d.rowattribs.hide[t]&&(h.style.cssText+=";display:none"),h},Re.RenderSpacingRow=function(e){e.sheetobj;var t,o,i,n,r=document.createElement("tr");for(e.showRCHeaders&&((o=document.createElement("td")).width=e.rownamewidth,o.height=e.defaultpanedividerheight,e.classnames.panedivider&&(o.className=e.classnames.panedivider),e.explicitStyles.panedivider&&(o.style.cssText=e.explicitStyles.panedivider),r.appendChild(o)),i=0;i<e.colpanes.length;i++){for(t=e.colpanes[i].first;t<=e.colpanes[i].last;t++)o=document.createElement("td"),(n=e.colwidth[t])&&(o.width=n),o.height=e.defaultpanedividerheight,e.classnames.panedivider&&(o.className=e.classnames.panedivider),e.explicitStyles.panedivider&&(o.style.cssText=e.explicitStyles.panedivider),o&&r.appendChild(o);i<e.colpanes.length-1&&((o=document.createElement("td")).width=e.defaultpanedividerwidth,o.height=e.defaultpanedividerheight,e.classnames.panedivider&&(o.className=e.classnames.panedivider),e.explicitStyles.panedivider&&(o.style.cssText=e.explicitStyles.panedivider),r.appendChild(o))}return r},Re.RenderColHeaders=function(e){var t,o=e.sheetobj,i=document.createElement("tr");if(!e.showRCHeaders)return null;for(r=document.createElement("td"),e.classnames&&(r.className=e.classnames.upperleft),e.explicitStyles&&(r.style.cssText=e.explicitStyles.upperleft),r.width=e.rownamewidth,i.appendChild(r),colpane=0;colpane<e.colpanes.length;colpane++){for(t=e.colpanes[colpane].first;t<=e.colpanes[colpane].last;t++){var n,r=document.createElement("td"),s=(e.classnames&&(r.className=e.classnames.colname),e.explicitStyles&&(r.style.cssText=e.explicitStyles.colname),"yes"==o.colattribs.hide[Re.rcColname(t)]&&(r.style.cssText+=";display:none"),r.innerHTML=Re.rcColname(t),t<e.colpanes[e.colpanes.length-1].last&&"yes"==o.colattribs.hide[Re.rcColname(t+1)]&&(n=document.createElement("div"),e.classnames&&(n.className=e.classnames.unhideleft),e.explicitStyles&&(n.style.cssText=e.explicitStyles.unhideleft),e.colunhideleft[t]=n,r.appendChild(n)),1<t&&"yes"==o.colattribs.hide[Re.rcColname(t-1)]&&(n=document.createElement("div"),e.classnames&&(n.className=e.classnames.unhideright),e.explicitStyles&&(n.style.cssText=e.explicitStyles.unhideright),e.colunhideright[t]=n,r.appendChild(n)),document.createElement("span"));s.style.height=Re.Constants.defaultAssumedRowHeight+"px",s.className=e.classnames.colresizebar,r.appendChild(s),i.appendChild(r)}colpane<e.colpanes.length-1&&((r=document.createElement("td")).width=e.defaultpanedividerwidth,e.classnames.panedivider&&(r.className=e.classnames.panedivider),e.explicitStyles.panedivider&&(r.style.cssText=e.explicitStyles.panedivider),i.appendChild(r))}return i},Re.RenderColGroup=function(e){var t,o,i,n,r=e.sheetobj,s=document.createElement("colgroup");for(e.showRCHeaders&&((i=document.createElement("col")).width=e.rownamewidth,s.appendChild(i)),t=0;t<e.colpanes.length;t++){for(o=e.colpanes[t].first;o<=e.colpanes[t].last;o++)i=document.createElement("col"),"yes"==r.colattribs.hide[Re.rcColname(o)]?i.width="1":((n=e.colwidth[o])&&(i.width=n),s.appendChild(i));t<e.colpanes.length-1&&((i=document.createElement("col")).width=e.defaultpanedividerwidth,s.appendChild(i))}return s},Re.RenderSizingRow=function(e){var t,o,i,n,r=e.sheetobj,s=document.createElement("tr");for(e.showRCHeaders&&((i=document.createElement("td")).style.width=e.rownamewidth+"px",i.height="1",s.appendChild(i)),t=0;t<e.colpanes.length;t++){for(o=e.colpanes[t].first;o<=e.colpanes[t].last;o++)i=document.createElement("td"),"yes"==r.colattribs.hide[Re.rcColname(o)]?i.width="1":(n=e.colwidth[o])&&(i.width=n),i.height="1",s.appendChild(i);t<e.colpanes.length-1&&((i=document.createElement("td")).width=e.defaultpanedividerwidth,i.height="1",s.appendChild(i))}return s},Re.RenderCell=function(e,t,o,i,n,r,s){var a,l,c,u,d,h,p,f=e.sheetobj,m="",g=Re.crToCoord(o=+o,t=+t);if(e.cellskip[g])return e.CoordInPane(e.cellskip[g],i,n)?null:(c=r?Re.CreatePseudoElement():document.createElement("td"),e.classnames.skippedcell&&(c.className=e.classnames.skippedcell),e.explicitStyles.skippedcell&&(c.style.cssText=e.explicitStyles.skippedcell),c.innerHTML="&nbsp;",c);if(c=r?Re.CreatePseudoElement():document.createElement("td"),e.cellIDprefix&&(c.id=e.cellIDprefix+g),d=(d=f.cells[g])||new Re.Cell(g),p=f.attribs,scc=Re.Constants,1<d.colspan){for(a=u=1;a<d.colspan;a++)"yes"!=f.colattribs.hide[Re.rcColname(o+a)]&&e.CellInPane(t,o+a,i,n)&&u++;c.colSpan=u}if(1<d.rowspan){for(a=u=1;a<d.rowspan;a++)"yes"!=f.rowattribs.hide[t+a+""]&&e.CellInPane(t+a,o,i,n)&&u++;c.rowSpan=u}return null!=d.displaystring&&0!=f.widgetsClean||(d.displaystring=Re.FormatValueForDisplay(f,d.datavalue,g,s||e.defaultlinkstyle)),c.innerHTML=d.displaystring,(a=d.layout||p.defaultlayout)&&void 0!==e.layouts[a]?m+=e.layouts[a]:m+=scc.defaultCellLayout,(a=d.font||p.defaultfont)&&void 0!==e.fonts[a]?m+="font-style:"+(l=e.fonts[a]).style+";font-weight:"+l.weight+";font-size:"+l.size+";font-family:"+l.family+";":(scc.defaultCellFontSize&&(m+="font-size:"+scc.defaultCellFontSize+";"),scc.defaultCellFontFamily&&(m+="font-family:"+scc.defaultCellFontFamily+";")),(a=d.color||p.defaultcolor)&&void 0!==f.colors[a]&&(m+="color:"+f.colors[a]+";"),(a=d.bgcolor||p.defaultbgcolor)&&void 0!==f.colors[a]&&(m+="background-color:"+f.colors[a]+";"),(a=d.cellformat)&&void 0!==f.cellformats[a]?m+="text-align:"+f.cellformats[a]+";":"t"==(l=d.valuetype.charAt(0))?(a=p.defaulttextformat)&&void 0!==f.cellformats[a]&&(m+="text-align:"+f.cellformats[a]+";"):"n"==l?(a=p.defaultnontextformat)&&void 0!==f.cellformats[a]?m+="text-align:"+f.cellformats[a]+";":m+="text-align:right;":m+="text-align:left;",(1<d.colspan||1<d.rowspan)&&(h=f.cells[Re.crToCoord(o+(d.colspan||1)-1,t+(d.rowspan||1)-1)]),(a=d.bt)&&void 0!==f.borderstyles[a]&&(m+="border-top:"+f.borderstyles[a]+";"),(a=(void 0!==h?h:d).br)&&void 0!==f.borderstyles[a]?m+="border-right:"+f.borderstyles[a]+";":e.showGrid&&(l=e.CellInPane(t,o+(d.colspan||1),i,n)?Re.crToCoord(o+(d.colspan||1),t):"nomatch",e.cellskip[l]&&(l=e.cellskip[l]),f.cells[l]&&f.cells[l].bl||(m+="border-right:"+e.gridCSS)),(a=(void 0!==h?h:d).bb)&&void 0!==f.borderstyles[a]?m+="border-bottom:"+f.borderstyles[a]+";":e.showGrid&&(l=e.CellInPane(t+(d.rowspan||1),o,i,n)?Re.crToCoord(o,t+(d.rowspan||1)):"nomatch",e.cellskip[l]&&(l=e.cellskip[l]),f.cells[l]&&f.cells[l].bt||(m+="border-bottom:"+e.gridCSS)),(a=d.bl)&&void 0!==f.borderstyles[a]&&(m+="border-left:"+f.borderstyles[a]+";"),d.comment&&(c.title=d.comment,e.showGrid?(e.commentClassName&&(c.className=(c.className?c.className+" ":"")+e.commentClassName),m+=e.commentCSS):(e.commentNoGridClassName&&(c.className=(c.className?c.className+" ":"")+e.commentNoGridClassName),m+=e.commentNoGridCSS)),d.readonly&&(d.comment||(c.title=e.readonlyComment),e.showGrid?(e.readonlyClassName&&(c.className=(c.className?c.className+" ":"")+e.readonlyClassName),m+=e.readonlyCSS):(e.readonlyNoGridClassName&&(c.className=(c.className?c.className+" ":"")+e.readonlyNoGridClassName),m+=e.readonlyNoGridCSS)),c.style.cssText=m,void 0!==d.cssc&&(r?c.className=(c.className?c.className+" ":"")+d.cssc:c.classList.add(d.cssc)),(l=e.highlights[g])&&("cursor"==l&&(l+=e.cursorsuffix),e.highlightTypes[l].className&&(c.className=(c.className?c.className+" ":"")+e.highlightTypes[l].className),Re.setStyles(c,e.highlightTypes[l].style)),"yes"==f.colattribs.hide[Re.rcColname(o)]&&(c.style.cssText+=";display:none"),"yes"==f.rowattribs.hide[t]&&(c.style.cssText+=";display:none"),c},Re.CoordInPane=function(e,t,o,i){var n=e.coordToCR[t];if(n&&n.row&&n.col)return e.CellInPane(n.row,n.col,o,i);throw"Bad coordToCR for "+t},Re.CellInPane=function(e,t,o,i,n){var r=e.rowpanes[i],e=e.colpanes[n];if(r&&e)return!(t<r.first||t>r.last)&&!(o<e.first||o>e.last);throw"CellInPane called with unknown panes "+i+"/"+n},Re.CreatePseudoElement=function(){return{style:{cssText:""},innerHTML:"",className:""}},Re.rcColname=function(e){var t=((e=(e=702<e?702:e)<1?1:e)-1)%26+65,e=Math.floor((e-1)/26);return e?String.fromCharCode(e+64)+String.fromCharCode(t):String.fromCharCode(t)},Re.letters=["A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"],Re.crToCoord=function(e,t){t<1&&(t=1);var o=((e=702<(e=e<1?1:e)?702:e)-1)%26,e=Math.floor((e-1)/26),e=e?Re.letters[e-1]+Re.letters[o]+t:Re.letters[o]+t;return e},Re.coordToCol={},Re.coordToRow={},Re.coordToCr=function(e){var t,o,i,n=Re.coordToRow[e];if(n)return{row:n,col:Re.coordToCol[e]};for(o=n=t=0;o<e.length;o++)36!=(i=e.charCodeAt(o))&&(i<=57?n=10*n+i-48:97<=i?t=26*t+i-96:65<=i&&(t=26*t+i-64));return Re.coordToCol[e]=t,{row:Re.coordToRow[e]=n,col:t}},Re.ParseRange=function(e){var t,o,i,n;return 0<=(t=(e=(e=e||"A1:A1").toUpperCase()).indexOf(":"))?(o=e.substring(0,t),(i=Re.coordToCr(o)).coord=o,o=e.substring(t+1),(n=Re.coordToCr(o)).coord=o):((i=Re.coordToCr(e)).coord=e,(n=Re.coordToCr(e)).coord=e),{cr1:i,cr2:n}},Re.decodeFromSave=function(e){return"string"!=typeof e||-1==e.indexOf("\\")?e:e.replace(/\\c/g,":").replace(/\\n/g,"\n").replace(/\\b/g,"\\")},Re.decodeFromAjax=function(e){if("string"!=typeof e)return e;if(-1==e.indexOf("\\"))return e;e=e.replace(/\\c/g,":");return(e=(e=e.replace(/\\n/g,"\n")).replace(/\\e/g,"]]")).replace(/\\b/g,"\\")},Re.encodeForSave=function(e){return"string"==typeof e&&-1!=(e=-1!=(e=-1!=e.indexOf("\\")?e.replace(/\\/g,"\\b"):e).indexOf(":")?e.replace(/:/g,"\\c"):e).indexOf("\n")?e.replace(/\n/g,"\\n"):e},Re.special_chars=function(e){return e=/[&<>"]/.test(e)?(e=(e=(e=e.replace(/&/g,"&amp;")).replace(/</g,"&lt;")).replace(/>/g,"&gt;")).replace(/"/g,"&quot;"):e},Re.Lookup=function(e,t){for(i=0;i<t.length;i++)if(t[i]>e)return 0<i?i-1:null;return t.length-1},Re.setStyles=function(e,t){var o,i,n,r;if(t)for(o=t.split(";"),i=0;i<o.length;i++)-1!=(r=o[i].indexOf(":"))&&(n=o[i].substring(0,r),r=o[i].substring(r+1),n&&r&&(e.style[n]=r))},Re.GetViewportInfo=function(){var e={};return M.innerWidth?(e.width=M.innerWidth,e.height=M.innerHeight,e.horizontalScroll=M.pageXOffset,e.verticalScroll=M.pageYOffset):document.documentElement&&document.documentElement.clientWidth?(e.width=document.documentElement.clientWidth,e.height=document.documentElement.clientHeight,e.horizontalScroll=document.documentElement.scrollLeft,e.verticalScroll=document.documentElement.scrollTop):document.body.clientWidth&&(e.width=document.body.clientWidth,e.height=document.body.clientHeight,e.horizontalScroll=document.body.scrollLeft,e.verticalScroll=document.body.scrollTop),e},Re.GetElementPosition=function(e){for(var t=0,o=0;e&&"relative"!=Re.GetComputedStyle(e,"position");)t+=e.offsetLeft,o+=e.offsetTop,e=e.offsetParent;return{left:t,top:o}},Re.GetElementPositionWithScroll=function(e){e=e.getBoundingClientRect();return{left:e.left,right:e.right,top:e.top,bottom:e.bottom,width:e.width||e.right-e.left,height:e.height||e.bottom-e.top}},Re.GetElementFixedParent=function(e){for(;e&&"HTML"!=e.tagName;){if("fixed"==Re.GetComputedStyle(e,"position"))return e;e=e.parentNode}return!1},Re.GetComputedStyle=function(e,t){e=void 0!==e.currentStyle?e.currentStyle:document.defaultView.getComputedStyle(e,null);return e[t]},Re.LookupElement=function(e,t){for(var o=0;o<t.length;o++)if(t[o].element==e)return t[o];return null},Re.AssignID=function(e,t,o){e.idPrefix&&(t.id=e.idPrefix+o)},Re.GetCellContents=function(e,t){var o="",i=e.cells[t];if(i)switch(i.datatype){case"v":o=i.datavalue+"";break;case"t":o="'"+i.datavalue;break;case"f":o="="+i.formula;break;case"c":o=i.formula}return o},Re.FormatValueForDisplay=function(e,t,o,i){var n,r=e.attribs,s=(Re.Constants,e.cells[o]),a=(t=t,h=(u=(s=s||new Re.Cell(o)).valuetype||"").substring(1),valueinputwidget=u.charAt(1),u.substring(2)),l=null,c=null,u=u.charAt(0);if(s.errors||"e"==u)return t=s.errors||h||"Error in cell";if("t"==u){if("formula"==(n=e.valueformats[+s.textvalueformat]||e.valueformats[+r.defaulttextvalueformat]||""))return t="f"==s.datatype?Re.special_chars("="+s.formula)||"&nbsp;":"c"==s.datatype?Re.special_chars("'"+s.formula)||"&nbsp;":Re.special_chars("'"+t)||"&nbsp;";var l=t,c=t=Re.format_text_for_display(t,s.valuetype,n,e,i,s.nontextvalueformat)}else if("n"==u){if(null!=(n=s.nontextvalueformat)&&""!=n||(n=r.defaultnontextvalueformat),"formula"==(n=null!=(n=e.valueformats[+n])&&"none"!=n?n:""))return t="f"==s.datatype?Re.special_chars("="+s.formula)||"&nbsp;":"c"==s.datatype?Re.special_chars("'"+s.formula)||"&nbsp;":Re.special_chars("'"+t)||"&nbsp;";if("forcetext"==n)return t="f"==s.datatype?Re.special_chars("="+s.formula)||"&nbsp;":"c"==s.datatype?Re.special_chars(s.formula)||"&nbsp;":Re.special_chars(t)||"&nbsp;";l=t,c=t=Re.format_number_for_display(t,s.valuetype,n)}else t="&nbsp;";if("i"!=valueinputwidget||null==l||null==c)return t;var d=e.ioParameterList[o],h=Re.Formula.FunctionList[a];if(h){if(g=(g=(g=(g=h[5]).replace(/<%=checked%>/g,0==l?"":"checked")).replace(/<%=formated_value%>/g,c)).replace(/<%=display_value%>/g,l),d){for(var p=0;p<d.length;p++)var f="coord"==d[p].type?e.GetAssuredCell(d[p].value).datavalue:d[p].value,m=new RegExp("<%=parameter"+p+"_value%>","g"),g=g.replace(m,f);if(d.html)for(var v=0;v<d.html.length;v++){m=new RegExp("<%=html"+v+"_value%>","g");g=g.replace(m,d.html[v])}d.css&&(g=g.replace(/^(<\w+)(\W)/,"$1 style='"+d.css+"'$2"))}return g.replace(/<%=cell_reference%>/g,o)}return"error:Widget HTML missing"},Re.format_text_for_display=function(e,t,o,i,n,r){var s,a,l,c=t.substring(1),u=e;return""!=(o=/^(text-|custom|hidden)/.test(o="none"!=o&&null!=o?o:"")?o:"")&&"General"!=o||("h"==c&&(o="text-html"),"w"!=c&&"r"!=c||(o="text-wiki"),"l"==c&&(o="text-link"),c||(o="text-plain")),"text-html"!=o&&(Re.Callbacks.expand_wiki&&/^text-wiki/.test(o)?u=Re.Callbacks.expand_wiki(u,i,n,o):"text-wiki"==o?u=Re.Callbacks.expand_markup&&Re.Callbacks.expand_markup(u,i,n)||Re.special_chars("wiki-text:"+u):"text-url"==o?(s=Re.special_chars(u),u='<a href="'+(a=encodeURI(u))+'">'+s+"</a>"):"text-link"==o?u=Re.expand_text_link(u,i,n,o):"text-image"==o?u='<img src="'+(a=encodeURI(u))+'">':"text-custom:"==o.substring(0,12)?(s=(s=(s=Re.special_chars(u)).replace(/  /g,"&nbsp; ")).replace(/\n/g,"<br>"),a=encodeURI(u),(l={}).r=u,l.s=s,l.u=a,u=(u=o.substring(12)).replace(/@(r|s|u)/g,function(e,t){return l[t]})):"custom"==o.substring(0,6)?(u=(u=(u=Re.special_chars(u)).replace(/  /g,"&nbsp; ")).replace(/\n/g,"<br>"),u+=" (custom format)"):u="hidden"==o?"&nbsp;":null!=r&&""!=r&&"none"!=i.valueformats[+r]&&""!=i.valueformats[+r]?(o=i.valueformats[r],Re.format_number_for_display(e,t,o)):(u=(u=Re.special_chars(u)).replace(/  /g,"&nbsp; ")).replace(/\n/g,"<br>")),u},Re.format_number_for_display=function(e,t,o){var i=Re.Constants,n=+e,t=t.substring(1);return"logical"==(o="Auto"!=o&&""!=o?o:"%"==t?i.defaultFormatp:"$"==t?i.defaultFormatc:"dt"==t?i.defaultFormatdt:"d"==t?i.defaultFormatd:"t"==t?i.defaultFormatt:"l"==t?"logical":"General")?n?i.defaultDisplayTRUE:i.defaultDisplayFALSE:"hidden"==o?"&nbsp;":Re.FormatNumber.formatNumberWithFormat(e,o,"")},Re.DetermineValueType=function(e){var t,o,i,n,r,s=e+"",a="t",l=s.replace(/^\s+/,"");return l=l.replace(/\s+$/,""),0==s.length?a="":s.match(/^\s+$/)||(l.match(/^[-+]?\d*(?:\.)?\d*(?:[eE][-+]?\d+)?$/)?(s=+l,isNaN(s)?s=e+"":a="n"):l.match(/^[-+]?\d*(?:\.)?\d*\s*%$/)?(s=+l.slice(0,-1)/100,a="n%"):l.match(/^[-+]?\$\s*\d*(?:\.)?\d*\s*$/)&&l.match(/\d/)?(s=+l.replace(/\$/,""),a="n$"):l.match(/^[-+]?(\d*,\d*)+(?:\.)?\d*$/)?(s=+l.replace(/,/g,""),a="n"):l.match(/^[-+]?(\d*,\d*)+(?:\.)?\d*\s*%$/)?(s=+l.replace(/[%,]/g,"")/100,a="n%"):l.match(/^[-+]?\$\s*(\d*,\d*)+(?:\.)?\d*$/)&&l.match(/\d/)?(s=+l.replace(/[\$,]/g,""),a="n$"):(e=s.match(/^(\d{1,2})[\/\-](\d{1,2})[\/\-](\d{1,4})\s*$/))?(n=(n=+e[3])<1e3?n+2e3:n,s=0===navigator.language.indexOf("fr")?Re.FormatNumber.convert_date_gregorian_to_julian(n,+e[2],+e[1])-2415019:Re.FormatNumber.convert_date_gregorian_to_julian(n,+e[1],+e[2])-2415019,a="nd"):(e=s.match(/^(\d{4})[\/\-](\d{1,2})[\/\-](\d{1,2})\s*$/))?(n=+e[1],s=Re.FormatNumber.convert_date_gregorian_to_julian(n=n<1e3?n+2e3:n,+e[2],+e[3])-2415019,a="nd"):(e=s.match(/^(\d{4})[\/\-](\d{1,2})[\/\-](\d{1,2}) (\d{1,2}):(\d{1,2})\s*$/))?(n=+e[1],o=+e[4],r=+e[5],s=Re.FormatNumber.convert_date_gregorian_to_julian(n=n<1e3?n+2e3:n,+e[2],+e[3])-2415019,a="nd",o<24&&r<60&&(s+=o/24+r/1440,a="ndt")):(e=s.match(/^(\d{4})[\/\-](\d{1,2})[\/\-](\d{1,2}) (\d{1,2}):(\d{1,2}):(\d{1,2})\s*$/))?(n=+e[1],o=+e[4],r=+e[5],t=+e[6],s=Re.FormatNumber.convert_date_gregorian_to_julian(n=n<1e3?n+2e3:n,+e[2],+e[3])-2415019,a="nd",o<24&&r<60&&t<60&&(s+=o/24+r/1440+t/86400,a="ndt")):(e=s.match(/^(\d{1,2}):(\d{1,2})\s*$/))?(o=+e[1],r=+e[2],o<24&&r<60&&(s=o/24+r/1440,a="nt")):(e=s.match(/^(\d{1,2}):(\d{1,2}):(\d{1,2})\s*$/))?(o=+e[1],r=+e[2],t=+e[3],o<24&&r<60&&t<60&&(s=o/24+r/1440+t/86400,a="nt")):(e=s.match(/^\s*([-+]?\d+) (\d+)\/(\d+)\s*$/))?(n=+e[1],i=+e[2],(o=+e[3])&&0<o&&(s=n+(n<0?-i/o:i/o),a="n")):(r=Re.InputConstants[s.toUpperCase()])?(i=r.indexOf(","),s=+r.substring(0,i),a=r.substring(i+1)):7<l.length&&"http://"==l.substring(0,7).toLowerCase()?(s=l,a="tl"):l.match(/<([A-Z][A-Z0-9]*)\b[^>]*>[\s\S]*?<\/\1>/i)&&(s=l,a="th")),{value:s,type:a}},Re.InputConstants={TRUE:"1,nl",FALSE:"0,nl","#N/A":"0,e#N/A","#NULL!":"0,e#NULL!","#NUM!":"0,e#NUM!","#DIV/0!":"0,e#DIV/0!","#VALUE!":"0,e#VALUE!","#REF!":"0,e#REF!","#NAME?":"0,e#NAME?"},Re.default_expand_markup=function(e,t,o){return e=(e=(e=Re.special_chars(e)).replace(/  /g,"&nbsp; ")).replace(/\n/g,"<br>")},Re.expand_text_link=function(e,t,o,i){var n=Re.Constants,r="",s=Re.ParseCellLinkText(e+""),n=s.desc?Re.special_chars(s.desc):s.pagename?n.defaultPageLinkFormatString:n.defaultLinkFormatString;return 7<e.length&&"http://"==e.substring(0,7).toLowerCase()&&">"!=e.charAt(e.length-1)&&(n=n.substring(7)),e=s.newwin||!o?' target="_blank"':"",s.pagename?Re.Callbacks.MakePageLink&&(r=Re.Callbacks.MakePageLink(s.pagename,s.workspacename,o,i)):r=encodeURI(s.url),'<a href="'+r+'"'+e+">"+n+"</a>"},Re.ParseCellLinkText=function(e){var t={url:"",desc:"",newwin:!1,pagename:"",workspace:""},o=!1,i=e.length-1,n=0,r=e.lastIndexOf("<"),s=e.lastIndexOf("["),a=e.lastIndexOf("{"),l=-1;return">"==e.charAt(i)&&-1!=r||"]"==e.charAt(i)&&-1!=s||!("}"!=e.charAt(i)||"]"!=e.charAt(i-1)||-1==a||-1==s||s<a)?(">"==e.charAt(i)?(l=r-1,0<r&&"<"==e.charAt(l)&&">"==e.charAt(i-1)&&(l--,i--,t.newwin=!0)):"]"==e.charAt(i)?(l=s-1,o=!0,0<s&&"["==e.charAt(l)&&"]"==e.charAt(i-1)&&(l--,i--,t.newwin=!0)):"}"==e.charAt(i)&&(l=a-1,o=!0,i--,0<(wsend=s)&&"["==e.charAt(s-1)&&"]"==e.charAt(i-1)&&(wsend=s-1,i--,t.newwin=!0)," "==e.charAt(wsend-1)&&wsend--,t.workspace=e.substring(a+1,wsend)||"")," "==e.charAt(l)&&l--,'"'==e.charAt(n)&&'"'==e.charAt(l)&&(n++,l--)):l=++i,o?t.pagename=e.substring(s+1,i)||"":t.url=e.substring(r+1,i)||"",n<=l&&(t.desc=e.substring(n,l+1)),t},Re.ConvertSaveToOtherFormat=function(e,t,o){var i,n,r,s,a,l,c="";if("scsave"==t)return e;if(""==e)return"";if((i=new Re.Sheet).ParseSheetSave(e),o)throw"SocialCalc.ConvertSaveToOtherFormat: Not doing recalc.";if(n=i.copiedfrom?Re.ParseRange(i.copiedfrom):{cr1:{row:1,col:1},cr2:{row:i.attribs.lastrow,col:i.attribs.lastcol}},"html"==t)return e=new Re.RenderContext(i),i.copiedfrom&&(e.rowpanes[0]={first:n.cr1.row,last:n.cr2.row},e.colpanes[0]={first:n.cr1.col,last:n.cr2.col}),o=document.createElement("div"),r=e.RenderSheet(null,e.defaultHTMLlinkstyle),o.appendChild(r),delete e,delete i,c=o.innerHTML,delete r,delete o,c;for(s=n.cr1.row;s<=n.cr2.row;s++){for(a=n.cr1.col;a<=n.cr2.col;a++)l=Re.crToCoord(a,s),l=(l=i.GetAssuredCell(l)).errors||l.datavalue+"","csv"==t?(-1!=l.indexOf('"')&&(l=l.replace(/"/g,'""')),/[, \n"]/.test(l)&&(l='"'+l+'"'),a>n.cr1.col&&(l=","+l)):"tab"==t&&(-1!=l.indexOf("\n")&&(l='"'+(l=-1!=l.indexOf('"')?l.replace(/"/g,'""'):l)+'"'),a>n.cr1.col&&(l="\t"+l)),c+=l;c+="\n"}return c},Re.ConvertOtherFormatToSave=function(e,t){function o(){f<++h&&(f=h),p=Re.crToCoord(h,d),Re.SetConvertedCell(i,p,a),a=""}var i,n,r,s,a,l,c,u,d,h,p,f,m="";if("scsave"==t)return e;if(i=new Re.Sheet,n=e.split(/\r\n|\n/),f=0,"csv"==t){for(l=!1,r=d=0;r<n.length&&(r!=n.length-1||""!=n[r]);r++)for(l?a+="\n":(a="",d++,h=0),s=n[r],c=0;c<s.length;c++)'"'==(u=s.charAt(c))?l?c<s.length-1&&'"'==s.charAt(c+1)?(c++,a+='"'):(l=!1,c==s.length-1&&o()):l=!0:(","!=u||l?a+=u:o(),c!=s.length-1||l||o());0<f&&(i.attribs.lastrow=d,i.attribs.lastcol=f,m=i.CreateSheetSave("A1:"+Re.crToCoord(f,d)))}if("tab"==t){for(l=!1,r=d=0;r<n.length&&(r!=n.length-1||""!=n[r]);r++)for(l?a+="\n":(a="",d++,h=0),s=n[r],c=0;c<s.length;c++){if('"'==(u=s.charAt(c))){if(l){c<s.length-1?'"'==s.charAt(c+1)?(c++,a+='"'):"\t"==s.charAt(c+1)&&(c++,l=!1,o()):(l=!1,o());continue}if(""==a){l=!0;continue}}"\t"!=u||l?a+=u:o(),c!=s.length-1||l||o()}0<f&&(i.attribs.lastrow=d,i.attribs.lastcol=f,m=i.CreateSheetSave("A1:"+Re.crToCoord(f,d)))}return m},Re.SetConvertedCell=function(e,t,o){e=e.GetAssuredCell(t),t=Re.DetermineValueType(o);"n"==t.type&&t.value==o?(e.datatype="v",e.valuetype="n",e.datavalue=t.value):"t"==t.type.charAt(0)?(e.datatype="t",e.valuetype=t.type,e.datavalue=t.value):(e.datatype="c",e.valuetype=t.type,e.datavalue=t.value,e.formula=o)},(Re=Re||{}).TableEditor=function(e){var t=Re.Constants;this.context=e,this.toplevel=null,this.fullgrid=null,this.noEdit=!1,this.width=null,this.tablewidth=null,this.height=null,this.tableheight=null,this.inputBox=null,this.inputEcho=null,this.verticaltablecontrol=null,this.horizontaltablecontrol=null,this.logo=null,this.cellhandles=null,this.timeout=null,this.busy=!1,this.ensureecell=!1,this.deferredCommands=[],this.deferredEmailCommands=[],this.gridposition=null,this.headposition=null,this.firstscrollingrow=null,this.firstscrollingrowtop=null,this.lastnonscrollingrow=null,this.lastvisiblerow=null,this.firstscrollingcol=null,this.firstscrollingcolleft=null,this.lastnonscrollingcol=null,this.lastvisiblecol=null,this.rowpositions=[],this.colpositions=[],this.rowheight=[],this.colwidth=[],this.ecell=null,this.state="start",this.workingvalues={},this.imageprefix=t.defaultImagePrefix,this.idPrefix=t.defaultTableEditorIDPrefix,this.pageUpDnAmount=t.defaultPageUpDnAmount,this.recalcFunction=function(e){if(!e.context.sheetobj.RecalcSheet)return null;e.context.sheetobj.RecalcSheet(Re.EditorSheetStatusCallback,e)},this.ctrlkeyFunction=function(i,e){var t,o,n,r,s,a;switch(e){case"[ctrl-a]":return i.MoveECell("A1"),i.RangeAnchor("A1"),i.RangeExtend(Re.crToCoord(i.context.sheetobj.attribs.lastcol,i.context.sheetobj.attribs.lastrow)),!1;case"[ctrl-c]":case"[ctrl-x]":return(t=i.pasteTextarea).value="",(o=Re.GetEditorCellElement(i,i.ecell.row,i.ecell.col))&&(n=Re.GetElementPosition(o.element),t.style.left=n.left-1+"px",t.style.top=n.top-1+"px"),s=i.range.hasrange?Re.crToCoord(i.range.left,i.range.top)+":"+Re.crToCoord(i.range.right,i.range.bottom):i.ecell.coord,a=Re.ConvertSaveToOtherFormat(Re.CreateSheetSave(i.context.sheetobj,s),"tab"),r="[ctrl-c]"==e||i.noEdit||i.ECellReadonly()?"copy "+s+" formulas":"cut "+s+" formulas",i.EditorScheduleSheetCommands(r,!0,!1),t.style.display="block",t.value=a,t.focus(),t.select(),M.setTimeout(function(){var e=i.pasteTextarea;e.blur(),e.style.display="none",Re.KeyboardFocus()},200),!0;case"[ctrl-v]":return i.noEdit||i.ECellReadonly()?!0:((t=i.pasteTextarea).value="",(o=Re.GetEditorCellElement(i,i.ecell.row,i.ecell.col))&&(n=Re.GetElementPosition(o.element),t.style.left=n.left-1+"px",t.style.top=n.top-1+"px"),t.style.display="block",t.value="",t.focus(),M.setTimeout(function(){var e,t=i.pasteTextarea,o=t.value,t=(t.blur(),t.style.display="none","");i.pastescclipboard?i.pastescclipboard=!1:(e=Re.ConvertSaveToOtherFormat(Re.Clipboard.clipboard,"tab"),(o=o.replace(/\r\n/g,"\n"))==e||o.length-e.length==1&&o.substring(0,o.length-1)==e||(t="loadclipboard "+Re.encodeForSave(Re.ConvertOtherFormatToSave(o,"tab"))+"\n")),e=i.range.hasrange?((e=new Re.Sheet).ParseSheetSave(Re.Clipboard.clipboard),null!==(o=e.copiedfrom.match(/(.+):(.+)/))&&o[1]===o[2]?Re.crToCoord(i.range.left,i.range.top)+":"+Re.crToCoord(i.range.right,i.range.bottom):Re.crToCoord(i.range.left,i.range.top)):i.ecell.coord,i.EditorScheduleSheetCommands(t+="paste "+e+" formulas",!0,!1),Re.KeyboardFocus()},200),!0);case"[ctrl-z]":return i.EditorScheduleSheetCommands("undo",!0,!1),!1;case"[ctrl-s]":if(Re.Constants.AllowCtrlS)return M.setTimeout(function(){var e=i.context.sheetobj,t=e.GetAssuredCell(i.ecell.coord),e=t.nontextvalueformat&&e.valueformats[+t.nontextvalueformat]||"",t=M.prompt("Advanced Feature:\n\nCustom Numeric Format or Command",e);if(null!=t){if(t.match(/^cmd:/))r=t.substring(4);else{if(t.match(/^edit:/))return r=t.substring(5),void(Re.CtrlSEditor&&Re.CtrlSEditor(r));s=i.range.hasrange?Re.crToCoord(i.range.left,i.range.top)+":"+Re.crToCoord(i.range.right,i.range.bottom):i.ecell.coord,r="set "+s+" nontextvalueformat "+t}i.EditorScheduleSheetCommands(r,!0,!1)}},200),!1}return!0},e.sheetobj.statuscallback=Re.EditorSheetStatusCallback,(e.sheetobj.statuscallbackparams=this).StatusCallback={},this.MoveECellCallback={},this.RangeChangeCallback={},this.SettingsCallbacks={},this.ecell={coord:"A1",row:1,col:1},e.highlights[this.ecell.coord]="cursor",this.range={hasrange:!1},this.range2={hasrange:!1}},Re.TableEditor.prototype.CreateTableEditor=function(e,t){return Re.CreateTableEditor(this,e,t)},Re.TableEditor.prototype.ResizeTableEditor=function(e,t){return Re.ResizeTableEditor(this,e,t)},Re.TableEditor.prototype.SaveEditorSettings=function(){return Re.SaveEditorSettings(this)},Re.TableEditor.prototype.LoadEditorSettings=function(e,t){return Re.LoadEditorSettings(this,e,t)},Re.TableEditor.prototype.EditorRenderSheet=function(){Re.EditorRenderSheet(this)},Re.TableEditor.prototype.EditorScheduleSheetCommands=function(e,t,o){Re.EditorScheduleSheetCommands(this,e,t,o)},Re.TableEditor.prototype.ScheduleSheetCommands=function(e,t){this.context.sheetobj.ScheduleSheetCommands(e,t)},Re.TableEditor.prototype.SheetUndo=function(){this.context.sheetobj.SheetUndo()},Re.TableEditor.prototype.SheetRedo=function(){this.context.sheetobj.SheetRedo()},Re.TableEditor.prototype.EditorStepSet=function(e,t){Re.EditorStepSet(this,e,t)},Re.TableEditor.prototype.GetStatuslineString=function(e,t,o){return Re.EditorGetStatuslineString(this,e,t,o)},Re.TableEditor.prototype.EditorMouseRegister=function(){return Re.EditorMouseRegister(this)},Re.TableEditor.prototype.EditorMouseUnregister=function(){return Re.EditorMouseUnregister(this)},Re.TableEditor.prototype.EditorMouseRange=function(e){return Re.EditorMouseRange(this,e)},Re.TableEditor.prototype.EditorProcessKey=function(e,t){return Re.EditorProcessKey(this,e,t)},Re.TableEditor.prototype.EditorAddToInput=function(e,t){return Re.EditorAddToInput(this,e,t)},Re.TableEditor.prototype.DisplayCellContents=function(){return Re.EditorDisplayCellContents(this)},Re.TableEditor.prototype.EditorSaveEdit=function(e){return Re.EditorSaveEdit(this,e)},Re.TableEditor.prototype.EditorApplySetCommandsToRange=function(e,t){return Re.EditorApplySetCommandsToRange(this,e,t)},Re.TableEditor.prototype.MoveECellWithKey=function(e){return Re.MoveECellWithKey(this,e)},Re.TableEditor.prototype.MoveECell=function(e){return Re._app?"A1":Re.MoveECell(this,e)},Re.TableEditor.prototype.ReplaceCell=function(e,t,o){Re.ReplaceCell(this,e,t,o)},Re.TableEditor.prototype.UpdateCellCSS=function(e,t,o){Re.UpdateCellCSS(this,e,t,o)},Re.TableEditor.prototype.SetECellHeaders=function(e){Re.SetECellHeaders(this,e)},Re.TableEditor.prototype.EnsureECellVisible=function(){Re.EnsureECellVisible(this)},Re.TableEditor.prototype.ECellReadonly=function(e){return Re.ECellReadonly(this,e)},Re.TableEditor.prototype.RangeAnchor=function(e){Re.RangeAnchor(this,e)},Re.TableEditor.prototype.RangeExtend=function(e){Re.RangeExtend(this,e)},Re.TableEditor.prototype.RangeRemove=function(){Re.RangeRemove(this)},Re.TableEditor.prototype.Range2Remove=function(){Re.Range2Remove(this)},Re.TableEditor.prototype.FitToEditTable=function(){Re.FitToEditTable(this)},Re.TableEditor.prototype.CalculateEditorPositions=function(){Re.CalculateEditorPositions(this)},Re.TableEditor.prototype.ScheduleRender=function(){this.ScheduleRender(!0)},Re.TableEditor.prototype.ScheduleRender=function(e){Re._app&&1==e&&(this.context.sheetobj.widgetsClean=!1),Re.ScheduleRender(this)},Re.TableEditor.prototype.DoRenderStep=function(){Re.DoRenderStep(this)},Re.TableEditor.prototype.SchedulePositionCalculations=function(){Re.SchedulePositionCalculations(this)},Re.TableEditor.prototype.DoPositionCalculations=function(){Re.DoPositionCalculations(this)},Re.TableEditor.prototype.CalculateRowPositions=function(e,t,o){return Re.CalculateRowPositions(this,e,t,o)},Re.TableEditor.prototype.CalculateColPositions=function(e,t,o){return Re.CalculateColPositions(this,e,t,o)},Re.TableEditor.prototype.ScrollRelative=function(e,t){Re.ScrollRelative(this,e,t)},Re.TableEditor.prototype.ScrollRelativeBoth=function(e,t){Re.ScrollRelativeBoth(this,e,t)},Re.TableEditor.prototype.PageRelative=function(e,t){Re.PageRelative(this,e,t)},Re.TableEditor.prototype.LimitLastPanes=function(){Re.LimitLastPanes(this)},Re.TableEditor.prototype.ScrollTableUpOneRow=function(){return Re.ScrollTableUpOneRow(this)},Re.TableEditor.prototype.ScrollTableDownOneRow=function(){return Re.ScrollTableDownOneRow(this)},Re.TableEditor.prototype.ScrollTableLeftOneCol=function(){return Re.ScrollTableLeftOneCol(this)},Re.TableEditor.prototype.ScrollTableRightOneCol=function(){return Re.ScrollTableRightOneCol(this)},Re.TableEditor.prototype.StopPropagation=function(){return Re.StopPropagation(this)},Re.TableEditor.prototype.SetMouseMoveUp=function(){return Re.SetMouseMoveUp(this)},Re.TableEditor.prototype.RemoveMouseMoveUp=function(){return Re.RemoveMouseMoveUp(this)},Re.CreateTableEditor=function(e,t,o){var i=Re.Constants,n=Re.AssignID;return e.toplevel=document.createElement("div"),e.toplevel.style.position="relative",n(e,e.toplevel,"toplevel"),e.width=t,e.height=o,e.griddiv=document.createElement("div"),e.tablewidth=Math.max(0,t-i.defaultTableControlThickness),e.tableheight=Math.max(0,o-i.defaultTableControlThickness),e.griddiv.style.width=e.tablewidth+"px",e.griddiv.style.height=e.tableheight+"px",e.griddiv.style.overflow="hidden",e.griddiv.style.cursor="default",i.cteGriddivClass&&(e.griddiv.className=i.cteGriddivClass),n(e,e.griddiv,"griddiv"),e.FitToEditTable(),e.EditorRenderSheet(),e.griddiv.appendChild(e.fullgrid),e.verticaltablecontrol=new Re.TableControl(e,!0,e.tableheight),e.verticaltablecontrol.CreateTableControl(),n(e,e.verticaltablecontrol.main,"tablecontrolv"),e.horizontaltablecontrol=new Re.TableControl(e,!1,e.tablewidth),e.horizontaltablecontrol.CreateTableControl(),n(e,e.horizontaltablecontrol.main,"tablecontrolh"),t=document.createElement("table"),(e.layouttable=t).cellSpacing=0,t.cellPadding=0,n(e,t,"layouttable"),o=document.createElement("tbody"),t.appendChild(o),i=document.createElement("tr"),o.appendChild(i),(t=document.createElement("td")).appendChild(e.griddiv),i.appendChild(t),1!=Re._app&&((t=document.createElement("td")).appendChild(e.verticaltablecontrol.main),i.appendChild(t)),i=document.createElement("tr"),o.appendChild(i),1!=Re._app&&((t=document.createElement("td")).appendChild(e.horizontaltablecontrol.main),i.appendChild(t)),t=document.createElement("td"),Re._app?t.style.background="url("+e.imageprefix+"logo.gif) no-repeat right center":t.style.background="url("+e.imageprefix+"logo.gif) no-repeat center center",t.innerHTML="<div style='cursor:pointer;font-size:1px;'><img src='"+e.imageprefix+"1x1.gif' border='0' width='18' height='18'></div>",i.appendChild(t),e.logo=t,n(e,e.logo,"logo"),t.firstChild.firstChild.title="SocialCalc",e.toplevel.appendChild(e.layouttable),e.noEdit||(e.inputEcho=new Re.InputEcho(e),n(e,e.inputEcho.main,"inputecho")),e.cellhandles=new Re.CellHandles(e),o=document.createElement("textarea"),Re.setStyles(o,"display:none;position:absolute;height:1px;width:1px;opacity:0;filter:alpha(opacity=0);"),o.value="",e.pasteTextarea=o,n(e,e.pasteTextarea,"pastetextarea"),navigator.userAgent.match(/Safari\//)&&!navigator.userAgent.match(/Chrome\//)&&(M.removeEventListener("beforepaste",Re.SafariPasteFunction,!1),M.addEventListener("beforepaste",Re.SafariPasteFunction,!1),M.removeEventListener("beforecopy",Re.SafariPasteFunction,!1),M.addEventListener("beforecopy",Re.SafariPasteFunction,!1),M.removeEventListener("beforecut",Re.SafariPasteFunction,!1),M.addEventListener("beforecut",Re.SafariPasteFunction,!1)),e.toplevel.appendChild(e.pasteTextarea),Re.MouseWheelRegister(e.toplevel,{WheelMove:Re.EditorProcessMouseWheel,editor:e}),Re.KeyboardSetFocus(e),Re.EditorSheetStatusCallback(null,"startup",null,e),e.toplevel},Re.SafariPasteFunction=function(e){e.preventDefault()},Re.ResizeTableEditor=function(e,t,o){var i=Re.Constants;e.width=t,e.height=o,e.toplevel.style.width=t+"px",e.toplevel.style.height=o+"px",Re._app?e.tablewidth=Math.max(0,t):e.tablewidth=Math.max(0,t-i.defaultTableControlThickness),e.tableheight=Math.max(0,o-i.defaultTableControlThickness),e.griddiv.style.width=e.tablewidth+"px",e.griddiv.style.height=e.tableheight+"px",e.verticaltablecontrol.main.style.height=e.tableheight+"px",e.horizontaltablecontrol.main.style.width=e.tablewidth+"px",e.FitToEditTable(),e.ScheduleRender()},Re.SaveEditorSettings=function(e){var t,o,i=e.context,n=e.range,r="";for(r+="version:1.0\n",t=0;t<i.rowpanes.length;t++)r+="rowpane:"+t+":"+i.rowpanes[t].first+":"+i.rowpanes[t].last+"\n";for(t=0;t<i.colpanes.length;t++)r+="colpane:"+t+":"+i.colpanes[t].first+":"+i.colpanes[t].last+"\n";for(o in e.ecell&&(r+="ecell:"+e.ecell.coord+"\n"),n.hasrange&&(r+="range:"+n.anchorcoord+":"+n.top+":"+n.bottom+":"+n.left+":"+n.right+"\n"),e.SettingsCallbacks)r+=e.SettingsCallbacks[o].save(e,o);return r},Re.LoadEditorSettings=function(e,t,o){var i,n,r,s,a,l,c,u,d,h,p=t.split(/\r\n|\n/),f=e.context;for(f.rowpanes=[{first:1,last:1}],f.colpanes=[{first:1,last:1}],e.ecell=null,e.range={hasrange:!1},e.range2={hasrange:!1},h=e.range,f.highlights={},d=f.highlights,r=0;r<p.length;r++)switch(u=(i=(n=p[r]).split(":"))[0]){case"version":break;case"rowpane":f.rowpanes[+i[1]]={first:+i[2],last:+i[3]};break;case"colpane":f.colpanes[+i[1]]={first:+i[2],last:+i[3]};break;case"ecell":e.ecell=Re.coordToCr(i[1]),e.ecell.coord=i[1],d[i[1]]="cursor";break;case"range":for(h.hasrange=!0,h.anchorcoord=i[1],s=Re.coordToCr(h.anchorcoord),h.anchorrow=s.row,h.anchorcol=s.col,h.top=+i[2],h.bottom=+i[3],h.left=+i[4],h.right=+i[5],a=h.top;a<=h.bottom;a++)for(l=h.left;l<=h.right;l++)"cursor"!=d[c=Re.crToCoord(l,a)]&&(d[c]="range");break;default:e.SettingsCallbacks[u]&&e.SettingsCallbacks[u].load(e,u,n,o)}},Re.EditorRenderSheet=function(e){e.EditorMouseUnregister();var t=e.context.sheetobj;if(null!=t.reRenderCellList&&Re._app&&!0===t.widgetsClean){for(var o in t.reRenderCellList){var o=t.reRenderCellList[o],i=t.cells[o].valuetype;"i"==i.charAt(1)&&i==t.cells[o].prevvaluetype||(cr=Re.coordToCr(o),null!=(cell=Re.GetEditorCellElement(e,cr.row,cr.col))&&e.ReplaceCell(cell,cr.row,cr.col))}t.reRenderCellList=[]}else e.fullgrid=e.context.RenderSheet(e.fullgrid),null!=t.reRenderCellList&&Re._app&&(t.widgetsClean=!0,t.reRenderCellList=[]);e.ecell&&e.SetECellHeaders("selected"),Re.AssignID(e,e.fullgrid,"fullgrid"),Re._app||(e.fullgrid.className="te_download"),e.EditorMouseRegister()},Re.EditorScheduleSheetCommands=function(e,t,o,i){if("start"==e.state||i)if(e.busy&&!i)e.deferredCommands.push({cmdstr:t,saveundo:o});else{var n=t.split(" ");switch(n[0]){case"recalc":case"redisplay":e.context.sheetobj.ScheduleSheetCommands(t,!1);break;case"undo":Re._app&&(e.context.sheetobj.widgetsClean=!1),e.SheetUndo();break;case"redo":Re._app&&(e.context.sheetobj.widgetsClean=!1),e.SheetRedo();break;case"setemailparameters":Re.TriggerIoAction.Email(n[1],n[2]);break;default:e.context.sheetobj.ScheduleSheetCommands(t,o)}}},Re.EditorSheetStatusCallback=function(e,t,o,i){function n(e){for(r in i.StatusCallback)i.StatusCallback[r].func&&i.StatusCallback[r].func(i,e,o,i.StatusCallback[r].params)}var r,s,a,l=i.context.sheetobj;switch(t){case"startup":break;case"cmdstart":i.busy=!0,l.celldisplayneeded="";break;case"cmdextension":break;case"cmdend":if(n(t),l.changedrendervalues&&(i.context.PrecomputeSheetFontsAndLayouts(),i.context.CalculateCellSkipData(),l.changedrendervalues=!1),l.celldisplayneeded&&!l.renderneeded&&l.cells[l.celldisplayneeded]&&"e#N/A"!=l.cells[l.celldisplayneeded].valuetype&&(cr=Re.coordToCr(l.celldisplayneeded),a=Re.GetEditorCellElement(i,cr.row,cr.col),i.ReplaceCell(a,cr.row,cr.col)),i.deferredCommands.length)return s=i.deferredCommands.shift(),void i.EditorScheduleSheetCommands(s.cmdstr,s.saveundo,!0);if(l.attribs.needsrecalc&&("off"!=l.attribs.recalc||l.recalconce)&&i.recalcFunction?(i.FitToEditTable(),l.renderneeded=!1,l.recalconce&&delete l.recalconce,i.recalcFunction(i)):l.renderneeded?(i.FitToEditTable(),l.renderneeded=!1,i.ScheduleRender(!1)):i.SchedulePositionCalculations(),"col"==l.hiddencolrow&&null!==i.ecell){for(var c=i.ecell.col;"yes"==l.colattribs.hide[Re.rcColname(c)];)c++;var u=Re.crToCoord(c,i.ecell.row);i.MoveECell(u),l.hiddencolrow=""}if("row"==l.hiddencolrow&&null!==i.ecell){for(var d=i.ecell.row;"yes"==l.rowattribs.hide[d];)d++;u=Re.crToCoord(i.ecell.col,d);i.MoveECell(u),l.hiddencolrow=""}return;case"calcstart":i.busy=!0;break;case"calccheckdone":case"calcorder":case"calcstep":case"calcloading":case"calcserverfunc":break;case"calcfinished":return n(t),void i.ScheduleRender(!1);case"schedrender":i.busy=!0;break;case"renderdone":break;case"schedposcalc":i.busy=!0;break;case"doneposcalc":return i.deferredEmailCommands.length?(n(t),a=i.deferredEmailCommands.shift(),void i.EditorScheduleSheetCommands(a.cmdstr,a.saveundo,!0)):void(i.deferredCommands.length?(n(t),s=i.deferredCommands.shift(),i.EditorScheduleSheetCommands(s.cmdstr,s.saveundo,!0)):(i.busy=!1,n(t),"start"==i.state&&i.DisplayCellContents()));case"emailing":case"confirmemailsent":break;default:alert("Unknown status: "+t)}n(t)},Re.EditorGetStatuslineString=function(e,t,o,i){var n,r,s,a,l,c,u=Re.Constants,d="";switch(t){case"moveecell":case"rangechange":case"startup":break;case"cmdstart":i.command=!0,document.body.style.cursor="progress",e.griddiv.style.cursor="progress",d=u.s_statusline_executing;break;case"cmdextension":d="Command Extension: "+o;break;case"cmdend":i.command=!1;break;case"schedrender":d=u.s_statusline_displaying;break;case"renderdone":d=" ";break;case"schedposcalc":d=u.s_statusline_displaying;break;case"cmdendnorender":case"doneposcalc":document.body.style.cursor="default",e.griddiv.style.cursor="default","sent"==i.emailing&&(d=i.emailreponse,i.emailreponse="",i.emailing="done");break;case"calcorder":d=u.s_statusline_ordering+Math.floor(100*o.count/(o.total||1))+"%";break;case"calcstep":d=u.s_statusline_calculating+Math.floor(100*o.count/(o.total||1))+"%";break;case"calcloading":d=u.s_statusline_calculatingls+": "+o.sheetname;break;case"calcserverfunc":d=u.s_statusline_calculating+Math.floor(100*o.count/(o.total||1))+"%, "+u.s_statusline_doingserverfunc+o.funcname+u.s_statusline_incell+o.coord;break;case"calcstart":i.calculating=!0,document.body.style.cursor="progress",e.griddiv.style.cursor="progress",d=u.s_statusline_calcstart;break;case"calccheckdone":break;case"calcfinished":i.calculating=!1;break;case"emailing":i.emailing="sending",i.emailreponse="";break;case"confirmemailsent":i.emailing="sent",void 0===i.emailreponse&&(i.emailreponse=""),i.emailreponse+=o;break;default:d=t}if("sending"==i.emailing&&(d+=u.s_statusline_sendemail),"sent"==i.emailing&&(d+=i.emailreponse),!d&&i.calculating&&(d=u.s_statusline_calculating),!i.calculating&&!i.command&&!d&&e.range.hasrange&&(e.range.left!=e.range.right||e.range.top!=e.range.bottom)){for(c=0,s=e.range.top;s<=e.range.bottom;s++)for(a=e.range.left;a<=e.range.right;a++)(l=e.context.sheetobj.cells[Re.crToCoord(a,s)])&&l.valuetype&&"n"==l.valuetype.charAt(0)&&(c+=+l.datavalue);c=Re.FormatNumber.formatNumberWithFormat(c,"[,]General",""),d=Re.crToCoord(e.range.left,e.range.top)+":"+Re.crToCoord(e.range.right,e.range.bottom)+" ("+(e.range.right-e.range.left+1)+"x"+(e.range.bottom-e.range.top+1)+") "+u.s_statusline_sum+"="+c+" "+d}return n=(e.ecell||{}).coord+" &nbsp; "+d,i.calculating||"yes"!=e.context.sheetobj.attribs.needsrecalc||(n+=" &nbsp; "+u.s_statusline_recalcneeded),(r=e.context.sheetobj.attribs.circularreferencecell)&&(r=r.replace(/\|/," referenced by "),n+=" &nbsp; "+u.s_statusline_circref+r+"</span>"),n+=""},Re.EditorMouseInfo={registeredElements:[],editor:null,element:null,ignore:!1,mousedowncoord:"",mouselastcoord:"",mouseresizecol:"",mouseresizeclientx:null,mouseresizedisplay:null},Re.EditorMouseRegister=function(e){for(var t=Re.EditorMouseInfo,o=e.fullgrid,i=0;i<t.registeredElements.length;i++)if(t.registeredElements[i].editor==e){if(t.registeredElements[i].element==o)return;break}if(i<t.registeredElements.length?t.registeredElements[i].element=o:t.registeredElements.push({element:o,editor:e}),o.addEventListener)o.addEventListener("mousedown",Re.ProcessEditorMouseDown,!1),o.addEventListener("dblclick",Re.ProcessEditorDblClick,!1);else{if(!o.attachEvent)throw"Browser not supported";o.attachEvent("onmousedown",Re.ProcessEditorMouseDown),o.attachEvent("ondblclick",Re.ProcessEditorDblClick)}t.ignore=!1},Re.EditorMouseUnregister=function(e){for(var t,o=Re.EditorMouseInfo,i=(e.fullgrid,0);i<o.registeredElements.length&&o.registeredElements[i].editor!=e;i++);i<o.registeredElements.length&&((t=o.registeredElements[i].element).removeEventListener?(t.removeEventListener("mousedown",Re.ProcessEditorMouseDown,!1),t.removeEventListener("dblclick",Re.ProcessEditorDblClick,!1)):t.detachEvent&&(t.detachEvent("onmousedown",Re.ProcessEditorMouseDown),t.detachEvent("ondblclick",Re.ProcessEditorDblClick)),o.registeredElements.splice(i,1))},Re.StopPropagation=function(e){e.stopPropagation?e.stopPropagation():e.cancelBubble=!0,e.preventDefault?e.preventDefault():e.returnValue=!1},Re.SetMouseMoveUp=function(e,t,o,i){document.addEventListener?(document.addEventListener("mousemove",e,!0),document.addEventListener("mouseup",t,!0)):o.attachEvent&&(o.setCapture(),o.attachEvent("onmousemove",e),o.attachEvent("onmouseup",t),o.attachEvent("onlosecapture",t)),Re.StopPropagation(i)},Re.RemoveMouseMoveUp=function(e,t,o,i){Re.StopPropagation(i),document.removeEventListener?(document.removeEventListener("mousemove",e,!0),document.removeEventListener("mouseup",t,!0)):o.detachEvent&&(o.detachEvent("onlosecapture",t),o.detachEvent("onmouseup",t),o.detachEvent("onmousemove",e),o.releaseCapture())},Re.ProcessEditorMouseDown=function(e){var t,o,i=e||M.event,n=Re.EditorMouseInfo,r=i.target||i.srcElement,s=r;if(3==s.nodeType&&(s=s.parentNode),!n.ignore){for(o=null;!o&&r;r=r.parentNode)o=Re.LookupElement(r,n.registeredElements);if(o){t=o.editor,n.element=r;var a=t.range,l=Re.GetElementPositionWithScroll(t.toplevel),c=i.clientX-l.left,l=i.clientY-l.top;if(c=Re.GridMousePosition(t,c,l))if(n.editor=t,c.rowheader)c.rowselect?Re.ProcessEditorRowselectMouseDown(e,r,c):Re.ProcessEditorRowsizeMouseDown(e,r,c);else if(c.colheader)c.colselect?Re.ProcessEditorColselectMouseDown(e,r,c):Re.ProcessEditorColsizeMouseDown(e,r,c);else if(c.coord)if(a.hasrange||e.shiftKey&&t.RangeAnchor(),l=t.MoveECell(c.coord),1==Re._app)Re.CmdGotFocus(!0);else{var c=t.context.sheetobj.cells[l];if(c)if("i"==c.valuetype.charAt(1))return c=c.valuetype.substring(2)+"_"+l,void(s&&c==s.id&&(s=document.getElementById(c),Re.CmdGotFocus(s)));a.hasrange&&(e.shiftKey?t.RangeExtend():t.RangeRemove()),n.mousedowncoord=l,n.mouselastcoord=l,t.EditorMouseRange(l),Re.KeyboardSetFocus(t),"start"!=t.state&&t.inputBox&&t.inputBox.element.focus(),Re.SetMouseMoveUp(Re.ProcessEditorMouseMove,Re.ProcessEditorMouseUp,r,i)}}else n.editor=null}},Re.EditorMouseRange=function(e,t){var o,i,n=e.range;switch(e.state){case"input":o=e.inputBox.GetText(),i=e.workingvalues,(0<="(+-*/,:!&<>=^".indexOf(o.slice(-1))&&"="==o.slice(0,1)||"="==o)&&(i.partialexpr=o),i.partialexpr?t&&(n.hasrange?e.inputBox.SetText(i.partialexpr+Re.crToCoord(n.left,n.top)+":"+Re.crToCoord(n.right,n.bottom)):e.inputBox.SetText(i.partialexpr+t)):(e.inputBox.Blur(),e.inputBox.ShowInputBox(!1),e.state="start",e.cellhandles.ShowCellHandles(!0),e.EditorSaveEdit(),e.inputBox.DisplayCellContents(null));break;case"inputboxdirect":e.inputBox.Blur(),e.inputBox.ShowInputBox(!1),e.state="start",e.cellhandles.ShowCellHandles(!0),e.EditorSaveEdit(),e.inputBox.DisplayCellContents(null)}},Re.ProcessEditorMouseMove=function(e){var t,o,i=e||M.event,n=Re.EditorMouseInfo,r=n.editor;r&&!n.ignore&&(n.element,t=Re.GetElementPositionWithScroll(r.toplevel),o=i.clientX-t.left,t=i.clientY-t.top,(o=Re.GridMousePosition(r,o,t))&&(o&&!o.coord?Re.SetDragAutoRepeat(r,o):(Re.SetDragAutoRepeat(r,null),o.coord&&(o.coord!=n.mouselastcoord&&(e.shiftKey||r.range.hasrange||r.RangeAnchor(n.mousedowncoord),r.MoveECell(o.coord),r.RangeExtend()),n.mouselastcoord=o.coord,r.EditorMouseRange(o.coord),Re.StopPropagation(i)))))},Re.ProcessEditorMouseUp=function(e){var e=e||M.event,t=Re.EditorMouseInfo,o=t.editor;if(o&&!t.ignore){var i=t.element,n=Re.GetElementPositionWithScroll(o.toplevel),r=e.clientX-n.left,n=e.clientY-n.top,r=Re.GridMousePosition(o,r,n);if(Re.SetDragAutoRepeat(o,null),r)return r.coord||(r.coord=o.ecell.coord),o.range.hasrange?(o.MoveECell(r.coord),o.RangeExtend()):r.coord&&r.coord!=t.mousedowncoord&&(o.RangeAnchor(t.mousedowncoord),o.MoveECell(r.coord),o.RangeExtend()),o.EditorMouseRange(r.coord),t.editor=null,Re.RemoveMouseMoveUp(Re.ProcessEditorMouseMove,Re.ProcessEditorMouseUp,i,e),!1}},Re.ProcessEditorColsizeMouseDown=function(e,t,o){var e=e||M.event,i=Re.EditorMouseInfo,n=i.editor,r=Re.GetElementPositionWithScroll(n.toplevel),r=e.clientX-r.left;i.mouseresizecolnum=o.coltoresize,i.mouseresizecol=Re.rcColname(o.coltoresize),i.mousedownclientx=r,i.mousecoltounhide=o.coltounhide,o.coltoresize&&(r=document.createElement("div"),(i.mouseresizedisplay=r).style.width="auto",r.style.position="absolute",r.style.zIndex=100,r.style.top=n.headposition.top+"px",r.style.left=n.colpositions[o.coltoresize]+"px",r.innerHTML='<table cellpadding="0" cellspacing="0"><tr><td style="height:100px;border:1px dashed black;background-color:white;width:'+(n.context.colwidth[i.mouseresizecolnum]-2)+'px;">&nbsp;</td><td><div style="font-size:small;color:white;background-color:gray;padding:4px;">'+n.context.colwidth[i.mouseresizecolnum]+"</div></td></tr></table>",Re.setStyles(r.firstChild.lastChild.firstChild.childNodes[0],"filter:alpha(opacity=85);opacity:.85;"),n.toplevel.appendChild(r)),Re.SetMouseMoveUp(Re.ProcessEditorColsizeMouseMove,Re.ProcessEditorColsizeMouseUp,n.toplevel,e)},Re.ProcessEditorColsizeMouseMove=function(e){var t,e=e||M.event,o=Re.EditorMouseInfo,i=o.editor;i&&(o.mouseresizecolnum&&(t=Re.GetElementPositionWithScroll(i.toplevel),t=e.clientX-t.left,(i=+i.context.colwidth[o.mouseresizecolnum]+(t-o.mousedownclientx))<Re.Constants.defaultMinimumColWidth&&(i=Re.Constants.defaultMinimumColWidth),(t=o.mouseresizedisplay).innerHTML='<table cellpadding="0" cellspacing="0"><tr><td style="height:100px;border:1px dashed black;background-color:white;width:'+(i-2)+'px;">&nbsp;</td><td><div style="font-size:small;color:white;background-color:gray;padding:4px;">'+i+"</div></td></tr></table>",Re.setStyles(t.firstChild.lastChild.firstChild.childNodes[0],"filter:alpha(opacity=85);opacity:.85;")),Re.StopPropagation(e))},Re.ProcessEditorColsizeMouseUp=function(e){var t,e=e||M.event,o=Re.EditorMouseInfo,i=o.editor;if(i)return element=o.element,t=Re.GetElementPositionWithScroll(i.toplevel),t=e.clientX-t.left,Re.RemoveMouseMoveUp(Re.ProcessEditorColsizeMouseMove,Re.ProcessEditorColsizeMouseUp,i.toplevel,e),o.mousecoltounhide?i.EditorScheduleSheetCommands("set "+Re.rcColname(o.mousecoltounhide)+" hide",!0,!1):o.mouseresizecolnum&&((e=+i.context.colwidth[o.mouseresizecolnum]+(t-o.mousedownclientx))<Re.Constants.defaultMinimumColWidth&&(e=Re.Constants.defaultMinimumColWidth),i.EditorScheduleSheetCommands("set "+o.mouseresizecol+" width "+e,!0,!1),i.timeout&&M.clearTimeout(i.timeout),i.timeout=M.setTimeout(Re.FinishColRowSize,1)),!1},Re.FinishColRowSize=function(){var e=Re.EditorMouseInfo,t=e.editor;t&&(t.toplevel.removeChild(e.mouseresizedisplay),e.mouseresizedisplay=null,e.editor=null)},Re.ProcessEditorRowselectMouseDown=function(e,t,o){var e=e||M.event,i=Re.EditorMouseInfo.editor,n=Re.GetSpreadsheetControlObject().sheet;coord1=Re.crToCoord(1,o.row),coord2=Re.crToCoord(n.LastCol(),o.row),coord3=Re.crToCoord(i.firstscrollingcol,o.row),i.RangeAnchor(coord1),i.RangeExtend(coord2),i.MoveECell(coord3),Re.SetMouseMoveUp(Re.ProcessEditorRowselectMouseMove,Re.ProcessEditorRowselectMouseUp,i.toplevel,e)},Re.ProcessEditorRowselectMouseMove=function(e){var t,o,e=e||M.event,i=Re.EditorMouseInfo.editor,n=Re.GetSpreadsheetControlObject().sheet;i&&(t=Re.GetElementPositionWithScroll(i.toplevel),o=e.clientX-t.left,e=e.clientY-t.top,result=Re.GridMousePosition(i,o,e),coord2=Re.crToCoord(n.LastCol(),result.row),coord3=Re.crToCoord(i.firstscrollingcol,result.row),i.RangeExtend(coord2),i.MoveECell(coord3))},Re.ProcessEditorRowselectMouseUp=function(e){e||M.event;var t=Re.EditorMouseInfo.editor;t&&Re.RemoveMouseMoveUp(Re.ProcessEditorRowselectMouseMove,Re.ProcessEditorRowselectMouseUp,t.toplevel,e)},Re.ProcessEditorColselectMouseDown=function(e,t,o){var e=e||M.event,i=Re.EditorMouseInfo.editor,n=Re.GetSpreadsheetControlObject().sheet;coord1=Re.crToCoord(o.col,1),coord2=Re.crToCoord(o.col,n.LastRow()),coord3=Re.crToCoord(o.col,i.firstscrollingrow),i.RangeAnchor(coord1),i.RangeExtend(coord2),i.MoveECell(coord3),Re.SetMouseMoveUp(Re.ProcessEditorColselectMouseMove,Re.ProcessEditorColselectMouseUp,i.toplevel,e)},Re.ProcessEditorColselectMouseMove=function(e){var t,o,e=e||M.event,i=Re.EditorMouseInfo.editor,n=Re.GetSpreadsheetControlObject().sheet;i&&(t=Re.GetElementPositionWithScroll(i.toplevel),o=e.clientX-t.left,e=e.clientY-t.top,result=Re.GridMousePosition(i,o,e),coord2=Re.crToCoord(result.col,n.LastRow()),coord3=Re.crToCoord(result.col,i.firstscrollingrow),i.RangeExtend(coord2),i.MoveECell(coord3))},Re.ProcessEditorColselectMouseUp=function(e){e||M.event;var t=Re.EditorMouseInfo.editor;t&&Re.RemoveMouseMoveUp(Re.ProcessEditorColselectMouseMove,Re.ProcessEditorColselectMouseUp,t.toplevel,e)},Re.ProcessEditorRowsizeMouseDown=function(e,t,o){var e=e||M.event,i=Re.EditorMouseInfo,n=i.editor,r=Re.GetSpreadsheetControlObject().spreadsheetDiv.firstChild.offsetHeight,r=e.clientY-r;i.mouseresizerownum=o.rowtoresize,i.mouseresizerow=o.rowtoresize,i.mousedownclienty=r,i.mouserowtounhide=o.rowtounhide,o.rowtoresize&&(r=document.createElement("div"),(i.mouseresizedisplay=r).style.width=n.context.totalwidth+"px",r.style.height=n.rowpositions[o.rowtoresize]+"px",r.style.position="absolute",r.style.zIndex=100,r.style.top=n.rowpositions[o.rowtoresize]+"px",r.style.left=n.headposition.left+"px",r.innerHTML='<table cellpadding="0" cellspacing="0"><tr><td style="width:100pxborder:1px dashed black;background-color:white;height:'+(n.context.rowheight[i.mouseresizerownum]-2)+'px;">&nbsp;</td><td><div style="font-size:small;color:white;background-color:gray;padding:4px;">'+n.context.rowheight[i.mouseresizerownum]+"</div></td></tr></table>",Re.setStyles(r.firstChild.lastChild.firstChild.childNodes[0],"filter:alpha(opacity=85);opacity:.5;"),n.toplevel.appendChild(r)),Re.SetMouseMoveUp(Re.ProcessEditorRowsizeMouseMove,Re.ProcessEditorRowsizeMouseUp,n.toplevel,e)},Re.ProcessEditorRowsizeMouseMove=function(e){var t,e=e||M.event,o=Re.EditorMouseInfo,i=o.editor;i&&(o.mouseresizerownum&&(t=Re.GetSpreadsheetControlObject().spreadsheetDiv.firstChild.offsetHeight,t=e.clientY-t,(i=+i.context.rowheight[o.mouseresizerownum]+(t-o.mousedownclienty))<Re.Constants.defaultAssumedRowHeight&&(i=Re.Constants.defaultAssumedRowHeight),(t=o.mouseresizedisplay).innerHTML='<table cellpadding="0" cellspacing="0"><tr><td style="width:100px;border:1px dashed black;background-color:white;height:'+(i-2)+'px;">&nbsp;</td><td><div style="font-size:small;color:white;background-color:gray;padding:4px;">'+i+"</div></td></tr></table>",Re.setStyles(t.firstChild.lastChild.firstChild.childNodes[0],"filter:alpha(opacity=85);opacity:.5;")),Re.StopPropagation(e))},Re.ProcessEditorRowsizeMouseUp=function(e){var t,e=e||M.event,o=Re.EditorMouseInfo,i=o.editor;if(i)return element=o.element,t=Re.GetSpreadsheetControlObject().spreadsheetDiv.firstChild.offsetHeight,t=e.clientY-t,Re.RemoveMouseMoveUp(Re.ProcessEditorRowsizeMouseMove,Re.ProcessEditorRowsizeMouseUp,i.toplevel,e),o.mouserowtounhide?i.EditorScheduleSheetCommands("set "+o.mouserowtounhide+" hide",!0,!1):o.mouseresizerownum&&((e=+i.context.rowheight[o.mouseresizerownum]+(t-o.mousedownclienty))<Re.Constants.defaultAssumedRowHeight&&(e=Re.Constants.defaultAssumedRowHeight),i.EditorScheduleSheetCommands("set "+o.mouseresizerownum+" height "+e,!0,!1),i.timeout&&M.clearTimeout(i.timeout),i.timeout=M.setTimeout(Re.FinishColRowSize,1)),!1},Re.AutoRepeatInfo={timer:null,mouseinfo:null,repeatinterval:1e3,editor:null,repeatcallback:null},Re.SetDragAutoRepeat=function(e,t,o){var i,n,r=Re.AutoRepeatInfo;if(r.repeatcallback=o,!t)return r.timer&&(M.clearTimeout(r.timer),r.timer=null),void(r.mouseinfo=null);if(r.editor=e,r.mouseinfo&&(t.rowheader||t.rowfooter?t.row!=r.mouseinfo.row&&(i=Re.crToCoord(e.ecell.col,t.row),r.repeatcallback?(n=t.row<r.mouseinfo.row?"left":t.row>r.mouseinfo.row?"right":"",r.repeatcallback(i,n)):(e.MoveECell(i),e.MoveECell(i),e.RangeExtend(),e.EditorMouseRange(i))):(t.colheader||t.colfooter)&&t.col!=r.mouseinfo.col&&(i=Re.crToCoord(t.col,e.ecell.row),r.repeatcallback?(n=t.row<r.mouseinfo.row?"left":t.row>r.mouseinfo.row?"right":"",r.repeatcallback(i,n)):(e.MoveECell(i),e.RangeExtend(),e.EditorMouseRange(i)))),(r.mouseinfo=t).distance<5)r.repeatinterval=333;else if(t.distance<10)r.repeatinterval=250;else if(t.distance<25)r.repeatinterval=100;else{if(!(t.distance<35))return void(r.timer&&(M.clearTimeout(r.timer),r.timer=null));r.repeatinterval=75}r.timer||(r.timer=M.setTimeout(Re.DragAutoRepeat,r.repeatinterval))},Re.DragAutoRepeat=function(){var e,t,o=Re.AutoRepeatInfo,i=o.mouseinfo;i.rowheader?e="left":i.rowfooter?e="right":i.colheader?e="up":i.colfooter&&(e="down"),o.repeatcallback?(i=Re.coordToCr(o.editor.ecell.coord),"left"==e&&1<i.col?i.col--:"right"==e?i.col++:"up"==e&&1<i.row?i.row--:"down"==e&&i.row++,t=Re.crToCoord(i.col,i.row),o.repeatcallback(t,e)):(t=o.editor.MoveECellWithKey("[a"+e+"]shifted"))&&o.editor.EditorMouseRange(t),o.timer=M.setTimeout(Re.DragAutoRepeat,o.repeatinterval)},Re.ProcessEditorDblClick=function(e){var t,o,i,n,e=e||M.event,r=Re.EditorMouseInfo,s=e.target||e.srcElement;if(!r.ignore){for(t=null;!t&&s;s=s.parentNode)t=Re.LookupElement(s,r.registeredElements);t?(o=t.editor,i=Re.GetElementPositionWithScroll(o.toplevel),n=e.clientX-i.left,i=e.clientY-i.top,(n=Re.GridMousePosition(o,n,i))&&n.coord&&(r.editor=o,r.element=s,o.range,sheetobj=o.context.sheetobj,"start"===o.state&&Re.EditorOpenCellEdit(o),Re.StopPropagation(e))):r.editor=null}},Re.EditorOpenCellEdit=function(e){var t;return!e.ecell||(!e.inputBox||(!!e.inputBox.element.disabled||(e.inputBox.ShowInputBox(!0),e.inputBox.Focus(),e.inputBox.SetText(""),e.inputBox.DisplayCellContents(),e.inputBox.Select("end"),(t=e.workingvalues).partialexpr="",t.ecoord=e.ecell.coord,t.erow=e.ecell.row,void(t.ecol=e.ecell.col))))},Re.EditorProcessKey=function(e,t,o){e.context.sheetobj;var i,n,r,s=e.workingvalues,a=e.range;switch("string"!=typeof t&&(t=""),e.state){case"start":if(o.shiftKey&&"[a"==t.substr(0,2)&&(t+="shifted"),"[a"==(t="[tab]"==(t="[enter]"==t?"[adown]":t)?o.shiftKey?"[aleft]":"[aright]":t).substr(0,2)||"[pg"==t.substr(0,3)||"[home]"==t)return!e.MoveECellWithKey(t);if("[del]"==t||"[backspace]"==t){e.noEdit||e.ECellReadonly()||e.EditorApplySetCommandsToRange("empty","");break}if("[esc]"==t){if(a.hasrange)for(r in e.RangeRemove(),e.MoveECell(a.anchorcoord),e.StatusCallback)e.StatusCallback[r].func(e,"specialkey",t,e.StatusCallback[r].params);return!1}if("[f2]"==t)return!(!e.noEdit&&!e.ECellReadonly())||(Re.EditorOpenCellEdit(e),!(e.state="inputboxdirect"));if(1<t.length&&"["==t.substr(0,1)||0==t.length)return!(e.ctrlkeyFunction&&0<t.length)||e.ctrlkeyFunction(e,t);if(!e.ecell)return!0;if(!e.inputBox)return!0;if(e.ECellReadonly())return!0;e.inputBox.element.disabled=!1,e.state="input",e.inputBox.ShowInputBox(!0),e.inputBox.Focus(),e.inputBox.SetText(t),e.inputBox.Select("end"),s.partialexpr="",s.ecoord=e.ecell.coord,s.erow=e.ecell.row,s.ecol=e.ecell.col,e.RangeRemove();break;case"input":if(n=e.inputBox.GetText(),e.inputBox.skipOne)return!1;if("[esc]"==t||"[enter]"==t||"[tab]"==t||t&&"[a"==t.substr(0,2)){if((0<="(+-*/,:!&<>=^".indexOf(n.slice(-1))&&"="==n.slice(0,1)||"="==n)&&(s.partialexpr=n),s.partialexpr&&(o.shiftKey&&"[a"==t.substr(0,2)&&(t+="shifted"),i=e.MoveECellWithKey(t)))return a.hasrange?e.inputBox.SetText(s.partialexpr+Re.crToCoord(a.left,a.top)+":"+Re.crToCoord(a.right,a.bottom)):e.inputBox.SetText(s.partialexpr+i),!1;e.inputBox.Blur(),e.inputBox.ShowInputBox(!1),e.state="start",e.cellhandles.ShowCellHandles(!0),"[esc]"!=t?(e.EditorSaveEdit(),e.ecell.coord!=s.ecoord&&e.MoveECell(s.ecoord),"[a"==(t="[tab]"==(t="[enter]"==t?"[adown]":t)?o.shiftKey?"[aleft]":"[aright]":t).substr(0,2)&&e.MoveECellWithKey(t)):(e.inputBox.DisplayCellContents(),e.RangeRemove(),e.MoveECell(s.ecoord));break}return s.partialexpr&&"[backspace]"==t?(e.inputBox.SetText(s.partialexpr),s.partialexpr="",e.RangeRemove(),e.MoveECell(s.ecoord),e.inputBox.ShowInputBox(!0),!1):"[f2]"==t?!(e.state="inputboxdirect"):(a.hasrange&&e.RangeRemove(),e.MoveECell(s.ecoord),s.partialexpr&&(e.inputBox.ShowInputBox(!0),s.partialexpr=""),!0);case"inputboxdirect":if(n=e.inputBox.GetText(),"[esc]"!=t&&"[enter]"!=t&&"[tab]"!=t)return"[f2]"!=t||!(e.state="input");e.inputBox.Blur(),e.inputBox.ShowInputBox(!1),e.state="start",e.cellhandles.ShowCellHandles(!0),"[esc]"==t?e.inputBox.DisplayCellContents():(e.EditorSaveEdit(),e.ecell.coord!=s.ecoord&&e.MoveECell(s.ecoord),"[a"==(t="[tab]"==(t="[enter]"==t?"[adown]":t)?o.shiftKey?"[aleft]":"[aright]":t).substr(0,2)&&e.MoveECellWithKey(t));break;case"skip-and-start":return e.state="start",e.cellhandles.ShowCellHandles(!0),!1;default:return!0}return!1},Re.EditorAddToInput=function(e,t,o){var i=e.workingvalues;if(!e.noEdit&&!e.ECellReadonly())switch(e.state){case"start":e.state="input",e.inputBox.ShowInputBox(!0),e.inputBox.element.disabled=!1,e.inputBox.Focus(),e.inputBox.SetText((o||"")+t),e.inputBox.Select("end"),i.partialexpr="",i.ecoord=e.ecell.coord,i.erow=e.ecell.row,i.ecol=e.ecell.col,e.RangeRemove();break;case"input":case"inputboxdirect":e.inputBox.element.focus(),i.partialexpr&&(e.inputBox.SetText(i.partialexpr),i.partialexpr="",e.RangeRemove(),e.MoveECell(i.ecoord)),e.inputBox.SetText(e.inputBox.GetText()+t)}},Re.EditorDisplayCellContents=function(e){e.inputBox&&e.inputBox.DisplayCellContents()},Re.EditorSaveEdit=function(e,t){var o,i,n=e.context.sheetobj,r=e.workingvalues,s="text t",t="string"==typeof t?t:e.inputBox.GetText();t!=Re.GetCellContents(n,r.ecoord)+""&&("="==(i=t.charAt(0))&&-1==t.indexOf("\n")?(s="formula",t=t.substring(1)):"'"==i?(s="text t",t=t.substring(1),"t"==(o=Re.DetermineValueType(t)).type.charAt(0)&&(s="text "+o.type)):s=0==t.length?"empty":"n"==(o=Re.DetermineValueType(t)).type&&t==o.value+""?"value n":"t"==o.type.charAt(0)?"text "+o.type:""==o.type?"text t":"constant "+o.type+" "+o.value,"t"==s.charAt(0)&&(t=Re.encodeForSave(t)),i="set "+r.ecoord+" "+s+" "+t,e.EditorScheduleSheetCommands(i,!0,!1),void 0!==n.ioEventTree&&void 0!==n.ioParameterList&&void 0!==n.ioEventTree[r.ecoord]&&Re.EditedTriggerCell(n.ioEventTree[r.ecoord],r.ecoord,e,n))},Re.EditedTriggerCell=function(e,t,o,i){for(var n in e){var r=i.ioParameterList[n];if(void 0!==r)switch(r.function_name){case"EMAILONEDIT":case"EMAILONEDITIF":cmdline="setemailparameters "+n+" "+t,o.deferredEmailCommands.push({cmdstr:cmdline,saveundo:!1})}}},Re.EditorApplySetCommandsToRange=function(e,t){e.context.sheetobj;var o=e.ecell,i=e.range;i=i.hasrange?"set "+(coord=Re.crToCoord(i.left,i.top)+":"+Re.crToCoord(i.right,i.bottom))+" "+t:"set "+o.coord+" "+t,e.EditorScheduleSheetCommands(i,!0,!1);e.DisplayCellContents()},Re.EditorProcessMouseWheel=function(e,t,o,i){i.functionobj.editor.busy||(0<t&&i.functionobj.editor.ScrollRelative(!0,Math.floor(1.5*-t)),t<0&&i.functionobj.editor.ScrollRelative(!0,Math.ceil(1.5*-t)))},Re.GridMousePosition=function(e,t,o){for(var i,n,r,s,a,l={},c=1;c<e.rowpositions.length&&!(e.rowheight[c]&&e.rowpositions[c]+e.rowheight[c]>o);c++);for(n=1;n<e.colpositions.length&&!(e.colwidth[n]&&e.colpositions[n]+e.colwidth[n]>t);n++);if(l.row=c,l.col=n,e.headposition&&1!=Re._app){if(t<e.headposition.left&&t>=e.gridposition.left){for(l.rowheader=!0,l.distance=e.headposition.left-t,l.rowtoresize=!1,l.rowselect=!1,s=1;s<e.rowpositions.length;s++)if(e.rowheight[s]&&e.rowpositions[s]+e.rowheight[s]-3<=o&&e.rowpositions[s]+e.rowheight[s]+3>=o){l.rowtoresize=s;break}if((unhide=e.context.rowunhidetop[c])&&t>=(pos=Re.GetElementPosition(unhide)).left&&t<pos.left+unhide.offsetWidth&&o>=e.rowpositions[c]+e.rowheight[c]-unhide.offsetHeight&&o<e.rowpositions[c]+e.rowheight[c]&&(l.rowtounhide=c+1),(unhide=e.context.rowunhidebottom[c])&&t>=(pos=Re.GetElementPosition(unhide)).left&&t<pos.left+unhide.offsetWidth&&o>=e.rowpositions[c]&&o<e.rowpositions[c]+unhide.offsetHeight&&(l.rowtounhide=c-1),null==l.rowtounhide){for(i=0;i<e.context.rowpanes.length;i++)if(l.rowtoresize>=e.context.rowpanes[i].first&&l.rowtoresize<=e.context.rowpanes[i].last)return l;l.rowselect=!0}return delete l.rowtoresize,l}if(o<e.headposition.top&&o>e.gridposition.top){for(l.colheader=!0,l.distance=e.headposition.top-o,l.coltoresize=!1,l.colselect=!1,a=1;a<e.colpositions.length;a++)if(e.colwidth[a]&&e.colpositions[a]+e.colwidth[a]-3<=t&&e.colpositions[a]+e.colwidth[a]+3>=t){l.coltoresize=a;break}if((unhide=e.context.colunhideleft[n])&&t>=(pos=Re.GetElementPosition(unhide)).left&&t<pos.left+unhide.offsetWidth&&o>=pos.top&&o<pos.top+unhide.offsetHeight&&(l.coltounhide=n+1),(unhide=e.context.colunhideright[n])&&t>=(pos=Re.GetElementPosition(unhide)).left&&t<pos.left+unhide.offsetWidth&&o>=pos.top&&o<pos.top+unhide.offsetHeight&&(l.coltounhide=n-1),null==l.coltounhide){for(r=0;r<e.context.colpanes.length;r++)if(l.coltoresize>=e.context.colpanes[r].first&&l.coltoresize<=e.context.colpanes[r].last)return l;l.colselect=!0}return delete l.coltoresize,l}return t>=e.verticaltablecontrol.controlborder?(l.rowfooter=!0,l.distance=t-e.verticaltablecontrol.controlborder):o>=e.horizontaltablecontrol.controlborder?(l.colfooter=!0,l.distance=o-e.horizontaltablecontrol.controlborder):t<e.gridposition.left?(l.rowheader=!0,l.distance=e.headposition.left-t):o<=e.gridposition.top?(l.colheader=!0,l.distance=e.headposition.top-o):(l.coord=Re.crToCoord(l.col,l.row),e.context.cellskip[l.coord]&&(l.coord=e.context.cellskip[l.coord])),l}return null},Re.GetEditorCellElement=function(e,t,o){for(var i,n,r,s=0,a=0,l=(0==e.context.showRCHeaders&&(a=s=-1),0),c=0,u=0;u<e.context.rowpanes.length;u++){if(t>=e.context.rowpanes[u].first&&t<=e.context.rowpanes[u].last)for(i=0;i<e.context.colpanes.length;i++){if(o>=e.context.colpanes[i].first&&o<=e.context.colpanes[i].last){for(l+=t-e.context.rowpanes[u].first+2,n=e.context.colpanes[i].first;n<=o;n++)(r=e.context.cellskip[Re.crToCoord(n,t)])&&e.context.CoordInPane(r,u,i)||c++;return{element:e.griddiv.firstChild.lastChild.childNodes[l+a].childNodes[c+s],rowpane:u,colpane:i}}for(n=e.context.colpanes[i].first;n<=e.context.colpanes[i].last;n++)(r=e.context.cellskip[Re.crToCoord(n,t)])&&e.context.CoordInPane(r,u,i)||c++;c+=1}l+=e.context.rowpanes[u].last-e.context.rowpanes[u].first+1+1}return null},Re.MoveECellWithKey=function(e,t){var o,i,n,r=!1,s=1;if(!e.ecell)return null;switch("shifted"==t.slice(-7)&&(t=t.slice(0,-7),r=!0),o=e.ecell.row,i=e.ecell.col,n=e.context.sheetobj.cells[e.ecell.coord],t){case"[adown]":o+=n&&n.rowspan||1;break;case"[aup]":o--,s=-1;break;case"[pgdn]":o+=e.pageUpDnAmount-1+(n&&n.rowspan||1);break;case"[pgup]":o-=e.pageUpDnAmount,s=-1;break;case"[aright]":i+=n&&n.colspan||1;break;case"[aleft]":i--,s=-1;break;case"[home]":i=o=1;break;default:return null}for(e.context.sheetobj.attribs.usermaxcol&&(i=Math.min(e.context.sheetobj.attribs.usermaxcol,i)),e.context.sheetobj.attribs.usermaxrow&&(o=Math.min(e.context.sheetobj.attribs.usermaxrow,o));"yes"==e.context.sheetobj.colattribs.hide[Re.rcColname(i)];)(i+=s)<1&&(s=-s,i=1);for(;"yes"==e.context.sheetobj.rowattribs.hide[o];)(o+=s)<1&&(s=-s,o=1);return e.range.hasrange||r&&e.RangeAnchor(),t=e.MoveECell(Re.crToCoord(i,o)),e.range.hasrange&&(r?e.RangeExtend():e.RangeRemove()),t},Re.MoveECell=function(e,t){var o,i,n=e.context.highlights,r=Re.coordToCr(t);if(e.context.sheetobj.attribs.usermaxcol&&r.col>e.context.sheetobj.attribs.usermaxcol&&(r.col=e.context.sheetobj.attribs.usermaxcol),e.context.sheetobj.attribs.usermaxrow&&r.row>e.context.sheetobj.attribs.usermaxrow&&(r.row=e.context.sheetobj.attribs.usermaxrow),t=Re.crToCoord(r.col,r.row),e.ecell){if(e.ecell.coord==t)return t;o=Re.GetEditorCellElement(e,e.ecell.row,e.ecell.col),delete n[e.ecell.coord],e.range2.hasrange&&e.ecell.row>=e.range2.top&&e.ecell.row<=e.range2.bottom&&e.ecell.col>=e.range2.left&&e.ecell.col<=e.range2.right&&(n[e.ecell.coord]="range2"),e.UpdateCellCSS(o,e.ecell.row,e.ecell.col),e.SetECellHeaders(""),e.cellhandles&&e.cellhandles.ShowCellHandles(!1)}for(i in t=e.context.cellskip[t]||t,e.ecell=Re.coordToCr(t),e.ecell.coord=t,o=Re.GetEditorCellElement(e,e.ecell.row,e.ecell.col),n[t]="cursor",e.MoveECellCallback)e.MoveECellCallback[i](e);for(i in e.UpdateCellCSS(o,e.ecell.row,e.ecell.col),e.SetECellHeaders("selected"),e.StatusCallback)e.StatusCallback[i].func(e,"moveecell",t,e.StatusCallback[i].params);return e.busy?e.ensureecell=!0:(e.ensureecell=!1,e.EnsureECellVisible()),t},Re.EnsureECellVisible=function(e){var t=0,o=0;e.ecell.row>e.lastnonscrollingrow&&(e.ecell.row<e.firstscrollingrow?t=e.ecell.row-e.firstscrollingrow-Math.floor((e.lastvisiblerow-e.firstscrollingrow)/2):e.ecell.row+1>e.lastvisiblerow&&(t=e.ecell.row-e.lastvisiblerow+Math.floor((e.lastvisiblerow-e.firstscrollingrow)/2))),e.ecell.col>e.lastnonscrollingcol&&(e.ecell.col<e.firstscrollingcol?o=e.ecell.col-e.firstscrollingcol-Math.floor((e.lastvisiblecol-e.firstscrollingcol)/2):e.ecell.col+1>e.lastvisiblecol&&(o=e.ecell.col-e.lastvisiblecol+Math.floor((e.lastvisiblecol-e.firstscrollingcol)/2))),0!=t||0!=o?e.ScrollRelativeBoth(t,o):e.cellhandles.ShowCellHandles(!0)},Re.ReplaceCell=function(e,t,o,i){var n,r;if(t&&(n=e.context.RenderCell(o,i,t.rowpane,t.colpane,!0,null))&&t.element)for(r in t.element.innerHTML=n.innerHTML,t.element.style.cssText="",t.element.className=n.className,n.style)"cssText"!=n.style[r]&&(t.element.style[r]=n.style[r])},Re.UpdateCellCSS=function(e,t,o,i){var n,r;if(t&&(n=e.context.RenderCell(o,i,t.rowpane,t.colpane,!0,null)))for(r in t.element.style.cssText="",t.element.className=n.className,n.style)"cssText"!=n.style[r]&&(t.element.style[r]=n.style[r])},Re.SetECellHeaders=function(e,t){if(!1!==e.context.showRCHeaders){var o,i,n,r=e.ecell,s=e.context,a=0,l=0;if(r){for(;"yes"==s.sheetobj.colattribs.hide[Re.rcColname(r.col)];)r.col++;for(;"yes"==s.sheetobj.rowattribs.hide[r.row];)r.row++;for(r.coord=Re.crToCoord(r.col,r.row),o=0;o<s.rowpanes.length;o++){var c,u=s.rowpanes[o].first,d=s.rowpanes[o].last;r.row>=u&&r.row<=d&&(c=2+a+r.row-u,null!==e.fullgrid&&0<=c&&(n=e.fullgrid.childNodes[1].childNodes[c].childNodes[0])&&(s.classnames&&(n.className=s.classnames[t+"rowname"]),s.explicitStyles&&(n.style.cssText=s.explicitStyles[t+"rowname"]),n.style.verticalAlign="top")),a+=d-u+1+1}for(i=0;i<s.colpanes.length;i++)u=s.colpanes[i].first,d=s.colpanes[i].last,r.col>=u&&r.col<=d&&(c=1+l+r.col-u,null!==e.fullgrid&&0<=c&&(n=e.fullgrid.childNodes[1].childNodes[1].childNodes[c])&&(s.classnames&&(n.className=s.classnames[t+"colname"]),s.explicitStyles&&(n.style.cssText=s.explicitStyles[t+"colname"]))),l+=d-u+1+1}}},Re.ECellReadonly=function(e,t){if(!(t=!t&&e.ecell?e.ecell.coord:t))return!1;e=e.context.sheetobj.cells[t];return e&&e.readonly},Re.RangeAnchor=function(e,t){e.range.hasrange&&e.RangeRemove(),e.RangeExtend(t)},Re.RangeExtend=function(e,t){var o,i,n,r,s,a,l,c=e.context.highlights,u=e.range,d=e.range2;if(t?(l=Re.coordToCr(t)).coord=t:l=e.ecell,l){for(n in u.hasrange||(u.anchorcoord=l.coord,u.anchorrow=l.row,u.top=l.row,u.bottom=l.row,u.anchorcol=l.col,u.left=l.col,u.right=l.col,u.hasrange=!0),u.anchorrow<l.row?(u.top=u.anchorrow,u.bottom=l.row):(u.top=l.row,u.bottom=u.anchorrow),u.anchorcol<l.col?(u.left=u.anchorcol,u.right=l.col):(u.left=l.col,u.right=u.anchorcol),c)switch(c[n]){case"range":c[n]="unrange";break;case"range2":c[n]="unrange2"}for(r=u.top;r<=u.bottom;r++)for(s=u.left;s<=u.right;s++)switch(c[n=Re.crToCoord(s,r)]){case"unrange":c[n]="range";break;case"cursor":break;default:c[n]="newrange"}for(r=d.top;d.hasrange&&r<=d.bottom;r++)for(s=d.left;s<=d.right;s++)switch(c[n=Re.crToCoord(s,r)]){case"unrange2":c[n]="range2";break;case"range":case"newrange":case"cursor":break;default:c[n]="newrange2"}for(n in c){switch(c[n]){case"unrange":delete c[n];break;case"newrange":c[n]="range";break;case"newrange2":c[n]="range2";break;case"range":case"range2":case"cursor":continue}i=Re.coordToCr(n),o=Re.GetEditorCellElement(e,i.row,i.col),e.UpdateCellCSS(o,i.row,i.col)}for(a in e.RangeChangeCallback)e.RangeChangeCallback[a](e);for(a in n=Re.crToCoord(e.range.left,e.range.top),e.range.left==e.range.right&&e.range.top==e.range.bottom||(n+=":"+Re.crToCoord(e.range.right,e.range.bottom)),e.StatusCallback)e.StatusCallback[a].func(e,"rangechange",n,e.StatusCallback[a].params)}},Re.RangeRemove=function(e){var t,o,i,n,r,s,a=e.context.highlights,l=e.range,c=e.range2;if(l.hasrange||c.hasrange){for(n=c.top;c.hasrange&&n<=c.bottom;n++)for(r=c.left;r<=c.right;r++)switch(a[i=Re.crToCoord(r,n)]){case"range":a[i]="newrange2";break;case"range2":case"cursor":break;default:a[i]="newrange2"}for(i in a){switch(a[i]){case"range":delete a[i];break;case"newrange2":a[i]="range2";break;case"cursor":continue}o=Re.coordToCr(i),t=Re.GetEditorCellElement(e,o.row,o.col),e.UpdateCellCSS(t,o.row,o.col)}for(s in l.hasrange=!1,e.RangeChangeCallback)e.RangeChangeCallback[s](e);for(s in e.StatusCallback)e.StatusCallback[s].func(e,"rangechange","",e.StatusCallback[s].params)}},Re.Range2Remove=function(e){var t,o,i,n=e.context.highlights,r=e.range2;if(r.hasrange){for(i in n){switch(n[i]){case"range2":delete n[i];break;case"range":case"cursor":continue}o=Re.coordToCr(i),t=Re.GetEditorCellElement(e,o.row,o.col),e.UpdateCellCSS(t,o.row,o.col)}r.hasrange=!1}},Re.FitToEditTable=function(e){var t,o,i,n,r,s,a,l=e.context,c=l.sheetobj,u=(c.colattribs,l.showRCHeaders?+l.rownamewidth:0);for(colpane=0;colpane<l.colpanes.length-1;colpane++)for(t=l.colpanes[colpane].first;t<=l.colpanes[colpane].last;t++)o=Re.rcColname(t),"yes"!=c.colattribs.hide[o]&&(u+=(i="blank"!=(i=c.colattribs.width[o]||c.attribs.defaultcolwidth||Re.Constants.defaultColWidth)&&"auto"!=i?i:"")&&0<+i?+i:10);for(t=l.colpanes[colpane].first;t<=1e4&&(o=Re.rcColname(t),"yes"!=c.colattribs.hide[o]&&(u+=(i="blank"!=(i=c.colattribs.width[o]||c.attribs.defaultcolwidth||Re.Constants.defaultColWidth)&&"auto"!=i?i:"")&&0<+i?+i:10),!(u>e.tablewidth));t++);l.colpanes[colpane].last=l.sheetobj.attribs.usermaxcol||t;for(var d=l.rowpanes[0].first,h=l.sheetobj.attribs.lastrow;"yes"==c.rowattribs.hide[d]&&d<h;)d++;for(l.rowpanes[0].first=d,n=l.showRCHeaders?1:0,s=0;s<l.rowpanes.length-1;s++)for(n+=l.rowpanes[s].last-l.rowpanes[s].first+1,r=l.rowpanes[s].first;r<=l.rowpanes[s].last;r++)"yes"==c.rowattribs.hide[r]&&n--;a=e.tableheight-n*l.pixelsPerRow,l.rowpanes[s].last=l.sheetobj.attribs.usermaxrow||l.rowpanes[s].first+Math.floor(a/l.pixelsPerRow)+1},Re.CalculateEditorPositions=function(e){e.gridposition=Re.GetElementPosition(e.griddiv);var t,o,i,n=e.griddiv.firstChild.lastChild.childNodes[1].childNodes[0];for(e.headposition=Re.GetElementPosition(n),e.headposition.left+=n.offsetWidth,e.headposition.top+=n.offsetHeight,e.rowpositions=[],t=0;t<e.context.rowpanes.length;t++)e.CalculateRowPositions(t,e.rowpositions,e.rowheight);for(i=0;i<e.rowpositions.length&&!(e.rowpositions[i]>e.gridposition.top+e.tableheight);i++);for(e.lastvisiblerow=i-1,e.colpositions=[],o=0;o<e.context.colpanes.length;o++)e.CalculateColPositions(o,e.colpositions,e.colwidth);for(i=0;i<e.colpositions.length&&!(e.colpositions[i]>e.gridposition.left+e.tablewidth);i++);for(e.lastvisiblecol=i-1,e.firstscrollingrow=e.context.rowpanes[e.context.rowpanes.length-1].first;"yes"==e.context.sheetobj.rowattribs.hide[e.firstscrollingrow];)e.firstscrollingrow++;for(e.firstscrollingrowtop=e.rowpositions[e.firstscrollingrow]||e.headposition.top,e.lastnonscrollingrow=0<e.context.rowpanes.length-1?e.context.rowpanes[e.context.rowpanes.length-2].last:0,e.firstscrollingcol=e.context.colpanes[e.context.colpanes.length-1].first;"yes"==e.context.sheetobj.colattribs.hide[Re.rcColname(e.firstscrollingcol)];)e.firstscrollingcol++;e.firstscrollingcolleft=e.colpositions[e.firstscrollingcol]||e.headposition.left,e.lastnonscrollingcol=0<e.context.colpanes.length-1?e.context.colpanes[e.context.colpanes.length-2].last:0,e.verticaltablecontrol.ComputeTableControlPositions(),e.horizontaltablecontrol.ComputeTableControlPositions()},Re.ScheduleRender=function(e){1!=e.ignoreRender&&(e.timeout&&M.clearTimeout(e.timeout),Re.EditorSheetStatusCallback(null,"schedrender",null,e),e.timeout=M.setTimeout(function(){Re.DoRenderStep(e)},1))},Re.DoRenderStep=function(e){e.timeout=null,e.EditorRenderSheet(),Re.EditorSheetStatusCallback(null,"renderdone",null,e),Re.EditorSheetStatusCallback(null,"schedposcalc",null,e),e.timeout=M.setTimeout(function(){Re.DoPositionCalculations(e)},1)},Re.SchedulePositionCalculations=function(e){Re.EditorSheetStatusCallback(null,"schedposcalc",null,e),e.timeout=M.setTimeout(function(){Re.DoPositionCalculations(e)},1)},Re.DoPositionCalculations=function(e){e.timeout=null,e.CalculateEditorPositions(),e.verticaltablecontrol.PositionTableControlElements(),e.horizontaltablecontrol.PositionTableControlElements(),Re.EditorSheetStatusCallback(null,"doneposcalc",null,e),e.ensureecell&&e.ecell&&!e.deferredCommands.length&&(e.ensureecell=!1,e.EnsureECellVisible()),e.cellhandles.ShowCellHandles(!0)},Re.CalculateRowPositions=function(e,t,o,i){var n,r,s,a,l,c,u=e.context;u.sheetobj;if(u.showRCHeaders){for(c=e.fullgrid.lastChild,n=2,r=0;r<t;r++)n+=u.rowpanes[r].last-u.rowpanes[r].first+2;for(a=0,s=u.rowpanes[r].first;s<=u.rowpanes[r].last;s++)l=c.childNodes[n+a],a++,!l||o[s]||(o[s]=l.firstChild.offsetTop,i[s]=l.firstChild.offsetHeight)}},Re.CalculateColPositions=function(e,t,o,i){var n,r,s,a,l,c,u=e.context;u.sheetobj;if(u.showRCHeaders){for(e=e.fullgrid.lastChild,n=1,r=0;r<t;r++)n+=u.colpanes[r].last-u.colpanes[r].first+2;for(l=e.childNodes[1],a=0,s=u.colpanes[r].first;s<=u.colpanes[r].last;s++)c=Re.GetElementPosition(l.childNodes[n+a]),o[s]||(o[s]=c.left,l.childNodes[n+a]&&(i[s]=l.childNodes[n+a].offsetWidth)),a++}},Re.ScrollRelative=function(e,t,o){t?e.ScrollRelativeBoth(o,0):e.ScrollRelativeBoth(0,o)},Re.ScrollRelativeBoth=function(e,t,o){var i=e.context,n=0<t?1:-1,r=0<o?1:-1,s=i.rowpanes.length,a=1<s?i.rowpanes[s-2].last+1:1,l=(i.rowpanes[s-1].first+t<a&&(t=-i.rowpanes[s-1].first+a),i.colpanes.length),a=1<l?i.colpanes[l-2].last+1:1;for(i.colpanes[l-1].first+o<a&&(o=-i.colpanes[l-1].first+a);"yes"==i.sheetobj.colattribs.hide[Re.rcColname(i.colpanes[l-1].first+o)];)if((o+=r)<1){o=0;break}for(;"yes"==i.sheetobj.rowattribs.hide[i.rowpanes[s-1].first+t];)if((t+=n)<1){t=0;break}if((1==t||-1==t)&&0==o)return 1==t?e.ScrollTableUpOneRow():e.ScrollTableDownOneRow(),e.ecell&&e.SetECellHeaders("selected"),void e.SchedulePositionCalculations();0==t&&0==o||(i.rowpanes[s-1].first+=t,i.rowpanes[s-1].last+=t,i.colpanes[l-1].first+=o,i.colpanes[l-1].last+=o,e.LimitLastPanes(),e.FitToEditTable(),e.ScheduleRender())},Re.PageRelative=function(e,t,o){var i,n,r,s=e.context,a=t?"rowpanes":"colpanes",s=s[a][s[a].length-1],a=t?"lastvisiblerow":"lastvisiblecol",l=t?e.rowheight:e.colwidth,c=t?Re.Constants.defaultAssumedRowHeight:Re.Constants.defaultColWidth;if(0<o)(n=e[a])==s.first&&(n+=1);else{for(r=t?e.tableheight-(e.firstscrollingrowtop-e.gridposition.top):e.tablewidth-(e.firstscrollingcolleft-e.gridposition.left),r-=0<l[e[a]]?l[e[a]]:c,n=s.first-1;0<n&&!(r<(i=0<l[n]?l[n]:c));n--)r-=i;(n=(o=s.first)<=n?o-1:n)<1&&(n=1)}s.first=n,s.last=n+1,e.LimitLastPanes(),e.FitToEditTable(),e.ScheduleRender()},Re.LimitLastPanes=function(e){var e=e.context,t=e.rowpanes.length;1<t&&e.rowpanes[t-1].first<=e.rowpanes[t-2].last&&(e.rowpanes[t-1].first=e.rowpanes[t-2].last+1),e.sheetobj.attribs.usermaxrow&&e.rowpanes[t-1].first>e.sheetobj.attribs.usermaxrow&&(e.rowpanes[t-1].first=e.sheetobj.attribs.usermaxrow),1<(t=e.colpanes.length)&&e.colpanes[t-1].first<=e.colpanes[t-2].last&&(e.colpanes[t-1].first=e.colpanes[t-2].last+1),e.sheetobj.attribs.usermaxcol&&e.colpanes[t-1].first>e.sheetobj.attribs.usermaxcol&&(e.colpanes[t-1].first=e.sheetobj.attribs.usermaxcol)},Re.ScrollTableUpOneRow=function(e){for(var t,o,i,n,r,s,a,l,c={},u=e.context,d=u.sheetobj,h=e.fullgrid,p=h.lastChild,f=u.showRCHeaders?2:1,m=0;m<u.rowpanes.length-1;m++)f+=u.rowpanes[m].last-u.rowpanes[m].first+2;if(u.sheetobj.attribs.usermaxrow&&u.sheetobj.attribs.usermaxrow-u.rowpanes[m].first<1)return h;for(p.removeChild(p.childNodes[f]),u.rowpanes[m].first++,u.rowpanes[m].last++,e.FitToEditTable(),u.CalculateColWidthData(),u.sheetobj.attribs.usermaxrow&&u.rowpanes[m].last==u.sheetobj.attribs.usermaxrow||(e=u.RenderRow(u.rowpanes[m].last,m),p.appendChild(e)),maxrowspan=1,r=u.rowpanes[m].first-1,i=0;i<u.colpanes.length;i++)for(o=u.colpanes[i].first;o<=u.colpanes[i].last;o++)coord=Re.crToCoord(o,r),u.cellskip[coord]||(n=d.cells[coord])&&n.rowspan>maxrowspan&&(maxrowspan=n.rowspan);if(1<maxrowspan)for(t=1;t<maxrowspan&&!(t+r>=u.rowpanes[m].last);t++)s=u.RenderRow(t+r,m),a=p.childNodes[f+t-1],p.replaceChild(s,a);for(l=u.rowpanes[m].last,i=0;i<u.colpanes.length;i++)for(o=u.colpanes[i].first;o<=u.colpanes[i].last;o++)!(coord=u.cellskip[Re.crToCoord(o,l)])||(t=+u.coordToCR[coord].row)==u.rowpanes[m].last||t<u.rowpanes[m].first||(n=d.cells[coord])&&1<n.rowspan&&(c[t]=!0);for(t in c)s=u.RenderRow(t,m),a=p.childNodes[f+(t-u.rowpanes[m].first)],p.replaceChild(s,a);return h},Re.ScrollTableDownOneRow=function(e){for(var t,o,i,n,r,s,a,l,c={},u=e.context,d=u.sheetobj,h=e.fullgrid,p=h.lastChild,f=u.showRCHeaders?2:1,m=0;m<u.rowpanes.length-1;m++)f+=u.rowpanes[m].last-u.rowpanes[m].first+2;for(u.sheetobj.attribs.usermaxrow||p.removeChild(p.childNodes[f+(u.rowpanes[m].last-u.rowpanes[m].first)]),u.rowpanes[m].first--,u.rowpanes[m].last--,e.FitToEditTable(),u.CalculateColWidthData(),s=u.RenderRow(u.rowpanes[m].first,m),p.insertBefore(s,p.childNodes[f]),maxrowspan=1,r=u.rowpanes[m].first,i=0;i<u.colpanes.length;i++)for(o=u.colpanes[i].first;o<=u.colpanes[i].last;o++)coord=Re.crToCoord(o,r),u.cellskip[coord]||(n=d.cells[coord])&&n.rowspan>maxrowspan&&(maxrowspan=n.rowspan);if(1<maxrowspan)for(t=1;t<maxrowspan&&!(t+r>u.rowpanes[m].last);t++)s=u.RenderRow(t+r,m),a=p.childNodes[f+t],p.replaceChild(s,a);for(l=u.rowpanes[m].last,i=0;i<u.colpanes.length;i++)for(o=u.colpanes[i].first;o<=u.colpanes[i].last;o++)coord=Re.crToCoord(o,l),(n=d.cells[coord])&&1<n.rowspan?c[l]=!0:!(coord=u.cellskip[Re.crToCoord(o,l)])||(t=+u.coordToCR[coord].row)==l||t<u.rowpanes[m].first||(n=d.cells[coord])&&1<n.rowspan&&(c[t]=!0);for(t in c)s=u.RenderRow(t,m),a=p.childNodes[f+(t-u.rowpanes[m].first)],p.replaceChild(s,a);return h},Re.InputBox=function(e,t){e&&(this.element=e,this.editor=t,this.inputEcho=null,t.inputBox=this,e.onmousedown=Re.InputBoxOnMouseDown,t.MoveECellCallback.formulabar=function(e){"start"==e.state&&t.inputBox.DisplayCellContents(e.ecell.coord)})},Re.InputBox.prototype.DisplayCellContents=function(e){Re.InputBoxDisplayCellContents(this,e)},Re.InputBox.prototype.ShowInputBox=function(e){this.editor.inputEcho.ShowInputEcho(e)},Re.InputBox.prototype.GetText=function(){return this.element.value},Re.InputBox.prototype.SetText=function(e){this.element&&(this.element.value=e,this.editor.inputEcho.SetText(e+"_"))},Re.InputBox.prototype.Focus=function(){Re.InputBoxFocus(this)},Re.InputBox.prototype.Blur=function(){return this.element.blur()},Re.InputBox.prototype.Select=function(e){if(this.element&&"end"===e)if(document.selection&&document.selection.createRange)try{var t=document.selection.createRange().duplicate();t.moveToElementText(this.element),t.collapse(!1),t.select()}catch(e){null!=this.element.selectionStart&&(this.element.selectionStart=this.element.value.length,this.element.selectionEnd=this.element.value.length)}else null!=this.element.selectionStart&&(this.element.selectionStart=this.element.value.length,this.element.selectionEnd=this.element.value.length)},Re.InputBoxDisplayCellContents=function(e,t){var o=Re.Constants;if(e){if(!t){if(!e.editor)return;if(!e.editor.ecell)return;t=e.editor.ecell.coord}t=Re.GetCellContents(e.editor.context.sheetobj,t);-1!=t.indexOf("\n")?(t=o.s_inputboxdisplaymultilinetext,e.element.disabled=!0):e.editor.ECellReadonly()?e.element.disabled=!0:e.element.disabled=!1,e.SetText(t)}},Re.InputBoxFocus=function(e){var t;e&&(e.element.focus(),(e=e.editor).state="input",(t=e.workingvalues).partialexpr="",t.ecoord=e.ecell.coord,t.erow=e.ecell.row,t.ecol=e.ecell.col)},Re.InputBoxOnMouseDown=function(e){var t=Re.Keyboard.focusTable;if(!t)return!0;var o=t.workingvalues;switch(t.state){case"start":t.state="inputboxdirect",o.partialexpr="",o.ecoord=t.ecell.coord,o.erow=t.ecell.row,o.ecol=t.ecell.col,t.inputEcho.ShowInputEcho(!0);break;case"input":o.partialexpr="",t.MoveECell(o.ecoord),t.state="inputboxdirect",Re.KeyboardFocus()}},Re.InputEcho=function(e){var t=Re.Constants;this.editor=e,this.text="",this.interval=null,this.container=null,this.main=null,this.prompt=null,this.hint=null,this.functionbox=null,this.container=document.createElement("div"),Re.setStyles(this.container,"display:none;position:absolute;zIndex:10;"),this.main=document.createElement("div"),t.defaultInputEchoClass&&(this.main.className=t.defaultInputEchoClass),t.defaultInputEchoStyle&&Re.setStyles(this.main,t.defaultInputEchoStyle),this.main.innerHTML="&nbsp;",this.hint=document.createElement("div"),t.defaultInputEchoHintClass&&(this.hint.className=t.defaultInputEchoHintClass),t.defaultInputEchoHintStyle&&Re.setStyles(this.hint,t.defaultInputEchoHintStyle),this.hint.innerHTML="",this.container.appendChild(this.hint),this.container.appendChild(this.main),this.prompt=document.createElement("div"),t.defaultInputEchoPromptClass&&(this.prompt.className=t.defaultInputEchoPromptClass),t.defaultInputEchoPromptStyle&&Re.setStyles(this.prompt,t.defaultInputEchoPromptStyle),this.prompt.innerHTML="",this.container.appendChild(this.prompt),Re.DragRegister(this.main,!0,!0,{MouseDown:Re.DragFunctionStart,MouseMove:Re.DragFunctionPosition,MouseUp:Re.DragFunctionPosition,Disabled:null,positionobj:this.container},this.editor.toplevel),e.toplevel.appendChild(this.container)},Re.InputEcho.prototype.ShowInputEcho=function(e){return Re.ShowInputEcho(this,e)},Re.InputEcho.prototype.SetText=function(e){return Re.SetInputEchoText(this,e)},Re.ShowInputEcho=function(e,t){var o=e.editor;o&&(t?(o.cellhandles.ShowCellHandles(!1),(t=Re.GetEditorCellElement(o,o.ecell.row,o.ecell.col))&&(t=Re.GetElementPosition(t.element),e.container.style.left=t.left-1+"px",e.container.style.top=t.top-1+"px"),e.hint.innerHTML=o.ecell.coord,e.container.style.display="block",e.interval&&M.clearInterval(e.interval),e.interval=M.setInterval(Re.InputEchoHeartbeat,50)):(e.interval&&M.clearInterval(e.interval),e.container.style.display="none"))},Re.SetInputEchoText=function(e,t){var o=Re.Constants,i=(i=Re.special_chars(t)).replace(/\n/g,"<br>"),i=(e.text!=i&&(e.main.innerHTML=i,e.text=i),t.match(/.*[\+\-\*\/\&\^\<\>\=\,\(]([A-Za-z][A-Za-z][\w\.]*?)\([^\)]*$/));"="==t.charAt(0)&&i?(t=i[1].toUpperCase(),i=Re.Formula.FunctionList[t]?(Re.Formula.FillFunctionInfo(),Re.special_chars(t+"("+Re.Formula.FunctionArgString(t)+")")):o.ietUnknownFunction+t,e.prompt.innerHTML!=i&&(e.prompt.innerHTML=i,e.prompt.style.display="block")):"none"!=e.prompt.style.display&&(e.prompt.innerHTML="",e.prompt.style.display="none")},Re.InputEchoHeartbeat=function(){var e=Re.Keyboard.focusTable;if(!e)return!0;e.inputEcho.SetText(e.inputBox.GetText()+"_")},Re.InputEchoMouseDown=function(e){e||M.event;e=Re.Keyboard.focusTable;if(!e)return!0;e.inputBox.element.focus()},Re.CellHandles=function(e){Re.Constants;if(!e.noEdit){this.editor=e,this.noCursorSuffix=!1,this.movedmouse=!1,this.draghandle=document.createElement("div"),Re.setStyles(this.draghandle,"display:none;position:absolute;zIndex:8;border:1px solid white;width:4px;height:4px;fontSize:1px;backgroundColor:#0E93D8;cursor:default;"),this.draghandle.innerHTML="&nbsp;",e.toplevel.appendChild(this.draghandle),Re.AssignID(e,this.draghandle,"draghandle");var t="png";if(navigator.userAgent.match(/MSIE 6\.0/)&&(t="gif"),this.dragpalette=document.createElement("div"),Re.setStyles(this.dragpalette,"display:none;position:absolute;zIndex:8;width:90px;height:90px;fontSize:1px;textAlign:center;cursor:default;backgroundImage:url("+Re.Constants.defaultImagePrefix+"drag-handles."+t+");"),this.dragpalette.innerHTML="&nbsp;",e.toplevel.appendChild(this.dragpalette),Re.AssignID(e,this.dragpalette,"dragpalette"),this.dragtooltip=document.createElement("div"),Re.setStyles(this.dragtooltip,"display:none;position:absolute;zIndex:9;border:1px solid black;width:100px;height:auto;fontSize:10px;backgroundColor:#FFFFFF;"),this.dragtooltip.innerHTML="&nbsp;",e.toplevel.appendChild(this.dragtooltip),Re.AssignID(e,this.dragtooltip,"dragtooltip"),this.fillinghandle=document.createElement("div"),Re.setStyles(this.fillinghandle,"display:none;position:absolute;zIndex:9;border:1px solid black;width:auto;height:14px;fontSize:10px;backgroundColor:#FFFFFF;"),this.fillinghandle.innerHTML="&nbsp;",e.toplevel.appendChild(this.fillinghandle),Re.AssignID(e,this.fillinghandle,"fillinghandle"),this.draghandle.addEventListener)this.draghandle.addEventListener("mousemove",Re.CellHandlesMouseMoveOnHandle,!1),this.dragpalette.addEventListener("mousedown",Re.CellHandlesMouseDown,!1),this.dragpalette.addEventListener("mousemove",Re.CellHandlesMouseMoveOnHandle,!1);else{if(!this.draghandle.attachEvent)throw"Browser not supported";this.draghandle.attachEvent("onmousemove",Re.CellHandlesMouseMoveOnHandle),this.dragpalette.attachEvent("onmousedown",Re.CellHandlesMouseDown),this.dragpalette.attachEvent("onmousemove",Re.CellHandlesMouseMoveOnHandle)}}},Re.CellHandles.prototype.ShowCellHandles=function(e,t){return Re.ShowCellHandles(this,e,t)},Re.ShowCellHandles=function(e,t,o){var i,n,r,s=e.editor,a=!1,l=1,c=1;if(s&&s.ecell){do{if(!t)break;if(n=s.ecell.row,r=s.ecell.col,"start"!=s.state)break;if(n>=s.lastvisiblerow)break;if(r>=s.lastvisiblecol)break;if(n<s.firstscrollingrow)break;if(r<s.firstscrollingcol)break;for(;"yes"==s.context.sheetobj.colattribs.hide[Re.rcColname(r+l)];)l++;for(;"yes"==s.context.sheetobj.rowattribs.hide[n+c];)c++}while((void 0!==(i=s.context.sheetobj.cells[Re.crToCoord(r+l-1,n+c-1)])&&(l+=(i.colspan||1)-1,c+=(i.rowspan||1)-1),!(s.rowpositions[n+c]+20>s.horizontaltablecontrol.controlborder))&&(!(s.rowpositions[n+c]-10<s.headposition.top)&&(!(s.colpositions[r+l]+20>s.verticaltablecontrol.controlborder)&&(!(s.colpositions[r+l]-30<s.headposition.left)&&(e.draghandle.style.left=s.colpositions[r+l]-1+"px",e.draghandle.style.top=s.rowpositions[n+c]-1+"px",e.draghandle.style.display="block",o&&(e.draghandle.style.display="none",e.dragpalette.style.left=s.colpositions[r+l]-45+"px",e.dragpalette.style.top=s.rowpositions[n+c]-45+"px",e.dragpalette.style.display="block",e.dragtooltip.style.left=s.colpositions[r+l]-45+"px",e.dragtooltip.style.top=s.rowpositions[n+c]+45+"px",e.dragtooltip.style.display="none"),a=!0,0)))));a||(e.draghandle.style.display="none"),o||(e.dragpalette.style.display="none",e.dragtooltip.style.display="none")}},Re.CellHandlesMouseMoveOnHandle=function(e){var t=Re.Constants,e=e||M.event,o=e.target||e.srcElement,i=Re.Keyboard.focusTable;if(!i)return!0;var n=i.cellhandles;if(!n.editor)return!0;var r=Re.GetElementPositionWithScroll(i.toplevel),s=e.clientX-r.left,e=e.clientY-r.top;if(!i.cellhandles.mouseDown){if(i.cellhandles.ShowCellHandles(!0,!0),o==n.dragpalette)if(0==Re.SegmentDivHit([t.CH_radius1,t.CH_radius2],i.cellhandles.dragpalette,s,e))return void Re.CellHandlesHoverTimeout();n.timer&&(M.clearTimeout(n.timer),n.timer=null),n.timer=M.setTimeout(Re.CellHandlesHoverTimeout,3e3)}},Re.SegmentDivHit=function(e,t,o,i){var n=t.offsetWidth,r=t.offsetHeight,s=t.offsetLeft,a=t.offsetTop,l=0,c=e,t=Math.sqrt(Math.pow(o-s-(n/2-.5),2)+Math.pow(i-a-(r/2-.5),2));if(2==c.length)return s<=o&&o<s+n/2&&a<=i&&i<a+r/2&&(t<=e[0]?l=-1:t<=e[1]&&(l=1)),s+n/2<=o&&o<s+n&&a<=i&&i<a+r/2&&(t<=e[0]?l=-2:t<=e[1]&&(l=2)),s+n/2<=o&&o<s+n&&a+r/2<=i&&i<a+r&&(t<=e[0]?l=-3:t<=e[1]&&(l=3)),s<=o&&o<s+n/2&&a+r/2<=i&&i<a+r&&(t<=e[0]?l=-4:t<=e[1]&&(l=4)),l;for(;;)if(s<=o&&o<s+n/2&&a<=i&&i<a+r/2){if(quadrant+="1","number"==typeof(l=c[0]))break;c=l,n/=2,r/=2}else if(s+n/2<=o&&o<s+n&&a<=i&&i<a+r/2){if(quadrant+="2","number"==typeof(l=c[1]))break;c=l,s+=n/=2,r/=2}else if(s+n/2<=o&&o<s+n&&a+r/2<=i&&i<a+r){if(quadrant+="3","number"==typeof(l=c[2]))break;c=l,s+=n/=2,a+=r/=2}else{if(!(s<=o&&o<s+n/2&&a+r/2<=i&&i<a+r))return 0;if(quadrant+="4","number"==typeof(l=c[3]))break;c=l,n/=2,a+=r/=2}return l},Re.CellHandlesHoverTimeout=function(){if(!(editor=Re.Keyboard.focusTable))return!0;var e=editor.cellhandles;e.timer&&(M.clearTimeout(e.timer),e.timer=null),editor.cellhandles.ShowCellHandles(!0,!1)},Re.CellHandlesMouseDown=function(e){var t,o=Re.Constants,e=e||M.event,i=Re.EditorMouseInfo,n=Re.Keyboard.focusTable;if(!n)return!0;if(!n.busy){var r=n.cellhandles,s=(r.movedmouse=!1,Re.GetElementPositionWithScroll(n.toplevel)),a=e.clientX-s.left,s=e.clientY-s.top,l=(r.timer&&(M.clearTimeout(r.timer),r.timer=null),r.dragtooltip.innerHTML="&nbsp;",r.dragtooltip.style.display="none",t=n.range,Re.SegmentDivHit([o.CH_radius1,o.CH_radius2],n.cellhandles.dragpalette,a,s));if(1==l||-1==l||0==l)r.ShowCellHandles(!0,!1);else{switch(i.ignore=!0,-3==l?(r.dragtype="Fill",r.noCursorSuffix=!1):3==l?(r.dragtype="FillC",r.noCursorSuffix=!1):-2==l?(r.dragtype="Move",r.noCursorSuffix=!0):-4==l?(r.dragtype="MoveI",r.noCursorSuffix=!1):2==l?(r.dragtype="MoveC",r.noCursorSuffix=!0):4==l&&(r.dragtype="MoveIC",r.noCursorSuffix=!1),r.filltype=null,r.dragtype){case"Fill":case"FillC":t.hasrange||n.RangeAnchor(),n.range2.top=n.range.top,n.range2.right=n.range.right,n.range2.bottom=n.range.bottom,n.range2.left=n.range.left,n.range2.hasrange=!0;break;case"Move":case"MoveI":case"MoveC":case"MoveIC":t.hasrange||n.RangeAnchor(),n.range2.top=n.range.top,n.range2.right=n.range.right,n.range2.bottom=n.range.bottom,n.range2.left=n.range.left,n.range2.hasrange=!0,n.RangeRemove();break;default:return}r.fillinghandle.style.left=a+"px",r.fillinghandle.style.top=s-17+"px",r.fillinghandle.innerHTML=o.s_CHindicatorOperationLookup[r.dragtype]+(o.s_CHindicatorDirectionLookup[n.cellhandles.filltype]||""),r.fillinghandle.style.display="block",r.ShowCellHandles(!0,!1),r.mouseDown=!0,l=(i.editor=n).ecell.coord,r.startingcoord=l,r.startingX=a,r.startingY=s,i.mouselastcoord=l,Re.KeyboardSetFocus(n),document.addEventListener?(document.addEventListener("mousemove",Re.CellHandlesMouseMove,!0),document.addEventListener("mouseup",Re.CellHandlesMouseUp,!0)):r.draghandle.attachEvent&&(r.draghandle.setCapture(),r.draghandle.attachEvent("onmousemove",Re.CellHandlesMouseMove),r.draghandle.attachEvent("onmouseup",Re.CellHandlesMouseUp),r.draghandle.attachEvent("onlosecapture",Re.CellHandlesMouseUp)),Re.StopPropagation(e)}}},Re.CellHandlesMouseMove=function(e){var t,o,i,n,r=Re.Constants,e=e||M.event,s=Re.EditorMouseInfo,a=s.editor;if(a){var l,c=a.cellhandles,u=(s.element,Re.GetElementPositionWithScroll(a.toplevel)),d=e.clientX-u.left,h=e.clientY-u.top;if(l=Re.GridMousePosition(a,d,h))if(l&&!l.coord)Re.SetDragAutoRepeat(a,l,Re.CellHandlesDragAutoRepeat);else if(Re.SetDragAutoRepeat(a,null),l.coord){switch(t=Re.coordToCr(a.cellhandles.startingcoord),o=Re.coordToCr(l.coord),c.movedmouse=!0,c.dragtype){case"Fill":case"FillC":l.coord==c.startingcoord?(c.filltype=null,c.startingX=d,c.startingY=h):c.filltype?"Down"==c.filltype?(o.col=t.col,o.row<t.row&&(o.row=t.row)):(o.row=t.row,o.col<t.col&&(o.col=t.col)):(10<Math.abs(h-c.startingY)?c.filltype="Down":10<Math.abs(d-c.startingX)&&(c.filltype="Right"),o.col=t.col,o.row=t.row),l.coord=Re.crToCoord(o.col,o.row),l.coord!=s.mouselastcoord&&(a.MoveECell(l.coord),a.RangeExtend());break;case"Move":case"MoveC":l.coord!=s.mouselastcoord&&(a.MoveECell(l.coord),i=a.range2.right-a.range2.left+l.col,n=a.range2.bottom-a.range2.top+l.row,a.RangeAnchor(Re.crToCoord(i,n)),a.RangeExtend());break;case"MoveI":case"MoveIC":l.coord==c.startingcoord?(c.filltype=null,c.startingX=d,c.startingY=h):c.filltype?"Vertical"==c.filltype?(o.col=a.range2.left,o.row>=a.range2.top&&o.row<=a.range2.bottom+1&&(o.row=a.range2.bottom+2)):(o.row=a.range2.top,o.col>=a.range2.left&&o.col<=a.range2.right+1&&(o.col=a.range2.right+2)):(10<Math.abs(h-c.startingY)?c.filltype="Vertical":10<Math.abs(d-c.startingX)&&(c.filltype="Horizontal"),o.col=t.col,o.row=t.row),l.coord=Re.crToCoord(o.col,o.row),l.coord!=s.mouselastcoord&&(a.MoveECell(l.coord),c.filltype?(i=a.range2.right-a.range2.left+o.col,n=a.range2.bottom-a.range2.top+o.row,a.RangeAnchor(Re.crToCoord(i,n)),a.RangeExtend()):a.RangeRemove())}c.fillinghandle.style.left=d+"px",c.fillinghandle.style.top=h-17+"px",c.fillinghandle.innerHTML=r.s_CHindicatorOperationLookup[c.dragtype]+(r.s_CHindicatorDirectionLookup[a.cellhandles.filltype]||""),c.fillinghandle.style.display="block",s.mouselastcoord=l.coord,Re.StopPropagation(e)}}},Re.CellHandlesDragAutoRepeat=function(e,t){var o=Re.EditorMouseInfo,i=o.editor;if(i){var n,r,s,a=i.cellhandles,l=Re.coordToCr(i.cellhandles.startingcoord),c=Re.coordToCr(e),u=0,d=0;switch("left"==t?d=-1:"right"==t?d=1:"up"==t?u=-1:"down"==t&&(u=1),i.ScrollRelativeBoth(u,d),a.dragtype){case"Fill":case"FillC":a.filltype?"Down"==a.filltype?(c.col=l.col,c.row<l.row&&(c.row=l.row)):(c.row=l.row,c.col<l.col&&(c.col=l.col)):(c.col=l.col,c.row=l.row),(n=Re.crToCoord(c.col,c.row))!=o.mouselastcoord&&(i.MoveECell(e),i.RangeExtend());break;case"Move":case"MoveC":e!=o.mouselastcoord&&(i.MoveECell(e),r=i.range2.right-i.range2.left+i.ecell.col,s=i.range2.bottom-i.range2.top+i.ecell.row,i.RangeAnchor(Re.crToCoord(r,s)),i.RangeExtend());break;case"MoveI":case"MoveIC":a.filltype?"Vertical"==a.filltype?(c.col=i.range2.left,c.row>=i.range2.top&&c.row<=i.range2.bottom+1&&(c.row=i.range2.bottom+2)):(c.row=i.range2.top,c.col>=i.range2.left&&c.col<=i.range2.right+1&&(c.col=i.range2.right+2)):(c.col=l.col,c.row=l.row),(n=Re.crToCoord(c.col,c.row))!=o.mouselastcoord&&(i.MoveECell(n),r=i.range2.right-i.range2.left+c.col,s=i.range2.bottom-i.range2.top+c.row,i.RangeAnchor(Re.crToCoord(r,s)),i.RangeExtend())}o.mouselastcoord=n}},Re.CellHandlesMouseUp=function(e){var t,o,i,n,r,s,e=e||M.event,a=Re.EditorMouseInfo,l=a.editor;if(l){var c=l.cellhandles,u=(a.element,a.ignore=!1,Re.GetElementPositionWithScroll(l.toplevel)),d=e.clientX-u.left,u=e.clientY-u.top,h=Re.GridMousePosition(l,d,u);switch(Re.SetDragAutoRepeat(l,null),c.mouseDown=!1,c.noCursorSuffix=!1,c.fillinghandle.style.display="none",(h=h||{}).coord||(h.coord=l.ecell.coord),c.dragtype){case"Fill":case"Move":case"MoveI":t=" all";break;case"FillC":case"MoveC":case"MoveIC":t=" formulas"}switch(c.movedmouse||(c.dragtype="Nothing"),c.dragtype){case"Nothing":l.Range2Remove(),l.RangeRemove();break;case"Fill":case"FillC":o=Re.coordToCr(c.startingcoord),i=Re.coordToCr(h.coord),c.filltype&&("Down"==c.filltype?i.col=o.col:i.row=o.row),h.coord=Re.crToCoord(i.col,i.row),l.MoveECell(h.coord),l.RangeExtend(),o="fill"+("Right"==l.cellhandles.filltype?"right":"down")+" "+Re.crToCoord(l.range.left,l.range.top)+":"+Re.crToCoord(l.range.right,l.range.bottom)+t,l.EditorScheduleSheetCommands(o,!0,!1);break;case"Move":case"MoveC":l.context.cursorsuffix="",o="movepaste "+Re.crToCoord(l.range2.left,l.range2.top)+":"+Re.crToCoord(l.range2.right,l.range2.bottom)+" "+l.ecell.coord+t,l.EditorScheduleSheetCommands(o,!0,!1),l.Range2Remove();break;case"MoveI":case"MoveIC":l.context.cursorsuffix="",i=l.range2.right-l.range2.left,n=l.range2.bottom-l.range2.top,r=l.ecell.col-l.range2.left,s=l.ecell.row-l.range2.top,o="moveinsert "+Re.crToCoord(l.range2.left,l.range2.top)+":"+Re.crToCoord(l.range2.right,l.range2.bottom)+" "+l.ecell.coord+t,l.EditorScheduleSheetCommands(o,!0,!1),l.Range2Remove(),l.RangeRemove()," Horizontal"==l.cellhandles.filltype&&0<r?l.MoveECell(Re.crToCoord(l.ecell.col-i-1,l.ecell.row)):" Vertical"==l.cellhandles.filltype&&0<s&&l.MoveECell(Re.crToCoord(l.ecell.col,l.ecell.row-n-1)),l.RangeAnchor(Re.crToCoord(l.ecell.col+i,l.ecell.row+n)),l.RangeExtend()}return Re.RemoveMouseMoveUp(Re.CellHandlesMouseMove,Re.CellHandlesMouseUp,c.draghandle,e),a.editor=null,!1}},Re.TableControl=function(e,t,o){var i=Re.Constants;this.editor=e,this.vertical=t,this.size=o,this.main=null,this.endcap=null,this.paneslider=null,this.lessbutton=null,this.morebutton=null,this.scrollarea=null,this.thumb=null,this.controlborder=null,this.endcapstart=null,this.panesliderstart=null,this.lessbuttonstart=null,this.morebuttonstart=null,this.scrollareastart=null,this.scrollareaend=null,this.scrollareasize=null,this.thumbpos=null,this.controlthickness=i.defaultTableControlThickness,this.sliderthickness=i.defaultTCSliderThickness,this.buttonthickness=i.defaultTCButtonThickness,this.thumbthickness=i.defaultTCThumbThickness,this.minscrollingpanesize=this.buttonthickness+this.buttonthickness+this.thumbthickness+20},Re.TableControl.prototype.CreateTableControl=function(){return Re.CreateTableControl(this)},Re.TableControl.prototype.PositionTableControlElements=function(){Re.PositionTableControlElements(this)},Re.TableControl.prototype.ComputeTableControlPositions=function(){Re.ComputeTableControlPositions(this)},Re.CreateTableControl=function(e){var t,o,i=Re.AssignID,n=Re.setStyles,r=Re.Constants,s=e.editor.imageprefix,a=e.vertical?"v":"h",l=Re.LocalizeString;return e.main=document.createElement("div"),(t=e.main.style).height=(e.vertical?e.size:e.controlthickness)+"px",t.width=(e.vertical?e.controlthickness:e.size)+"px",t.zIndex=0,n(e.main,r.TCmainStyle),t.backgroundImage="url("+s+"main-"+a+".gif)",r.TCmainClass&&(e.main.className=r.TCmainClass),e.main.style.display="none",e.endcap=document.createElement("div"),(t=e.endcap.style).height=e.controlthickness+"px",t.width=e.controlthickness+"px",t.zIndex=1,t.overflow="hidden",t.position="absolute",n(e.endcap,r.TCendcapStyle),t.backgroundImage="url("+s+"endcap-"+a+".gif)",r.TCendcapClass&&(e.endcap.className=r.TCendcapClass),i(e.editor,e.endcap,"endcap"+a),e.main.appendChild(e.endcap),e.paneslider=document.createElement("div"),(t=e.paneslider.style).height=(e.vertical?e.sliderthickness:e.controlthickness)+"px",t.overflow="hidden",t.width=(e.vertical?e.controlthickness:e.sliderthickness)+"px",t.position="absolute",t[e.vertical?"top":"left"]="4px",t.zIndex=3,t.backgroundImage="url("+s+"paneslider-"+a+".gif)",r.TCpanesliderClass&&(e.paneslider.className=r.TCpanesliderClass),i(e.editor,e.paneslider,"paneslider"+a),e.paneslider.title=l(e.vertical?"Drag to lock pane horizontally":"Drag to lock pane vertically"),(l={MouseDown:Re.TCPSDragFunctionStart,MouseMove:Re.TCPSDragFunctionMove,MouseUp:Re.TCPSDragFunctionStop,Disabled:function(){return e.editor.busy}}).control=e,1!=Re._app&&Re.DragRegister(e.paneslider,e.vertical,!e.vertical,l,e.editor.toplevel),e.main.appendChild(e.paneslider),e.lessbutton=document.createElement("div"),(t=e.lessbutton.style).height=(e.vertical?e.buttonthickness:e.controlthickness)+"px",t.width=(e.vertical?e.controlthickness:e.buttonthickness)+"px",t.zIndex=2,t.overflow="hidden",t.position="absolute",n(e.lessbutton,r.TClessbuttonStyle),t.backgroundImage="url("+s+"less-"+a+"n.gif)",r.TClessbuttonClass&&(e.lessbutton.className=r.TClessbuttonClass),i(e.editor,e.lessbutton,"lessbutton"+a),o={repeatwait:r.TClessbuttonRepeatWait,repeatinterval:r.TClessbuttonRepeatInterval,normalstyle:"backgroundImage:url("+s+"less-"+a+"n.gif);",downstyle:"backgroundImage:url("+s+"less-"+a+"d.gif);",hoverstyle:"backgroundImage:url("+s+"less-"+a+"h.gif);"},Re.ButtonRegister(e.editor,e.lessbutton,o,l={MouseDown:function(){e.editor.busy||e.editor.ScrollRelative(e.vertical,-1)},Repeat:function(){e.editor.busy||e.editor.ScrollRelative(e.vertical,-1)},Disabled:function(){return e.editor.busy}}),e.main.appendChild(e.lessbutton),e.morebutton=document.createElement("div"),(t=e.morebutton.style).height=(e.vertical?e.buttonthickness:e.controlthickness)+"px",t.width=(e.vertical?e.controlthickness:e.buttonthickness)+"px",t.zIndex=2,t.overflow="hidden",t.position="absolute",n(e.morebutton,r.TCmorebuttonStyle),t.backgroundImage="url("+s+"more-"+a+"n.gif)",r.TCmorebuttonClass&&(e.morebutton.className=r.TCmorebuttonClass),i(e.editor,e.morebutton,"morebutton"+a),o={repeatwait:r.TCmorebuttonRepeatWait,repeatinterval:r.TCmorebuttonRepeatInterval,normalstyle:"backgroundImage:url("+s+"more-"+a+"n.gif);",downstyle:"backgroundImage:url("+s+"more-"+a+"d.gif);",hoverstyle:"backgroundImage:url("+s+"more-"+a+"h.gif);"},Re.ButtonRegister(e.editor,e.morebutton,o,l={MouseDown:function(){e.editor.busy||e.editor.ScrollRelative(e.vertical,1)},Repeat:function(){e.editor.busy||e.editor.ScrollRelative(e.vertical,1)},Disabled:function(){return e.editor.busy}}),e.main.appendChild(e.morebutton),e.scrollarea=document.createElement("div"),(t=e.scrollarea.style).height=e.controlthickness+"px",t.width=e.controlthickness+"px",t.zIndex=1,t.overflow="hidden",t.position="absolute",n(e.scrollarea,r.TCscrollareaStyle),t.backgroundImage="url("+s+"scrollarea-"+a+".gif)",r.TCscrollareaClass&&(e.scrollarea.className=r.TCscrollareaClass),i(e.editor,e.scrollarea,"scrollarea"+a),o={repeatwait:r.TCscrollareaRepeatWait,repeatinterval:r.TCscrollareaRepeatWait},(l={MouseDown:Re.ScrollAreaClick,Repeat:Re.ScrollAreaClick,Disabled:function(){return e.editor.busy}}).control=e,Re.ButtonRegister(e.editor,e.scrollarea,o,l),e.main.appendChild(e.scrollarea),e.thumb=document.createElement("div"),(t=e.thumb.style).height=(e.vertical?e.thumbthickness:e.controlthickness)+"px",t.width=(e.vertical?e.controlthickness:e.thumbthickness)+"px",t.zIndex=2,t.overflow="hidden",t.position="absolute",n(e.thumb,r.TCthumbStyle),e.thumb.style.backgroundImage="url("+s+"thumb-"+a+"n.gif)",r.TCthumbClass&&(e.thumb.className=r.TCthumbClass),i(e.editor,e.thumb,"thumb"+a),(l={MouseDown:Re.TCTDragFunctionStart,MouseMove:Re.TCTDragFunctionMove,MouseUp:Re.TCTDragFunctionStop,Disabled:function(){return e.editor.busy}}).control=e,1!=Re._app&&Re.DragRegister(e.thumb,e.vertical,!e.vertical,l,e.editor.toplevel),Re.ButtonRegister(e.editor,e.thumb,{normalstyle:"backgroundImage:url("+s+"thumb-"+a+"n.gif)",name:"Thumb",downstyle:"backgroundImage:url("+s+"thumb-"+a+"d.gif)",hoverstyle:"backgroundImage:url("+s+"thumb-"+a+"h.gif)"},null),e.main.appendChild(e.thumb),e.main},Re.ScrollAreaClick=function(e,t,o){var o=o.functionobj.control,i=Re.GetElementPositionWithScroll(o.editor.toplevel),t=o.vertical?t.clientY-i.top:t.clientX-i.left;o.editor.busy||o.editor.PageRelative(o.vertical,t>o.thumbpos?1:-1)},Re.PositionTableControlElements=function(e){var t,o,i,n=e.editor;e.vertical?(t=e.controlborder+"px",e.endcap.style.top=e.endcapstart+"px",e.endcap.style.left=t,e.paneslider.style.top=e.panesliderstart+"px",e.paneslider.style.left=t,e.lessbutton.style.top=e.lessbuttonstart+"px",e.lessbutton.style.left=t,e.morebutton.style.top=e.morebuttonstart+"px",e.morebutton.style.left=t,e.scrollarea.style.top=e.scrollareastart+"px",e.scrollarea.style.left=t,e.scrollarea.style.height=e.scrollareasize+"px",o=Math.max(n.context.sheetobj.attribs.lastrow,n.firstscrollingrow+1),i=(n.firstscrollingrow-(n.lastnonscrollingrow+1))*(e.scrollareasize-3*e.thumbthickness)/(o-(n.lastnonscrollingrow+1))+e.scrollareastart-1,i=Math.floor(i),e.thumb.style.top=i+"px",e.thumb.style.left=t):(t=e.controlborder+"px",e.endcap.style.left=e.endcapstart+"px",e.endcap.style.top=t,e.paneslider.style.left=e.panesliderstart+"px",e.paneslider.style.top=t,e.lessbutton.style.left=e.lessbuttonstart+"px",e.lessbutton.style.top=t,e.morebutton.style.left=e.morebuttonstart+"px",e.morebutton.style.top=t,e.scrollarea.style.left=e.scrollareastart+"px",e.scrollarea.style.top=t,e.scrollarea.style.width=e.scrollareasize+"px",o=Math.max(n.context.sheetobj.attribs.lastcol,n.firstscrollingcol+1),i=(n.firstscrollingcol-(n.lastnonscrollingcol+1))*(e.scrollareasize-e.thumbthickness)/(o-n.lastnonscrollingcol)+e.scrollareastart-1,i=Math.floor(i),e.thumb.style.left=i+"px",e.thumb.style.top=t),e.thumbpos=i,e.main.style.display="block"},Re.ComputeTableControlPositions=function(e){var t=e.editor;if(!t.gridposition||!t.headposition)throw"Can't compute table control positions before editor positions";e.vertical?(e.controlborder=t.gridposition.left+t.tablewidth,e.endcapstart=t.gridposition.top,e.panesliderstart=t.firstscrollingrowtop-e.sliderthickness,e.lessbuttonstart=t.firstscrollingrowtop-1,e.morebuttonstart=t.gridposition.top+t.tableheight-e.buttonthickness,e.scrollareastart=t.firstscrollingrowtop-1+e.buttonthickness):(e.controlborder=t.gridposition.top+t.tableheight,e.endcapstart=t.gridposition.left,e.panesliderstart=t.firstscrollingcolleft-e.sliderthickness,e.lessbuttonstart=t.firstscrollingcolleft-1,e.morebuttonstart=t.gridposition.left+t.tablewidth-e.buttonthickness,e.scrollareastart=t.firstscrollingcolleft-1+e.buttonthickness),e.scrollareaend=e.morebuttonstart-1,e.scrollareasize=e.scrollareaend-e.scrollareastart+1},Re.TCPSDragFunctionStart=function(e,t,o){var i=o.functionobj.control.editor,n=Re.Constants;Re.DragFunctionStart(e,t,o),t.trackingline=document.createElement("div"),t.trackingline.style.height=o.vertical?n.TCPStrackinglineThickness:i.tableheight-(i.headposition.top-i.gridposition.top)+"px",t.trackingline.style.width=o.vertical?i.tablewidth-(i.headposition.left-i.gridposition.left)+"px":n.TCPStrackinglineThickness,t.trackingline.style.backgroundImage="url("+i.imageprefix+"trackingline-"+(o.vertical?"v":"h")+".gif)",n.TCPStrackinglineClass&&(t.trackingline.className=n.TCPStrackinglineClass),Re.setStyles(t.trackingline,n.TCPStrackinglineStyle),o.vertical?(row=Re.Lookup(t.clientY+o.functionobj.control.sliderthickness,i.rowpositions),t.trackingline.style.top=(i.rowpositions[row]||i.headposition.top)+"px",t.trackingline.style.left=i.headposition.left+"px",t.trackingline.id="trackingline-vertical",i.context.rowpanes.length-1&&(i.context.SetRowPaneFirstLast(1,i.context.rowpanes[0].last+1,i.context.rowpanes[0].last+1),i.FitToEditTable(),i.ScheduleRender())):(col=Re.Lookup(t.clientX+o.functionobj.control.sliderthickness,i.colpositions),t.trackingline.style.top=i.headposition.top+"px",t.trackingline.style.left=(i.colpositions[col]||i.headposition.left)+"px",t.trackingline.id="trackingline-horizon",i.context.colpanes.length-1&&(i.context.SetColPaneFirstLast(1,i.context.colpanes[0].last+1,i.context.colpanes[0].last+1),i.FitToEditTable(),i.ScheduleRender())),i.griddiv.appendChild(t.trackingline)},Re.TCPSDragFunctionMove=function(e,t,o){var i,n,r,s,a=o.functionobj.control,l=a.sliderthickness,c=a.editor;if(o.vertical){for(r=a.morebuttonstart-a.minscrollingpanesize-t.offsetY,t.clientY>r&&(t.clientY=r),s=c.headposition.top-l-t.offsetY,t.clientY<s&&(t.clientY=s),i=Re.Lookup(t.clientY+l,c.rowpositions);"yes"==c.context.sheetobj.rowattribs.hide[i];)i++;t.trackingline.style.top=(c.rowpositions[i]||c.headposition.top)+"px"}else{for(r=a.morebuttonstart-a.minscrollingpanesize-t.offsetX,t.clientX>r&&(t.clientX=r),s=c.headposition.left-l-t.offsetX,t.clientX<s&&(t.clientX=s),n=Re.Lookup(t.clientX+l,c.colpositions);"yes"==c.context.sheetobj.colattribs.hide[Re.rcColname(n)];)n++;t.trackingline.style.left=(c.colpositions[n]||c.headposition.left)+"px"}Re.DragFunctionPosition(e,t,o)},Re.TCPSDragFunctionStop=function(e,t,o){var i,n,r,s,a=o.functionobj.control,l=a.sliderthickness,c=a.editor;if(o.vertical){for(r=a.morebuttonstart-a.minscrollingpanesize-t.offsetY,t.clientY>r&&(t.clientY=r),s=c.headposition.top-l-t.offsetY,t.clientY<s&&(t.clientY=s),(i=Re.Lookup(t.clientY+l,c.rowpositions))>c.context.sheetobj.attribs.lastrow&&(i=c.context.sheetobj.attribs.lastrow);"yes"==c.context.sheetobj.rowattribs.hide[i];)i++;c.EditorScheduleSheetCommands("pane row "+i,!0,!1)}else{for(r=a.morebuttonstart-a.minscrollingpanesize-t.offsetX,t.clientX>r&&(t.clientX=r),s=c.headposition.left-l-t.offsetX,t.clientX<s&&(t.clientX=s),(n=Re.Lookup(t.clientX+l,c.colpositions))>c.context.sheetobj.attribs.lastcol&&(n=c.context.sheetobj.attribs.lastcol);"yes"==c.context.sheetobj.colattribs.hide[Re.rcColname(n)];)n++;c.EditorScheduleSheetCommands("pane col "+n,!0,!1)}},Re.TCTDragFunctionStart=function(e,t,o){var i=o.functionobj.control,n=i.editor,r=Re.Constants;Re.DragFunctionStart(e,t,o),t.thumbstatus&&(t.thumbstatus.rowmsgele&&(t.thumbstatus.rowmsgele=null),t.thumbstatus.rowpreviewele&&(t.thumbstatus.rowpreviewele=null),n.toplevel.removeChild(t.thumbstatus),t.thumbstatus=null),t.thumbstatus=document.createElement("div"),o.vertical?(r.TCTDFSthumbstatusvClass&&(t.thumbstatus.className=r.TCTDFSthumbstatusvClass),Re.setStyles(t.thumbstatus,r.TCTDFSthumbstatusvStyle),t.thumbstatus.style.top=t.clientY+r.TCTDFStopOffsetv+"px",t.thumbstatus.style.left=i.controlborder-10-n.tablewidth/2+"px",t.thumbstatus.style.width=n.tablewidth/2+"px",t.thumbcontext=new Re.RenderContext(n.context.sheetobj),t.thumbcontext.showGrid=!0,t.thumbcontext.rowpanes=[{first:1,last:1}],e=n.context.colpanes[n.context.colpanes.length-1],t.thumbcontext.colpanes=[{first:e.first,last:e.last}],t.thumbstatus.innerHTML='<table cellspacing="0" cellpadding="0"><tr><td valign="top" style="'+r.TCTDFSthumbstatusrownumStyle+'" class="'+r.TCTDFSthumbstatusrownumClass+'"><div>msg</div></td><td valign="top"><div style="overflow:hidden;">preview</div></td></tr></table>',t.thumbstatus.rowmsgele=t.thumbstatus.firstChild.firstChild.firstChild.firstChild.firstChild,t.thumbstatus.rowpreviewele=t.thumbstatus.firstChild.firstChild.firstChild.childNodes[1].firstChild,n.toplevel.appendChild(t.thumbstatus),Re.TCTDragFunctionRowSetStatus(t,n,n.firstscrollingrow||1)):(r.TCTDFSthumbstatushClass&&(t.thumbstatus.className=r.TCTDFSthumbstatushClass),Re.setStyles(t.thumbstatus,r.TCTDFSthumbstatushStyle),t.thumbstatus.style.top=i.controlborder+r.TCTDFStopOffseth+"px",t.thumbstatus.style.left=t.clientX+r.TCTDFSleftOffseth+"px",n.toplevel.appendChild(t.thumbstatus),t.thumbstatus.innerHTML=r.s_TCTDFthumbstatusPrefixh+Re.rcColname(n.firstscrollingcol))},Re.TCTDragFunctionRowSetStatus=function(e,t,o){var i=Re.Constants.s_TCTDFthumbstatusPrefixv+o+" ";e.thumbstatus.rowmsgele.innerHTML=i,e.thumbcontext.rowpanes=[{first:o,last:o}],e.thumbrowshown=o,e.thumbcontext.RenderSheet(e.thumbstatus.rowpreviewele.firstChild,{type:"html"})},Re.TCTDragFunctionMove=function(e,t,o){var i,n=o.functionobj.control,r=(n.thumbthickness,n.editor),s=Re.Constants;o.vertical?(t.clientY>n.scrollareaend-t.offsetY-n.thumbthickness+2&&(t.clientY=n.scrollareaend-t.offsetY-n.thumbthickness+2),t.clientY<n.scrollareastart-t.offsetY-1&&(t.clientY=n.scrollareastart-t.offsetY-1),t.thumbstatus.style.top=t.clientY+"px",i=(t.clientY+t.offsetY-n.scrollareastart+1)/(n.scrollareasize-n.thumbthickness)*(r.context.sheetobj.attribs.lastrow-r.lastnonscrollingrow)+r.lastnonscrollingrow+1,(i=(i=(i=Math.floor(i))<=r.lastnonscrollingrow?r.lastnonscrollingrow+1:i)>r.context.sheetobj.attribs.lastrow?r.context.sheetobj.attribs.lastrow:i)!=t.thumbrowshown&&Re.TCTDragFunctionRowSetStatus(t,r,i)):(t.clientX>n.scrollareaend-t.offsetX-n.thumbthickness+2&&(t.clientX=n.scrollareaend-t.offsetX-n.thumbthickness+2),t.clientX<n.scrollareastart-t.offsetX-1&&(t.clientX=n.scrollareastart-t.offsetX-1),t.thumbstatus.style.left=t.clientX+"px",i=(t.clientX+t.offsetX-n.scrollareastart+1)/(n.scrollareasize-n.thumbthickness)*(r.context.sheetobj.attribs.lastcol-r.lastnonscrollingcol)+r.lastnonscrollingcol+1,(i=(i=Math.floor(i))<=r.lastnonscrollingcol?r.lastnonscrollingcol+1:i)>r.context.sheetobj.attribs.lastcol&&(i=r.context.sheetobj.attribs.lastcol),n=s.s_TCTDFthumbstatusPrefixh+Re.rcColname(i),t.thumbstatus.innerHTML=n),Re.DragFunctionPosition(e,t,o)},Re.TCTDragFunctionStop=function(e,t,o){var i,n=o.functionobj.control,r=n.editor;o.vertical?(i=(t.clientY+t.offsetY-n.scrollareastart+1)/(n.scrollareasize-n.thumbthickness)*(r.context.sheetobj.attribs.lastrow-r.lastnonscrollingrow)+r.lastnonscrollingrow+1,(i=(i=Math.floor(i))<=r.lastnonscrollingrow?r.lastnonscrollingrow+1:i)>r.context.sheetobj.attribs.lastrow&&(i=r.context.sheetobj.attribs.lastrow),r.context.SetRowPaneFirstLast(r.context.rowpanes.length-1,i,i+1)):(i=(t.clientX+t.offsetX-n.scrollareastart+1)/(n.scrollareasize-n.thumbthickness)*(r.context.sheetobj.attribs.lastcol-r.lastnonscrollingcol)+r.lastnonscrollingcol+1,(i=(i=Math.floor(i))<=r.lastnonscrollingcol?r.lastnonscrollingcol+1:i)>r.context.sheetobj.attribs.lastcol&&(i=r.context.sheetobj.attribs.lastcol),r.context.SetColPaneFirstLast(r.context.colpanes.length-1,i,i+1)),r.FitToEditTable(),t.thumbstatus.rowmsgele&&(t.thumbstatus.rowmsgele=null),t.thumbstatus.rowpreviewele&&(t.thumbstatus.rowpreviewele=null),r.toplevel.removeChild(t.thumbstatus),t.thumbstatus=null,r.ScheduleRender()},Re.DragInfo={registeredElements:[],draggingElement:null,startX:0,startY:0,startZ:0,clientX:0,clientY:0,offsetX:0,offsetY:0,relativeOffset:{left:0,top:0}},Re.DragRegister=function(e,t,o,i,n){var r=Re.DragInfo;if(i=i||{MouseDown:Re.DragFunctionStart,MouseMove:Re.DragFunctionPosition,MouseUp:Re.DragFunctionPosition,Disabled:null},r.registeredElements.push({element:e,vertical:t,horizontal:o,functionobj:i,parent:n}),e.addEventListener)e.addEventListener("mousedown",Re.DragMouseDown,!1);else{if(!e.attachEvent)throw Re.Constants.s_BrowserNotSupported;e.attachEvent("onmousedown",Re.DragMouseDown)}},Re.DragUnregister=function(e){var t,o=Re.DragInfo;if(e)for(t=0;t<o.registeredElements.length;t++)if(o.registeredElements[t].element==e)return o.registeredElements.splice(t,1),void(e.removeEventListener?e.removeEventListener("mousedown",Re.DragMouseDown,!1):e.detachEvent("onmousedown",Re.DragMouseDown))},Re.DragMouseDown=function(e){var e=e||M.event,t=Re.DragInfo,o=Re.LookupElement(e.target||e.srcElement,t.registeredElements);if(o&&!(o&&o.functionobj&&o.functionobj.Disabled&&o.functionobj.Disabled(e,t,o)))return(t.draggingElement=o).parent&&(t.relativeOffset=Re.GetElementPositionWithScroll(o.parent)),t.clientX=e.clientX-t.relativeOffset.left,t.clientY=e.clientY-t.relativeOffset.top,t.startX=t.clientX,t.startY=t.clientY,t.startZ=o.element.style.zIndex,t.offsetX=0,t.offsetY=0,o.element.style.zIndex="100",Re.SetMouseMoveUp(Re.DragMouseMove,Re.DragMouseUp,o.element,e),o&&o.functionobj&&o.functionobj.MouseDown&&o.functionobj.MouseDown(e,t,o),!1},Re.DragMouseMove=function(e){var e=e||M.event,t=Re.DragInfo,o=t.draggingElement;return t.clientX=e.clientX-t.relativeOffset.left,t.clientY=e.clientY-t.relativeOffset.top,Re.StopPropagation(e),o&&o.functionobj&&o.functionobj.MouseMove&&o.functionobj.MouseMove(e,t,o),!1},Re.DragMouseUp=function(e){var e=e||M.event,t=Re.DragInfo,o=t.draggingElement;return t.clientX=e.clientX-t.relativeOffset.left,t.clientY=e.clientY-t.relativeOffset.top,o.element.style.zIndex=t.startZ,o&&o.functionobj&&o.functionobj.MouseUp&&o.functionobj.MouseUp(e,t,o),Re.RemoveMouseMoveUp(Re.DragMouseMove,Re.DragMouseUp,o.element,e),t.draggingElement=null,!1},Re.DragFunctionStart=function(e,t,o){o=o.functionobj.positionobj||o.element;t.offsetY=parseInt(o.style.top)-t.clientY,t.offsetX=parseInt(o.style.left)-t.clientX},Re.DragFunctionPosition=function(e,t,o){var i=o.functionobj.positionobj||o.element;o.vertical&&(i.style.top=t.clientY+t.offsetY+"px"),o.horizontal&&(i.style.left=t.clientX+t.offsetX+"px")},Re.ButtonInfo={registeredElements:[],buttonElement:null,doingHover:!1,buttonDown:!1,timer:null,relativeOffset:null,clientX:0,clientY:0},Re.ButtonRegister=function(e,t,o,i){if(Re.ButtonInfo.registeredElements.push({name:(o=o||{}).name,element:t,editor:e,normalstyle:o.normalstyle,hoverstyle:o.hoverstyle,downstyle:o.downstyle,repeatwait:o.repeatwait,repeatinterval:o.repeatinterval,functionobj:i}),t.addEventListener)t.addEventListener("mousedown",Re.ButtonMouseDown,!1),t.addEventListener("mouseover",Re.ButtonMouseOver,!1),t.addEventListener("mouseout",Re.ButtonMouseOut,!1);else{if(!t.attachEvent)throw Re.Constants.s_BrowserNotSupported;t.attachEvent("onmousedown",Re.ButtonMouseDown),t.attachEvent("onmouseover",Re.ButtonMouseOver),t.attachEvent("onmouseout",Re.ButtonMouseOut)}},Re.ButtonMouseOver=function(e){var e=e||M.event,t=Re.ButtonInfo,o=Re.LookupElement(e.target||e.srcElement,t.registeredElements);o&&(t.buttonDown?t.buttonElement==o&&(t.doingHover=!0):(t.buttonElement&&t.buttonElement!=o&&t.doingHover&&Re.setStyles(t.buttonElement.element,t.buttonElement.normalstyle),t.buttonElement=o,t.doingHover=!0,Re.setStyles(o.element,o.hoverstyle),o&&o.functionobj&&o.functionobj.MouseOver&&o.functionobj.MouseOver(e,t,o)))},Re.ButtonMouseOut=function(e){var t,e=e||M.event,o=Re.ButtonInfo;o.buttonDown?o.doingHover=!1:(t=Re.LookupElement(e.target||e.srcElement,o.registeredElements),o.doingHover&&(o.buttonElement&&Re.setStyles(o.buttonElement.element,o.buttonElement.normalstyle),o.buttonElement=null,o.doingHover=!1),t&&t.functionobj&&t.functionobj.MouseOut&&t.functionobj.MouseOut(e,o,t))},Re.ButtonMouseDown=function(e){var e=e||M.event,t=Re.ButtonInfo,o=(Re.GetViewportInfo(),Re.LookupElement(e.target||e.srcElement,t.registeredElements));!o||o&&o.functionobj&&o.functionobj.Disabled&&o.functionobj.Disabled(e,t,o)||(t.buttonElement=o,t.buttonDown=!0,Re.setStyles(o.element,t.buttonElement.downstyle),document.addEventListener?document.addEventListener("mouseup",Re.ButtonMouseUp,!0):o.element.attachEvent&&(o.element.setCapture(),o.element.attachEvent("onmouseup",Re.ButtonMouseUp),o.element.attachEvent("onlosecapture",Re.ButtonMouseUp)),Re.StopPropagation(e),t.relativeOffset=Re.GetElementPositionWithScroll(o.editor.toplevel),t.clientX=e.clientX-t.relativeOffset.left,t.clientY=e.clientY-t.relativeOffset.top,o&&o.functionobj&&o.functionobj.MouseDown&&o.functionobj.MouseDown(e,t,o),o.repeatwait&&(t.timer=M.setTimeout(Re.ButtonRepeat,o.repeatwait)))},Re.ButtonMouseUp=function(e){var e=e||M.event,t=Re.ButtonInfo,o=t.buttonElement;t.timer&&(M.clearTimeout(t.timer),t.timer=null),t.buttonDown&&(Re.StopPropagation(e),document.removeEventListener?document.removeEventListener("mouseup",Re.ButtonMouseUp,!0):document.detachEvent&&(o.element.detachEvent("onlosecapture",Re.ButtonMouseUp),o.element.detachEvent("onmouseup",Re.ButtonMouseUp),o.element.releaseCapture()),t.buttonElement.downstyle&&(t.doingHover?Re.setStyles(o.element,t.buttonElement.hoverstyle):Re.setStyles(o.element,t.buttonElement.normalstyle)),t.buttonDown=!1,o&&o.functionobj&&o.functionobj.MouseUp&&o.functionobj.MouseUp(e,t,o))},Re.ButtonRepeat=function(){var e=Re.ButtonInfo,t=e.buttonElement;t&&(t&&t.functionobj&&t.functionobj.Repeat&&t.functionobj.Repeat(null,e,t),e.timer=M.setTimeout(Re.ButtonRepeat,t.repeatinterval||100))},Re.MouseWheelInfo={registeredElements:[]},Re.MouseWheelRegister=function(e,t){if(Re.MouseWheelInfo.registeredElements.push({element:e,functionobj:t}),e.addEventListener)e.addEventListener("DOMMouseScroll",Re.ProcessMouseWheel,!1),e.addEventListener("mousewheel",Re.ProcessMouseWheel,!1);else{if(!e.attachEvent)throw Re.Constants.s_BrowserNotSupported;e.attachEvent("onmousewheel",Re.ProcessMouseWheel)}},Re.ProcessMouseWheel=function(e){var t,e=e||M.event;if(!Re.Keyboard.passThru){for(var o=Re.MouseWheelInfo,i=e.target||e.srcElement,n=null;!n&&i;i=i.parentNode)n=Re.LookupElement(i,o.registeredElements);n&&(t=(t=e.wheelDelta?e.wheelDelta/120:-e.detail/3)||0,n.functionobj&&n.functionobj.WheelMove&&n.functionobj.WheelMove(e,t,o,n),e.preventDefault&&e.preventDefault(),e.returnValue=!1)}},Re.keyboardTables={specialKeysCommon:{8:"[backspace]",9:"[tab]",13:"[enter]",25:"[tab]",27:"[esc]",33:"[pgup]",34:"[pgdn]",35:"[end]",36:"[home]",37:"[aleft]",38:"[aup]",39:"[aright]",40:"[adown]",45:"[ins]",46:"[del]",113:"[f2]"},specialKeysIE:{8:"[backspace]",9:"[tab]",13:"[enter]",25:"[tab]",27:"[esc]",33:"[pgup]",34:"[pgdn]",35:"[end]",36:"[home]",37:"[aleft]",38:"[aup]",39:"[aright]",40:"[adown]",45:"[ins]",46:"[del]",113:"[f2]"},controlKeysIE:{65:"[ctrl-a]",67:"[ctrl-c]",83:"[ctrl-s]",86:"[ctrl-v]",88:"[ctrl-x]",90:"[ctrl-z]"},specialKeysOpera:{8:"[backspace]",9:"[tab]",13:"[enter]",25:"[tab]",27:"[esc]",33:"[pgup]",34:"[pgdn]",35:"[end]",36:"[home]",37:"[aleft]",38:"[aup]",39:"[aright]",40:"[adown]",45:"[ins]",46:"[del]",113:"[f2]"},controlKeysOpera:{65:"[ctrl-a]",67:"[ctrl-c]",83:"[ctrl-s]",86:"[ctrl-v]",88:"[ctrl-x]",90:"[ctrl-z]"},specialKeysSafari:{8:"[backspace]",9:"[tab]",13:"[enter]",25:"[tab]",27:"[esc]",63232:"[aup]",63233:"[adown]",63234:"[aleft]",63235:"[aright]",63272:"[del]",63273:"[home]",63275:"[end]",63276:"[pgup]",63277:"[pgdn]",63237:"[f2]"},controlKeysSafari:{97:"[ctrl-a]",99:"[ctrl-c]",115:"[ctrl-s]",118:"[ctrl-v]",120:"[ctrl-x]",122:"[ctrl-z]"},ignoreKeysSafari:{63236:"[f1]",63238:"[f3]",63239:"[f4]",63240:"[f5]",63241:"[f6]",63242:"[f7]",63243:"[f8]",63244:"[f9]",63245:"[f10]",63246:"[f11]",63247:"[f12]",63289:"[numlock]"},specialKeysFirefox:{8:"[backspace]",9:"[tab]",13:"[enter]",25:"[tab]",27:"[esc]",33:"[pgup]",34:"[pgdn]",35:"[end]",36:"[home]",37:"[aleft]",38:"[aup]",39:"[aright]",40:"[adown]",45:"[ins]",46:"[del]",113:"[f2]"},controlKeysFirefox:{97:"[ctrl-a]",99:"[ctrl-c]",115:"[ctrl-s]",118:"[ctrl-v]",120:"[ctrl-x]",122:"[ctrl-z]"},ignoreKeysFirefox:{16:"[shift]",17:"[ctrl]",18:"[alt]",20:"[capslock]",19:"[pause]",44:"[printscreen]",91:"[windows]",92:"[windows]",112:"[f1]",114:"[f3]",115:"[f4]",116:"[f5]",117:"[f6]",118:"[f7]",119:"[f8]",120:"[f9]",121:"[f10]",122:"[f11]",123:"[f12]",144:"[numlock]",145:"[scrolllock]",224:"[cmd]"}},Re.Keyboard={areListener:!1,focusTable:null,passThru:null,didProcessKey:!1,statusFromProcessKey:!1,repeatingKeyPress:!1,chForProcessKey:""},Re.KeyboardSetFocus=function(e){Re.Keyboard.focusTable=e,Re.Keyboard.areListener||(document.onkeydown=Re.ProcessKeyDown,document.onkeypress=Re.ProcessKeyPress,Re.Keyboard.areListener=!0),Re.Keyboard.passThru&&(Re.Keyboard.passThru.blur&&Re.Keyboard.passThru.blur(),Re.Keyboard.passThru=null),M.focus()},Re.KeyboardFocus=function(){Re.Keyboard.passThru=null,M.focus()},Re.ProcessKeyDown=function(e){var t=Re.keyboardTables,o=(t.didProcessKey=!1,t.statusFromProcessKey=!1,""),i=!(t.repeatingKeyPress=!1);if(!Re._app&&!Re.Keyboard.passThru){if(null==(e=e||M.event).which){if(!(o=t.specialKeysCommon[e.keyCode])&&!(o=e.ctrlKey?t.controlKeysIE[e.keyCode]:o))return!0;(i=Re.ProcessKey(o,e))||(e.preventDefault&&e.preventDefault(),e.returnValue=!1)}else{if(!(o=t.specialKeysCommon[e.keyCode])&&!(o=e.ctrlKey||e.metaKey?t.controlKeysIE[e.keyCode]:o))return!0;i=Re.ProcessKey(o,e),t.didProcessKey=!0,t.statusFromProcessKey=i,t.chForProcessKey=o}return i}},Re.ProcessKeyPress=function(e){var t=Re.keyboardTables,o="";if(e=e||M.event,!Re._app&&!Re.Keyboard.passThru){if(t.didProcessKey)return t.repeatingKeyPress?Re.ProcessKey(t.chForProcessKey,e):(t.repeatingKeyPress=!0,t.statusFromProcessKey);if(null==e.which)o=String.fromCharCode(e.keyCode);else{if(!e.which)return!1;if(null==e.charCode){if(0==e.which)return!0;if(e.which<32||144==e.which){if(o=t.specialKeysOpera[e.which])return!0}else o=e.ctrlKey?t.controlKeysOpera[e.keyCode]:String.fromCharCode(e.which)}else{if(0==e.keyCode&&0==e.charCode)return;if(e.keyCode==e.charCode){if(!(o=t.specialKeysSafari[e.keyCode])){if(t.ignoreKeysSafari[e.keyCode])return!0;o=e.metaKey?t.controlKeysSafari[e.keyCode]:String.fromCharCode(e.which)}}else{if(t.specialKeysFirefox[e.keyCode])return!0;o=String.fromCharCode(e.which),(e.ctrlKey||e.metaKey)&&(o=t.controlKeysFirefox[e.which])}}}t=Re.ProcessKey(o,e);return t||(e.preventDefault&&e.preventDefault(),e.returnValue=!1),t}},Re.ProcessKey=function(e,t){var o=Re.Keyboard.focusTable;return!o||o.EditorProcessKey(e,t)},(Re=Re||{}).FormatNumber={},Re.FormatNumber.format_definitions={},Re.FormatNumber.separatorchar=",",Re.FormatNumber.decimalchar=".",Re.FormatNumber.daynames=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],Re.FormatNumber.daynames3=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],Re.FormatNumber.monthnames3=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],Re.FormatNumber.monthnames=["January","February","March","April","May","June","July","August","September","October","November","December"],Re.FormatNumber.allowedcolors={BLACK:"#000000",BLUE:"#0000FF",CYAN:"#00FFFF",GREEN:"#00FF00",MAGENTA:"#FF00FF",RED:"#FF0000",WHITE:"#FFFFFF",YELLOW:"#FFFF00"},Re.FormatNumber.alloweddates={H:"h]",M:"m]",MM:"mm]",S:"s]",SS:"ss]"},Re.FormatNumber.commands={copy:1,color:2,integer_placeholder:3,fraction_placeholder:4,decimal:5,currency:6,general:7,separator:8,date:9,comparison:10,section:11,style:12},Re.FormatNumber.datevalues={julian_offset:2415019,seconds_in_a_day:86400,seconds_in_an_hour:3600},Re.FormatNumber.formatNumberWithFormat=function(e,t,o){var i,n,r,s,a,l,c,L,u,d,h,p,f,m,g,v,b,y,O,z,C,w,x,_,H,S,k,B,T,F,U,j,E,V,D=Re.Constants,P=Re.FormatNumber,A="";if("string"==typeof e&&!e.length)return"";if(N=+e,!isFinite(N))return"string"==typeof e?P.formatTextWithFormat(e,t):"NaN";var I=(e=N)<0?1:0,M=0==(N=I?-N:N)?1:0;if(o=o||D.FormatNumber_DefaultCurrency,P.parse_format_string(P.format_definitions,t),!(m=P.format_definitions[t]))throw"Format not parsed error!";if(g=m.sectioninfo.length-1,m.hascomparison)for(O=v=g=0;;O++){if(i=m.operators[O],n=m.operands[O],!i){v&&(P.parse_format_string(P.format_definitions,t="General"),m=P.format_definitions[t],g=0);break}if(i==P.commands.section){if(!v)break;v=0,g++}else if(i==P.commands.comparison){if(w=n.indexOf(":"),b=n.substring(0,w),y=+n.substring(w+1),"<"==b&&e<y||"<="==b&&e<=y||"="==b&&e==y||"<>"==b&&e!=y||">="==b&&y<=e||">"==b&&y<e)break;v=1}}else 0<g&&(1==g?g=I?(I=0,1):0:2!=g&&3!=g||(g=I?(I=0,1):M?2:0));if(0<(C=m.sectioninfo[g]).commas)for(w=0;w<C.commas;w++)N/=1e3;if(0<C.percent)for(w=0;w<C.percent;w++)N*=100;for(x=1,w=0;w<C.fractiondigits;w++)x*=10;if(o=Math.floor(N*x+.5),"number"!=typeof(o/=x))return"NaN";if(!isFinite(o))return"NaN";if(0==o&&(C.fractiondigits||C.integerdigits)&&(I=0),0<=(_=o+"").indexOf("e"))return e+"";if(!(H=_.match(/^\+{0,1}(\d*)(?:\.(\d*)){0,1}$/)))return"NaN";if((S=H[1])&&"0"!=S||(S=""),k=(k=H[2])||"",C.hasdate){if(e<0)return"??-???-??&nbsp;??:??:??";for(M=(e-Math.floor(e))*P.datevalues.seconds_in_a_day,o=e*P.datevalues.seconds_in_a_day,a=Math.floor(M/P.datevalues.seconds_in_an_hour),L=Math.floor(o/P.datevalues.seconds_in_an_hour),M-=a*P.datevalues.seconds_in_an_hour,l=Math.floor(M/60),u=Math.floor(o/60),c=M-60*l,x=1,w=0;w<C.fractiondigits;w++)x*=10;for(c=Math.floor(c*x+.5),c/=x,d=Math.floor(o*x+.5),d/=x,60<=c&&(c=0,u++,60<=++l&&(l=0,L++,24<=++a&&(a=0,e++))),k=(k=c-Math.floor(c)+"").substring(2),p=Re.FormatNumber.convert_date_julian_to_gregorian(Math.floor(e+P.datevalues.julian_offset)),f=0,mspos=C.sectionstart;(i=m.operators[mspos],n=m.operands[mspos],i)&&i!=P.commands.section;mspos++)i==P.commands.date?("am/pm"!=n.toLowerCase()&&"a/p"!=n.toLowerCase()||h||(h=12<=a?(a-=12,"a/p"==n.toLowerCase()?D.s_FormatNumber_pm1:D.s_FormatNumber_pm):"a/p"==n.toLowerCase()?D.s_FormatNumber_am1:D.s_FormatNumber_am,n.indexOf(h)<0&&(h=h.toLowerCase())),!f||"m"!=n&&"mm"!=n||(m.operands[mspos]+="in"),f="h"==n.charAt(0)?1:0):i!=P.commands.copy&&(f=0);for(f=0,--mspos;(i=m.operators[mspos],n=m.operands[mspos],i)&&i!=P.commands.section;mspos--)i==P.commands.date?(!f||"m"!=n&&"mm"!=n||(m.operands[mspos]+="in"),f="ss"==n?1:0):i!=P.commands.copy&&(f=0)}for(j=U="",(F=T=B=0)<=(E=D.FormatNumber_separatorchar).indexOf(" ")&&(E=E.replace(/ /g,"&nbsp;")),0<=(V=D.FormatNumber_decimalchar).indexOf(" ")&&(V=V.replace(/ /g,"&nbsp;")),z=C.sectionstart;i=m.operators[z];)if(n=m.operands[z++],i==P.commands.copy)A+=n;else if(i==P.commands.color)U=n;else if(i==P.commands.style)j=n;else if(i==P.commands.integer_placeholder){if(I&&(A+="-",I=0),1==++B&&S.length>C.integerdigits)for(;T<S.length-C.integerdigits;T++)A+=S.charAt(T),C.thousandssep&&2<(r=S.length-T-1)&&r%3==0&&(A+=E);S.length<C.integerdigits&&B<=C.integerdigits-S.length?"0"!=n&&"?"!=n||(A+="0"==n?"0":"&nbsp;",C.thousandssep&&2<(r=C.integerdigits-B)&&r%3==0&&(A+=E)):(A+=S.charAt(T),C.thousandssep&&2<(r=S.length-T-1)&&r%3==0&&(A+=E),T++)}else if(i==P.commands.fraction_placeholder)F>=k.length?"0"!=n&&"?"!=n||(A+="0"==n?"0":"&nbsp;"):A+=k.charAt(F),F++;else if(i==P.commands.decimal)I&&(A+="-",I=0),A+=V;else if(i==P.commands.currency)I&&(A+="-",I=0),A+=n;else if(i==P.commands.general){if(0!=N){var R=Math.floor(Math.LOG10E*Math.log(N)),R=Math.pow(10,13-R),N=Math.floor(R*N+.5)/R;if(!isFinite(N))return"NaN"}if(I&&(A+="-"),0<=(_=N+"").indexOf("e"))A+=_;else{if((S=(H=_.match(/^\+{0,1}(\d*)(?:\.(\d*)){0,1}$/))[1])&&"0"!=S||(S=""),k=(k=H[2])||"",F=T=0,S.length)for(;T<S.length;T++)A+=S.charAt(T),C.thousandssep&&2<(r=S.length-T-1)&&r%3==0&&(A+=E);else A+="0";if(k.length)for(A+=V;F<k.length;F++)A+=k.charAt(F)}}else if(i==P.commands.date)"y"==(R=n.toLowerCase())||"yy"==R?A+=(p.year+"").substring(2):"yyyy"==R?A+=p.year+"":"d"==R?A+=p.day+"":"dd"==R?A+=((s=1e3+p.day)+"").substr(2):"ddd"==R?(s=Math.floor(e+6)%7,A+=D.s_FormatNumber_daynames3[s]):"dddd"==R?(s=Math.floor(e+6)%7,A+=D.s_FormatNumber_daynames[s]):"m"==R?A+=p.month+"":"mm"==R?A+=((s=1e3+p.month)+"").substr(2):"mmm"==R?A+=D.s_FormatNumber_monthnames3[p.month-1]:"mmmm"==R?A+=D.s_FormatNumber_monthnames[p.month-1]:"mmmmm"==R?A+=D.s_FormatNumber_monthnames[p.month-1].charAt(0):"h"==R?A+=a+"":"h]"==R?A+=L+"":"mmin"==R?A+=(s=1e3+l+"").substr(2):"mm]"==R?A+=u<100?(s=1e3+u+"").substr(2):u+"":"min"==R?A+=l+"":"m]"==R?A+=u+"":"hh"==R?A+=(s=1e3+a+"").substr(2):"s"==R?A+=(s=Math.floor(c))+"":"ss"==R?A+=(s=1e3+Math.floor(c)+"").substr(2):"am/pm"==R||"a/p"==R?A+=h:"ss]"==R&&(A+=d<100?(s=1e3+Math.floor(d)+"").substr(2):(s=Math.floor(d))+"");else{if(i==P.commands.section)break;i!=P.commands.comparison&&(A+="!! Parse error !!")}return U&&(A='<span style="color:'+U+';">'+A+"</span>"),A=j?'<span style="'+j+';">'+A+"</span>":A},Re.FormatNumber.formatTextWithFormat=function(e,t){Re.Constants;var o,i,n=Re.FormatNumber,r=e+"",s="",a="",l="";if(n.parse_format_string(n.format_definitions,t),!(thisformat=n.format_definitions[t]))throw"Format not parsed error!";if(0==(e=thisformat.sectioninfo.length-1))e=0;else{if(3!=e)return r;e=3}for(o=thisformat.sectioninfo[e].sectionstart;op=thisformat.operators[o];)i=thisformat.operands[o++],op==n.commands.copy?s+="@"==i?r:i.replace(/ /g,"&nbsp;"):op==n.commands.color?a=i:op==n.commands.style&&(l=i);return a&&(s='<span style="color:'+a+';">'+s+"</span>"),s=l?'<span style="'+l+';">'+s+"</span>":s},Re.FormatNumber.parse_format_string=function(e,t){var o,i,n,r,s,a,l,c,u,d,h,p,f,m,g,v,b=Re.FormatNumber,y=1;if(!e[t]){for(e[t]=o={operators:[],operands:[],sectioninfo:[{}]},(sectioninfo=o.sectioninfo[i=0]).sectionstart=0,sectioninfo.integerdigits=0,sectioninfo.fractiondigits=0,sectioninfo.commas=0,g=sectioninfo.percent=0;g<t.length;g++)if(v=t.charAt(g),l)'"'==v?(l=0,o.operators.push(b.commands.copy),o.operands.push(c)):c+=v;else if(u)"]"==v?(u=0,(f=Re.FormatNumber.parse_format_bracket(d)).operator==b.commands.separator?sectioninfo.thousandssep=1:(f.operator==b.commands.date&&(sectioninfo.hasdate=1),f.operator==b.commands.comparison&&(o.hascomparison=1),o.operators.push(f.operator),o.operands.push(f.operand))):d+=v;else if(r)o.operators.push(b.commands.copy),o.operands.push(v),r=!1;else if(s)o.operators.push(b.commands.copy),o.operands.push(v+v+v+v+v),s=!1;else if(a)o.operators.push(b.commands.copy),o.operands.push("&nbsp;"),a=!1;else{if(h){if("general".charAt(h)==v.toLowerCase()){7==++h&&(o.operators.push(b.commands.general),o.operands.push(v),h=0);continue}h=0}if(m){if(m.charAt(0)==v){m+=v;continue}o.operators.push(b.commands.date),o.operands.push(m),sectioninfo.hasdate=1,m=""}p?(f=(p+=v).toLowerCase())!="am/pm".substring(0,f.length)&&f!="a/p".substring(0,f.length)?ampstr="":"am/pm"!=f&&"a/p"!=f||(o.operators.push(b.commands.date),o.operands.push(p),p=""):"#"==v||"0"==v||"?"==v?(y?(sectioninfo.integerdigits++,sectioninfo.commas&&(sectioninfo.thousandssep=1,sectioninfo.commas=0),n=1,o.operators.push(b.commands.integer_placeholder)):(sectioninfo.fractiondigits++,n=1,o.operators.push(b.commands.fraction_placeholder)),o.operands.push(v)):"."==v?(n=0,o.operators.push(b.commands.decimal),o.operands.push(v),y=0):"$"==v?(n=0,o.operators.push(b.commands.currency),o.operands.push(v)):","==v?n?sectioninfo.commas++:(o.operators.push(b.commands.copy),o.operands.push(v)):"%"==v?(n=0,sectioninfo.percent++,o.operators.push(b.commands.copy),o.operands.push(v)):'"'==v?(n=0,l=1,c=""):"["==v?(n=0,u=1,d=""):"\\"==v?(r=1,n=0):"*"==v?(s=1,n=0):"_"==v?(a=1,n=0):";"==v?(i++,o.sectioninfo[i]={},(sectioninfo=o.sectioninfo[i]).sectionstart=1+o.operators.length,sectioninfo.integerdigits=0,sectioninfo.fractiondigits=0,sectioninfo.commas=0,y=1,n=sectioninfo.percent=0,o.operators.push(b.commands.section),o.operands.push(v)):"g"==v.toLowerCase()?(h=1,n=0):"a"==v.toLowerCase()?(p=v,n=0):0<="dmyhHs".indexOf(v)?m=v:(n=0,o.operators.push(b.commands.copy),o.operands.push(v))}m&&(o.operators.push(b.commands.date),o.operands.push(m),sectioninfo.hasdate=1)}},Re.FormatNumber.parse_format_bracket=function(e){var t,o=Re.FormatNumber,i=Re.Constants,n={};return"$"==e.charAt(0)?(n.operator=o.commands.currency,t=e.match(/^\$(.+?)(\-.+?){0,1}$/),n.operand=t?t[1]||i.FormatNumber_defaultCurrency||"$":e.substring(1)||i.FormatNumber_defaultCurrency||"$"):"?$"==e?(n.operator=o.commands.currency,n.operand="[?$]"):o.allowedcolors[e.toUpperCase()]?(n.operator=o.commands.color,n.operand=o.allowedcolors[e.toUpperCase()]):(t=e.match(/^style=([^"]*)$/))?(n.operator=o.commands.style,n.operand=t[1]):","==e?(n.operator=o.commands.separator,n.operand=e):o.alloweddates[e.toUpperCase()]?(n.operator=o.commands.date,n.operand=o.alloweddates[e.toUpperCase()]):(t=e.match(/^[<>=]/))?(t=e.match(/^([<>=]+)(.+)$/),n.operator=o.commands.comparison,n.operand=t[1]+":"+t[2]):(n.operator=o.commands.copy,n.operand="["+e+"]"),n},Re.FormatNumber.convert_date_gregorian_to_julian=function(e,t,o){o=o-32075+Re.intFunc(1461*(e+4800+Re.intFunc((t-14)/12))/4);return(o+=Re.intFunc(367*(t-2-12*Re.intFunc((t-14)/12))/12))-Re.intFunc(3*Re.intFunc((e+4900+Re.intFunc((t-14)/12))/100)/4)},Re.FormatNumber.convert_date_julian_to_gregorian=function(e){var t,o,i,e=e+68569,n=Math.floor(4*e/146097);return e-=Math.floor((146097*n+3)/4),t=Math.floor(4e3*(1+e)/1461001),e=e-Math.floor(1461*t/4)+31,o=Math.floor(80*e/2447),i=e-Math.floor(2447*o/80),{year:100*(n-49)+t+(e=Math.floor(o/11)),month:o+2-12*e,day:i}},Re.intFunc=function(e){return e<0?-Math.floor(-e):Math.floor(e)},(Re=Re||{}).Formula={},Re.TriggerIoAction={},Re.Formula.ParseState={num:1,alpha:2,coord:3,string:4,stringquote:5,numexp1:6,numexp2:7,alphanumeric:8,specialvalue:9},Re.Formula.TokenType={num:1,coord:2,op:3,name:4,error:5,string:6,space:7},Re.Formula.CharClass={num:1,numstart:2,op:3,eof:4,alpha:5,incoord:6,error:7,quote:8,space:9,specialstart:10},Re.Formula.CharClassTable={" ":9,"!":3,'"':8,"'":8,"#":10,$:6,"%":3,"&":3,"(":3,")":3,"*":3,"+":3,",":3,"-":3,".":2,"/":3,0:1,1:1,2:1,3:1,4:1,5:1,6:1,7:1,8:1,9:1,":":3,"<":3,"=":3,">":3,A:5,B:5,C:5,D:5,E:5,F:5,G:5,H:5,I:5,J:5,K:5,L:5,M:5,N:5,O:5,P:5,Q:5,R:5,S:5,T:5,U:5,V:5,W:5,X:5,Y:5,Z:5,"^":3,_:5,a:5,b:5,c:5,d:5,e:5,f:5,g:5,h:5,i:5,j:5,k:5,l:5,m:5,n:5,o:5,p:5,q:5,r:5,s:5,t:5,u:5,v:5,w:5,x:5,y:5,z:5},Re.Formula.UpperCaseTable={a:"A",b:"B",c:"C",d:"D",e:"E",f:"F",g:"G",h:"H",i:"I",j:"J",k:"K",l:"L",m:"M",n:"N",o:"O",p:"P",q:"Q",r:"R",s:"S",t:"T",u:"U",v:"V",w:"W",x:"X",y:"Y",z:"Z",A:"A",B:"B",C:"C",D:"D",E:"E",F:"F",G:"G",H:"H",I:"I",J:"J",K:"K",L:"L",M:"M",N:"N",O:"O",P:"P",Q:"Q",R:"R",S:"S",T:"T",U:"U",V:"V",W:"W",X:"X",Y:"Y",Z:"Z"},Re.Formula.SpecialConstants={"#NULL!":"0,e#NULL!","#NUM!":"0,e#NUM!","#DIV/0!":"0,e#DIV/0!","#VALUE!":"0,e#VALUE!","#REF!":"0,e#REF!","#NAME?":"0,e#NAME?"},Re.Formula.TokenPrecedence={"!":1,":":2,",":2,M:-3,P:-3,"%":4,"^":5,"*":6,"/":6,"+":7,"-":7,"&":8,"<":9,">":9,G:9,L:9,N:9},Re.Formula.TokenOpExpansion={G:">=",L:"<=",M:"-",N:"<>",P:"+"},Re.Formula.TypeLookupTable={unaryminus:{"n*":"|n*:1|","e*":"|e*:1|","t*":"|t*:e#VALUE!|",b:"|b:n|"},unaryplus:{"n*":"|n*:1|","e*":"|e*:1|","t*":"|t*:e#VALUE!|",b:"|b:n|"},unarypercent:{"n*":"|n:n%|n*:n|","e*":"|e*:1|","t*":"|t*:e#VALUE!|",b:"|b:n|"},plus:{"n%":"|n%:n%|nd:n|nt:n|ndt:n|n$:n|n:n|n*:n|b:n|e*:2|t*:e#VALUE!|",nd:"|n%:n|nd:nd|nt:ndt|ndt:ndt|n$:n|n:nd|n*:n|b:n|e*:2|t*:e#VALUE!|",nt:"|n%:n|nd:ndt|nt:nt|ndt:ndt|n$:n|n:nt|n*:n|b:n|e*:2|t*:e#VALUE!|",ndt:"|n%:n|nd:ndt|nt:ndt|ndt:ndt|n$:n|n:ndt|n*:n|b:n|e*:2|t*:e#VALUE!|",n$:"|n%:n|nd:n|nt:n|ndt:n|n$:n$|n:n$|n*:n|b:n|e*:2|t*:e#VALUE!|",nl:"|n%:n|nd:n|nt:n|ndt:n|n$:n|n:n|n*:n|b:n|e*:2|t*:e#VALUE!|",n:"|n%:n|nd:nd|nt:nt|ndt:ndt|n$:n$|n:n|n*:n|b:n|e*:2|t*:e#VALUE!|",b:"|n%:n%|nd:nd|nt:nt|ndt:ndt|n$:n$|n:n|n*:n|b:n|e*:2|t*:e#VALUE!|","t*":"|ni:1|n*:e#VALUE!|t*:e#VALUE!|b:e#VALUE!|e*:2|","n*":"|ni:1|e*:2|","e*":"|e*:1|n*:1|t*:1|b:1|"},concat:{t:"|t:t|th:th|tw:tw|tl:t|tr:tr|t*:2|e*:2|",th:"|t:th|th:th|tw:t|tl:th|tr:t|t*:t|e*:2|",tw:"|t:tw|th:t|tw:tw|tl:tw|tr:tw|t*:t|e*:2|",tl:"|t:tl|th:th|tw:tw|tl:tl|tr:tr|t*:t|e*:2|","t*":"|t*:t|e*:2|","e*":"|e*:1|n*:1|t*:1|"},oneargnumeric:{"n*":"|n*:n|","e*":"|e*:1|","t*":"|t*:e#VALUE!|",b:"|b:n|"},twoargnumeric:{"n*":"|n*:n|t*:e#VALUE!|e*:2|","e*":"|e*:1|n*:1|t*:1|","t*":"|t*:e#VALUE!|n*:e#VALUE!|e*:2|"},propagateerror:{"n*":"|n*:2|e*:2|","e*":"|e*:2|","t*":"|t*:2|e*:2|",b:"|b:2|e*:2|"}},Re.Formula.ParseFormulaIntoTokens=function(e){for(var t,o,i,n,r,s,a,l=Re.Formula,c=Re.Constants,u=l.ParseState,d=l.TokenType,h=l.CharClass,p=l.CharClassTable,f=l.UpperCaseTable,m=l.ParsePushToken,g=/^\$?[A-Z]{1,2}\$?[1-9]\d*$/i,v=[],b="",y=0,C=!1,w=0;w<=e.length;w++)o=w<e.length?p[t=e.charAt(w)]:(t="",h.eof),y==u.num&&(o==h.num?b+=t:o!=h.numstart||C?y="E"==t||"e"==t?(b+=t,C=!1,u.numexp1):(m(v,b,d.num,0),C=!1,0):(C=!0,b+=t)),y==u.numexp1&&(o==u.num?y=u.numexp2:"+"!=t&&"-"!=t||"E"!=f[b.charAt(b.length-1)]?"E"!=t&&"e"!=t&&(m(v,c.s_parseerrexponent,d.error,0),y=0):b+=t),y==u.numexp2&&(o==h.num?b+=t:(m(v,b,d.num,0),y=0)),y==u.alpha&&(o==h.num?y=u.coord:o==h.alpha||"."==t?b+=t:y=o==h.incoord?u.coord:(o==h.op||o==h.numstart||o==h.space||o==h.eof?m(v,b.toUpperCase(),d.name,0):m(v,c.s_parseerrchar,d.error,0),0)),y==u.coord&&(o==h.num||o==h.incoord?b+=t:y=o==h.alpha?u.alphanumeric:(o==h.op||o==h.numstart||o==h.eof||o==h.space?(s=g.test(b)?d.coord:d.name,m(v,b.toUpperCase(),s,0)):m(v,c.s_parseerrchar,d.error,0),0)),y==u.alphanumeric&&(o==h.num||o==h.alpha?b+=t:y=(o==h.op||o==h.numstart||o==h.space||o==h.eof?m(v,b.toUpperCase(),d.name,0):m(v,c.s_parseerrchar,d.error,0),0)),y==u.string?o==h.quote?y=u.stringquote:o==h.eof?(m(v,c.s_parseerrstring,d.error,0),y=0):b+=t:y==u.stringquote?y=o==h.quote?(b+=t,u.string):(m(v,b,d.string,0),0):y==u.specialvalue&&("!"==b.charAt(b.length-1)?(m(v,b,d.name,0),y=0):o==h.eof?(m(v,c.s_parseerrspecialvalue,d.error,0),y=0):b+=t),0==y&&(o==h.num?(b=t,y=u.num):o==h.numstart?(b=t,C=!0,y=u.num):o==h.alpha||o==h.incoord?(b=t,y=u.alpha):o==h.specialstart?(b=t,y=u.specialvalue):o==h.op?(b=t,0<v.length?(n=(i=v[v.length-1]).type,r=i.text,n!=h.op||"<="!=(a=r+b)&&">="!=a&&"<>"!=a||(b=r+b,v.pop(),r=0<v.length?(n=(i=v[v.length-1]).type,i.text):(n=h.eof,"EOF"))):(n=h.eof,r="EOF"),s=d.op,0==v.length||n==h.op&&")"!=r&&"%"!=r?"-"==b?t=b="M":"+"==b?t=b="P":")"==b&&"("==r||"("!=b&&(s=d.error,b=c.s_parseerrtwoops):1<b.length&&(">="==b?t=b="G":"<="==b?t=b="L":"<>"==b?t=b="N":(s=d.error,b=c.s_parseerrtwoops)),m(v,b,s,t),y=0):o==h.quote?(b="",y=u.string):o!=h.space&&o!=h.eof&&m(v,c.s_parseerrchar,d.error,0));return v},Re.Formula.ParsePushToken=function(e,t,o,i){e.push({text:t,type:o,opcode:i})},Re.Formula.evaluate_parsed_formula=function(e,t,o){var i=Re.Formula,n=(i.TokenType,i.ConvertInfixToPolish(e));return i.EvaluatePolish(e,n,t,o)},Re.Formula.ConvertInfixToPolish=function(e){for(var t,o,i,n,r,s=Re.Formula,a=Re.Constants,l=s.TokenType,c=s.TokenPrecedence,u=[],d=[],h="",p=0;p<e.length;p++)if(o=(t=e[p]).type,i=t.text,o==l.num||o==l.coord||o==l.string)u.push(p);else if(o==l.name)d.push(p),u.push(-1);else if(o!=l.space)if(","==i){for(;d.length&&"("!=e[d[d.length-1]].text;)u.push(d.pop());if(0==d.length){h=a.s_parseerrmissingopenparen;break}}else if("("==i)d.push(p);else if(")"==i){for(;d.length&&"("!=e[d[d.length-1]].text;)u.push(d.pop());if(0==d.length){h=a.s_parseerrcloseparennoopen;break}d.pop(),d.length&&e[d[d.length-1]].type==l.name&&u.push(d.pop())}else{if(o!=l.op){if(o==l.error){h=i;break}h="Internal error while processing parsed formula. ";break}for(d.length&&e[d[d.length-1]].type==l.name&&u.push(d.pop());d.length&&e[d[d.length-1]].type==l.op&&"("!=e[d[d.length-1]].text&&(n=c[t.opcode],r=c[e[d[d.length-1]].opcode],!(0<=n&&n<r))&&!(n<0&&(n=-n)<=(r=r<0?-r:r));)u.push(d.pop());d.push(p)}for(;0<d.length;){if("("==e[d[d.length-1]].text){h=a.s_parseerrmissingcloseparen;break}u.push(d.pop())}return h||u},void 0===Re.debug_log&&(Re.debug_log=[]),Re.DebugLog=function(e){},Re.Formula.EvaluatePolish=function(e,t,o,i){function n(e,t){F.push({type:e,value:t})}var r,s,a,l,c,u,d,h,p,f,m=Re.Formula,g=Re.Constants,v=m.TokenType,b=m.LookupResultType,y=m.TypeLookupTable,C=m.OperandAsNumber,w=m.OperandAsText,x=m.OperandValueAndType,_=m.OperandsAsCoordOnSheet,S=Re.format_number_for_display||function(e,t,o){return e+""},k="",T={value:"",type:"e#VALUE!",error:g.s_parseerrmissingoperand},F=[];if(!(e.length&&t instanceof Array))return{value:"",type:"e#VALUE!",error:"string"==typeof t?t:""};for(var E=[],D=0;D<t.length;D++)if(-1==(u=t[D]))n("start",0);else if(r=(u=e[u]).type,s=u.text,E.push(u),r==v.num)n("n",+s);else if(r==v.coord)n("coord",s);else if(r==v.string)n("t",s);else if(r==v.op){if(F.length<=0)return T;if("M"==s)n(b((a=C(o,F)).type,a.type,y.unaryminus),-a.value);else if("P"==s)n(b((a=C(o,F)).type,a.type,y.unaryplus),a.value);else if("%"==s)n(b((a=C(o,F)).type,a.type,y.unarypercent),.01*a.value);else if("&"==s){if(F.length<=1)return T;l=w(o,F),n(b((a=w(o,F)).type,a.type,y.concat),a.value+l.value)}else if(":"==s){if(F.length<=1)return T;(a=m.OperandsAsRangeOnSheet(o,F)).error&&(k=k||a.error),n(a.type,a.value)}else if("!"==s){if(F.length<=1)return T;(a=_(o,F)).error&&(k=k||a.error),n(a.type,a.value)}else if("<"==s||"L"==s||"="==s||"G"==s||">"==s||"N"==s){if(F.length<=1){k=g.s_parseerrmissingoperand;break}l=x(o,F),"n"==(a=x(o,F)).type.charAt(0)&&"n"==l.type.charAt(0)?(h=0,"<"==s?h=a.value<l.value?1:0:"L"==s?h=a.value<=l.value?1:0:"="==s?h=a.value==l.value?1:0:"G"==s?h=a.value>=l.value?1:0:">"==s?h=a.value>l.value?1:0:"N"==s&&(h=a.value!=l.value?1:0),n("nl",h)):"e"==a.type.charAt(0)?n(a.type,0):"e"==l.type.charAt(0)?n(l.type,0):(c=a.type.charAt(0),u=l.type.charAt(0),"n"==c?a.value=S(a.value,"n",""):"b"==c&&(a.value=""),"n"==u?l.value=S(l.value,"n",""):"b"==u&&(l.value=""),h=0,a.value=a.value.toLowerCase(),l.value=l.value.toLowerCase(),"<"==s?h=a.value<l.value?1:0:"L"==s?h=a.value<=l.value?1:0:"="==s?h=a.value==l.value?1:0:"G"==s?h=a.value>=l.value?1:0:">"==s?h=a.value>l.value?1:0:"N"==s&&(h=a.value!=l.value?1:0),n("nl",h))}else{if(F.length<=1){k=g.s_parseerrmissingoperand;break}"+"==s?(l=x(o,F),n(b((a=x(o,F)).type,l.type,y.plus),a.value+l.value)):(l=C(o,F),a=C(o,F)),"-"==s?n(b(a.type,l.type,y.plus),a.value-l.value):"*"==s?n(b(a.type,l.type,y.plus),a.value*l.value):"/"==s?0!=l.value?n("n",a.value/l.value):n("e#DIV/0!",0):"^"==s&&(a.value=Math.pow(a.value,l.value),a.type="n",isNaN(a.value)&&(a.value=0,a.type="e#NUM!"),n(a.type,a.value))}}else{if(r!=v.name){k=g.s_InternalError+"Unknown token "+r+" ("+s+"). ";break}if(k=m.CalculateFunction(s,F,o,e.coord))break}return value=F[0]?F[0].value:"","name"==(c=F[0]?F[0].type:"")&&(a=Re.Formula.LookupName(o,value),value=a.value,c=a.type,k=k||a.error),"coord"==c&&(a=x(o,F),value=a.value,"b"==(c=a.type)&&(c="n",value=0)),1<F.length&&!k&&(k+=g.s_parseerrerrorinformula),"e"==(d=c).charAt(0)?k=k||c.substring(1)||g.s_calcerrerrorvalueinformula:"range"==c&&(f=(p=value.match(/^(.*)\|(.*)\|/))[1].indexOf("!"),p[1]=0<=f?p[1].substring(f+1)+"!"+p[1].substring(0,f).toUpperCase():p[1].toUpperCase(),value=p[1]+":"+p[2].toUpperCase(),i||(k=g.s_formularangeresult+" "+value)),k&&"e"!=d.charAt(0)&&(value=k,d="e"),"n"!=d.charAt(0)||!isNaN(value)&&isFinite(value)||(value=0,d="e#NUM!",k=isNaN(value)?g.s_calcerrnumericnan:g.s_calcerrnumericoverflow),{value:value,type:d,error:k}},Re.Formula.LookupResultType=function(e,t,o){var i,n,r=o[e];return(r=r||o[e.charAt(0)+"*"])?0<=(o=r.indexOf("|"+t+":"))?(i=r.indexOf("|",o+1))<0?"e#VALUE! (internal error, incorrect LookupResultType "+r+")":"1"==(n=r.substring(o+t.length+2,i))?e:"2"==n?t:n:0<=(o=r.indexOf("|"+t.charAt(0)+"*:"))?(i=r.indexOf("|",o+1))<0?"e#VALUE! (internal error, incorrect LookupResultType "+r+")":"1"==(n=r.substring(o+4,i))?e:"2"==n?t:n:"e#VALUE!":"e#VALUE! (internal error, missing LookupResultType "+e.charAt(0)+"*)"},Re.Formula.TopOfStackValueAndType=function(e,t){var o=Re.Formula,i={type:"",value:""},n=t.length;return n?(i.value=t[n-1].value,i.type=t[n-1].type,t.pop(),"name"==i.type?o.LookupName(e,i.value):i):(i.error=Re.Constants.s_InternalError+"no operand on stack",i)},Re.Formula.OperandAsNumber=function(e,t){var e=Re.Formula.OperandValueAndType(e,t),t=e.type.charAt(0);return"n"==t?e.value=+e.value:"b"==t?(e.type="n",e.value=0):"e"==t?e.value=0:("n"==(t=Re.DetermineValueType?Re.DetermineValueType(e.value):{value:+e.value,type:"n"}).type.charAt(0)?e.value=+t.value:e.value=0,e.type=t.type),e},Re.Formula.OperandAsText=function(e,t){var e=Re.Formula.OperandValueAndType(e,t),o=e.type.charAt(0);return"t"!=o&&("n"==o?(e.value=Re.format_number_for_display?Re.format_number_for_display(e.value,e.type,""):e.value=e.value+"",e.type="t"):"b"==o?(e.value="",e.type="t"):"e"==o?e.value="":(t.value=e.value+"",t.type="t")),e},Re.Formula.OperandValueAndType=function(e,t){var o,i=Re.Formula,n={type:"",value:""},r=t.length;if(!r)return n.error=Re.Constants.s_InternalError+"no operand on stack",n;if(n.value=t[r-1].value,n.type=t[r-1].type,t.pop(),"coord"==(n="range"==(n="name"==n.type?i.LookupName(e,n.value):n).type?i.StepThroughRangeDown(t,n.value):n).type){if(r=e,-1!=(t=n.value.indexOf("!"))){if(null==(r=i.FindInSheetCache(n.value.substring(t+1))))return n.type="e#REF!",n.error=Re.Constants.s_sheetunavailable+" "+n.value.substring(t+1),n.value=0,n;n.value=n.value.substring(0,t)}r?(e=r.cells[Re.Formula.PlainCoord(n.value)])?(o=e.valuetype,n.value=e.datavalue):o="b":(o="e#N/A",n.value=0),n.type=o||"b","b"==n.type&&(n.value=0)}return n},Re.Formula.OperandAsCoord=function(e,t){return Re.Formula.OperandAsType(e,t,"coord")},Re.Formula.OperandAsRange=function(e,t){return Re.Formula.OperandAsType(e,t,"range")},Re.Formula.OperandAsType=function(e,t,o){Re.Formula;var i={type:"",value:""},n=t.length;return i.value=t[n-1].value,i.type=t[n-1].type,t.pop(),(i="name"==i.type?Re.Formula.LookupName(e,i.value):i).type!=o&&(i.value=Re.Constants.s_calcerrcellrefmissing,i.type="e#REF!"),i},Re.Formula.OperandsAsCoordOnSheet=function(e,t){var o={},i={},n=Re.Formula,r=t.length;return o.value=t[r-1].value,o.type=t[r-1].type,t.pop(),r=n.OperandAsSheetName(e,t),null==(e=n.FindInSheetCache(r.value))?(i.type="e#REF!",i.value=0,i.error=Re.Constants.s_sheetunavailable+" "+r.value):("name"==o.type&&(o=n.LookupName(e,o.value)),i.type=o.type,"coord"==o.type?i.value=o.value+"!"+r.value:"range"==o.type?(t=o.value.indexOf("|"),n=o.value.indexOf("|",t+1),i.value=o.value.substring(0,t)+"!"+r.value+"|"+o.value.substring(t+1,n)+"|"):"e"==o.type.charAt(0)?i.value=o.value:(i.error=Re.Constants.s_calcerrcellrefmissing,i.type="e#REF!",i.value=0)),i},Re.Formula.OperandsAsRangeOnSheet=function(e,t){var o,i={},n=Re.Formula,r=Re.Constants,s=t.length;return i.value=t[s-1].value,i.type=t[s-1].type,t.pop(),"coord"!=(s=n.OperandAsCoord(e,t)).type?{value:0,type:"e#REF!"}:(t=e,-1!=(e=s.value.indexOf("!"))&&((o=s.value.indexOf("|",e+1))<0&&(o=s.value.length),null==(t=n.FindInSheetCache(s.value.substring(e+1,o))))?{value:0,type:"e#REF!",errortext:r.s_sheetunavailable+" "+s.value.substring(e+1,o)}:"coord"==(i="name"==i.type?n.LookupName(t,i.value,"end"):i).type?{value:s.value+"|"+i.value+"|",type:"range"}:{value:r.s_calcerrcellrefmissing,type:"e#REF!"})},Re.Formula.OperandAsSheetName=function(e,t){Re.Formula;var o={type:"",value:""},i=t.length;if(o.value=t[i-1].value,o.type=t[i-1].type,t.pop(),"name"==o.type){if(!(i=Re.Formula.LookupName(e,o.value)).value)return o;o.value=i.value,o.type=i.type}return"coord"==o.type&&((t=e.cells[Re.Formula.PlainCoord(o.value)])?(o.value=t.datavalue,o.type=t.valuetype):(o.value="",o.type="b")),"t"!=o.type.charAt(0)&&(o.value="",o.error=Re.Constants.s_calcerrsheetnamemissing),o},Re.Formula.LookupName=function(e,t,o){var i,n=e.names,r={},s=!1;if(n[t.toUpperCase()]){if(r.value=n[t.toUpperCase()].definition,"="==r.value.charAt(0)){if(e.checknamecirc){if(e.checknamecirc[t])return r.type="e#NAME?",r.error=Re.Constants.s_circularnameref+' "'+t+'".',r}else e.checknamecirc={},s=!0;if(e.checknamecirc[t]=!0,n=Re.Formula.ParseFormulaIntoTokens(r.value.substring(1)),r=Re.Formula.evaluate_parsed_formula(n,e,1),delete e.checknamecirc[t],s&&delete e.checknamecirc,"range"!=r.type)return r}return-1!=(i=r.value.indexOf(":"))?(r.type="range",r.value=r.value.substring(0,i)+"|"+r.value.substring(i+1)+"|"):r.type="coord",r.value=r.value.toUpperCase(),r}return(n=Re.Formula.SpecialConstants[t.toUpperCase()])?(i=n.indexOf(","),r.value=+n.substring(0,i),r.type=n.substring(i+1)):/^[a-zA-Z][a-zA-Z]?$/.test(t)?(r.type="coord",r.value=t.toUpperCase()+(o?e.attribs.lastrow:1)):(r.value="",r.type="e#NAME?",r.error=Re.Constants.s_calcerrunknownname+' "'+t+'"'),r},Re.Formula.StepThroughRangeDown=function(e,t){var o,i,n,r,s,a=Re.Formula,l=t.indexOf("|"),c=t.indexOf("|",l+1),u=t.substring(0,l),d=t.substring(l+1,c),h=+t.substring(c+1);for(-1!=(l=u.indexOf("!"))?(o=u.substring(l),u=u.substring(0,l)):o="",-1!=(l=d.indexOf("!"))&&(d=d.substring(0,l)),s=0,r=(i=a.OrderRangeParts(u,d)).r1;r<=i.r2;r++)for(n=i.c1;n<=i.c2;n++)if(h<++s)return r==i.r2&&n==i.c2||a.PushOperand(e,"range",u+o+"|"+d+"|"+s),{value:Re.crToCoord(n,r)+o,type:"coord"}},Re.Formula.DecodeRangeParts=function(e,t){var o,i=Re.Formula,n=t.indexOf("|"),r=t.indexOf("|",n+1),s=t.substring(0,n),t=t.substring(n+1,r);return-1!=(n=s.indexOf("!"))?(o=s.substring(n+1),s=s.substring(0,n)):o="",-1!=(n=t.indexOf("!"))&&(t=t.substring(0,n)),r=e,o&&null==(r=i.FindInSheetCache(o))?null:{sheetdata:r,sheetname:o,col1num:(n=i.OrderRangeParts(s,t)).c1,ncols:n.c2-n.c1+1,row1num:n.r1,nrows:n.r2-n.r1+1}},Re.Formula.FunctionList||(Re.Formula.FunctionList={}),Re.Formula.FunctionClasses=null,Re.Formula.FunctionArgDefs={},Re.Formula.StoreIoEventFormula=function(e,t,o,i,n){var r,s,a=[];if(Re.Formula.Clone(a,o),a.reverse(),0!=a.length){if(void 0===i.ioEventTree&&(i.ioEventTree={}),void 0===i.ioParameterList&&(i.ioParameterList={}),void 0===i.ioTimeTriggerList&&(i.ioTimeTriggerList={}),void 0===i.radioGroupList&&(i.radioGroupList={}),void 0===i.ioParameterList[t]&&(i.ioParameterList[t]={}),i.ioParameterList[t]=a,i.ioParameterList[t].function_name=e,"TimeTrigger"==n){function l(e,t,o){o=o.cells[t];void 0!==o&&"n"==o.valuetype.charAt(0)&&e.push(o.datavalue)}var o=Re.Formula.PlainCoord(a[0].value),c=[];if("range"==a[0].type)for(var u=Re.Formula.DecodeRangeParts(i,o),d=0;d<u.ncols;d++)for(var h=0;h<u.nrows;h++)l(c,Re.crToCoord(u.col1num+d,u.row1num+h),i);if("coord"==a[0].type&&l(c,o,i),"n"==a[0].type.charAt(0)&&c.push(a[0].value),void 0===i.ioTimeTriggerList[t]||0==Re.Formula.ArrayValuesEqual(i.ioTimeTriggerList[t],c)){i.ioTimeTriggerList[t]=c;for(var p=(new Date).getTimezoneOffset(),f=[],m=0;m<c.length;++m)f[m]=Math.floor(24*(c[m]-25569)*60+p);i.ScheduleSheetCommands("settimetrigger "+t+" "+f.toString())}}if("EventTree"==n&&("coord"==a[0].type||"range"==a[0].type)){function g(e,t,o){void 0===e[t]&&(e[t]={}),e[t][o]=o}o=a[0].value.replace(/\$/g,"");if("range"==a[0].type)for(u=Re.Formula.DecodeRangeParts(i,o),d=0;d<u.ncols;d++)for(h=0;h<u.nrows;h++){var v=Re.crToCoord(u.col1num+d,u.row1num+h);g(i.ioEventTree,v,t)}"coord"==a[0].type&&g(i.ioEventTree,o,t)}"Input"!=n||null!=(o=(null!=Re.CurrentSpreadsheetControlObject?Re.CurrentSpreadsheetControlObject:Re.CurrentSpreadsheetViewerObject).formDataViewer)&&1==o.loaded&&(null==o.formFields&&Re.Formula.LoadFormFields(),n=(e+t).toLowerCase(),(r=null)==o.formFields[n]&&(s=o.formFields[n]=2+o.formFieldsLength++,r="set "+Re.crToCoord(s,1)+" text t "+Re.encodeForSave(e.toLowerCase()+t)),"t"!=a[0].type.charAt(0)&&"n"!=a[0].type.charAt(0)||(s=Re.crToCoord(o.formFields[n],2),null!=o.sheet.cells[s]&&o.sheet.cells[s].datavalue==a[0].value||(e="set "+s+" text t "+Re.encodeForSave(a[0].value),r=null!=r?r+"\n"+e:e)),null!=r&&o.sheet.ScheduleSheetCommands(r,!1))}},Re.Formula.ArrayValuesEqual=function(e,t){var o=e.length;if(o!=t.length)return!1;for(;o--;)if(e[o]!==t[o])return!1;return!0},Re.Formula.Clone=function(e,t){for(var o in t)"object"==typeof t[o]&&null!==t[o]&&e[o]?Re.Formula.Clone(e[o],t[o]):e[o]=t[o]},Re.Formula.LoadFormFields=function(){for(var e=(null!=Re.CurrentSpreadsheetControlObject?Re.CurrentSpreadsheetControlObject:Re.CurrentSpreadsheetViewerObject).formDataViewer,t=(e.formFields={},null==e.sheet.cells.A1&&e.sheet.ScheduleSheetCommands("set A1 text t "+Re.encodeForSave("FieldName:"),!1),null==e.sheet.cells.A2&&e.sheet.ScheduleSheetCommands("set A2 text t "+Re.encodeForSave("Pending:"),!1),2);;){var o=Re.crToCoord(t,1),o=e.sheet.cells[o];if(!o)break;e.formFields[o.datavalue.toLowerCase()]=t,t++}e.formFieldsLength=t-2},Re.Formula.CalculateFunction=function(e,t,o,i){var n,r,s,a=Re.Formula,l="",c=a.FunctionList[e];if(c){if(r=c[0],s=c[1],a.CopyFunctionArgs(t,n=[]),c[6]&&""!=c[6]&&(Re.DebugLog("action:"+e),a.StoreIoEventFormula(e,i,n,o,c[6])),100!=s)if(s<0){if(n.length<-s)return l=a.FunctionArgsError(e,t)}else if(n.length!=s)return l=a.FunctionArgsError(e,t);l=r(e,t,n,o,i)}else c=e,t.length&&"start"==t[t.length-1].type?(t.pop(),a.PushOperand(t,"name",c)):l=Re.Constants.s_sheetfuncunknownfunction+" "+c+". ";return l},Re.Formula.PushOperand=function(e,t,o){e.push({type:t,value:o})},Re.Formula.CopyFunctionArgs=function(e,t){for(Re.Formula;0<e.length&&"start"!=e[e.length-1].type;)t.push(e.pop());e.pop()},Re.Formula.FunctionArgsError=function(e,t){e=Re.Constants.s_calcerrincorrectargstofunction+" "+e+". ";return Re.Formula.PushOperand(t,"e#VALUE!",e),e},Re.Formula.FunctionSpecificError=function(e,t,o,i){return Re.Formula.PushOperand(t,o,i),i},Re.Formula.CheckForErrorValue=function(e,t){return"e"==t.type.charAt(0)&&(e.push(t),!0)},Re.Formula.FillFunctionInfo=function(){var e,t,o,i,n,r=Re.Formula,s=Re.Constants;if(!r.FunctionClasses){for(e in r.FunctionList)(t=r.FunctionList[e])[2]&&(r.FunctionArgDefs[t[2]]=s["s_farg_"+t[2]]||""),t[3]||s["s_fdef_"+e]&&(r.FunctionList[e][3]=s["s_fdef_"+e]);for(r.FunctionClasses={},n=0;n<s.function_classlist.length;n++)i=s.function_classlist[n],r.FunctionClasses[i]={name:s["s_fclass_"+i],items:[]};for(e in r.FunctionList)for((o=(t=r.FunctionList[e])[4]?t[4].split(","):[]).push("all"),n=0;n<o.length;n++)i=o[n],r.FunctionClasses[i].items.push(e);for(i in r.FunctionClasses)r.FunctionClasses[i].items.sort()}},Re.Formula.FunctionArgString=function(e){var t,o,i,n=Re.Formula,e=n.FunctionList[e],r=e[2];if(!r){if(0!=(t=e[1])){if(0<t){for(i="v1",o=2;o<=t;o++)i+=", v"+o;return i}if(t<0){for(i="v1",o=2;o<-t;o++)i+=", v"+o;return i+", ..."}return"nargs: "+t}r=" "}return i=n.FunctionArgDefs[r]||r},Re.Formula.SeriesFunctions=function(e,o,t,i){function n(e,t){o.push({type:e,value:t})}for(var r,s,a,l,c,u,d,h,p=Re.Formula,f=p.OperandValueAndType,m=p.LookupResultType,g=p.TypeLookupTable.plus,v="",b=0,y="",C=0,w=0,x=0,_=1;0<t.length;)"n"==(s=(r=f(i,t)).type.charAt(0))&&(C+=1),"b"!=s&&(w+=1),"b"==s&&(x+=1),"e"!=s&&"b"!=s&&(v+=r.value),"n"==s?(b+=c=+r.value,_*=c,a=null==a||a<c?c:a,l=null==l||c<l?c:l,1==C?(d=c,h=0):(h=u=h+(c-d)*(c-(c=d+(c-d)/C)),d=c),y=m(r.type,y||r.type,g)):"e"==s&&"e"!=y.charAt(0)&&(y=r.type);switch(y=y||"n",e){case"CONCAT":case"CONCATENATE":n("t",v);break;case"SUM":n(y,b);break;case"PRODUCT":n(y,_);break;case"MIN":n(y,l||0);break;case"MAX":n(y,a||0);break;case"COUNT":n("n",C);break;case"COUNTA":n("n",w);break;case"COUNTBLANK":n("n",x);break;case"AVERAGE":0<C?n(y,b/C):n("e#DIV/0!",0);break;case"STDEV":1<C?n(y,Math.sqrt(u/(C-1))):n("e#DIV/0!",0);break;case"STDEVP":1<C?n(y,Math.sqrt(u/C)):n("e#DIV/0!",0);break;case"VAR":1<C?n(y,u/(C-1)):n("e#DIV/0!",0);break;case"VARP":1<C?n(y,u/C):n("e#DIV/0!",0)}return null},Re.Formula.FunctionList.AVERAGE=[Re.Formula.SeriesFunctions,-1,"vn",null,"stat"],Re.Formula.FunctionList.CONCAT=[Re.Formula.SeriesFunctions,-1,"vn",null,"text"],Re.Formula.FunctionList.CONCATENATE=[Re.Formula.SeriesFunctions,-1,"vn",null,"text"],Re.Formula.FunctionList.COUNT=[Re.Formula.SeriesFunctions,-1,"vn",null,"stat"],Re.Formula.FunctionList.COUNTA=[Re.Formula.SeriesFunctions,-1,"vn",null,"stat"],Re.Formula.FunctionList.COUNTBLANK=[Re.Formula.SeriesFunctions,-1,"vn",null,"stat"],Re.Formula.FunctionList.MAX=[Re.Formula.SeriesFunctions,-1,"vn",null,"stat"],Re.Formula.FunctionList.MIN=[Re.Formula.SeriesFunctions,-1,"vn",null,"stat"],Re.Formula.FunctionList.PRODUCT=[Re.Formula.SeriesFunctions,-1,"vn",null,"stat"],Re.Formula.FunctionList.STDEV=[Re.Formula.SeriesFunctions,-1,"vn",null,"stat"],Re.Formula.FunctionList.STDEVP=[Re.Formula.SeriesFunctions,-1,"vn",null,"stat"],Re.Formula.FunctionList.SUM=[Re.Formula.SeriesFunctions,-1,"vn",null,"stat"],Re.Formula.FunctionList.VAR=[Re.Formula.SeriesFunctions,-1,"vn",null,"stat"],Re.Formula.FunctionList.VARP=[Re.Formula.SeriesFunctions,-1,"vn",null,"stat"],Re.Formula.SumProductFunction=function(e,o,t,n){function r(e,t){o.push({type:e,value:t})}for(var s,a=[],l=0,c=Re.Formula,u=0,d=0;0<t.length;){if("range"!=(s=c.TopOfStackValueAndType(n,t)).type)return void r("e#VALUE!",0);if(rangeinfo=c.DecodeRangeParts(n,s.value),u){if(u!=rangeinfo.ncols)return void r("e#VALUE!",0)}else u=rangeinfo.ncols;if(d){if(d!=rangeinfo.nrows)return void r("e#VALUE!",0)}else d=rangeinfo.nrows;for(i=0;i<rangeinfo.ncols;i++)for(j=0;j<rangeinfo.nrows;j++)k=i*rangeinfo.nrows+j,cellcr=Re.crToCoord(rangeinfo.col1num+i,rangeinfo.row1num+j),cell=rangeinfo.sheetdata.GetAssuredCell(cellcr),value="n"==cell.valuetype?cell.datavalue:0,a[k]=(void 0!==a[k]?a[k]:1)*value}for(i=0;i<a.length;i++)l+=a[i];r("n",l)},Re.Formula.FunctionList.SUMPRODUCT=[Re.Formula.SumProductFunction,-1,"rangen","","stat"],Re.Formula.DSeriesFunctions=function(e,o,t,i){function n(e,t){o.push({type:e,value:t})}var r,s,a,l,c,u,d,h,p,f,m,g,v,b,y,C,w,x,_=Re.Formula,S=(_.OperandValueAndType,_.LookupResultType),k=_.TypeLookupTable.plus,T={},F=0,E="",D=0,P=0,A=0,I=1,M=_.TopOfStackValueAndType(i,t),R=_.OperandValueAndType(i,t),t=_.TopOfStackValueAndType(i,t);if("range"!=M.type||"range"!=t.type)return _.FunctionArgsError(e,o);if(r=_.DecodeRangeParts(i,M.value),s=_.DecodeRangeParts(i,t.value),(M=_.FieldToColnum(r.sheetdata,r.col1num,r.ncols,r.row1num,R.value,R.type))<=0)n("e#VALUE!",0);else{for(a=r.col1num+M-1,h=[],l=0;l<s.ncols;l++){if(d=s.sheetdata.GetAssuredCell(Re.crToCoord(s.col1num+l,s.row1num)),(criterianum=_.FieldToColnum(r.sheetdata,r.col1num,r.ncols,r.row1num,d.datavalue,d.valuetype))<=0)return void n("e#VALUE!",0);h.push(r.col1num+criterianum-1)}for(l=1;l<r.nrows;l++){p=!1;e:for(c=1;c<s.nrows;c++){for(u=0;u<s.ncols;u++)if(f=Re.crToCoord(s.col1num+u,s.row1num+c),("string"!=typeof(f=(d=s.sheetdata.GetAssuredCell(f)).datavalue)||0!=f.length)&&(m=h[u],m=Re.crToCoord(m,r.row1num+l),d=r.sheetdata.GetAssuredCell(m),!_.TestCriteria(d.datavalue,d.valuetype||"b",f)))continue e;p=!0;break}p&&(g=Re.crToCoord(a,r.row1num+l),d=r.sheetdata.GetAssuredCell(g),T.value=d.datavalue,T.type=d.valuetype,A+=1,"n"==(g=T.type.charAt(0))&&(D+=1),"b"!=g&&(P+=1),"b"==g&&0,"n"==g?(F+=v1=+T.value,I*=v1,v=null==v||v1>v?v1:v,b=null==b||v1<b?v1:b,1==D?(w=v1,x=0):(y=w+(v1-w)/D,x=C=x+(v1-w)*(v1-y),w=y),E=S(T.type,E||T.type,k)):"e"==g&&"e"!=E.charAt(0)&&(E=T.type))}switch(E=E||"n",e){case"DSUM":n(E,F);break;case"DPRODUCT":n(E,I);break;case"DMIN":n(E,b||0);break;case"DMAX":n(E,v||0);break;case"DCOUNT":n("n",D);break;case"DCOUNTA":n("n",P);break;case"DAVERAGE":0<D?n(E,F/D):n("e#DIV/0!",0);break;case"DSTDEV":1<D?n(E,Math.sqrt(C/(D-1))):n("e#DIV/0!",0);break;case"DSTDEVP":1<D?n(E,Math.sqrt(C/D)):n("e#DIV/0!",0);break;case"DVAR":1<D?n(E,C/(D-1)):n("e#DIV/0!",0);break;case"DVARP":1<D?n(E,C/D):n("e#DIV/0!",0);break;case"DGET":1==A?n(T.type,T.value):n(0==A?"e#VALUE!":"e#NUM!",0)}}},Re.Formula.FunctionList.DAVERAGE=[Re.Formula.DSeriesFunctions,3,"dfunc","","stat"],Re.Formula.FunctionList.DCOUNT=[Re.Formula.DSeriesFunctions,3,"dfunc","","stat"],Re.Formula.FunctionList.DCOUNTA=[Re.Formula.DSeriesFunctions,3,"dfunc","","stat"],Re.Formula.FunctionList.DGET=[Re.Formula.DSeriesFunctions,3,"dfunc","","stat"],Re.Formula.FunctionList.DMAX=[Re.Formula.DSeriesFunctions,3,"dfunc","","stat"],Re.Formula.FunctionList.DMIN=[Re.Formula.DSeriesFunctions,3,"dfunc","","stat"],Re.Formula.FunctionList.DPRODUCT=[Re.Formula.DSeriesFunctions,3,"dfunc","","stat"],Re.Formula.FunctionList.DSTDEV=[Re.Formula.DSeriesFunctions,3,"dfunc","","stat"],Re.Formula.FunctionList.DSTDEVP=[Re.Formula.DSeriesFunctions,3,"dfunc","","stat"],Re.Formula.FunctionList.DSUM=[Re.Formula.DSeriesFunctions,3,"dfunc","","stat"],Re.Formula.FunctionList.DVAR=[Re.Formula.DSeriesFunctions,3,"dfunc","","stat"],Re.Formula.FunctionList.DVARP=[Re.Formula.DSeriesFunctions,3,"dfunc","","stat"],Re.Formula.FieldToColnum=function(e,t,o,i,n,r){var s;if("n"==r.charAt(0))return(s=+n)<=0||o<s?0:Math.floor(s);if("t"!=r.charAt(0))return 0;for(n=n?n.toLowerCase():"",s=0;s<o;s++)if((e.GetAssuredCell(Re.crToCoord(t+s,i)).datavalue+"").toLowerCase()==n)return s+1;return 0},Re.Formula.LookupFunctions=function(e,o,t,i){function n(e,t){o.push({type:e,value:t})}var r,s,a,l,c,u,d,h,p,f,m,g,v,b,y,C=Re.Formula,w=C.OperandValueAndType;C.LookupResultType,C.TypeLookupTable.plus;if("string"==typeof(y=w(i,t)).value&&(y.value=y.value.toLowerCase()),w=C.TopOfStackValueAndType(i,t),r=1,"MATCH"==e){if(t.length){if("n"!=(r=C.OperandAsNumber(i,t)).type.charAt(0))return void n("e#VALUE!",0);if(t.length)return C.FunctionArgsError(e,o),0;r=+r.value}}else{if("n"!=(s=C.OperandAsNumber(i,t)).type.charAt(0))return void n("e#VALUE!",0);if(s=Math.floor(s.value),t.length){if("n"!=(r=C.OperandAsNumber(i,t)).type.charAt(0))return void n("e#VALUE!",0);if(t.length)return C.FunctionArgsError(e,o),0;r=r.value?1:0}}if(y.type=y.type.charAt(0),"n"==y.type&&(y.value=+y.value),"range"!=w.type)return C.FunctionArgsError(e,o),0;if(a=C.DecodeRangeParts(i,w.value,w.type)){if(d=u=c=l=0,"HLOOKUP"==e){if(u=1,s>a.nrows)return void n("e#REF!",0)}else if("VLOOKUP"==e){if(d=1,s>a.ncols)return void n("e#REF!",0)}else{if("MATCH"!=e)return C.FunctionArgsError(e,o),0;if(1<a.ncols){if(1<a.nrows)return void n("e#N/A",0);u=1}else d=1}if(s<1&&"MATCH"!=e)return n("e#VALUE!",0),0;for(;;){if(b=Re.crToCoord(a.col1num+l,a.row1num+c),g=(m=a.sheetdata.GetAssuredCell(b)).datavalue,"n"==(v=m.valuetype?m.valuetype.charAt(0):"b")&&(g=+g),r){if("n"==y.type&&"n"==v){if(y.value==g)break;if(0<r&&y.value>g||r<0&&y.value<g)h=1,p=l,f=c;else if(h){h=2;break}}else if("t"==y.type&&"t"==v){if(g="string"==typeof g?g.toLowerCase():"",y.value==g)break;if(0<r&&y.value>g||r<0&&y.value<g)h=1,p=l,f=c;else if(h){h=2;break}}}else if("n"==y.type&&"n"==v){if(y.value==g)break}else if("t"==y.type&&"t"==v&&(g="string"==typeof g?g.toLowerCase():"",y.value==g))break;if(l+=u,(c+=d)>=a.nrows||l>=a.ncols){if(h){h=2;break}return void n("e#N/A",0)}}2==h&&(c=f,l=p),n(v="MATCH"==e?(g=l+c+1,"n"):(b=Re.crToCoord(a.col1num+l+("VLOOKUP"==e?s-1:0),a.row1num+c+("HLOOKUP"==e?s-1:0)),g=(m=a.sheetdata.GetAssuredCell(b)).datavalue,m.valuetype),g)}else n("e#REF!",0)},Re.Formula.FunctionList.HLOOKUP=[Re.Formula.LookupFunctions,-3,"hlookup","","lookup"],Re.Formula.FunctionList.MATCH=[Re.Formula.LookupFunctions,-2,"match","","lookup"],Re.Formula.FunctionList.VLOOKUP=[Re.Formula.LookupFunctions,-3,"vlookup","","lookup"],Re.Formula.IndexFunction=function(e,o,t,i){function n(e,t){o.push({type:e,value:t})}var r,s,a,l,c=Re.Formula,u=c.TopOfStackValueAndType(i,t);if("range"!=u.type)return c.FunctionArgsError(e,o),0;if(r=(u=c.DecodeRangeParts(i,u.value,u.type)).sheetname?"!"+u.sheetname:"",s={value:0},a={value:0},t.length){if("n"!=(s=c.OperandAsNumber(i,t)).type.charAt(0)||s.value<0)return void n("e#VALUE!",0);if(t.length){if("n"!=(a=c.OperandAsNumber(i,t)).type.charAt(0)||a.value<0)return void n("e#VALUE!",0);if(t.length)return c.FunctionArgsError(e,o),0}else 1==u.nrows&&(a.value=s.value,s.value=0)}s.value>u.nrows||a.value>u.ncols?n("e#REF!",0):n(0==s.value?0==a.value?1==u.nrows&&1==u.ncols?(l=Re.crToCoord(u.col1num,u.row1num)+r,"coord"):(l=Re.crToCoord(u.col1num,u.row1num)+r+"|"+Re.crToCoord(u.col1num+u.ncols-1,u.row1num+u.nrows-1)+"|","range"):1==u.nrows?(l=Re.crToCoord(u.col1num+a.value-1,u.row1num)+r,"coord"):(l=Re.crToCoord(u.col1num+a.value-1,u.row1num)+r+"|"+Re.crToCoord(u.col1num+a.value-1,u.row1num+u.nrows-1)+"|","range"):0==a.value?1==u.ncols?(l=Re.crToCoord(u.col1num,u.row1num+s.value-1)+r,"coord"):(l=Re.crToCoord(u.col1num,u.row1num+s.value-1)+r+"|"+Re.crToCoord(u.col1num+u.ncols-1,u.row1num+s.value-1)+"|","range"):(l=Re.crToCoord(u.col1num+a.value-1,u.row1num+s.value-1)+r,"coord"),l)},Re.Formula.FunctionList.INDEX=[Re.Formula.IndexFunction,-1,"index","","lookup"],Re.Formula.CountifSumifFunctions=function(e,o,t,i){function n(e,t){o.push({type:e,value:t})}var r,s,a,l,c=0,u="",d=0,h=Re.Formula,p=h.OperandValueAndType,f=h.LookupResultType,m=h.TypeLookupTable.plus,g=h.TopOfStackValueAndType(i,t),v=h.OperandAsText(i,t);if("SUMIF"==e)if(1==t.length)r=h.TopOfStackValueAndType(i,t);else{if(0!=t.length)return h.FunctionArgsError(e,o),0;r={value:g.value,type:g.type}}else r={value:g.value,type:g.type};if("n"==v.type.charAt(0)?v.value=v.value+"":"e"!=v.type.charAt(0)&&"b"!=v.type.charAt(0)||(v.value=null),"coord"!=g.type&&"range"!=g.type)return h.FunctionArgsError(e,o),0;if("SUMIF"==e&&"coord"!=r.type&&"range"!=r.type)return h.FunctionArgsError(e,o),0;for(t.push(g),(s=[]).push(r);t.length;)a=p(i,t),l=p(i,s),h.TestCriteria(a.value,a.type,v.value)&&(d+=1,"n"==l.type.charAt(0)?(c+=+l.value,u=f(l.type,u||l.type,m)):"e"==l.type.charAt(0)&&"e"!=u.charAt(0)&&(u=l.type));u=u||"n","SUMIF"==e?n(u,c):"COUNTIF"==e&&n("n",d)},Re.Formula.FunctionList.COUNTIF=[Re.Formula.CountifSumifFunctions,2,"rangec","","stat"],Re.Formula.FunctionList.SUMIF=[Re.Formula.CountifSumifFunctions,-2,"sumif","","stat"],Re.Formula.SumifsFunction=function(e,t,o,i){var n,r,s,a,l=0,c="",u=Re.Formula,d=u.OperandValueAndType,h=u.LookupResultType,p=u.TypeLookupTable.plus,f=u.TopOfStackValueAndType(i,o);if("coord"!=f.type&&"range"!=f.type)return u.FunctionArgsError(e,t),0;for(var m,g=[],v=[];o.length;){if(n=u.TopOfStackValueAndType(i,o),"n"==(r=u.OperandAsText(i,o)).type.charAt(0)?r.value=r.value+"":"e"!=r.type.charAt(0)&&"b"!=r.type.charAt(0)||(r.value=null),"coord"!=n.type&&"range"!=n.type)return u.FunctionArgsError(e,t),0;g.push([n]),v.push(r)}for((s=[]).push(f);s.length;){for(var b=d(i,s),y=!0,C=0;C<g.length;C++)a=d(i,g[C]),!y||u.TestCriteria(a.value,a.type,v[C].value)||(y=!1);y&&("n"==b.type.charAt(0)?(l+=+b.value,c=h(b.type,c||b.type,p)):"e"==b.type.charAt(0)&&"e"!=c.charAt(0)&&(c=b.type))}f=c=c||"n",m=l,t.push({type:f,value:m})},Re.Formula.FunctionList.SUMIFS=[Re.Formula.SumifsFunction,-3,"sum_range, criteria_range1, criteria1, [criteria_range2, criteria2, ... criteria_range_n, criteria_n]","","stat"],Re.Formula.IfFunction=function(e,t,o,i){var n=Re.Formula,i=Re.Formula.OperandValueAndType(i,o),r=i.type.charAt(0);if("n"!=r&&"b"!=r)t.push({type:"e#VALUE!",value:0});else{var s,r=o.pop();if(1==o.length)s=o.pop();else{if(0!=o.length)return void n.FunctionArgsError(e,t);s={type:"n",value:0}}t.push(i.value?r:s)}},Re.Formula.FunctionList.IF=[Re.Formula.IfFunction,-2,"iffunc","","test"],Re.Formula.DateFunction=function(e,t,o,i){var n=Re.Formula,r=0,s=n.OperandAsNumber(i,o),a=n.OperandAsNumber(i,o),i=n.OperandAsNumber(i,o),o=n.LookupResultType(s.type,a.type,n.TypeLookupTable.twoargnumeric);"n"==(o=n.LookupResultType(o,i.type,n.TypeLookupTable.twoargnumeric)).charAt(0)&&(r=Re.FormatNumber.convert_date_gregorian_to_julian(Math.floor(s.value),Math.floor(a.value),Math.floor(i.value))-Re.FormatNumber.datevalues.julian_offset,o="nd"),n.PushOperand(t,o,r)},Re.Formula.FunctionList.DATE=[Re.Formula.DateFunction,3,"date","","datetime"],Re.Formula.TimeFunction=function(e,t,o,i){var n=Re.Formula,r=0,s=n.OperandAsNumber(i,o),a=n.OperandAsNumber(i,o),i=n.OperandAsNumber(i,o),o=n.LookupResultType(s.type,a.type,n.TypeLookupTable.twoargnumeric);"n"==(o=n.LookupResultType(o,i.type,n.TypeLookupTable.twoargnumeric)).charAt(0)&&(r=(60*s.value*60+60*a.value+i.value)/86400,o="nt"),n.PushOperand(t,o,r)},Re.Formula.FunctionList.TIME=[Re.Formula.TimeFunction,3,"hms","","datetime"],Re.Formula.DMYFunctions=function(e,t,o,i){var n,r,s,a=Re.Formula,l=0,c=a.OperandAsNumber(i,o),u=a.LookupResultType(c.type,c.type,a.TypeLookupTable.oneargnumeric);if("n"==u.charAt(0))switch(n=Re.FormatNumber.convert_date_julian_to_gregorian(Math.floor(c.value+Re.FormatNumber.datevalues.julian_offset)),e){case"DAY":l=n.day;break;case"MONTH":l=n.month;break;case"YEAR":l=n.year;break;case"WEEKDAY":if(r={value:1},o.length){if("n"!=(r=a.OperandAsNumber(i,o)).type.charAt(0)||r.value<1||3<r.value)return void a.PushOperand(t,"e#VALUE!",0);if(o.length)return void a.FunctionArgsError(e,t)}s=6,1<r.value&&--s,l=Math.floor(c.value+s)%7+(r.value<3?1:0)}a.PushOperand(t,u,l)},Re.Formula.FunctionList.DAY=[Re.Formula.DMYFunctions,1,"v","","datetime"],Re.Formula.FunctionList.MONTH=[Re.Formula.DMYFunctions,1,"v","","datetime"],Re.Formula.FunctionList.YEAR=[Re.Formula.DMYFunctions,1,"v","","datetime"],Re.Formula.FunctionList.WEEKDAY=[Re.Formula.DMYFunctions,-1,"weekday","","datetime"],Re.Formula.HMSFunctions=function(e,t,o,i){var n,r,s,a=Re.Formula,l=0,i=a.OperandAsNumber(i,o),o=a.LookupResultType(i.type,i.type,a.TypeLookupTable.oneargnumeric);if("n"==o.charAt(0)){if(i.value<0)return void a.PushOperand(t,"e#NUM!",0);s=i.value-Math.floor(i.value),s*=24,n=Math.floor(s),s=(s-Math.floor(s))*60,r=Math.floor(s),s=(s-Math.floor(s))*60,s=Math.floor(s+(0<=i.value?.5:-.5)),"HOUR"==e?l=n:"MINUTE"==e?l=r:"SECOND"==e&&(l=s)}a.PushOperand(t,o,l)},Re.Formula.FunctionList.HOUR=[Re.Formula.HMSFunctions,1,"v","","datetime"],Re.Formula.FunctionList.MINUTE=[Re.Formula.HMSFunctions,1,"v","","datetime"],Re.Formula.FunctionList.SECOND=[Re.Formula.HMSFunctions,1,"v","","datetime"],Re.Formula.ExactFunction=function(e,t,o,i){var n=Re.Formula,r=0,s="nl",a=n.OperandValueAndType(i,o),l=a.type.charAt(0),i=n.OperandValueAndType(i,o),o=i.type.charAt(0);"t"==l?"t"==o?r=a.value==i.value?1:0:"b"==o?r=a.value.length?0:1:"n"==o?r=a.value==i.value+""?1:0:"e"==o?(r=i.value,s=i.type):r=0:"n"==l?"n"==o?r=+a.value==+i.value?1:0:"b"==o?r=0:"t"==o?r=a.value+""==i.value?1:0:"e"==o?(r=i.value,s=i.type):r=0:"b"==l?"t"==o?r=i.value.length?0:1:"b"==o?r=1:"n"!=o&&"e"==o?(r=i.value,s=i.type):r=0:"e"==l&&(r=a.value,s=a.type),n.PushOperand(t,s,r)},Re.Formula.FunctionList.EXACT=[Re.Formula.ExactFunction,2,"","","text"],Re.Formula.ArgList={FIND:[1,1,0],LEFT:[1,0],LEN:[1],LOWER:[1],MID:[1,0,0],PROPER:[1],REPLACE:[1,0,0,1],REPT:[1,0],RIGHT:[1,0],SUBSTITUTE:[1,1,1,0],TRIM:[1],HEXCODE:[1],UPPER:[1]},Re.Formula.StringFunctions=function(e,t,o,i){for(var n,r,s,a=Re.Formula,l=0,c="e#VALUE!",u=o.length,d=a.ArgList[e],h=[],p=[],f=1;f<=u;f++){if(f>d.length)return void a.FunctionArgsError(e,t);if(0==d[f-1]?n=a.OperandAsNumber(i,o):1==d[f-1]?n=a.OperandAsText(i,o):-1==d[f-1]&&(n=a.OperandValueAndType(i,o)),h[f]=n.value,p[f]=n.type,"e"==n.type.charAt(0))return void a.PushOperand(t,n.type,l)}switch(e){case"FIND":(g=p[3]?h[3]-1:0)<0?l="Start is before string":0<=(l=h[2].indexOf(h[1],g))?(l+=1,c="n"):l="Not found";break;case"LEFT":(r=p[2]?+h[2]:1)<0?l="Negative length":(l=h[1].substring(0,r),c="t");break;case"LEN":l=h[1].length,c="n";break;case"LOWER":l=h[1].toLowerCase(),c="t";break;case"MID":m=+h[2],(r=+h[3])<1||m<1?l="Bad arguments":(l=h[1].substring(m-1,m+r-1),c="t");break;case"PROPER":l=h[1].replace(/\b\w+\b/g,function(e){return e.substring(0,1).toUpperCase()+e.substring(1)}),c="t";break;case"REPLACE":m=+h[2],(r=+h[3])<0||m<1?l="Bad arguments":(l=h[1].substring(0,m-1)+h[4]+h[1].substring(m-1+r),c="t");break;case"REPT":if((s=+h[2])<0)l="Negative count";else{for(l="";0<s;s--)l+=h[1];c="t"}break;case"RIGHT":(r=p[2]?+h[2]:1)<0?l="Negative length":(l=h[1].slice(-r),c="t");break;case"SUBSTITUTE":if(fulltext=h[1],oldtext=h[2],newtext=h[3],null!=h[4]){if((which=+h[4])<=0){l="Non-positive instance number";break}}else which=0;for(oldpos=s=0,l="";;){if(!(0<=(pos=fulltext.indexOf(oldtext,oldpos)))){l+=fulltext.substring(oldpos);break}if(s++,l+=fulltext.substring(oldpos,pos),0==which)l+=newtext;else{if(which==s){l+=newtext+fulltext.substring(pos+oldtext.length);break}l+=oldtext}oldpos=pos+oldtext.length}c="t";break;case"TRIM":l=(l=(l=(l=h[1]).replace(/^ */,"")).replace(/ *$/,"")).replace(/ +/g," "),c="t";break;case"HEXCODE":var m,g=(l=String(h[1])).charCodeAt(0);55296<=g&&g<=56319&&(56320<=(m=l.charCodeAt(1))&&m<=57343&&(g=1024*(g-55296)+(m-56320)+65536)),l=g.toString(16).toUpperCase(),c="t";break;case"UPPER":l=h[1].toUpperCase(),c="t"}a.PushOperand(t,c,l)},Re.Formula.FunctionList.FIND=[Re.Formula.StringFunctions,-2,"find","","text"],Re.Formula.FunctionList.LEFT=[Re.Formula.StringFunctions,-2,"tc","","text"],Re.Formula.FunctionList.LEN=[Re.Formula.StringFunctions,1,"txt","","text"],Re.Formula.FunctionList.LOWER=[Re.Formula.StringFunctions,1,"txt","","text"],Re.Formula.FunctionList.MID=[Re.Formula.StringFunctions,3,"mid","","text"],Re.Formula.FunctionList.PROPER=[Re.Formula.StringFunctions,1,"v","","text"],Re.Formula.FunctionList.REPLACE=[Re.Formula.StringFunctions,4,"replace","","text"],Re.Formula.FunctionList.REPT=[Re.Formula.StringFunctions,2,"tc","","text"],Re.Formula.FunctionList.RIGHT=[Re.Formula.StringFunctions,-1,"tc","","text"],Re.Formula.FunctionList.SUBSTITUTE=[Re.Formula.StringFunctions,-3,"subs","","text"],Re.Formula.FunctionList.TRIM=[Re.Formula.StringFunctions,1,"v","","text"],Re.Formula.FunctionList.HEXCODE=[Re.Formula.StringFunctions,1,"v","","text"],Re.Formula.FunctionList.UPPER=[Re.Formula.StringFunctions,1,"v","","text"],Re.Formula.IsFunctions=function(e,t,o,i){var n=Re.Formula,r=0,s=n.OperandValueAndType(i,o),a=s.type.charAt(0);switch(e){case"ISBLANK":r="b"==s.type?1:0;break;case"ISERR":r="e"!=a||"e#N/A"==s.type?0:1;break;case"ISERROR":r="e"==a?1:0;break;case"ISLOGICAL":r="nl"==s.type?1:0;break;case"ISNA":r="e#N/A"==s.type?1:0;break;case"ISNONTEXT":r="t"==a?0:1;break;case"ISNUMBER":r="n"==a?1:0;break;case"ISTEXT":r="t"==a?1:0}n.PushOperand(t,"nl",r)},Re.Formula.FunctionList.ISBLANK=[Re.Formula.IsFunctions,1,"v","","test"],Re.Formula.FunctionList.ISERR=[Re.Formula.IsFunctions,1,"v","","test"],Re.Formula.FunctionList.ISERROR=[Re.Formula.IsFunctions,1,"v","","test"],Re.Formula.FunctionList.ISLOGICAL=[Re.Formula.IsFunctions,1,"v","","test"],Re.Formula.FunctionList.ISNA=[Re.Formula.IsFunctions,1,"v","","test"],Re.Formula.FunctionList.ISNONTEXT=[Re.Formula.IsFunctions,1,"v","","test"],Re.Formula.FunctionList.ISNUMBER=[Re.Formula.IsFunctions,1,"v","","test"],Re.Formula.FunctionList.ISTEXT=[Re.Formula.IsFunctions,1,"v","","test"],Re.Formula.NTVFunctions=function(e,t,o,i){var n=Re.Formula,r=0,s="e#VALUE!",a=n.OperandValueAndType(i,o),l=a.type.charAt(0);switch(e){case"N":r="n"==l?+a.value:0,s="n";break;case"T":r="t"==l?a.value+"":"",s="t";break;case"VALUE":"n"==l||"b"==l?(r=a.value||0,s="n"):"t"==l&&(s="n"!=(a=Re.DetermineValueType(a.value)).type.charAt(0)?(r=0,"e#VALUE!"):(r=+a.value,"n"))}"e"==l&&(s=a.type),n.PushOperand(t,s,r)},Re.Formula.FunctionList.N=[Re.Formula.NTVFunctions,1,"v","","math"],Re.Formula.FunctionList.T=[Re.Formula.NTVFunctions,1,"v","","text"],Re.Formula.FunctionList.VALUE=[Re.Formula.NTVFunctions,1,"v","","text"],Re.Formula.Math1Functions=function(e,t,o,i){var n,r={},s=Re.Formula,a=s.OperandAsNumber(i,o),l=a.value;if(r.type=s.LookupResultType(a.type,a.type,s.TypeLookupTable.oneargnumeric),"n"==r.type)switch(e){case"ABS":l=Math.abs(l);break;case"ACOS":-1<=l&&l<=1?l=Math.acos(l):r.type="e#NUM!";break;case"ASIN":-1<=l&&l<=1?l=Math.asin(l):r.type="e#NUM!";break;case"ATAN":l=Math.atan(l);break;case"COS":l=Math.cos(l);break;case"DEGREES":l=180*l/Math.PI;break;case"EVEN":(l=l<0?-l:l)!=Math.floor(l)?l=Math.floor(l+1)+Math.floor(l+1)%2:l+=l%2,a.value<0&&(l=-l);break;case"EXP":l=Math.exp(l);break;case"FACT":for(n=1,l=Math.floor(l);0<l;l--)n*=l;l=n;break;case"INT":l=Math.floor(l);break;case"LN":l<=0&&(r.type="e#NUM!",r.error=Re.Constants.s_sheetfunclnarg),l=Math.log(l);break;case"LOG10":l<=0&&(r.type="e#NUM!",r.error=Re.Constants.s_sheetfunclog10arg),l=Math.log(l)/Math.log(10);break;case"ODD":(l=l<0?-l:l)!=Math.floor(l)?l=Math.floor(l+1)+(1-Math.floor(l+1)%2):l+=1-l%2,a.value<0&&(l=-l);break;case"RADIANS":l=l*Math.PI/180;break;case"SIN":l=Math.sin(l);break;case"SQRT":0<=l?l=Math.sqrt(l):r.type="e#NUM!";break;case"TAN":0!=Math.cos(l)?l=Math.tan(l):r.type="e#NUM!"}return r.value=l,t.push(r),null},Re.Formula.FunctionList.ABS=[Re.Formula.Math1Functions,1,"v","","math"],Re.Formula.FunctionList.ACOS=[Re.Formula.Math1Functions,1,"v","","math"],Re.Formula.FunctionList.ASIN=[Re.Formula.Math1Functions,1,"v","","math"],Re.Formula.FunctionList.ATAN=[Re.Formula.Math1Functions,1,"v","","math"],Re.Formula.FunctionList.COS=[Re.Formula.Math1Functions,1,"v","","math"],Re.Formula.FunctionList.DEGREES=[Re.Formula.Math1Functions,1,"v","","math"],Re.Formula.FunctionList.EVEN=[Re.Formula.Math1Functions,1,"v","","math"],Re.Formula.FunctionList.EXP=[Re.Formula.Math1Functions,1,"v","","math"],Re.Formula.FunctionList.FACT=[Re.Formula.Math1Functions,1,"v","","math"],Re.Formula.FunctionList.INT=[Re.Formula.Math1Functions,1,"v","","math"],Re.Formula.FunctionList.LN=[Re.Formula.Math1Functions,1,"v","","math"],Re.Formula.FunctionList.LOG10=[Re.Formula.Math1Functions,1,"v","","math"],Re.Formula.FunctionList.ODD=[Re.Formula.Math1Functions,1,"v","","math"],Re.Formula.FunctionList.RADIANS=[Re.Formula.Math1Functions,1,"v","","math"],Re.Formula.FunctionList.SIN=[Re.Formula.Math1Functions,1,"v","","math"],Re.Formula.FunctionList.SQRT=[Re.Formula.Math1Functions,1,"v","","math"],Re.Formula.FunctionList.TAN=[Re.Formula.Math1Functions,1,"v","","math"],Re.Formula.Math2Functions=function(e,t,o,i){var n,r,s,a={},l=Re.Formula,c=l.OperandAsNumber(i,o),u=l.OperandAsNumber(i,o);if(a.type=l.LookupResultType(c.type,u.type,l.TypeLookupTable.twoargnumeric),"n"==a.type)switch(e){case"ATAN2":0==c.value&&0==u.value?a.type="e#DIV/0!":a.value=Math.atan2(u.value,c.value);break;case"POWER":a.value=Math.pow(c.value,u.value),isNaN(a.value)&&(a.value=0,a.type="e#NUM!");break;case"MOD":0==u.value?a.type="e#DIV/0!":(n=c.value/u.value,n=Math.floor(n),a.value=c.value-n*u.value);break;case"TRUNC":if(r=1,0<=u.value){for(u.value=Math.floor(u.value),s=0;s<u.value;s++)r*=10;a.value=Math.floor(Math.abs(c.value)*r)/r}else if(u.value<0){for(u.value=Math.floor(-u.value),s=0;s<u.value;s++)r*=10;a.value=Math.floor(Math.abs(c.value)/r)*r}c.value<0&&(a.value=-a.value)}return t.push(a),null},Re.Formula.FunctionList.ATAN2=[Re.Formula.Math2Functions,2,"xy","","math"],Re.Formula.FunctionList.MOD=[Re.Formula.Math2Functions,2,"","","math"],Re.Formula.FunctionList.POWER=[Re.Formula.Math2Functions,2,"","","math"],Re.Formula.FunctionList.TRUNC=[Re.Formula.Math2Functions,2,"valpre","","math"],Re.Formula.LogFunction=function(e,t,o,i){var n,r,s={},a=Re.Formula;if(s.value=0,n=a.OperandAsNumber(i,o),s.type=a.LookupResultType(n.type,n.type,a.TypeLookupTable.oneargnumeric),1==o.length){if("n"!=(r=a.OperandAsNumber(i,o)).type.charAt(0)||r.value<=0)return a.FunctionSpecificError(e,t,"e#NUM!",Re.Constants.s_sheetfunclogsecondarg),0}else{if(0!=o.length)return a.FunctionArgsError(e,t),0;r={value:Math.E,type:"n"}}if("n"==s.type){if(n.value<=0)return a.FunctionSpecificError(e,t,"e#NUM!",Re.Constants.s_sheetfunclogfirstarg),0;s.value=Math.log(n.value)/Math.log(r.value)}t.push(s)},Re.Formula.FunctionList.LOG=[Re.Formula.LogFunction,-1,"log","","math"],Re.Formula.RoundFunction=function(e,t,o,i){var n,r,s,a=Re.Formula,l=0,c=a.OperandValueAndType(i,o),u=a.LookupResultType(c.type,c.type,a.TypeLookupTable.oneargnumeric);if(1==o.length){if("n"!=(n=a.OperandValueAndType(i,o)).type.charAt(0))return a.FunctionSpecificError(e,t,"e#NUM!",Re.Constants.s_sheetfuncroundsecondarg),0}else{if(0!=o.length)return a.FunctionArgsError(e,t),0;n={value:0,type:"n"}}if("n"==u)if(n.value=+n.value,0==n.value)l=Math.round(c.value);else if(0<n.value){for(r=1,n.value=Math.floor(n.value),s=0;s<n.value;s++)r*=10;l=Math.round(c.value*r)/r}else if(n.value<0){for(r=1,n.value=Math.floor(-n.value),s=0;s<n.value;s++)r*=10;l=Math.round(c.value/r)*r}a.PushOperand(t,u,l)},Re.Formula.FunctionList.ROUND=[Re.Formula.RoundFunction,-1,"vp","","math"],Re.Formula.CeilingFloorFunctions=function(e,o,t,i){function n(e,t){o.push({type:e,value:t})}var r,s=Re.Formula,a=s.OperandValueAndType(i,t),l=a.type.charAt(0);if("n"!=l)n("e#VALUE!",0);else if(0==a.value)n("n",0);else{if(1==t.length){if(r=s.OperandValueAndType(i,t),"n"!=a.type.charAt(0))return void n("e#VALUE!",0)}else{if(0!=t.length)return void n("e#VALUE!",0);r={type:"n",value:0<a.value?1:-1}}if(0==r.value)n("n",0);else if(r.value*a.value<0)n("e#NUM!",0);else switch(e){case"CEILING":n("n",Math.ceil(a.value/r.value)*r.value);break;case"FLOOR":n("n",Math.floor(a.value/r.value)*r.value)}}},Re.Formula.FunctionList.CEILING=[Re.Formula.CeilingFloorFunctions,-1,"vsig","","math"],Re.Formula.FunctionList.FLOOR=[Re.Formula.CeilingFloorFunctions,-1,"vsig","","math"],Re.Formula.AndOrFunctions=function(e,t,o,i){var n,r,s=Re.Formula,a="";for("AND"==e?r=1:"OR"==e&&(r=0);o.length;)"n"==(n=s.OperandValueAndType(i,o)).type.charAt(0)?(n.value=+n.value,"AND"==e?r=0!=n.value?r:0:"OR"==e&&(r=0!=n.value?1:r),a=s.LookupResultType(n.type,a||"nl",s.TypeLookupTable.propagateerror)):"e"==n.type.charAt(0)&&"e"!=a.charAt(0)&&(a=n.type);a.length<1&&(a="e#VALUE!",r=0),s.PushOperand(t,a,r)},Re.Formula.FunctionList.AND=[Re.Formula.AndOrFunctions,-1,"vn","","test"],Re.Formula.FunctionList.OR=[Re.Formula.AndOrFunctions,-1,"vn","","test"],Re.Formula.NotFunction=function(e,t,o,i){var n=0,r=Re.Formula,i=r.OperandValueAndType(i,o),o=r.LookupResultType(i.type,i.type,r.TypeLookupTable.propagateerror);"n"==i.type.charAt(0)||"b"==i.type?(n=0!=+i.value?0:1,o="nl"):"t"==i.type.charAt(0)&&(o="e#VALUE!"),r.PushOperand(t,o,n)},Re.Formula.FunctionList.NOT=[Re.Formula.NotFunction,1,"v","","test"],Re.Formula.ChooseFunction=function(e,t,o,i){var n,r,s,a=0,l=Re.Formula,c=l.OperandAsNumber(i,o);for("n"!=c.type.charAt(0)&&(c.value=0),c.value=Math.floor(c.value),r=0;o.length;)if(s=l.TopOfStackValueAndType(i,o),c.value==(r+=1)){a=s.value,n=s.type;break}n?l.PushOperand(t,n,a):l.PushOperand(t,"e#VALUE!",0)},Re.Formula.FunctionList.CHOOSE=[Re.Formula.ChooseFunction,-2,"choose","","lookup"],Re.Formula.ColumnsRowsFunctions=function(e,t,o,i){var n=0,r=Re.Formula,o=r.TopOfStackValueAndType(i,o),o="coord"==o.type?(n=1,"n"):"range"==o.type?(i=r.DecodeRangeParts(i,o.value),"COLUMNS"==e?n=i.ncols:"ROWS"==e&&(n=i.nrows),"n"):(n=0,"e#VALUE!");r.PushOperand(t,o,n)},Re.Formula.FunctionList.COLUMNS=[Re.Formula.ColumnsRowsFunctions,1,"range","","lookup"],Re.Formula.FunctionList.ROWS=[Re.Formula.ColumnsRowsFunctions,1,"range","","lookup"],Re.Formula.ZeroArgFunctions=function(e,t,o,i){var n,r,s,a={value:0};switch(e){case"FALSE":a.type="nl",a.value=0;break;case"NA":a.type="e#N/A";break;case"NOW":r=(n=new Date).getTimezoneOffset(),n=n.getTime()/1e3,a.value=s=25569+n/86400-r/1440,a.type="ndt",Re.Formula.FreshnessInfo.volatile.NOW=!0;break;case"PI":a.type="n",a.value=Math.PI;break;case"TODAY":r=(n=new Date).getTimezoneOffset(),s=25569+(n=n.getTime()/1e3)/86400-r/1440,a.value=Math.floor(s),a.type="nd",Re.Formula.FreshnessInfo.volatile.TODAY=!0;break;case"TRUE":a.type="nl",a.value=1;break;case"RAND":a.type="n",a.value=Math.random(),Re.Formula.FreshnessInfo.volatile.RAND=!0}return t.push(a),null},Re.Formula.FunctionList.FALSE=[Re.Formula.ZeroArgFunctions,0,"","","test"],Re.Formula.FunctionList.NA=[Re.Formula.ZeroArgFunctions,0,"","","test"],Re.Formula.FunctionList.NOW=[Re.Formula.ZeroArgFunctions,0,"","","datetime"],Re.Formula.FunctionList.RAND=[Re.Formula.ZeroArgFunctions,0,"","","math"],Re.Formula.FunctionList.PI=[Re.Formula.ZeroArgFunctions,0,"","","math"],Re.Formula.FunctionList.TODAY=[Re.Formula.ZeroArgFunctions,0,"","","datetime"],Re.Formula.FunctionList.TRUE=[Re.Formula.ZeroArgFunctions,0,"","","test"],Re.Formula.DDBFunction=function(e,t,o,i){var n,r,s,a,l=Re.Formula,c=l.OperandAsNumber(i,o),u=l.OperandAsNumber(i,o),d=l.OperandAsNumber(i,o),h=l.OperandAsNumber(i,o);if(!(l.CheckForErrorValue(t,c)||l.CheckForErrorValue(t,u)||l.CheckForErrorValue(t,d)||l.CheckForErrorValue(t,h))){if(d.value<1)return l.FunctionSpecificError(e,t,"e#NUM!",Re.Constants.s_sheetfuncddblife),0;if(n={value:2,type:"n"},0<o.length&&(n=l.OperandAsNumber(i,o)),0!=o.length)return l.FunctionArgsError(e,t),0;if(!l.CheckForErrorValue(t,n)){for(s=r=0,a=1;a<=+h.value&&a<=d.value;a++)r=(c.value-s)*(n.value/d.value),s+=r=c.value-s-r<u.value?c.value-s-u.value:r;l.PushOperand(t,"n$",r)}}},Re.Formula.FunctionList.DDB=[Re.Formula.DDBFunction,-4,"ddb","","financial"],Re.Formula.SLNFunction=function(e,t,o,i){var n=Re.Formula,r=n.OperandAsNumber(i,o),s=n.OperandAsNumber(i,o),i=n.OperandAsNumber(i,o);if(!n.CheckForErrorValue(t,r)&&!n.CheckForErrorValue(t,s)&&!n.CheckForErrorValue(t,i)){if(i.value<1)return n.FunctionSpecificError(e,t,"e#NUM!",Re.Constants.s_sheetfuncslnlife),0;o=(r.value-s.value)/i.value,n.PushOperand(t,"n$",o)}},Re.Formula.FunctionList.SLN=[Re.Formula.SLNFunction,3,"csl","","financial"],Re.Formula.SYDFunction=function(e,t,o,i){var n=Re.Formula,r=n.OperandAsNumber(i,o),s=n.OperandAsNumber(i,o),a=n.OperandAsNumber(i,o),i=n.OperandAsNumber(i,o);if(!(n.CheckForErrorValue(t,r)||n.CheckForErrorValue(t,s)||n.CheckForErrorValue(t,a)||n.CheckForErrorValue(t,i))){if(a.value<1||i.value<=0)return n.PushOperand(t,"e#NUM!",0),0;o=(a.value+1)*a.value/2,r=(r.value-s.value)*(a.value-i.value+1)/o,n.PushOperand(t,"n$",r)}},Re.Formula.FunctionList.SYD=[Re.Formula.SYDFunction,4,"cslp","","financial"],Re.Formula.InterestFunctions=function(e,t,o,i){var n,r,s,a,l,c,u,d,h,p,f,m,g,v,b,y,C=Re.Formula,w=C.OperandAsNumber(i,o),x=C.OperandAsNumber(i,o),_=C.OperandAsNumber(i,o),S=C.LookupResultType(w.type,x.type,C.TypeLookupTable.twoargnumeric);if(S=C.LookupResultType(S,_.type,C.TypeLookupTable.twoargnumeric),o.length&&(r=C.OperandAsNumber(i,o),S=C.LookupResultType(S,r.type,C.TypeLookupTable.twoargnumeric),o.length&&(s=C.OperandAsNumber(i,o),S=C.LookupResultType(S,s.type,C.TypeLookupTable.twoargnumeric),o.length))){if("RATE"!=e)return C.FunctionArgsError(e,t),0;a=C.OperandAsNumber(i,o),S=C.LookupResultType(S,a.type,C.TypeLookupTable.twoargnumeric)}if("n"==S)switch(e){case"FV":v=w.value,u=x.value,d=_.value,l=null!=r?r.value:0,h=null!=s&&s.value?1:0,n=c=0==v?-l-d*u:-(l*Math.pow(1+v,u)+d*(1+v*h)*(Math.pow(1+v,u)-1)/v),S="n$";break;case"NPER":if(v=w.value,d=x.value,l=_.value,c=null!=r?r.value:0,h=null!=s&&s.value?1:0,0==v){if(0==d)return void C.PushOperand(t,"e#NUM!",0);u=(l+c)/-d}else{if(0==(p=l+(f=d*(1+v*h)/v))||v<=-1)return void C.PushOperand(t,"e#NUM!",0);if((f=(f-c)/p)<=0)return void C.PushOperand(t,"e#NUM!",0);u=Math.log(f)/Math.log(1+v)}n=u,S="n";break;case"PMT":if(v=w.value,u=x.value,l=_.value,c=null!=r?r.value:0,h=null!=s&&s.value?1:0,0==u)return void C.PushOperand(t,"e#NUM!",0);n=d=0==v?(c-l)/u:(0-c-l*Math.pow(1+v,u))/((1+v*h)*(Math.pow(1+v,u)-1)/v),S="n$";break;case"PV":if(v=w.value,u=x.value,d=_.value,c=null!=r?r.value:0,h=null!=s&&s.value?1:0,-1==v)return void C.PushOperand(t,"e#DIV/0!",0);n=l=0==v?-c-d*u:(-c-d*(1+v*h)*(Math.pow(1+v,u)-1)/v)/Math.pow(1+v,u),S="n$";break;case"RATE":for(u=w.value,d=x.value,l=_.value,c=null!=r?r.value:0,h=null!=s&&s.value?1:0,p=null!=a?a.value:.1,g=0,delta=1,epsilon=1e-7,v=p||1e-8;(0<=delta?delta:-delta)>epsilon&&v!=b;)if(delta=c+l*Math.pow(1+v,u)+d*(1+v*h)*(Math.pow(1+v,u)-1)/v,m=(null!=m?(y=(delta-m)/(v-b)||.001,b=v,v-=delta/y):(b=v,v*=1.1),delta),100<=++g)return void C.PushOperand(t,"e#NUM!",0);n=v,S="n%"}C.PushOperand(t,S,n)},Re.Formula.FunctionList.FV=[Re.Formula.InterestFunctions,-3,"fv","","financial"],Re.Formula.FunctionList.NPER=[Re.Formula.InterestFunctions,-3,"nper","","financial"],Re.Formula.FunctionList.PMT=[Re.Formula.InterestFunctions,-3,"pmt","","financial"],Re.Formula.FunctionList.PV=[Re.Formula.InterestFunctions,-3,"pv","","financial"],Re.Formula.FunctionList.RATE=[Re.Formula.InterestFunctions,-3,"rate","","financial"],Re.Formula.NPVFunction=function(e,t,o,i){var n,r,s,a,l=Re.Formula,c=l.OperandAsNumber(i,o);if(!l.CheckForErrorValue(t,c)){for(r=0,n="n",s=1;o.length;)if("n"==(a=l.OperandValueAndType(i,o)).type.charAt(0)){if(0==(s*=1+c.value))return void l.PushOperand(t,"e#DIV/0!",0);r+=a.value/s,n=l.LookupResultType(a.type,n||a.type,l.TypeLookupTable.plus)}else if("e"==a.type.charAt(0)&&"e"!=n.charAt(0)){n=a.type;break}"n"==n.charAt(0)&&(n="n$"),l.PushOperand(t,n,r)}},Re.Formula.FunctionList.NPV=[Re.Formula.NPVFunction,-2,"npv","","financial"],Re.Formula.IRRFunction=function(e,t,o,i){var n,r,s,a,l,c,u,d,h,p,f=[],m=[],g=Re.Formula;for(f.push(o.pop());f.length;)if("n"==(n=g.OperandValueAndType(i,f)).type.charAt(0))m.push(n.value);else if("e"==n.type.charAt(0))return void g.PushOperand(t,"e#VALUE!",0);if(m.length){if(r={value:0},o.length){if("n"!=(r=g.OperandAsNumber(i,o)).type.charAt(0)&&"b"!=r.type.charAt(0))return void g.PushOperand(t,"e#VALUE!",0);if(o.length)return void g.FunctionArgsError(e,t)}for(r.value=r.value||.1,a=0,l=r.value,d=1;1e-7<(0<=d?d:-d)&&l!=c;){for(h=1,p=d=0;p<m.length;p++){if(0==(h*=1+l))return void g.PushOperand(t,"e#DIV/0!",0);d+=m[p]/h}if(s=(null!=s?(u=(d-s)/(l-c),c=l,l-=d/u):(c=l,l*=1.1),d),20<=++a)return void g.PushOperand(t,"e#NUM!",0)}g.PushOperand(t,"n%",l)}else g.PushOperand(t,"e#NUM!",0)},Re.Formula.FunctionList.IRR=[Re.Formula.IRRFunction,-1,"irr","","financial"],Re.Formula.IoFunctions=function(e,t,o,i,n){var r,s,a,l=Re.Formula,c=0,u="e#VALUE!",d=o.length,h={BUTTON:[2],IMAGEBUTTON:[2],EMAIL:[14,14,14,14],EMAILIF:[13,14,14,14,14],EMAILONEDIT:[14,14,14,14,14],EMAILAT:[13,14,14,14,14],EMAILONEDITIF:[14,13,14,14,14,14],EMAILATIF:[13,13,14,14,14,14],SUBMIT:[2],TEXTBOX:[2],AUTOCOMPLETE:[2,14],SELECT:[2,14,1,1],CHECKBOX:[3],RADIOBUTTON:[2,2],COPYVALUE:[4,12,15],COPYFORMULA:[4,12,12],INSERT:[4,8,-12,-15],DELETEIF:[4,7,8],COMMAND:[4,14],COMMANDIF:[4,13,14],PANEL:[15,-12],SPLASH:[12],STYLE:[6]}[e],p=[],f=[],m=-1;for(F=1;F<=d;F++){if(-1!=m)a=Math.abs(h[s+(F-1-s)%m]);else{if(F>h.length)return void l.FunctionArgsError(e,t);(a=h[F-1])<0&&(m=h.length-(F-1),s=F-1,a=Math.abs(a))}if(1==a)r=l.OperandAsNumber(i,o);else if(2==a)r=l.OperandAsText(i,o);else if(3==a)r=l.OperandValueAndType(i,o);else{var g=o[o.length-1].type,v=!1;if(("n"==g.charAt(0)&&0!=(1&a)||"t"==g.charAt(0)&&0!=(2&a))&&(v=!0,r=l.OperandValueAndType(i,o)),"coord"==g&&0!=(4&a)&&(v=!0,(r=l.OperandAsCoord(i,o)).value=Re.Formula.PlainCoord(r.value)),"range"==g&&0!=(8&a)&&(v=!0,(r=l.OperandAsRange(i,o)).value=Re.Formula.PlainCoord(r.value)),0==v)return void l.FunctionArgsError(e,t)}if(p[F]=r.value,f[F]=r.type,"e"==r.type.charAt(0))return void l.PushOperand(t,r.type,c)}switch(e){case"STYLE":(b=i.ioParameterList[n])&&(0<(y=Re.Formula.getStandardizedList(i,{value:p[1],type:f[1]})).length&&(b.css=y[0],b.cssParameter="t"==f[1]?'"'+p[1]+'"':p[1]),c="",u="ni");break;case"SELECT":var b=i.ioParameterList[n],y=Re.Formula.getStandardizedList(i,b[1]);b.html=[],b.html[0]=1==p[4]?"multiple":"",b.html[1]=p[3]?""+p[3]:"1",0<y.length&&(y="<option>"+y.join("</option><option>")+"</option>",P=new RegExp("<option>"+p[1],""),b.html[2]=y.replace(P,"<option selected>"+p[1])),c=p[1],u="ti"+e;break;case"SUBMIT":c="Submit";case"BUTTON":case"IMAGEBUTTON":case"TEXTBOX":case"AUTOCOMPLETE":0<d&&(c=p[1]),u="ti"+e;break;case"EMAIL":case"EMAILIF":u="ti"+e,c="Send";break;case"EMAILONEDIT":case"EMAILONEDITIF":case"EMAILAT":case"EMAILATIF":u="ti"+e,c="Send Now";break;case"CHECKBOX":case"RADIOBUTTON":c="t"==f[1].charAt(0)?"TRUE"==p[1].toUpperCase()?1:0:0==p[1]?0:1,u="ni"+e;break;case"COPYVALUE":case"COPYFORMULA":case"INSERT":case"DELETEIF":case"COMMAND":case"COMMANDIF":b=i.cells[p[1]];if(void 0===b)break;c=b.datavalue,c=(c=String(c).split("/"))[c.length-1],u="t";break;case"PANEL":case"SPLASH":var C,y=2;if("SPLASH"==e){if(c="SPLASH:"+p[1],u="t",1==i.splashdone)break;i.splashdone=!0,y=1,C=[0]}else c=e+":"+(C=Re.Formula.getStandardizedList(i,{value:p[1],type:f[1]}));if(u="t",Re._app){for(var w=[],x=[],_=y;_<p.length;++_){var S,k=!1;for(S in C)if(C[S]==_-1){k=!0;break}if(!1!==k){for(var T=Re.Formula.getStandardizedCoords(i,{value:p[_],type:f[_]}),F=0;F<T.ncols;F++)x[T.col1num+F]=!0;for(var E=0;E<T.nrows;E++)w[T.row1num+E]=!0}}function D(e,t,o,i,n){for(var r=1;r<=t;r++){var s=n(r);void 0===o[s]?!0!==i[r]?(o[s]="yes",A=!0):I=r:!0===i[r]&&(delete o[s],A=!0,I=r)}}var P=M.spreadsheet,A=(null==P&&(P=M.ss),!1),I=0;D(0,i.attribs.lastrow,i.rowattribs.hide,w,function(e){return e}),D(I=0,i.attribs.lastcol,i.colattribs.hide,x,Re.rcColname),i.attribs.usermaxcol=I,A&&(i.renderneeded=!0,i.widgetsClean=!1,P.editor.context.rowpanes[0].first=1,P.editor.context.CalculateColWidthData(),P.width=P.editor.context.totalwidth,P.height=2500,P.editor.ResizeTableEditor(P.editor.context.totalwidth,2500))}}l.PushOperand(t,u,c)},Re.Formula.FunctionList.BUTTON=[Re.Formula.IoFunctions,1,"label","","gui","<button type='button' onclick=\"SocialCalc.TriggerIoAction.Button('<%=cell_reference%>');\"><%=formated_value%></button>","ParameterList"],Re.Formula.FunctionList.IMAGEBUTTON=[Re.Formula.IoFunctions,1,"imageurl","","gui","<input type='image' src='<%=display_value%>' alt='Submit' onclick=\"SocialCalc.TriggerIoAction.Button('<%=cell_reference%>');\">","ParameterList"],Re.Formula.FunctionList.EMAIL=[Re.Formula.IoFunctions,-3,"to_range subject_range, body_range","","action","<button type='button' onclick=\"SocialCalc.TriggerIoAction.Email('<%=cell_reference%>');\"><%=formated_value%></button>","ParameterList"],Re.Formula.FunctionList.EMAILIF=[Re.Formula.IoFunctions,-4,"condition_range, to_range subject_range, body_range","","action","<button type='button' onclick=\"SocialCalc.TriggerIoAction.Email('<%=cell_reference%>');\"><%=formated_value%></button>","ParameterList"],Re.Formula.FunctionList.EMAILONEDIT=[Re.Formula.IoFunctions,-4,"editRange, to_range subject_range, body_range","","action","<button type='button' onclick=\"SocialCalc.TriggerIoAction.Email('<%=cell_reference%>');\"><%=formated_value%></button>","EventTree"],Re.Formula.FunctionList.EMAILAT=[Re.Formula.IoFunctions,-4,"datetime_value, to_range subject_range, body_range","","action","<button type='button' onclick=\"SocialCalc.TriggerIoAction.Email('<%=cell_reference%>');\"><%=formated_value%></button>","TimeTrigger"],Re.Formula.FunctionList.EMAILONEDITIF=[Re.Formula.IoFunctions,-5,"editRange, condition, to_range subject_range, body_range","","action","<button type='button' onclick=\"SocialCalc.TriggerIoAction.Email('<%=cell_reference%>');\"><%=formated_value%></button>","EventTree"],Re.Formula.FunctionList.EMAILATIF=[Re.Formula.IoFunctions,-5,"datetime_value, condition, to_range subject_range, body_range","","action","<button type='button' onclick=\"SocialCalc.TriggerIoAction.Email('<%=cell_reference%>');\"><%=formated_value%></button>","TimeTrigger"],Re.Formula.FunctionList.SUBMIT=[Re.Formula.IoFunctions,100,"[label]","","action","<button type='button' onclick=\"SocialCalc.TriggerIoAction.Submit('<%=cell_reference%>');\"><%=formated_value%></button>","ParameterList"],Re.Formula.FunctionList.TEXTBOX=[Re.Formula.IoFunctions,1,"value","","gui","<input type='text' id='TEXTBOX_<%=cell_reference%>' onblur='SocialCalc.CmdGotFocus(null);' oninput=\"SocialCalc.TriggerIoAction.TextBox('<%=cell_reference%>')\" value='<%=display_value%>' >","Input"],Re.Formula.FunctionList.AUTOCOMPLETE=[Re.Formula.IoFunctions,2,"value, range or csv_text","","gui","<input type='text' id='AUTOCOMPLETE_<%=cell_reference%>' onfocus=\"SocialCalc.TriggerIoAction.AddAutocomplete('<%=cell_reference%>');\" onblur='SocialCalc.CmdGotFocus(null);' value='<%=display_value%>' >","Input"],Re.Formula.FunctionList.SELECT=[Re.Formula.IoFunctions,-2,"value, range or csv_text [,size]","","gui","<select size='<%=html1_value%>' id='SELECT_<%=cell_reference%>' onchange=\"SocialCalc.TriggerIoAction.SelectList('<%=cell_reference%>')\" <%=html0_value%>><%=html2_value%></select>","Input"],Re.Formula.FunctionList.CHECKBOX=[Re.Formula.IoFunctions,1,"value","","gui","<input type='checkbox' id='CHECKBOX_<%=cell_reference%>' <%=checked%> onblur='SocialCalc.CmdGotFocus(null);' onchange=\"SocialCalc.TriggerIoAction.CheckBox('<%=cell_reference%>')\" >","Input"],Re.Formula.FunctionList.RADIOBUTTON=[Re.Formula.IoFunctions,2,"value, groupname","","gui","<input type='radio' value='<%=cell_reference%>' id='RADIOBUTTON_<%=cell_reference%>' <%=checked%> name='<%=parameter1_value%>' onblur=\"SocialCalc.CmdGotFocus(null);\" onclick=\"SocialCalc.TriggerIoAction.RadioButton('<%=parameter1_value%>');\" >","Input"],Re.Formula.FunctionList.COPYVALUE=[Re.Formula.IoFunctions,3,"trigger_cell, destinationCell, value_or_range","","action","","EventTree"],Re.Formula.FunctionList.COPYFORMULA=[Re.Formula.IoFunctions,3,"trigger_cell, destinationCell, formula_range","","action","","EventTree"],Re.Formula.FunctionList.INSERT=[Re.Formula.IoFunctions,-2,"trigger_cell, destination_range [,formula_range,value_or_range,formula_range, ...]","","action","","EventTree"],Re.Formula.FunctionList.DELETEIF=[Re.Formula.IoFunctions,-1,"trigger_cell, criteria , test_range","","action","","EventTree"],Re.Formula.FunctionList.COMMAND=[Re.Formula.IoFunctions,-1,"trigger_cell, commands","","action","","EventTree"],Re.Formula.FunctionList.COMMANDIF=[Re.Formula.IoFunctions,-1,"trigger_cell, conditions, commands","","action","","EventTree"],Re.Formula.FunctionList.PANEL=[Re.Formula.IoFunctions,-1,"showindices_range_or_csv, panel1_range [, panel2_range , ...]","","gui",""],Re.Formula.FunctionList.SPLASH=[Re.Formula.IoFunctions,-1,"splash_panel_range","","gui",""],Re.Formula.FunctionList.STYLE=[Re.Formula.IoFunctions,-1,"css","","gui",""],Re.TriggerIoAction.AddAutocomplete=function(o){var e=M.spreadsheet,e=(e=null==e?M.ss:e).sheet,t=(Re.Formula,e.ioParameterList[o]);void 0!==t&&(e=Re.Formula.getStandardizedList(e,t[1]),$.ui.autocomplete.filter=function(e,t){var o=new RegExp("\\b"+$.ui.autocomplete.escapeRegex(t),"i");return $.grep(e,function(e){return o.test(e.label||e.value||e)})},$("#AUTOCOMPLETE_"+o).autocomplete({source:e,minLength:1,autoFocus:!0,select:function(e,t){$(this).val(t.item.label),Re.TriggerIoAction.AutoComplete(o)},change:function(e,t){null===t.item&&$(this).val(""),Re.TriggerIoAction.AutoComplete(o)}}))},Re.TriggerIoAction.Button=function(e){var t=M.spreadsheet,o=(t=null==t?M.ss:t).sheet;Re.Formula;if(void 0!==o.ioEventTree&&void 0!==o.ioParameterList&&"undefined"!==o.ioEventTree[e])for(var i in o.ioEventTree[e]){var n,r=o.ioParameterList[i],s=null;switch(r.function_name){case"COPYVALUE":var a=Re.Formula.getStandardizedValues(o,r[2]),l=Re.coordToCr(r[1].value),c=Re.TriggerIoAction.CopyValueToRange(a,l);t.editor.EditorScheduleSheetCommands(c,!0,!1);break;case"COPYFORMULA":var a=Re.Formula.getStandardizedValues(o,r[2]),l=Re.coordToCr(r[1].value),c=Re.TriggerIoAction.CopyFormulaToRange(a,l);t.editor.EditorScheduleSheetCommands(c,!0,!1);break;case"INSERT":if("range"!=(a=Re.Formula.getStandardizedValues(o,r[1])).type)break;1<a.ncols&&(h=1,p=0,n="insertcol"),1<a.nrows&&(h=0,p=1,n="insertrow");for(var u=a.cellcoord[h][p],c=n+" "+u,l=Re.coordToCr(u),d=2;d<r.length;)"range"!=r[d].type&&"coord"!=r[d].type&&d%2!=1||(copyCellRange=Re.Formula.getStandardizedValues(o,r[d]),c=d%2==0?c+"\n"+Re.TriggerIoAction.CopyFormulaToRange(copyCellRange,l):c+"\n"+Re.TriggerIoAction.CopyValueToRange(copyCellRange,l),1<a.nrows&&(l.col+=copyCellRange.ncols),1<a.ncols&&(l.row+=copyCellRange.nrows)),d++;t.editor.EditorScheduleSheetCommands(c,!0,!1);break;case"DELETEIF":var h,p,f,u=Re.Formula.getStandardizedValues(o,r[1]),m=Re.Formula.getStandardizedValues(o,r[2]),c="";if(1<m.ncols&&1<m.nrows)return;1<m.ncols&&(h=1,p=0,f="deletecol"),1<m.nrows&&(h=0,p=1,f="deleterow");for(var g=u.celldata[0][0].datavalue,v=m.ncols-h-1;h<=v;v--)for(var b=m.nrows-p-1;p<=b;b--){var y=m.celldata[v][b];1==Re.Formula.TestCriteria(y.datavalue,y.valuetype,g)&&(""!=c&&(c+="\n"),c=c+f+" "+m.cellcoord[v][b])}""!=c&&t.editor.EditorScheduleSheetCommands(c,!0,!1);break;case"COMMANDIF":s=Re.Formula.getStandardizedValues(o,r[1]);case"COMMAND":c="";if(null!=s){var C=Re.Formula.getStandardizedValues(o,r[2]);if(s.ncols!=C.ncols||s.nrows!=C.nrows)break}else C=Re.Formula.getStandardizedValues(o,r[1]);for(v=0;v<C.ncols;v++)for(b=0;b<C.nrows;b++){if(null!=s)if(0==s.celldata[v][b].datavalue)continue;""!=c&&(c+="\n"),c+=C.celldata[v][b].datavalue.toString().trim()}""!=c&&t.editor.EditorScheduleSheetCommands(c,!0,!1)}}},Re.TriggerIoAction.CopyFormulaToRange=function(e,t){for(var o="",i=0;i<e.ncols;i++)for(var n=0;n<e.nrows;n++){var r,s,a,l=e.celldata[i][n],c=Re.crToCoord(t.col+i,t.row+n);0==i&&0==n||(o+="\n"),o+=(void 0!==l&&"b"!=l.valuetype?(r=l.datatype,s=l.valuetype,a=l.datavalue,l=l.formula,"f"==r?(l=Re.OffsetFormulaCoords(l,t.col-e.col1num,t.row-e.row1num),s=a=""):"c"!=r&&(l=""),"set "+c+" "+Re.Constants.cellDataType[r]+" "+s+" "+Re.encodeForSave(a)+" "+l):"set "+c+" empty").trim()}return o},Re.TriggerIoAction.CopyValueToRange=function(e,t){for(var o="",i=0;i<e.ncols;i++)for(var n=0;n<e.nrows;n++){var r,s,a,l,c=e.celldata[i][n],u=Re.crToCoord(t.col+i,t.row+n);0==i&&0==n||(o+="\n"),o+=(void 0!==c&&"b"!=c.valuetype?(r=c.datatype,s=c.valuetype,a=c.datavalue,l=c.formula,"f"==r?(l="","n"!=(r=s)&&"t"!=s.charAt(0)&&(r="c",l=c.displaystring),"t"==s.charAt(0)&&(r="t")):"c"!=r&&(l=""),"set "+u+" "+Re.Constants.cellDataType[r]+" "+s+" "+Re.encodeForSave(a)+" "+l):"set "+u+" empty").trim()}return o},Re.TriggerIoAction.Email=function(e,t){t=void 0!==t?t:null;var o=Re.Formula,i=M.spreadsheet,n=(i=null==i?M.ss:i).sheet,r=n.cells[e];if(void 0!==n.ioParameterList){var s=n.ioParameterList[e];if(void 0!==s){for(var a=[],l=[],c=1,u=0;u<s.length;u++)if("t"==s[u].type.charAt(0)&&(a[u]=[String(s[u].value).replace(/ /g,"%20")]),"coord"==s[u].type&&(a[u]=[String(n.GetAssuredCell(s[u].value).datavalue).replace(/ /g,"%20")]),"range"==s[u].type){for(var d=o.DecodeRangeParts(n,s[u].value),h=(a[u]=[],l[u]=[],0),p=0;p<d.ncols;p++)for(var f=0;f<d.nrows;f++){var m=Re.crToCoord(d.col1num+p,d.row1num+f),r=d.sheetdata.GetAssuredCell(m);a[u].push(r.datavalue.toString().replace(/ /g,"%20")),l[u].push(m),h++}c<h&&(c=h)}var g=-1,v=0;switch(s.function_name){case"EMAILIF":g=0;case"EMAILAT":case"EMAILONEDIT":v=1;break;case"EMAILONEDITIF":case"EMAILATIF":g=1,v=2}switch(s.function_name){case"EMAILONEDIT":case"EMAILONEDITIF":t&&"coord"==s[0].type&&s[0].value==t&&(t=null);break;default:t=null}for(var b,y,C,w=!1,x=[],_=c-1;-1<_;_--){if(-1!=g){var S=_>=a[g].length?0:_;if(0==a[g][S])continue}t&&t!=l[0][_]||(S=_>=a[v].length?0:_,b=_>=a[v+1].length?0:_,y=_>=a[v+2].length?0:_,C=a[v][S]+" "+a[v+1][b]+" "+a[v+2][y],n.ScheduleSheetCommands("sendemail "+C,!(w=!0)),x.push([a[v][S],a[v+1][b],a[v+2][y]]))}return w&&Re.EditorSheetStatusCallback(null,"emailing",null,i.editor),x}}},Re.TriggerIoAction.Submit=function(e){var t=(null!=Re.CurrentSpreadsheetControlObject?Re.CurrentSpreadsheetControlObject:Re.CurrentSpreadsheetViewerObject).formDataViewer;if(null!=t&&1==t.loaded){for(var o=M.spreadsheet,o=(o=null==o?M.ss:o).sheet,i=new Date,n=i.getFullYear()+"-"+(i.getMonth()+1)+"-"+i.getDate()+" "+i.getHours()+":"+i.getMinutes()+":"+i.getSeconds(),r=2;r<=t.formFieldsLength+1;r++){var s=Re.crToCoord(r,2);n+="\r"+t.sheet.cells[s].datavalue}o.ScheduleSheetCommands("submitform \r"+n,!1)}},Re.TriggerIoAction.SelectList=function(e){Re.TriggerIoAction.updateInputWidgetFormula("SELECT",e,function(e){return e.value})},Re.TriggerIoAction.AutoComplete=function(e){Re.TriggerIoAction.updateInputWidgetFormula("AUTOCOMPLETE",e,function(e){return e.value})},Re.TriggerIoAction.TextBox=function(e){Re.TriggerIoAction.updateInputWidgetFormula("TEXTBOX",e,function(e){return e.value})},Re.TriggerIoAction.CheckBox=function(e){Re.TriggerIoAction.updateInputWidgetFormula("CHECKBOX",e,function(e){return e.checked?"TRUE":"FALSE"})},Re.TriggerIoAction.RadioButton=function(e){function t(e){return e.checked?"TRUE":"FALSE"}$('input[name="'+e+'"]').each(function(){Re.TriggerIoAction.updateInputWidgetFormula("RADIOBUTTON",$(this).attr("id").replace(/RADIOBUTTON_/,""),t)})},Re.TriggerIoAction.updateInputWidgetFormula=function(e,t,o){var i=M.spreadsheet,n=(i=null==i?M.ss:i).sheet,r=(n.cells[t],n.ioParameterList[t]);if(void 0!==r){for(var n=o(document.getElementById(e+"_"+t)),s="set "+t+" formula "+e+'("'+(n=Re.encodeForSave(n))+'"',a=1;a<r.length;a++)"n"==r[a].type.charAt(0)&&(s+=","+r[a].value),"t"==r[a].type.charAt(0)&&(s+=',"'+r[a].value+'"'),"range"==r[a].type&&(s+=","+r[a].value.toString().replace(/(\$?[A-Z]+\$?[0-9]+)([!]?)([^|]*)[|](\$?[A-Z]+\$?[0-9]+)[|]/i,"$3$2$1:$4")),"coord"==r[a].type&&(s+=","+r[a].value);s+=")",r.cssParameter&&(s+="+style("+r.cssParameter+")"),i.editor.EditorScheduleSheetCommands(s,!0,!1),Re.TriggerIoAction.UpdateFormDataSheet(e,t,n)}},Re.TriggerIoAction.UpdateFormDataSheet=function(e,t,o){var i=(null!=Re.CurrentSpreadsheetControlObject?Re.CurrentSpreadsheetControlObject:Re.CurrentSpreadsheetViewerObject).formDataViewer;null!=i&&(e=(e+t).toLowerCase(),null!=i.formFields[e]&&(t=Re.crToCoord(i.formFields[e],2),i.sheet.ScheduleSheetCommands("set "+t+" text t "+o,!1)))},Re.Formula.getStandardizedValues=function(e,t){return Re.Formula.getStandardizedParameter(e,t,!0,!0)},Re.Formula.getStandardizedCoords=function(e,t){return Re.Formula.getStandardizedParameter(e,t,!0,!1)},Re.Formula.getStandardizedList=function(e,t){var o=[],i=Re.Formula.getStandardizedValues(e,t);if(1==i.ncols&&1==i.nrows)o=String(i.celldata[0][0].datavalue).split(",");else for(var n=0;n<i.ncols;n++)for(var r=0;r<i.nrows;r++){var s=i.celldata[n][r];o.push(s.datavalue.toString())}return o},Re.Formula.getStandardizedParameter=function(e,t,o,i){var n={type:t.type,value:t.value};if(i&&(n.celldata=[]),"coord"!=t.type&&"range"!=t.type)n.ncols=1,n.nrows=1,n.col1num=1,n.row1num=1,o&&(n.cellcoord=null),i&&(n.celldata[0]=[],a="n"==t.type?"v":"t"==t.type?t.type:"c",n.celldata[0][0]={coord:null,datatype:a,valuetype:t.type,datavalue:t.value});else{var r,s,a=Re.Formula;"coord"==t.type&&(r=Re.Formula.PlainCoord(t.value),s=a.DecodeRangeParts(e,r+"|"+r+"|")),"range"==t.type&&(s=a.DecodeRangeParts(e,t.value)),o&&(n.cellcoord=[]);for(var l=0;l<s.ncols;l++)for(var c=0;c<s.nrows;c++){var u=Re.crToCoord(s.col1num+l,s.row1num+c);o&&(void 0===n.cellcoord[l]&&(n.cellcoord[l]=[]),n.cellcoord[l][c]=u),i&&(void 0===n.celldata[l]&&(n.celldata[l]=[]),u=s.sheetdata.GetAssuredCell(u),n.celldata[l][c]=u)}n.ncols=s.ncols,n.nrows=s.nrows,n.col1num=s.col1num,n.row1num=s.row1num}return n},Re.Formula.SheetCache={sheets:{},waitingForLoading:null,constants:{asloaded:0,recalcing:1,recalcdone:2},loadsheet:null},Re.Formula.FindInSheetCache=function(e){var t=Re.Formula.SheetCache,e=Re.Formula.NormalizeSheetName(e);return t.sheets[e]?t.sheets[e].sheet:t.waitingForLoading?null:t.loadsheet?(alert("Using SocialCalc.Formula.SheetCache.loadsheet - deprecated"),Re.Formula.AddSheetToCache(e,t.loadsheet(e))):(t.waitingForLoading=e,null)},Re.Formula.AddSheetToCache=function(e,t,o){var i=null,n=Re.Formula.SheetCache,r=n.constants,e=Re.Formula.NormalizeSheetName(e);return t&&(i=new Re.Sheet).ParseSheetSave(t),n.sheets[e]={sheet:i,recalcstate:r.asloaded,name:e},Re.Formula.FreshnessInfo.sheets[e]=void 0===o||!1===o,i},Re.Formula.NormalizeSheetName=function(e){return Re.Callbacks.NormalizeSheetName?Re.Callbacks.NormalizeSheetName(e):e.toLowerCase()},Re.Formula.RemoteFunctionInfo={waitingForServer:null},Re.Formula.FreshnessInfo={sheets:{},volatile:{},recalc_completed:!1},Re.Formula.FreshnessInfoReset=function(){var e,t=Re.Formula.FreshnessInfo,o=Re.Formula.SheetCache;for(e in t.sheets)!1===t.sheets[e]&&delete o.sheets[e];t.sheets={},t.volatile={},t.recalc_completed=!1},Re.Formula.PlainCoord=function(e){return-1==e.indexOf("$")?e:e.replace(/\$/g,"")},Re.Formula.OrderRangeParts=function(e,t){var o={},e=Re.coordToCr(e),t=Re.coordToCr(t);return e.col>t.col?(o.c1=t.col,o.c2=e.col):(o.c1=e.col,o.c2=t.col),e.row>t.row?(o.r1=t.row,o.r2=e.row):(o.r1=e.row,o.r2=t.row),o},Re.Formula.TestCriteria=function(e,t,o){var i,n,r,s;if(null==o)return!1;if(n="="==(i=(o+="").charAt(0))||"<"==i||">"==i?o.substring(1):-1!=o.search(/([^~]\*|^\*)/)||-1!=o.search(/([^~]\?|^\?)/)?(i="regex","^"+(n="*"==o?".+":(n=(n=o.split("").reverse().join("")).replace(/\?(?=[^~])|\?$/g,"?.").replace(/\?~/g,"?\\").replace(/\*(?=[^~])|\*$/g,"*.").replace(/\*~/,"*\\")).split("").reverse().join(""))+"$"):"<="==(i=o.substring(0,2))||"<>"==i||">="==i?o.substring(2):(i="none",o),!(r=Re.DetermineValueType(n)).type){if("none"==i)return!1;if("b"==t.charAt(0)){if("="==i)return!0}else if("<>"==i)return!0;return!1}if(s=!1,"n"==r.type.charAt(0)&&"t"==t.charAt(0)&&"n"==(o=Re.DetermineValueType(e)).type.charAt(0)&&(e=o.value,t=o.type),"n"==t.charAt(0)&&"n"==r.type.charAt(0))switch(e=+e,r.value=+r.value,i){case"<":s=e<r.value;break;case"<=":s=e<=r.value;break;case"=":case"none":s=e==r.value;break;case">=":s=e>=r.value;break;case">":s=e>r.value;break;case"<>":s=e!=r.value}else if("e"==t.charAt(0))s=!1;else if("e"==r.type.charAt(0))s=!1;else{if("n"==t.charAt(0)&&(e=Re.format_number_for_display(e,"n","")),"n"==r.type.charAt(0))return!1;switch(e=e?e.toLowerCase():"",r.value=r.value?r.value.toLowerCase():"",i){case"<":s=e<r.value;break;case"<=":s=e<=r.value;break;case"=":s=e==r.value;break;case"none":s=e.substring(0,r.value.length)==r.value;break;case">=":s=e>=r.value;break;case">":s=e>r.value;break;case"<>":s=e!=r.value;break;case"regex":try{s=-1!=e.search(new RegExp(r.value))}catch(e){s=!1}}}return s},(Re=Re||{}).Popup={},Re.Popup.Types={},Re.Popup.Controls={},Re.Popup.Current={},Re.Popup.LocalizeString=function(e){return e},Re.Popup.Create=function(e,t,o){var i=Re.Popup.Types[e];i&&i.Create&&i.Create(e,t,o),Re.Popup.imagePrefix=Re.Constants.defaultImagePrefix},Re.Popup.SetValue=function(e,t){var o,i=Re.Popup,n=i.Types,i=i.Controls;i[e]?(o=n[n=i[e].type],i=i[e].data,o&&o.Create&&(o.SetValue(n,e,t),i.attribs&&i.attribs.changedcallback&&i.attribs.changedcallback(i.attribs,e,t))):alert("Unknown control "+e)},Re.Popup.SetDisabled=function(e,t){var o=Re.Popup,i=o.Types,n=o.Controls;n[e]?(n=i[i=n[e].type])&&n.Create&&(o.Current.id&&e==o.Current.id&&(n.Hide(i,o.Current.id),o.Current.id=null),n.SetDisabled(i,e,t)):alert("Unknown control "+e)},Re.Popup.GetValue=function(e){var t=Re.Popup,o=t.Types,t=t.Controls;{if(t[e])return(o=o[t=t[e].type])&&o.Create?o.GetValue(t,e):null;alert("Unknown control "+e)}},Re.Popup.Initialize=function(e,t){var o=Re.Popup,i=o.Types,o=o.Controls;o[e]?(o=i[i=o[e].type])&&o.Initialize&&o.Initialize(i,e,t):alert("Unknown control "+e)},Re.Popup.Reset=function(e){var t=Re.Popup,o=t.Types;t.Controls;o[e].Reset&&o[e].Reset(e)},Re.Popup.CClick=function(e){var t,o,i=Re.Popup,n=i.Types,r=i.Controls;r[e]?r[e].data&&r[e].data.disabled||(o=n[t=r[e].type],i.Current.id&&(n[r[i.Current.id].type].Hide(t,i.Current.id),e==i.Current.id)?i.Current.id=null:(o&&o.Show&&o.Show(t,e),i.Current.id=e)):alert("Unknown control "+e)},Re.Popup.Close=function(){var e=Re.Popup;e.Types,e.Controls;e.Current.id&&e.CClick(e.Current.id)},Re.Popup.Cancel=function(){var e=Re.Popup,t=e.Types,o=e.Controls;e.Current.id&&(t[t=o[e.Current.id].type].Cancel(t,e.Current.id),e.Current.id=null)},Re.Popup.CreatePopupDiv=function(e,t){var o,e=Re.Popup.Controls[e].data,i=document.createElement("div");return i.style.position="absolute",o=Re.GetElementPosition(e.mainele),i.style.top=o.top+e.mainele.offsetHeight+"px",i.style.left=o.left+"px",i.style.zIndex=100,i.style.backgroundColor="#FFF",i.style.border="1px solid black",t.width&&(i.style.width=t.width),e.mainele.appendChild(i),t.title&&(i.innerHTML='<table cellspacing="0" cellpadding="0" style="border-bottom:1px solid black;"><tr><td style="font-size:10px;cursor:default;width:100%;background-color:#999;color:#FFF;">'+t.title+'</td><td style="font-size:10px;cursor:default;color:#666;" onclick="SocialCalc.Popup.Cancel();">&nbsp;X&nbsp;</td></tr></table>',t.moveable&&(e.dragregistered=i.firstChild.firstChild.firstChild.firstChild,Re.DragRegister(e.dragregistered,!0,!0,{MouseDown:Re.DragFunctionStart,MouseMove:Re.DragFunctionPosition,MouseUp:Re.DragFunctionPosition,Disabled:null,positionobj:i},e.mainele))),i},Re.Popup.EnsurePosition=function(e,t){var o,e=Re.Popup.Controls[e].data,i=e.mainele.firstChild;function n(e){var t=Re.GetElementPosition(e);return t.height=e.offsetHeight,t.width=e.offsetWidth,t.bottom=t.top+t.height,t.right=t.left+t.width,t}i?(o=n(e=e.popupele),t=n(t),(i=n(i)).bottom+o.height<t.bottom&&i.left+o.width<t.right?(e.style.top=i.bottom+"px",e.style.left=i.left+"px"):i.top-o.height>t.top&&i.left+o.width<t.right?(e.style.top=i.top-o.height+"px",e.style.left=i.left+"px"):i.bottom+o.height<t.bottom&&i.right-o.width>t.left?(e.style.top=i.bottom+"px",e.style.left=i.right-o.width+"px"):i.top-o.height>t.top&&i.right-o.width>t.left?(e.style.top=i.top-o.height+"px",e.style.left=i.right-o.width+"px"):i.bottom+o.height<t.bottom&&o.width<t.width?(e.style.top=i.bottom+"px",e.style.left=t.left+Math.floor((t.width-o.width)/2)+"px"):i.top-o.height>t.top&&o.width<t.width?(e.style.top=i.top-o.height+"px",e.style.left=t.left+Math.floor((t.width-o.width)/2)+"px"):o.height<t.height&&i.right+o.width<t.right?(e.style.top=t.top+Math.floor((t.height-o.height)/2)+"px",e.style.left=i.right+"px"):o.height<t.height&&i.left-o.width>t.left&&(e.style.top=t.top+Math.floor((t.height-o.height)/2)+"px",e.style.left=i.left-o.width+"px")):alert("No main popup element firstChild.")},Re.Popup.DestroyPopupDiv=function(e,t){e&&(e.innerHTML="",Re.DragUnregister(t),e.parentNode&&e.parentNode.removeChild(e))},Re.Popup.RGBToHex=function(e){var t=Re.Popup;if(""==e)return"000000";e=e.match(/(\d+)\D+(\d+)\D+(\d+)/);return e?t.ToHex(e[1])+t.ToHex(e[2])+t.ToHex(e[3]):"000000"},Re.Popup.HexDigits="0123456789ABCDEF",Re.Popup.ToHex=function(e){var t=Re.Popup,o=Math.floor(e/16),e=e%16;return t.HexDigits.charAt(o)+t.HexDigits.charAt(e)},Re.Popup.FromHex=function(e){var t=Re.Popup,o=t.HexDigits.indexOf(e.charAt(0).toUpperCase()),t=t.HexDigits.indexOf(e.charAt(1).toUpperCase());return 16*(0<=o?o:0)+(0<=t?t:0)},Re.Popup.HexToRGB=function(e){var t=Re.Popup;return"rgb("+t.FromHex(e.substring(1,3))+","+t.FromHex(e.substring(3,5))+","+t.FromHex(e.substring(5,7))+")"},Re.Popup.makeRGB=function(e,t,o){return"rgb("+(0<e?e:0)+","+(0<t?t:0)+","+(0<o?o:0)+")"},Re.Popup.splitRGB=function(e){e=e.match(/(\d+)\D+(\d+)\D+(\d+)\D/);return e?{r:+e[1],g:+e[2],b:+e[3]}:{r:0,g:0,b:0}},Re.Popup.Types.List={},Re.Popup.Types.List.Create=function(e,t,o){var i=Re.Popup,e=(i.Types,{type:e,value:"",display:"",data:{}}),i=(i.Controls[t]=e).data,e=(i.attribs=o||{},document.getElementById(t));e?((i.mainele=e).innerHTML='<input style="cursor:pointer;width:100px;font-size:smaller;" onfocus="this.blur();" onclick="SocialCalc.Popup.CClick(\''+t+'\');" value="">',i.options=[]):alert("Missing element "+t)},Re.Popup.Types.List.SetValue=function(e,t,i){var n,r=Re.Popup,s=(r.Types,r.Controls[t].data);for(s.value=i,s.custom=!1,n=0;n<s.options.length;n++)if(!((o=s.options[n]).a&&(o.a.skip||o.a.custom||o.a.cancel)||o.v!=s.value)){s.display=o.o;break}n==s.options.length&&(s.display="Custom",s.custom=!0),s.mainele&&s.mainele.firstChild&&(s.mainele.firstChild.value=s.display)},Re.Popup.Types.List.SetDisabled=function(e,t,o){var i=Re.Popup,i=(i.Types,i.Controls[t].data);i.disabled=o,i.mainele&&i.mainele.firstChild&&(i.mainele.firstChild.disabled=o)},Re.Popup.Types.List.GetValue=function(e,t){var o=Re.Popup;o.Types;return o.Controls[t].data.value},Re.Popup.Types.List.Initialize=function(e,t,o){var i,n=Re.Popup,r=(n.Types,n.Controls[t].data);for(i in o.attribs)r.attribs[i]=o.attribs[i];r.options=o?o.options:[],o.value&&n.SetValue(t,o.value)},Re.Popup.Types.List.Reset=function(e){var t=Re.Popup,o=t.Types,i=t.Controls;t.Current.id&&i[t.Current.id].type==e&&(o[e].Hide(e,t.Current.id),t.Current.id=null)},Re.Popup.Types.List.Show=function(e,t){var o,i=Re.Popup,n=(i.Types,i.Controls[t].data),r="";n.popupele=i.CreatePopupDiv(t,n.attribs),n.custom?(r=Re.Popup.Types.List.MakeCustom(e,t),(o=document.createElement("div")).innerHTML='<div style="cursor:default;padding:4px;background-color:#CCC;">'+r+"</div>",n.customele=o.firstChild.firstChild.childNodes[1],n.listdiv=null):(r=Re.Popup.Types.List.MakeList(e,t),(o=document.createElement("div")).innerHTML='<div style="cursor:default;padding:4px;">'+r+"</div>",n.customele=null,n.listdiv=o.firstChild),n.contentele=o,n.mainele&&n.mainele.firstChild&&(n.mainele.firstChild.disabled=!0),n.popupele.appendChild(o),n.attribs.ensureWithin&&Re.Popup.EnsurePosition(t,n.attribs.ensureWithin)},Re.Popup.Types.List.MakeList=function(e,t){var o,i,n=Re.Popup,r=(n.Types,n.Controls[t].data),s='<table cellspacing="0" cellpadding="0"><tr>',a='<td style="vertical-align:top;">';for(s+=a,r.ncols=1,o=0;o<r.options.length;o++){if((i=r.options[o]).a){if(i.a.newcol){s+="</td>"+a+"&nbsp;&nbsp;&nbsp;&nbsp;</td>"+a,r.ncols+=1;continue}if(i.a.skip){s+='<div style="font-size:x-small;white-space:nowrap;">'+i.o+"</div>";continue}}s+='<div style="font-size:x-small;white-space:nowrap;'+(i.v!=r.value||i.a&&(i.a.custom||i.a.cancel)?"":"background-color:#DDF;")+'" onclick="SocialCalc.Popup.Types.List.ItemClicked(\''+t+"','"+o+"');\" onmousemove=\"SocialCalc.Popup.Types.List.MouseMove('"+t+"',this);\">"+i.o+"</div>"}return s+="</td></tr></table>"},Re.Popup.Types.List.MakeCustom=function(e,t){var o=Re.Popup.LocalizeString,i=Re.Popup,n=(i.Types,'style="font-size:smaller;"'),i=i.Controls[t].data.value;return'<div style="white-space:nowrap;"><br><input id="customvalue" value="'+Re.special_chars(i)+'"><br><br><input '+n+' type="button" value="'+o("OK")+'" onclick="SocialCalc.Popup.Types.List.CustomOK(\''+t+"');return false;\"><input "+n+' type="button" value="'+o("List")+'" onclick="SocialCalc.Popup.Types.List.CustomToList(\''+t+"');\"><input "+n+' type="button" value="'+o("Cancel")+'" onclick="SocialCalc.Popup.Close();"><br></div>'},Re.Popup.Types.List.ItemClicked=function(e,t){var o,i,n,r=Re.Popup,r=(r.Types,r.Controls[e].data),s=r.options[t].a;if(s&&s.custom)return o=r.contentele,i=Re.Popup.Types.List.MakeCustom("List",e),(n=document.createElement("div")).innerHTML='<div style="cursor:default;padding:4px;background-color:#CCC;">'+i+"</div>",r.customele=n.firstChild.firstChild.childNodes[1],r.listdiv=null,r.contentele=n,r.popupele.replaceChild(n,o),void(r.attribs.ensureWithin&&Re.Popup.EnsurePosition(e,r.attribs.ensureWithin));s&&s.cancel||Re.Popup.SetValue(e,r.options[t].v),Re.Popup.Close()},Re.Popup.Types.List.CustomToList=function(e){var t=Re.Popup,t=(t.Types,t.Controls[e].data),o=t.contentele,i=Re.Popup.Types.List.MakeList("List",e),n=document.createElement("div");n.innerHTML='<div style="cursor:default;padding:4px;">'+i+"</div>",t.customele=null,t.listdiv=n.firstChild,t.contentele=n,t.popupele.replaceChild(n,o),t.attribs.ensureWithin&&Re.Popup.EnsurePosition(e,t.attribs.ensureWithin)},Re.Popup.Types.List.CustomOK=function(e){var t=Re.Popup,t=(t.Types,t.Controls[e].data);Re.Popup.SetValue(e,t.customele.value),Re.Popup.Close()},Re.Popup.Types.List.MouseMove=function(e,t){var o,i=Re.Popup,n=(i.Types,i.Controls[e].data),i=n.listdiv;if(i){for(var r=i.firstChild.firstChild.firstChild,s=0;s<n.ncols;s++)for(o=0;o<r.childNodes[2*s].childNodes.length;o++)r.childNodes[2*s].childNodes[o].style.backgroundColor="#FFF";t.style.backgroundColor="#DDF"}},Re.Popup.Types.List.Hide=function(e,t){var o=Re.Popup,t=(o.Types,o.Controls[t].data);o.DestroyPopupDiv(t.popupele,t.dragregistered),t.popupele=null,t.mainele&&t.mainele.firstChild&&(t.mainele.firstChild.disabled=!1)},Re.Popup.Types.List.Cancel=function(e,t){Re.Popup.Types.List.Hide(e,t)},Re.Popup.Types.ColorChooser={},Re.Popup.Types.ColorChooser.Create=function(e,t,o){var i=Re.Popup,e=(i.Types,{type:e,value:"",display:"",data:{}}),i=(i.Controls[t]=e).data,e=(i.attribs=o||{},i.attribs),o=(i.value="",document.getElementById(t));o?(i.mainele=o).innerHTML='<div style="cursor:pointer;border:1px solid black;vertical-align:top;width:'+(e.sampleWidth||"15px")+";height:"+(e.sampleHeight||"15px")+';" onclick="SocialCalc.Popup.Types.ColorChooser.ControlClicked(\''+t+"');\">&nbsp;</div>":alert("Missing element "+t)},Re.Popup.Types.ColorChooser.SetValue=function(e,t,o){var i,n=Re.Popup,t=(n.Types,n.Controls[t].data),r=t.attribs;t.value=o,t.custom=!1,t.mainele&&t.mainele.firstChild&&(o=t.value?(t.mainele.firstChild.style.backgroundColor=t.value,i=r.backgroundImage?"url("+n.imagePrefix+r.backgroundImage+")":"","center center"):(t.mainele.firstChild.style.backgroundColor="#FFF",r.backgroundImageDefault?(i="url("+n.imagePrefix+r.backgroundImageDefault+")","center center"):(i="url("+n.imagePrefix+"defaultcolor.gif)","left top")),t.mainele.firstChild.style.backgroundPosition=o,t.mainele.firstChild.style.backgroundImage=i)},Re.Popup.Types.ColorChooser.SetDisabled=function(e,t,o){var i=Re.Popup,n=(i.Types,i.Controls[t].data),r=n.attribs;n.disabled=o,n.mainele&&n.mainele.firstChild&&(o?(n.mainele.firstChild.style.backgroundColor="#DDD",pos=r.backgroundImageDisabled?(img="url("+i.imagePrefix+r.backgroundImageDisabled+")","center center"):(img="url("+i.imagePrefix+"defaultcolor.gif)","left top"),n.mainele.firstChild.style.backgroundPosition=pos,n.mainele.firstChild.style.backgroundImage=img):i.SetValue(t,n.value))},Re.Popup.Types.ColorChooser.GetValue=function(e,t){var o=Re.Popup;o.Types;return o.Controls[t].data.value},Re.Popup.Types.ColorChooser.Initialize=function(e,t,o){var i,n=Re.Popup,r=(n.Types,n.Controls[t].data);for(i in o.attribs)r.attribs[i]=o.attribs[i];o.value&&n.SetValue(t,o.value)},Re.Popup.Types.ColorChooser.Reset=function(e){var t=Re.Popup,o=t.Types,i=t.Controls;t.Current.id&&i[t.Current.id].type==e&&(o[e].Hide(e,t.Current.id),t.Current.id=null)},Re.Popup.Types.ColorChooser.Show=function(e,t){var o,i=Re.Popup,n=(i.Types,i.Controls[t].data);n.oldvalue=n.value,n.popupele=i.CreatePopupDiv(t,n.attribs),n.custom?(i=Re.Popup.Types.ColorChooser.MakeCustom(e,t),(o=document.createElement("div")).innerHTML='<div style="cursor:default;padding:4px;background-color:#CCC;">'+i+"</div>",n.customele=o.firstChild.firstChild.childNodes[2]):(i=Re.Popup.Types.ColorChooser.CreateGrid(e,t),(o=document.createElement("div")).style.padding="3px",o.style.backgroundColor="#CCC",o.appendChild(i),n.customele=null),n.contentele=o,n.popupele.appendChild(o),n.attribs.ensureWithin&&Re.Popup.EnsurePosition(t,n.attribs.ensureWithin)},Re.Popup.Types.ColorChooser.MakeCustom=function(e,t){var o=Re.Popup,i=(o.Types,o.Controls[t].data),o=o.LocalizeString,n='style="font-size:smaller;"';return'<div style="white-space:nowrap;"><br>#<input id="customvalue" style="width:75px;" value="'+i.value+'"><br><br><input '+n+' type="button" value="'+o("OK")+'" onclick="SocialCalc.Popup.Types.ColorChooser.CustomOK(\''+t+"');return false;\"><input "+n+' type="button" value="'+o("Grid")+'" onclick="SocialCalc.Popup.Types.ColorChooser.CustomToGrid(\''+t+"');\"><br></div>"},Re.Popup.Types.ColorChooser.ItemClicked=function(e,t){var o=Re.Popup;o.Types,o.Controls[e].data;Re.Popup.Close()},Re.Popup.Types.ColorChooser.CustomToList=function(e){var t=Re.Popup;t.Types,t.Controls[e].data},Re.Popup.Types.ColorChooser.CustomOK=function(e){var t=Re.Popup,o=(t.Types,t.Controls[e].data);t.SetValue(e,o.customele.value),t.Close()},Re.Popup.Types.ColorChooser.Hide=function(e,t){var o=Re.Popup,t=(o.Types,o.Controls[t].data);o.DestroyPopupDiv(t.popupele,t.dragregistered),t.popupele=null},Re.Popup.Types.ColorChooser.Cancel=function(e,t){var o=Re.Popup,i=(o.Types,o.Controls[t].data);o.SetValue(t,i.oldvalue),Re.Popup.Types.ColorChooser.Hide(e,t)},Re.Popup.Types.ColorChooser.CreateGrid=function(e,t){var o,i,n,r,s=Re.Popup,a=s.Types,l=s.Controls,c=s.LocalizeString,l=l[t].data,u=(l.grid={},l.grid),l=document.createElement("div"),d=document.createElement("table");for(d.cellSpacing=0,d.cellPadding=0,d.style.width="100px",u.table=d,d=document.createElement("tbody"),u.table.appendChild(d),u.tbody=d,o=0;o<16;o++){for(i=document.createElement("tr"),n=0;n<5;n++)u[o+","+n]=r={},(d=document.createElement("td")).style.fontSize="1px",d.innerHTML="&nbsp;",d.style.height="10px",n<=1?(d.style.width="17px",d.style.borderRight="3px solid white"):(d.style.width="20px",d.style.backgroundRepeat="no-repeat"),i.appendChild(d),r.ele=d;u.tbody.appendChild(i)}return l.appendChild(u.table),(d=document.createElement("div")).style.marginTop="3px",d.innerHTML='<table cellspacing="0" cellpadding="0"><tr><td style="width:17px;background-color:#FFF;background-image:url('+s.imagePrefix+'defaultcolor.gif);height:16px;font-size:10px;cursor:pointer;" title="'+c("Default")+'">&nbsp;</td><td style="width:23px;height:16px;font-size:10px;text-align:center;cursor:pointer;" title="'+c("Custom")+'">#</td><td style="width:60px;height:16px;font-size:10px;text-align:center;cursor:pointer;">'+c("OK")+"</td></tr></table>",u.defaultbox=d.firstChild.firstChild.firstChild.childNodes[0],u.defaultbox.onclick=a.ColorChooser.DefaultClicked,u.custom=d.firstChild.firstChild.firstChild.childNodes[1],u.custom.onclick=a.ColorChooser.CustomClicked,u.msg=d.firstChild.firstChild.firstChild.childNodes[2],u.msg.onclick=a.ColorChooser.CloseOK,l.appendChild(d),u.table.onmousedown=a.ColorChooser.GridMouseDown,a.ColorChooser.DetermineColors(t),a.ColorChooser.SetColors(t),l},Re.Popup.Types.ColorChooser.gridToG=function(e,t,o){return e[t+","+o]},Re.Popup.Types.ColorChooser.DetermineColors=function(e){var t=Re.Popup,o=t.Types.ColorChooser,e=t.Controls[e].data,i=e.grid,e=t.splitRGB(e.value),n=2,r=16-Math.floor((e.r+16)/16);for(i["selectedrow"+n]=r,r=0;r<16;r++)o.gridToG(i,r,n).rgb=t.makeRGB(17*(15-r),0,0);for(n=3,r=16-Math.floor((e.g+16)/16),i["selectedrow"+n]=r,r=0;r<16;r++)o.gridToG(i,r,n).rgb=t.makeRGB(0,17*(15-r),0);for(n=4,r=16-Math.floor((e.b+16)/16),i["selectedrow"+n]=r,r=0;r<16;r++)o.gridToG(i,r,n).rgb=t.makeRGB(0,0,17*(15-r));for(n=1,r=0;r<16;r++)o.gridToG(i,r,n).rgb=t.makeRGB(17*(15-r),17*(15-r),17*(15-r));var s,a=[n=0,68,153,204,255],l=["400","310","420","440","442","340","040","042","032","044","024","004","204","314","402","414"];for(r=0;r<16;r++)s=l[r],o.gridToG(i,r,n).rgb="rgb("+a[+s.charAt(0)]+","+a[+s.charAt(1)]+","+a[+s.charAt(2)]+")"},Re.Popup.Types.ColorChooser.SetColors=function(e){for(var t,o,i=Re.Popup,n=i.Types.ColorChooser,r=i.Controls[e].data,s=r.grid,a=0;a<16;a++)for(t=0;t<5;t++)(o=n.gridToG(s,a,t)).ele.style.backgroundColor=o.rgb,o.ele.title=i.RGBToHex(o.rgb),s["selectedrow"+t]==a?o.ele.style.backgroundImage="url("+i.imagePrefix+"chooserarrow.gif)":o.ele.style.backgroundImage="";i.SetValue(e,r.value),s.msg.style.backgroundColor=r.value,(e=i.splitRGB(r.value||"rgb(255,255,255)")).r+e.g+e.b<220?s.msg.style.color="#FFF":s.msg.style.color="#000",r.value?(s.msg.style.backgroundImage="",s.msg.title=i.RGBToHex(r.value)):(s.msg.style.backgroundColor="#FFF",s.msg.style.backgroundImage="url("+i.imagePrefix+"defaultcolor.gif)",s.msg.title="Default")},Re.Popup.Types.ColorChooser.GridMouseDown=function(e){var e=e||M.event,t=Re.Popup,o=t.Types.ColorChooser,i=t.Controls,n=t.Current.id;if(n){var r=i[n].data,s=r.grid;switch(e.type){case"mousedown":s.mousedown=!0;break;case"mouseup":s.mousedown=!1;break;case"mousemove":if(s.mousedown)break;return}var i=Re.GetElementPositionWithScroll(r.mainele),a=e.clientX-i.left,e=e.clientY-i.top,l=Re.GetElementPositionWithScroll(s.table);l.left-=i.left,l.top-=i.top;var i=(i=Math.floor((e-l.top-2)/10))<0?0:i,e=Math.floor((a-l.left)/20),c=o.gridToG(s,i=i<0?0:15<i?15:i,e=e<0?0:4<e?4:e).ele.style.backgroundColor,u=t.splitRGB(c),d=t.splitRGB(r.value);switch(e){case 2:r.value=t.makeRGB(u.r,d.g,d.b);break;case 3:r.value=t.makeRGB(d.r,u.g,d.b);break;case 4:r.value=t.makeRGB(d.r,d.g,u.b);break;case 0:case 1:r.value=c}o.DetermineColors(n),o.SetColors(n)}},Re.Popup.Types.ColorChooser.ControlClicked=function(e){var t=Re.Popup,o=t.Types.ColorChooser,i=(t.Controls,t.Current.id);i&&e==i?o.CloseOK():t.CClick(e)},Re.Popup.Types.ColorChooser.DefaultClicked=function(e){e||M.event;var e=Re.Popup,t=(e.Types.ColorChooser,e.Controls),e=e.Current.id;e&&((t=t[e].data).value="",Re.Popup.SetValue(e,t.value),Re.Popup.Close())},Re.Popup.Types.ColorChooser.CustomClicked=function(e){e||M.event;var t,o,i,e=Re.Popup,n=(e.Types.ColorChooser,e.Controls),r=e.Current.id;r&&(t=(n=n[r].data).contentele,o=Re.Popup.Types.ColorChooser.MakeCustom("ColorChooser",r),(i=document.createElement("div")).innerHTML='<div style="cursor:default;padding:4px;background-color:#CCC;">'+o+"</div>",n.customele=i.firstChild.firstChild.childNodes[2],n.contentele=i,n.popupele.replaceChild(i,t),n.customele.value=e.RGBToHex(n.value),n.attribs.ensureWithin&&Re.Popup.EnsurePosition(r,n.attribs.ensureWithin))},Re.Popup.Types.ColorChooser.CustomToGrid=function(e){var t,o,i=Re.Popup,n=(i.Types,i.Controls[e].data);Re.Popup.SetValue(e,i.HexToRGB("#"+n.customele.value)),i=n.contentele,t=Re.Popup.Types.ColorChooser.CreateGrid("ColorChooser",e),(o=document.createElement("div")).style.padding="3px",o.style.backgroundColor="#CCC",o.appendChild(t),n.customele=null,n.contentele=o,n.popupele.replaceChild(o,i),n.attribs.ensureWithin&&Re.Popup.EnsurePosition(e,n.attribs.ensureWithin)},Re.Popup.Types.ColorChooser.CustomOK=function(e){var t=Re.Popup,o=(t.Types,t.Controls[e].data);Re.Popup.SetValue(e,t.HexToRGB("#"+o.customele.value)),Re.Popup.Close()},Re.Popup.Types.ColorChooser.CloseOK=function(e){e||M.event;var e=Re.Popup,t=(e.Types.ColorChooser,e.Controls),e=e.Current.id;e&&(t=t[e].data,Re.Popup.SetValue(e,t.value),Re.Popup.Close())},Re||(alert("Main SocialCalc code module needed"),Re={}),Re.TableEditor||alert("SocialCalc TableEditor code module needed"),Re.CurrentSpreadsheetControlObject=null,Re.SpreadsheetControl=function(e){var t=Re.Constants;this.parentNode=null,this.spreadsheetDiv=null,this.requestedHeight=0,this.requestedWidth=0,this.requestedSpaceBelow=0,this.height=0,this.width=0,this.viewheight=0,this.tabs=[],this.tabnums={},this.tabreplacements={},this.currentTab=-1,this.views={},this.sheet=null,this.context=null,this.editor=null,this.spreadsheetDiv=null,this.editorDiv=null,this.sortrange="",this.moverange="",this.idPrefix=e||"SocialCalc-",this.multipartBoundary="SocialCalcSpreadsheetControlSave",this.imagePrefix=t.defaultImagePrefix,this.toolbarbackground=t.SCToolbarbackground,this.tabbackground=t.SCTabbackground,this.tabselectedCSS=t.SCTabselectedCSS,this.tabplainCSS=t.SCTabplainCSS,this.toolbartext=t.SCToolbartext,this.formulabarheight=t.SCFormulabarheight,this.statuslineheight=t.SCStatuslineheight,this.statuslineCSS=t.SCStatuslineCSS,this.ExportCallback=null,void 0===Re.debug_log&&(Re.debug_log=[]),this.sheet=new Re.Sheet,this.context=new Re.RenderContext(this.sheet),this.context.showGrid=!0,this.context.showRCHeaders=!0,this.editor=new Re.TableEditor(this.context),this.editor.StatusCallback.statusline={func:Re.SpreadsheetControlStatuslineCallback,params:{statuslineid:this.idPrefix+"statusline",recalcid1:this.idPrefix+"divider_recalc",recalcid2:this.idPrefix+"button_recalc"}},(Re.CurrentSpreadsheetControlObject=this).editor.MoveECellCallback.movefrom=function(e){var t=Re.GetSpreadsheetControlObject();t.context.cursorsuffix="",e.range2.hasrange&&!e.cellhandles.noCursorSuffix&&(e.ecell.row==e.range2.top&&(e.ecell.col<e.range2.left||e.ecell.col>e.range2.right+1)&&(t.context.cursorsuffix="insertleft"),e.ecell.col==e.range2.left&&(e.ecell.row<e.range2.top||e.ecell.row>e.range2.bottom+1)&&(t.context.cursorsuffix="insertup"))},this.formulabuttons={formulafunctions:{image:"insertformula.png",tooltip:"Functions",command:Re.SpreadsheetControl.DoFunctionList},multilineinput:{image:"listbox.png",tooltip:"Multi-line Input Box",command:Re.SpreadsheetControl.DoMultiline},link:{image:"inserthyperlink.png",tooltip:"Link Input Box",command:Re.SpreadsheetControl.DoLink},sum:{image:"autosum.png",tooltip:"Auto Sum",command:Re.SpreadsheetControl.DoSum}},this.findbuttons={last:{image:"upsearch.png",tooltip:"Find Previous",command:Re.SpreadsheetControl.SearchUp},next:{image:"downsearch.png",tooltip:"Find Next",command:Re.SpreadsheetControl.SearchDown}},this.tabnums.edit=this.tabs.length,this.tabs.push({name:"edit",text:"Edit",html:' <div id="%id.edittools" style="padding:10px 0px 0px 0px;">&nbsp;<img id="%id.button_undo" src="%img.undo.png" style="vertical-align:bottom;"> <img id="%id.button_redo" src="%img.redo.png" style="vertical-align:bottom;"> &nbsp;<img src="%img.divider1.png" style="vertical-align:bottom;">&nbsp; <img id="%id.button_copy" src="%img.copy.png" style="vertical-align:bottom;"> <img id="%id.button_cut" src="%img.cut.png" style="vertical-align:bottom;"> <img id="%id.button_paste" src="%img.paste.png" style="vertical-align:bottom;"> &nbsp;<img src="%img.divider1.png" style="vertical-align:bottom;">&nbsp; <img id="%id.button_delete" src="%img.delete.png" style="vertical-align:bottom;"> <img id="%id.button_pasteformats" src="%img.formatpaintbrush.png" style="vertical-align:bottom;"> &nbsp;<img src="%img.divider1.png" style="vertical-align:bottom;">&nbsp;  <span id="%id.locktools"><img id="%id.button_lock" src="%img.lock.png" style="vertical-align:bottom;"> <img id="%id.button_unlock" src="%img.unlock.png" style="vertical-align:bottom;"> &nbsp;<img src="%img.divider1.png" style="vertical-align:bottom;">&nbsp;</span> <img id="%id.button_filldown" src="%img.filldown.png" style="vertical-align:bottom;"> <img id="%id.button_fillright" src="%img.fillright.png" style="vertical-align:bottom;"> &nbsp;<img src="%img.divider1.png" style="vertical-align:bottom;">&nbsp; <img id="%id.button_movefrom" src="%img.movefromoff.gif" style="vertical-align:bottom;"> <img id="%id.button_movepaste" src="%img.movepasteoff.gif" style="vertical-align:bottom;"> <img id="%id.button_moveinsert" src="%img.moveinsertoff.gif" style="vertical-align:bottom;"> &nbsp;<img src="%img.divider1.png" style="vertical-align:bottom;">&nbsp; <img id="%id.button_alignleft" src="%img.alignleft.png" style="vertical-align:bottom;"> <img id="%id.button_aligncenter" src="%img.aligncenter.png" style="vertical-align:bottom;"> <img id="%id.button_alignright" src="%img.alignright.png" style="vertical-align:bottom;"> &nbsp;<img src="%img.divider1.png" style="vertical-align:bottom;">&nbsp; <img id="%id.button_borderon" src="%img.borderson.png" style="vertical-align:bottom;">  <img id="%id.button_borderoff" src="%img.bordersoff.png" style="vertical-align:bottom;">  <img id="%id.button_swapcolors" src="%img.swapcolors.png" style="vertical-align:bottom;">  &nbsp;<img src="%img.divider1.png" style="vertical-align:bottom;">&nbsp; <img id="%id.button_merge" src="%img.mergecells.png" style="vertical-align:bottom;">  &nbsp;<img src="%img.divider1.png" style="vertical-align:bottom;">&nbsp; <img id="%id.button_insertrow" src="%img.insertrows.png" style="vertical-align:bottom;">  <img id="%id.button_insertcol" src="%img.insertcolumns.png" style="vertical-align:bottom;">  <img id="%id.button_deleterow" src="%img.deleterows.png" style="vertical-align:bottom;">  <img id="%id.button_deletecol" src="%img.deletecolumns.png" style="vertical-align:bottom;">  <img id="%id.button_hiderow" src="%img.hiderow.png" style="vertical-align:bottom;">  <img id="%id.button_hidecol" src="%img.hidecol.png" style="vertical-align:bottom;">  &nbsp;<img id="%id.divider_recalc" src="%img.divider1.png" style="vertical-align:bottom;">&nbsp; <img id="%id.button_recalc" src="%img.recalc.png" style="vertical-align:bottom;">  </div>',oncreate:null,onclick:null}),this.tabnums.settings=this.tabs.length,this.tabs.push({name:"settings",text:"Format",html:'<div id="%id.settingstools" style="display:none;"> <div id="%id.sheetsettingstoolbar" style="display:none;">  <table cellspacing="0" cellpadding="0"><tr><td>   <div style="%tbt.">%loc!SHEET SETTINGS!:</div>   </td></tr><tr><td>   <input id="%id.settings-savesheet" type="button" value="%loc!Save!" onclick="SocialCalc.SettingsControlSave(\'sheet\');">   <input type="button" value="%loc!Cancel!" onclick="SocialCalc.SettingsControlSave(\'cancel\');">   <input type="button" value="%loc!Show Cell Settings!" onclick="SocialCalc.SpreadsheetControlSettingsSwitch(\'cell\');return false;">   </td></tr></table> </div> <div id="%id.cellsettingstoolbar" style="display:none;">  <table cellspacing="0" cellpadding="0"><tr><td>   <div style="%tbt.">%loc!CELL SETTINGS!: <span id="%id.settingsecell">&nbsp;</span></div>   </td></tr><tr><td>  <input id="%id.settings-savecell" type="button" value="%loc!Save!" onclick="SocialCalc.SettingsControlSave(\'cell\');">  <input type="button" value="%loc!Cancel!" onclick="SocialCalc.SettingsControlSave(\'cancel\');">  <input type="button" value="%loc!Show Sheet Settings!" onclick="SocialCalc.SpreadsheetControlSettingsSwitch(\'sheet\');return false;">  </td></tr></table> </div></div>',view:"settings",onclick:function(e,t){Re.SettingsControls.idPrefix=e.idPrefix,Re.SettingControlReset();var o=e.sheet.EncodeSheetAttributes(),i=e.sheet.EncodeCellAttributes(e.editor.ecell.coord);Re.SettingsControlLoadPanel(e.views.settings.values.sheetspanel,o),Re.SettingsControlLoadPanel(e.views.settings.values.cellspanel,i),document.getElementById(e.idPrefix+"settingsecell").innerHTML=e.editor.ecell.coord,Re.SpreadsheetControlSettingsSwitch("cell"),e.views.settings.element.style.height=e.viewheight+"px",e.views.settings.element.firstChild.style.height=e.viewheight+"px",o=e.editor.range.hasrange?Re.crToCoord(e.editor.range.left,e.editor.range.top)+":"+Re.crToCoord(e.editor.range.right,e.editor.range.bottom):e.editor.ecell.coord,document.getElementById(e.idPrefix+"settings-savecell").value=Re.LocalizeString("Save to")+": "+o},onclickFocus:!0}),this.views.settings={name:"settings",values:{},oncreate:function(e,t){var o=Re.Constants;t.values.sheetspanel={colorchooser:{id:e.idPrefix+"scolorchooser"},formatnumber:{setting:"numberformat",type:"PopupList",id:e.idPrefix+"formatnumber",initialdata:o.SCFormatNumberFormats},formattext:{setting:"textformat",type:"PopupList",id:e.idPrefix+"formattext",initialdata:o.SCFormatTextFormats},fontfamily:{setting:"fontfamily",type:"PopupList",id:e.idPrefix+"fontfamily",initialdata:o.SCFormatFontfamilies},fontlook:{setting:"fontlook",type:"PopupList",id:e.idPrefix+"fontlook",initialdata:o.SCFormatFontlook},fontsize:{setting:"fontsize",type:"PopupList",id:e.idPrefix+"fontsize",initialdata:o.SCFormatFontsizes},textalignhoriz:{setting:"textalignhoriz",type:"PopupList",id:e.idPrefix+"textalignhoriz",initialdata:o.SCFormatTextAlignhoriz},numberalignhoriz:{setting:"numberalignhoriz",type:"PopupList",id:e.idPrefix+"numberalignhoriz",initialdata:o.SCFormatNumberAlignhoriz},alignvert:{setting:"alignvert",type:"PopupList",id:e.idPrefix+"alignvert",initialdata:o.SCFormatAlignVertical},textcolor:{setting:"textcolor",type:"ColorChooser",id:e.idPrefix+"textcolor"},bgcolor:{setting:"bgcolor",type:"ColorChooser",id:e.idPrefix+"bgcolor"},padtop:{setting:"padtop",type:"PopupList",id:e.idPrefix+"padtop",initialdata:o.SCFormatPadsizes},padright:{setting:"padright",type:"PopupList",id:e.idPrefix+"padright",initialdata:o.SCFormatPadsizes},padbottom:{setting:"padbottom",type:"PopupList",id:e.idPrefix+"padbottom",initialdata:o.SCFormatPadsizes},padleft:{setting:"padleft",type:"PopupList",id:e.idPrefix+"padleft",initialdata:o.SCFormatPadsizes},colwidth:{setting:"colwidth",type:"PopupList",id:e.idPrefix+"colwidth",initialdata:o.SCFormatColwidth},recalc:{setting:"recalc",type:"PopupList",id:e.idPrefix+"recalc",initialdata:o.SCFormatRecalc},usermaxcol:{setting:"usermaxcol",type:"PopupList",id:e.idPrefix+"usermaxcol",initialdata:o.SCFormatUserMaxCol},usermaxrow:{setting:"usermaxrow",type:"PopupList",id:e.idPrefix+"usermaxrow",initialdata:o.SCFormatUserMaxRow}},t.values.cellspanel={name:"cell",colorchooser:{id:e.idPrefix+"scolorchooser"},cformatnumber:{setting:"numberformat",type:"PopupList",id:e.idPrefix+"cformatnumber",initialdata:o.SCFormatNumberFormats},cformattext:{setting:"textformat",type:"PopupList",id:e.idPrefix+"cformattext",initialdata:o.SCFormatTextFormats},cfontfamily:{setting:"fontfamily",type:"PopupList",id:e.idPrefix+"cfontfamily",initialdata:o.SCFormatFontfamilies},cfontlook:{setting:"fontlook",type:"PopupList",id:e.idPrefix+"cfontlook",initialdata:o.SCFormatFontlook},cfontsize:{setting:"fontsize",type:"PopupList",id:e.idPrefix+"cfontsize",initialdata:o.SCFormatFontsizes},calignhoriz:{setting:"alignhoriz",type:"PopupList",id:e.idPrefix+"calignhoriz",initialdata:o.SCFormatTextAlignhoriz},calignvert:{setting:"alignvert",type:"PopupList",id:e.idPrefix+"calignvert",initialdata:o.SCFormatAlignVertical},ctextcolor:{setting:"textcolor",type:"ColorChooser",id:e.idPrefix+"ctextcolor"},cbgcolor:{setting:"bgcolor",type:"ColorChooser",id:e.idPrefix+"cbgcolor"},cbt:{setting:"bt",type:"BorderSide",id:e.idPrefix+"cbt"},cbr:{setting:"br",type:"BorderSide",id:e.idPrefix+"cbr"},cbb:{setting:"bb",type:"BorderSide",id:e.idPrefix+"cbb"},cbl:{setting:"bl",type:"BorderSide",id:e.idPrefix+"cbl"},cpadtop:{setting:"padtop",type:"PopupList",id:e.idPrefix+"cpadtop",initialdata:o.SCFormatPadsizes},cpadright:{setting:"padright",type:"PopupList",id:e.idPrefix+"cpadright",initialdata:o.SCFormatPadsizes},cpadbottom:{setting:"padbottom",type:"PopupList",id:e.idPrefix+"cpadbottom",initialdata:o.SCFormatPadsizes},cpadleft:{setting:"padleft",type:"PopupList",id:e.idPrefix+"cpadleft",initialdata:o.SCFormatPadsizes}},Re.SettingsControlInitializePanel(t.values.sheetspanel),Re.SettingsControlInitializePanel(t.values.cellspanel)},replacements:{itemtitle:{regex:/\%itemtitle\./g,replacement:'style="padding:12px 10px 0px 10px;font-weight:bold;text-align:right;vertical-align:top;font-size:small;"'},sectiontitle:{regex:/\%sectiontitle\./g,replacement:'style="padding:16px 10px 0px 0px;font-weight:bold;vertical-align:top;font-size:small;color:#C00;"'},parttitle:{regex:/\%parttitle\./g,replacement:'style="font-weight:bold;font-size:x-small;padding:0px 0px 3px 0px;"'},itembody:{regex:/\%itembody\./g,replacement:'style="padding:12px 0px 0px 0px;vertical-align:top;font-size:small;"'},bodypart:{regex:/\%bodypart\./g,replacement:'style="padding:0px 10px 0px 0px;font-size:small;vertical-align:top;"'}},divStyle:"border:1px solid black;overflow:auto;",html:'<div id="%id.scolorchooser" style="display:none;position:absolute;z-index:20;"></div><table cellspacing="0" cellpadding="0"> <tr><td style="vertical-align:top;"><table id="%id.sheetsettingstable" style="display:none;" cellspacing="0" cellpadding="0"><tr> <td %itemtitle.><br>%loc!Default Format!:</td> <td %itembody.>   <table cellspacing="0" cellpadding="0"><tr>    <td %bodypart.>     <div %parttitle.>%loc!Number!</div>     <span id="%id.formatnumber"></span>    </td>    <td %bodypart.>     <div %parttitle.>%loc!Text!</div>     <span id="%id.formattext"></span>    </td>   </tr></table> </td></tr><tr> <td %itemtitle.><br>%loc!Default Alignment!:</td> <td %itembody.>   <table cellspacing="0" cellpadding="0"><tr>    <td %bodypart.>     <div %parttitle.>%loc!Text Horizontal!</div>     <span id="%id.textalignhoriz"></span>    </td>    <td %bodypart.>     <div %parttitle.>%loc!Number Horizontal!</div>     <span id="%id.numberalignhoriz"></span>    </td>    <td %bodypart.>     <div %parttitle.>%loc!Vertical!</div>     <span id="%id.alignvert"></span>    </td>   </tr></table> </td></tr><tr> <td %itemtitle.><br>%loc!Default Font!:</td> <td %itembody.>   <table cellspacing="0" cellpadding="0"><tr>    <td %bodypart.>     <div %parttitle.>%loc!Family!</div>     <span id="%id.fontfamily"></span>    </td>    <td %bodypart.>     <div %parttitle.>%loc!Bold &amp; Italics!</div>     <span id="%id.fontlook"></span>    </td>    <td %bodypart.>     <div %parttitle.>%loc!Size!</div>     <span id="%id.fontsize"></span>    </td>    <td %bodypart.>     <div %parttitle.>%loc!Color!</div>     <div id="%id.textcolor"></div>    </td>    <td %bodypart.>     <div %parttitle.>%loc!Background!</div>     <div id="%id.bgcolor"></div>    </td>   </tr></table> </td></tr><tr> <td %itemtitle.><br>%loc!Default Padding!:</td> <td %itembody.>   <table cellspacing="0" cellpadding="0"><tr>    <td %bodypart.>     <div %parttitle.>%loc!Top!</div>     <span id="%id.padtop"></span>    </td>    <td %bodypart.>     <div %parttitle.>%loc!Right!</div>     <span id="%id.padright"></span>    </td>    <td %bodypart.>     <div %parttitle.>%loc!Bottom!</div>     <span id="%id.padbottom"></span>    </td>    <td %bodypart.>     <div %parttitle.>%loc!Left!</div>     <span id="%id.padleft"></span>    </td>   </tr></table> </td></tr><tr> <td %itemtitle.><br>%loc!Default Column Width!:</td> <td %itembody.>   <table cellspacing="0" cellpadding="0"><tr>    <td %bodypart.>     <div %parttitle.>&nbsp;</div>     <span id="%id.colwidth"></span>    </td>   </tr></table> </td></tr><tr> <td %itemtitle.><br>%loc!Recalculation!:</td> <td %itembody.>   <table cellspacing="0" cellpadding="0"><tr>    <td %bodypart.>     <div %parttitle.>&nbsp;</div>     <span id="%id.recalc"></span>    </td>   </tr></table> </td></tr><tr> <td %itemtitle.><br>%loc!Dimensions!:</td> <td %itembody.>   <table cellspacing="0" cellpadding="0"><tr>    <td %bodypart.>     <div %parttitle.>%loc!Columns!</div>     <span id="%id.usermaxcol"></span>    </td>    <td %bodypart.>     <div %parttitle.>%loc!Rows!</div>     <span id="%id.usermaxrow"></span>    </td>   </tr></table> </td></tr></table><table id="%id.cellsettingstable" cellspacing="0" cellpadding="0"><tr> <td %itemtitle.><br>%loc!Format!:</td> <td %itembody.>   <table cellspacing="0" cellpadding="0"><tr>    <td %bodypart.>     <div %parttitle.>%loc!Number!</div>     <span id="%id.cformatnumber"></span>    </td>    <td %bodypart.>     <div %parttitle.>%loc!Text!</div>     <span id="%id.cformattext"></span>    </td>   </tr></table> </td></tr><tr> <td %itemtitle.><br>%loc!Alignment!:</td> <td %itembody.>   <table cellspacing="0" cellpadding="0"><tr>    <td %bodypart.>     <div %parttitle.>%loc!Horizontal!</div>     <span id="%id.calignhoriz"></span>    </td>    <td %bodypart.>     <div %parttitle.>%loc!Vertical!</div>     <span id="%id.calignvert"></span>    </td>   </tr></table> </td></tr><tr> <td %itemtitle.><br>%loc!Font!:</td> <td %itembody.>   <table cellspacing="0" cellpadding="0"><tr>    <td %bodypart.>     <div %parttitle.>%loc!Family!</div>     <span id="%id.cfontfamily"></span>    </td>    <td %bodypart.>     <div %parttitle.>%loc!Bold &amp; Italics!</div>     <span id="%id.cfontlook"></span>    </td>    <td %bodypart.>     <div %parttitle.>%loc!Size!</div>     <span id="%id.cfontsize"></span>    </td>    <td %bodypart.>     <div %parttitle.>%loc!Color!</div>     <div id="%id.ctextcolor"></div>    </td>    <td %bodypart.>     <div %parttitle.>%loc!Background!</div>     <div id="%id.cbgcolor"></div>    </td>   </tr></table> </td></tr><tr> <td %itemtitle.><br>%loc!Borders!:</td> <td %itembody.>   <table cellspacing="0" cellpadding="0">    <tr><td %bodypart. colspan="3"><div %parttitle.>%loc!Top Border!</div></td>     <td %bodypart. colspan="3"><div %parttitle.>%loc!Right Border!</div></td>     <td %bodypart. colspan="3"><div %parttitle.>%loc!Bottom Border!</div></td>     <td %bodypart. colspan="3"><div %parttitle.>%loc!Left Border!</div></td>    </tr><tr>    <td %bodypart.>     <input id="%id.cbt-onoff-bcb" onclick="SocialCalc.SettingsControlOnchangeBorder(this);" type="checkbox">    </td>    <td %bodypart.>     <div id="%id.cbt-color"></div>    </td>    <td>&nbsp;&nbsp;&nbsp;&nbsp;</td>    <td %bodypart.>     <input id="%id.cbr-onoff-bcb" onclick="SocialCalc.SettingsControlOnchangeBorder(this);" type="checkbox">    </td>    <td %bodypart.>     <div id="%id.cbr-color"></div>    </td>    <td>&nbsp;&nbsp;&nbsp;&nbsp;</td>    <td %bodypart.>     <input id="%id.cbb-onoff-bcb" onclick="SocialCalc.SettingsControlOnchangeBorder(this);" type="checkbox">    </td>    <td %bodypart.>     <div id="%id.cbb-color"></div>    </td>    <td>&nbsp;&nbsp;&nbsp;&nbsp;</td>    <td %bodypart.>     <input id="%id.cbl-onoff-bcb" onclick="SocialCalc.SettingsControlOnchangeBorder(this);" type="checkbox">    </td>    <td %bodypart.>     <div id="%id.cbl-color"></div>    </td>    <td>&nbsp;&nbsp;&nbsp;&nbsp;</td>   </tr></table> </td></tr><tr> <td %itemtitle.><br>%loc!Padding!:</td> <td %itembody.>   <table cellspacing="0" cellpadding="0"><tr>    <td %bodypart.>     <div %parttitle.>%loc!Top!</div>     <span id="%id.cpadtop"></span>    </td>    <td %bodypart.>     <div %parttitle.>%loc!Right!</div>     <span id="%id.cpadright"></span>    </td>    <td %bodypart.>     <div %parttitle.>%loc!Bottom!</div>     <span id="%id.cpadbottom"></span>    </td>    <td %bodypart.>     <div %parttitle.>%loc!Left!</div>     <span id="%id.cpadleft"></span>    </td>   </tr></table> </td></tr></table> </td><td style="vertical-align:top;padding:12px 0px 0px 12px;">  <div style="width:100px;height:100px;overflow:hidden;border:1px solid black;background-color:#EEE;padding:6px;">   <table cellspacing="0" cellpadding="0"><tr>    <td id="sample-text" style="height:100px;width:100px;"><div>%loc!This is a<br>sample!</div><div>-1234.5</div></td>   </tr></table>  </div> </td></tr></table><br>'},this.tabnums.sort=this.tabs.length,this.tabs.push({name:"sort",text:"Sort",html:' <div id="%id.sorttools" style="display:none;">  <table cellspacing="0" cellpadding="0"><tr>   <td style="vertical-align:top;padding-right:4px;width:160px;">    <div style="%tbt.">%loc!Set Cells To Sort!</div>    <select id="%id.sortlist" size="1" onfocus="%s.CmdGotFocus(this);"><option selected>[select range]</option><option value="all">Sort All</option></select>    <input type="button" value="%loc!OK!" onclick="%s.DoCmd(this, \'ok-setsort\');" style="font-size:x-small;">   </td>   <td style="vertical-align:middle;padding-right:16px;width:100px;text-align:right;">    <div style="%tbt.">&nbsp;</div>    <input type="button" id="%id.sortbutton" value="%loc!Sort Cells! A1:A1" onclick="%s.DoCmd(this, \'dosort\');" style="visibility:hidden;">   </td>   <td style="vertical-align:top;padding-right:16px;">    <table cellspacing="0" cellpadding="0"><tr>     <td style="vertical-align:top;">      <div style="%tbt.">%loc!Major Sort!</div>      <select id="%id.majorsort" size="1" onfocus="%s.CmdGotFocus(this);"></select>     </td><td>      <input type="radio" name="majorsort" id="%id.majorsortup" value="up" checked><span style="font-size:x-small;color:#555753;">%loc!Up!</span><br>      <input type="radio" name="majorsort" id="%id.majorsortdown" value="down"><span style="font-size:x-small;color:#555753;">%loc!Down!</span>     </td>    </tr></table>   </td>   <td style="vertical-align:top;padding-right:16px;">    <table cellspacing="0" cellpadding="0"><tr>     <td style="vertical-align:top;">      <div style="%tbt.">%loc!Minor Sort!</div>      <select id="%id.minorsort" size="1" onfocus="%s.CmdGotFocus(this);"></select>     </td><td>      <input type="radio" name="minorsort" id="%id.minorsortup" value="up" checked><span style="font-size:x-small;color:#555753;">%loc!Up!</span><br>      <input type="radio" name="minorsort" id="%id.minorsortdown" value="down"><span style="font-size:x-small;color:#555753;">%loc!Down!</span>     </td>    </tr></table>   </td>   <td style="vertical-align:top;padding-right:16px;">    <table cellspacing="0" cellpadding="0"><tr>     <td style="vertical-align:top;">      <div style="%tbt.">%loc!Last Sort!</div>      <select id="%id.lastsort" size="1" onfocus="%s.CmdGotFocus(this);"></select>     </td><td>      <input type="radio" name="lastsort" id="%id.lastsortup" value="up" checked><span style="font-size:x-small;color:#555753;">%loc!Up!</span><br>      <input type="radio" name="lastsort" id="%id.lastsortdown" value="down"><span style="font-size:x-small;color:#555753;">%loc!Down!</span>     </td>    </tr></table>   </td>  </tr></table> </div>',onclick:Re.SpreadsheetControlSortOnclick}),this.editor.SettingsCallbacks.sort={save:Re.SpreadsheetControlSortSave,load:Re.SpreadsheetControlSortLoad},this.tabnums.audit=this.tabs.length,this.tabs.push({name:"audit",text:"Audit",html:'<div id="%id.audittools" style="display:none;"> <div style="%tbt.">&nbsp;</div></div>',view:"audit",onclick:function(e,t){for(var o,i=Re.LocalizeString,n='<table cellspacing="0" cellpadding="0" style="margin-bottom:10px;"><tr><td style="font-size:small;padding:6px;"><b>'+i("Audit Trail This Session")+":</b><br><br>",r=e.sheet.changes.stack,s=e.sheet.changes.tos,a=0;a<r.length;a++)for(a==s+1&&(n+='<br></td></tr><tr><td style="font-size:small;background-color:#EEE;padding:6px;">'+i("UNDONE STEPS")+":<br>"),o=0;o<r[a].command.length;o++)n+=Re.special_chars(r[a].command[o])+"<br>";function l(e){if("string"==typeof e)return e;if(!e)return"null";if("object"==typeof e){for(var t=0,o=(l.check=l.check?l.check:new Array).length;t<o;++t)if(l.check[t]==e)return"{}";l.check.push(e)}var i,o="",n=void 0===e.length?1:0,r="";for(i in e)n&&(o="'"+i+"':"),"string"==typeof e[i]?r+=o+"'"+e[i]+"',":"object"==typeof e[i]?r+=o+l(e[i])+",":r+=o+e[i]+",";return"object"==typeof e&&l.check.pop(),n?"{"+r.slice(0,-1)+"}":"["+r.slice(0,-1)+"]"}if(void 0!==Re.debug_log)for(var c in Re.debug_log)n+=l(Re.debug_log[c])+"<br>";e.views.audit.element.innerHTML=n+"</td></tr></table>",Re.CmdGotFocus(!0)},onclickFocus:!0}),this.views.audit={name:"audit",divStyle:"border:1px solid black;overflow:auto;",html:"Audit Trail"},this.tabnums.comment=this.tabs.length,this.tabs.push({name:"comment",text:"Comment",html:'<div id="%id.commenttools" style="display:none;"><table cellspacing="0" cellpadding="0"><tr><td><textarea id="%id.commenttext" style="font-size:small;height:32px;width:600px;overflow:auto;" onfocus="%s.CmdGotFocus(this);"></textarea></td><td style="vertical-align:top;">&nbsp;<input type="button" value="%loc!Save!" onclick="%s.SpreadsheetControlCommentSet();" style="font-size:x-small;"></td></tr></table></div>',view:"sheet",onclick:Re.SpreadsheetControlCommentOnclick,onunclick:Re.SpreadsheetControlCommentOnunclick}),this.tabnums.names=this.tabs.length,this.tabs.push({name:"names",text:"Names",html:'<div id="%id.namestools" style="display:none;">  <table cellspacing="0" cellpadding="0"><tr>   <td style="vertical-align:top;padding-right:24px;">    <div style="%tbt.">%loc!Existing Names!</div>    <select id="%id.nameslist" size="1" onchange="%s.SpreadsheetControlNamesChangedName();" onfocus="%s.CmdGotFocus(this);"><option selected>[New]</option></select>   </td>   <td style="vertical-align:top;padding-right:6px;">    <div style="%tbt.">%loc!Name!</div>    <input type="text" id="%id.namesname" style="font-size:x-small;width:75px;" onfocus="%s.CmdGotFocus(this);">   </td>   <td style="vertical-align:top;padding-right:6px;">    <div style="%tbt.">%loc!Description!</div>    <input type="text" id="%id.namesdesc" style="font-size:x-small;width:150px;" onfocus="%s.CmdGotFocus(this);">   </td>   <td style="vertical-align:top;padding-right:6px;">    <div style="%tbt.">%loc!Value!</div>    <input type="text" id="%id.namesvalue" width="16" style="font-size:x-small;width:100px;" onfocus="%s.CmdGotFocus(this);">   </td>   <td style="vertical-align:top;padding-right:12px;width:100px;">    <div style="%tbt.">%loc!Set Value To!</div>    <input type="button" id="%id.namesrangeproposal" value="A1" onclick="%s.SpreadsheetControlNamesSetValue();" style="font-size:x-small;">   </td>   <td style="vertical-align:top;padding-right:6px;">    <div style="%tbt.">&nbsp;</div>    <input type="button" value="%loc!Save!" onclick="%s.SpreadsheetControlNamesSave();" style="font-size:x-small;">    <input type="button" value="%loc!Delete!" onclick="%s.SpreadsheetControlNamesDelete()" style="font-size:x-small;">   </td>  </tr></table></div>',view:"sheet",onclick:Re.SpreadsheetControlNamesOnclick,onunclick:Re.SpreadsheetControlNamesOnunclick}),this.tabnums.clipboard=this.tabs.length,this.tabs.push({name:"clipboard",text:"Clipboard",html:'<div id="%id.clipboardtools" style="display:none;">  <table cellspacing="0" cellpadding="0"><tr>   <td style="vertical-align:top;padding-right:24px;">    <div style="%tbt.">     &nbsp;    </div>   </td>  </tr></table></div>',view:"clipboard",onclick:Re.SpreadsheetControlClipboardOnclick,onclickFocus:"clipboardtext"}),this.views.clipboard={name:"clipboard",divStyle:"overflow:auto;",html:' <div style="font-size:x-small;padding:5px 0px 10px 0px;">  <b>%loc!Display Clipboard in!:</b>  <input type="radio" id="%id.clipboardformat-tab" name="%id.clipboardformat" checked onclick="%s.SpreadsheetControlClipboardFormat(\'tab\');"> %loc!Tab-delimited format! &nbsp;  <input type="radio" id="%id.clipboardformat-csv" name="%id.clipboardformat" onclick="%s.SpreadsheetControlClipboardFormat(\'csv\');"> %loc!CSV format! &nbsp;  <input type="radio" id="%id.clipboardformat-scsave" name="%id.clipboardformat" onclick="%s.SpreadsheetControlClipboardFormat(\'scsave\');"> %loc!SocialCalc-save format! </div> <input type="button" value="%loc!Load SocialCalc Clipboard With This!" style="font-size:x-small;" onclick="%s.SpreadsheetControlClipboardLoad();">&nbsp;  <input type="button" value="%loc!Clear SocialCalc Clipboard!" style="font-size:x-small;" onclick="%s.SpreadsheetControlClipboardClear();">&nbsp;  <br> <textarea id="%id.clipboardtext" style="font-size:small;height:350px;width:800px;overflow:auto;" onfocus="%s.CmdGotFocus(this);"></textarea>'}},Re.SpreadsheetControl.prototype.InitializeSpreadsheetControl=function(e,t,o,i){return Re.InitializeSpreadsheetControl(this,e,t,o,i)},Re.SpreadsheetControl.prototype.DoOnResize=function(){return Re.DoOnResize(this)},Re.SpreadsheetControl.prototype.SizeSSDiv=function(){return Re.SizeSSDiv(this)},Re.SpreadsheetControl.prototype.ExecuteCommand=function(e,t){return Re.SpreadsheetControlExecuteCommand(this,e,t)},Re.SpreadsheetControl.prototype.CreateSheetHTML=function(){return Re.SpreadsheetControlCreateSheetHTML(this)},Re.SpreadsheetControl.prototype.CreateSpreadsheetSave=function(e){return Re.SpreadsheetControlCreateSpreadsheetSave(this,e)},Re.SpreadsheetControl.prototype.DecodeSpreadsheetSave=function(e){return Re.SpreadsheetControlDecodeSpreadsheetSave(this,e)},Re.SpreadsheetControl.prototype.CreateCellHTML=function(e){return Re.SpreadsheetControlCreateCellHTML(this,e)},Re.SpreadsheetControl.prototype.CreateCellHTMLSave=function(e){return Re.SpreadsheetControlCreateCellHTMLSave(this,e)},Re.SpreadsheetControl.prototype.ParseSheetSave=function(e){return this.sheet.ParseSheetSave(e)},Re.SpreadsheetControl.prototype.CreateSheetSave=function(){return this.sheet.CreateSheetSave()},Re.InitializeSpreadsheetControl=function(e,t,o,i,n){var r,s,a,l,c,u,d,h,p=Re.Constants,f=Re.LocalizeString,m=Re.LocalizeSubstrings,g=e.tabs,v=e.views;for(e.requestedHeight=o,e.requestedWidth=i,e.requestedSpaceBelow=n,null==(t="string"==typeof t?document.getElementById(t):t)&&alert("SocialCalc.SpreadsheetControl not given parent node."),e.parentNode=t,e.spreadsheetDiv=document.createElement("div"),e.SizeSSDiv(),s=t.firstChild;null!=s;s=t.firstChild)t.removeChild(s);for(r="<div>",r+='<div style="'+e.tabbackground+'"><table cellpadding="0" cellspacing="0"><tr>',a=0;a<g.length;a++)r+='  <td id="%id.'+g[a].name+'tab" style="'+(0==a?e.tabselectedCSS:e.tabplainCSS)+'" onclick="%s.SetTab(this);">'+f(g[a].text)+"</td>";for(r=r+" </tr></table></div>"+('<div style="'+e.toolbarbackground+'padding:12px 10px 10px 4px;">'),a=0;a<g.length;a++)r+=g[a].html;for(u in r=r+"</div>"+"</div>",e.currentTab=0,e.tabreplacements)r=r.replace(e.tabreplacements[u].regex,e.tabreplacements[u].replacement);for(d in r=m(r=(r=(r=(r=r.replace(/\%s\./g,"SocialCalc.")).replace(/\%id\./g,e.idPrefix)).replace(/\%tbt\./g,e.toolbartext)).replace(/\%img\./g,e.imagePrefix)),e.spreadsheetDiv.innerHTML=r,t.appendChild(e.spreadsheetDiv),e.Buttons={button_undo:{tooltip:"Undo",command:"undo"},button_redo:{tooltip:"Redo",command:"redo"},button_copy:{tooltip:"Copy",command:"copy"},button_cut:{tooltip:"Cut",command:"cut"},button_paste:{tooltip:"Paste",command:"paste"},button_pasteformats:{tooltip:"Paste Formats",command:"pasteformats"},button_lock:{tooltip:"Lock Cell",command:"lock"},button_unlock:{tooltip:"Unlock Cell",command:"unlock"},button_delete:{tooltip:"Delete Cell Contents",command:"delete"},button_filldown:{tooltip:"Fill Down",command:"filldown"},button_fillright:{tooltip:"Fill Right",command:"fillright"},button_movefrom:{tooltip:"Set/Clear Move From",command:"movefrom"},button_movepaste:{tooltip:"Move Paste",command:"movepaste"},button_moveinsert:{tooltip:"Move Insert",command:"moveinsert"},button_alignleft:{tooltip:"Align Left",command:"align-left"},button_aligncenter:{tooltip:"Align Center",command:"align-center"},button_alignright:{tooltip:"Align Right",command:"align-right"},button_borderon:{tooltip:"Borders On",command:"borderon"},button_borderoff:{tooltip:"Borders Off",command:"borderoff"},button_swapcolors:{tooltip:"Swap Colors",command:"swapcolors"},button_merge:{tooltip:"Merge/Unmerge Cells",command:"merge"},button_insertrow:{tooltip:"Insert Row Before",command:"insertrow"},button_insertcol:{tooltip:"Insert Column Before",command:"insertcol"},button_deleterow:{tooltip:"Delete Row",command:"deleterow"},button_deletecol:{tooltip:"Delete Column",command:"deletecol"},button_hiderow:{tooltip:"Hide Row",command:"hiderow"},button_hidecol:{tooltip:"Hide Column",command:"hidecol"},button_recalc:{tooltip:"Recalculate",command:"recalc"}},e.Buttons)(h=document.getElementById(e.idPrefix+d))?(h.style.border="1px solid "+p.ISCButtonBorderNormal,h.title=f(e.Buttons[d].tooltip),Re.ButtonRegister(e.editor,h,{normalstyle:"border:1px solid "+p.ISCButtonBorderNormal+";background-color:"+p.ISCButtonNormalBackground+";",hoverstyle:"border:1px solid "+p.ISCButtonBorderHover+";background-color:"+p.ISCButtonHoverBackground+";",downstyle:"border:1px solid "+p.ISCButtonBorderDown+";background-color:"+p.ISCButtonDownBackground+";"},{MouseDown:Re.DoButtonCmd,command:e.Buttons[d].command})):alert("Button "+(e.idPrefix+d)+" missing");e.formulabarDiv=document.createElement("div"),e.formulabarDiv.innerHTML='<input type="text" size="60" value="">&nbsp;',e.spreadsheetDiv.appendChild(e.formulabarDiv);new Re.InputBox(e.formulabarDiv.firstChild,e.editor);for(d in e.formulabuttons)(h=document.createElement("img")).id=e.idPrefix+d,h.src=(e.formulabuttons[d].skipImagePrefix?"":e.imagePrefix)+e.formulabuttons[d].image,h.style.verticalAlign="middle",h.style.border="1px solid #FFF",h.style.marginLeft="4px",h.title=f(e.formulabuttons[d].tooltip),Re.ButtonRegister(e.editor,h,{normalstyle:"border:1px solid #FFF;backgroundColor:#FFF;",hoverstyle:"border:1px solid #CCC;backgroundColor:#FFF;",downstyle:"border:1px solid #000;backgroundColor:#FFF;"},{MouseDown:e.formulabuttons[d].command,Disabled:function(){return e.editor.ECellReadonly()}}),e.formulabarDiv.appendChild(h);var o=$("<input id='searchbarinput' value='' placeholder='Search sheet…'>"),b=$("<span id='searchbar'></span>");for(d in b.append("<div id='searchstatus'></div>"),b.append(o),e.findbuttons)(h=document.createElement("img")).id=e.idPrefix+d,h.src=e.imagePrefix+e.findbuttons[d].image,h.style.verticalAlign="middle",h.style.border="1px solid #FFF",h.title=f(e.findbuttons[d].tooltip),Re.ButtonRegister(e.editor,h,{normalstyle:"border:1px solid #FFF;backgroundColor:#FFF;",hoverstyle:"border:1px solid #CCC;backgroundColor:#FFF;",downstyle:"border:1px solid #000;backgroundColor:#FFF;"},{MouseDown:e.findbuttons[d].command,Disabled:function(){return!1}}),b[0].appendChild(h);for(o.on("input",Re.SpreadsheetControl.FindInSheet),o.on("focus",function(){Re.Keyboard.passThru=!0}),o.on("blur",function(){Re.Keyboard.passThru=!1}),o.keyup(function(e){13==e.keyCode&&(e.shiftKey?Re.SpreadsheetControl.SearchUp():Re.SpreadsheetControl.SearchDown())}),e.formulabarDiv.appendChild(b[0]),a=0;a<g.length;a++)g[a].oncreate&&g[a].oncreate(e,g[a].name);Re.CalculateSheetNonViewHeight(e),e.viewheight=e.height-e.nonviewheight,e.editorDiv=e.editor.CreateTableEditor(e.width,e.viewheight);i=document.createElement("div"),i.id="te_appView",i.appendChild(e.editorDiv),e.editorDiv=i,n=document.createElement("div");for(l in n.id="te_formData",n.style.display="none",e.editorDiv.appendChild(n),e.spreadsheetDiv.appendChild(e.editorDiv),e.formDataViewer=new Re.SpreadsheetViewer("te_FormData-"),e.formDataViewer.InitializeSpreadsheetViewer(n.id,180,0,200),e.formDataViewer.editor.ignoreRender=!0,v){for(u in r=v[l].html,v[l].replacements)r=r.replace(v[l].replacements[u].regex,v[l].replacements[u].replacement);r=(r=(r=(r=r.replace(/\%s\./g,"SocialCalc.")).replace(/\%id\./g,e.idPrefix)).replace(/\%tbt\./g,e.toolbartext)).replace(/\%img\./g,e.imagePrefix),c=document.createElement("div"),Re.setStyles(c,v[l].divStyle),c.style.display="none",c.style.width=e.width+"px",c.style.height=e.viewheight+"px",c.id=e.idPrefix+v[l].name+"view",r=m(r),c.innerHTML=r,e.spreadsheetDiv.appendChild(c),v[l].element=c,v[l].oncreate&&v[l].oncreate(e,v[l])}if(v.sheet={name:"sheet",element:e.editorDiv},e.statuslineDiv=document.createElement("div"),e.statuslineDiv.style.cssText=e.statuslineCSS,e.statuslineDiv.style.height=e.statuslineheight-+e.statuslineDiv.style.paddingTop.slice(0,-2)-+e.statuslineDiv.style.paddingBottom.slice(0,-2)+"px",e.statuslineDiv.id=e.idPrefix+"statusline",e.spreadsheetDiv.appendChild(e.statuslineDiv),e.spreadsheetDiv.addEventListener)e.spreadsheetDiv.addEventListener("mousedown",function(){Re.SetSpreadsheetControlObject(e)},!1),e.spreadsheetDiv.addEventListener("mouseover",function(){Re.SetSpreadsheetControlObject(e)},!1);else{if(!e.spreadsheetDiv.attachEvent)throw Re.Constants.s_BrowserNotSupported;e.spreadsheetDiv.attachEvent("onmousedown",function(){Re.SetSpreadsheetControlObject(e)}),e.spreadsheetDiv.attachEvent("onmouseover",function(){Re.SetSpreadsheetControlObject(e)})}},Re.CalculateSheetNonViewHeight=function(e){e.nonviewheight=e.statuslineheight;for(var t=0;t<e.spreadsheetDiv.childNodes.length;t++)"SocialCalc-statusline"!=e.spreadsheetDiv.childNodes[t].id&&(e.nonviewheight+=e.spreadsheetDiv.childNodes[t].offsetHeight)},Re.LocalizeString=function(e){var t=Re.LocalizeStringList[e];return t||(t=Re.Constants["s_loc_"+e.toLowerCase().replace(/\s/g,"_").replace(/\W/g,"X")]||e,Re.LocalizeStringList[e]=t),t},Re.LocalizeStringList={},Re.LocalizeSubstrings=function(e){var i=Re.LocalizeString;return e.replace(/%(loc|ssc)!(.*?)!/g,function(e,t,o){return"ssc"==t?Re.Constants[o]||alert("Missing constant: "+o):i(o)})},Re.GetSpreadsheetControlObject=function(){var e=null!=Re.CurrentSpreadsheetControlObject?Re.CurrentSpreadsheetControlObject:Re.CurrentSpreadsheetViewerObject;if(e)return e},Re.SetSpreadsheetControlObject=function(e){Re.CurrentSpreadsheetControlObject=e,Re.Keyboard.focusTable&&e&&(Re.Keyboard.focusTable=e.editor)},Re.DoOnResize=function(e){var t,o=e.views;if(e.SizeSSDiv()){for(vname in o)(t=o[vname].element).style.width=e.width+"px",t.style.height=e.height-e.nonviewheight+"px";e.editor.ResizeTableEditor(e.width,e.height-e.nonviewheight)}},Re.SizeSSDiv=function(e){var t,o=!1,i=Re.GetViewportInfo(),n=Re.GetElementPosition(e.parentNode);return n.bottom=0,n.right=0,(t=e.parentNode.style).marginTop&&(n.top+=+t.marginTop.slice(0,-2)),t.marginBottom&&(n.bottom+=+t.marginBottom.slice(0,-2)),t.marginLeft&&(n.left+=+t.marginLeft.slice(0,-2)),t.marginRight&&(n.right+=+t.marginRight.slice(0,-2)),t=e.requestedHeight||i.height-(n.top+n.bottom+10)-(e.requestedSpaceBelow||0),e.height!=t&&(e.height=t,e.spreadsheetDiv.style.height=t+"px",o=!0),t=e.requestedWidth||i.width-(n.left+n.right+10)||700,e.width!=t&&(e.width=t,e.spreadsheetDiv.style.width=t+"px",o=!0),e.spreadsheetDiv.style.position="relative",o},Re.SetTab=function(e){var t,o,i,n,r,s={},a={},l=Re.GetSpreadsheetControlObject(),c=l.tabs,u=l.views,d="string"==typeof e?e:e.id.slice(l.idPrefix.length,-3);if(l.editor.busy&&(!c[l.currentTab].view||"sheet"==c[l.currentTab].view))for(n=0;n<c.length;n++)if(c[n].name==d&&c[n].view&&"sheet"!=c[n].view)return;for(l.tabs[l.currentTab].onunclick&&l.tabs[l.currentTab].onunclick(l,l.tabs[l.currentTab].name),n=0;n<c.length;n++)s[t=c[n].name]=document.getElementById(l.idPrefix+t+"tab"),a[t]=document.getElementById(l.idPrefix+t+"tools"),t==d?(o=n,a[t].style.display="block",s[t].style.cssText=l.tabselectedCSS):(a[t].style.display="none",s[t].style.cssText=l.tabplainCSS);for(r in c[l.currentTab=o].onclick&&c[o].onclick(l,d),u)!c[o].view&&"sheet"==r||c[o].view==r?(u[r].element.style.display="block",i=r):u[r].element.style.display="none";c[o].onclickFocus?("string"==typeof(e=c[o].onclickFocus)&&(e=document.getElementById(l.idPrefix+e)).focus(),Re.CmdGotFocus(e)):Re.KeyboardFocus(),u[i].needsresize&&u[i].onresize&&(u[i].needsresize=!1,u[i].onresize(l,u[i])),"sheet"==i?(l.statuslineDiv.style.display="block",l.editor.ScheduleRender()):l.statuslineDiv.style.display="none"},Re.SpreadsheetControlStatuslineCallback=function(e,t,o,i){var n,r,s=document.getElementById(i.statuslineid);switch(s&&(s.innerHTML=e.GetStatuslineString(t,o,i)),t){case"cmdendnorender":case"calcfinished":case"doneposcalc":if(n=document.getElementById(i.recalcid1),r=document.getElementById(i.recalcid2),!n||!r)break;"yes"==e.context.sheetobj.attribs.needsrecalc?(n.style.display="inline",r.style.display="inline"):(n.style.display="none",r.style.display="none")}},Re.UpdateSortRangeProposal=function(e){var t=document.getElementById(Re.GetSpreadsheetControlObject().idPrefix+"sortlist");e.range.hasrange?t.options[0].text=Re.crToCoord(e.range.left,e.range.top)+":"+Re.crToCoord(e.range.right,e.range.bottom):t.options[0].text=Re.LocalizeString("[select range]")},Re.LoadColumnChoosers=function(e){var t,o=Re.LocalizeString,i=e.sortrange&&-1==e.sortrange.indexOf(":")?"range"==(i=Re.Formula.LookupName(e.sheet,e.sortrange||"")).type?(i=i.value.match(/^(.*)\|(.*)\|$/))[1]+":"+i[2]:"A1:A1":e.sortrange,n=Re.ParseRange(i),r=document.getElementById(e.idPrefix+"majorsort"),i=r.selectedIndex;r.options.length=0,r.options[r.options.length]=new Option(o("[None]"),"");for(var s=n.cr1.col;s<=n.cr2.col;s++)t=Re.rcColname(s),r.options[r.options.length]=new Option(o("Column ")+t,t);r.selectedIndex=1<i&&i<=n.cr2.col-n.cr1.col+1?i:1,i=(r=document.getElementById(e.idPrefix+"minorsort")).selectedIndex,r.options.length=0,r.options[r.options.length]=new Option(o("[None]"),"");for(s=n.cr1.col;s<=n.cr2.col;s++)t=Re.rcColname(s),r.options[r.options.length]=new Option(t,t);r.selectedIndex=0<i&&i<=n.cr2.col-n.cr1.col+1?i:0,i=(r=document.getElementById(e.idPrefix+"lastsort")).selectedIndex,r.options.length=0,r.options[r.options.length]=new Option(o("[None]"),"");for(s=n.cr1.col;s<=n.cr2.col;s++)t=Re.rcColname(s),r.options[r.options.length]=new Option(t,t);r.selectedIndex=0<i&&i<=n.cr2.col-n.cr1.col+1?i:0},Re.CmdGotFocus=function(e){Re.Keyboard.passThru=e},Re.DoButtonCmd=function(e,t,o){Re.DoCmd(o.element,o.functionobj.command)},Re.DoCmd=function(e,t){var o,i,n,r,s,a,l,c,u,d,h,p=Re.GetSpreadsheetControlObject(),f=p.editor;switch(t){case"undo":p.ExecuteCommand("undo","");break;case"redo":p.ExecuteCommand("redo","");break;case"fill-rowcolstuff":case"fill-text":for(n=t.substring(5),r=(s=document.getElementById(p.idPrefix+n+"list")).length=0;r<Re.SpreadsheetCmdTable[n].length;r++)s.options[r]=new Option(Re.SpreadsheetCmdTable[n][r].t);t="changed-"+n;case"changed-rowcolstuff":case"changed-text":for(n=t.substring(8),s=document.getElementById(p.idPrefix+n+"list"),a=Re.SpreadsheetCmdTable.slists[Re.SpreadsheetCmdTable[n][s.selectedIndex].s],r=(l=document.getElementById(p.idPrefix+n+"slist")).length=0;r<(a.length||0);r++)l.options[r]=new Option(a[r].t,a[r].s);return;case"ok-rowcolstuff":case"ok-text":n=t.substring(3),s=document.getElementById(p.idPrefix+n+"list"),l=document.getElementById(p.idPrefix+n+"slist"),o=Re.SpreadsheetCmdTable[n][s.selectedIndex].c,i=l[l.selectedIndex].value,Re.SpreadsheetControlExecuteCommand(e,o,i);break;case"ok-setsort":var m=document.getElementById(p.idPrefix+"sortlist");if(0==m.selectedIndex)f.range.hasrange?p.sortrange=Re.crToCoord(f.range.left,f.range.top)+":"+Re.crToCoord(f.range.right,f.range.bottom):p.sortrange=f.ecell.coord+":"+f.ecell.coord;else if("all"==m.options[m.selectedIndex].value){var g,v=-1,b=-1,y=-1,C=-1;for(g in p.sheet.cells){var w=Re.coordToCr(g);(-1==y||w.row<y)&&(y=w.row),(-1==v||w.col<v)&&(v=w.col),(-1==C||w.row>C)&&(C=w.row),(-1==b||w.col>b)&&(b=w.col)}p.sortrange=Re.crToCoord(v,y)+":"+Re.crToCoord(b,C),m.options[m.selectedIndex].text+=" ("+p.sortrange+")"}else p.sortrange=m.options[m.selectedIndex].value;return(m=document.getElementById(p.idPrefix+"sortbutton")).value=Re.LocalizeString("Sort ")+p.sortrange,m.style.visibility="visible",Re.LoadColumnChoosers(p),e&&e.blur&&e.blur(),void Re.KeyboardFocus();case"dosort":if(p.sortrange&&-1==p.sortrange.indexOf(":")){if("range"!=(h=Re.Formula.LookupName(p.sheet,p.sortrange||"")).type)return;h=(h=h.value.match(/^(.*)\|(.*)\|$/))[1]+":"+h[2]}else h=p.sortrange;if("A1:A1"==h)return;h="sort "+h+" ",d=document.getElementById(p.idPrefix+"majorsort"),c=document.getElementById(p.idPrefix+"majorsortup"),h+=d.options[d.selectedIndex].value+(c.checked?" up":" down"),0<(d=document.getElementById(p.idPrefix+"minorsort")).selectedIndex&&(c=document.getElementById(p.idPrefix+"minorsortup"),h+=" "+d.options[d.selectedIndex].value+(c.checked?" up":" down")),0<(d=document.getElementById(p.idPrefix+"lastsort")).selectedIndex&&(c=document.getElementById(p.idPrefix+"lastsortup"),h+=" "+d.options[d.selectedIndex].value+(c.checked?" up":" down")),p.ExecuteCommand(h,"");break;case"merge":o=Re.SpreadsheetCmdLookup[t]||"",i=Re.SpreadsheetCmdSLookup[t]||"",p.ExecuteCommand(o,i),f.range.hasrange&&(f.MoveECell(Re.crToCoord(f.range.left,f.range.top)),f.RangeRemove());break;case"movefrom":f.range2.hasrange?(p.context.cursorsuffix="",f.Range2Remove(),p.ExecuteCommand("redisplay","")):f.range.hasrange?(f.range2.top=f.range.top,f.range2.right=f.range.right,f.range2.bottom=f.range.bottom,f.range2.left=f.range.left,f.range2.hasrange=!0,f.MoveECell(Re.crToCoord(f.range.left,f.range.top))):(f.range2.top=f.ecell.row,f.range2.right=f.ecell.col,f.range2.bottom=f.ecell.row,f.range2.left=f.ecell.col,f.range2.hasrange=!0),h=f.range2.hasrange?"":"off",(m=document.getElementById(p.idPrefix+"button_movefrom")).src=p.imagePrefix+"movefrom"+h+".gif",(m=document.getElementById(p.idPrefix+"button_movepaste")).src=p.imagePrefix+"movepaste"+h+".gif",(m=document.getElementById(p.idPrefix+"button_moveinsert")).src=p.imagePrefix+"moveinsert"+h+".gif",f.range2.hasrange&&f.RangeRemove();break;case"movepaste":case"moveinsert":f.range2.hasrange&&(p.context.cursorsuffix="",o=t+" "+Re.crToCoord(f.range2.left,f.range2.top)+":"+Re.crToCoord(f.range2.right,f.range2.bottom)+" "+f.ecell.coord,p.ExecuteCommand(o,""),f.Range2Remove(),(m=document.getElementById(p.idPrefix+"button_movefrom")).src=p.imagePrefix+"movefromoff.gif",(m=document.getElementById(p.idPrefix+"button_movepaste")).src=p.imagePrefix+"movepasteoff.gif",(m=document.getElementById(p.idPrefix+"button_moveinsert")).src=p.imagePrefix+"moveinsertoff.gif");break;case"swapcolors":c=(d=p.sheet).GetAssuredCell(f.ecell.coord),h=d.attribs.defaultcolor?d.colors[d.attribs.defaultcolor]:"rgb(0,0,0)",m=d.attribs.defaultbgcolor?d.colors[d.attribs.defaultbgcolor]:"rgb(255,255,255)",u=c.color?d.colors[c.color]:h,d=c.bgcolor?d.colors[c.bgcolor]:m,p.ExecuteCommand("set %C color "+(d=d==h?"":d)+"%Nset %C bgcolor "+(u=u==m?"":u),"");break;default:o=Re.SpreadsheetCmdLookup[t]||"",i=Re.SpreadsheetCmdSLookup[t]||"",p.ExecuteCommand(o,i)}e&&e.blur&&e.blur(),Re.KeyboardFocus()},Re.SpreadsheetCmdLookup={copy:"copy %C all",cut:"cut %C all",paste:"paste %C all",pasteformats:"paste %C formats",lock:"set %C readonly yes",unlock:"set %C readonly no",delete:"erase %C formulas",filldown:"filldown %C all",fillright:"fillright %C all",erase:"erase %C all",borderon:"set %C bt %S%Nset %C br %S%Nset %C bb %S%Nset %C bl %S",borderoff:"set %C bt %S%Nset %C br %S%Nset %C bb %S%Nset %C bl %S",merge:"merge %C",unmerge:"unmerge %C","align-left":"set %C cellformat left","align-center":"set %C cellformat center","align-right":"set %C cellformat right","align-default":"set %C cellformat",insertrow:"insertrow %C",insertcol:"insertcol %C",deleterow:"deleterow %C",deletecol:"deletecol %C",hiderow:"set %H hide yes",hidecol:"set %W hide yes",undo:"undo",redo:"redo",recalc:"recalc"},Re.SpreadsheetCmdSLookup={borderon:"1px solid rgb(0,0,0)",borderoff:""},Re.SpreadsheetControlExecuteCommand=function(e,t,o){var i=Re.GetSpreadsheetControlObject().editor,n={P:"%",N:"\n"};i.range.hasrange?(n.R=Re.crToCoord(i.range.left,i.range.top)+":"+Re.crToCoord(i.range.right,i.range.bottom),n.C=n.R,n.W=Re.rcColname(i.range.left)+":"+Re.rcColname(i.range.right),n.H=i.range.top+":"+i.range.bottom):i.ecell?(n.C=i.ecell.coord,n.R=i.ecell.coord+":"+i.ecell.coord,n.W=Re.rcColname(Re.coordToCr(i.ecell.coord).col),n.H=Re.coordToCr(i.ecell.coord).row):(n.C="A1",n.R="A1:A1",n.W=Re.rcColname(Re.coordToCr("A1").col),n.H=Re.coordToCr("A1").row),n.S=o,t=(t=(t=(t=(t=(t=(t=t.replace(/%C/g,n.C)).replace(/%R/g,n.R)).replace(/%N/g,n.N)).replace(/%S/g,n.S)).replace(/%W/g,n.W)).replace(/%H/g,n.H)).replace(/%P/g,n.P),i.EditorScheduleSheetCommands(t,!0,!1)},Re.SpreadsheetControlCreateSheetHTML=function(e){var e=new Re.RenderContext(e.sheet),t=document.createElement("div"),o=e.RenderSheet(null,{type:"html"});return t.appendChild(o),delete e,e=t.innerHTML,delete o,delete t,e},Re.SpreadsheetControlCreateCellHTML=function(e,t,o){var i="",n=e.sheet.cells[t];return!n||"&nbsp;"==(i=null==n.displaystring?Re.FormatValueForDisplay(e.sheet,n.datavalue,t,o||e.context.defaultHTMLlinkstyle):n.displaystring)?"":i},Re.SpreadsheetControlCreateCellHTMLSave=function(e,t,o){var i,n,r,s,a=[],t=t?Re.ParseRange(t):{cr1:{row:1,col:1},cr2:{row:e.sheet.attribs.lastrow,col:e.sheet.attribs.lastcol}},l=t.cr1,c=t.cr2;for(a.push("version:1.0"),i=l.row;i<=c.row;i++)for(n=l.col;n<=c.col;n++)r=Re.crToCoord(n,i),(s=e.sheet.cells[r])&&"&nbsp;"!=(s=null==s.displaystring?Re.FormatValueForDisplay(e.sheet,s.datavalue,r,o||e.context.defaultHTMLlinkstyle):s.displaystring)&&a.push(r+":"+Re.encodeForSave(s));return a.push(""),a.join("\n")},Re.SpreadsheetControl.DoFunctionList=function(){var e,t=Re.Formula,o=Re.Constants.function_classlist,i=Re.GetSpreadsheetControlObject(),n=i.idPrefix+"function",r=document.getElementById(n+"dialog");if(!r){for(t.FillFunctionInfo(),s='<table><tr><td><span style="font-size:x-small;font-weight:bold">%loc!Category!</span><br><select id="'+n+'class" size="'+o.length+'" style="width:120px;" onchange="SocialCalc.SpreadsheetControl.FunctionClassChosen(this.options[this.selectedIndex].value);">',e=0;e<o.length;e++)s+='<option value="'+o[e]+'"'+(0==e?" selected>":">")+Re.special_chars(t.FunctionClasses[o[e]].name)+"</option>";var s=(s=(s+='</select></td><td>&nbsp;&nbsp;</td><td id="'+n+'list"><span style="font-size:x-small;font-weight:bold">%loc!Functions!</span><br><select id="'+n+'name" size="'+o.length+'" style="width:240px;" onchange="SocialCalc.SpreadsheetControl.FunctionChosen(this.options[this.selectedIndex].value);" ondblclick="SocialCalc.SpreadsheetControl.DoFunctionPaste();">')+Re.SpreadsheetControl.GetFunctionNamesStr("all"))+('</td></tr><tr><td colspan="3"><div id="'+n+'desc" style="width:380px;height:80px;overflow:auto;font-size:x-small;">'+Re.SpreadsheetControl.GetFunctionInfoStr(t.FunctionClasses[o[0]].items[0])+'</div><div style="width:380px;text-align:right;padding-top:6px;font-size:small;"><input type="button" value="%loc!Paste!" style="font-size:smaller;" onclick="SocialCalc.SpreadsheetControl.DoFunctionPaste();">&nbsp;<input type="button" value="%loc!Cancel!" style="font-size:smaller;" onclick="SocialCalc.SpreadsheetControl.HideFunctions();"></div></td></tr></table>'),a=document.createElement("div"),l=(a.id=n+"dialog",a.style.position="absolute",Re.GetViewportInfo()),c=Re.GetElementPositionWithScroll(i.spreadsheetDiv);a.style.top=l.height/3-c.top+"px",a.style.left=l.width/3-c.left+"px",a.style.zIndex=100,a.style.backgroundColor="#FFF",a.style.border="1px solid black",a.style.width="400px",s=Re.LocalizeSubstrings(s='<table cellspacing="0" cellpadding="0" style="border-bottom:1px solid black;"><tr><td style="font-size:10px;cursor:default;width:100%;background-color:#999;color:#FFF;">&nbsp;%loc!Function List!</td><td style="font-size:10px;cursor:default;color:#666;" onclick="SocialCalc.SpreadsheetControl.HideFunctions();">&nbsp;X&nbsp;</td></tr></table><div style="background-color:#DDD;">'+s+"</div>"),a.innerHTML=s,Re.DragRegister(a.firstChild.firstChild.firstChild.firstChild,!0,!0,{MouseDown:Re.DragFunctionStart,MouseMove:Re.DragFunctionPosition,MouseUp:Re.DragFunctionPosition,Disabled:null,positionobj:a},i.spreadsheetDiv),i.spreadsheetDiv.appendChild(a),(r=document.getElementById(n+"name")).focus(),Re.CmdGotFocus(r)}},Re.SpreadsheetControl.GetFunctionNamesStr=function(e){for(var t="",o=Re.Formula.FunctionClasses[e],i=0;i<o.items.length;i++)t+='<option value="'+o.items[i]+'"'+(0==i?" selected>":">")+o.items[i]+"</option>";return t},Re.SpreadsheetControl.FillFunctionNames=function(e,t){var o,i,n=Re.Formula;for(t.length=0,i=n.FunctionClasses[e],o=0;o<i.items.length;o++)t.options[o]=new Option(i.items[o],i.items[o]),0==o&&(t.options[o].selected=!0)},Re.SpreadsheetControl.GetFunctionInfoStr=function(e){var t=Re.Formula,o=t.FunctionList[e],i=Re.special_chars,t="<b>"+e+"("+i(t.FunctionArgString(e))+")</b><br>";return t+=i(o[3])},Re.SpreadsheetControl.FunctionClassChosen=function(e){var t=Re.GetSpreadsheetControlObject().idPrefix+"function",o=Re.Formula;Re.SpreadsheetControl.FillFunctionNames(e,document.getElementById(t+"name")),Re.SpreadsheetControl.FunctionChosen(o.FunctionClasses[e].items[0])},Re.SpreadsheetControl.FunctionChosen=function(e){var t=Re.GetSpreadsheetControlObject().idPrefix+"function";document.getElementById(t+"desc").innerHTML=Re.SpreadsheetControl.GetFunctionInfoStr(e)},Re.SpreadsheetControl.HideFunctions=function(){var e=Re.GetSpreadsheetControlObject(),e=document.getElementById(e.idPrefix+"functiondialog");e.innerHTML="",Re.DragUnregister(e),Re.KeyboardFocus(),e.parentNode&&e.parentNode.removeChild(e)},Re.SpreadsheetControl.DoFunctionPaste=function(){var e=Re.GetSpreadsheetControlObject(),t=e.editor,o=document.getElementById(e.idPrefix+"functionname"),e=document.getElementById(e.idPrefix+"multilinetextarea"),o=o.value+"(";Re.SpreadsheetControl.HideFunctions(),e?(e.value+=o,e.focus(),Re.CmdGotFocus(e)):t.EditorAddToInput(o,"=")},Re.SpreadsheetControl.DoMultiline=function(){var e=Re.LocalizeSubstrings,t=(Re.Constants,Re.GetSpreadsheetControlObject()),o=t.editor,i=o.workingvalues,n=(t=Re.GetSpreadsheetControlObject()).idPrefix+"multiline",r=document.getElementById(n+"dialog");if(!r){switch(o.state){case"start":i.ecoord=o.ecell.coord,i.erow=o.ecell.row,i.ecol=o.ecell.col,o.RangeRemove(),s=Re.GetCellContents(o.context.sheetobj,i.ecoord);break;case"input":case"inputboxdirect":s=o.inputBox.GetText()}o.inputBox.element.disabled=!0;var s,a='<textarea id="'+n+'textarea" style="width:380px;height:120px;margin:10px 0px 0px 6px;">'+(s=Re.special_chars(s))+'</textarea><div style="width:380px;text-align:right;padding:6px 0px 4px 6px;font-size:small;">'+e('<input type="button" value="%loc!Set Cell Contents!" style="font-size:smaller;" onclick="SocialCalc.SpreadsheetControl.DoMultilinePaste();">&nbsp;<input type="button" value="%loc!Clear!" style="font-size:smaller;" onclick="SocialCalc.SpreadsheetControl.DoMultilineClear();">&nbsp;<input type="button" value="%loc!Cancel!" style="font-size:smaller;" onclick="SocialCalc.SpreadsheetControl.HideMultiline();"></div></div>'),l=document.createElement("div"),c=(l.id=n+"dialog",l.style.position="absolute",Re.GetViewportInfo()),u=Re.GetElementPositionWithScroll(t.spreadsheetDiv);l.style.top=c.height/3-u.top+"px",l.style.left=c.width/3-u.left+"px",l.style.zIndex=100,l.style.backgroundColor="#FFF",l.style.border="1px solid black",l.style.width="400px",l.innerHTML='<table cellspacing="0" cellpadding="0" style="border-bottom:1px solid black;"><tr><td style="font-size:10px;cursor:default;width:100%;background-color:#999;color:#FFF;">'+e("&nbsp;%loc!Multi-line Input Box!")+'</td><td style="font-size:10px;cursor:default;color:#666;" onclick="SocialCalc.SpreadsheetControl.HideMultiline();">&nbsp;X&nbsp;</td></tr></table><div style="background-color:#DDD;">'+a+"</div>",Re.DragRegister(l.firstChild.firstChild.firstChild.firstChild,!0,!0,{MouseDown:Re.DragFunctionStart,MouseMove:Re.DragFunctionPosition,MouseUp:Re.DragFunctionPosition,Disabled:null,positionobj:l},t.spreadsheetDiv),t.spreadsheetDiv.appendChild(l),(r=document.getElementById(n+"textarea")).focus(),Re.CmdGotFocus(r)}},Re.SpreadsheetControl.HideMultiline=function(){Re.Constants;var e=Re.GetSpreadsheetControlObject(),t=e.editor,e=document.getElementById(e.idPrefix+"multilinedialog");switch(e.innerHTML="",Re.DragUnregister(e),Re.KeyboardFocus(),e.parentNode&&e.parentNode.removeChild(e),t.state){case"start":t.inputBox.DisplayCellContents(null);break;case"input":case"inputboxdirect":t.inputBox.element.disabled=!1,t.inputBox.Focus()}},Re.SpreadsheetControl.DoMultilineClear=function(){var e=Re.GetSpreadsheetControlObject(),e=document.getElementById(e.idPrefix+"multilinetextarea");e.value="",e.focus()},Re.SpreadsheetControl.DoMultilinePaste=function(){var e=Re.GetSpreadsheetControlObject(),t=e.editor,o=t.workingvalues,e=document.getElementById(e.idPrefix+"multilinetextarea").value;switch(Re.SpreadsheetControl.HideMultiline(),t.state){case"start":o.partialexpr="",o.ecoord=t.ecell.coord,o.erow=t.ecell.row,o.ecol=t.ecell.col;break;case"input":case"inputboxdirect":t.inputBox.Blur(),t.inputBox.ShowInputBox(!1),t.state="start"}t.EditorSaveEdit(e)},Re.SpreadsheetControl.DoLink=function(){var e=Re.LocalizeString,t=(Re.Constants,Re.GetSpreadsheetControlObject()),o=t.editor,i=o.workingvalues,n=(t=Re.GetSpreadsheetControlObject()).idPrefix+"link",r=document.getElementById(n+"dialog");if(!r){switch(o.state){case"start":i.ecoord=o.ecell.coord,i.erow=o.ecell.row,i.ecol=o.ecell.col,o.RangeRemove(),a=Re.GetCellContents(o.context.sheetobj,i.ecoord);break;case"input":case"inputboxdirect":a=o.inputBox.GetText()}o.inputBox.element.disabled=!0,"'"==a.charAt(0)&&(a=a.slice(1));var s=Re.ParseCellLinkText(a),a=Re.special_chars(a),l=(l=t.sheet.cells[o.ecell.coord])&&l.textvalueformat?"":" checked",c=s.newwin?" checked":"",u='<div style="padding:6px 0px 4px 6px;"><span style="font-size:smaller;">'+e("Description")+'</span><br><input type="text" id="'+n+'desc" style="width:380px;" value="'+Re.special_chars(s.desc)+'"><br><span style="font-size:smaller;">'+e("URL")+'</span><br><input type="text" id="'+n+'url" style="width:380px;" value="'+Re.special_chars(s.url)+'"><br>',s=(Re.Callbacks.MakePageLink&&(u+='<span style="font-size:smaller;">'+e("Page Name")+'</span><br><input type="text" id="'+n+'pagename" style="width:380px;" value="'+Re.special_chars(s.pagename)+'"><br><span style="font-size:smaller;">'+e("Workspace")+'</span><br><input type="text" id="'+n+'workspace" style="width:380px;" value="'+Re.special_chars(s.workspace)+'"><br>'),u+=Re.LocalizeSubstrings('<input type="checkbox" id="'+n+'format"'+l+'>&nbsp;<span style="font-size:smaller;">%loc!Set to Link format!</span><br><input type="checkbox" id="'+n+'popup"'+c+'>&nbsp;<span style="font-size:smaller;">%loc!Show in new browser window!</span></div><div style="width:380px;text-align:right;padding:6px 0px 4px 6px;font-size:small;"><input type="button" value="%loc!Set Cell Contents!" style="font-size:smaller;" onclick="SocialCalc.SpreadsheetControl.DoLinkPaste();">&nbsp;<input type="button" value="%loc!Clear!" style="font-size:smaller;" onclick="SocialCalc.SpreadsheetControl.DoLinkClear();">&nbsp;<input type="button" value="%loc!Cancel!" style="font-size:smaller;" onclick="SocialCalc.SpreadsheetControl.HideLink();"></div></div>'),document.createElement("div")),l=(s.id=n+"dialog",s.style.position="absolute",Re.GetViewportInfo()),c=Re.GetElementPositionWithScroll(t.spreadsheetDiv);s.style.top=l.height/3-c.top+"px",s.style.left=l.width/3-c.left+"px",s.style.zIndex=100,s.style.backgroundColor="#FFF",s.style.border="1px solid black",s.style.width="400px",s.innerHTML='<table cellspacing="0" cellpadding="0" style="border-bottom:1px solid black;"><tr><td style="font-size:10px;cursor:default;width:100%;background-color:#999;color:#FFF;">&nbsp;'+e("Link Input Box")+'</td><td style="font-size:10px;cursor:default;color:#666;" onclick="SocialCalc.SpreadsheetControl.HideLink();">&nbsp;X&nbsp;</td></tr></table><div style="background-color:#DDD;">'+u+"</div>",Re.DragRegister(s.firstChild.firstChild.firstChild.firstChild,!0,!0,{MouseDown:Re.DragFunctionStart,MouseMove:Re.DragFunctionPosition,MouseUp:Re.DragFunctionPosition,Disabled:null,positionobj:s},t.spreadsheetDiv),t.spreadsheetDiv.appendChild(s),(r=document.getElementById(n+"url")).focus(),Re.CmdGotFocus(r)}},Re.SpreadsheetControl.HideLink=function(){Re.Constants;var e=Re.GetSpreadsheetControlObject(),t=e.editor,e=document.getElementById(e.idPrefix+"linkdialog");switch(e.innerHTML="",Re.DragUnregister(e),Re.KeyboardFocus(),e.parentNode&&e.parentNode.removeChild(e),t.state){case"start":t.inputBox.DisplayCellContents(null);break;case"input":case"inputboxdirect":t.inputBox.element.disabled=!1,t.inputBox.Focus()}},Re.SpreadsheetControl.DoLinkClear=function(){var e=Re.GetSpreadsheetControlObject(),e=(document.getElementById(e.idPrefix+"linkdesc").value="",document.getElementById(e.idPrefix+"linkpagename").value="",document.getElementById(e.idPrefix+"linkworkspace").value="",document.getElementById(e.idPrefix+"linkurl"));e.value="",e.focus()},Re.SpreadsheetControl.DoLinkPaste=function(){var e,t,o,i=Re.GetSpreadsheetControlObject(),n=i.editor,r=n.workingvalues,s=document.getElementById(i.idPrefix+"linkdesc"),a=document.getElementById(i.idPrefix+"linkurl"),l=document.getElementById(i.idPrefix+"linkpagename"),c=document.getElementById(i.idPrefix+"linkworkspace"),u=document.getElementById(i.idPrefix+"linkformat"),d="",i=document.getElementById(i.idPrefix+"linkpopup").checked?(e="<<",t=">>",o="[[","]]"):(e="<",t=">",o="[","]"),d=l&&l.value?c.value?s.value+"{"+c.value+o+l.value+i+"}":s.value+o+l.value+i:s.value+e+a.value+t;switch(Re.SpreadsheetControl.HideLink(),n.state){case"start":r.partialexpr="",r.ecoord=n.ecell.coord,r.erow=n.ecell.row,r.ecol=n.ecell.col;break;case"input":case"inputboxdirect":n.inputBox.Blur(),n.inputBox.ShowInputBox(!1),n.state="start"}u.checked&&Re.SpreadsheetControlExecuteCommand(null,"set %C textvalueformat text-link",""),n.EditorSaveEdit(d)},Re.SpreadsheetControl.DoSum=function(){var e,t,o,i,n,r=Re.GetSpreadsheetControlObject().editor,s=r.context.sheetobj;if(r.range.hasrange)o=Re.crToCoord(r.range.left,r.range.top)+":"+Re.crToCoord(r.range.right,r.range.bottom),o="set "+Re.crToCoord(r.range.right,r.range.bottom+1)+" formula sum("+o+")";else if(e=r.ecell.row-1,t=r.ecell.col,e<=1)o="set "+r.ecell.coord+" constant e#REF! 0 #REF!";else{for(n=!1;0<e;){if(i=Re.crToCoord(t,e),(i=s.GetAssuredCell(i)).datatype&&"t"!=i.datatype)n=!0;else if(n){e++;break}e--}o="set "+r.ecell.coord+" formula sum("+Re.crToCoord(t,e)+":"+Re.crToCoord(t,r.ecell.row-1)+")"}r.EditorScheduleSheetCommands(o,!0,!1)},Re.SpreadsheetControl.FindInSheet=function(){var e=$("#searchstatus"),t=Re.GetSpreadsheetControlObject();if(!this.value.length)return e.text(""),t.sheet.search_cells=[],void(t.sheet.selected_search_cell=void 0);var o,i=t.sheet.cells,n=new RegExp(this.value,"im"),r=[];for(o in i){var s=i[o],a=Re.coordToCr(o);"yes"!==t.sheet.rowattribs.hide[a.row]&&"yes"!==t.sheet.colattribs.hide[Re.rcColname(a.col)]&&void 0!==(a="c"===s.datatype?s.displaystring:String(s.datavalue))&&a.match(n)&&r.push(o)}(t.sheet.search_cells=r).length?(t.sheet.selected_search_cell=0,t.editor.MoveECell(r[0]),e.text("1 of "+r.length)):(t.sheet.selected_search_cell=void 0,e.text("No Matches"))},Re.SpreadsheetControl.SearchSheet=function(e){var t,o=Re.GetSpreadsheetControlObject(),i=o.sheet,n=i.search_cells;n.length&&((t=i.selected_search_cell)===(0===e?0:n.length-1)?t=0===e?n.length-1:0:t+=0===e?-1:1,e=n[t],i.selected_search_cell=t,o.editor.MoveECell(e),document.getElementById("searchstatus").textContent=String(t+1)+" of "+n.length)},Re.SpreadsheetControl.SearchUp=function(){Re.SpreadsheetControl.SearchSheet(0)},Re.SpreadsheetControl.SearchDown=function(){Re.SpreadsheetControl.SearchSheet(1)},Re.SpreadsheetControlSortOnclick=function(e,t){var o,i,n=[],r=document.getElementById(e.idPrefix+"sortlist");for(o in Re.LoadColumnChoosers(e),e.editor.RangeChangeCallback.sort=Re.UpdateSortRangeProposal,e.sheet.names)n.push(o);for(n.sort(),r.length=0,r.options[0]=new Option(Re.LocalizeString("[select range]")),r.options[1]=new Option(Re.LocalizeString("Sort All"),"all"),n_options=r.options.length,i=0;i<n.length;i++)o=n[i],r.options[i+n_options]=new Option(o,o),o==e.sortrange&&(r.options[i+n_options].selected=!0);""==e.sortrange&&(r.options[0].selected=!0),Re.UpdateSortRangeProposal(e.editor),Re.KeyboardFocus()},Re.SpreadsheetControlSortSave=function(e,t){var o=Re.GetSpreadsheetControlObject(),i="sort:"+Re.encodeForSave(o.sortrange)+":",n=document.getElementById(o.idPrefix+"majorsort"),r=document.getElementById(o.idPrefix+"majorsortup");return i+=n.selectedIndex+(r.checked?":up":":down"),0<(n=document.getElementById(o.idPrefix+"minorsort")).selectedIndex?(r=document.getElementById(o.idPrefix+"minorsortup"),i+=":"+n.selectedIndex+(r.checked?":up":":down")):i+="::",0<(n=document.getElementById(o.idPrefix+"lastsort")).selectedIndex?(r=document.getElementById(o.idPrefix+"lastsortup"),i+=":"+n.selectedIndex+(r.checked?":up":":down")):i+="::",i+"\n"},Re.SpreadsheetControlSortLoad=function(e,t,o,i){var n,r=Re.GetSpreadsheetControlObject(),o=o.split(":");return r.sortrange=Re.decodeFromSave(o[1]),n=document.getElementById(r.idPrefix+"sortbutton"),r.sortrange?(n.value=Re.LocalizeString("Sort ")+r.sortrange,n.style.visibility="visible"):n.style.visibility="hidden",Re.LoadColumnChoosers(r),(sele=document.getElementById(r.idPrefix+"majorsort")).selectedIndex=+o[2],document.getElementById(r.idPrefix+"majorsort"+o[3]).checked=!0,sele=document.getElementById(r.idPrefix+"minorsort"),o[4]?(sele.selectedIndex=+o[4],document.getElementById(r.idPrefix+"minorsort"+o[5]).checked=!0):(sele.selectedIndex=0,document.getElementById(r.idPrefix+"minorsortup").checked=!0),sele=document.getElementById(r.idPrefix+"lastsort"),o[6]?(sele.selectedIndex=+o[6],document.getElementById(r.idPrefix+"lastsort"+o[7]).checked=!0):(sele.selectedIndex=0,document.getElementById(r.idPrefix+"lastsortup").checked=!0),!0},Re.SpreadsheetControlCommentOnclick=function(e,t){e.editor.MoveECellCallback.comment=Re.SpreadsheetControlCommentMoveECell,Re.SpreadsheetControlCommentDisplay(e,t),Re.KeyboardFocus()},Re.SpreadsheetControlCommentDisplay=function(e,t){var o="";e.editor.ecell&&e.editor.ecell.coord&&e.sheet.cells[e.editor.ecell.coord]&&(o=e.sheet.cells[e.editor.ecell.coord].comment||""),document.getElementById(e.idPrefix+"commenttext").value=o},Re.SpreadsheetControlCommentMoveECell=function(e){Re.SpreadsheetControlCommentDisplay(Re.GetSpreadsheetControlObject(),"comment")},Re.SpreadsheetControlCommentSet=function(){var e=Re.GetSpreadsheetControlObject(),t=(e.ExecuteCommand("set %C comment "+Re.encodeForSave(document.getElementById(e.idPrefix+"commenttext").value)),Re.GetEditorCellElement(e.editor,e.editor.ecell.row,e.editor.ecell.col));e.editor.ECellReadonly()||(t.element.title=document.getElementById(e.idPrefix+"commenttext").value,e.editor.UpdateCellCSS(t,e.editor.ecell.row,e.editor.ecell.col)),Re.KeyboardFocus()},Re.SpreadsheetControlCommentOnunclick=function(e,t){delete e.editor.MoveECellCallback.comment},Re.SpreadsheetControlNamesOnclick=function(e,t){document.getElementById(e.idPrefix+"namesname").value="",document.getElementById(e.idPrefix+"namesdesc").value="",document.getElementById(e.idPrefix+"namesvalue").value="",e.editor.RangeChangeCallback.names=Re.SpreadsheetControlNamesRangeChange,e.editor.MoveECellCallback.names=Re.SpreadsheetControlNamesRangeChange,Re.SpreadsheetControlNamesRangeChange(e.editor),Re.SpreadsheetControlNamesFillNameList(),Re.SpreadsheetControlNamesChangedName()},Re.SpreadsheetControlNamesFillNameList=function(){var e,t,o=Re.LocalizeString,i=[],n=Re.GetSpreadsheetControlObject(),r=document.getElementById(n.idPrefix+"nameslist"),s=document.getElementById(n.idPrefix+"namesname").value.toUpperCase().replace(/[^A-Z0-9_\.]/g,"");for(e in n.sheet.names)i.push(e);for(i.sort(),(r.length=0)<i.length?r.options[0]=new Option(o("[New]")):r.options[0]=new Option(o("[None]")),t=0;t<i.length;t++)e=i[t],r.options[t+1]=new Option(e,e),e==s&&(r.options[t+1].selected=!0);""==s&&(r.options[0].selected=!0)},Re.SpreadsheetControlNamesChangedName=function(){var e=Re.GetSpreadsheetControlObject(),t=document.getElementById(e.idPrefix+"nameslist"),t=t.options[t.selectedIndex].value;e.sheet.names[t]?(document.getElementById(e.idPrefix+"namesname").value=t,document.getElementById(e.idPrefix+"namesdesc").value=e.sheet.names[t].desc||"",document.getElementById(e.idPrefix+"namesvalue").value=e.sheet.names[t].definition||""):(document.getElementById(e.idPrefix+"namesname").value="",document.getElementById(e.idPrefix+"namesdesc").value="",document.getElementById(e.idPrefix+"namesvalue").value="")},Re.SpreadsheetControlNamesRangeChange=function(e){var t=Re.GetSpreadsheetControlObject(),t=document.getElementById(t.idPrefix+"namesrangeproposal");e.range.hasrange?t.value=Re.crToCoord(e.range.left,e.range.top)+":"+Re.crToCoord(e.range.right,e.range.bottom):t.value=e.ecell.coord},Re.SpreadsheetControlNamesOnunclick=function(e,t){delete e.editor.RangeChangeCallback.names,delete e.editor.MoveECellCallback.names},Re.SpreadsheetControlNamesSetValue=function(){var e=Re.GetSpreadsheetControlObject();document.getElementById(e.idPrefix+"namesvalue").value=document.getElementById(e.idPrefix+"namesrangeproposal").value,Re.KeyboardFocus()},Re.SpreadsheetControlNamesSave=function(){var e=Re.GetSpreadsheetControlObject(),t=document.getElementById(e.idPrefix+"namesname").value;Re.SetTab(e.tabs[0].name),Re.KeyboardFocus(),""!=t&&e.ExecuteCommand("name define "+t+" "+document.getElementById(e.idPrefix+"namesvalue").value+"\nname desc "+t+" "+document.getElementById(e.idPrefix+"namesdesc").value)},Re.SpreadsheetControlNamesDelete=function(){var e=Re.GetSpreadsheetControlObject(),t=document.getElementById(e.idPrefix+"namesname").value;Re.SetTab(e.tabs[0].name),Re.KeyboardFocus(),""!=t&&e.ExecuteCommand("name delete "+t),Re.KeyboardFocus()},Re.SpreadsheetControlClipboardOnclick=function(e,t){e=Re.GetSpreadsheetControlObject();clipele=document.getElementById(e.idPrefix+"clipboardtext"),document.getElementById(e.idPrefix+"clipboardformat-tab").checked=!0;try{clipele.value=Re.ConvertSaveToOtherFormat(Re.Clipboard.clipboard,"tab")}catch(e){console.error(e)}},Re.SpreadsheetControlClipboardFormat=function(e){var t=Re.GetSpreadsheetControlObject();(clipele=document.getElementById(t.idPrefix+"clipboardtext")).value=Re.ConvertSaveToOtherFormat(Re.Clipboard.clipboard,e)},Re.SpreadsheetControlClipboardLoad=function(){var e=Re.GetSpreadsheetControlObject(),t="tab";Re.SetTab(e.tabs[0].name),Re.KeyboardFocus(),document.getElementById(e.idPrefix+"clipboardformat-csv").checked?t="csv":document.getElementById(e.idPrefix+"clipboardformat-scsave").checked&&(t="scsave"),e.editor.pastescclipboard=!0,e.editor.EditorScheduleSheetCommands("loadclipboard "+Re.encodeForSave(Re.ConvertOtherFormatToSave(document.getElementById(e.idPrefix+"clipboardtext").value,t)),!0,!1)},Re.SpreadsheetControlClipboardClear=function(){var e=Re.GetSpreadsheetControlObject(),t=document.getElementById(e.idPrefix+"clipboardtext");t.value="",e.editor.EditorScheduleSheetCommands("clearclipboard",!0,!1),t.focus()},Re.SpreadsheetControlClipboardExport=function(){var e=Re.GetSpreadsheetControlObject();e.ExportCallback&&e.ExportCallback(e),Re.SetTab(e.tabs[0].name),Re.KeyboardFocus()},Re.SpreadsheetControlSettingsSwitch=function(e){Re.SettingControlReset();var t=Re.GetSpreadsheetControlObject(),o=document.getElementById(t.idPrefix+"sheetsettingstable"),i=document.getElementById(t.idPrefix+"cellsettingstable"),n=document.getElementById(t.idPrefix+"sheetsettingstoolbar"),r=document.getElementById(t.idPrefix+"cellsettingstoolbar");"sheet"==e?(o.style.display="block",i.style.display="none",n.style.display="block",r.style.display="none",Re.SettingsControlSetCurrentPanel(t.views.settings.values.sheetspanel)):(o.style.display="none",i.style.display="block",n.style.display="none",r.style.display="block",Re.SettingsControlSetCurrentPanel(t.views.settings.values.cellspanel))},Re.SettingsControlSave=function(e){var t,o,i=Re.GetSpreadsheetControlObject(),n=Re.SettingsControls.CurrentPanel,n=Re.SettingsControlUnloadPanel(n);Re.SetTab(i.tabs[0].name),Re.KeyboardFocus(),"sheet"==e?o=i.sheet.DecodeSheetAttributes(n):"cell"==e&&(i.editor.range.hasrange&&(t=Re.crToCoord(i.editor.range.left,i.editor.range.top)+":"+Re.crToCoord(i.editor.range.right,i.editor.range.bottom)),o=i.sheet.DecodeCellAttributes(i.editor.ecell.coord,n,t)),o&&i.editor.EditorScheduleSheetCommands(o,!0,!1)},Re.SpreadsheetControlCreateSpreadsheetSave=function(e,t){var o,i,n="",r="";if(t)for(o in t)i="\n"!=t[o].charAt(t[o]-1)?"\n":"",n+="--"+e.multipartBoundary+"\nContent-type: text/plain; charset=UTF-8\n\n"+t[o]+i,r+="part:"+o+"\n";return"socialcalc:version:1.0\nMIME-Version: 1.0\nContent-Type: multipart/mixed; boundary="+e.multipartBoundary+"\n--"+e.multipartBoundary+"\nContent-type: text/plain; charset=UTF-8\n\n# SocialCalc Spreadsheet Control Save\nversion:1.0\npart:sheet\npart:edit\npart:audit\n"+r+"--"+e.multipartBoundary+"\nContent-type: text/plain; charset=UTF-8\n\n"+e.CreateSheetSave()+"--"+e.multipartBoundary+"\nContent-type: text/plain; charset=UTF-8\n\n"+e.editor.SaveEditorSettings()+"--"+e.multipartBoundary+"\nContent-type: text/plain; charset=UTF-8\n\n"+e.sheet.CreateAuditString()+n+"--"+e.multipartBoundary+"--\n"},Re.SpreadsheetControlDecodeSpreadsheetSave=function(e,t){var o,i,n,r,s,a,l,c,u,d,h={},p=[],f=t.search(/^MIME-Version:\s1\.0/im);if(f<0)return h;if((o=/^Content-Type:\s*multipart\/mixed;\s*boundary=(\S+)/gim).lastIndex=f,i=o.exec(t),o.lastIndex<=0)return h;if(n=i[1],(r=new RegExp("^--"+n+"(?:\r\n|\n)","mg")).lastIndex=o.lastIndex,r.exec(t),(s=/(?:\r\n|\n)(?:\r\n|\n)/gm).lastIndex=r.lastIndex,!s.exec(t))return h;if(a=s.lastIndex,r.lastIndex=a,!(i=r.exec(t)))return h;for(l=i.index,u=t.substring(a,l).split(/\r\n|\n/),c=0;c<u.length;c++)switch((d=(line=u[c]).split(":"))[0]){case"version":break;case"part":p.push(d[1])}for(pnum=0;pnum<p.length;pnum++){if(s.lastIndex=l,!s.exec(t))return h;if(a=s.lastIndex,(r=pnum==p.length-1?new RegExp("^--"+n+"--$","mg"):r).lastIndex=a,!(i=r.exec(t)))return h;l=i.index,h[p[pnum]]={start:a,end:l}}return h},Re.SettingsControls={Controls:{},CurrentPanel:null},Re.SettingsControlSetCurrentPanel=function(e){Re.SettingsControls.CurrentPanel=e,Re.SettingsControls.PopupChangeCallback({panelobj:e},"",null)},Re.SettingsControlInitializePanel=function(e){var t,o=Re.SettingsControls;for(t in e)"name"!=t&&(ctrl=o.Controls[e[t].type])&&ctrl.Initialize&&ctrl.Initialize(e,t)},Re.SettingsControlLoadPanel=function(e,t){var o,i=Re.SettingsControls;for(o in e)"name"!=o&&(ctrl=i.Controls[e[o].type])&&ctrl.SetValue&&ctrl.SetValue(e,o,t[e[o].setting])},Re.SettingsControlUnloadPanel=function(e){var t,o=Re.SettingsControls,i={};for(t in e)"name"!=t&&(ctrl=o.Controls[e[t].type])&&ctrl.GetValue&&(i[e[t].setting]=ctrl.GetValue(e,t));return i},Re.SettingsControls.PopupChangeCallback=function(e,t,o){var i=Re.Constants,n=document.getElementById("sample-text");if(n&&e&&e.panelobj){var r,s,a=Re.CurrentSpreadsheetControlObject.idPrefix,l="cell"==e.panelobj.name?"c":"",c=i.defaultCellLayout.match(/^padding.(\S+) (\S+) (\S+) (\S+).vertical.align.(\S+);$/)||[],u={color:["textcolor"],backgroundColor:["bgcolor","#FFF"],fontSize:["fontsize",i.defaultCellFontSize],fontFamily:["fontfamily"],paddingTop:["padtop",c[1]],paddingRight:["padright",c[2]],paddingBottom:["padbottom",c[3]],paddingLeft:["padleft",c[4]],verticalAlign:["alignvert",c[5]]};for(s in u)r=Re.Popup.GetValue(a+l+u[s][0])||u[s][1]||"",n.style[s]=r;if("c"==l){for(s in u={borderTop:"cbt",borderRight:"cbr",borderBottom:"cbb",borderLeft:"cbl"})r=Re.SettingsControls.BorderSideGetValue(e.panelobj,u[s]),n.style[s]=r&&r.val||"";r=Re.Popup.GetValue(a+"calignhoriz"),n.style.textAlign=r||"left",n.childNodes[1].style.textAlign=r||"right"}else n.style.border="",r=Re.Popup.GetValue(a+"textalignhoriz"),n.style.textAlign=r||"left",r=Re.Popup.GetValue(a+"numberalignhoriz"),n.childNodes[1].style.textAlign=r||"right";c=(r=Re.Popup.GetValue(a+l+"fontlook"))&&r.match(/^(\S+) (\S+)$/)||[],n.style.fontStyle=c[1]||"",n.style.fontWeight=c[2]||"",r=Re.Popup.GetValue(a+l+"formatnumber")||"General",i=Re.FormatNumber.formatNumberWithFormat(9.8765,r,""),"??-???-??&nbsp;??:??:??"!=(c=Re.FormatNumber.formatNumberWithFormat(-1234.5,r,""))&&(i+="<br>"+c),n.childNodes[1].innerHTML=i}},Re.SettingsControls.PopupListSetValue=function(e,t,o){var i;o?(i=Re.Popup,o.def?i.SetValue(e[t].id,""):i.SetValue(e[t].id,o.val)):alert(t+" no value")},Re.SettingsControls.PopupListGetValue=function(e,t){e=e[t];if(!e)return null;t=Re.Popup.GetValue(e.id);return t?{def:!1,val:t}:{def:!0,val:0}},Re.SettingsControls.PopupListInitialize=function(e,t){for(var o,i,n,r=Re.SettingsControls,r=e[t].initialdata||r.Controls[e[t].type].InitialData||"",s=(r=Re.LocalizeSubstrings(r)).split(/\|/),a=[],l=0;l<(s.length||0);l++)i=(o=s[l]).indexOf(":"),-1!=(n=o.substring(0,i)).indexOf("\\")&&(n=(n=n.replace(/\\c/g,":")).replace(/\\b/g,"\\")),n=Re.special_chars(n),a[l]="[custom]"==n?{o:Re.Constants.s_PopupListCustom,v:o.substring(i+1),a:{custom:!0}}:"[cancel]"==n?{o:Re.Constants.s_PopupListCancel,v:"",a:{cancel:!0}}:"[break]"==n?{o:"-----",v:"",a:{skip:!0}}:"[newcol]"==n?{o:"",v:"",a:{newcol:!0}}:{o:n,v:o.substring(i+1)};Re.Popup.Create("List",e[t].id,{}),Re.Popup.Initialize(e[t].id,{options:a,attribs:{changedcallback:Re.SettingsControls.PopupChangeCallback,panelobj:e}})},Re.SettingsControls.PopupListReset=function(e){Re.Popup.Reset("List")},Re.SettingsControls.Controls.PopupList={SetValue:Re.SettingsControls.PopupListSetValue,GetValue:Re.SettingsControls.PopupListGetValue,Initialize:Re.SettingsControls.PopupListInitialize,OnReset:Re.SettingsControls.PopupListReset,ChangedCallback:null},Re.SettingsControls.ColorChooserSetValue=function(e,t,o){var i;o?(i=Re.Popup,o.def?i.SetValue(e[t].id,""):i.SetValue(e[t].id,o.val)):alert(t+" no value")},Re.SettingsControls.ColorChooserGetValue=function(e,t){e=Re.Popup.GetValue(e[t].id);return e?{def:!1,val:e}:{def:!0,val:0}},Re.SettingsControls.ColorChooserInitialize=function(e,t){Re.SettingsControls;Re.Popup.Create("ColorChooser",e[t].id,{}),Re.Popup.Initialize(e[t].id,{attribs:{title:"&nbsp;",moveable:!0,width:"106px",changedcallback:Re.SettingsControls.PopupChangeCallback,panelobj:e}})},Re.SettingsControls.ColorChooserReset=function(e){Re.Popup.Reset("ColorChooser")},Re.SettingsControls.Controls.ColorChooser={SetValue:Re.SettingsControls.ColorChooserSetValue,GetValue:Re.SettingsControls.ColorChooserGetValue,Initialize:Re.SettingsControls.ColorChooserInitialize,OnReset:Re.SettingsControls.ColorChooserReset,ChangedCallback:null},Re.SettingsControls.BorderSideSetValue=function(e,t,o){Re.SettingsControls;var i,n,r,e=e[t].id;o?(i=document.getElementById(e+"-onoff-bcb"))&&(o.val?(i.checked=!0,i.value=o.val,r=o.val.match(/(\S+)\s+(\S+)\s+(\S.+)/),Re.Popup.SetValue(n=e+"-color",r[3]),Re.Popup.SetDisabled(n,!1)):(i.checked=!1,i.value=o.val,Re.Popup.SetValue(n=e+"-color",""),Re.Popup.SetDisabled(n,!0))):alert(t+" no value")},Re.SettingsControls.BorderSideGetValue=function(e,t){Re.SettingsControls;e=e[t].id,t=document.getElementById(e+"-onoff-bcb");if(t)return t.checked?{def:!1,val:"1px solid "+(Re.Popup.GetValue(e+"-color")||"rgb(0,0,0)")}:{def:!1,val:""}},Re.SettingsControls.BorderSideInitialize=function(e,t){Re.SettingsControls;t=e[t].id;Re.Popup.Create("ColorChooser",t+"-color",{}),Re.Popup.Initialize(t+"-color",{attribs:{title:"&nbsp;",width:"106px",moveable:!0,changedcallback:Re.SettingsControls.PopupChangeCallback,panelobj:e}})},Re.SettingsControlOnchangeBorder=function(e){var t,o=Re.SettingsControls,i=o.CurrentPanel,n=e.id.match(/(^.*\-)(\w+)\-(\w+)\-(\w+)$/);n&&(n[1],t=n[2],n[3],n=n[4],i=i[t].type,"bcb"===n&&(e.checked?o.Controls[i].SetValue(o.CurrentPanel,t,{def:!1,val:e.value||"1px solid rgb(0,0,0)"}):o.Controls[i].SetValue(o.CurrentPanel,t,{def:!1,val:""})))},Re.SettingsControls.Controls.BorderSide={SetValue:Re.SettingsControls.BorderSideSetValue,GetValue:Re.SettingsControls.BorderSideGetValue,OnClick:Re.SettingsControls.ColorComboOnClick,Initialize:Re.SettingsControls.BorderSideInitialize,InitialData:{thickness:"1 pixel:1px",style:"Solid:solid"},ChangedCallback:null},Re.SettingControlReset=function(){var e,t=Re.SettingsControls;for(e in t.Controls)t.Controls[e].OnReset&&t.Controls[e].OnReset(e)},Re.OtherSaveParts={},Re.CtrlSEditor=function(e){var t,o;if(0<e.length)t=Re.special_chars(Re.OtherSaveParts[e]||"");else for(o in t="Listing of Parts\n",Re.OtherSaveParts)t+=Re.special_chars("\nPart: "+o+"\n=====\n"+Re.OtherSaveParts[o]+"\n");var i=document.createElement("div"),e=(i.style.cssText="position:absolute;z-index:500;width:300px;height:300px;left:100px;top:200px;border:1px solid black;background-color:#EEE;text-align:center;",i.id="socialcalc-editbox",i.innerHTML=e+'<br><br><textarea id="socialcalc-editbox-textarea" style="width:250px;height:200px;">'+t+"</textarea><br><br><input type=button onclick=\"SocialCalc.CtrlSEditorDone ('socialcalc-editbox', '"+e+'\');" value="OK">',document.body.appendChild(i),document.getElementById("socialcalc-editbox-textarea"));e.focus(),Re.CmdGotFocus(e)},Re.CtrlSEditorDone=function(e,t){var o=document.getElementById(e+"-textarea").value,o=(0<t.length&&(0<o.length?Re.OtherSaveParts[t]=o:delete Re.OtherSaveParts[t]),document.getElementById(e));Re.KeyboardFocus(),o.parentNode.removeChild(o)},Re||(alert("Main SocialCalc code module needed"),Re={}),Re.TableEditor||alert("SocialCalc TableEditor code module needed"),Re.CurrentSpreadsheetViewerObject=null,Re.SpreadsheetViewer=function(e){var t=Re.Constants;this.parentNode=null,this.spreadsheetDiv=null,this.requestedHeight=0,this.requestedWidth=0,this.requestedSpaceBelow=0,this.height=0,this.width=0,this.viewheight=0,this.sheet=null,this.context=null,this.editor=null,this.spreadsheetDiv=null,this.editorDiv=null,this.sortrange="",this.idPrefix=e||"SocialCalc-",this.imagePrefix=t.defaultImagePrefix,this.statuslineheight=t.SVStatuslineheight,this.statuslineCSS=t.SVStatuslineCSS,this.sheet=new Re.Sheet,this.context=new Re.RenderContext(this.sheet),1!=Re._app&&1!=Re._view||(t.defaultImagePrefix=this.imagePrefix="../"+this.imagePrefix),1==Re._app?(this.context.showGrid=!1,this.context.showRCHeaders=!1,this.context.highlightTypes.range.style="",this.context.sheetobj.cells.A1=new Re.Cell("A1"),this.context.sheetobj.cells.A1.displaystring="Loading ... "):(this.context.showGrid=!0,this.context.showRCHeaders=!0),this.editor=new Re.TableEditor(this.context),this.editor.noEdit=!0,this.editor.StatusCallback.statusline={func:Re.SpreadsheetViewerStatuslineCallback,params:{}},this.hasStatusLine=!0,this.statuslineHTML='<table cellspacing="0" cellpadding="0"><tr><td width="100%" style="overflow:hidden;">{status}</td><td>&nbsp;</td></tr></table>',this.statuslineFull=!0,this.noRecalc=!0,this.repeatingMacroTimer=null,this.repeatingMacroInterval=60,this.repeatingMacroCommands="",Re.CurrentSpreadsheetViewerObject=this},Re.SpreadsheetViewer.prototype.InitializeSpreadsheetViewer=function(e,t,o,i){return Re.InitializeSpreadsheetViewer(this,e,t,o,i)},Re.SpreadsheetViewer.prototype.LoadSave=function(e){return Re.SpreadsheetViewerLoadSave(this,e)},Re.SpreadsheetViewer.prototype.DoOnResize=function(){return Re.DoOnResize(this)},Re.SpreadsheetViewer.prototype.SizeSSDiv=function(){return Re.SizeSSDiv(this)},Re.SpreadsheetViewer.prototype.DecodeSpreadsheetSave=function(e){return Re.SpreadsheetViewerDecodeSpreadsheetSave(this,e)},Re.SpreadsheetViewer.prototype.ParseSheetSave=function(e){return this.sheet.ParseSheetSave(e)},Re.InitializeSpreadsheetViewer=function(e,t,o,i,n){var r;Re.Constants,Re.LocalizeString,Re.LocalizeSubstrings,e.tabs,e.views;for(e.requestedHeight=o,e.requestedWidth=i,e.requestedSpaceBelow=n,null==(t="string"==typeof t?document.getElementById(t):t)&&alert("SocialCalc.SpreadsheetControl not given parent node."),e.parentNode=t,e.spreadsheetDiv=document.createElement("div"),e.SizeSSDiv(),r=t.firstChild;null!=r;r=t.firstChild)t.removeChild(r);t.appendChild(e.spreadsheetDiv),e.nonviewheight=e.hasStatusLine?e.statuslineheight:0,e.viewheight=e.height-e.nonviewheight,e.editorDiv=e.editor.CreateTableEditor(e.width,e.viewheight),e.spreadsheetDiv.appendChild(e.editorDiv),e.hasStatusLine&&(e.statuslineDiv=document.createElement("div"),e.statuslineDiv.style.cssText=e.statuslineCSS,e.statuslineDiv.style.height=e.statuslineheight-+e.statuslineDiv.style.paddingTop.slice(0,-2)-+e.statuslineDiv.style.paddingBottom.slice(0,-2)+"px",e.statuslineDiv.id=e.idPrefix+"statusline",e.spreadsheetDiv.appendChild(e.statuslineDiv),e.editor.StatusCallback.statusline={func:Re.SpreadsheetViewerStatuslineCallback,params:{spreadsheetobj:e}}),1==Re._app&&(e.formDataViewer=new Re.SpreadsheetViewer("te_FormData-"),e.formDataViewer.sheet.statuscallback=null,Re.CurrentSpreadsheetViewerObject=e)},Re.SpreadsheetViewerLoadSave=function(e,t){var o,i=e.DecodeSpreadsheetSave(t);i&&(i.sheet&&(e.sheet.ResetSheet(),e.sheet.ParseSheetSave(t.substring(i.sheet.start,i.sheet.end))),i.edit&&e.editor.LoadEditorSettings(t.substring(i.edit.start,i.edit.end)),i.startupmacro&&e.editor.EditorScheduleSheetCommands(t.substring(i.startupmacro.start,i.startupmacro.end),!1,!0),i.repeatingmacro&&0<(i=(t=(t=t.substring(i.repeatingmacro.start,i.repeatingmacro.end)).replace("\r","")).indexOf("\n"))&&(o=+t.substring(0,i),e.repeatingMacroInterval=o=o,e.repeatingMacroCommands=t.substring(i+1),0<o&&(e.repeatingMacroTimer=M.setTimeout(Re.SpreadsheetViewerDoRepeatingMacro,1e3*e.repeatingMacroInterval)))),"off"==e.editor.context.sheetobj.attribs.recalc||e.noRecalc?e.editor.ScheduleRender():e.editor.EditorScheduleSheetCommands("recalc")},Re.SpreadsheetViewerDoRepeatingMacro=function(){var e=Re.GetSpreadsheetViewerObject(),t=e.editor;e.repeatingMacroTimer=null,Re.SheetCommandInfo.CmdExtensionCallbacks.repeatmacro={func:Re.SpreadsheetViewerRepeatMacroCommand,data:null},t.EditorScheduleSheetCommands(e.repeatingMacroCommands)},Re.SpreadsheetViewerRepeatMacroCommand=function(e,t,o,i,n){var r=Re.GetSpreadsheetViewerObject(),i=+i.RestOfString();0<i||(i=r.repeatingMacroInterval),r.repeatingMacroInterval=i,r.repeatingMacroTimer=M.setTimeout(Re.SpreadsheetViewerDoRepeatingMacro,1e3*r.repeatingMacroInterval)},Re.SpreadsheetViewerStopRepeatingMacro=function(){var e=Re.GetSpreadsheetViewerObject();e.repeatingMacroTimer&&(M.clearTimeout(e.repeatingMacroTimer),e.repeatingMacroTimer=null)},Re.SpreadsheetViewerDoButtonCmd=function(e,t,o){var i=o.element,o=o.functionobj.command,n=Re.GetSpreadsheetViewerObject().editor;"recalc"===o&&n.EditorScheduleSheetCommands("recalc"),i&&i.blur&&i.blur(),Re.KeyboardFocus()},Re.LocalizeString=function(e){var t=Re.LocalizeStringList[e];return t||(t=Re.Constants["s_loc_"+e.toLowerCase().replace(/\s/g,"_").replace(/\W/g,"X")]||e,Re.LocalizeStringList[e]=t),t},Re.LocalizeStringList={},Re.LocalizeSubstrings=function(e){var i=Re.LocalizeString;return e.replace(/%(loc|ssc)!(.*?)!/g,function(e,t,o){return"ssc"==t?Re.Constants[o]||alert("Missing constant: "+o):i(o)})},Re.GetSpreadsheetViewerObject=function(){var e=Re.CurrentSpreadsheetViewerObject;if(e)return e;throw"No current SpreadsheetViewer object."},Re.DoOnResize=function(e){var t,o=e.views;if(e.SizeSSDiv()){for(vname in o)(t=o[vname].element).style.width=e.width+"px",t.style.height=e.height-e.nonviewheight+"px";Re._app||e.editor.ResizeTableEditor(e.width,e.height-e.nonviewheight)}},Re.SizeSSDiv=function(e){var t,o=!1,i=Re.GetViewportInfo(),n=Re.GetElementPosition(e.parentNode);return n.bottom=0,n.right=0,(t=e.parentNode.style).marginTop&&(n.top+=+t.marginTop.slice(0,-2)),t.marginBottom&&(n.bottom+=+t.marginBottom.slice(0,-2)),t.marginLeft&&(n.left+=+t.marginLeft.slice(0,-2)),t.marginRight&&(n.right+=+t.marginRight.slice(0,-2)),t=e.requestedHeight||i.height-(n.top+n.bottom+10)-(e.requestedSpaceBelow||0),e.height!=t&&(e.height=t,e.spreadsheetDiv.style.height=t+"px",o=!0),t=e.requestedWidth||i.width-(n.left+n.right+10)||700,e.width!=t&&(e.width=t,e.spreadsheetDiv.style.width=t+"px",o=!0),e.spreadsheetDiv.style.position="relative",o},Re.SpreadsheetViewerStatuslineCallback=function(e,t,o,i){var n=i.spreadsheetobj,r="";n&&n.statuslineDiv&&(r=n.statuslineFull?e.GetStatuslineString(t,o,i):e.ecell.coord,r=n.statuslineHTML.replace(/\{status\}/,r),n.statuslineDiv.innerHTML=r)},Re.CmdGotFocus=function(e){Re.Keyboard.passThru=e},Re.SpreadsheetViewerCreateSheetHTML=function(e){var e=new Re.RenderContext(e.sheet),t=document.createElement("div"),o=e.RenderSheet(null,{type:"html"});return t.appendChild(o),delete e,e=t.innerHTML,delete o,delete t,e},Re.SpreadsheetViewerDecodeSpreadsheetSave=function(e,t){var o,i,n,r,s,a,l,c,u,d,h,p={},f=[];if((o=(t=/[^\n]\r[^\n]/.test(t)?t.replace(/([^\n])\r([^\n])/g,"$1\r\n$2"):t).search(/^MIME-Version:\s1\.0/im))<0)return p;if((i=/^Content-Type:\s*multipart\/mixed;\s*boundary=(\S+)/gim).lastIndex=o,n=i.exec(t),i.lastIndex<=0)return p;if(r=n[1],(s=new RegExp("^--"+r+"(?:\r\n|\n)","mg")).lastIndex=i.lastIndex,s.exec(t),(a=/(?:\r\n|\n)(?:\r\n|\n)/gm).lastIndex=s.lastIndex,!a.exec(t))return p;if(l=a.lastIndex,s.lastIndex=l,!(n=s.exec(t)))return p;for(c=n.index,d=t.substring(l,c).split(/\r\n|\n/),u=0;u<d.length;u++)switch((h=(line=d[u]).split(":"))[0]){case"version":break;case"part":f.push(h[1])}for(pnum=0;pnum<f.length;pnum++){if(a.lastIndex=c,!a.exec(t))return p;if(l=a.lastIndex,(s=pnum==f.length-1?new RegExp("^--"+r+"--$","mg"):s).lastIndex=l,!(n=s.exec(t)))return p;c=n.index,p[f[pnum]]={start:l,end:c}}return p},"undefined"==typeof document&&(Re.GetEditorCellElement=function(){},Re.ReplaceCell=function(){},Re.EditorRenderSheet=function(){},Re.SpreadsheetControlSortSave=function(){return""},Re.SpreadsheetControlStatuslineCallback=function(){},Re.DoPositionCalculations=function(e){Re.EditorSheetStatusCallback(null,"doneposcalc",null,e)}),"undefined"!=typeof self&&self.thread&&(M.setTimeout=function(e,t){t<=1&&self.thread.nextTick(e)},M.clearTimeout=function(){}),Re}),!function(){Class=function(classDefinition,classWrapper){if(!classDefinition)throw"Class requires a class definition string as its first argument";if(!classWrapper)throw"Class requires a class wrapper function as its second argument";if(!classDefinition.match(/^([\w\.]+)(?:\(\s*([\w\.]+)\s*\))?(?:\s+(.*?)\s*)?$/))throw"Can't parse Class Definition: '"+classDefinition+"'";for(var className=RegExp.$1,baseClassName=RegExp.$2||"",options=[],incValues=(RegExp.$3&&(options=RegExp.$3.split(/\s+/)),[]),strict=!0,i=0,l=options.length;i<l;i++){var option=options[i];"-nostrict"==option&&(strict=!1),option.match(/^-inc=(.+)$/)&&(incValues=RegExp.$1.split(","))}for(var parts=className.split("."),klass=Class.global,i=0;i<parts.length;i++)klass[parts[i]]||(klass[parts[i]]=function(){try{this.init()}catch(e){}}),klass=klass[parts[i]];klass.className=className,klass.isa=function(baseName){klass.baseClassName=baseName,baseName&&(klass.prototype=eval("new "+baseName+"()"),klass.prototype.superFunc=function(name){return eval(baseName).prototype[name]})},klass.isa(baseClassName),klass.global=Class.global,klass.addGlobal=function(){return this.newGlobals++,Class.global},klass.extend=function(e){if("object"!=typeof e)throw"extend requires an object of name:value pairs";for(var t in e)klass.prototype[t]=e[t]};for(var ii=0,ll=incValues.length;ii<ll;ii++){var value=incValues[ii];incValues[ii]="proto"==value?klass.prototype:"this"==value?klass:Class.global[value]}return strict?Class.eval_strict(classWrapper,klass,incValues):classWrapper.apply(klass,incValues),klass}}(),Class.global=this,Class.eval_strict=function(e,t,o){var i=0;for(n in Class.global)i++,0;t.newGlobals=0,e.apply(t,o);var n,r=0;for(n in Class.global)r++;if(i+t.newGlobals!=r)throw"Class '"+t.className+"' defines "+(r-i)+" new global JavaScript variables without using this.addGlobal()";delete t.newGlobals},Class("Document.Emitter",function(){var proto=this.prototype;proto.className="Document.Emitter",proto.instantiate=function(){return eval("new "+this.className+"()")},proto.init=function(){this.output=""},proto.content=function(){return this.output},proto.insert=function(e){this.output+=e.output}}),Class("Document.Emitter.HTML(Document.Emitter)",function(){var e=this.prototype;e.className="Document.Emitter.HTML",e.begin_node=function(e){var t=e.type;switch(t){case"asis":case"line":return;case"br":case"hr":return void(this.output+="<"+t+" />");case"html":return void(this.output+='<span class="wafl">Raw HTML section. Edit in Wiki Text mode.</span>');case"waflparagraph":case"waflphrase":case"im":if(e._wafl.match(/^image:\s*(\S+)(?:\s+size=(\w+))?/)){var o="if (typeof(ss) != 'undefined' && ss.editor) { var recalc = function () { try { ss.editor.DoPositionCalculations() } catch (e) { setTimeout(recalc, 500) } }; recalc() } if (!window.image_dimension_cache) window.image_dimension_cache = {};window.image_dimension_cache['/data/wafl/"+e._label.replace(/&/g,"&amp;").replace(/"/g,"&quot;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/'/g,"\\'").replace(/\\/g,"\\\\")+"'] = [ this.offsetWidth, this.offsetHeight ]; this.style.width = this.offsetWidth + 'px'; this.style.height = this.offsetHeight + 'px'",i=RegExp.$1,n=RegExp.$2;switch(n){case"small":n="100";break;case"medium":n="300";break;case"large":n="600"}return n=n&&' width="'+n+'"',void(this.output+='<img src="'+i.replace(/&/g,"&amp;").replace(/"/g,"&quot;").replace(/</g,"&lt;").replace(/>/g,"&gt;")+'" onload="'+o+'"'+n+" />")}return void(this.output+='<span class="wafl">'+e._label.replace(/&/g,"&amp;").replace(/"/g,"&quot;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/'/g,"\\'").replace(/\\/g,"\\\\")+"</span>");case"a":case"wikilink":return void(this.output+='<a href="'+encodeURI(e._href)+'">');case"file":return void(this.output+='<a title="(network resource)" href="'+encodeURI(e._href)+'">');case"ul":case"ol":case"table":case"tr":return void(this.output+="<"+t+">\n");default:return void(this.output+="<"+t+">")}},e.end_node=function(e){var t=e.type;switch(t){case"asis":case"br":case"hr":case"html":case"waflparagraph":case"waflphrase":case"im":return;case"line":return void(this.output+="<br />");case"file":case"wikilink":return void(this.output+="</a>");default:return void(0==t.search(/^(?:p|ul|ol|li|h\d|table|tr|td)$/)?this.output+="</"+t+">\n":this.output+="</"+t+">")}},e.text_node=function(e){this.output+=e.replace(/&/g,"&amp;").replace(/>/g,"&gt;").replace(/</g,"&lt;").replace(/"/g,"&quot;").replace(/'/g,"&apos;")}}),Class("Document.Parser",function(){var proto=this.prototype;proto.className="Document.Parser",proto.init=function(){},proto.parse=function(e,t){return this.input=-1==e.search(/\n$/)?e+"\n":e,t&&(this.receiver=t),this.receiver.init(),this.grammar=this.create_grammar(),this.parse_blocks("top"),this.receiver.content()},proto.create_grammar=function(){throw"Please define create_grammar in a derived class of Document.Parser."},proto.parse_blocks=function(e){var t=this.grammar[e].blocks;if(t)for(;this.input.length;){for(var o=this.input.length,i=0;i<t.length;i++){var n=t[i],r=this.find_match("matched_block",n);if(r){this.input=this.input.substr(r.end),this.handle_match(n,r);break}}if(this.input.length>=o)throw this.classname+": Reduction error for:\n"+this.input+"\n"+JSON.stringify(this)}},proto.handle_match=function(e,t){var o=this.grammar[e],i=o.blocks?"parse_blocks":"parse_phrases";this.subparse(i,t,e,o.filter)},proto.find_match=function(e,t){var o=this.grammar[t].match;if(!o)throw"no regexp for type: "+t;o=this.input.match(o);if(o)return(e=this[e].call(this,o,this.grammar[t].lookbehind)).type=this.grammar[t].type||t,e},proto.parse_phrases=function(e){var t=this.grammar[e].phrases;if(t)for(;this.input.length;){for(var o=null,i=0;i<t.length;i++){var n=t[i],n=this.find_match("matched_phrase",n);if(n&&((!o||n.begin<o.begin)&&0==(o=n).begin))break}if(!o){this.receiver.text_node(this.input||"");break}0!=o.begin&&this.receiver.text_node(this.input.substr(0,o.begin)||""),this.input=this.input.substr(o.end),this.handle_match(o.type,o)}else this.receiver.text_node(this.input||"")},proto.subparse=function(func,match,type,filter){match.type=this.grammar[type].type,null==match.type&&(match.type=type);var filtered_text=filter?filter(match):null,parser=(match.type&&this.receiver.begin_node(match),eval("new "+this.className+"()"));parser.input=null==filtered_text?match.text:filtered_text,parser.grammar=this.grammar,parser.receiver=this.receiver.instantiate(),parser[func].call(parser,type),this.receiver.insert(parser.receiver),match.type&&this.receiver.end_node(match)},proto.matched_block=function(e){return{begin:e.index,text:e[1],end:e[0].length,1:e[2],2:e[3],3:e[4]}},proto.matched_phrase=function(e,t){return t?{text:e[2],begin:t=this.input.indexOf(e[1]),end:t+e[1].length,1:RegExp.$2,2:RegExp.$3,3:RegExp.$4}:{begin:e.index,text:e[1],end:e.index+e[0].length,1:e[2],2:e[3],3:e[4]}}}),Class("Document.Parser.Wikitext(Document.Parser)",function(){var e=this.prototype;e.className="Document.Parser.Wikitext",e.init=function(){},e.create_grammar=function(){function e(e,t){return t="\\"+(t||e),e="\\"+e,{match:new RegExp("(?:^|[^"+e+"\\w])("+e+"(?=\\S)(?!"+t+")(.*?)"+t+"(?=[^"+t+"\\w]|$))"),phrases:"\\`"==e?null:i,lookbehind:!0}}var t,o=["pre","html","hr","hx","waflparagraph","ul","ol","blockquote","p","empty","else"],i=["waflphrase","asis","wikilink","wikilink2","a","im","mail","file","tt","b","i","del","a"],n={yahoo:"yahoo",ymsgr:"yahoo",callto:"callto",callme:"callto",skype:"callto",aim:"aim"},r={aim:"AIM: %1",yahoo:"Yahoo: %1",callto:"Skype: %1"},s="(\\b(";for(t in n)s+=t+"|";function a(e,t){var o=new RegExp("(^|\n)"+t+" *","g");return{match:new RegExp("^("+e+"+ .*\n(?:[*-+#]+ .*\n)*)(?:s*\n)?"),blocks:["ul","ol","subl","li"],filter:function(e){return e.text.replace(o,"$1")}}}s=s.replace(/\|$/,")\\:([^\\s\\>\\)]+))");return{_all_blocks:o,_all_phrases:i,top:{blocks:o},ol:a("#","[*#]"),ul:a("[-+*]","[-+*#]"),blockquote:{match:/^((?:>[^\n]*\n)+)(?:\s*\n)?/,blocks:["blockquote","line"],filter:function(e){return e.text.replace(/(^|\n)>\ ?/g,"$1")}},line:{match:/([^\n]*)\n/,phrases:i},subl:{type:"li",match:/^(([^\n]*)\n[*#]+\ [^\n]*\n(?:[*#]+\ [^\n]*\n)*)(?:\s*\n)?/,blocks:["ul","ol","li2"]},li:{match:/([^\n]*)\n/,phrases:i},li2:{type:"",match:/([^\n]*)\n/,phrases:i},html:{match:/^(\.html\ *\n(?:[^\n]*\n)*?\.html)\ *\n(?:\s*\n)?/,filter:function(e){return e._html=e.text,""}},pre:{match:/^\.pre\ *\n((?:[^\n]*\n)*?)\.pre\ *\n(?:\s*\n)?/},hr:{match:/^--+(?:\s*\n)?/},hx:{match:/^((\^+) *([^\n]*?)(\s+=+)?\s*?\n+)/,phrases:i,filter:function(e){return e.type="h"+e[1].length,e[2]}},p:{match:/^((?:(?!(?:(?:\^+|\#+|\*+|\-+) |\>|\.\w+\s*\n|\{[^\}]+\}\s*\n))[^\n]*\S[^\n]*\n)+(?:(?=^|\n)\s*\n)*)/,phrases:i,filter:function(e){return e.text.replace(/\n$/,"")}},empty:{match:/^(\s*\n)/,filter:function(e){e.type=""}},else:{match:/^(([^\n]*)\n)/,phrases:[],filter:function(e){e.type="p"}},waflparagraph:{match:/^\{(.*)\}[\ \t]*\n(?:\s*\n)?/,filter:function(e){return e._wafl=e._label=e.text,""}},waflphrase:{match:/(?:^|[\s\-])((?:"([^\n]+?)")?\{([\w-]+(?=[\:\ \}])(?:\s*:)?\s*[^\n]*?\s*)\}(?=[\W_]|$))/,filter:function(e){return e._wafl=e[2],e._label=e[1]||e._wafl,""},lookbehind:!0},asis:{match:/(\{\{([^\n]*?)\}\}(\}*))/,filter:function(e){return e.type="",e[1]+e[2]}},wikilink:{match:/(?:^|[_\W])(\[()(?=[^\s\[\]])(.*?)\](?=[_\W]|$))/,filter:function(e){return e._href="?"+e[2],e.text||e[2]},lookbehind:!0},wikilink2:{type:"wikilink",match:/(?:"([^"]*)"\s*)(\[(?=[^\s\[\]])(.*?)\](?=[_\W]|$))/,filter:function(e){return e._href="?"+e[2],e[1]||e[2]}},a:{match:/((?:"([^"]*)"\s*)?<?((?:http|https|ftp|irc|file):(?:\/\/)?[\;\/\?\:\@\&\=\+\$\,\[\]\#A-Za-z0-9\-\_\.\!\~\*\'\(\)]+[A-Za-z0-9\/#])>?)/,filter:function(e){return e._href=e[2],e[1]||e[2]}},file:{match:/((?:"([^"]*)")?<(\\\\[^\s\>\)]+)>)/,filter:function(e){var t=e[2].replace(/^\\\\/,"");return e._href="file://"+t.replace(/\\/g,"/"),e[1]||t}},im:{match:new RegExp(s),filter:function(e){return e._wafl=e[1]+": "+e[2],e._label=(r[n[e[1]]]||"%1").replace(/%1/g,e[2]),""}},mail:{match:/([\w+%\-\.]+@(?:[\w\-]+\.)+[\w\-]+)/,filter:function(e){e.type="a",e._href="mailto:"+e.text.replace(/%/g,"%25")}},tt:e("`"),b:e("*"),i:e("_"),del:e("-")}}}),!function(e,t){"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(e.document)return t(e);throw new Error("jQuery requires a window with a document")}:t(e)}("undefined"!=typeof window?window:this,function(f,L){function O(e,t){return t.toUpperCase()}var d=[],u=d.slice,z=d.concat,H=d.push,B=d.indexOf,o={},U=o.toString,m=o.hasOwnProperty,j="".trim,g={},w=function(e,t){return new w.fn.init(e,t)},V=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,W=/^-ms-/,G=/-([\da-z])/gi;function $(e){var t=e.length,o=w.type(e);return"function"!==o&&!w.isWindow(e)&&(!(1!==e.nodeType||!t)||("array"===o||0===t||"number"==typeof t&&0<t&&t-1 in e))}w.fn=w.prototype={jquery:"1.11.0",constructor:w,selector:"",length:0,toArray:function(){return u.call(this)},get:function(e){return null!=e?e<0?this[e+this.length]:this[e]:u.call(this)},pushStack:function(e){e=w.merge(this.constructor(),e);return e.prevObject=this,e.context=this.context,e},each:function(e,t){return w.each(this,e,t)},map:function(o){return this.pushStack(w.map(this,function(e,t){return o.call(e,t,e)}))},slice:function(){return this.pushStack(u.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,e=+e+(e<0?t:0);return this.pushStack(0<=e&&e<t?[this[e]]:[])},end:function(){return this.prevObject||this.constructor(null)},push:H,sort:d.sort,splice:d.splice},w.extend=w.fn.extend=function(){var e,t,o,i,n,r=arguments[0]||{},s=1,a=arguments.length,l=!1;for("boolean"==typeof r&&(l=r,r=arguments[s]||{},s++),"object"==typeof r||w.isFunction(r)||(r={}),s===a&&(r=this,s--);s<a;s++)if(null!=(i=arguments[s]))for(o in i)n=r[o],t=i[o],r!==t&&(l&&t&&(w.isPlainObject(t)||(e=w.isArray(t)))?(n=e?(e=!1,n&&w.isArray(n)?n:[]):n&&w.isPlainObject(n)?n:{},r[o]=w.extend(l,n,t)):void 0!==t&&(r[o]=t));return r},w.extend({expando:"jQuery"+("1.11.0"+Math.random()).replace(/\D/g,""),isReady:!0,error:function(e){throw new Error(e)},noop:function(){},isFunction:function(e){return"function"===w.type(e)},isArray:Array.isArray||function(e){return"array"===w.type(e)},isWindow:function(e){return null!=e&&e==e.window},isNumeric:function(e){return 0<=e-parseFloat(e)},isEmptyObject:function(e){for(var t in e)return!1;return!0},isPlainObject:function(e){if(!e||"object"!==w.type(e)||e.nodeType||w.isWindow(e))return!1;try{if(e.constructor&&!m.call(e,"constructor")&&!m.call(e.constructor.prototype,"isPrototypeOf"))return!1}catch(e){return!1}if(g.ownLast)for(var t in e)return m.call(e,t);for(t in e);return void 0===t||m.call(e,t)},type:function(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?o[U.call(e)]||"object":typeof e},globalEval:function(e){e&&w.trim(e)&&(f.execScript||function(e){f.eval.call(f,e)})(e)},camelCase:function(e){return e.replace(W,"ms-").replace(G,O)},nodeName:function(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()},each:function(e,t,o){var i,n=0,r=e.length,s=$(e);if(o){if(s)for(;n<r&&!1!==(i=t.apply(e[n],o));n++);else for(n in e)if(i=t.apply(e[n],o),!1===i)break}else if(s)for(;n<r&&!1!==(i=t.call(e[n],n,e[n]));n++);else for(n in e)if(i=t.call(e[n],n,e[n]),!1===i)break;return e},trim:j&&!j.call("\ufeff ")?function(e){return null==e?"":j.call(e)}:function(e){return null==e?"":(e+"").replace(V,"")},makeArray:function(e,t){t=t||[];return null!=e&&($(Object(e))?w.merge(t,"string"==typeof e?[e]:e):H.call(t,e)),t},inArray:function(e,t,o){var i;if(t){if(B)return B.call(t,e,o);for(i=t.length,o=o?o<0?Math.max(0,i+o):o:0;o<i;o++)if(o in t&&t[o]===e)return o}return-1},merge:function(e,t){for(var o=+t.length,i=0,n=e.length;i<o;)e[n++]=t[i++];if(o!=o)for(;void 0!==t[i];)e[n++]=t[i++];return e.length=n,e},grep:function(e,t,o){for(var i=[],n=0,r=e.length,s=!o;n<r;n++)!t(e[n],n)!=s&&i.push(e[n]);return i},map:function(e,t,o){var i,n=0,r=e.length,s=[];if($(e))for(;n<r;n++)null!=(i=t(e[n],n,o))&&s.push(i);else for(n in e)i=t(e[n],n,o),null!=i&&s.push(i);return z.apply([],s)},guid:1,proxy:function(e,t){var o,i;return"string"==typeof t&&(i=e[t],t=e,e=i),w.isFunction(e)?(o=u.call(arguments,2),(i=function(){return e.apply(t||this,o.concat(u.call(arguments)))}).guid=e.guid=e.guid||w.guid++,i):void 0},now:function(){return+new Date},support:g}),w.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(e,t){o["[object "+t+"]"]=t.toLowerCase()});var e=function(m){var e,C,w,r,g,B,x,c,u,_,S,t,k,T,i,n,F,E="sizzle"+-new Date,D=m.document,P=0,v=0,y=le(),U=le(),j=le(),V=function(e,t){return e===t&&(u=!0),0},o="undefined",W={}.hasOwnProperty,s=[],G=s.pop,$=s.push,A=s.push,Y=s.slice,b=s.indexOf||function(e){for(var t=0,o=this.length;t<o;t++)if(this[t]===e)return t;return-1},K="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",a="[\\x20\\t\\r\\n\\f]",l="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",q=l.replace("w","w#"),X="\\["+a+"*("+l+")"+a+"*(?:([*^$|!~]?=)"+a+"*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|("+q+")|)|)"+a+"*\\]",J=":("+l+")(?:\\(((['\"])((?:\\\\.|[^\\\\])*?)\\3|((?:\\\\.|[^\\\\()[\\]]|"+X.replace(3,8)+")*)|.*)\\)|)",I=new RegExp("^"+a+"+|((?:^|[^\\\\])(?:\\\\.)*)"+a+"+$","g"),Z=new RegExp("^"+a+"*,"+a+"*"),Q=new RegExp("^"+a+"*([>+~]|"+a+")"+a+"*"),ee=new RegExp("="+a+"*([^\\]'\"]*?)"+a+"*\\]","g"),te=new RegExp(J),oe=new RegExp("^"+q+"$"),M={ID:new RegExp("^#("+l+")"),CLASS:new RegExp("^\\.("+l+")"),TAG:new RegExp("^("+l.replace("w","w*")+")"),ATTR:new RegExp("^"+X),PSEUDO:new RegExp("^"+J),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+a+"*(even|odd|(([+-]|)(\\d*)n|)"+a+"*(?:([+-]|)"+a+"*(\\d+)|))"+a+"*\\)|)","i"),bool:new RegExp("^(?:"+K+")$","i"),needsContext:new RegExp("^"+a+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+a+"*((?:-\\d)?\\d*)"+a+"*\\)|)(?=[^-]|$)","i")},ie=/^(?:input|select|textarea|button)$/i,ne=/^h\d$/i,d=/^[^{]+\{\s*\[native \w/,re=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,se=/[+~]/,ae=/'|\\/g,R=new RegExp("\\\\([\\da-f]{1,6}"+a+"?|("+a+")|.)","ig"),N=function(e,t,o){var i="0x"+t-65536;return i!=i||o?t:i<0?String.fromCharCode(65536+i):String.fromCharCode(i>>10|55296,1023&i|56320)};try{A.apply(s=Y.call(D.childNodes),D.childNodes),s[D.childNodes.length].nodeType}catch(e){A={apply:s.length?function(e,t){$.apply(e,Y.call(t))}:function(e,t){for(var o=e.length,i=0;e[o++]=t[i++];);e.length=o-1}}}function L(e,t,o,i){var n,r,s,a,l,c;if((t?t.ownerDocument||t:D)!==S&&_(t),o=o||[],!e||"string"!=typeof e)return o;if(1!==(y=(t=t||S).nodeType)&&9!==y)return[];if(k&&!i){if(l=re.exec(e))if(c=l[1]){if(9===y){if(!(s=t.getElementById(c))||!s.parentNode)return o;if(s.id===c)return o.push(s),o}else if(t.ownerDocument&&(s=t.ownerDocument.getElementById(c))&&F(t,s)&&s.id===c)return o.push(s),o}else{if(l[2])return A.apply(o,t.getElementsByTagName(e)),o;if((c=l[3])&&C.getElementsByClassName&&t.getElementsByClassName)return A.apply(o,t.getElementsByClassName(c)),o}if(C.qsa&&(!T||!T.test(e))){if(a=s=E,l=t,c=9===y&&e,1===y&&"object"!==t.nodeName.toLowerCase()){for(r=O(e),(s=t.getAttribute("id"))?a=s.replace(ae,"\\$&"):t.setAttribute("id",a),a="[id='"+a+"'] ",n=r.length;n--;)r[n]=a+z(r[n]);l=se.test(e)&&de(t.parentNode)||t,c=r.join(",")}if(c)try{return A.apply(o,l.querySelectorAll(c)),o}catch(e){}finally{s||t.removeAttribute("id")}}}var u,d,h,p,f,m=e.replace(I,"$1"),g=t,v=o,b=i,y=O(m);if(!b&&1===y.length){if(2<(d=y[0]=y[0].slice(0)).length&&"ID"===(h=d[0]).type&&C.getById&&9===g.nodeType&&k&&w.relative[d[1].type]){if(!(g=(w.find.ID(h.matches[0].replace(R,N),g)||[])[0]))return v;m=m.slice(d.shift().value.length)}for(u=M.needsContext.test(m)?0:d.length;u--&&(h=d[u],!w.relative[p=h.type]);)if((f=w.find[p])&&(b=f(h.matches[0].replace(R,N),se.test(d[0].type)&&de(g.parentNode)||g))){if(d.splice(u,1),m=b.length&&z(d))break;return A.apply(v,b),v}}return B(m,y)(b,g,!k,v,se.test(m)&&de(g.parentNode)||g),v}function le(){var o=[];function i(e,t){return o.push(e+" ")>w.cacheLength&&delete i[o.shift()],i[e+" "]=t}return i}function h(e){return e[E]=!0,e}function p(e){var t=S.createElement("div");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t)}}function ce(e,t){for(var o=e.split("|"),i=e.length;i--;)w.attrHandle[o[i]]=t}function ue(e,t){var o=t&&e,i=o&&1===e.nodeType&&1===t.nodeType&&(~t.sourceIndex||1<<31)-(~e.sourceIndex||1<<31);if(i)return i;if(o)for(;o=o.nextSibling;)if(o===t)return-1;return e?1:-1}function f(s){return h(function(r){return r=+r,h(function(e,t){for(var o,i=s([],e.length,r),n=i.length;n--;)e[o=i[n]]&&(e[o]=!(t[o]=e[o]))})})}function de(e){return e&&typeof e.getElementsByTagName!==o&&e}for(e in C=L.support={},g=L.isXML=function(e){e=e&&(e.ownerDocument||e).documentElement;return!!e&&"HTML"!==e.nodeName},_=L.setDocument=function(e){var l=e?e.ownerDocument||e:D,e=l.defaultView;return l!==S&&9===l.nodeType&&l.documentElement?(t=(S=l).documentElement,k=!g(l),e&&e!==e.top&&(e.addEventListener?e.addEventListener("unload",function(){_()},!1):e.attachEvent&&e.attachEvent("onunload",function(){_()})),C.attributes=p(function(e){return e.className="i",!e.getAttribute("className")}),C.getElementsByTagName=p(function(e){return e.appendChild(l.createComment("")),!e.getElementsByTagName("*").length}),C.getElementsByClassName=d.test(l.getElementsByClassName)&&p(function(e){return e.innerHTML="<div class='a'></div><div class='a i'></div>",e.firstChild.className="i",2===e.getElementsByClassName("i").length}),C.getById=p(function(e){return t.appendChild(e).id=E,!l.getElementsByName||!l.getElementsByName(E).length}),C.getById?(w.find.ID=function(e,t){if(typeof t.getElementById!==o&&k)return(t=t.getElementById(e))&&t.parentNode?[t]:[]},w.filter.ID=function(e){var t=e.replace(R,N);return function(e){return e.getAttribute("id")===t}}):(delete w.find.ID,w.filter.ID=function(e){var t=e.replace(R,N);return function(e){e=typeof e.getAttributeNode!==o&&e.getAttributeNode("id");return e&&e.value===t}}),w.find.TAG=C.getElementsByTagName?function(e,t){return typeof t.getElementsByTagName!==o?t.getElementsByTagName(e):void 0}:function(e,t){var o,i=[],n=0,r=t.getElementsByTagName(e);if("*"!==e)return r;for(;o=r[n++];)1===o.nodeType&&i.push(o);return i},w.find.CLASS=C.getElementsByClassName&&function(e,t){return typeof t.getElementsByClassName!==o&&k?t.getElementsByClassName(e):void 0},i=[],T=[],(C.qsa=d.test(l.querySelectorAll))&&(p(function(e){e.innerHTML="<select t=''><option selected=''></option></select>",e.querySelectorAll("[t^='']").length&&T.push("[*^$]="+a+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||T.push("\\["+a+"*(?:value|"+K+")"),e.querySelectorAll(":checked").length||T.push(":checked")}),p(function(e){var t=l.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&T.push("name"+a+"*[*^$|!~]?="),e.querySelectorAll(":enabled").length||T.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),T.push(",.*:")})),(C.matchesSelector=d.test(n=t.webkitMatchesSelector||t.mozMatchesSelector||t.oMatchesSelector||t.msMatchesSelector))&&p(function(e){C.disconnectedMatch=n.call(e,"div"),n.call(e,"[s!='']:x"),i.push("!=",J)}),T=T.length&&new RegExp(T.join("|")),i=i.length&&new RegExp(i.join("|")),e=d.test(t.compareDocumentPosition),F=e||d.test(t.contains)?function(e,t){var o=9===e.nodeType?e.documentElement:e,t=t&&t.parentNode;return e===t||!(!t||1!==t.nodeType||!(o.contains?o.contains(t):e.compareDocumentPosition&&16&e.compareDocumentPosition(t)))}:function(e,t){if(t)for(;t=t.parentNode;)if(t===e)return!0;return!1},V=e?function(e,t){if(e===t)return u=!0,0;var o=!e.compareDocumentPosition-!t.compareDocumentPosition;return o||(1&(o=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!C.sortDetached&&t.compareDocumentPosition(e)===o?e===l||e.ownerDocument===D&&F(D,e)?-1:t===l||t.ownerDocument===D&&F(D,t)?1:c?b.call(c,e)-b.call(c,t):0:4&o?-1:1)}:function(e,t){if(e===t)return u=!0,0;var o,i=0,n=e.parentNode,r=t.parentNode,s=[e],a=[t];if(!n||!r)return e===l?-1:t===l?1:n?-1:r?1:c?b.call(c,e)-b.call(c,t):0;if(n===r)return ue(e,t);for(o=e;o=o.parentNode;)s.unshift(o);for(o=t;o=o.parentNode;)a.unshift(o);for(;s[i]===a[i];)i++;return i?ue(s[i],a[i]):s[i]===D?-1:a[i]===D?1:0},l):S},L.matches=function(e,t){return L(e,null,null,t)},L.matchesSelector=function(e,t){if((e.ownerDocument||e)!==S&&_(e),t=t.replace(ee,"='$1']"),!(!C.matchesSelector||!k||i&&i.test(t)||T&&T.test(t)))try{var o=n.call(e,t);if(o||C.disconnectedMatch||e.document&&11!==e.document.nodeType)return o}catch(e){}return 0<L(t,S,null,[e]).length},L.contains=function(e,t){return(e.ownerDocument||e)!==S&&_(e),F(e,t)},L.attr=function(e,t){(e.ownerDocument||e)!==S&&_(e);var o=w.attrHandle[t.toLowerCase()],o=o&&W.call(w.attrHandle,t.toLowerCase())?o(e,t,!k):void 0;return void 0!==o?o:C.attributes||!k?e.getAttribute(t):(o=e.getAttributeNode(t))&&o.specified?o.value:null},L.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},L.uniqueSort=function(e){var t,o=[],i=0,n=0;if(u=!C.detectDuplicates,c=!C.sortStable&&e.slice(0),e.sort(V),u){for(;t=e[n++];)t===e[n]&&(i=o.push(n));for(;i--;)e.splice(o[i],1)}return c=null,e},r=L.getText=function(e){var t,o="",i=0,n=e.nodeType;if(n){if(1===n||9===n||11===n){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)o+=r(e)}else if(3===n||4===n)return e.nodeValue}else for(;t=e[i++];)o+=r(t);return o},(w=L.selectors={cacheLength:50,createPseudo:h,match:M,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(R,N),e[3]=(e[4]||e[5]||"").replace(R,N),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||L.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&L.error(e[0]),e},PSEUDO:function(e){var t,o=!e[5]&&e[2];return M.CHILD.test(e[0])?null:(e[3]&&void 0!==e[4]?e[2]=e[4]:o&&te.test(o)&&(t=O(o,!0))&&(t=o.indexOf(")",o.length-t)-o.length)&&(e[0]=e[0].slice(0,t),e[2]=o.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(R,N).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=y[e+" "];return t||(t=new RegExp("(^|"+a+")"+e+"("+a+"|$)"))&&y(e,function(e){return t.test("string"==typeof e.className&&e.className||typeof e.getAttribute!==o&&e.getAttribute("class")||"")})},ATTR:function(t,o,i){return function(e){e=L.attr(e,t);return null==e?"!="===o:!o||(e+="","="===o?e===i:"!="===o?e!==i:"^="===o?i&&0===e.indexOf(i):"*="===o?i&&-1<e.indexOf(i):"$="===o?i&&e.slice(-i.length)===i:"~="===o?-1<(" "+e+" ").indexOf(i):"|="===o&&(e===i||e.slice(0,i.length+1)===i+"-"))}},CHILD:function(p,e,t,f,m){var g="nth"!==p.slice(0,3),v="last"!==p.slice(-4),b="of-type"===e;return 1===f&&0===m?function(e){return!!e.parentNode}:function(e,t,o){var i,n,r,s,a,l,c=g!=v?"nextSibling":"previousSibling",u=e.parentNode,d=b&&e.nodeName.toLowerCase(),h=!o&&!b;if(u){if(g){for(;c;){for(r=e;r=r[c];)if(b?r.nodeName.toLowerCase()===d:1===r.nodeType)return!1;l=c="only"===p&&!l&&"nextSibling"}return!0}if(l=[v?u.firstChild:u.lastChild],v&&h){for(a=(i=(n=u[E]||(u[E]={}))[p]||[])[0]===P&&i[1],s=i[0]===P&&i[2],r=a&&u.childNodes[a];r=++a&&r&&r[c]||(s=a=0)||l.pop();)if(1===r.nodeType&&++s&&r===e){n[p]=[P,a,s];break}}else if(h&&(i=(e[E]||(e[E]={}))[p])&&i[0]===P)s=i[1];else for(;(r=++a&&r&&r[c]||(s=a=0)||l.pop())&&((b?r.nodeName.toLowerCase()!==d:1!==r.nodeType)||!++s||(h&&((r[E]||(r[E]={}))[p]=[P,s]),r!==e)););return(s-=m)===f||s%f==0&&0<=s/f}}},PSEUDO:function(e,r){var t,s=w.pseudos[e]||w.setFilters[e.toLowerCase()]||L.error("unsupported pseudo: "+e);return s[E]?s(r):1<s.length?(t=[e,e,"",r],w.setFilters.hasOwnProperty(e.toLowerCase())?h(function(e,t){for(var o,i=s(e,r),n=i.length;n--;)e[o=b.call(e,i[n])]=!(t[o]=i[n])}):function(e){return s(e,0,t)}):s}},pseudos:{not:h(function(e){var i=[],n=[],a=B(e.replace(I,"$1"));return a[E]?h(function(e,t,o,i){for(var n,r=a(e,null,i,[]),s=e.length;s--;)(n=r[s])&&(e[s]=!(t[s]=n))}):function(e,t,o){return i[0]=e,a(i,null,o,n),!n.pop()}}),has:h(function(t){return function(e){return 0<L(t,e).length}}),contains:h(function(t){return function(e){return-1<(e.textContent||e.innerText||r(e)).indexOf(t)}}),lang:h(function(o){return oe.test(o||"")||L.error("unsupported lang: "+o),o=o.replace(R,N).toLowerCase(),function(e){var t;do{if(t=k?e.lang:e.getAttribute("xml:lang")||e.getAttribute("lang"))return(t=t.toLowerCase())===o||0===t.indexOf(o+"-")}while((e=e.parentNode)&&1===e.nodeType);return!1}}),target:function(e){var t=m.location&&m.location.hash;return t&&t.slice(1)===e.id},root:function(e){return e===t},focus:function(e){return e===S.activeElement&&(!S.hasFocus||S.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:function(e){return!1===e.disabled},disabled:function(e){return!0===e.disabled},checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,!0===e.selected},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!w.pseudos.empty(e)},header:function(e){return ne.test(e.nodeName)},input:function(e){return ie.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(e=e.getAttribute("type"))||"text"===e.toLowerCase())},first:f(function(){return[0]}),last:f(function(e,t){return[t-1]}),eq:f(function(e,t,o){return[o<0?o+t:o]}),even:f(function(e,t){for(var o=0;o<t;o+=2)e.push(o);return e}),odd:f(function(e,t){for(var o=1;o<t;o+=2)e.push(o);return e}),lt:f(function(e,t,o){for(var i=o<0?o+t:o;0<=--i;)e.push(i);return e}),gt:f(function(e,t,o){for(var i=o<0?o+t:o;++i<t;)e.push(i);return e})}}).pseudos.nth=w.pseudos.eq,{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})w.pseudos[e]=function(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}(e);for(e in{submit:!0,reset:!0})w.pseudos[e]=function(o){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===o}}(e);function he(){}function O(e,t){var o,i,n,r,s,a,l,c=U[e+" "];if(c)return t?0:c.slice(0);for(s=e,a=[],l=w.preFilter;s;){for(r in o&&!(i=Z.exec(s))||(i&&(s=s.slice(i[0].length)||s),a.push(n=[])),o=!1,(i=Q.exec(s))&&(o=i.shift(),n.push({value:o,type:i[0].replace(I," ")}),s=s.slice(o.length)),w.filter)!(i=M[r].exec(s))||l[r]&&!(i=l[r](i))||(o=i.shift(),n.push({value:o,type:r,matches:i}),s=s.slice(o.length));if(!o)break}return t?s.length:s?L.error(e):U(e,a).slice(0)}function z(e){for(var t=0,o=e.length,i="";t<o;t++)i+=e[t].value;return i}function pe(s,e,t){var a=e.dir,l=t&&"parentNode"===a,c=v++;return e.first?function(e,t,o){for(;e=e[a];)if(1===e.nodeType||l)return s(e,t,o)}:function(e,t,o){var i,n,r=[P,c];if(o){for(;e=e[a];)if((1===e.nodeType||l)&&s(e,t,o))return!0}else for(;e=e[a];)if(1===e.nodeType||l){if((i=(n=e[E]||(e[E]={}))[a])&&i[0]===P&&i[1]===c)return r[2]=i[2];if((n[a]=r)[2]=s(e,t,o))return!0}}}function fe(n){return 1<n.length?function(e,t,o){for(var i=n.length;i--;)if(!n[i](e,t,o))return!1;return!0}:n[0]}function H(e,t,o,i,n){for(var r,s=[],a=0,l=e.length,c=null!=t;a<l;a++)!(r=e[a])||o&&!o(r,i,n)||(s.push(r),c&&t.push(a));return s}function me(p,f,m,g,v,e){return g&&!g[E]&&(g=me(g)),v&&!v[E]&&(v=me(v,e)),h(function(e,t,o,i){var n,r,s,a=[],l=[],c=t.length,u=e||function(e,t,o){for(var i=0,n=t.length;i<n;i++)L(e,t[i],o);return o}(f||"*",o.nodeType?[o]:o,[]),d=!p||!e&&f?u:H(u,a,p,o,i),h=m?v||(e?p:c||g)?[]:t:d;if(m&&m(d,h,o,i),g)for(n=H(h,l),g(n,[],o,i),r=n.length;r--;)(s=n[r])&&(h[l[r]]=!(d[l[r]]=s));if(e){if(v||p){if(v){for(n=[],r=h.length;r--;)(s=h[r])&&n.push(d[r]=s);v(null,h=[],n,i)}for(r=h.length;r--;)(s=h[r])&&-1<(n=v?b.call(e,s):a[r])&&(e[n]=!(t[n]=s))}}else h=H(h===t?h.splice(c,h.length):h),v?v(null,t,h,i):A.apply(t,h)})}function ge(g,v){function e(e,t,o,i,n){var r,s,a,l=0,c="0",u=e&&[],d=[],h=x,p=e||y&&w.find.TAG("*",n),f=P+=null==h?1:Math.random()||.1,m=p.length;for(n&&(x=t!==S&&t);c!==m&&null!=(r=p[c]);c++){if(y&&r){for(s=0;a=g[s++];)if(a(r,t,o)){i.push(r);break}n&&(P=f)}b&&((r=!a&&r)&&l--,e&&u.push(r))}if(l+=c,b&&c!==l){for(s=0;a=v[s++];)a(u,d,t,o);if(e){if(0<l)for(;c--;)u[c]||d[c]||(d[c]=G.call(i));d=H(d)}A.apply(i,d),n&&!e&&0<d.length&&1<l+v.length&&L.uniqueSort(i)}return n&&(P=f,x=h),u}var b=0<v.length,y=0<g.length;return b?h(e):e}return he.prototype=w.filters=w.pseudos,w.setFilters=new he,B=L.compile=function(e,t){var o,i=[],n=[],r=j[e+" "];if(!r){for(o=(t=t||O(e)).length;o--;)((r=function e(t){for(var i,o,n,r=t.length,s=w.relative[t[0].type],a=s||w.relative[" "],l=s?1:0,c=pe(function(e){return e===i},a,!0),u=pe(function(e){return-1<b.call(i,e)},a,!0),d=[function(e,t,o){return!s&&(o||t!==x)||((i=t).nodeType?c:u)(e,t,o)}];l<r;l++)if(o=w.relative[t[l].type])d=[pe(fe(d),o)];else{if((o=w.filter[t[l].type].apply(null,t[l].matches))[E]){for(n=++l;n<r&&!w.relative[t[n].type];n++);return me(1<l&&fe(d),1<l&&z(t.slice(0,l-1).concat({value:" "===t[l-2].type?"*":""})).replace(I,"$1"),o,l<n&&e(t.slice(l,n)),n<r&&e(t=t.slice(n)),n<r&&z(t))}d.push(o)}return fe(d)}(t[o]))[E]?i:n).push(r);r=j(e,ge(n,i))}return r},C.sortStable=E.split("").sort(V).join("")===E,C.detectDuplicates=!!u,_(),C.sortDetached=p(function(e){return 1&e.compareDocumentPosition(S.createElement("div"))}),p(function(e){return e.innerHTML="<a href='#'></a>","#"===e.firstChild.getAttribute("href")})||ce("type|href|height|width",function(e,t,o){return o?void 0:e.getAttribute(t,"type"===t.toLowerCase()?1:2)}),C.attributes&&p(function(e){return e.innerHTML="<input/>",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||ce("value",function(e,t,o){return o||"input"!==e.nodeName.toLowerCase()?void 0:e.defaultValue}),p(function(e){return null==e.getAttribute("disabled")})||ce(K,function(e,t,o){return o?void 0:!0===e[t]?t.toLowerCase():(o=e.getAttributeNode(t))&&o.specified?o.value:null}),L}(f),Y=(w.find=e,w.expr=e.selectors,w.expr[":"]=w.expr.pseudos,w.unique=e.uniqueSort,w.text=e.getText,w.isXMLDoc=e.isXML,w.contains=e.contains,w.expr.match.needsContext),K=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,q=/^.[^:#\[\.,]*$/;function X(e,o,i){if(w.isFunction(o))return w.grep(e,function(e,t){return!!o.call(e,t,e)!==i});if(o.nodeType)return w.grep(e,function(e){return e===o!==i});if("string"==typeof o){if(q.test(o))return w.filter(o,e,i);o=w.filter(o,e)}return w.grep(e,function(e){return 0<=w.inArray(e,o)!==i})}w.filter=function(e,t,o){var i=t[0];return o&&(e=":not("+e+")"),1===t.length&&1===i.nodeType?w.find.matchesSelector(i,e)?[i]:[]:w.find.matches(e,w.grep(t,function(e){return 1===e.nodeType}))},w.fn.extend({find:function(e){var t,o=[],i=this,n=i.length;if("string"!=typeof e)return this.pushStack(w(e).filter(function(){for(t=0;t<n;t++)if(w.contains(i[t],this))return!0}));for(t=0;t<n;t++)w.find(e,i[t],o);return(o=this.pushStack(1<n?w.unique(o):o)).selector=this.selector?this.selector+" "+e:e,o},filter:function(e){return this.pushStack(X(this,e||[],!1))},not:function(e){return this.pushStack(X(this,e||[],!0))},is:function(e){return!!X(this,"string"==typeof e&&Y.test(e)?w(e):e||[],!1).length}});var n,v=f.document,J=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,Z=((w.fn.init=function(e,t){var o,i;if(!e)return this;if("string"!=typeof e)return e.nodeType?(this.context=this[0]=e,this.length=1,this):w.isFunction(e)?void 0!==n.ready?n.ready(e):e(w):(void 0!==e.selector&&(this.selector=e.selector,this.context=e.context),w.makeArray(e,this));if(!(o="<"===e.charAt(0)&&">"===e.charAt(e.length-1)&&3<=e.length?[null,e,null]:J.exec(e))||!o[1]&&t)return(!t||t.jquery?t||n:this.constructor(t)).find(e);if(o[1]){if(t=t instanceof w?t[0]:t,w.merge(this,w.parseHTML(o[1],t&&t.nodeType?t.ownerDocument||t:v,!0)),K.test(o[1])&&w.isPlainObject(t))for(o in t)w.isFunction(this[o])?this[o](t[o]):this.attr(o,t[o]);return this}if((i=v.getElementById(o[2]))&&i.parentNode){if(i.id!==o[2])return n.find(e);this.length=1,this[0]=i}return this.context=v,this.selector=e,this}).prototype=w.fn,n=w(v),/^(?:parents|prev(?:Until|All))/),Q={children:!0,contents:!0,next:!0,prev:!0};function ee(e,t){for(;(e=e[t])&&1!==e.nodeType;);return e}w.extend({dir:function(e,t,o){for(var i=[],n=e[t];n&&9!==n.nodeType&&(void 0===o||1!==n.nodeType||!w(n).is(o));)1===n.nodeType&&i.push(n),n=n[t];return i},sibling:function(e,t){for(var o=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&o.push(e);return o}}),w.fn.extend({has:function(e){var t,o=w(e,this),i=o.length;return this.filter(function(){for(t=0;t<i;t++)if(w.contains(this,o[t]))return!0})},closest:function(e,t){for(var o,i=0,n=this.length,r=[],s=Y.test(e)||"string"!=typeof e?w(e,t||this.context):0;i<n;i++)for(o=this[i];o&&o!==t;o=o.parentNode)if(o.nodeType<11&&(s?-1<s.index(o):1===o.nodeType&&w.find.matchesSelector(o,e))){r.push(o);break}return this.pushStack(1<r.length?w.unique(r):r)},index:function(e){return e?"string"==typeof e?w.inArray(this[0],w(e)):w.inArray(e.jquery?e[0]:e,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(w.unique(w.merge(this.get(),w(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),w.each({parent:function(e){e=e.parentNode;return e&&11!==e.nodeType?e:null},parents:function(e){return w.dir(e,"parentNode")},parentsUntil:function(e,t,o){return w.dir(e,"parentNode",o)},next:function(e){return ee(e,"nextSibling")},prev:function(e){return ee(e,"previousSibling")},nextAll:function(e){return w.dir(e,"nextSibling")},prevAll:function(e){return w.dir(e,"previousSibling")},nextUntil:function(e,t,o){return w.dir(e,"nextSibling",o)},prevUntil:function(e,t,o){return w.dir(e,"previousSibling",o)},siblings:function(e){return w.sibling((e.parentNode||{}).firstChild,e)},children:function(e){return w.sibling(e.firstChild)},contents:function(e){return w.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:w.merge([],e.childNodes)}},function(i,n){w.fn[i]=function(e,t){var o=w.map(this,n,e);return(t="Until"!==i.slice(-5)?e:t)&&"string"==typeof t&&(o=w.filter(t,o)),1<this.length&&(Q[i]||(o=w.unique(o)),Z.test(i)&&(o=o.reverse())),this.pushStack(o)}});var t,x=/\S+/g,te={};function oe(){v.addEventListener?(v.removeEventListener("DOMContentLoaded",i,!1),f.removeEventListener("load",i,!1)):(v.detachEvent("onreadystatechange",i),f.detachEvent("onload",i))}function i(){!v.addEventListener&&"load"!==event.type&&"complete"!==v.readyState||(oe(),w.ready())}w.Callbacks=function(n){var e,o;n="string"==typeof n?te[n]||(o=te[e=n]={},w.each(e.match(x)||[],function(e,t){o[t]=!0}),o):w.extend({},n);function i(e){for(t=n.memory&&e,s=!0,l=c||0,c=0,a=u.length,r=!0;u&&l<a;l++)if(!1===u[l].apply(e[0],e[1])&&n.stopOnFalse){t=!1;break}r=!1,u&&(d?d.length&&i(d.shift()):t?u=[]:h.disable())}var r,t,s,a,l,c,u=[],d=!n.once&&[],h={add:function(){var e;return u&&(e=u.length,function i(e){w.each(e,function(e,t){var o=w.type(t);"function"===o?n.unique&&h.has(t)||u.push(t):t&&t.length&&"string"!==o&&i(t)})}(arguments),r?a=u.length:t&&(c=e,i(t))),this},remove:function(){return u&&w.each(arguments,function(e,t){for(var o;-1<(o=w.inArray(t,u,o));)u.splice(o,1),r&&(o<=a&&a--,o<=l&&l--)}),this},has:function(e){return e?-1<w.inArray(e,u):!(!u||!u.length)},empty:function(){return u=[],a=0,this},disable:function(){return u=d=t=void 0,this},disabled:function(){return!u},lock:function(){return d=void 0,t||h.disable(),this},locked:function(){return!d},fireWith:function(e,t){return!u||s&&!d||(t=[e,(t=t||[]).slice?t.slice():t],r?d.push(t):i(t)),this},fire:function(){return h.fireWith(this,arguments),this},fired:function(){return!!s}};return h},w.extend({Deferred:function(e){var r=[["resolve","done",w.Callbacks("once memory"),"resolved"],["reject","fail",w.Callbacks("once memory"),"rejected"],["notify","progress",w.Callbacks("memory")]],n="pending",s={state:function(){return n},always:function(){return a.done(arguments).fail(arguments),this},then:function(){var n=arguments;return w.Deferred(function(i){w.each(r,function(e,t){var o=w.isFunction(n[e])&&n[e];a[t[1]](function(){var e=o&&o.apply(this,arguments);e&&w.isFunction(e.promise)?e.promise().done(i.resolve).fail(i.reject).progress(i.notify):i[t[0]+"With"](this===s?i.promise():this,o?[e]:arguments)})}),n=null}).promise()},promise:function(e){return null!=e?w.extend(e,s):s}},a={};return s.pipe=s.then,w.each(r,function(e,t){var o=t[2],i=t[3];s[t[1]]=o.add,i&&o.add(function(){n=i},r[1^e][2].disable,r[2][2].lock),a[t[0]]=function(){return a[t[0]+"With"](this===a?s:this,arguments),this},a[t[0]+"With"]=o.fireWith}),s.promise(a),e&&e.call(a,a),a},when:function(e){function t(t,o,i){return function(e){o[t]=this,i[t]=1<arguments.length?u.call(arguments):e,i===n?c.notifyWith(o,i):--l||c.resolveWith(o,i)}}var n,o,i,r=0,s=u.call(arguments),a=s.length,l=1!==a||e&&w.isFunction(e.promise)?a:0,c=1===l?e:w.Deferred();if(1<a)for(n=new Array(a),o=new Array(a),i=new Array(a);r<a;r++)s[r]&&w.isFunction(s[r].promise)?s[r].promise().done(t(r,i,s)).fail(c.reject).progress(t(r,o,n)):--l;return l||c.resolveWith(i,s),c.promise()}}),w.fn.ready=function(e){return w.ready.promise().done(e),this},w.extend({isReady:!1,readyWait:1,holdReady:function(e){e?w.readyWait++:w.ready(!0)},ready:function(e){if(!0===e?!--w.readyWait:!w.isReady){if(!v.body)return setTimeout(w.ready);(w.isReady=!0)!==e&&0<--w.readyWait||(t.resolveWith(v,[w]),w.fn.trigger&&w(v).trigger("ready").off("ready"))}}}),w.ready.promise=function(e){if(!t)if(t=w.Deferred(),"complete"===v.readyState)setTimeout(w.ready);else if(v.addEventListener)v.addEventListener("DOMContentLoaded",i,!1),f.addEventListener("load",i,!1);else{v.attachEvent("onreadystatechange",i),f.attachEvent("onload",i);var o=!1;try{o=null==f.frameElement&&v.documentElement}catch(e){}o&&o.doScroll&&!function t(){if(!w.isReady){try{o.doScroll("left")}catch(e){return setTimeout(t,50)}oe(),w.ready()}}()}return t.promise(e)};var ie,b="undefined";for(ie in w(g))break;g.ownLast="0"!==ie,g.inlineBlockNeedsLayout=!1,w(function(){var e,t,o=v.getElementsByTagName("body")[0];o&&((e=v.createElement("div")).style.cssText="border:0;width:0;height:0;position:absolute;top:0;left:-9999px;margin-top:1px",t=v.createElement("div"),o.appendChild(e).appendChild(t),typeof t.style.zoom!=b&&(t.style.cssText="border:0;margin:0;width:1px;padding:1px;display:inline;zoom:1",(g.inlineBlockNeedsLayout=3===t.offsetWidth)&&(o.style.zoom=1)),o.removeChild(e))});e=v.createElement("div");if(null==g.deleteExpando){g.deleteExpando=!0;try{delete e.test}catch(e){g.deleteExpando=!1}}w.acceptData=function(e){var t=w.noData[(e.nodeName+" ").toLowerCase()],o=+e.nodeType||1;return(1===o||9===o)&&(!t||!0!==t&&e.getAttribute("classid")===t)};var ne=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,re=/([A-Z])/g;function se(e,t,o){if(void 0===o&&1===e.nodeType){var i="data-"+t.replace(re,"-$1").toLowerCase();if("string"==typeof(o=e.getAttribute(i))){try{o="true"===o||"false"!==o&&("null"===o?null:+o+""===o?+o:ne.test(o)?w.parseJSON(o):o)}catch(e){}w.data(e,t,o)}else o=void 0}return o}function ae(e){for(var t in e)if(("data"!==t||!w.isEmptyObject(e[t]))&&"toJSON"!==t)return;return 1}function le(e,t,o,i){if(w.acceptData(e)){var n,r=w.expando,s=e.nodeType,a=s?w.cache:e,l=s?e[r]:e[r]&&r;if(l&&a[l]&&(i||a[l].data)||void 0!==o||"string"!=typeof t)return a[l=l||(s?e[r]=d.pop()||w.guid++:r)]||(a[l]=s?{}:{toJSON:w.noop}),"object"!=typeof t&&"function"!=typeof t||(i?a[l]=w.extend(a[l],t):a[l].data=w.extend(a[l].data,t)),e=a[l],i||(e.data||(e.data={}),e=e.data),void 0!==o&&(e[w.camelCase(t)]=o),"string"==typeof t?null==(n=e[t])&&(n=e[w.camelCase(t)]):n=e,n}}function ce(e,t,o){if(w.acceptData(e)){var i,n,r=e.nodeType,s=r?w.cache:e,a=r?e[w.expando]:w.expando;if(s[a]){if(t&&(i=o?s[a]:s[a].data)){n=(t=w.isArray(t)?t.concat(w.map(t,w.camelCase)):t in i?[t]:(t=w.camelCase(t))in i?[t]:t.split(" ")).length;for(;n--;)delete i[t[n]];if(o?!ae(i):!w.isEmptyObject(i))return}(o||(delete s[a].data,ae(s[a])))&&(r?w.cleanData([e],!0):g.deleteExpando||s!=s.window?delete s[a]:s[a]=null)}}}w.extend({cache:{},noData:{"applet ":!0,"embed ":!0,"object ":"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"},hasData:function(e){return!!(e=e.nodeType?w.cache[e[w.expando]]:e[w.expando])&&!ae(e)},data:function(e,t,o){return le(e,t,o)},removeData:function(e,t){return ce(e,t)},_data:function(e,t,o){return le(e,t,o,!0)},_removeData:function(e,t){return ce(e,t,!0)}}),w.fn.extend({data:function(e,t){var o,i,n,r=this[0],s=r&&r.attributes;if(void 0!==e)return"object"==typeof e?this.each(function(){w.data(this,e)}):1<arguments.length?this.each(function(){w.data(this,e,t)}):r?se(r,e,w.data(r,e)):void 0;if(this.length&&(n=w.data(r),1===r.nodeType&&!w._data(r,"parsedAttrs"))){for(o=s.length;o--;)0===(i=s[o].name).indexOf("data-")&&se(r,i=w.camelCase(i.slice(5)),n[i]);w._data(r,"parsedAttrs",!0)}return n},removeData:function(e){return this.each(function(){w.removeData(this,e)})}}),w.extend({queue:function(e,t,o){var i;return e?(i=w._data(e,t=(t||"fx")+"queue"),o&&(!i||w.isArray(o)?i=w._data(e,t,w.makeArray(o)):i.push(o)),i||[]):void 0},dequeue:function(e,t){t=t||"fx";var o=w.queue(e,t),i=o.length,n=o.shift(),r=w._queueHooks(e,t);"inprogress"===n&&(n=o.shift(),i--),n&&("fx"===t&&o.unshift("inprogress"),delete r.stop,n.call(e,function(){w.dequeue(e,t)},r)),!i&&r&&r.empty.fire()},_queueHooks:function(e,t){var o=t+"queueHooks";return w._data(e,o)||w._data(e,o,{empty:w.Callbacks("once memory").add(function(){w._removeData(e,t+"queue"),w._removeData(e,o)})})}}),w.fn.extend({queue:function(t,o){var e=2;return"string"!=typeof t&&(o=t,t="fx",e--),arguments.length<e?w.queue(this[0],t):void 0===o?this:this.each(function(){var e=w.queue(this,t,o);w._queueHooks(this,t),"fx"===t&&"inprogress"!==e[0]&&w.dequeue(this,t)})},dequeue:function(e){return this.each(function(){w.dequeue(this,e)})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,t){function o(){--n||r.resolveWith(s,[s])}var i,n=1,r=w.Deferred(),s=this,a=this.length;for("string"!=typeof e&&(t=e,e=void 0),e=e||"fx";a--;)(i=w._data(s[a],e+"queueHooks"))&&i.empty&&(n++,i.empty.add(o));return o(),r.promise(t)}});function y(e,t){return"none"===w.css(e=t||e,"display")||!w.contains(e.ownerDocument,e)}var e=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,a=["Top","Right","Bottom","Left"],l=w.access=function(e,t,o,i,n,r,s){var a=0,l=e.length,c=null==o;if("object"===w.type(o))for(a in n=!0,o)w.access(e,t,a,o[a],!0,r,s);else if(void 0!==i&&(n=!0,w.isFunction(i)||(s=!0),t=c?s?(t.call(e,i),null):(c=t,function(e,t,o){return c.call(w(e),o)}):t))for(;a<l;a++)t(e[a],o,s?i:i.call(e[a],a,t(e[a],o)));return n?e:c?t.call(e):l?t(e[0],o):r},ue=/^(?:checkbox|radio)$/i,r=v.createDocumentFragment(),s=v.createElement("div"),c=v.createElement("input");if(s.setAttribute("className","t"),s.innerHTML="  <link/><table></table><a href='/a'>a</a>",g.leadingWhitespace=3===s.firstChild.nodeType,g.tbody=!s.getElementsByTagName("tbody").length,g.htmlSerialize=!!s.getElementsByTagName("link").length,g.html5Clone="<:nav></:nav>"!==v.createElement("nav").cloneNode(!0).outerHTML,c.type="checkbox",c.checked=!0,r.appendChild(c),g.appendChecked=c.checked,s.innerHTML="<textarea>x</textarea>",g.noCloneChecked=!!s.cloneNode(!0).lastChild.defaultValue,r.appendChild(s),s.innerHTML="<input type='radio' checked='checked' name='t'/>",g.checkClone=s.cloneNode(!0).cloneNode(!0).lastChild.checked,g.noCloneEvent=!0,s.attachEvent&&(s.attachEvent("onclick",function(){g.noCloneEvent=!1}),s.cloneNode(!0).click()),null==g.deleteExpando){g.deleteExpando=!0;try{delete s.test}catch(e){g.deleteExpando=!1}}var h,p,de=v.createElement("div");for(h in{submit:!0,change:!0,focusin:!0})p="on"+h,(g[h+"Bubbles"]=p in f)||(de.setAttribute(p,"t"),g[h+"Bubbles"]=!1===de.attributes[p].expando);var he=/^(?:input|select|textarea)$/i,pe=/^key/,fe=/^(?:mouse|contextmenu)|click/,me=/^(?:focusinfocus|focusoutblur)$/,ge=/^([^.]*)(?:\.(.+)|)$/;function ve(){return!0}function C(){return!1}function be(){try{return v.activeElement}catch(e){}}function ye(e){var t=Ce.split("|"),o=e.createDocumentFragment();if(o.createElement)for(;t.length;)o.createElement(t.pop());return o}w.event={global:{},add:function(e,t,o,i,n){var r,s,a,l,c,u,d,h,p,f=w._data(e);if(f)for(o.handler&&(o=(a=o).handler,n=a.selector),o.guid||(o.guid=w.guid++),(r=f.events)||(r=f.events={}),(c=f.handle)||((c=f.handle=function(e){return typeof w==b||e&&w.event.triggered===e.type?void 0:w.event.dispatch.apply(c.elem,arguments)}).elem=e),s=(t=(t||"").match(x)||[""]).length;s--;)d=p=(h=ge.exec(t[s])||[])[1],h=(h[2]||"").split(".").sort(),d&&(l=w.event.special[d]||{},d=(n?l.delegateType:l.bindType)||d,l=w.event.special[d]||{},p=w.extend({type:d,origType:p,data:i,handler:o,guid:o.guid,selector:n,needsContext:n&&w.expr.match.needsContext.test(n),namespace:h.join(".")},a),(u=r[d])||((u=r[d]=[]).delegateCount=0,l.setup&&!1!==l.setup.call(e,i,h,c)||(e.addEventListener?e.addEventListener(d,c,!1):e.attachEvent&&e.attachEvent("on"+d,c))),l.add&&(l.add.call(e,p),p.handler.guid||(p.handler.guid=o.guid)),n?u.splice(u.delegateCount++,0,p):u.push(p),w.event.global[d]=!0)},remove:function(e,t,o,i,n){var r,s,a,l,c,u,d,h,p,f,m,g=w.hasData(e)&&w._data(e);if(g&&(u=g.events)){for(c=(t=(t||"").match(x)||[""]).length;c--;)if(p=m=(a=ge.exec(t[c])||[])[1],f=(a[2]||"").split(".").sort(),p){for(d=w.event.special[p]||{},h=u[p=(i?d.delegateType:d.bindType)||p]||[],a=a[2]&&new RegExp("(^|\\.)"+f.join("\\.(?:.*\\.|)")+"(\\.|$)"),l=r=h.length;r--;)s=h[r],!n&&m!==s.origType||o&&o.guid!==s.guid||a&&!a.test(s.namespace)||i&&i!==s.selector&&("**"!==i||!s.selector)||(h.splice(r,1),s.selector&&h.delegateCount--,d.remove&&d.remove.call(e,s));l&&!h.length&&(d.teardown&&!1!==d.teardown.call(e,f,g.handle)||w.removeEvent(e,p,g.handle),delete u[p])}else for(p in u)w.event.remove(e,p+t[c],o,i,!0);w.isEmptyObject(u)&&(delete g.handle,w._removeData(e,"events"))}},trigger:function(e,t,o,i){var n,r,s,a,l,c,u=[o||v],d=m.call(e,"type")?e.type:e,h=m.call(e,"namespace")?e.namespace.split("."):[],p=l=o=o||v;if(3!==o.nodeType&&8!==o.nodeType&&!me.test(d+w.event.triggered)&&(0<=d.indexOf(".")&&(d=(h=d.split(".")).shift(),h.sort()),r=d.indexOf(":")<0&&"on"+d,(e=e[w.expando]?e:new w.Event(d,"object"==typeof e&&e)).isTrigger=i?2:3,e.namespace=h.join("."),e.namespace_re=e.namespace?new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,e.result=void 0,e.target||(e.target=o),t=null==t?[e]:w.makeArray(t,[e]),a=w.event.special[d]||{},i||!a.trigger||!1!==a.trigger.apply(o,t))){if(!i&&!a.noBubble&&!w.isWindow(o)){for(s=a.delegateType||d,me.test(s+d)||(p=p.parentNode);p;p=p.parentNode)u.push(p),l=p;l===(o.ownerDocument||v)&&u.push(l.defaultView||l.parentWindow||f)}for(c=0;(p=u[c++])&&!e.isPropagationStopped();)e.type=1<c?s:a.bindType||d,(n=(w._data(p,"events")||{})[e.type]&&w._data(p,"handle"))&&n.apply(p,t),(n=r&&p[r])&&n.apply&&w.acceptData(p)&&(e.result=n.apply(p,t),!1===e.result&&e.preventDefault());if(e.type=d,!i&&!e.isDefaultPrevented()&&(!a._default||!1===a._default.apply(u.pop(),t))&&w.acceptData(o)&&r&&o[d]&&!w.isWindow(o)){(l=o[r])&&(o[r]=null),w.event.triggered=d;try{o[d]()}catch(e){}w.event.triggered=void 0,l&&(o[r]=l)}return e.result}},dispatch:function(e){e=w.event.fix(e);var t,o,i,n,r,s=u.call(arguments),a=(w._data(this,"events")||{})[e.type]||[],l=w.event.special[e.type]||{};if((s[0]=e).delegateTarget=this,!l.preDispatch||!1!==l.preDispatch.call(this,e)){for(r=w.event.handlers.call(this,e,a),t=0;(i=r[t++])&&!e.isPropagationStopped();)for(e.currentTarget=i.elem,n=0;(o=i.handlers[n++])&&!e.isImmediatePropagationStopped();)e.namespace_re&&!e.namespace_re.test(o.namespace)||(e.handleObj=o,e.data=o.data,void 0!==(o=((w.event.special[o.origType]||{}).handle||o.handler).apply(i.elem,s))&&!1===(e.result=o)&&(e.preventDefault(),e.stopPropagation()));return l.postDispatch&&l.postDispatch.call(this,e),e.result}},handlers:function(e,t){var o,i,n,r,s=[],a=t.delegateCount,l=e.target;if(a&&l.nodeType&&(!e.button||"click"!==e.type))for(;l!=this;l=l.parentNode||this)if(1===l.nodeType&&(!0!==l.disabled||"click"!==e.type)){for(n=[],r=0;r<a;r++)void 0===n[o=(i=t[r]).selector+" "]&&(n[o]=i.needsContext?0<=w(o,this).index(l):w.find(o,this,null,[l]).length),n[o]&&n.push(i);n.length&&s.push({elem:l,handlers:n})}return a<t.length&&s.push({elem:this,handlers:t.slice(a)}),s},fix:function(e){if(e[w.expando])return e;var t,o,i,n=e.type,r=e,s=this.fixHooks[n];for(s||(this.fixHooks[n]=s=fe.test(n)?this.mouseHooks:pe.test(n)?this.keyHooks:{}),i=s.props?this.props.concat(s.props):this.props,e=new w.Event(r),t=i.length;t--;)e[o=i[t]]=r[o];return e.target||(e.target=r.srcElement||v),3===e.target.nodeType&&(e.target=e.target.parentNode),e.metaKey=!!e.metaKey,s.filter?s.filter(e,r):e},props:"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(e,t){return null==e.which&&(e.which=null!=t.charCode?t.charCode:t.keyCode),e}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(e,t){var o,i,n=t.button,r=t.fromElement;return null==e.pageX&&null!=t.clientX&&(i=(o=e.target.ownerDocument||v).documentElement,o=o.body,e.pageX=t.clientX+(i&&i.scrollLeft||o&&o.scrollLeft||0)-(i&&i.clientLeft||o&&o.clientLeft||0),e.pageY=t.clientY+(i&&i.scrollTop||o&&o.scrollTop||0)-(i&&i.clientTop||o&&o.clientTop||0)),!e.relatedTarget&&r&&(e.relatedTarget=r===e.target?t.toElement:r),e.which||void 0===n||(e.which=1&n?1:2&n?3:4&n?2:0),e}},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==be()&&this.focus)try{return this.focus(),!1}catch(e){}},delegateType:"focusin"},blur:{trigger:function(){return this===be()&&this.blur?(this.blur(),!1):void 0},delegateType:"focusout"},click:{trigger:function(){return w.nodeName(this,"input")&&"checkbox"===this.type&&this.click?(this.click(),!1):void 0},_default:function(e){return w.nodeName(e.target,"a")}},beforeunload:{postDispatch:function(e){void 0!==e.result&&(e.originalEvent.returnValue=e.result)}}},simulate:function(e,t,o,i){e=w.extend(new w.Event,o,{type:e,isSimulated:!0,originalEvent:{}});i?w.event.trigger(e,null,t):w.event.dispatch.call(t,e),e.isDefaultPrevented()&&o.preventDefault()}},w.removeEvent=v.removeEventListener?function(e,t,o){e.removeEventListener&&e.removeEventListener(t,o,!1)}:function(e,t,o){t="on"+t;e.detachEvent&&(typeof e[t]==b&&(e[t]=null),e.detachEvent(t,o))},w.Event=function(e,t){return this instanceof w.Event?(e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||void 0===e.defaultPrevented&&(!1===e.returnValue||e.getPreventDefault&&e.getPreventDefault())?ve:C):this.type=e,t&&w.extend(this,t),this.timeStamp=e&&e.timeStamp||w.now(),void(this[w.expando]=!0)):new w.Event(e,t)},w.Event.prototype={isDefaultPrevented:C,isPropagationStopped:C,isImmediatePropagationStopped:C,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=ve,e&&(e.preventDefault?e.preventDefault():e.returnValue=!1)},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=ve,e&&(e.stopPropagation&&e.stopPropagation(),e.cancelBubble=!0)},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=ve,this.stopPropagation()}},w.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(e,n){w.event.special[e]={delegateType:n,bindType:n,handle:function(e){var t,o=e.relatedTarget,i=e.handleObj;return o&&(o===this||w.contains(this,o))||(e.type=i.origType,t=i.handler.apply(this,arguments),e.type=n),t}}}),g.submitBubbles||(w.event.special.submit={setup:function(){return!w.nodeName(this,"form")&&void w.event.add(this,"click._submit keypress._submit",function(e){e=e.target,e=w.nodeName(e,"input")||w.nodeName(e,"button")?e.form:void 0;e&&!w._data(e,"submitBubbles")&&(w.event.add(e,"submit._submit",function(e){e._submit_bubble=!0}),w._data(e,"submitBubbles",!0))})},postDispatch:function(e){e._submit_bubble&&(delete e._submit_bubble,this.parentNode&&!e.isTrigger&&w.event.simulate("submit",this.parentNode,e,!0))},teardown:function(){return!w.nodeName(this,"form")&&void w.event.remove(this,"._submit")}}),g.changeBubbles||(w.event.special.change={setup:function(){return he.test(this.nodeName)?("checkbox"!==this.type&&"radio"!==this.type||(w.event.add(this,"propertychange._change",function(e){"checked"===e.originalEvent.propertyName&&(this._just_changed=!0)}),w.event.add(this,"click._change",function(e){this._just_changed&&!e.isTrigger&&(this._just_changed=!1),w.event.simulate("change",this,e,!0)})),!1):void w.event.add(this,"beforeactivate._change",function(e){e=e.target;he.test(e.nodeName)&&!w._data(e,"changeBubbles")&&(w.event.add(e,"change._change",function(e){!this.parentNode||e.isSimulated||e.isTrigger||w.event.simulate("change",this.parentNode,e,!0)}),w._data(e,"changeBubbles",!0))})},handle:function(e){var t=e.target;return this!==t||e.isSimulated||e.isTrigger||"radio"!==t.type&&"checkbox"!==t.type?e.handleObj.handler.apply(this,arguments):void 0},teardown:function(){return w.event.remove(this,"._change"),!he.test(this.nodeName)}}),g.focusinBubbles||w.each({focus:"focusin",blur:"focusout"},function(o,i){function n(e){w.event.simulate(i,e.target,w.event.fix(e),!0)}w.event.special[i]={setup:function(){var e=this.ownerDocument||this,t=w._data(e,i);t||e.addEventListener(o,n,!0),w._data(e,i,(t||0)+1)},teardown:function(){var e=this.ownerDocument||this,t=w._data(e,i)-1;t?w._data(e,i,t):(e.removeEventListener(o,n,!0),w._removeData(e,i))}}}),w.fn.extend({on:function(e,t,o,i,n){var r,s;if("object"==typeof e){for(r in"string"!=typeof t&&(o=o||t,t=void 0),e)this.on(r,t,o,e[r],n);return this}if(null==o&&null==i?(i=t,o=t=void 0):null==i&&("string"==typeof t?(i=o,o=void 0):(i=o,o=t,t=void 0)),!1===i)i=C;else if(!i)return this;return 1===n&&(s=i,(i=function(e){return w().off(e),s.apply(this,arguments)}).guid=s.guid||(s.guid=w.guid++)),this.each(function(){w.event.add(this,e,i,o,t)})},one:function(e,t,o,i){return this.on(e,t,o,i,1)},off:function(e,t,o){var i,n;if(e&&e.preventDefault&&e.handleObj)return i=e.handleObj,w(e.delegateTarget).off(i.namespace?i.origType+"."+i.namespace:i.origType,i.selector,i.handler),this;if("object"!=typeof e)return!1!==t&&"function"!=typeof t||(o=t,t=void 0),!1===o&&(o=C),this.each(function(){w.event.remove(this,e,o,t)});for(n in e)this.off(n,t,e[n]);return this},trigger:function(e,t){return this.each(function(){w.event.trigger(e,t,this)})},triggerHandler:function(e,t){var o=this[0];return o?w.event.trigger(e,t,o,!0):void 0}});var Ce="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",we=/ jQuery\d+="(?:null|\d+)"/g,xe=new RegExp("<(?:"+Ce+")[\\s/>]","i"),_e=/^\s+/,Se=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,ke=/<([\w:]+)/,Te=/<tbody/i,Fe=/<|&#?\w+;/,Ee=/<(?:script|style|link)/i,De=/checked\s*(?:[^=]|=\s*.checked.)/i,Pe=/^$|\/(?:java|ecma)script/i,Ae=/^true\/(.*)/,Ie=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,_={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],area:[1,"<map>","</map>"],param:[1,"<object>","</object>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:g.htmlSerialize?[0,"",""]:[1,"X<div>","</div>"]},Me=ye(v).appendChild(v.createElement("div"));function S(e,t){var o,i,n=0,r=typeof e.getElementsByTagName!=b?e.getElementsByTagName(t||"*"):typeof e.querySelectorAll!=b?e.querySelectorAll(t||"*"):void 0;if(!r)for(r=[],o=e.childNodes||e;null!=(i=o[n]);n++)!t||w.nodeName(i,t)?r.push(i):w.merge(r,S(i,t));return void 0===t||t&&w.nodeName(e,t)?w.merge([e],r):r}function Re(e){ue.test(e.type)&&(e.defaultChecked=e.checked)}function Ne(e,t){return w.nodeName(e,"table")&&w.nodeName(11!==t.nodeType?t:t.firstChild,"tr")?e.getElementsByTagName("tbody")[0]||e.appendChild(e.ownerDocument.createElement("tbody")):e}function Le(e){return e.type=(null!==w.find.attr(e,"type"))+"/"+e.type,e}function Oe(e){var t=Ae.exec(e.type);return t?e.type=t[1]:e.removeAttribute("type"),e}function ze(e,t){for(var o,i=0;null!=(o=e[i]);i++)w._data(o,"globalEval",!t||w._data(t[i],"globalEval"))}function He(e,t){if(1===t.nodeType&&w.hasData(e)){var o,i,n,e=w._data(e),r=w._data(t,e),s=e.events;if(s)for(o in delete r.handle,r.events={},s)for(i=0,n=s[o].length;i<n;i++)w.event.add(t,o,s[o][i]);r.data&&(r.data=w.extend({},r.data))}}_.optgroup=_.option,_.tbody=_.tfoot=_.colgroup=_.caption=_.thead,_.th=_.td,w.extend({clone:function(e,t,o){var i,n,r,s,a,l,c,u,d=w.contains(e.ownerDocument,e);if(g.html5Clone||w.isXMLDoc(e)||!xe.test("<"+e.nodeName+">")?r=e.cloneNode(!0):(Me.innerHTML=e.outerHTML,Me.removeChild(r=Me.firstChild)),!(g.noCloneEvent&&g.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||w.isXMLDoc(e)))for(i=S(r),a=S(e),s=0;null!=(n=a[s]);++s)if(i[s]){h=void 0;p=void 0;l=void 0;c=void 0;u=void 0;var h=n;var p=i[s];if(1===p.nodeType){if(l=p.nodeName.toLowerCase(),!g.noCloneEvent&&p[w.expando]){for(c in(u=w._data(p)).events)w.removeEvent(p,c,u.handle);p.removeAttribute(w.expando)}"script"===l&&p.text!==h.text?(Le(p).text=h.text,Oe(p)):"object"===l?(p.parentNode&&(p.outerHTML=h.outerHTML),g.html5Clone&&h.innerHTML&&!w.trim(p.innerHTML)&&(p.innerHTML=h.innerHTML)):"input"===l&&ue.test(h.type)?(p.defaultChecked=p.checked=h.checked,p.value!==h.value&&(p.value=h.value)):"option"===l?p.defaultSelected=p.selected=h.defaultSelected:"input"!==l&&"textarea"!==l||(p.defaultValue=h.defaultValue)}}if(t)if(o)for(a=a||S(e),i=i||S(r),s=0;null!=(n=a[s]);s++)He(n,i[s]);else He(e,r);return 0<(i=S(r,"script")).length&&ze(i,!d&&S(e,"script")),i=a=n=null,r},buildFragment:function(e,t,o,i){for(var n,r,s,a,l,c,u,d=e.length,h=ye(t),p=[],f=0;f<d;f++)if((r=e[f])||0===r)if("object"===w.type(r))w.merge(p,r.nodeType?[r]:r);else if(Fe.test(r)){for(a=a||h.appendChild(t.createElement("div")),l=(ke.exec(r)||["",""])[1].toLowerCase(),u=_[l]||_._default,a.innerHTML=u[1]+r.replace(Se,"<$1></$2>")+u[2],n=u[0];n--;)a=a.lastChild;if(!g.leadingWhitespace&&_e.test(r)&&p.push(t.createTextNode(_e.exec(r)[0])),!g.tbody)for(n=(r="table"!==l||Te.test(r)?"<table>"!==u[1]||Te.test(r)?0:a:a.firstChild)&&r.childNodes.length;n--;)w.nodeName(c=r.childNodes[n],"tbody")&&!c.childNodes.length&&r.removeChild(c);for(w.merge(p,a.childNodes),a.textContent="";a.firstChild;)a.removeChild(a.firstChild);a=h.lastChild}else p.push(t.createTextNode(r));for(a&&h.removeChild(a),g.appendChecked||w.grep(S(p,"input"),Re),f=0;r=p[f++];)if((!i||-1===w.inArray(r,i))&&(s=w.contains(r.ownerDocument,r),a=S(h.appendChild(r),"script"),s&&ze(a),o))for(n=0;r=a[n++];)Pe.test(r.type||"")&&o.push(r);return a=null,h},cleanData:function(e,t){for(var o,i,n,r,s=0,a=w.expando,l=w.cache,c=g.deleteExpando,u=w.event.special;null!=(o=e[s]);s++)if((t||w.acceptData(o))&&(r=(n=o[a])&&l[n])){if(r.events)for(i in r.events)u[i]?w.event.remove(o,i):w.removeEvent(o,i,r.handle);l[n]&&(delete l[n],c?delete o[a]:typeof o.removeAttribute!=b?o.removeAttribute(a):o[a]=null,d.push(n))}}}),w.fn.extend({text:function(e){return l(this,function(e){return void 0===e?w.text(this):this.empty().append((this[0]&&this[0].ownerDocument||v).createTextNode(e))},null,e,arguments.length)},append:function(){return this.domManip(arguments,function(e){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||Ne(this,e).appendChild(e)})},prepend:function(){return this.domManip(arguments,function(e){var t;1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(t=Ne(this,e)).insertBefore(e,t.firstChild)})},before:function(){return this.domManip(arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return this.domManip(arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},remove:function(e,t){for(var o,i=e?w.filter(e,this):this,n=0;null!=(o=i[n]);n++)t||1!==o.nodeType||w.cleanData(S(o)),o.parentNode&&(t&&w.contains(o.ownerDocument,o)&&ze(S(o,"script")),o.parentNode.removeChild(o));return this},empty:function(){for(var e,t=0;null!=(e=this[t]);t++){for(1===e.nodeType&&w.cleanData(S(e,!1));e.firstChild;)e.removeChild(e.firstChild);e.options&&w.nodeName(e,"select")&&(e.options.length=0)}return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return w.clone(this,e,t)})},html:function(e){return l(this,function(e){var t=this[0]||{},o=0,i=this.length;if(void 0===e)return 1===t.nodeType?t.innerHTML.replace(we,""):void 0;if(!("string"!=typeof e||Ee.test(e)||!g.htmlSerialize&&xe.test(e)||!g.leadingWhitespace&&_e.test(e)||_[(ke.exec(e)||["",""])[1].toLowerCase()])){e=e.replace(Se,"<$1></$2>");try{for(;o<i;o++)1===(t=this[o]||{}).nodeType&&(w.cleanData(S(t,!1)),t.innerHTML=e);t=0}catch(e){}}t&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var t=arguments[0];return this.domManip(arguments,function(e){t=this.parentNode,w.cleanData(S(this)),t&&t.replaceChild(e,this)}),t&&(t.length||t.nodeType)?this:this.remove()},detach:function(e){return this.remove(e,!0)},domManip:function(o,i){o=z.apply([],o);var e,t,n,r,s,a,l=0,c=this.length,u=this,d=c-1,h=o[0],p=w.isFunction(h);if(p||1<c&&"string"==typeof h&&!g.checkClone&&De.test(h))return this.each(function(e){var t=u.eq(e);p&&(o[0]=h.call(this,e,t.html())),t.domManip(o,i)});if(c&&(e=(a=w.buildFragment(o,this[0].ownerDocument,!1,this)).firstChild,1===a.childNodes.length&&(a=e),e)){for(n=(r=w.map(S(a,"script"),Le)).length;l<c;l++)t=a,l!==d&&(t=w.clone(t,!0,!0),n&&w.merge(r,S(t,"script"))),i.call(this[l],t,l);if(n)for(s=r[r.length-1].ownerDocument,w.map(r,Oe),l=0;l<n;l++)t=r[l],Pe.test(t.type||"")&&!w._data(t,"globalEval")&&w.contains(s,t)&&(t.src?w._evalUrl&&w._evalUrl(t.src):w.globalEval((t.text||t.textContent||t.innerHTML||"").replace(Ie,"")));a=e=null}return this}}),w.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,s){w.fn[e]=function(e){for(var t,o=0,i=[],n=w(e),r=n.length-1;o<=r;o++)t=o===r?this:this.clone(!0),w(n[o])[s](t),H.apply(i,t.get());return this.pushStack(i)}});var Be,Ue,je={};function Ve(e,t){e=w(t.createElement(e)).appendTo(t.body),t=f.getDefaultComputedStyle?f.getDefaultComputedStyle(e[0]).display:w.css(e[0],"display");return e.detach(),t}function We(e){var t=v,o=je[e];return o||("none"!==(o=Ve(e,t))&&o||((t=((Be=(Be||w("<iframe frameborder='0' width='0' height='0'/>")).appendTo(t.documentElement))[0].contentWindow||Be[0].contentDocument).document).write(),t.close(),o=Ve(e,t),Be.detach()),je[e]=o),o}(c=v.createElement("div")).innerHTML="  <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",(r=c.getElementsByTagName("a")[0]).style.cssText="float:left;opacity:.5",g.opacity=/^0.5/.test(r.style.opacity),g.cssFloat=!!r.style.cssFloat,c.style.backgroundClip="content-box",c.cloneNode(!0).style.backgroundClip="",g.clearCloneStyle="content-box"===c.style.backgroundClip,r=c=null,g.shrinkWrapBlocks=function(){var e,t,o;if(null==Ue){if(!(e=v.getElementsByTagName("body")[0]))return;t=v.createElement("div"),o=v.createElement("div"),e.appendChild(t).appendChild(o),Ue=!1,typeof o.style.zoom!=b&&(o.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;padding:0;margin:0;border:0;width:1px;padding:1px;zoom:1",o.innerHTML="<div></div>",o.firstChild.style.width="5px",Ue=3!==o.offsetWidth),e.removeChild(t),e=o=null}return Ue};var k,T,Ge,$e,Ye,Ke,qe,Xe,Je=/^margin/,Ze=new RegExp("^("+e+")(?!px)[a-z%]+$","i"),Qe=/^(top|right|bottom|left)$/;function et(t,o){return{get:function(){var e=t();if(null!=e)return e?void delete this.get:(this.get=o).apply(this,arguments)}}}function tt(){var e,t,o=v.getElementsByTagName("body")[0];o&&(e=v.createElement("div"),t=v.createElement("div"),e.style.cssText=Xe,o.appendChild(e).appendChild(t),t.style.cssText="-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;position:absolute;display:block;padding:1px;border:1px;width:4px;margin-top:1%;top:1%",w.swap(o,null!=o.style.zoom?{zoom:1}:{},function(){$e=4===t.offsetWidth}),qe=!(Ke=!(Ye=!0)),f.getComputedStyle&&(Ke="1%"!==(f.getComputedStyle(t,null)||{}).top,Ye="4px"===(f.getComputedStyle(t,null)||{width:"4px"}).width),o.removeChild(e),t=null)}f.getComputedStyle?(k=function(e){return e.ownerDocument.defaultView.getComputedStyle(e,null)},T=function(e,t,o){var i,n=e.style,r=(o=o||k(e))?o.getPropertyValue(t)||o[t]:void 0;return o&&(""!==r||w.contains(e.ownerDocument,e)||(r=w.style(e,t)),Ze.test(r)&&Je.test(t)&&(e=n.width,t=n.minWidth,i=n.maxWidth,n.minWidth=n.maxWidth=n.width=r,r=o.width,n.width=e,n.minWidth=t,n.maxWidth=i)),void 0===r?r:r+""}):v.documentElement.currentStyle&&(k=function(e){return e.currentStyle},T=function(e,t,o){var i,n,r,s=e.style;return null==(o=(o=o||k(e))?o[t]:void 0)&&s&&s[t]&&(o=s[t]),Ze.test(o)&&!Qe.test(t)&&(i=s.left,(r=(n=e.runtimeStyle)&&n.left)&&(n.left=e.currentStyle.left),s.left="fontSize"===t?"1em":o,o=s.pixelLeft+"px",s.left=i,r&&(n.left=r)),void 0===o?o:o+""||"auto"}),s=v.createElement("div"),Xe="border:0;width:0;height:0;position:absolute;top:0;left:-9999px",s.innerHTML="  <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",(c=s.getElementsByTagName("a")[0]).style.cssText="float:left;opacity:.5",g.opacity=/^0.5/.test(c.style.opacity),g.cssFloat=!!c.style.cssFloat,s.style.backgroundClip="content-box",s.cloneNode(!0).style.backgroundClip="",g.clearCloneStyle="content-box"===s.style.backgroundClip,c=s=null,w.extend(g,{reliableHiddenOffsets:function(){if(null!=Ge)return Ge;var e,t,o,i=v.createElement("div"),n=v.getElementsByTagName("body")[0];return n?(i.setAttribute("className","t"),i.innerHTML="  <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",(e=v.createElement("div")).style.cssText=Xe,n.appendChild(e).appendChild(i),i.innerHTML="<table><tr><td></td><td>t</td></tr></table>",(t=i.getElementsByTagName("td"))[0].style.cssText="padding:0;margin:0;border:0;display:none",o=0===t[0].offsetHeight,t[0].style.display="",t[1].style.display="none",Ge=o&&0===t[0].offsetHeight,n.removeChild(e),i=n=null,Ge):void 0},boxSizing:function(){return null==$e&&tt(),$e},boxSizingReliable:function(){return null==Ye&&tt(),Ye},pixelPosition:function(){return null==Ke&&tt(),Ke},reliableMarginRight:function(){var e,t,o,i;if(null==qe&&f.getComputedStyle){if(!(e=v.getElementsByTagName("body")[0]))return;t=v.createElement("div"),o=v.createElement("div"),t.style.cssText=Xe,e.appendChild(t).appendChild(o),(i=o.appendChild(v.createElement("div"))).style.cssText=o.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;padding:0;margin:0;border:0",i.style.marginRight=i.style.width="0",o.style.width="1px",qe=!parseFloat((f.getComputedStyle(i,null)||{}).marginRight),e.removeChild(t)}return qe}}),w.swap=function(e,t,o,i){var n,r={};for(n in t)r[n]=e.style[n],e.style[n]=t[n];for(n in o=o.apply(e,i||[]),t)e.style[n]=r[n];return o};var ot=/alpha\([^)]*\)/i,it=/opacity\s*=\s*([^)]*)/,nt=/^(none|table(?!-c[ea]).+)/,rt=new RegExp("^("+e+")(.*)$","i"),st=new RegExp("^([+-])=("+e+")","i"),at={position:"absolute",visibility:"hidden",display:"block"},lt={letterSpacing:0,fontWeight:400},ct=["Webkit","O","Moz","ms"];function ut(e,t){if(t in e)return t;for(var o=t.charAt(0).toUpperCase()+t.slice(1),i=t,n=ct.length;n--;)if((t=ct[n]+o)in e)return t;return i}function dt(e,t){for(var o,i,n,r=[],s=0,a=e.length;s<a;s++)(i=e[s]).style&&(r[s]=w._data(i,"olddisplay"),o=i.style.display,t?(r[s]||"none"!==o||(i.style.display=""),""===i.style.display&&y(i)&&(r[s]=w._data(i,"olddisplay",We(i.nodeName)))):r[s]||(n=y(i),(o&&"none"!==o||!n)&&w._data(i,"olddisplay",n?o:w.css(i,"display"))));for(s=0;s<a;s++)!(i=e[s]).style||t&&"none"!==i.style.display&&""!==i.style.display||(i.style.display=t?r[s]||"":"none");return e}function ht(e,t,o){var i=rt.exec(t);return i?Math.max(0,i[1]-(o||0))+(i[2]||"px"):t}function pt(e,t,o,i,n){for(var r=o===(i?"border":"content")?4:"width"===t?1:0,s=0;r<4;r+=2)"margin"===o&&(s+=w.css(e,o+a[r],!0,n)),i?("content"===o&&(s-=w.css(e,"padding"+a[r],!0,n)),"margin"!==o&&(s-=w.css(e,"border"+a[r]+"Width",!0,n))):(s+=w.css(e,"padding"+a[r],!0,n),"padding"!==o&&(s+=w.css(e,"border"+a[r]+"Width",!0,n)));return s}function ft(e,t,o){var i=!0,n="width"===t?e.offsetWidth:e.offsetHeight,r=k(e),s=g.boxSizing()&&"border-box"===w.css(e,"boxSizing",!1,r);if(n<=0||null==n){if(((n=T(e,t,r))<0||null==n)&&(n=e.style[t]),Ze.test(n))return n;i=s&&(g.boxSizingReliable()||n===e.style[t]),n=parseFloat(n)||0}return n+pt(e,t,o||(s?"border":"content"),i,r)+"px"}function F(e,t,o,i,n){return new F.prototype.init(e,t,o,i,n)}w.extend({cssHooks:{opacity:{get:function(e,t){if(t)return""===(t=T(e,"opacity"))?"1":t}}},cssNumber:{columnCount:!0,fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{float:g.cssFloat?"cssFloat":"styleFloat"},style:function(e,t,o,i){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var n,r,s,a=w.camelCase(t),l=e.style;if(t=w.cssProps[a]||(w.cssProps[a]=ut(l,a)),s=w.cssHooks[t]||w.cssHooks[a],void 0===o)return s&&"get"in s&&void 0!==(n=s.get(e,!1,i))?n:l[t];if("string"===(r=typeof o)&&(n=st.exec(o))&&(o=(n[1]+1)*n[2]+parseFloat(w.css(e,t)),r="number"),null!=o&&o==o&&("number"!==r||w.cssNumber[a]||(o+="px"),g.clearCloneStyle||""!==o||0!==t.indexOf("background")||(l[t]="inherit"),!(s&&"set"in s&&void 0===(o=s.set(e,o,i)))))try{l[t]="",l[t]=o}catch(e){}}},css:function(e,t,o,i){var n,r=w.camelCase(t);return t=w.cssProps[r]||(w.cssProps[r]=ut(e.style,r)),"normal"===(n=void 0===(n=(r=w.cssHooks[t]||w.cssHooks[r])&&"get"in r?r.get(e,!0,o):n)?T(e,t,i):n)&&t in lt&&(n=lt[t]),""===o||o?(r=parseFloat(n),!0===o||w.isNumeric(r)?r||0:n):n}}),w.each(["height","width"],function(e,n){w.cssHooks[n]={get:function(e,t,o){return t?0===e.offsetWidth&&nt.test(w.css(e,"display"))?w.swap(e,at,function(){return ft(e,n,o)}):ft(e,n,o):void 0},set:function(e,t,o){var i=o&&k(e);return ht(0,t,o?pt(e,n,o,g.boxSizing()&&"border-box"===w.css(e,"boxSizing",!1,i),i):0)}}}),g.opacity||(w.cssHooks.opacity={get:function(e,t){return it.test((t&&e.currentStyle?e.currentStyle:e.style).filter||"")?.01*parseFloat(RegExp.$1)+"":t?"1":""},set:function(e,t){var o=e.style,e=e.currentStyle,i=w.isNumeric(t)?"alpha(opacity="+100*t+")":"",n=e&&e.filter||o.filter||"";((o.zoom=1)<=t||""===t)&&""===w.trim(n.replace(ot,""))&&o.removeAttribute&&(o.removeAttribute("filter"),""===t||e&&!e.filter)||(o.filter=ot.test(n)?n.replace(ot,i):n+" "+i)}}),w.cssHooks.marginRight=et(g.reliableMarginRight,function(e,t){return t?w.swap(e,{display:"inline-block"},T,[e,"marginRight"]):void 0}),w.each({margin:"",padding:"",border:"Width"},function(n,r){w.cssHooks[n+r]={expand:function(e){for(var t=0,o={},i="string"==typeof e?e.split(" "):[e];t<4;t++)o[n+a[t]+r]=i[t]||i[t-2]||i[0];return o}},Je.test(n)||(w.cssHooks[n+r].set=ht)}),w.fn.extend({css:function(e,t){return l(this,function(e,t,o){var i,n,r={},s=0;if(w.isArray(t)){for(i=k(e),n=t.length;s<n;s++)r[t[s]]=w.css(e,t[s],!1,i);return r}return void 0!==o?w.style(e,t,o):w.css(e,t)},e,t,1<arguments.length)},show:function(){return dt(this,!0)},hide:function(){return dt(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each(function(){y(this)?w(this).show():w(this).hide()})}}),((w.Tween=F).prototype={constructor:F,init:function(e,t,o,i,n,r){this.elem=e,this.prop=o,this.easing=n||"swing",this.options=t,this.start=this.now=this.cur(),this.end=i,this.unit=r||(w.cssNumber[o]?"":"px")},cur:function(){var e=F.propHooks[this.prop];return(e&&e.get?e:F.propHooks._default).get(this)},run:function(e){var t=F.propHooks[this.prop];return this.pos=e=this.options.duration?w.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):e,this.now=(this.end-this.start)*e+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),(t&&t.set?t:F.propHooks._default).set(this),this}}).init.prototype=F.prototype,(F.propHooks={_default:{get:function(e){var t;return null==e.elem[e.prop]||e.elem.style&&null!=e.elem.style[e.prop]?(t=w.css(e.elem,e.prop,""))&&"auto"!==t?t:0:e.elem[e.prop]},set:function(e){w.fx.step[e.prop]?w.fx.step[e.prop](e):e.elem.style&&(null!=e.elem.style[w.cssProps[e.prop]]||w.cssHooks[e.prop])?w.style(e.elem,e.prop,e.now+e.unit):e.elem[e.prop]=e.now}}}).scrollTop=F.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},w.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2}},w.fx=F.prototype.init,w.fx.step={};var E,mt,D,gt=/^(?:toggle|show|hide)$/,vt=new RegExp("^(?:([+-])=|)("+e+")([a-z%]*)$","i"),bt=/queueHooks$/,yt=[function(t,e,o){var i,n,r,s,a,l,c,u,d=this,h={},p=t.style,f=t.nodeType&&y(t),m=w._data(t,"fxshow");for(i in o.queue||(null==(a=w._queueHooks(t,"fx")).unqueued&&(a.unqueued=0,l=a.empty.fire,a.empty.fire=function(){a.unqueued||l()}),a.unqueued++,d.always(function(){d.always(function(){a.unqueued--,w.queue(t,"fx").length||a.empty.fire()})})),1===t.nodeType&&("height"in e||"width"in e)&&(o.overflow=[p.overflow,p.overflowX,p.overflowY],c=w.css(t,"display"),u=We(t.nodeName),"inline"===(c="none"===c?u:c)&&"none"===w.css(t,"float")&&(g.inlineBlockNeedsLayout&&"inline"!==u?p.zoom=1:p.display="inline-block")),o.overflow&&(p.overflow="hidden",g.shrinkWrapBlocks()||d.always(function(){p.overflow=o.overflow[0],p.overflowX=o.overflow[1],p.overflowY=o.overflow[2]})),e)if(n=e[i],gt.exec(n)){if(delete e[i],r=r||"toggle"===n,n===(f?"hide":"show")){if("show"!==n||!m||void 0===m[i])continue;f=!0}h[i]=m&&m[i]||w.style(t,i)}if(!w.isEmptyObject(h))for(i in m?"hidden"in m&&(f=m.hidden):m=w._data(t,"fxshow",{}),r&&(m.hidden=!f),f?w(t).show():d.done(function(){w(t).hide()}),d.done(function(){for(var e in w._removeData(t,"fxshow"),h)w.style(t,e,h[e])}),h)s=xt(f?m[i]:0,i,d),i in m||(m[i]=s.start,f&&(s.end=s.start,s.start="width"===i||"height"===i?1:0))}],P={"*":[function(e,t){var o=this.createTween(e,t),i=o.cur(),t=vt.exec(t),n=t&&t[3]||(w.cssNumber[e]?"":"px"),r=(w.cssNumber[e]||"px"!==n&&+i)&&vt.exec(w.css(o.elem,e)),s=1,a=20;if(r&&r[3]!==n)for(n=n||r[3],t=t||[],r=+i||1;w.style(o.elem,e,(r/=s=s||".5")+n),s!==(s=o.cur()/i)&&1!==s&&--a;);return t&&(r=o.start=+r||+i||0,o.unit=n,o.end=t[1]?r+(t[1]+1)*t[2]:+t[2]),o}]};function Ct(){return setTimeout(function(){E=void 0}),E=w.now()}function wt(e,t){var o,i={height:e},n=0;for(t=t?1:0;n<4;n+=2-t)i["margin"+(o=a[n])]=i["padding"+o]=e;return t&&(i.opacity=i.width=e),i}function xt(e,t,o){for(var i,n=(P[t]||[]).concat(P["*"]),r=0,s=n.length;r<s;r++)if(i=n[r].call(o,t,e))return i}function _t(n,e,t){var o,r,i,s,a,l,c,u=0,d=yt.length,h=w.Deferred().always(function(){delete p.elem}),p=function(){if(r)return!1;for(var e=E||Ct(),e=Math.max(0,f.startTime+f.duration-e),t=1-(e/f.duration||0),o=0,i=f.tweens.length;o<i;o++)f.tweens[o].run(t);return h.notifyWith(n,[f,t,e]),t<1&&i?e:(h.resolveWith(n,[f]),!1)},f=h.promise({elem:n,props:w.extend({},e),opts:w.extend(!0,{specialEasing:{}},t),originalProperties:e,originalOptions:t,startTime:E||Ct(),duration:t.duration,tweens:[],createTween:function(e,t){t=w.Tween(n,f.opts,e,t,f.opts.specialEasing[e]||f.opts.easing);return f.tweens.push(t),t},stop:function(e){var t=0,o=e?f.tweens.length:0;if(r)return this;for(r=!0;t<o;t++)f.tweens[t].run(1);return e?h.resolveWith(n,[f,e]):h.rejectWith(n,[f,e]),this}}),m=f.props,g=m,v=f.opts.specialEasing;for(i in g)if(s=w.camelCase(i),a=v[s],l=g[i],w.isArray(l)&&(a=l[1],l=g[i]=l[0]),i!==s&&(g[s]=l,delete g[i]),c=w.cssHooks[s],c&&"expand"in c)for(i in l=c.expand(l),delete g[s],l)i in g||(g[i]=l[i],v[i]=a);else v[s]=a;for(;u<d;u++)if(o=yt[u].call(f,n,m,f.opts))return o;return w.map(m,xt,f),w.isFunction(f.opts.start)&&f.opts.start.call(n,f),w.fx.timer(w.extend(p,{elem:n,anim:f,queue:f.opts.queue})),f.progress(f.opts.progress).done(f.opts.done,f.opts.complete).fail(f.opts.fail).always(f.opts.always)}w.Animation=w.extend(_t,{tweener:function(e,t){for(var o,i=0,n=(e=w.isFunction(e)?(t=e,["*"]):e.split(" ")).length;i<n;i++)o=e[i],P[o]=P[o]||[],P[o].unshift(t)},prefilter:function(e,t){t?yt.unshift(e):yt.push(e)}}),w.speed=function(e,t,o){var i=e&&"object"==typeof e?w.extend({},e):{complete:o||!o&&t||w.isFunction(e)&&e,duration:e,easing:o&&t||t&&!w.isFunction(t)&&t};return i.duration=w.fx.off?0:"number"==typeof i.duration?i.duration:i.duration in w.fx.speeds?w.fx.speeds[i.duration]:w.fx.speeds._default,null!=i.queue&&!0!==i.queue||(i.queue="fx"),i.old=i.complete,i.complete=function(){w.isFunction(i.old)&&i.old.call(this),i.queue&&w.dequeue(this,i.queue)},i},w.fn.extend({fadeTo:function(e,t,o,i){return this.filter(y).css("opacity",0).show().end().animate({opacity:t},e,o,i)},animate:function(t,e,o,i){function n(){var e=_t(this,w.extend({},t),s);(r||w._data(this,"finish"))&&e.stop(!0)}var r=w.isEmptyObject(t),s=w.speed(e,o,i);return n.finish=n,r||!1===s.queue?this.each(n):this.queue(s.queue,n)},stop:function(n,e,r){function s(e){var t=e.stop;delete e.stop,t(r)}return"string"!=typeof n&&(r=e,e=n,n=void 0),e&&!1!==n&&this.queue(n||"fx",[]),this.each(function(){var e=!0,t=null!=n&&n+"queueHooks",o=w.timers,i=w._data(this);if(t)i[t]&&i[t].stop&&s(i[t]);else for(t in i)i[t]&&i[t].stop&&bt.test(t)&&s(i[t]);for(t=o.length;t--;)o[t].elem!==this||null!=n&&o[t].queue!==n||(o[t].anim.stop(r),e=!1,o.splice(t,1));!e&&r||w.dequeue(this,n)})},finish:function(s){return!1!==s&&(s=s||"fx"),this.each(function(){var e,t=w._data(this),o=t[s+"queue"],i=t[s+"queueHooks"],n=w.timers,r=o?o.length:0;for(t.finish=!0,w.queue(this,s,[]),i&&i.stop&&i.stop.call(this,!0),e=n.length;e--;)n[e].elem===this&&n[e].queue===s&&(n[e].anim.stop(!0),n.splice(e,1));for(e=0;e<r;e++)o[e]&&o[e].finish&&o[e].finish.call(this);delete t.finish})}}),w.each(["toggle","show","hide"],function(e,i){var n=w.fn[i];w.fn[i]=function(e,t,o){return null==e||"boolean"==typeof e?n.apply(this,arguments):this.animate(wt(i,!0),e,t,o)}}),w.each({slideDown:wt("show"),slideUp:wt("hide"),slideToggle:wt("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,i){w.fn[e]=function(e,t,o){return this.animate(i,e,t,o)}}),w.timers=[],w.fx.tick=function(){var e,t=w.timers,o=0;for(E=w.now();o<t.length;o++)(e=t[o])()||t[o]!==e||t.splice(o--,1);t.length||w.fx.stop(),E=void 0},w.fx.timer=function(e){w.timers.push(e),e()?w.fx.start():w.timers.pop()},w.fx.interval=13,w.fx.start=function(){mt=mt||setInterval(w.fx.tick,w.fx.interval)},w.fx.stop=function(){clearInterval(mt),mt=null},w.fx.speeds={slow:600,fast:200,_default:400},w.fn.delay=function(i,e){return i=w.fx&&w.fx.speeds[i]||i,this.queue(e=e||"fx",function(e,t){var o=setTimeout(e,i);t.stop=function(){clearTimeout(o)}})},(r=v.createElement("div")).setAttribute("className","t"),r.innerHTML="  <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",s=r.getElementsByTagName("a")[0],e=(c=v.createElement("select")).appendChild(v.createElement("option")),D=r.getElementsByTagName("input")[0],s.style.cssText="top:1px",g.getSetAttribute="t"!==r.className,g.style=/top/.test(s.getAttribute("style")),g.hrefNormalized="/a"===s.getAttribute("href"),g.checkOn=!!D.value,g.optSelected=e.selected,g.enctype=!!v.createElement("form").enctype,c.disabled=!0,g.optDisabled=!e.disabled,(D=v.createElement("input")).setAttribute("value",""),g.input=""===D.getAttribute("value"),D.value="t",D.setAttribute("type","radio"),g.radioValue="t"===D.value;var St=/\r/g;w.fn.extend({val:function(t){var o,e,i,n=this[0];return arguments.length?(i=w.isFunction(t),this.each(function(e){1===this.nodeType&&(null==(e=i?t.call(this,e,w(this).val()):t)?e="":"number"==typeof e?e+="":w.isArray(e)&&(e=w.map(e,function(e){return null==e?"":e+""})),(o=w.valHooks[this.type]||w.valHooks[this.nodeName.toLowerCase()])&&"set"in o&&void 0!==o.set(this,e,"value")||(this.value=e))})):n?(o=w.valHooks[n.type]||w.valHooks[n.nodeName.toLowerCase()])&&"get"in o&&void 0!==(e=o.get(n,"value"))?e:"string"==typeof(e=n.value)?e.replace(St,""):null==e?"":e:void 0}}),w.extend({valHooks:{option:{get:function(e){var t=w.find.attr(e,"value");return null!=t?t:w.text(e)}},select:{get:function(e){for(var t,o=e.options,i=e.selectedIndex,n="select-one"===e.type||i<0,r=n?null:[],s=n?i+1:o.length,a=i<0?s:n?i:0;a<s;a++)if(!(!(t=o[a]).selected&&a!==i||(g.optDisabled?t.disabled:null!==t.getAttribute("disabled"))||t.parentNode.disabled&&w.nodeName(t.parentNode,"optgroup"))){if(t=w(t).val(),n)return t;r.push(t)}return r},set:function(e,t){for(var o,i,n=e.options,r=w.makeArray(t),s=n.length;s--;)if(i=n[s],0<=w.inArray(w.valHooks.option.get(i),r))try{i.selected=o=!0}catch(e){i.scrollHeight}else i.selected=!1;return o||(e.selectedIndex=-1),n}}}}),w.each(["radio","checkbox"],function(){w.valHooks[this]={set:function(e,t){return w.isArray(t)?e.checked=0<=w.inArray(w(e).val(),t):void 0}},g.checkOn||(w.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})});var A,kt,I=w.expr.attrHandle,Tt=/^(?:checked|selected)$/i,M=g.getSetAttribute,Ft=g.input,Et=(w.fn.extend({attr:function(e,t){return l(this,w.attr,e,t,1<arguments.length)},removeAttr:function(e){return this.each(function(){w.removeAttr(this,e)})}}),w.extend({attr:function(e,t,o){var i,n,r=e.nodeType;if(e&&3!==r&&8!==r&&2!==r)return typeof e.getAttribute==b?w.prop(e,t,o):(1===r&&w.isXMLDoc(e)||(t=t.toLowerCase(),i=w.attrHooks[t]||(w.expr.match.bool.test(t)?kt:A)),void 0===o?i&&"get"in i&&null!==(n=i.get(e,t))?n:null==(n=w.find.attr(e,t))?void 0:n:null!==o?i&&"set"in i&&void 0!==(n=i.set(e,o,t))?n:(e.setAttribute(t,o+""),o):void w.removeAttr(e,t))},removeAttr:function(e,t){var o,i,n=0,r=t&&t.match(x);if(r&&1===e.nodeType)for(;o=r[n++];)i=w.propFix[o]||o,w.expr.match.bool.test(o)?Ft&&M||!Tt.test(o)?e[i]=!1:e[w.camelCase("default-"+o)]=e[i]=!1:w.attr(e,o,""),e.removeAttribute(M?o:i)},attrHooks:{type:{set:function(e,t){var o;if(!g.radioValue&&"radio"===t&&w.nodeName(e,"input"))return o=e.value,e.setAttribute("type",t),o&&(e.value=o),t}}}}),kt={set:function(e,t,o){return!1===t?w.removeAttr(e,o):Ft&&M||!Tt.test(o)?e.setAttribute(!M&&w.propFix[o]||o,o):e[w.camelCase("default-"+o)]=e[o]=!0,o}},w.each(w.expr.match.bool.source.match(/\w+/g),function(e,t){var r=I[t]||w.find.attr;I[t]=Ft&&M||!Tt.test(t)?function(e,t,o){var i,n;return o||(n=I[t],I[t]=i,i=null!=r(e,t,o)?t.toLowerCase():null,I[t]=n),i}:function(e,t,o){return o?void 0:e[w.camelCase("default-"+t)]?t.toLowerCase():null}}),Ft&&M||(w.attrHooks.value={set:function(e,t,o){return w.nodeName(e,"input")?void(e.defaultValue=t):A&&A.set(e,t,o)}}),M||(A={set:function(e,t,o){var i=e.getAttributeNode(o);return i||e.setAttributeNode(i=e.ownerDocument.createAttribute(o)),i.value=t+="","value"===o||t===e.getAttribute(o)?t:void 0}},I.id=I.name=I.coords=function(e,t,o){return o?void 0:(o=e.getAttributeNode(t))&&""!==o.value?o.value:null},w.valHooks.button={get:function(e,t){e=e.getAttributeNode(t);return e&&e.specified?e.value:void 0},set:A.set},w.attrHooks.contenteditable={set:function(e,t,o){A.set(e,""!==t&&t,o)}},w.each(["width","height"],function(e,o){w.attrHooks[o]={set:function(e,t){return""===t?(e.setAttribute(o,"auto"),t):void 0}}})),g.style||(w.attrHooks.style={get:function(e){return e.style.cssText||void 0},set:function(e,t){return e.style.cssText=t+""}}),/^(?:input|select|textarea|button|object)$/i),Dt=/^(?:a|area)$/i,Pt=(w.fn.extend({prop:function(e,t){return l(this,w.prop,e,t,1<arguments.length)},removeProp:function(e){return e=w.propFix[e]||e,this.each(function(){try{this[e]=void 0,delete this[e]}catch(e){}})}}),w.extend({propFix:{for:"htmlFor",class:"className"},prop:function(e,t,o){var i,n,r=e.nodeType;if(e&&3!==r&&8!==r&&2!==r)return(1!==r||!w.isXMLDoc(e))&&(t=w.propFix[t]||t,n=w.propHooks[t]),void 0!==o?n&&"set"in n&&void 0!==(i=n.set(e,o,t))?i:e[t]=o:n&&"get"in n&&null!==(i=n.get(e,t))?i:e[t]},propHooks:{tabIndex:{get:function(e){var t=w.find.attr(e,"tabindex");return t?parseInt(t,10):Et.test(e.nodeName)||Dt.test(e.nodeName)&&e.href?0:-1}}}}),g.hrefNormalized||w.each(["href","src"],function(e,t){w.propHooks[t]={get:function(e){return e.getAttribute(t,4)}}}),g.optSelected||(w.propHooks.selected={get:function(e){e=e.parentNode;return e&&(e.selectedIndex,e.parentNode&&e.parentNode.selectedIndex),null}}),w.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){w.propFix[this.toLowerCase()]=this}),g.enctype||(w.propFix.enctype="encoding"),/[\t\r\n\f]/g),At=(w.fn.extend({addClass:function(t){var e,o,i,n,r,s,a=0,l=this.length,c="string"==typeof t&&t;if(w.isFunction(t))return this.each(function(e){w(this).addClass(t.call(this,e,this.className))});if(c)for(e=(t||"").match(x)||[];a<l;a++)if(i=1===(o=this[a]).nodeType&&(o.className?(" "+o.className+" ").replace(Pt," "):" ")){for(r=0;n=e[r++];)i.indexOf(" "+n+" ")<0&&(i+=n+" ");s=w.trim(i),o.className!==s&&(o.className=s)}return this},removeClass:function(t){var e,o,i,n,r,s,a=0,l=this.length,c=0===arguments.length||"string"==typeof t&&t;if(w.isFunction(t))return this.each(function(e){w(this).removeClass(t.call(this,e,this.className))});if(c)for(e=(t||"").match(x)||[];a<l;a++)if(i=1===(o=this[a]).nodeType&&(o.className?(" "+o.className+" ").replace(Pt," "):"")){for(r=0;n=e[r++];)for(;0<=i.indexOf(" "+n+" ");)i=i.replace(" "+n+" "," ");s=t?w.trim(i):"",o.className!==s&&(o.className=s)}return this},toggleClass:function(n,t){var r=typeof n;return"boolean"==typeof t&&"string"==r?t?this.addClass(n):this.removeClass(n):this.each(w.isFunction(n)?function(e){w(this).toggleClass(n.call(this,e,this.className,t),t)}:function(){if("string"==r)for(var e,t=0,o=w(this),i=n.match(x)||[];e=i[t++];)o.hasClass(e)?o.removeClass(e):o.addClass(e);else r!=b&&"boolean"!=r||(this.className&&w._data(this,"__className__",this.className),this.className=!this.className&&!1!==n&&w._data(this,"__className__")||"")})},hasClass:function(e){for(var t=" "+e+" ",o=0,i=this.length;o<i;o++)if(1===this[o].nodeType&&0<=(" "+this[o].className+" ").replace(Pt," ").indexOf(t))return!0;return!1}}),w.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(e,o){w.fn[o]=function(e,t){return 0<arguments.length?this.on(o,null,e,t):this.trigger(o)}}),w.fn.extend({hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)},bind:function(e,t,o){return this.on(e,null,t,o)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,o,i){return this.on(t,e,o,i)},undelegate:function(e,t,o){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",o)}}),w.now()),It=/\?/,Mt=/(,)|(\[|{)|(}|])|"(?:[^"\\\r\n]|\\["\\\/bfnrt]|\\u[\da-fA-F]{4})*"\s*:?|true|false|null|-?(?!0\d)\d+(?:\.\d+|)(?:[eE][+-]?\d+|)/g;w.parseJSON=function(e){if(f.JSON&&f.JSON.parse)return f.JSON.parse(e+"");var n,r=null,t=w.trim(e+"");return t&&!w.trim(t.replace(Mt,function(e,t,o,i){return 0===(r=n&&t?0:r)?e:(n=o||t,r+=!i-!o,"")}))?Function("return "+t)():w.error("Invalid JSON: "+e)},w.parseXML=function(e){var t;if(!e||"string"!=typeof e)return null;try{f.DOMParser?t=(new DOMParser).parseFromString(e,"text/xml"):((t=new ActiveXObject("Microsoft.XMLDOM")).async="false",t.loadXML(e))}catch(e){t=void 0}return t&&t.documentElement&&!t.getElementsByTagName("parsererror").length||w.error("Invalid XML: "+e),t};var R,N,Rt=/#.*$/,Nt=/([?&])_=[^&]*/,Lt=/^(.*?):[ \t]*([^\r\n]*)\r?$/gm,Ot=/^(?:GET|HEAD)$/,zt=/^\/\//,Ht=/^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/,Bt={},Ut={},jt="*/".concat("*");try{N=location.href}catch(e){(N=v.createElement("a")).href="",N=N.href}function Vt(r){return function(e,t){"string"!=typeof e&&(t=e,e="*");var o,i=0,n=e.toLowerCase().match(x)||[];if(w.isFunction(t))for(;o=n[i++];)"+"===o.charAt(0)?(o=o.slice(1)||"*",(r[o]=r[o]||[]).unshift(t)):(r[o]=r[o]||[]).push(t)}}function Wt(t,i,n,r){var s={},a=t===Ut;function l(e){var o;return s[e]=!0,w.each(t[e]||[],function(e,t){t=t(i,n,r);return"string"!=typeof t||a||s[t]?a?!(o=t):void 0:(i.dataTypes.unshift(t),l(t),!1)}),o}return l(i.dataTypes[0])||!s["*"]&&l("*")}function Gt(e,t){var o,i,n=w.ajaxSettings.flatOptions||{};for(i in t)void 0!==t[i]&&((n[i]?e:o=o||{})[i]=t[i]);return o&&w.extend(!0,e,o),e}R=Ht.exec(N.toLowerCase())||[],w.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:N,type:"GET",isLocal:/^(?:about|app|app-storage|.+-extension|file|res|widget):$/.test(R[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":jt,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":w.parseJSON,"text xml":w.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?Gt(Gt(e,w.ajaxSettings),t):Gt(w.ajaxSettings,e)},ajaxPrefilter:Vt(Bt),ajaxTransport:Vt(Ut),ajax:function(e,t){"object"==typeof e&&(t=e,e=void 0);var o,l,c,u,d,h,i,p=w.ajaxSetup({},t=t||{}),f=p.context||p,m=p.context&&(f.nodeType||f.jquery)?w(f):w.event,g=w.Deferred(),v=w.Callbacks("once memory"),b=p.statusCode||{},n={},r={},y=0,s="canceled",C={readyState:0,getResponseHeader:function(e){var t;if(2===y){if(!i)for(i={};t=Lt.exec(c);)i[t[1].toLowerCase()]=t[2];t=i[e.toLowerCase()]}return null==t?null:t},getAllResponseHeaders:function(){return 2===y?c:null},setRequestHeader:function(e,t){var o=e.toLowerCase();return y||(e=r[o]=r[o]||e,n[e]=t),this},overrideMimeType:function(e){return y||(p.mimeType=e),this},statusCode:function(e){if(e)if(y<2)for(var t in e)b[t]=[b[t],e[t]];else C.always(e[C.status]);return this},abort:function(e){e=e||s;return h&&h.abort(e),a(0,e),this}};if(g.promise(C).complete=v.add,C.success=C.done,C.error=C.fail,p.url=((e||p.url||N)+"").replace(Rt,"").replace(zt,R[1]+"//"),p.type=t.method||t.type||p.method||p.type,p.dataTypes=w.trim(p.dataType||"*").toLowerCase().match(x)||[""],null==p.crossDomain&&(e=Ht.exec(p.url.toLowerCase()),p.crossDomain=!(!e||e[1]===R[1]&&e[2]===R[2]&&(e[3]||("http:"===e[1]?"80":"443"))===(R[3]||("http:"===R[1]?"80":"443")))),p.data&&p.processData&&"string"!=typeof p.data&&(p.data=w.param(p.data,p.traditional)),Wt(Bt,p,t,C),2===y)return C;for(o in(d=p.global)&&0==w.active++&&w.event.trigger("ajaxStart"),p.type=p.type.toUpperCase(),p.hasContent=!Ot.test(p.type),l=p.url,p.hasContent||(p.data&&(l=p.url+=(It.test(l)?"&":"?")+p.data,delete p.data),!1===p.cache&&(p.url=Nt.test(l)?l.replace(Nt,"$1_="+At++):l+(It.test(l)?"&":"?")+"_="+At++)),p.ifModified&&(w.lastModified[l]&&C.setRequestHeader("If-Modified-Since",w.lastModified[l]),w.etag[l]&&C.setRequestHeader("If-None-Match",w.etag[l])),(p.data&&p.hasContent&&!1!==p.contentType||t.contentType)&&C.setRequestHeader("Content-Type",p.contentType),C.setRequestHeader("Accept",p.dataTypes[0]&&p.accepts[p.dataTypes[0]]?p.accepts[p.dataTypes[0]]+("*"!==p.dataTypes[0]?", "+jt+"; q=0.01":""):p.accepts["*"]),p.headers)C.setRequestHeader(o,p.headers[o]);if(p.beforeSend&&(!1===p.beforeSend.call(f,C,p)||2===y))return C.abort();for(o in s="abort",{success:1,error:1,complete:1})C[o](p[o]);if(h=Wt(Ut,p,t,C)){C.readyState=1,d&&m.trigger("ajaxSend",[C,p]),p.async&&0<p.timeout&&(u=setTimeout(function(){C.abort("timeout")},p.timeout));try{y=1,h.send(n,a)}catch(e){if(!(y<2))throw e;a(-1,e)}}else a(-1,"No Transport");function a(e,t,o,i){var n,r,s,a=t;2!==y&&(y=2,u&&clearTimeout(u),h=void 0,c=i||"",C.readyState=0<e?4:0,i=200<=e&&e<300||304===e,o&&(s=function(e,t,o){for(var i,n,r,s,a=e.contents,l=e.dataTypes;"*"===l[0];)l.shift(),void 0===n&&(n=e.mimeType||t.getResponseHeader("Content-Type"));if(n)for(s in a)if(a[s]&&a[s].test(n)){l.unshift(s);break}if(l[0]in o)r=l[0];else{for(s in o){if(!l[0]||e.converters[s+" "+l[0]]){r=s;break}i=i||s}r=r||i}return r?(r!==l[0]&&l.unshift(r),o[r]):void 0}(p,C,o)),s=function(e,t,o,i){var n,r,s,a,l,c={},u=e.dataTypes.slice();if(u[1])for(s in e.converters)c[s.toLowerCase()]=e.converters[s];for(r=u.shift();r;)if(e.responseFields[r]&&(o[e.responseFields[r]]=t),!l&&i&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),l=r,r=u.shift())if("*"===r)r=l;else if("*"!==l&&l!==r){if(!(s=c[l+" "+r]||c["* "+r]))for(n in c)if(a=n.split(" "),a[1]===r&&(s=c[l+" "+a[0]]||c["* "+a[0]])){!0===s?s=c[n]:!0!==c[n]&&(r=a[0],u.unshift(a[1]));break}if(!0!==s)if(s&&e.throws)t=s(t);else try{t=s(t)}catch(e){return{state:"parsererror",error:s?e:"No conversion from "+l+" to "+r}}}return{state:"success",data:t}}(p,s,C,i),i?(p.ifModified&&((o=C.getResponseHeader("Last-Modified"))&&(w.lastModified[l]=o),(o=C.getResponseHeader("etag"))&&(w.etag[l]=o)),204===e||"HEAD"===p.type?a="nocontent":304===e?a="notmodified":(a=s.state,n=s.data,i=!(r=s.error))):(r=a,!e&&a||(a="error",e<0&&(e=0))),C.status=e,C.statusText=(t||a)+"",i?g.resolveWith(f,[n,a,C]):g.rejectWith(f,[C,a,r]),C.statusCode(b),b=void 0,d&&m.trigger(i?"ajaxSuccess":"ajaxError",[C,p,i?n:r]),v.fireWith(f,[C,a]),d&&(m.trigger("ajaxComplete",[C,p]),--w.active||w.event.trigger("ajaxStop")))}return C},getJSON:function(e,t,o){return w.get(e,t,o,"json")},getScript:function(e,t){return w.get(e,void 0,t,"script")}}),w.each(["get","post"],function(e,n){w[n]=function(e,t,o,i){return w.isFunction(t)&&(i=i||o,o=t,t=void 0),w.ajax({url:e,type:n,dataType:i,data:t,success:o})}}),w.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){w.fn[t]=function(e){return this.on(t,e)}}),w._evalUrl=function(e){return w.ajax({url:e,type:"GET",dataType:"script",async:!1,global:!1,throws:!0})},w.fn.extend({wrapAll:function(t){return w.isFunction(t)?this.each(function(e){w(this).wrapAll(t.call(this,e))}):(this[0]&&(e=w(t,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&e.insertBefore(this[0]),e.map(function(){for(var e=this;e.firstChild&&1===e.firstChild.nodeType;)e=e.firstChild;return e}).append(this)),this);var e},wrapInner:function(o){return this.each(w.isFunction(o)?function(e){w(this).wrapInner(o.call(this,e))}:function(){var e=w(this),t=e.contents();t.length?t.wrapAll(o):e.append(o)})},wrap:function(t){var o=w.isFunction(t);return this.each(function(e){w(this).wrapAll(o?t.call(this,e):t)})},unwrap:function(){return this.parent().each(function(){w.nodeName(this,"body")||w(this).replaceWith(this.childNodes)}).end()}}),w.expr.filters.hidden=function(e){return e.offsetWidth<=0&&e.offsetHeight<=0||!g.reliableHiddenOffsets()&&"none"===(e.style&&e.style.display||w.css(e,"display"))},w.expr.filters.visible=function(e){return!w.expr.filters.hidden(e)};var $t=/%20/g,Yt=/\[\]$/,Kt=/\r?\n/g,qt=/^(?:submit|button|image|reset|file)$/i,Xt=/^(?:input|select|textarea|keygen)/i;w.param=function(e,t){function o(e,t){t=w.isFunction(t)?t():null==t?"":t,n[n.length]=encodeURIComponent(e)+"="+encodeURIComponent(t)}var i,n=[];if(void 0===t&&(t=w.ajaxSettings&&w.ajaxSettings.traditional),w.isArray(e)||e.jquery&&!w.isPlainObject(e))w.each(e,function(){o(this.name,this.value)});else for(i in e)!function o(i,e,n,r){if(w.isArray(e))w.each(e,function(e,t){n||Yt.test(i)?r(i,t):o(i+"["+("object"==typeof t?e:"")+"]",t,n,r)});else if(n||"object"!==w.type(e))r(i,e);else for(var t in e)o(i+"["+t+"]",e[t],n,r)}(i,e[i],t,o);return n.join("&").replace($t,"+")},w.fn.extend({serialize:function(){return w.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=w.prop(this,"elements");return e?w.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!w(this).is(":disabled")&&Xt.test(this.nodeName)&&!qt.test(e)&&(this.checked||!ue.test(e))}).map(function(e,t){var o=w(this).val();return null==o?null:w.isArray(o)?w.map(o,function(e){return{name:t.name,value:e.replace(Kt,"\r\n")}}):{name:t.name,value:o.replace(Kt,"\r\n")}}).get()}}),w.ajaxSettings.xhr=void 0!==f.ActiveXObject?function(){return!this.isLocal&&/^(get|post|head|put|delete|options)$/i.test(this.type)&&Qt()||function(){try{return new f.ActiveXObject("Microsoft.XMLHTTP")}catch(e){}}()}:Qt;var Jt=0,Zt={},r=w.ajaxSettings.xhr();function Qt(){try{return new f.XMLHttpRequest}catch(e){}}f.ActiveXObject&&w(f).on("unload",function(){for(var e in Zt)Zt[e](void 0,!0)}),g.cors=!!r&&"withCredentials"in r,(r=g.ajax=!!r)&&w.ajaxTransport(function(l){var c;if(!l.crossDomain||g.cors)return{send:function(e,r){var t,s=l.xhr(),a=++Jt;if(s.open(l.type,l.url,l.async,l.username,l.password),l.xhrFields)for(t in l.xhrFields)s[t]=l.xhrFields[t];for(t in l.mimeType&&s.overrideMimeType&&s.overrideMimeType(l.mimeType),l.crossDomain||e["X-Requested-With"]||(e["X-Requested-With"]="XMLHttpRequest"),e)void 0!==e[t]&&s.setRequestHeader(t,e[t]+"");s.send(l.hasContent&&l.data||null),c=function(e,t){var o,i,n;if(c&&(t||4===s.readyState))if(delete Zt[a],c=void 0,s.onreadystatechange=w.noop,t)4!==s.readyState&&s.abort();else{n={},o=s.status,"string"==typeof s.responseText&&(n.text=s.responseText);try{i=s.statusText}catch(e){i=""}o||!l.isLocal||l.crossDomain?1223===o&&(o=204):o=n.text?200:404}n&&r(o,i,n,s.getAllResponseHeaders())},l.async?4===s.readyState?setTimeout(c):s.onreadystatechange=Zt[a]=c:c()},abort:function(){c&&c(void 0,!0)}}}),w.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/(?:java|ecma)script/},converters:{"text script":function(e){return w.globalEval(e),e}}}),w.ajaxPrefilter("script",function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type="GET",e.global=!1)}),w.ajaxTransport("script",function(t){var i,n;if(t.crossDomain)return n=v.head||w("head")[0]||v.documentElement,{send:function(e,o){(i=v.createElement("script")).async=!0,t.scriptCharset&&(i.charset=t.scriptCharset),i.src=t.url,i.onload=i.onreadystatechange=function(e,t){!t&&i.readyState&&!/loaded|complete/.test(i.readyState)||(i.onload=i.onreadystatechange=null,i.parentNode&&i.parentNode.removeChild(i),i=null,t||o(200,"success"))},n.insertBefore(i,n.firstChild)},abort:function(){i&&i.onload(void 0,!0)}}});var eo=[],to=/(=)\?(?=&|$)|\?\?/,oo=(w.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=eo.pop()||w.expando+"_"+At++;return this[e]=!0,e}}),w.ajaxPrefilter("json jsonp",function(e,t,o){var i,n,r,s=!1!==e.jsonp&&(to.test(e.url)?"url":"string"==typeof e.data&&!(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&to.test(e.data)&&"data");return s||"jsonp"===e.dataTypes[0]?(i=e.jsonpCallback=w.isFunction(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,s?e[s]=e[s].replace(to,"$1"+i):!1!==e.jsonp&&(e.url+=(It.test(e.url)?"&":"?")+e.jsonp+"="+i),e.converters["script json"]=function(){return r||w.error(i+" was not called"),r[0]},e.dataTypes[0]="json",n=f[i],f[i]=function(){r=arguments},o.always(function(){f[i]=n,e[i]&&(e.jsonpCallback=t.jsonpCallback,eo.push(i)),r&&w.isFunction(n)&&n(r[0]),r=n=void 0}),"script"):void 0}),w.parseHTML=function(e,t,o){if(!e||"string"!=typeof e)return null;"boolean"==typeof t&&(o=t,t=!1),t=t||v;var i=K.exec(e),o=!o&&[];return i?[t.createElement(i[1])]:(i=w.buildFragment([e],t,o),o&&o.length&&w(o).remove(),w.merge([],i.childNodes))},w.fn.load),io=(w.fn.load=function(e,t,o){if("string"!=typeof e&&oo)return oo.apply(this,arguments);var i,n,r,s=this,a=e.indexOf(" ");return 0<=a&&(i=e.slice(a,e.length),e=e.slice(0,a)),w.isFunction(t)?(o=t,t=void 0):t&&"object"==typeof t&&(r="POST"),0<s.length&&w.ajax({url:e,type:r,dataType:"html",data:t}).done(function(e){n=arguments,s.html(i?w("<div>").append(w.parseHTML(e)).find(i):e)}).complete(o&&function(e,t){s.each(o,n||[e.responseText,t,e])}),this},w.expr.filters.animated=function(t){return w.grep(w.timers,function(e){return t===e.elem}).length},f.document.documentElement);function no(e){return w.isWindow(e)?e:9===e.nodeType&&(e.defaultView||e.parentWindow)}w.offset={setOffset:function(e,t,o){var i,n,r,s,a=w.css(e,"position"),l=w(e),c={};"static"===a&&(e.style.position="relative"),r=l.offset(),i=w.css(e,"top"),s=w.css(e,"left"),a=("absolute"===a||"fixed"===a)&&-1<w.inArray("auto",[i,s])?(n=(a=l.position()).top,a.left):(n=parseFloat(i)||0,parseFloat(s)||0),null!=(t=w.isFunction(t)?t.call(e,o,r):t).top&&(c.top=t.top-r.top+n),null!=t.left&&(c.left=t.left-r.left+a),"using"in t?t.using.call(e,c):l.css(c)}},w.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){w.offset.setOffset(this,t,e)});var e,o={top:0,left:0},i=this[0],n=i&&i.ownerDocument;return n?(e=n.documentElement,w.contains(e,i)?(typeof i.getBoundingClientRect!=b&&(o=i.getBoundingClientRect()),i=no(n),{top:o.top+(i.pageYOffset||e.scrollTop)-(e.clientTop||0),left:o.left+(i.pageXOffset||e.scrollLeft)-(e.clientLeft||0)}):o):void 0},position:function(){var e,t,o,i;if(this[0])return o={top:0,left:0},i=this[0],"fixed"===w.css(i,"position")?t=i.getBoundingClientRect():(e=this.offsetParent(),t=this.offset(),(o=w.nodeName(e[0],"html")?o:e.offset()).top+=w.css(e[0],"borderTopWidth",!0),o.left+=w.css(e[0],"borderLeftWidth",!0)),{top:t.top-o.top-w.css(i,"marginTop",!0),left:t.left-o.left-w.css(i,"marginLeft",!0)}},offsetParent:function(){return this.map(function(){for(var e=this.offsetParent||io;e&&!w.nodeName(e,"html")&&"static"===w.css(e,"position");)e=e.offsetParent;return e||io})}}),w.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,n){var r=/Y/.test(n);w.fn[t]=function(e){return l(this,function(e,t,o){var i=no(e);return void 0===o?i?n in i?i[n]:i.document.documentElement[t]:e[t]:void(i?i.scrollTo(r?w(i).scrollLeft():o,r?o:w(i).scrollTop()):e[t]=o)},t,e,arguments.length,null)}}),w.each(["top","left"],function(e,o){w.cssHooks[o]=et(g.pixelPosition,function(e,t){return t?(t=T(e,o),Ze.test(t)?w(e).position()[o]+"px":t):void 0})}),w.each({Height:"height",Width:"width"},function(r,s){w.each({padding:"inner"+r,content:s,"":"outer"+r},function(i,e){w.fn[e]=function(e,t){var o=arguments.length&&(i||"boolean"!=typeof e),n=i||(!0===e||!0===t?"margin":"border");return l(this,function(e,t,o){var i;return w.isWindow(e)?e.document.documentElement["client"+r]:9===e.nodeType?(i=e.documentElement,Math.max(e.body["scroll"+r],i["scroll"+r],e.body["offset"+r],i["offset"+r],i["client"+r])):void 0===o?w.css(e,t,n):w.style(e,t,o,n)},s,o?e:void 0,o,null)}})}),w.fn.size=function(){return this.length},w.fn.andSelf=w.fn.addBack,"function"==typeof define&&define.amd&&define("jquery",[],function(){return w});var ro=f.jQuery,so=f.$;return w.noConflict=function(e){return f.$===w&&(f.$=so),e&&f.jQuery===w&&(f.jQuery=ro),w},typeof L==b&&(f.jQuery=f.$=w),w}),function(){var e=function(r){var s,a=!1;return r(function(){var e=(document.body||document.documentElement).style;return a=void 0!==e.animation||void 0!==e.WebkitAnimation||void 0!==e.MozAnimation||void 0!==e.MsAnimation||void 0!==e.OAnimation,r(window).bind("keyup.vex",function(e){return 27===e.keyCode?s.closeByEscape():void 0})}),s={globalID:1,animationEndEvent:"animationend webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend",baseClassNames:{vex:"vex",content:"vex-content",overlay:"vex-overlay",close:"vex-close",closing:"vex-closing",open:"vex-open"},defaultOptions:{content:"",showCloseButton:!0,escapeButtonCloses:!0,overlayClosesOnClick:!0,appendLocation:"body",className:"",css:{},overlayClassName:"",overlayCSS:{},contentClassName:"",contentCSS:{},closeClassName:"",closeCSS:{}},open:function(e){return(e=r.extend({},s.defaultOptions,e)).id=s.globalID,s.globalID+=1,e.$vex=r("<div>").addClass(s.baseClassNames.vex).addClass(e.className).css(e.css).data({vex:e}),e.$vexOverlay=r("<div>").addClass(s.baseClassNames.overlay).addClass(e.overlayClassName).css(e.overlayCSS).data({vex:e}),e.overlayClosesOnClick&&e.$vexOverlay.bind("click.vex",function(e){return e.target===this?s.close(r(this).data().vex.id):void 0}),e.$vex.append(e.$vexOverlay),e.$vexContent=r("<div>").addClass(s.baseClassNames.content).addClass(e.contentClassName).css(e.contentCSS).append(e.content).data({vex:e}),e.$vex.append(e.$vexContent),e.showCloseButton&&(e.$closeButton=r("<div>").addClass(s.baseClassNames.close).addClass(e.closeClassName).css(e.closeCSS).data({vex:e}).bind("click.vex",function(){return s.close(r(this).data().vex.id)}),e.$vexContent.append(e.$closeButton)),r(e.appendLocation).append(e.$vex),s.setupBodyClassName(e.$vex),e.afterOpen&&e.afterOpen(e.$vexContent,e),setTimeout(function(){return e.$vexContent.trigger("vexOpen",e)},0),e.$vexContent},getAllVexes:function(){return r("."+s.baseClassNames.vex+':not(".'+s.baseClassNames.closing+'") .'+s.baseClassNames.content)},getVexByID:function(e){return s.getAllVexes().filter(function(){return r(this).data().vex.id===e})},close:function(e){var t;if(!e){if(!(t=s.getAllVexes().last()).length)return!1;e=t.data().vex.id}return s.closeByID(e)},closeAll:function(){var e=s.getAllVexes().map(function(){return r(this).data().vex.id}).toArray();return!(null==e||!e.length)&&(r.each(e.reverse(),function(e,t){return s.closeByID(t)}),!0)},closeByID:function(e){var t,o,i,n=s.getVexByID(e);return n.length?(t=n.data().vex.$vex,i=r.extend({},n.data().vex),e=function(){return i.beforeClose?i.beforeClose(n,i):void 0},o=function(){return n.trigger("vexClose",i),t.remove(),i.afterClose?i.afterClose(n,i):void 0},a?(e(),t.unbind(s.animationEndEvent).bind(s.animationEndEvent,o).addClass(s.baseClassNames.closing)):(e(),o()),!0):void 0},closeByEscape:function(){var e=s.getAllVexes().map(function(){return r(this).data().vex.id}).toArray();return!(null==e||!e.length)&&(e=Math.max.apply(Math,e),!0===s.getVexByID(e).data().vex.escapeButtonCloses&&s.closeByID(e))},setupBodyClassName:function(e){return e.bind("vexOpen.vex",function(){return r("body").addClass(s.baseClassNames.open)}).bind("vexClose.vex",function(){return s.getAllVexes().length?void 0:r("body").removeClass(s.baseClassNames.open)})},hideLoading:function(){return r(".vex-loading-spinner").remove()},showLoading:function(){return s.hideLoading(),r("body").append('<div class="vex-loading-spinner '+s.defaultOptions.className+'"></div>')}}};"function"==typeof define&&define.amd?define(["jquery"],e):"object"==typeof exports?module.exports=e(require("jquery")):window.vex=e(jQuery)}.call(this),function(){var e=function(n,r){var i,s;return null==r?n.error("Vex is required to use vex.dialog"):(i=function(e){var t={};return n.each(e.serializeArray(),function(){return t[this.name]?(t[this.name].push||(t[this.name]=[t[this.name]]),t[this.name].push(this.value||"")):t[this.name]=this.value||""}),t},(s={}).buttons={YES:{text:"OK",type:"submit",className:"vex-dialog-button-primary"},NO:{text:"Cancel",type:"button",className:"vex-dialog-button-secondary",click:function(e){return e.data().vex.value=!1,r.close(e.data().vex.id)}}},s.defaultOptions={callback:function(){},afterOpen:function(){},message:"Message",input:'<input name="vex" type="hidden" value="_vex-empty-value" />',value:!1,buttons:[s.buttons.YES,s.buttons.NO],showCloseButton:!1,onSubmit:function(e){var t=n(this),o=t.parent();return e.preventDefault(),e.stopPropagation(),o.data().vex.value=s.getFormValueOnSubmit(i(t)),r.close(o.data().vex.id)},focusFirstInput:!0},s.defaultAlertOptions={message:"Alert",buttons:[s.buttons.YES]},s.defaultConfirmOptions={message:"Confirm"},s.open=function(t){var e;return(t=n.extend({},r.defaultOptions,s.defaultOptions,t)).content=s.buildDialogForm(t),t.beforeClose=function(e){return t.callback(e.data().vex.value)},e=r.open(t),t.focusFirstInput&&e.find('input[type="submit"], textarea, input[type="date"], input[type="datetime"], input[type="datetime-local"], input[type="email"], input[type="month"], input[type="number"], input[type="password"], input[type="search"], input[type="tel"], input[type="text"], input[type="time"], input[type="url"], input[type="week"]').first().focus(),e},s.alert=function(e){return e=n.extend({},s.defaultAlertOptions,e="string"==typeof e?{message:e}:e),s.open(e)},s.confirm=function(e){return"string"==typeof e?n.error("dialog.confirm(options) requires options.callback."):(e=n.extend({},s.defaultConfirmOptions,e),s.open(e))},s.prompt=function(e){var t;return"string"==typeof e?n.error("dialog.prompt(options) requires options.callback."):(t={message:'<label for="vex">'+(e.label||"Prompt:")+"</label>",input:'<input name="vex" type="text" class="vex-dialog-prompt-input" placeholder="'+(e.placeholder||"")+'"  value="'+(e.value||"")+'" />'},e=n.extend({},t,e),s.open(e))},s.buildDialogForm=function(e){var t=n('<form class="vex-dialog-form" />'),o=n('<div class="vex-dialog-message" />'),i=n('<div class="vex-dialog-input" />');return t.append(o.append(e.message)).append(i.append(e.input)).append(s.buttonsToDOM(e.buttons)).bind("submit.vex",e.onSubmit),t},s.getFormValueOnSubmit=function(e){return e.vex||""===e.vex?"_vex-empty-value"===e.vex||e.vex:e},s.buttonsToDOM=function(o){var i=n('<div class="vex-dialog-buttons" />');return n.each(o,function(e,t){return i.append(n('<input type="'+t.type+'" />').val(t.text).addClass(t.className+" vex-dialog-button "+(0===e?"vex-first ":"")+(e===o.length-1?"vex-last ":"")).bind("click.vex",function(e){return t.click?t.click(n(this).parents("."+r.baseClassNames.content),e):void 0}))}),i},s)};"function"==typeof define&&define.amd?define(["jquery","vex"],e):"object"==typeof exports?module.exports=e(require("jquery"),require("vex")):window.vex.dialog=e(window.jQuery,window.vex)}.call(this),!function(e){"function"==typeof define&&define.amd?define(["jquery"],e):e(jQuery)}(function(x){function i(e,t){var o,i,n=e.nodeName.toLowerCase();return"area"===n?(o=(i=e.parentNode).name,!(!e.href||!o||"map"!==i.nodeName.toLowerCase())&&(!!(i=x("img[usemap='#"+o+"']")[0])&&r(i))):(/^(input|select|textarea|button|object)$/.test(n)?!e.disabled:"a"===n&&e.href||t)&&r(e)}function r(e){return x.expr.filters.visible(e)&&!x(e).parents().addBack().filter(function(){return"hidden"===x.css(this,"visibility")}).length}function e(){this._curInst=null,this._keyEvent=!1,this._disabledInputs=[],this._datepickerShowing=!1,this._inDialog=!1,this._mainDivId="ui-datepicker-div",this._inlineClass="ui-datepicker-inline",this._appendClass="ui-datepicker-append",this._triggerClass="ui-datepicker-trigger",this._dialogClass="ui-datepicker-dialog",this._disableClass="ui-datepicker-disabled",this._unselectableClass="ui-datepicker-unselectable",this._currentClass="ui-datepicker-current-day",this._dayOverClass="ui-datepicker-days-cell-over",this.regional=[],this.regional[""]={closeText:"Done",prevText:"Prev",nextText:"Next",currentText:"Today",monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su","Mo","Tu","We","Th","Fr","Sa"],weekHeader:"Wk",dateFormat:"mm/dd/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},this._defaults={showOn:"focus",showAnim:"fadeIn",showOptions:{},defaultDate:null,appendText:"",buttonText:"...",buttonImage:"",buttonImageOnly:!1,hideIfNoPrevNext:!1,navigationAsDateFormat:!1,gotoCurrent:!1,changeMonth:!1,changeYear:!1,yearRange:"c-10:c+10",showOtherMonths:!1,selectOtherMonths:!1,showWeek:!1,calculateWeek:this.iso8601Week,shortYearCutoff:"+10",minDate:null,maxDate:null,duration:"fast",beforeShowDay:null,beforeShow:null,onSelect:null,onChangeMonthYear:null,onClose:null,numberOfMonths:1,showCurrentAtPos:0,stepMonths:1,stepBigMonths:12,altField:"",altFormat:"",constrainInput:!0,showButtonPanel:!1,autoSize:!1,disabled:!1},x.extend(this._defaults,this.regional[""]),this.regional.en=x.extend(!0,{},this.regional[""]),this.regional["en-US"]=x.extend(!0,{},this.regional.en),this.dpDiv=o(x("<div id='"+this._mainDivId+"' class='ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all'></div>"))}function o(e){var t="button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a";return e.delegate(t,"mouseout",function(){x(this).removeClass("ui-state-hover"),-1!==this.className.indexOf("ui-datepicker-prev")&&x(this).removeClass("ui-datepicker-prev-hover"),-1!==this.className.indexOf("ui-datepicker-next")&&x(this).removeClass("ui-datepicker-next-hover")}).delegate(t,"mouseover",s)}function s(){x.datepicker._isDisabledDatepicker((R.inline?R.dpDiv.parent():R.input)[0])||(x(this).parents(".ui-datepicker-calendar").find("a").removeClass("ui-state-hover"),x(this).addClass("ui-state-hover"),-1!==this.className.indexOf("ui-datepicker-prev")&&x(this).addClass("ui-datepicker-prev-hover"),-1!==this.className.indexOf("ui-datepicker-next")&&x(this).addClass("ui-datepicker-next-hover"))}function l(e,t){for(var o in x.extend(e,t),t)null==t[o]&&(e[o]=t[o])}function t(t){return function(){var e=this.element.val();t.apply(this,arguments),this._refresh(),e!==this.element.val()&&this._trigger("change")}}x.ui=x.ui||{},x.extend(x.ui,{version:"1.11.4",keyCode:{BACKSPACE:8,COMMA:188,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SPACE:32,TAB:9,UP:38}}),x.fn.extend({scrollParent:function(e){var t=this.css("position"),o="absolute"===t,i=e?/(auto|scroll|hidden)/:/(auto|scroll)/,e=this.parents().filter(function(){var e=x(this);return(!o||"static"!==e.css("position"))&&i.test(e.css("overflow")+e.css("overflow-y")+e.css("overflow-x"))}).eq(0);return"fixed"!==t&&e.length?e:x(this[0].ownerDocument||document)},uniqueId:(u=0,function(){return this.each(function(){this.id||(this.id="ui-id-"+ ++u)})}),removeUniqueId:function(){return this.each(function(){/^ui-id-\d+$/.test(this.id)&&x(this).removeAttr("id")})}}),x.extend(x.expr[":"],{data:x.expr.createPseudo?x.expr.createPseudo(function(t){return function(e){return!!x.data(e,t)}}):function(e,t,o){return!!x.data(e,o[3])},focusable:function(e){return i(e,!isNaN(x.attr(e,"tabindex")))},tabbable:function(e){var t=x.attr(e,"tabindex"),o=isNaN(t);return(o||0<=t)&&i(e,!o)}}),x("<a>").outerWidth(1).jquery||x.each(["Width","Height"],function(e,o){function i(e,t,o,i){return x.each(n,function(){t-=parseFloat(x.css(e,"padding"+this))||0,o&&(t-=parseFloat(x.css(e,"border"+this+"Width"))||0),i&&(t-=parseFloat(x.css(e,"margin"+this))||0)}),t}var n="Width"===o?["Left","Right"]:["Top","Bottom"],r=o.toLowerCase(),s={innerWidth:x.fn.innerWidth,innerHeight:x.fn.innerHeight,outerWidth:x.fn.outerWidth,outerHeight:x.fn.outerHeight};x.fn["inner"+o]=function(e){return void 0===e?s["inner"+o].call(this):this.each(function(){x(this).css(r,i(this,e)+"px")})},x.fn["outer"+o]=function(e,t){return"number"!=typeof e?s["outer"+o].call(this,e):this.each(function(){x(this).css(r,i(this,e,!0,t)+"px")})}}),x.fn.addBack||(x.fn.addBack=function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}),x("<a>").data("a-b","a").removeData("a-b").data("a-b")&&(x.fn.removeData=(c=x.fn.removeData,function(e){return arguments.length?c.call(this,x.camelCase(e)):c.call(this)})),x.ui.ie=!!/msie [\w.]+/.exec(navigator.userAgent.toLowerCase()),x.fn.extend({focus:(a=x.fn.focus,function(t,o){return"number"==typeof t?this.each(function(){var e=this;setTimeout(function(){x(e).focus(),o&&o.call(e)},t)}):a.apply(this,arguments)}),disableSelection:(n="onselectstart"in document.createElement("div")?"selectstart":"mousedown",function(){return this.bind(n+".ui-disableSelection",function(e){e.preventDefault()})}),enableSelection:function(){return this.unbind(".ui-disableSelection")},zIndex:function(e){if(void 0!==e)return this.css("zIndex",e);if(this.length)for(var t,o=x(this[0]);o.length&&o[0]!==document;){if(("absolute"===(t=o.css("position"))||"relative"===t||"fixed"===t)&&(t=parseInt(o.css("zIndex"),10),!isNaN(t)&&0!==t))return t;o=o.parent()}return 0}}),x.ui.plugin={add:function(e,t,o){var i,n=x.ui[e].prototype;for(i in o)n.plugins[i]=n.plugins[i]||[],n.plugins[i].push([t,o[i]])},call:function(e,t,o,i){var n,r=e.plugins[t];if(r&&(i||e.element[0].parentNode&&11!==e.element[0].parentNode.nodeType))for(n=0;r.length>n;n++)e.options[r[n][0]]&&r[n][1].apply(e.element,o)}};var n,a,c,u,d,L=0,h=Array.prototype.slice,p=(x.cleanData=(d=x.cleanData,function(e){for(var t,o,i=0;null!=(o=e[i]);i++)try{(t=x._data(o,"events"))&&t.remove&&x(o).triggerHandler("remove")}catch(e){}d(e)}),x.widget=function(e,o,t){var i,n,r,s,a={},l=e.split(".")[0];return e=e.split(".")[1],i=l+"-"+e,t||(t=o,o=x.Widget),x.expr[":"][i.toLowerCase()]=function(e){return!!x.data(e,i)},x[l]=x[l]||{},n=x[l][e],r=x[l][e]=function(e,t){return this._createWidget?void(arguments.length&&this._createWidget(e,t)):new r(e,t)},x.extend(r,n,{version:t.version,_proto:x.extend({},t),_childConstructors:[]}),(s=new o).options=x.widget.extend({},s.options),x.each(t,function(t,i){return x.isFunction(i)?void(a[t]=function(){var e,t=this._super,o=this._superApply;return this._super=n,this._superApply=r,e=i.apply(this,arguments),this._super=t,this._superApply=o,e}):void(a[t]=i);function n(){return o.prototype[t].apply(this,arguments)}function r(e){return o.prototype[t].apply(this,e)}}),r.prototype=x.widget.extend(s,{widgetEventPrefix:n&&s.widgetEventPrefix||e},a,{constructor:r,namespace:l,widgetName:e,widgetFullName:i}),n?(x.each(n._childConstructors,function(e,t){var o=t.prototype;x.widget(o.namespace+"."+o.widgetName,r,t._proto)}),delete n._childConstructors):o._childConstructors.push(r),x.widget.bridge(e,r),r},x.widget.extend=function(e){for(var t,o,i=h.call(arguments,1),n=0,r=i.length;n<r;n++)for(t in i[n])o=i[n][t],i[n].hasOwnProperty(t)&&void 0!==o&&(e[t]=x.isPlainObject(o)?x.isPlainObject(e[t])?x.widget.extend({},e[t],o):x.widget.extend({},o):o);return e},x.widget.bridge=function(r,t){var s=t.prototype.widgetFullName||r;x.fn[r]=function(o){var e="string"==typeof o,i=h.call(arguments,1),n=this;return e?this.each(function(){var e,t=x.data(this,s);return"instance"===o?(n=t,!1):t?x.isFunction(t[o])&&"_"!==o.charAt(0)?(e=t[o].apply(t,i))!==t&&void 0!==e?(n=e&&e.jquery?n.pushStack(e.get()):e,!1):void 0:x.error("no such method '"+o+"' for "+r+" widget instance"):x.error("cannot call methods on "+r+" prior to initialization; attempted to call method '"+o+"'")}):(i.length&&(o=x.widget.extend.apply(null,[o].concat(i))),this.each(function(){var e=x.data(this,s);e?(e.option(o||{}),e._init&&e._init()):x.data(this,s,new t(o,this))})),n}},x.Widget=function(){},x.Widget._childConstructors=[],x.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",defaultElement:"<div>",options:{disabled:!1,create:null},_createWidget:function(e,t){t=x(t||this.defaultElement||this)[0],this.element=x(t),this.uuid=L++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=x(),this.hoverable=x(),this.focusable=x(),t!==this&&(x.data(t,this.widgetFullName,this),this._on(!0,this.element,{remove:function(e){e.target===t&&this.destroy()}}),this.document=x(t.style?t.ownerDocument:t.document||t),this.window=x(this.document[0].defaultView||this.document[0].parentWindow)),this.options=x.widget.extend({},this.options,this._getCreateOptions(),e),this._create(),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:x.noop,_getCreateEventData:x.noop,_create:x.noop,_init:x.noop,destroy:function(){this._destroy(),this.element.unbind(this.eventNamespace).removeData(this.widgetFullName).removeData(x.camelCase(this.widgetFullName)),this.widget().unbind(this.eventNamespace).removeAttr("aria-disabled").removeClass(this.widgetFullName+"-disabled ui-state-disabled"),this.bindings.unbind(this.eventNamespace),this.hoverable.removeClass("ui-state-hover"),this.focusable.removeClass("ui-state-focus")},_destroy:x.noop,widget:function(){return this.element},option:function(e,t){var o,i,n,r=e;if(0===arguments.length)return x.widget.extend({},this.options);if("string"==typeof e)if(r={},e=(o=e.split(".")).shift(),o.length){for(i=r[e]=x.widget.extend({},this.options[e]),n=0;o.length-1>n;n++)i[o[n]]=i[o[n]]||{},i=i[o[n]];if(e=o.pop(),1===arguments.length)return void 0===i[e]?null:i[e];i[e]=t}else{if(1===arguments.length)return void 0===this.options[e]?null:this.options[e];r[e]=t}return this._setOptions(r),this},_setOptions:function(e){for(var t in e)this._setOption(t,e[t]);return this},_setOption:function(e,t){return this.options[e]=t,"disabled"===e&&(this.widget().toggleClass(this.widgetFullName+"-disabled",!!t),t&&(this.hoverable.removeClass("ui-state-hover"),this.focusable.removeClass("ui-state-focus"))),this},enable:function(){return this._setOptions({disabled:!1})},disable:function(){return this._setOptions({disabled:!0})},_on:function(n,r,e){var s,a=this;"boolean"!=typeof n&&(e=r,r=n,n=!1),e?(r=s=x(r),this.bindings=this.bindings.add(r)):(e=r,r=this.element,s=this.widget()),x.each(e,function(e,t){function o(){return n||!0!==a.options.disabled&&!x(this).hasClass("ui-state-disabled")?("string"==typeof t?a[t]:t).apply(a,arguments):void 0}"string"!=typeof t&&(o.guid=t.guid=t.guid||o.guid||x.guid++);var e=e.match(/^([\w:-]*)\s*(.*)$/),i=e[1]+a.eventNamespace,e=e[2];e?s.delegate(e,i,o):r.bind(i,o)})},_off:function(e,t){t=(t||"").split(" ").join(this.eventNamespace+" ")+this.eventNamespace,e.unbind(t).undelegate(t),this.bindings=x(this.bindings.not(e).get()),this.focusable=x(this.focusable.not(e).get()),this.hoverable=x(this.hoverable.not(e).get())},_delay:function(e,t){var o=this;return setTimeout(function(){return("string"==typeof e?o[e]:e).apply(o,arguments)},t||0)},_hoverable:function(e){this.hoverable=this.hoverable.add(e),this._on(e,{mouseenter:function(e){x(e.currentTarget).addClass("ui-state-hover")},mouseleave:function(e){x(e.currentTarget).removeClass("ui-state-hover")}})},_focusable:function(e){this.focusable=this.focusable.add(e),this._on(e,{focusin:function(e){x(e.currentTarget).addClass("ui-state-focus")},focusout:function(e){x(e.currentTarget).removeClass("ui-state-focus")}})},_trigger:function(e,t,o){var i,n,r=this.options[e];if(o=o||{},(t=x.Event(t)).type=(e===this.widgetEventPrefix?e:this.widgetEventPrefix+e).toLowerCase(),t.target=this.element[0],n=t.originalEvent)for(i in n)i in t||(t[i]=n[i]);return this.element.trigger(t,o),!(x.isFunction(r)&&!1===r.apply(this.element[0],[t].concat(o))||t.isDefaultPrevented())}},x.each({show:"fadeIn",hide:"fadeOut"},function(r,s){x.Widget.prototype["_"+r]=function(t,e,o){var i=(e="string"==typeof e?{effect:e}:e)?!0!==e&&"number"!=typeof e&&e.effect||s:r,n=!x.isEmptyObject(e="number"==typeof(e=e||{})?{duration:e}:e);e.complete=o,e.delay&&t.delay(e.delay),n&&x.effects&&x.effects.effect[i]?t[r](e):i!==r&&t[i]?t[i](e.duration,e.easing,o):t.queue(function(e){x(this)[r](),o&&o.call(t[0]),e()})}}),x.widget,!1);function _(e,t,o){return[parseFloat(e[0])*(m.test(e[0])?t/100:1),parseFloat(e[1])*(m.test(e[1])?o/100:1)]}function S(e,t){return parseInt(x.css(e,t),10)||0}x(document).mouseup(function(){p=!1}),x.widget("ui.mouse",{version:"1.11.4",options:{cancel:"input,textarea,button,select,option",distance:1,delay:0},_mouseInit:function(){var t=this;this.element.bind("mousedown."+this.widgetName,function(e){return t._mouseDown(e)}).bind("click."+this.widgetName,function(e){return!0===x.data(e.target,t.widgetName+".preventClickEvent")?(x.removeData(e.target,t.widgetName+".preventClickEvent"),e.stopImmediatePropagation(),!1):void 0}),this.started=!1},_mouseDestroy:function(){this.element.unbind("."+this.widgetName),this._mouseMoveDelegate&&this.document.unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate)},_mouseDown:function(e){var t,o,i;if(!p)return this._mouseMoved=!1,this._mouseStarted&&this._mouseUp(e),o=1===(this._mouseDownEvent=e).which,i=!("string"!=typeof(t=this).options.cancel||!e.target.nodeName)&&x(e.target).closest(this.options.cancel).length,o&&!i&&this._mouseCapture(e)&&(this.mouseDelayMet=!this.options.delay,this.mouseDelayMet||(this._mouseDelayTimer=setTimeout(function(){t.mouseDelayMet=!0},this.options.delay)),this._mouseDistanceMet(e)&&this._mouseDelayMet(e)&&(this._mouseStarted=!1!==this._mouseStart(e),!this._mouseStarted)?e.preventDefault():(!0===x.data(e.target,this.widgetName+".preventClickEvent")&&x.removeData(e.target,this.widgetName+".preventClickEvent"),this._mouseMoveDelegate=function(e){return t._mouseMove(e)},this._mouseUpDelegate=function(e){return t._mouseUp(e)},this.document.bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate),e.preventDefault(),p=!0)),!0},_mouseMove:function(e){if(this._mouseMoved){if(x.ui.ie&&(!document.documentMode||document.documentMode<9)&&!e.button)return this._mouseUp(e);if(!e.which)return this._mouseUp(e)}return(e.which||e.button)&&(this._mouseMoved=!0),this._mouseStarted?(this._mouseDrag(e),e.preventDefault()):(this._mouseDistanceMet(e)&&this._mouseDelayMet(e)&&(this._mouseStarted=!1!==this._mouseStart(this._mouseDownEvent,e),this._mouseStarted?this._mouseDrag(e):this._mouseUp(e)),!this._mouseStarted)},_mouseUp:function(e){return this.document.unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,e.target===this._mouseDownEvent.target&&x.data(e.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(e)),p=!1},_mouseDistanceMet:function(e){return Math.max(Math.abs(this._mouseDownEvent.pageX-e.pageX),Math.abs(this._mouseDownEvent.pageY-e.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),x.ui=x.ui||{};var f,k,T=Math.max,F=Math.abs,E=Math.round,D=/left|center|right/,P=/top|center|bottom/,A=/[\+\-]\d+(\.[\d]+)?%?/,I=/^\w+/,m=/%$/,O=x.fn.position;x.position={scrollbarWidth:function(){if(void 0!==f)return f;var e,t=x("<div style='display:block;position:absolute;width:50px;height:50px;overflow:hidden;'><div style='height:100px;width:auto;'></div></div>"),o=t.children()[0];return x("body").append(t),e=o.offsetWidth,t.css("overflow","scroll"),e===(o=o.offsetWidth)&&(o=t[0].clientWidth),t.remove(),f=e-o},getScrollInfo:function(e){var t=e.isWindow||e.isDocument?"":e.element.css("overflow-x"),o=e.isWindow||e.isDocument?"":e.element.css("overflow-y"),t="scroll"===t||"auto"===t&&e.width<e.element[0].scrollWidth;return{width:"scroll"===o||"auto"===o&&e.height<e.element[0].scrollHeight?x.position.scrollbarWidth():0,height:t?x.position.scrollbarWidth():0}},getWithinInfo:function(e){var e=x(e||window),t=x.isWindow(e[0]),o=!!e[0]&&9===e[0].nodeType;return{element:e,isWindow:t,isDocument:o,offset:e.offset()||{left:0,top:0},scrollLeft:e.scrollLeft(),scrollTop:e.scrollTop(),width:t||o?e.width():e.outerWidth(),height:t||o?e.height():e.outerHeight()}}},x.fn.position=function(d){if(!d||!d.of)return O.apply(this,arguments);d=x.extend({},d);var h,p,f,m,g,e,v=x(d.of),b=x.position.getWithinInfo(d.within),y=x.position.getScrollInfo(b),C=(d.collision||"flip").split(" "),w={},t=9===(t=(e=v)[0]).nodeType?{width:e.width(),height:e.height(),offset:{top:0,left:0}}:x.isWindow(t)?{width:e.width(),height:e.height(),offset:{top:e.scrollTop(),left:e.scrollLeft()}}:t.preventDefault?{width:0,height:0,offset:{top:t.pageY,left:t.pageX}}:{width:e.outerWidth(),height:e.outerHeight(),offset:e.offset()};return v[0].preventDefault&&(d.at="left top"),p=t.width,f=t.height,g=x.extend({},m=t.offset),x.each(["my","at"],function(){var e,t,o=(d[this]||"").split(" ");(o=1===o.length?D.test(o[0])?o.concat(["center"]):P.test(o[0])?["center"].concat(o):["center","center"]:o)[0]=D.test(o[0])?o[0]:"center",o[1]=P.test(o[1])?o[1]:"center",e=A.exec(o[0]),t=A.exec(o[1]),w[this]=[e?e[0]:0,t?t[0]:0],d[this]=[I.exec(o[0])[0],I.exec(o[1])[0]]}),1===C.length&&(C[1]=C[0]),"right"===d.at[0]?g.left+=p:"center"===d.at[0]&&(g.left+=p/2),"bottom"===d.at[1]?g.top+=f:"center"===d.at[1]&&(g.top+=f/2),h=_(w.at,p,f),g.left+=h[0],g.top+=h[1],this.each(function(){var o,e,s=x(this),a=s.outerWidth(),l=s.outerHeight(),t=S(this,"marginLeft"),i=S(this,"marginTop"),n=a+t+S(this,"marginRight")+y.width,r=l+i+S(this,"marginBottom")+y.height,c=x.extend({},g),u=_(w.my,s.outerWidth(),s.outerHeight());"right"===d.my[0]?c.left-=a:"center"===d.my[0]&&(c.left-=a/2),"bottom"===d.my[1]?c.top-=l:"center"===d.my[1]&&(c.top-=l/2),c.left+=u[0],c.top+=u[1],k||(c.left=E(c.left),c.top=E(c.top)),o={marginLeft:t,marginTop:i},x.each(["left","top"],function(e,t){x.ui.position[C[e]]&&x.ui.position[C[e]][t](c,{targetWidth:p,targetHeight:f,elemWidth:a,elemHeight:l,collisionPosition:o,collisionWidth:n,collisionHeight:r,offset:[h[0]+u[0],h[1]+u[1]],my:d.my,at:d.at,within:b,elem:s})}),d.using&&(e=function(e){var t=m.left-c.left,o=t+p-a,i=m.top-c.top,n=i+f-l,r={target:{element:v,left:m.left,top:m.top,width:p,height:f},element:{element:s,left:c.left,top:c.top,width:a,height:l},horizontal:o<0?"left":0<t?"right":"center",vertical:n<0?"top":0<i?"bottom":"middle"};p<a&&p>F(t+o)&&(r.horizontal="center"),f<l&&f>F(i+n)&&(r.vertical="middle"),r.important=T(F(t),F(o))>T(F(i),F(n))?"horizontal":"vertical",d.using.call(this,e,r)}),s.offset(x.extend(c,{using:e}))})},x.ui.position={fit:{left:function(e,t){var o,i=t.within,n=i.isWindow?i.scrollLeft:i.offset.left,i=i.width,r=e.left-t.collisionPosition.marginLeft,s=n-r,a=r+t.collisionWidth-i-n;t.collisionWidth>i?0<s&&a<=0?(o=e.left+s+t.collisionWidth-i-n,e.left+=s-o):e.left=!(0<a&&s<=0)&&a<s?n+i-t.collisionWidth:n:0<s?e.left+=s:0<a?e.left-=a:e.left=T(e.left-r,e.left)},top:function(e,t){var o,i=t.within,i=i.isWindow?i.scrollTop:i.offset.top,n=t.within.height,r=e.top-t.collisionPosition.marginTop,s=i-r,a=r+t.collisionHeight-n-i;t.collisionHeight>n?0<s&&a<=0?(o=e.top+s+t.collisionHeight-n-i,e.top+=s-o):e.top=!(0<a&&s<=0)&&a<s?i+n-t.collisionHeight:i:0<s?e.top+=s:0<a?e.top-=a:e.top=T(e.top-r,e.top)}},flip:{left:function(e,t){var o=t.within,i=o.offset.left+o.scrollLeft,n=o.width,o=o.isWindow?o.scrollLeft:o.offset.left,r=e.left-t.collisionPosition.marginLeft,s=r-o,r=r+t.collisionWidth-n-o,a="left"===t.my[0]?-t.elemWidth:"right"===t.my[0]?t.elemWidth:0,l="left"===t.at[0]?t.targetWidth:"right"===t.at[0]?-t.targetWidth:0,c=-2*t.offset[0];s<0?((n=e.left+a+l+c+t.collisionWidth-n-i)<0||F(s)>n)&&(e.left+=a+l+c):0<r&&((0<(i=e.left-t.collisionPosition.marginLeft+a+l+c-o)||r>F(i))&&(e.left+=a+l+c))},top:function(e,t){var o=t.within,i=o.offset.top+o.scrollTop,n=o.height,o=o.isWindow?o.scrollTop:o.offset.top,r=e.top-t.collisionPosition.marginTop,s=r-o,r=r+t.collisionHeight-n-o,a="top"===t.my[1]?-t.elemHeight:"bottom"===t.my[1]?t.elemHeight:0,l="top"===t.at[1]?t.targetHeight:"bottom"===t.at[1]?-t.targetHeight:0,c=-2*t.offset[1];s<0?((n=e.top+a+l+c+t.collisionHeight-n-i)<0||F(s)>n)&&(e.top+=a+l+c):0<r&&((0<(i=e.top-t.collisionPosition.marginTop+a+l+c-o)||r>F(i))&&(e.top+=a+l+c))}},flipfit:{left:function(){x.ui.position.flip.left.apply(this,arguments),x.ui.position.fit.left.apply(this,arguments)},top:function(){x.ui.position.flip.top.apply(this,arguments),x.ui.position.fit.top.apply(this,arguments)}}};var g,v=document.getElementsByTagName("body")[0],b=document.createElement("div"),y=document.createElement(v?"div":"body"),C={visibility:"hidden",width:0,height:0,border:0,margin:0,background:"none"};for(g in v&&x.extend(C,{position:"absolute",left:"-1000px",top:"-1000px"}),C)y.style[g]=C[g];function w(e,t,o){return t<=e&&e<t+o}y.appendChild(b),(v=v||document.documentElement).insertBefore(y,v.firstChild),b.style.cssText="position: absolute; left: 10.7432222px;",b=x(b).offset().left,k=10<b&&b<11,y.innerHTML="",v.removeChild(y),x.ui.position,x.widget("ui.draggable",x.ui.mouse,{version:"1.11.4",widgetEventPrefix:"drag",options:{addClasses:!0,appendTo:"parent",axis:!1,connectToSortable:!1,containment:!1,cursor:"auto",cursorAt:!1,grid:!1,handle:!1,helper:"original",iframeFix:!1,opacity:!1,refreshPositions:!1,revert:!1,revertDuration:500,scope:"default",scroll:!0,scrollSensitivity:20,scrollSpeed:20,snap:!1,snapMode:"both",snapTolerance:20,stack:!1,zIndex:!1,drag:null,start:null,stop:null},_create:function(){"original"===this.options.helper&&this._setPositionRelative(),this.options.addClasses&&this.element.addClass("ui-draggable"),this.options.disabled&&this.element.addClass("ui-draggable-disabled"),this._setHandleClassName(),this._mouseInit()},_setOption:function(e,t){this._super(e,t),"handle"===e&&(this._removeHandleClassName(),this._setHandleClassName())},_destroy:function(){return(this.helper||this.element).is(".ui-draggable-dragging")?void(this.destroyOnClear=!0):(this.element.removeClass("ui-draggable ui-draggable-dragging ui-draggable-disabled"),this._removeHandleClassName(),void this._mouseDestroy())},_mouseCapture:function(e){var t=this.options;return this._blurActiveElement(e),!(this.helper||t.disabled||0<x(e.target).closest(".ui-resizable-handle").length)&&(this.handle=this._getHandle(e),!!this.handle&&(this._blockFrames(!0===t.iframeFix?"iframe":t.iframeFix),!0))},_blockFrames:function(e){this.iframeBlocks=this.document.find(e).map(function(){var e=x(this);return x("<div>").css("position","absolute").appendTo(e.parent()).outerWidth(e.outerWidth()).outerHeight(e.outerHeight()).offset(e.offset())[0]})},_unblockFrames:function(){this.iframeBlocks&&(this.iframeBlocks.remove(),delete this.iframeBlocks)},_blurActiveElement:function(e){var t=this.document[0];if(this.handleElement.is(e.target))try{t.activeElement&&"body"!==t.activeElement.nodeName.toLowerCase()&&x(t.activeElement).blur()}catch(e){}},_mouseStart:function(e){var t=this.options;return this.helper=this._createHelper(e),this.helper.addClass("ui-draggable-dragging"),this._cacheHelperProportions(),x.ui.ddmanager&&(x.ui.ddmanager.current=this),this._cacheMargins(),this.cssPosition=this.helper.css("position"),this.scrollParent=this.helper.scrollParent(!0),this.offsetParent=this.helper.offsetParent(),this.hasFixedAncestor=0<this.helper.parents().filter(function(){return"fixed"===x(this).css("position")}).length,this.positionAbs=this.element.offset(),this._refreshOffsets(e),this.originalPosition=this.position=this._generatePosition(e,!1),this.originalPageX=e.pageX,this.originalPageY=e.pageY,t.cursorAt&&this._adjustOffsetFromHelper(t.cursorAt),this._setContainment(),!1===this._trigger("start",e)?(this._clear(),!1):(this._cacheHelperProportions(),x.ui.ddmanager&&!t.dropBehaviour&&x.ui.ddmanager.prepareOffsets(this,e),this._normalizeRightBottom(),this._mouseDrag(e,!0),x.ui.ddmanager&&x.ui.ddmanager.dragStart(this,e),!0)},_refreshOffsets:function(e){this.offset={top:this.positionAbs.top-this.margins.top,left:this.positionAbs.left-this.margins.left,scroll:!1,parent:this._getParentOffset(),relative:this._getRelativeOffset()},this.offset.click={left:e.pageX-this.offset.left,top:e.pageY-this.offset.top}},_mouseDrag:function(e,t){if(this.hasFixedAncestor&&(this.offset.parent=this._getParentOffset()),this.position=this._generatePosition(e,!0),this.positionAbs=this._convertPositionTo("absolute"),!t){t=this._uiHash();if(!1===this._trigger("drag",e,t))return this._mouseUp({}),!1;this.position=t.position}return this.helper[0].style.left=this.position.left+"px",this.helper[0].style.top=this.position.top+"px",x.ui.ddmanager&&x.ui.ddmanager.drag(this,e),!1},_mouseStop:function(e){var t=this,o=!1;return x.ui.ddmanager&&!this.options.dropBehaviour&&(o=x.ui.ddmanager.drop(this,e)),this.dropped&&(o=this.dropped,this.dropped=!1),"invalid"===this.options.revert&&!o||"valid"===this.options.revert&&o||!0===this.options.revert||x.isFunction(this.options.revert)&&this.options.revert.call(this.element,o)?x(this.helper).animate(this.originalPosition,parseInt(this.options.revertDuration,10),function(){!1!==t._trigger("stop",e)&&t._clear()}):!1!==this._trigger("stop",e)&&this._clear(),!1},_mouseUp:function(e){return this._unblockFrames(),x.ui.ddmanager&&x.ui.ddmanager.dragStop(this,e),this.handleElement.is(e.target)&&this.element.focus(),x.ui.mouse.prototype._mouseUp.call(this,e)},cancel:function(){return this.helper.is(".ui-draggable-dragging")?this._mouseUp({}):this._clear(),this},_getHandle:function(e){return!this.options.handle||!!x(e.target).closest(this.element.find(this.options.handle)).length},_setHandleClassName:function(){this.handleElement=this.options.handle?this.element.find(this.options.handle):this.element,this.handleElement.addClass("ui-draggable-handle")},_removeHandleClassName:function(){this.handleElement.removeClass("ui-draggable-handle")},_createHelper:function(e){var t=this.options,o=x.isFunction(t.helper),e=o?x(t.helper.apply(this.element[0],[e])):"clone"===t.helper?this.element.clone().removeAttr("id"):this.element;return e.parents("body").length||e.appendTo("parent"===t.appendTo?this.element[0].parentNode:t.appendTo),o&&e[0]===this.element[0]&&this._setPositionRelative(),e[0]===this.element[0]||/(fixed|absolute)/.test(e.css("position"))||e.css("position","absolute"),e},_setPositionRelative:function(){/^(?:r|a|f)/.test(this.element.css("position"))||(this.element[0].style.position="relative")},_adjustOffsetFromHelper:function(e){"string"==typeof e&&(e=e.split(" ")),"left"in(e=x.isArray(e)?{left:+e[0],top:+e[1]||0}:e)&&(this.offset.click.left=e.left+this.margins.left),"right"in e&&(this.offset.click.left=this.helperProportions.width-e.right+this.margins.left),"top"in e&&(this.offset.click.top=e.top+this.margins.top),"bottom"in e&&(this.offset.click.top=this.helperProportions.height-e.bottom+this.margins.top)},_isRootNode:function(e){return/(html|body)/i.test(e.tagName)||e===this.document[0]},_getParentOffset:function(){var e=this.offsetParent.offset(),t=this.document[0];return"absolute"===this.cssPosition&&this.scrollParent[0]!==t&&x.contains(this.scrollParent[0],this.offsetParent[0])&&(e.left+=this.scrollParent.scrollLeft(),e.top+=this.scrollParent.scrollTop()),{top:(e=this._isRootNode(this.offsetParent[0])?{top:0,left:0}:e).top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:e.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if("relative"!==this.cssPosition)return{top:0,left:0};var e=this.element.position(),t=this._isRootNode(this.scrollParent[0]);return{top:e.top-(parseInt(this.helper.css("top"),10)||0)+(t?0:this.scrollParent.scrollTop()),left:e.left-(parseInt(this.helper.css("left"),10)||0)+(t?0:this.scrollParent.scrollLeft())}},_cacheMargins:function(){this.margins={left:parseInt(this.element.css("marginLeft"),10)||0,top:parseInt(this.element.css("marginTop"),10)||0,right:parseInt(this.element.css("marginRight"),10)||0,bottom:parseInt(this.element.css("marginBottom"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var e,t=this.options,o=this.document[0];return this.relativeContainer=null,t.containment?"window"===t.containment?void(this.containment=[x(window).scrollLeft()-this.offset.relative.left-this.offset.parent.left,x(window).scrollTop()-this.offset.relative.top-this.offset.parent.top,x(window).scrollLeft()+x(window).width()-this.helperProportions.width-this.margins.left,x(window).scrollTop()+(x(window).height()||o.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top]):"document"===t.containment?void(this.containment=[0,0,x(o).width()-this.helperProportions.width-this.margins.left,(x(o).height()||o.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top]):t.containment.constructor===Array?void(this.containment=t.containment):("parent"===t.containment&&(t.containment=this.helper[0].parentNode),void((t=(o=x(t.containment))[0])&&(e=/(scroll|auto)/.test(o.css("overflow")),this.containment=[(parseInt(o.css("borderLeftWidth"),10)||0)+(parseInt(o.css("paddingLeft"),10)||0),(parseInt(o.css("borderTopWidth"),10)||0)+(parseInt(o.css("paddingTop"),10)||0),(e?Math.max(t.scrollWidth,t.offsetWidth):t.offsetWidth)-(parseInt(o.css("borderRightWidth"),10)||0)-(parseInt(o.css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left-this.margins.right,(e?Math.max(t.scrollHeight,t.offsetHeight):t.offsetHeight)-(parseInt(o.css("borderBottomWidth"),10)||0)-(parseInt(o.css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top-this.margins.bottom],this.relativeContainer=o))):void(this.containment=null)},_convertPositionTo:function(e,t){t=t||this.position;var e="absolute"===e?1:-1,o=this._isRootNode(this.scrollParent[0]);return{top:t.top+this.offset.relative.top*e+this.offset.parent.top*e-("fixed"===this.cssPosition?-this.offset.scroll.top:o?0:this.offset.scroll.top)*e,left:t.left+this.offset.relative.left*e+this.offset.parent.left*e-("fixed"===this.cssPosition?-this.offset.scroll.left:o?0:this.offset.scroll.left)*e}},_generatePosition:function(e,t){var o,i=this.options,n=this._isRootNode(this.scrollParent[0]),r=e.pageX,s=e.pageY;return n&&this.offset.scroll||(this.offset.scroll={top:this.scrollParent.scrollTop(),left:this.scrollParent.scrollLeft()}),t&&(this.containment&&(o=this.relativeContainer?(t=this.relativeContainer.offset(),[this.containment[0]+t.left,this.containment[1]+t.top,this.containment[2]+t.left,this.containment[3]+t.top]):this.containment,e.pageX-this.offset.click.left<o[0]&&(r=o[0]+this.offset.click.left),e.pageY-this.offset.click.top<o[1]&&(s=o[1]+this.offset.click.top),e.pageX-this.offset.click.left>o[2]&&(r=o[2]+this.offset.click.left),e.pageY-this.offset.click.top>o[3]&&(s=o[3]+this.offset.click.top)),i.grid&&(t=i.grid[1]?this.originalPageY+Math.round((s-this.originalPageY)/i.grid[1])*i.grid[1]:this.originalPageY,s=!o||t-this.offset.click.top>=o[1]||t-this.offset.click.top>o[3]?t:t-this.offset.click.top>=o[1]?t-i.grid[1]:t+i.grid[1],e=i.grid[0]?this.originalPageX+Math.round((r-this.originalPageX)/i.grid[0])*i.grid[0]:this.originalPageX,r=!o||e-this.offset.click.left>=o[0]||e-this.offset.click.left>o[2]?e:e-this.offset.click.left>=o[0]?e-i.grid[0]:e+i.grid[0]),"y"===i.axis&&(r=this.originalPageX),"x"===i.axis&&(s=this.originalPageY)),{top:s-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+("fixed"===this.cssPosition?-this.offset.scroll.top:n?0:this.offset.scroll.top),left:r-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+("fixed"===this.cssPosition?-this.offset.scroll.left:n?0:this.offset.scroll.left)}},_clear:function(){this.helper.removeClass("ui-draggable-dragging"),this.helper[0]===this.element[0]||this.cancelHelperRemoval||this.helper.remove(),this.helper=null,this.cancelHelperRemoval=!1,this.destroyOnClear&&this.destroy()},_normalizeRightBottom:function(){"y"!==this.options.axis&&"auto"!==this.helper.css("right")&&(this.helper.width(this.helper.width()),this.helper.css("right","auto")),"x"!==this.options.axis&&"auto"!==this.helper.css("bottom")&&(this.helper.height(this.helper.height()),this.helper.css("bottom","auto"))},_trigger:function(e,t,o){return o=o||this._uiHash(),x.ui.plugin.call(this,e,[t,o,this],!0),/^(drag|start|stop)/.test(e)&&(this.positionAbs=this._convertPositionTo("absolute"),o.offset=this.positionAbs),x.Widget.prototype._trigger.call(this,e,t,o)},plugins:{},_uiHash:function(){return{helper:this.helper,position:this.position,originalPosition:this.originalPosition,offset:this.positionAbs}}}),x.ui.plugin.add("draggable","connectToSortable",{start:function(t,e,o){var i=x.extend({},e,{item:o.element});o.sortables=[],x(o.options.connectToSortable).each(function(){var e=x(this).sortable("instance");e&&!e.options.disabled&&(o.sortables.push(e),e.refreshPositions(),e._trigger("activate",t,i))})},stop:function(t,e,o){var i=x.extend({},e,{item:o.element});o.cancelHelperRemoval=!1,x.each(o.sortables,function(){var e=this;e.isOver?(e.isOver=0,o.cancelHelperRemoval=!0,e.cancelHelperRemoval=!1,e._storedCSS={position:e.placeholder.css("position"),top:e.placeholder.css("top"),left:e.placeholder.css("left")},e._mouseStop(t),e.options.helper=e.options._helper):(e.cancelHelperRemoval=!0,e._trigger("deactivate",t,i))})},drag:function(o,i,n){x.each(n.sortables,function(){var e=!1,t=this;t.positionAbs=n.positionAbs,t.helperProportions=n.helperProportions,t.offset.click=n.offset.click,t._intersectsWith(t.containerCache)&&(e=!0,x.each(n.sortables,function(){return this.positionAbs=n.positionAbs,this.helperProportions=n.helperProportions,this.offset.click=n.offset.click,e=this!==t&&this._intersectsWith(this.containerCache)&&x.contains(t.element[0],this.element[0])?!1:e})),e?(t.isOver||(t.isOver=1,n._parent=i.helper.parent(),t.currentItem=i.helper.appendTo(t.element).data("ui-sortable-item",!0),t.options._helper=t.options.helper,t.options.helper=function(){return i.helper[0]},o.target=t.currentItem[0],t._mouseCapture(o,!0),t._mouseStart(o,!0,!0),t.offset.click.top=n.offset.click.top,t.offset.click.left=n.offset.click.left,t.offset.parent.left-=n.offset.parent.left-t.offset.parent.left,t.offset.parent.top-=n.offset.parent.top-t.offset.parent.top,n._trigger("toSortable",o),n.dropped=t.element,x.each(n.sortables,function(){this.refreshPositions()}),n.currentItem=n.element,t.fromOutside=n),t.currentItem&&(t._mouseDrag(o),i.position=t.position)):t.isOver&&(t.isOver=0,t.cancelHelperRemoval=!0,t.options._revert=t.options.revert,t.options.revert=!1,t._trigger("out",o,t._uiHash(t)),t._mouseStop(o,!0),t.options.revert=t.options._revert,t.options.helper=t.options._helper,t.placeholder&&t.placeholder.remove(),i.helper.appendTo(n._parent),n._refreshOffsets(o),i.position=n._generatePosition(o,!0),n._trigger("fromSortable",o),n.dropped=!1,x.each(n.sortables,function(){this.refreshPositions()}))})}}),x.ui.plugin.add("draggable","cursor",{start:function(e,t,o){var i=x("body"),o=o.options;i.css("cursor")&&(o._cursor=i.css("cursor")),i.css("cursor",o.cursor)},stop:function(e,t,o){o=o.options;o._cursor&&x("body").css("cursor",o._cursor)}}),x.ui.plugin.add("draggable","opacity",{start:function(e,t,o){t=x(t.helper),o=o.options;t.css("opacity")&&(o._opacity=t.css("opacity")),t.css("opacity",o.opacity)},stop:function(e,t,o){o=o.options;o._opacity&&x(t.helper).css("opacity",o._opacity)}}),x.ui.plugin.add("draggable","scroll",{start:function(e,t,o){o.scrollParentNotHidden||(o.scrollParentNotHidden=o.helper.scrollParent(!1)),o.scrollParentNotHidden[0]!==o.document[0]&&"HTML"!==o.scrollParentNotHidden[0].tagName&&(o.overflowOffset=o.scrollParentNotHidden.offset())},drag:function(e,t,o){var i=o.options,n=!1,r=o.scrollParentNotHidden[0],s=o.document[0];r!==s&&"HTML"!==r.tagName?(i.axis&&"x"===i.axis||(o.overflowOffset.top+r.offsetHeight-e.pageY<i.scrollSensitivity?r.scrollTop=n=r.scrollTop+i.scrollSpeed:e.pageY-o.overflowOffset.top<i.scrollSensitivity&&(r.scrollTop=n=r.scrollTop-i.scrollSpeed)),i.axis&&"y"===i.axis||(o.overflowOffset.left+r.offsetWidth-e.pageX<i.scrollSensitivity?r.scrollLeft=n=r.scrollLeft+i.scrollSpeed:e.pageX-o.overflowOffset.left<i.scrollSensitivity&&(r.scrollLeft=n=r.scrollLeft-i.scrollSpeed))):(i.axis&&"x"===i.axis||(e.pageY-x(s).scrollTop()<i.scrollSensitivity?n=x(s).scrollTop(x(s).scrollTop()-i.scrollSpeed):x(window).height()-(e.pageY-x(s).scrollTop())<i.scrollSensitivity&&(n=x(s).scrollTop(x(s).scrollTop()+i.scrollSpeed))),i.axis&&"y"===i.axis||(e.pageX-x(s).scrollLeft()<i.scrollSensitivity?n=x(s).scrollLeft(x(s).scrollLeft()-i.scrollSpeed):x(window).width()-(e.pageX-x(s).scrollLeft())<i.scrollSensitivity&&(n=x(s).scrollLeft(x(s).scrollLeft()+i.scrollSpeed)))),!1!==n&&x.ui.ddmanager&&!i.dropBehaviour&&x.ui.ddmanager.prepareOffsets(o,e)}}),x.ui.plugin.add("draggable","snap",{start:function(e,t,o){var i=o.options;o.snapElements=[],x(i.snap.constructor!==String?i.snap.items||":data(ui-draggable)":i.snap).each(function(){var e=x(this),t=e.offset();this!==o.element[0]&&o.snapElements.push({item:this,width:e.outerWidth(),height:e.outerHeight(),top:t.top,left:t.left})})},drag:function(e,t,o){for(var i,n,r,s,a,l,c,u,d,h=o.options,p=h.snapTolerance,f=t.offset.left,m=f+o.helperProportions.width,g=t.offset.top,v=g+o.helperProportions.height,b=o.snapElements.length-1;0<=b;b--)l=(a=o.snapElements[b].left-o.margins.left)+o.snapElements[b].width,u=(c=o.snapElements[b].top-o.margins.top)+o.snapElements[b].height,m<a-p||l+p<f||v<c-p||u+p<g||!x.contains(o.snapElements[b].item.ownerDocument,o.snapElements[b].item)?(o.snapElements[b].snapping&&o.options.snap.release&&o.options.snap.release.call(o.element,e,x.extend(o._uiHash(),{snapItem:o.snapElements[b].item})),o.snapElements[b].snapping=!1):("inner"!==h.snapMode&&(i=p>=Math.abs(c-v),n=p>=Math.abs(u-g),r=p>=Math.abs(a-m),s=p>=Math.abs(l-f),i&&(t.position.top=o._convertPositionTo("relative",{top:c-o.helperProportions.height,left:0}).top),n&&(t.position.top=o._convertPositionTo("relative",{top:u,left:0}).top),r&&(t.position.left=o._convertPositionTo("relative",{top:0,left:a-o.helperProportions.width}).left),s&&(t.position.left=o._convertPositionTo("relative",{top:0,left:l}).left)),d=i||n||r||s,"outer"!==h.snapMode&&(i=p>=Math.abs(c-g),n=p>=Math.abs(u-v),r=p>=Math.abs(a-f),s=p>=Math.abs(l-m),i&&(t.position.top=o._convertPositionTo("relative",{top:c,left:0}).top),n&&(t.position.top=o._convertPositionTo("relative",{top:u-o.helperProportions.height,left:0}).top),r&&(t.position.left=o._convertPositionTo("relative",{top:0,left:a}).left),s&&(t.position.left=o._convertPositionTo("relative",{top:0,left:l-o.helperProportions.width}).left)),!o.snapElements[b].snapping&&(i||n||r||s||d)&&o.options.snap.snap&&o.options.snap.snap.call(o.element,e,x.extend(o._uiHash(),{snapItem:o.snapElements[b].item})),o.snapElements[b].snapping=i||n||r||s||d)}}),x.ui.plugin.add("draggable","stack",{start:function(e,t,o){var i,o=o.options,o=x.makeArray(x(o.stack)).sort(function(e,t){return(parseInt(x(e).css("zIndex"),10)||0)-(parseInt(x(t).css("zIndex"),10)||0)});o.length&&(i=parseInt(x(o[0]).css("zIndex"),10)||0,x(o).each(function(e){x(this).css("zIndex",i+e)}),this.css("zIndex",i+o.length))}}),x.ui.plugin.add("draggable","zIndex",{start:function(e,t,o){t=x(t.helper),o=o.options;t.css("zIndex")&&(o._zIndex=t.css("zIndex")),t.css("zIndex",o.zIndex)},stop:function(e,t,o){o=o.options;o._zIndex&&x(t.helper).css("zIndex",o._zIndex)}}),x.ui.draggable,x.widget("ui.droppable",{version:"1.11.4",widgetEventPrefix:"drop",options:{accept:"*",activeClass:!1,addClasses:!0,greedy:!1,hoverClass:!1,scope:"default",tolerance:"intersect",activate:null,deactivate:null,drop:null,out:null,over:null},_create:function(){var e,t=this.options,o=t.accept;this.isover=!1,this.isout=!0,this.accept=x.isFunction(o)?o:function(e){return e.is(o)},this.proportions=function(){return arguments.length?void(e=arguments[0]):e=e||{width:this.element[0].offsetWidth,height:this.element[0].offsetHeight}},this._addToManager(t.scope),t.addClasses&&this.element.addClass("ui-droppable")},_addToManager:function(e){x.ui.ddmanager.droppables[e]=x.ui.ddmanager.droppables[e]||[],x.ui.ddmanager.droppables[e].push(this)},_splice:function(e){for(var t=0;e.length>t;t++)e[t]===this&&e.splice(t,1)},_destroy:function(){var e=x.ui.ddmanager.droppables[this.options.scope];this._splice(e),this.element.removeClass("ui-droppable ui-droppable-disabled")},_setOption:function(e,t){var o;"accept"===e?this.accept=x.isFunction(t)?t:function(e){return e.is(t)}:"scope"===e&&(o=x.ui.ddmanager.droppables[this.options.scope],this._splice(o),this._addToManager(t)),this._super(e,t)},_activate:function(e){var t=x.ui.ddmanager.current;this.options.activeClass&&this.element.addClass(this.options.activeClass),t&&this._trigger("activate",e,this.ui(t))},_deactivate:function(e){var t=x.ui.ddmanager.current;this.options.activeClass&&this.element.removeClass(this.options.activeClass),t&&this._trigger("deactivate",e,this.ui(t))},_over:function(e){var t=x.ui.ddmanager.current;t&&(t.currentItem||t.element)[0]!==this.element[0]&&this.accept.call(this.element[0],t.currentItem||t.element)&&(this.options.hoverClass&&this.element.addClass(this.options.hoverClass),this._trigger("over",e,this.ui(t)))},_out:function(e){var t=x.ui.ddmanager.current;t&&(t.currentItem||t.element)[0]!==this.element[0]&&this.accept.call(this.element[0],t.currentItem||t.element)&&(this.options.hoverClass&&this.element.removeClass(this.options.hoverClass),this._trigger("out",e,this.ui(t)))},_drop:function(t,e){var o=e||x.ui.ddmanager.current,i=!1;return!(!o||(o.currentItem||o.element)[0]===this.element[0])&&(this.element.find(":data(ui-droppable)").not(".ui-draggable-dragging").each(function(){var e=x(this).droppable("instance");return e.options.greedy&&!e.options.disabled&&e.options.scope===o.options.scope&&e.accept.call(e.element[0],o.currentItem||o.element)&&x.ui.intersect(o,x.extend(e,{offset:e.element.offset()}),e.options.tolerance,t)?!(i=!0):void 0}),!i&&(!!this.accept.call(this.element[0],o.currentItem||o.element)&&(this.options.activeClass&&this.element.removeClass(this.options.activeClass),this.options.hoverClass&&this.element.removeClass(this.options.hoverClass),this._trigger("drop",t,this.ui(o)),this.element)))},ui:function(e){return{draggable:e.currentItem||e.element,helper:e.helper,position:e.position,offset:e.positionAbs}}}),x.ui.intersect=function(e,t,o,i){if(!t.offset)return!1;var n=(e.positionAbs||e.position.absolute).left+e.margins.left,r=(e.positionAbs||e.position.absolute).top+e.margins.top,s=n+e.helperProportions.width,a=r+e.helperProportions.height,l=t.offset.left,c=t.offset.top,u=l+t.proportions().width,d=c+t.proportions().height;switch(o){case"fit":return l<=n&&s<=u&&c<=r&&a<=d;case"intersect":return n+e.helperProportions.width/2>l&&u>s-e.helperProportions.width/2&&r+e.helperProportions.height/2>c&&d>a-e.helperProportions.height/2;case"pointer":return w(i.pageY,c,t.proportions().height)&&w(i.pageX,l,t.proportions().width);case"touch":return(c<=r&&r<=d||c<=a&&a<=d||r<c&&d<a)&&(l<=n&&n<=u||l<=s&&s<=u||n<l&&u<s);default:return!1}},x.ui.ddmanager={current:null,droppables:{default:[]},prepareOffsets:function(e,t){var o,i,n=x.ui.ddmanager.droppables[e.options.scope]||[],r=t?t.type:null,s=(e.currentItem||e.element).find(":data(ui-droppable)").addBack();e:for(o=0;n.length>o;o++)if(!(n[o].options.disabled||e&&!n[o].accept.call(n[o].element[0],e.currentItem||e.element))){for(i=0;s.length>i;i++)if(s[i]===n[o].element[0]){n[o].proportions().height=0;continue e}n[o].visible="none"!==n[o].element.css("display"),n[o].visible&&("mousedown"===r&&n[o]._activate.call(n[o],t),n[o].offset=n[o].element.offset(),n[o].proportions({width:n[o].element[0].offsetWidth,height:n[o].element[0].offsetHeight}))}},drop:function(e,t){var o=!1;return x.each((x.ui.ddmanager.droppables[e.options.scope]||[]).slice(),function(){this.options&&(!this.options.disabled&&this.visible&&x.ui.intersect(e,this,this.options.tolerance,t)&&(o=this._drop.call(this,t)||o),!this.options.disabled&&this.visible&&this.accept.call(this.element[0],e.currentItem||e.element)&&(this.isout=!0,this.isover=!1,this._deactivate.call(this,t)))}),o},dragStart:function(e,t){e.element.parentsUntil("body").bind("scroll.droppable",function(){e.options.refreshPositions||x.ui.ddmanager.prepareOffsets(e,t)})},drag:function(n,r){n.options.refreshPositions&&x.ui.ddmanager.prepareOffsets(n,r),x.each(x.ui.ddmanager.droppables[n.options.scope]||[],function(){var e,t,o,i;this.options.disabled||this.greedyChild||!this.visible||(i=!(i=x.ui.intersect(n,this,this.options.tolerance,r))&&this.isover?"isout":i&&!this.isover?"isover":null)&&(this.options.greedy&&(t=this.options.scope,(o=this.element.parents(":data(ui-droppable)").filter(function(){return x(this).droppable("instance").options.scope===t})).length&&((e=x(o[0]).droppable("instance")).greedyChild="isover"===i)),e&&"isover"===i&&(e.isover=!1,e.isout=!0,e._out.call(e,r)),this[i]=!0,this["isout"===i?"isover":"isout"]=!1,this["isover"===i?"_over":"_out"].call(this,r),e&&"isout"===i&&(e.isout=!1,e.isover=!0,e._over.call(e,r)))})},dragStop:function(e,t){e.element.parentsUntil("body").unbind("scroll.droppable"),e.options.refreshPositions||x.ui.ddmanager.prepareOffsets(e,t)}},x.ui.droppable,x.widget("ui.resizable",x.ui.mouse,{version:"1.11.4",widgetEventPrefix:"resize",options:{alsoResize:!1,animate:!1,animateDuration:"slow",animateEasing:"swing",aspectRatio:!1,autoHide:!1,containment:!1,ghost:!1,grid:!1,handles:"e,s,se",helper:!1,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:90,resize:null,start:null,stop:null},_num:function(e){return parseInt(e,10)||0},_isNumber:function(e){return!isNaN(parseInt(e,10))},_hasScroll:function(e,t){if("hidden"===x(e).css("overflow"))return!1;var o,t=t&&"left"===t?"scrollLeft":"scrollTop";return 0<e[t]||(e[t]=1,o=0<e[t],e[t]=0,o)},_create:function(){var e,t,o,i,n=this,r=this.options;if(this.element.addClass("ui-resizable"),x.extend(this,{_aspectRatio:!!r.aspectRatio,aspectRatio:r.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:r.helper||r.ghost||r.animate?r.helper||"ui-resizable-helper":null}),this.element[0].nodeName.match(/^(canvas|textarea|input|select|button|img)$/i)&&(this.element.wrap(x("<div class='ui-wrapper' style='overflow: hidden;'></div>").css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("ui-resizable",this.element.resizable("instance")),this.elementIsWrapper=!0,this.element.css({marginLeft:this.originalElement.css("marginLeft"),marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom")}),this.originalElement.css({marginLeft:0,marginTop:0,marginRight:0,marginBottom:0}),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css({margin:this.originalElement.css("margin")}),this._proportionallyResize()),this.handles=r.handles||(x(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se"),this._handles=x(),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),e=this.handles.split(","),this.handles={},t=0;e.length>t;t++)o=x.trim(e[t]),(i=x("<div class='ui-resizable-handle "+("ui-resizable-"+o)+"'></div>")).css({zIndex:r.zIndex}),"se"===o&&i.addClass("ui-icon ui-icon-gripsmall-diagonal-se"),this.handles[o]=".ui-resizable-"+o,this.element.append(i);this._renderAxis=function(e){var t,o,i;for(t in e=e||this.element,this.handles)this.handles[t].constructor===String?this.handles[t]=this.element.children(this.handles[t]).first().show():(this.handles[t].jquery||this.handles[t].nodeType)&&(this.handles[t]=x(this.handles[t]),this._on(this.handles[t],{mousedown:n._mouseDown})),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/^(textarea|input|select|button)$/i)&&(i=x(this.handles[t],this.element),i=/sw|ne|nw|se|n|s/.test(t)?i.outerHeight():i.outerWidth(),o=["padding",/ne|nw|n/.test(t)?"Top":/se|sw|s/.test(t)?"Bottom":/^e$/.test(t)?"Right":"Left"].join(""),e.css(o,i),this._proportionallyResize()),this._handles=this._handles.add(this.handles[t])},this._renderAxis(this.element),this._handles=this._handles.add(this.element.find(".ui-resizable-handle")),this._handles.disableSelection(),this._handles.mouseover(function(){n.resizing||(this.className&&(i=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),n.axis=i&&i[1]?i[1]:"se")}),r.autoHide&&(this._handles.hide(),x(this.element).addClass("ui-resizable-autohide").mouseenter(function(){r.disabled||(x(this).removeClass("ui-resizable-autohide"),n._handles.show())}).mouseleave(function(){r.disabled||n.resizing||(x(this).addClass("ui-resizable-autohide"),n._handles.hide())})),this._mouseInit()},_destroy:function(){this._mouseDestroy();function e(e){x(e).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing").removeData("resizable").removeData("ui-resizable").unbind(".resizable").find(".ui-resizable-handle").remove()}var t;return this.elementIsWrapper&&(e(this.element),t=this.element,this.originalElement.css({position:t.css("position"),width:t.outerWidth(),height:t.outerHeight(),top:t.css("top"),left:t.css("left")}).insertAfter(t),t.remove()),this.originalElement.css("resize",this.originalResizeStyle),e(this.originalElement),this},_mouseCapture:function(e){var t,o,i=!1;for(t in this.handles)o=x(this.handles[t])[0],o!==e.target&&!x.contains(o,e.target)||(i=!0);return!this.options.disabled&&i},_mouseStart:function(e){var t,o,i=this.options,n=this.element;return this.resizing=!0,this._renderProxy(),o=this._num(this.helper.css("left")),t=this._num(this.helper.css("top")),i.containment&&(o+=x(i.containment).scrollLeft()||0,t+=x(i.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:o,top:t},this.size=this._helper?{width:this.helper.width(),height:this.helper.height()}:{width:n.width(),height:n.height()},this.originalSize=this._helper?{width:n.outerWidth(),height:n.outerHeight()}:{width:n.width(),height:n.height()},this.sizeDiff={width:n.outerWidth()-n.width(),height:n.outerHeight()-n.height()},this.originalPosition={left:o,top:t},this.originalMousePosition={left:e.pageX,top:e.pageY},this.aspectRatio="number"==typeof i.aspectRatio?i.aspectRatio:this.originalSize.width/this.originalSize.height||1,o=x(".ui-resizable-"+this.axis).css("cursor"),x("body").css("cursor","auto"===o?this.axis+"-resize":o),n.addClass("ui-resizable-resizing"),this._propagate("start",e),!0},_mouseDrag:function(e){var t=this.originalMousePosition,o=this.axis,i=e.pageX-t.left||0,t=e.pageY-t.top||0,o=this._change[o];return this._updatePrevProperties(),o&&(o=o.apply(this,[e,i,t]),this._updateVirtualBoundaries(e.shiftKey),(this._aspectRatio||e.shiftKey)&&(o=this._updateRatio(o,e)),o=this._respectSize(o,e),this._updateCache(o),this._propagate("resize",e),i=this._applyChanges(),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),x.isEmptyObject(i)||(this._updatePrevProperties(),this._trigger("resize",e,this.ui()),this._applyChanges())),!1},_mouseStop:function(e){this.resizing=!1;var t,o,i,n=this.options,r=this;return this._helper&&(o=(t=(o=this._proportionallyResizeElements).length&&/textarea/i.test(o[0].nodeName))&&this._hasScroll(o[0],"left")?0:r.sizeDiff.height,t=t?0:r.sizeDiff.width,t={width:r.helper.width()-t,height:r.helper.height()-o},o=parseInt(r.element.css("left"),10)+(r.position.left-r.originalPosition.left)||null,i=parseInt(r.element.css("top"),10)+(r.position.top-r.originalPosition.top)||null,n.animate||this.element.css(x.extend(t,{top:i,left:o})),r.helper.height(r.size.height),r.helper.width(r.size.width),this._helper&&!n.animate&&this._proportionallyResize()),x("body").css("cursor","auto"),this.element.removeClass("ui-resizable-resizing"),this._propagate("stop",e),this._helper&&this.helper.remove(),!1},_updatePrevProperties:function(){this.prevPosition={top:this.position.top,left:this.position.left},this.prevSize={width:this.size.width,height:this.size.height}},_applyChanges:function(){var e={};return this.position.top!==this.prevPosition.top&&(e.top=this.position.top+"px"),this.position.left!==this.prevPosition.left&&(e.left=this.position.left+"px"),this.size.width!==this.prevSize.width&&(e.width=this.size.width+"px"),this.size.height!==this.prevSize.height&&(e.height=this.size.height+"px"),this.helper.css(e),e},_updateVirtualBoundaries:function(e){var t,o,i,n=this.options,n={minWidth:this._isNumber(n.minWidth)?n.minWidth:0,maxWidth:this._isNumber(n.maxWidth)?n.maxWidth:1/0,minHeight:this._isNumber(n.minHeight)?n.minHeight:0,maxHeight:this._isNumber(n.maxHeight)?n.maxHeight:1/0};(this._aspectRatio||e)&&(e=n.minHeight*this.aspectRatio,o=n.minWidth/this.aspectRatio,t=n.maxHeight*this.aspectRatio,i=n.maxWidth/this.aspectRatio,e>n.minWidth&&(n.minWidth=e),o>n.minHeight&&(n.minHeight=o),n.maxWidth>t&&(n.maxWidth=t),n.maxHeight>i&&(n.maxHeight=i)),this._vBoundaries=n},_updateCache:function(e){this.offset=this.helper.offset(),this._isNumber(e.left)&&(this.position.left=e.left),this._isNumber(e.top)&&(this.position.top=e.top),this._isNumber(e.height)&&(this.size.height=e.height),this._isNumber(e.width)&&(this.size.width=e.width)},_updateRatio:function(e){var t=this.position,o=this.size,i=this.axis;return this._isNumber(e.height)?e.width=e.height*this.aspectRatio:this._isNumber(e.width)&&(e.height=e.width/this.aspectRatio),"sw"===i&&(e.left=t.left+(o.width-e.width),e.top=null),"nw"===i&&(e.top=t.top+(o.height-e.height),e.left=t.left+(o.width-e.width)),e},_respectSize:function(e){var t=this._vBoundaries,o=this.axis,i=this._isNumber(e.width)&&t.maxWidth&&t.maxWidth<e.width,n=this._isNumber(e.height)&&t.maxHeight&&t.maxHeight<e.height,r=this._isNumber(e.width)&&t.minWidth&&t.minWidth>e.width,s=this._isNumber(e.height)&&t.minHeight&&t.minHeight>e.height,a=this.originalPosition.left+this.originalSize.width,l=this.position.top+this.size.height,c=/sw|nw|w/.test(o),o=/nw|ne|n/.test(o);return r&&(e.width=t.minWidth),s&&(e.height=t.minHeight),i&&(e.width=t.maxWidth),n&&(e.height=t.maxHeight),r&&c&&(e.left=a-t.minWidth),i&&c&&(e.left=a-t.maxWidth),s&&o&&(e.top=l-t.minHeight),n&&o&&(e.top=l-t.maxHeight),e.width||e.height||e.left||!e.top?e.width||e.height||e.top||!e.left||(e.left=null):e.top=null,e},_getPaddingPlusBorderDimensions:function(e){for(var t=0,o=[],i=[e.css("borderTopWidth"),e.css("borderRightWidth"),e.css("borderBottomWidth"),e.css("borderLeftWidth")],n=[e.css("paddingTop"),e.css("paddingRight"),e.css("paddingBottom"),e.css("paddingLeft")];t<4;t++)o[t]=parseInt(i[t],10)||0,o[t]+=parseInt(n[t],10)||0;return{height:o[0]+o[2],width:o[1]+o[3]}},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var e,t=0,o=this.helper||this.element;this._proportionallyResizeElements.length>t;t++)e=this._proportionallyResizeElements[t],this.outerDimensions||(this.outerDimensions=this._getPaddingPlusBorderDimensions(e)),e.css({height:o.height()-this.outerDimensions.height||0,width:o.width()-this.outerDimensions.width||0})},_renderProxy:function(){var e=this.element,t=this.options;this.elementOffset=e.offset(),this._helper?(this.helper=this.helper||x("<div style='overflow:hidden;'></div>"),this.helper.addClass(this._helper).css({width:this.element.outerWidth()-1,height:this.element.outerHeight()-1,position:"absolute",left:this.elementOffset.left+"px",top:this.elementOffset.top+"px",zIndex:++t.zIndex}),this.helper.appendTo("body").disableSelection()):this.helper=this.element},_change:{e:function(e,t){return{width:this.originalSize.width+t}},w:function(e,t){var o=this.originalSize;return{left:this.originalPosition.left+t,width:o.width-t}},n:function(e,t,o){var i=this.originalSize;return{top:this.originalPosition.top+o,height:i.height-o}},s:function(e,t,o){return{height:this.originalSize.height+o}},se:function(e,t,o){return x.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[e,t,o]))},sw:function(e,t,o){return x.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[e,t,o]))},ne:function(e,t,o){return x.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[e,t,o]))},nw:function(e,t,o){return x.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[e,t,o]))}},_propagate:function(e,t){x.ui.plugin.call(this,e,[t,this.ui()]),"resize"!==e&&this._trigger(e,t,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),x.ui.plugin.add("resizable","animate",{stop:function(t){var o=x(this).resizable("instance"),e=o.options,i=o._proportionallyResizeElements,n=i.length&&/textarea/i.test(i[0].nodeName),r=n&&o._hasScroll(i[0],"left")?0:o.sizeDiff.height,n=n?0:o.sizeDiff.width,n={width:o.size.width-n,height:o.size.height-r},r=parseInt(o.element.css("left"),10)+(o.position.left-o.originalPosition.left)||null,s=parseInt(o.element.css("top"),10)+(o.position.top-o.originalPosition.top)||null;o.element.animate(x.extend(n,s&&r?{top:s,left:r}:{}),{duration:e.animateDuration,easing:e.animateEasing,step:function(){var e={width:parseInt(o.element.css("width"),10),height:parseInt(o.element.css("height"),10),top:parseInt(o.element.css("top"),10),left:parseInt(o.element.css("left"),10)};i&&i.length&&x(i[0]).css({width:e.width,height:e.height}),o._updateCache(e),o._propagate("resize",t)}})}}),x.ui.plugin.add("resizable","containment",{start:function(){var o,i,e,t,n=x(this).resizable("instance"),r=n.options,s=n.element,r=r.containment,s=r instanceof x?r.get(0):/parent/.test(r)?s.parent().get(0):r;s&&(n.containerElement=x(s),/document/.test(r)||r===document?(n.containerOffset={left:0,top:0},n.containerPosition={left:0,top:0},n.parentData={element:x(document),left:0,top:0,width:x(document).width(),height:x(document).height()||document.body.parentNode.scrollHeight}):(o=x(s),i=[],x(["Top","Right","Left","Bottom"]).each(function(e,t){i[e]=n._num(o.css("padding"+t))}),n.containerOffset=o.offset(),n.containerPosition=o.position(),n.containerSize={height:o.innerHeight()-i[3],width:o.innerWidth()-i[1]},r=n.containerOffset,t=n.containerSize.height,e=n.containerSize.width,e=n._hasScroll(s,"left")?s.scrollWidth:e,t=n._hasScroll(s)?s.scrollHeight:t,n.parentData={element:s,left:r.left,top:r.top,width:e,height:t}))},resize:function(e){var t=x(this).resizable("instance"),o=t.options,i=t.containerOffset,n=t.position,e=t._aspectRatio||e.shiftKey,r={top:0,left:0},s=t.containerElement,a=!0;s[0]!==document&&/static/.test(s.css("position"))&&(r=i),n.left<(t._helper?i.left:0)&&(t.size.width=t.size.width+(t._helper?t.position.left-i.left:t.position.left-r.left),e&&(t.size.height=t.size.width/t.aspectRatio,a=!1),t.position.left=o.helper?i.left:0),n.top<(t._helper?i.top:0)&&(t.size.height=t.size.height+(t._helper?t.position.top-i.top:t.position.top),e&&(t.size.width=t.size.height*t.aspectRatio,a=!1),t.position.top=t._helper?i.top:0),s=t.containerElement.get(0)===t.element.parent().get(0),o=/relative|absolute/.test(t.containerElement.css("position")),s&&o?(t.offset.left=t.parentData.left+t.position.left,t.offset.top=t.parentData.top+t.position.top):(t.offset.left=t.element.offset().left,t.offset.top=t.element.offset().top),n=Math.abs(t.sizeDiff.width+(t._helper?t.offset.left-r.left:t.offset.left-i.left)),s=Math.abs(t.sizeDiff.height+(t._helper?t.offset.top-r.top:t.offset.top-i.top)),n+t.size.width>=t.parentData.width&&(t.size.width=t.parentData.width-n,e&&(t.size.height=t.size.width/t.aspectRatio,a=!1)),s+t.size.height>=t.parentData.height&&(t.size.height=t.parentData.height-s,e&&(t.size.width=t.size.height*t.aspectRatio,a=!1)),a||(t.position.left=t.prevPosition.left,t.position.top=t.prevPosition.top,t.size.width=t.prevSize.width,t.size.height=t.prevSize.height)},stop:function(){var e=x(this).resizable("instance"),t=e.options,o=e.containerOffset,i=e.containerPosition,n=e.containerElement,r=x(e.helper),s=r.offset(),a=r.outerWidth()-e.sizeDiff.width,r=r.outerHeight()-e.sizeDiff.height;e._helper&&!t.animate&&/relative/.test(n.css("position"))&&x(this).css({left:s.left-i.left-o.left,width:a,height:r}),e._helper&&!t.animate&&/static/.test(n.css("position"))&&x(this).css({left:s.left-i.left-o.left,width:a,height:r})}}),x.ui.plugin.add("resizable","alsoResize",{start:function(){var e=x(this).resizable("instance").options;x(e.alsoResize).each(function(){var e=x(this);e.data("ui-resizable-alsoresize",{width:parseInt(e.width(),10),height:parseInt(e.height(),10),left:parseInt(e.css("left"),10),top:parseInt(e.css("top"),10)})})},resize:function(e,o){var t=x(this).resizable("instance"),i=t.options,n=t.originalSize,r=t.originalPosition,s={height:t.size.height-n.height||0,width:t.size.width-n.width||0,top:t.position.top-r.top||0,left:t.position.left-r.left||0};x(i.alsoResize).each(function(){var e=x(this),i=x(this).data("ui-resizable-alsoresize"),n={},t=e.parents(o.originalElement[0]).length?["width","height"]:["width","height","top","left"];x.each(t,function(e,t){var o=(i[t]||0)+(s[t]||0);o&&0<=o&&(n[t]=o||null)}),e.css(n)})},stop:function(){x(this).removeData("resizable-alsoresize")}}),x.ui.plugin.add("resizable","ghost",{start:function(){var e=x(this).resizable("instance"),t=e.options,o=e.size;e.ghost=e.originalElement.clone(),e.ghost.css({opacity:.25,display:"block",position:"relative",height:o.height,width:o.width,margin:0,left:0,top:0}).addClass("ui-resizable-ghost").addClass("string"==typeof t.ghost?t.ghost:""),e.ghost.appendTo(e.helper)},resize:function(){var e=x(this).resizable("instance");e.ghost&&e.ghost.css({position:"relative",height:e.size.height,width:e.size.width})},stop:function(){var e=x(this).resizable("instance");e.ghost&&e.helper&&e.helper.get(0).removeChild(e.ghost.get(0))}}),x.ui.plugin.add("resizable","grid",{resize:function(){var e,t=x(this).resizable("instance"),o=t.options,i=t.size,n=t.originalSize,r=t.originalPosition,s=t.axis,a="number"==typeof o.grid?[o.grid,o.grid]:o.grid,l=a[0]||1,c=a[1]||1,u=Math.round((i.width-n.width)/l)*l,i=Math.round((i.height-n.height)/c)*c,d=n.width+u,h=n.height+i,p=o.maxWidth&&d>o.maxWidth,f=o.maxHeight&&h>o.maxHeight,m=o.minWidth&&o.minWidth>d,g=o.minHeight&&o.minHeight>h;o.grid=a,m&&(d+=l),g&&(h+=c),p&&(d-=l),f&&(h-=c),/^(se|s|e)$/.test(s)?(t.size.width=d,t.size.height=h):/^(ne)$/.test(s)?(t.size.width=d,t.size.height=h,t.position.top=r.top-i):/^(sw)$/.test(s)?(t.size.width=d,t.size.height=h,t.position.left=r.left-u):((h-c<=0||d-l<=0)&&(e=t._getPaddingPlusBorderDimensions(this)),0<h-c?(t.size.height=h,t.position.top=r.top-i):(h=c-e.height,t.size.height=h,t.position.top=r.top+n.height-h),0<d-l?(t.size.width=d,t.position.left=r.left-u):(d=l-e.width,t.size.width=d,t.position.left=r.left+n.width-d))}}),x.ui.resizable,x.widget("ui.selectable",x.ui.mouse,{version:"1.11.4",options:{appendTo:"body",autoRefresh:!0,distance:0,filter:"*",tolerance:"touch",selected:null,selecting:null,start:null,stop:null,unselected:null,unselecting:null},_create:function(){var e,t=this;this.element.addClass("ui-selectable"),this.dragged=!1,this.refresh=function(){(e=x(t.options.filter,t.element[0])).addClass("ui-selectee"),e.each(function(){var e=x(this),t=e.offset();x.data(this,"selectable-item",{element:this,$element:e,left:t.left,top:t.top,right:t.left+e.outerWidth(),bottom:t.top+e.outerHeight(),startselected:!1,selected:e.hasClass("ui-selected"),selecting:e.hasClass("ui-selecting"),unselecting:e.hasClass("ui-unselecting")})})},this.refresh(),this.selectees=e.addClass("ui-selectee"),this._mouseInit(),this.helper=x("<div class='ui-selectable-helper'></div>")},_destroy:function(){this.selectees.removeClass("ui-selectee").removeData("selectable-item"),this.element.removeClass("ui-selectable ui-selectable-disabled"),this._mouseDestroy()},_mouseStart:function(o){var i=this,e=this.options;this.opos=[o.pageX,o.pageY],this.options.disabled||(this.selectees=x(e.filter,this.element[0]),this._trigger("start",o),x(e.appendTo).append(this.helper),this.helper.css({left:o.pageX,top:o.pageY,width:0,height:0}),e.autoRefresh&&this.refresh(),this.selectees.filter(".ui-selected").each(function(){var e=x.data(this,"selectable-item");e.startselected=!0,o.metaKey||o.ctrlKey||(e.$element.removeClass("ui-selected"),e.selected=!1,e.$element.addClass("ui-unselecting"),e.unselecting=!0,i._trigger("unselecting",o,{unselecting:e.element}))}),x(o.target).parents().addBack().each(function(){var e,t=x.data(this,"selectable-item");return t?(e=!o.metaKey&&!o.ctrlKey||!t.$element.hasClass("ui-selected"),t.$element.removeClass(e?"ui-unselecting":"ui-selected").addClass(e?"ui-selecting":"ui-unselecting"),t.unselecting=!e,t.selecting=e,(t.selected=e)?i._trigger("selecting",o,{selecting:t.element}):i._trigger("unselecting",o,{unselecting:t.element}),!1):void 0}))},_mouseDrag:function(o){var e,i,n,r,s,a,l;if(this.dragged=!0,!this.options.disabled)return n=(i=this).options,r=this.opos[0],s=this.opos[1],a=o.pageX,l=o.pageY,a<r&&(e=a,a=r,r=e),l<s&&(e=l,l=s,s=e),this.helper.css({left:r,top:s,width:a-r,height:l-s}),this.selectees.each(function(){var e=x.data(this,"selectable-item"),t=!1;e&&e.element!==i.element[0]&&("touch"===n.tolerance?t=!(e.left>a||r>e.right||e.top>l||s>e.bottom):"fit"===n.tolerance&&(t=e.left>r&&a>e.right&&e.top>s&&l>e.bottom),t?(e.selected&&(e.$element.removeClass("ui-selected"),e.selected=!1),e.unselecting&&(e.$element.removeClass("ui-unselecting"),e.unselecting=!1),e.selecting||(e.$element.addClass("ui-selecting"),e.selecting=!0,i._trigger("selecting",o,{selecting:e.element}))):(e.selecting&&((o.metaKey||o.ctrlKey)&&e.startselected?(e.$element.removeClass("ui-selecting"),e.selecting=!1,e.$element.addClass("ui-selected"),e.selected=!0):(e.$element.removeClass("ui-selecting"),e.selecting=!1,e.startselected&&(e.$element.addClass("ui-unselecting"),e.unselecting=!0),i._trigger("unselecting",o,{unselecting:e.element}))),!e.selected||o.metaKey||o.ctrlKey||e.startselected||(e.$element.removeClass("ui-selected"),e.selected=!1,e.$element.addClass("ui-unselecting"),e.unselecting=!0,i._trigger("unselecting",o,{unselecting:e.element}))))}),!1},_mouseStop:function(t){var o=this;return this.dragged=!1,x(".ui-unselecting",this.element[0]).each(function(){var e=x.data(this,"selectable-item");e.$element.removeClass("ui-unselecting"),e.unselecting=!1,e.startselected=!1,o._trigger("unselected",t,{unselected:e.element})}),x(".ui-selecting",this.element[0]).each(function(){var e=x.data(this,"selectable-item");e.$element.removeClass("ui-selecting").addClass("ui-selected"),e.selecting=!1,e.selected=!0,e.startselected=!0,o._trigger("selected",t,{selected:e.element})}),this._trigger("stop",t),this.helper.remove(),!1}}),x.widget("ui.sortable",x.ui.mouse,{version:"1.11.4",widgetEventPrefix:"sort",ready:!1,options:{appendTo:"parent",axis:!1,connectWith:!1,containment:!1,cursor:"auto",cursorAt:!1,dropOnEmpty:!0,forcePlaceholderSize:!1,forceHelperSize:!1,grid:!1,handle:!1,helper:"original",items:"> *",opacity:!1,placeholder:!1,revert:!1,scroll:!0,scrollSensitivity:20,scrollSpeed:20,scope:"default",tolerance:"intersect",zIndex:1e3,activate:null,beforeStop:null,change:null,deactivate:null,out:null,over:null,receive:null,remove:null,sort:null,start:null,stop:null,update:null},_isOverAxis:function(e,t,o){return t<=e&&e<t+o},_isFloating:function(e){return/left|right/.test(e.css("float"))||/inline|table-cell/.test(e.css("display"))},_create:function(){this.containerCache={},this.element.addClass("ui-sortable"),this.refresh(),this.offset=this.element.offset(),this._mouseInit(),this._setHandleClassName(),this.ready=!0},_setOption:function(e,t){this._super(e,t),"handle"===e&&this._setHandleClassName()},_setHandleClassName:function(){this.element.find(".ui-sortable-handle").removeClass("ui-sortable-handle"),x.each(this.items,function(){(this.instance.options.handle?this.item.find(this.instance.options.handle):this.item).addClass("ui-sortable-handle")})},_destroy:function(){this.element.removeClass("ui-sortable ui-sortable-disabled").find(".ui-sortable-handle").removeClass("ui-sortable-handle"),this._mouseDestroy();for(var e=this.items.length-1;0<=e;e--)this.items[e].item.removeData(this.widgetName+"-item");return this},_mouseCapture:function(e,t){var o=null,i=!1,n=this;return!this.reverting&&(!this.options.disabled&&"static"!==this.options.type&&(this._refreshItems(e),x(e.target).parents().each(function(){return x.data(this,n.widgetName+"-item")===n?(o=x(this),!1):void 0}),!!(o=x.data(e.target,n.widgetName+"-item")===n?x(e.target):o)&&(!(this.options.handle&&!t&&(x(this.options.handle,o).find("*").addBack().each(function(){this===e.target&&(i=!0)}),!i))&&(this.currentItem=o,this._removeCurrentsFromItems(),!0))))},_mouseStart:function(e,t,o){var i,n,r=this.options;if((this.currentContainer=this).refreshPositions(),this.helper=this._createHelper(e),this._cacheHelperProportions(),this._cacheMargins(),this.scrollParent=this.helper.scrollParent(),this.offset=this.currentItem.offset(),this.offset={top:this.offset.top-this.margins.top,left:this.offset.left-this.margins.left},x.extend(this.offset,{click:{left:e.pageX-this.offset.left,top:e.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()}),this.helper.css("position","absolute"),this.cssPosition=this.helper.css("position"),this.originalPosition=this._generatePosition(e),this.originalPageX=e.pageX,this.originalPageY=e.pageY,r.cursorAt&&this._adjustOffsetFromHelper(r.cursorAt),this.domPosition={prev:this.currentItem.prev()[0],parent:this.currentItem.parent()[0]},this.helper[0]!==this.currentItem[0]&&this.currentItem.hide(),this._createPlaceholder(),r.containment&&this._setContainment(),r.cursor&&"auto"!==r.cursor&&(n=this.document.find("body"),this.storedCursor=n.css("cursor"),n.css("cursor",r.cursor),this.storedStylesheet=x("<style>*{ cursor: "+r.cursor+" !important; }</style>").appendTo(n)),r.opacity&&(this.helper.css("opacity")&&(this._storedOpacity=this.helper.css("opacity")),this.helper.css("opacity",r.opacity)),r.zIndex&&(this.helper.css("zIndex")&&(this._storedZIndex=this.helper.css("zIndex")),this.helper.css("zIndex",r.zIndex)),this.scrollParent[0]!==this.document[0]&&"HTML"!==this.scrollParent[0].tagName&&(this.overflowOffset=this.scrollParent.offset()),this._trigger("start",e,this._uiHash()),this._preserveHelperProportions||this._cacheHelperProportions(),!o)for(i=this.containers.length-1;0<=i;i--)this.containers[i]._trigger("activate",e,this._uiHash(this));return x.ui.ddmanager&&(x.ui.ddmanager.current=this),x.ui.ddmanager&&!r.dropBehaviour&&x.ui.ddmanager.prepareOffsets(this,e),this.dragging=!0,this.helper.addClass("ui-sortable-helper"),this._mouseDrag(e),!0},_mouseDrag:function(e){var t,o,i,n,r=this.options,s=!1;for(this.position=this._generatePosition(e),this.positionAbs=this._convertPositionTo("absolute"),this.lastPositionAbs||(this.lastPositionAbs=this.positionAbs),this.options.scroll&&(this.scrollParent[0]!==this.document[0]&&"HTML"!==this.scrollParent[0].tagName?(this.overflowOffset.top+this.scrollParent[0].offsetHeight-e.pageY<r.scrollSensitivity?this.scrollParent[0].scrollTop=s=this.scrollParent[0].scrollTop+r.scrollSpeed:e.pageY-this.overflowOffset.top<r.scrollSensitivity&&(this.scrollParent[0].scrollTop=s=this.scrollParent[0].scrollTop-r.scrollSpeed),this.overflowOffset.left+this.scrollParent[0].offsetWidth-e.pageX<r.scrollSensitivity?this.scrollParent[0].scrollLeft=s=this.scrollParent[0].scrollLeft+r.scrollSpeed:e.pageX-this.overflowOffset.left<r.scrollSensitivity&&(this.scrollParent[0].scrollLeft=s=this.scrollParent[0].scrollLeft-r.scrollSpeed)):(e.pageY-this.document.scrollTop()<r.scrollSensitivity?s=this.document.scrollTop(this.document.scrollTop()-r.scrollSpeed):this.window.height()-(e.pageY-this.document.scrollTop())<r.scrollSensitivity&&(s=this.document.scrollTop(this.document.scrollTop()+r.scrollSpeed)),e.pageX-this.document.scrollLeft()<r.scrollSensitivity?s=this.document.scrollLeft(this.document.scrollLeft()-r.scrollSpeed):this.window.width()-(e.pageX-this.document.scrollLeft())<r.scrollSensitivity&&(s=this.document.scrollLeft(this.document.scrollLeft()+r.scrollSpeed))),!1!==s&&x.ui.ddmanager&&!r.dropBehaviour&&x.ui.ddmanager.prepareOffsets(this,e)),this.positionAbs=this._convertPositionTo("absolute"),this.options.axis&&"y"===this.options.axis||(this.helper[0].style.left=this.position.left+"px"),this.options.axis&&"x"===this.options.axis||(this.helper[0].style.top=this.position.top+"px"),t=this.items.length-1;0<=t;t--)if(i=(o=this.items[t]).item[0],(n=this._intersectsWithPointer(o))&&o.instance===this.currentContainer&&i!==this.currentItem[0]&&this.placeholder[1===n?"next":"prev"]()[0]!==i&&!x.contains(this.placeholder[0],i)&&("semi-dynamic"!==this.options.type||!x.contains(this.element[0],i))){if(this.direction=1===n?"down":"up","pointer"!==this.options.tolerance&&!this._intersectsWithSides(o))break;this._rearrange(e,o),this._trigger("change",e,this._uiHash());break}return this._contactContainers(e),x.ui.ddmanager&&x.ui.ddmanager.drag(this,e),this._trigger("sort",e,this._uiHash()),this.lastPositionAbs=this.positionAbs,!1},_mouseStop:function(e,t){var o,i,n,r;if(e)return x.ui.ddmanager&&!this.options.dropBehaviour&&x.ui.ddmanager.drop(this,e),this.options.revert?(i=(o=this).placeholder.offset(),r={},(n=this.options.axis)&&"x"!==n||(r.left=i.left-this.offset.parent.left-this.margins.left+(this.offsetParent[0]===this.document[0].body?0:this.offsetParent[0].scrollLeft)),n&&"y"!==n||(r.top=i.top-this.offset.parent.top-this.margins.top+(this.offsetParent[0]===this.document[0].body?0:this.offsetParent[0].scrollTop)),this.reverting=!0,x(this.helper).animate(r,parseInt(this.options.revert,10)||500,function(){o._clear(e)})):this._clear(e,t),!1},cancel:function(){if(this.dragging){this._mouseUp({target:null}),"original"===this.options.helper?this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper"):this.currentItem.show();for(var e=this.containers.length-1;0<=e;e--)this.containers[e]._trigger("deactivate",null,this._uiHash(this)),this.containers[e].containerCache.over&&(this.containers[e]._trigger("out",null,this._uiHash(this)),this.containers[e].containerCache.over=0)}return this.placeholder&&(this.placeholder[0].parentNode&&this.placeholder[0].parentNode.removeChild(this.placeholder[0]),"original"!==this.options.helper&&this.helper&&this.helper[0].parentNode&&this.helper.remove(),x.extend(this,{helper:null,dragging:!1,reverting:!1,_noFinalSort:null}),this.domPosition.prev?x(this.domPosition.prev).after(this.currentItem):x(this.domPosition.parent).prepend(this.currentItem)),this},serialize:function(t){var e=this._getItemsAsjQuery(t&&t.connected),o=[];return t=t||{},x(e).each(function(){var e=(x(t.item||this).attr(t.attribute||"id")||"").match(t.expression||/(.+)[\-=_](.+)/);e&&o.push((t.key||e[1]+"[]")+"="+(t.key&&t.expression?e[1]:e[2]))}),!o.length&&t.key&&o.push(t.key+"="),o.join("&")},toArray:function(e){var t=this._getItemsAsjQuery(e&&e.connected),o=[];return e=e||{},t.each(function(){o.push(x(e.item||this).attr(e.attribute||"id")||"")}),o},_intersectsWith:function(e){var t=this.positionAbs.left,o=t+this.helperProportions.width,i=this.positionAbs.top,n=i+this.helperProportions.height,r=e.left,s=r+e.width,a=e.top,l=a+e.height,c=this.offset.click.top,u=this.offset.click.left,c="x"===this.options.axis||a<i+c&&i+c<l,u="y"===this.options.axis||r<t+u&&t+u<s;return"pointer"===this.options.tolerance||this.options.forcePointerForContainers||"pointer"!==this.options.tolerance&&this.helperProportions[this.floating?"width":"height"]>e[this.floating?"width":"height"]?c&&u:t+this.helperProportions.width/2>r&&s>o-this.helperProportions.width/2&&i+this.helperProportions.height/2>a&&l>n-this.helperProportions.height/2},_intersectsWithPointer:function(e){var t="x"===this.options.axis||this._isOverAxis(this.positionAbs.top+this.offset.click.top,e.top,e.height),e="y"===this.options.axis||this._isOverAxis(this.positionAbs.left+this.offset.click.left,e.left,e.width),t=t&&e,e=this._getDragVerticalDirection(),o=this._getDragHorizontalDirection();return!!t&&(this.floating?o&&"right"===o||"down"===e?2:1:e&&("down"===e?2:1))},_intersectsWithSides:function(e){var t=this._isOverAxis(this.positionAbs.top+this.offset.click.top,e.top+e.height/2,e.height),e=this._isOverAxis(this.positionAbs.left+this.offset.click.left,e.left+e.width/2,e.width),o=this._getDragVerticalDirection(),i=this._getDragHorizontalDirection();return this.floating&&i?"right"===i&&e||"left"===i&&!e:o&&("down"===o&&t||"up"===o&&!t)},_getDragVerticalDirection:function(){var e=this.positionAbs.top-this.lastPositionAbs.top;return 0!=e&&(0<e?"down":"up")},_getDragHorizontalDirection:function(){var e=this.positionAbs.left-this.lastPositionAbs.left;return 0!=e&&(0<e?"right":"left")},refresh:function(e){return this._refreshItems(e),this._setHandleClassName(),this.refreshPositions(),this},_connectWith:function(){var e=this.options;return e.connectWith.constructor===String?[e.connectWith]:e.connectWith},_getItemsAsjQuery:function(e){function t(){s.push(this)}var o,i,n,r,s=[],a=[],l=this._connectWith();if(l&&e)for(o=l.length-1;0<=o;o--)for(i=(n=x(l[o],this.document[0])).length-1;0<=i;i--)(r=x.data(n[i],this.widgetFullName))&&r!==this&&!r.options.disabled&&a.push([x.isFunction(r.options.items)?r.options.items.call(r.element):x(r.options.items,r.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),r]);for(a.push([x.isFunction(this.options.items)?this.options.items.call(this.element,null,{options:this.options,item:this.currentItem}):x(this.options.items,this.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),this]),o=a.length-1;0<=o;o--)a[o][0].each(t);return x(s)},_removeCurrentsFromItems:function(){var o=this.currentItem.find(":data("+this.widgetName+"-item)");this.items=x.grep(this.items,function(e){for(var t=0;o.length>t;t++)if(o[t]===e.item[0])return!1;return!0})},_refreshItems:function(e){this.items=[],this.containers=[this];var t,o,i,n,r,s,a,l,c=this.items,u=[[x.isFunction(this.options.items)?this.options.items.call(this.element[0],e,{item:this.currentItem}):x(this.options.items,this.element),this]],d=this._connectWith();if(d&&this.ready)for(t=d.length-1;0<=t;t--)for(o=(i=x(d[t],this.document[0])).length-1;0<=o;o--)(n=x.data(i[o],this.widgetFullName))&&n!==this&&!n.options.disabled&&(u.push([x.isFunction(n.options.items)?n.options.items.call(n.element[0],e,{item:this.currentItem}):x(n.options.items,n.element),n]),this.containers.push(n));for(t=u.length-1;0<=t;t--)for(r=u[t][1],l=(s=u[t][o=0]).length;o<l;o++)(a=x(s[o])).data(this.widgetName+"-item",r),c.push({item:a,instance:r,width:0,height:0,left:0,top:0})},refreshPositions:function(e){var t,o,i,n;for(this.floating=!!this.items.length&&("x"===this.options.axis||this._isFloating(this.items[0].item)),this.offsetParent&&this.helper&&(this.offset.parent=this._getParentOffset()),t=this.items.length-1;0<=t;t--)(o=this.items[t]).instance!==this.currentContainer&&this.currentContainer&&o.item[0]!==this.currentItem[0]||(i=this.options.toleranceElement?x(this.options.toleranceElement,o.item):o.item,e||(o.width=i.outerWidth(),o.height=i.outerHeight()),n=i.offset(),o.left=n.left,o.top=n.top);if(this.options.custom&&this.options.custom.refreshContainers)this.options.custom.refreshContainers.call(this);else for(t=this.containers.length-1;0<=t;t--)n=this.containers[t].element.offset(),this.containers[t].containerCache.left=n.left,this.containers[t].containerCache.top=n.top,this.containers[t].containerCache.width=this.containers[t].element.outerWidth(),this.containers[t].containerCache.height=this.containers[t].element.outerHeight();return this},_createPlaceholder:function(o){var i,n=(o=o||this).options;n.placeholder&&n.placeholder.constructor!==String||(i=n.placeholder,n.placeholder={element:function(){var e=o.currentItem[0].nodeName.toLowerCase(),t=x("<"+e+">",o.document[0]).addClass(i||o.currentItem[0].className+" ui-sortable-placeholder").removeClass("ui-sortable-helper");return"tbody"===e?o._createTrPlaceholder(o.currentItem.find("tr").eq(0),x("<tr>",o.document[0]).appendTo(t)):"tr"===e?o._createTrPlaceholder(o.currentItem,t):"img"===e&&t.attr("src",o.currentItem.attr("src")),i||t.css("visibility","hidden"),t},update:function(e,t){i&&!n.forcePlaceholderSize||(t.height()||t.height(o.currentItem.innerHeight()-parseInt(o.currentItem.css("paddingTop")||0,10)-parseInt(o.currentItem.css("paddingBottom")||0,10)),t.width()||t.width(o.currentItem.innerWidth()-parseInt(o.currentItem.css("paddingLeft")||0,10)-parseInt(o.currentItem.css("paddingRight")||0,10)))}}),o.placeholder=x(n.placeholder.element.call(o.element,o.currentItem)),o.currentItem.after(o.placeholder),n.placeholder.update(o,o.placeholder)},_createTrPlaceholder:function(e,t){var o=this;e.children().each(function(){x("<td>&#160;</td>",o.document[0]).attr("colspan",x(this).attr("colspan")||1).appendTo(t)})},_contactContainers:function(e){for(var t,o,i,n,r,s,a,l,c,u=null,d=null,h=this.containers.length-1;0<=h;h--)if(!x.contains(this.currentItem[0],this.containers[h].element[0]))if(this._intersectsWith(this.containers[h].containerCache)){if(u&&x.contains(this.containers[h].element[0],u.element[0]))continue;u=this.containers[h],d=h}else this.containers[h].containerCache.over&&(this.containers[h]._trigger("out",e,this._uiHash(this)),this.containers[h].containerCache.over=0);if(u)if(1===this.containers.length)this.containers[d].containerCache.over||(this.containers[d]._trigger("over",e,this._uiHash(this)),this.containers[d].containerCache.over=1);else{for(o=1e4,i=null,n=(l=u.floating||this._isFloating(this.currentItem))?"left":"top",r=l?"width":"height",c=l?"clientX":"clientY",t=this.items.length-1;0<=t;t--)x.contains(this.containers[d].element[0],this.items[t].item[0])&&this.items[t].item[0]!==this.currentItem[0]&&(s=this.items[t].item.offset()[n],a=!1,e[c]-s>this.items[t][r]/2&&(a=!0),o>Math.abs(e[c]-s)&&(o=Math.abs(e[c]-s),i=this.items[t],this.direction=a?"up":"down"));(i||this.options.dropOnEmpty)&&(this.currentContainer===this.containers[d]?this.currentContainer.containerCache.over||(this.containers[d]._trigger("over",e,this._uiHash()),this.currentContainer.containerCache.over=1):(i?this._rearrange(e,i,null,!0):this._rearrange(e,null,this.containers[d].element,!0),this._trigger("change",e,this._uiHash()),this.containers[d]._trigger("change",e,this._uiHash(this)),this.currentContainer=this.containers[d],this.options.placeholder.update(this.currentContainer,this.placeholder),this.containers[d]._trigger("over",e,this._uiHash(this)),this.containers[d].containerCache.over=1))}},_createHelper:function(e){var t=this.options,e=x.isFunction(t.helper)?x(t.helper.apply(this.element[0],[e,this.currentItem])):"clone"===t.helper?this.currentItem.clone():this.currentItem;return e.parents("body").length||x("parent"!==t.appendTo?t.appendTo:this.currentItem[0].parentNode)[0].appendChild(e[0]),e[0]===this.currentItem[0]&&(this._storedCSS={width:this.currentItem[0].style.width,height:this.currentItem[0].style.height,position:this.currentItem.css("position"),top:this.currentItem.css("top"),left:this.currentItem.css("left")}),e[0].style.width&&!t.forceHelperSize||e.width(this.currentItem.width()),e[0].style.height&&!t.forceHelperSize||e.height(this.currentItem.height()),e},_adjustOffsetFromHelper:function(e){"string"==typeof e&&(e=e.split(" ")),"left"in(e=x.isArray(e)?{left:+e[0],top:+e[1]||0}:e)&&(this.offset.click.left=e.left+this.margins.left),"right"in e&&(this.offset.click.left=this.helperProportions.width-e.right+this.margins.left),"top"in e&&(this.offset.click.top=e.top+this.margins.top),"bottom"in e&&(this.offset.click.top=this.helperProportions.height-e.bottom+this.margins.top)},_getParentOffset:function(){this.offsetParent=this.helper.offsetParent();var e=this.offsetParent.offset();return"absolute"===this.cssPosition&&this.scrollParent[0]!==this.document[0]&&x.contains(this.scrollParent[0],this.offsetParent[0])&&(e.left+=this.scrollParent.scrollLeft(),e.top+=this.scrollParent.scrollTop()),{top:(e=this.offsetParent[0]===this.document[0].body||this.offsetParent[0].tagName&&"html"===this.offsetParent[0].tagName.toLowerCase()&&x.ui.ie?{top:0,left:0}:e).top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:e.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){var e;return"relative"===this.cssPosition?{top:(e=this.currentItem.position()).top-(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:e.left-(parseInt(this.helper.css("left"),10)||0)+this.scrollParent.scrollLeft()}:{top:0,left:0}},_cacheMargins:function(){this.margins={left:parseInt(this.currentItem.css("marginLeft"),10)||0,top:parseInt(this.currentItem.css("marginTop"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var e,t,o=this.options;"parent"===o.containment&&(o.containment=this.helper[0].parentNode),"document"!==o.containment&&"window"!==o.containment||(this.containment=[0-this.offset.relative.left-this.offset.parent.left,0-this.offset.relative.top-this.offset.parent.top,"document"===o.containment?this.document.width():this.window.width()-this.helperProportions.width-this.margins.left,("document"===o.containment?this.document.width():this.window.height()||this.document[0].body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top]),/^(document|window|parent)$/.test(o.containment)||(e=x(o.containment)[0],o=x(o.containment).offset(),t="hidden"!==x(e).css("overflow"),this.containment=[o.left+(parseInt(x(e).css("borderLeftWidth"),10)||0)+(parseInt(x(e).css("paddingLeft"),10)||0)-this.margins.left,o.top+(parseInt(x(e).css("borderTopWidth"),10)||0)+(parseInt(x(e).css("paddingTop"),10)||0)-this.margins.top,o.left+(t?Math.max(e.scrollWidth,e.offsetWidth):e.offsetWidth)-(parseInt(x(e).css("borderLeftWidth"),10)||0)-(parseInt(x(e).css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left,o.top+(t?Math.max(e.scrollHeight,e.offsetHeight):e.offsetHeight)-(parseInt(x(e).css("borderTopWidth"),10)||0)-(parseInt(x(e).css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top])},_convertPositionTo:function(e,t){t=t||this.position;var e="absolute"===e?1:-1,o="absolute"!==this.cssPosition||this.scrollParent[0]!==this.document[0]&&x.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent,i=/(html|body)/i.test(o[0].tagName);return{top:t.top+this.offset.relative.top*e+this.offset.parent.top*e-("fixed"===this.cssPosition?-this.scrollParent.scrollTop():i?0:o.scrollTop())*e,left:t.left+this.offset.relative.left*e+this.offset.parent.left*e-("fixed"===this.cssPosition?-this.scrollParent.scrollLeft():i?0:o.scrollLeft())*e}},_generatePosition:function(e){var t=this.options,o=e.pageX,i=e.pageY,n="absolute"!==this.cssPosition||this.scrollParent[0]!==this.document[0]&&x.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent,r=/(html|body)/i.test(n[0].tagName);return"relative"!==this.cssPosition||this.scrollParent[0]!==this.document[0]&&this.scrollParent[0]!==this.offsetParent[0]||(this.offset.relative=this._getRelativeOffset()),this.originalPosition&&(this.containment&&(e.pageX-this.offset.click.left<this.containment[0]&&(o=this.containment[0]+this.offset.click.left),e.pageY-this.offset.click.top<this.containment[1]&&(i=this.containment[1]+this.offset.click.top),e.pageX-this.offset.click.left>this.containment[2]&&(o=this.containment[2]+this.offset.click.left),e.pageY-this.offset.click.top>this.containment[3]&&(i=this.containment[3]+this.offset.click.top)),t.grid&&(e=this.originalPageY+Math.round((i-this.originalPageY)/t.grid[1])*t.grid[1],i=!this.containment||e-this.offset.click.top>=this.containment[1]&&e-this.offset.click.top<=this.containment[3]?e:e-this.offset.click.top>=this.containment[1]?e-t.grid[1]:e+t.grid[1],e=this.originalPageX+Math.round((o-this.originalPageX)/t.grid[0])*t.grid[0],o=!this.containment||e-this.offset.click.left>=this.containment[0]&&e-this.offset.click.left<=this.containment[2]?e:e-this.offset.click.left>=this.containment[0]?e-t.grid[0]:e+t.grid[0])),{top:i-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+("fixed"===this.cssPosition?-this.scrollParent.scrollTop():r?0:n.scrollTop()),left:o-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+("fixed"===this.cssPosition?-this.scrollParent.scrollLeft():r?0:n.scrollLeft())}},_rearrange:function(e,t,o,i){o?o[0].appendChild(this.placeholder[0]):t.item[0].parentNode.insertBefore(this.placeholder[0],"down"===this.direction?t.item[0]:t.item[0].nextSibling),this.counter=this.counter?++this.counter:1;var n=this.counter;this._delay(function(){n===this.counter&&this.refreshPositions(!i)})},_clear:function(e,t){function o(t,o,i){return function(e){i._trigger(t,e,o._uiHash(o))}}this.reverting=!1;var i,n=[];if(!this._noFinalSort&&this.currentItem.parent().length&&this.placeholder.before(this.currentItem),this._noFinalSort=null,this.helper[0]===this.currentItem[0]){for(i in this._storedCSS)"auto"!==this._storedCSS[i]&&"static"!==this._storedCSS[i]||(this._storedCSS[i]="");this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper")}else this.currentItem.show();for(this.fromOutside&&!t&&n.push(function(e){this._trigger("receive",e,this._uiHash(this.fromOutside))}),!this.fromOutside&&this.domPosition.prev===this.currentItem.prev().not(".ui-sortable-helper")[0]&&this.domPosition.parent===this.currentItem.parent()[0]||t||n.push(function(e){this._trigger("update",e,this._uiHash())}),this===this.currentContainer||t||(n.push(function(e){this._trigger("remove",e,this._uiHash())}),n.push(function(t){return function(e){t._trigger("receive",e,this._uiHash(this))}}.call(this,this.currentContainer)),n.push(function(t){return function(e){t._trigger("update",e,this._uiHash(this))}}.call(this,this.currentContainer))),i=this.containers.length-1;0<=i;i--)t||n.push(o("deactivate",this,this.containers[i])),this.containers[i].containerCache.over&&(n.push(o("out",this,this.containers[i])),this.containers[i].containerCache.over=0);if(this.storedCursor&&(this.document.find("body").css("cursor",this.storedCursor),this.storedStylesheet.remove()),this._storedOpacity&&this.helper.css("opacity",this._storedOpacity),this._storedZIndex&&this.helper.css("zIndex","auto"===this._storedZIndex?"":this._storedZIndex),this.dragging=!1,t||this._trigger("beforeStop",e,this._uiHash()),this.placeholder[0].parentNode.removeChild(this.placeholder[0]),this.cancelHelperRemoval||(this.helper[0]!==this.currentItem[0]&&this.helper.remove(),this.helper=null),!t){for(i=0;n.length>i;i++)n[i].call(this,e);this._trigger("stop",e,this._uiHash())}return this.fromOutside=!1,!this.cancelHelperRemoval},_trigger:function(){!1===x.Widget.prototype._trigger.apply(this,arguments)&&this.cancel()},_uiHash:function(e){var t=e||this;return{helper:t.helper,placeholder:t.placeholder||x([]),position:t.position,originalPosition:t.originalPosition,offset:t.positionAbs,item:t.currentItem,sender:e?e.element:null}}}),x.widget("ui.accordion",{version:"1.11.4",options:{active:0,animate:{},collapsible:!1,event:"click",header:"> li > :first-child,> :not(li):even",heightStyle:"auto",icons:{activeHeader:"ui-icon-triangle-1-s",header:"ui-icon-triangle-1-e"},activate:null,beforeActivate:null},hideProps:{borderTopWidth:"hide",borderBottomWidth:"hide",paddingTop:"hide",paddingBottom:"hide",height:"hide"},showProps:{borderTopWidth:"show",borderBottomWidth:"show",paddingTop:"show",paddingBottom:"show",height:"show"},_create:function(){var e=this.options;this.prevShow=this.prevHide=x(),this.element.addClass("ui-accordion ui-widget ui-helper-reset").attr("role","tablist"),e.collapsible||!1!==e.active&&null!=e.active||(e.active=0),this._processPanels(),e.active<0&&(e.active+=this.headers.length),this._refresh()},_getCreateEventData:function(){return{header:this.active,panel:this.active.length?this.active.next():x()}},_createIcons:function(){var e=this.options.icons;e&&(x("<span>").addClass("ui-accordion-header-icon ui-icon "+e.header).prependTo(this.headers),this.active.children(".ui-accordion-header-icon").removeClass(e.header).addClass(e.activeHeader),this.headers.addClass("ui-accordion-icons"))},_destroyIcons:function(){this.headers.removeClass("ui-accordion-icons").children(".ui-accordion-header-icon").remove()},_destroy:function(){var e;this.element.removeClass("ui-accordion ui-widget ui-helper-reset").removeAttr("role"),this.headers.removeClass("ui-accordion-header ui-accordion-header-active ui-state-default ui-corner-all ui-state-active ui-state-disabled ui-corner-top").removeAttr("role").removeAttr("aria-expanded").removeAttr("aria-selected").removeAttr("aria-controls").removeAttr("tabIndex").removeUniqueId(),this._destroyIcons(),e=this.headers.next().removeClass("ui-helper-reset ui-widget-content ui-corner-bottom ui-accordion-content ui-accordion-content-active ui-state-disabled").css("display","").removeAttr("role").removeAttr("aria-hidden").removeAttr("aria-labelledby").removeUniqueId(),"content"!==this.options.heightStyle&&e.css("height","")},_setOption:function(e,t){return"active"===e?void this._activate(t):("event"===e&&(this.options.event&&this._off(this.headers,this.options.event),this._setupEvents(t)),this._super(e,t),"collapsible"!==e||t||!1!==this.options.active||this._activate(0),"icons"===e&&(this._destroyIcons(),t&&this._createIcons()),void("disabled"===e&&(this.element.toggleClass("ui-state-disabled",!!t).attr("aria-disabled",t),this.headers.add(this.headers.next()).toggleClass("ui-state-disabled",!!t))))},_keydown:function(e){if(!e.altKey&&!e.ctrlKey){var t=x.ui.keyCode,o=this.headers.length,i=this.headers.index(e.target),n=!1;switch(e.keyCode){case t.RIGHT:case t.DOWN:n=this.headers[(i+1)%o];break;case t.LEFT:case t.UP:n=this.headers[(i-1+o)%o];break;case t.SPACE:case t.ENTER:this._eventHandler(e);break;case t.HOME:n=this.headers[0];break;case t.END:n=this.headers[o-1]}n&&(x(e.target).attr("tabIndex",-1),x(n).attr("tabIndex",0),n.focus(),e.preventDefault())}},_panelKeyDown:function(e){e.keyCode===x.ui.keyCode.UP&&e.ctrlKey&&x(e.currentTarget).prev().focus()},refresh:function(){var e=this.options;this._processPanels(),!1===e.active&&!0===e.collapsible||!this.headers.length?(e.active=!1,this.active=x()):!1===e.active?this._activate(0):this.active.length&&!x.contains(this.element[0],this.active[0])?this.headers.length===this.headers.find(".ui-state-disabled").length?(e.active=!1,this.active=x()):this._activate(Math.max(0,e.active-1)):e.active=this.headers.index(this.active),this._destroyIcons(),this._refresh()},_processPanels:function(){var e=this.headers,t=this.panels;this.headers=this.element.find(this.options.header).addClass("ui-accordion-header ui-state-default ui-corner-all"),this.panels=this.headers.next().addClass("ui-accordion-content ui-helper-reset ui-widget-content ui-corner-bottom").filter(":not(.ui-accordion-content-active)").hide(),t&&(this._off(e.not(this.headers)),this._off(t.not(this.panels)))},_refresh:function(){var o,e=this.options,t=e.heightStyle,i=this.element.parent();this.active=this._findActive(e.active).addClass("ui-accordion-header-active ui-state-active ui-corner-top").removeClass("ui-corner-all"),this.active.next().addClass("ui-accordion-content-active").show(),this.headers.attr("role","tab").each(function(){var e=x(this),t=e.uniqueId().attr("id"),o=e.next(),i=o.uniqueId().attr("id");e.attr("aria-controls",i),o.attr("aria-labelledby",t)}).next().attr("role","tabpanel"),this.headers.not(this.active).attr({"aria-selected":"false","aria-expanded":"false",tabIndex:-1}).next().attr({"aria-hidden":"true"}).hide(),this.active.length?this.active.attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0}).next().attr({"aria-hidden":"false"}):this.headers.eq(0).attr("tabIndex",0),this._createIcons(),this._setupEvents(e.event),"fill"===t?(o=i.height(),this.element.siblings(":visible").each(function(){var e=x(this),t=e.css("position");"absolute"!==t&&"fixed"!==t&&(o-=e.outerHeight(!0))}),this.headers.each(function(){o-=x(this).outerHeight(!0)}),this.headers.next().each(function(){x(this).height(Math.max(0,o-x(this).innerHeight()+x(this).height()))}).css("overflow","auto")):"auto"===t&&(o=0,this.headers.next().each(function(){o=Math.max(o,x(this).css("height","").height())}).height(o))},_activate:function(e){e=this._findActive(e)[0];e!==this.active[0]&&(e=e||this.active[0],this._eventHandler({target:e,currentTarget:e,preventDefault:x.noop}))},_findActive:function(e){return"number"==typeof e?this.headers.eq(e):x()},_setupEvents:function(e){var o={keydown:"_keydown"};e&&x.each(e.split(" "),function(e,t){o[t]="_eventHandler"}),this._off(this.headers.add(this.headers.next())),this._on(this.headers,o),this._on(this.headers.next(),{keydown:"_panelKeyDown"}),this._hoverable(this.headers),this._focusable(this.headers)},_eventHandler:function(e){var t=this.options,o=this.active,i=x(e.currentTarget),n=i[0]===o[0],r=n&&t.collapsible,s=r?x():i.next(),a=o.next(),a={oldHeader:o,oldPanel:a,newHeader:r?x():i,newPanel:s};e.preventDefault(),n&&!t.collapsible||!1===this._trigger("beforeActivate",e,a)||(t.active=!r&&this.headers.index(i),this.active=n?x():i,this._toggle(a),o.removeClass("ui-accordion-header-active ui-state-active"),t.icons&&o.children(".ui-accordion-header-icon").removeClass(t.icons.activeHeader).addClass(t.icons.header),n||(i.removeClass("ui-corner-all").addClass("ui-accordion-header-active ui-state-active ui-corner-top"),t.icons&&i.children(".ui-accordion-header-icon").removeClass(t.icons.header).addClass(t.icons.activeHeader),i.next().addClass("ui-accordion-content-active")))},_toggle:function(e){var t=e.newPanel,o=this.prevShow.length?this.prevShow:e.oldPanel;this.prevShow.add(this.prevHide).stop(!0,!0),this.prevShow=t,this.prevHide=o,this.options.animate?this._animate(t,o,e):(o.hide(),t.show(),this._toggleComplete(e)),o.attr({"aria-hidden":"true"}),o.prev().attr({"aria-selected":"false","aria-expanded":"false"}),t.length&&o.length?o.prev().attr({tabIndex:-1,"aria-expanded":"false"}):t.length&&this.headers.filter(function(){return 0===parseInt(x(this).attr("tabIndex"),10)}).attr("tabIndex",-1),t.attr("aria-hidden","false").prev().attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0})},_animate:function(e,o,t){function i(){r._toggleComplete(t)}var n,r=this,s=0,a=e.css("box-sizing"),l=e.length&&(!o.length||e.index()<o.index()),c=this.options.animate||{},l=l&&c.down||c,u=(u="string"==typeof l?l:u)||l.easing||c.easing,d=(d="number"==typeof l?l:d)||l.duration||c.duration;return o.length?e.length?(n=e.show().outerHeight(),o.animate(this.hideProps,{duration:d,easing:u,step:function(e,t){t.now=Math.round(e)}}),void e.hide().animate(this.showProps,{duration:d,easing:u,complete:i,step:function(e,t){t.now=Math.round(e),"height"!==t.prop?"content-box"===a&&(s+=t.now):"content"!==r.options.heightStyle&&(t.now=Math.round(n-o.outerHeight()-s),s=0)}})):o.animate(this.hideProps,d,u,i):e.animate(this.showProps,d,u,i)},_toggleComplete:function(e){var t=e.oldPanel;t.removeClass("ui-accordion-content-active").prev().removeClass("ui-corner-top").addClass("ui-corner-all"),t.length&&(t.parent()[0].className=t.parent()[0].className),this._trigger("activate",null,e)}}),x.widget("ui.menu",{version:"1.11.4",defaultElement:"<ul>",delay:300,options:{icons:{submenu:"ui-icon-carat-1-e"},items:"> *",menus:"ul",position:{my:"left-1 top",at:"right top"},role:"menu",blur:null,focus:null,select:null},_create:function(){this.activeMenu=this.element,this.mouseHandled=!1,this.element.uniqueId().addClass("ui-menu ui-widget ui-widget-content").toggleClass("ui-menu-icons",!!this.element.find(".ui-icon").length).attr({role:this.options.role,tabIndex:0}),this.options.disabled&&this.element.addClass("ui-state-disabled").attr("aria-disabled","true"),this._on({"mousedown .ui-menu-item":function(e){e.preventDefault()},"click .ui-menu-item":function(e){var t=x(e.target);!this.mouseHandled&&t.not(".ui-state-disabled").length&&(this.select(e),e.isPropagationStopped()||(this.mouseHandled=!0),t.has(".ui-menu").length?this.expand(e):!this.element.is(":focus")&&x(this.document[0].activeElement).closest(".ui-menu").length&&(this.element.trigger("focus",[!0]),this.active&&1===this.active.parents(".ui-menu").length&&clearTimeout(this.timer)))},"mouseenter .ui-menu-item":function(e){var t;this.previousFilter||((t=x(e.currentTarget)).siblings(".ui-state-active").removeClass("ui-state-active"),this.focus(e,t))},mouseleave:"collapseAll","mouseleave .ui-menu":"collapseAll",focus:function(e,t){var o=this.active||this.element.find(this.options.items).eq(0);t||this.focus(e,o)},blur:function(e){this._delay(function(){x.contains(this.element[0],this.document[0].activeElement)||this.collapseAll(e)})},keydown:"_keydown"}),this.refresh(),this._on(this.document,{click:function(e){this._closeOnDocumentClick(e)&&this.collapseAll(e),this.mouseHandled=!1}})},_destroy:function(){this.element.removeAttr("aria-activedescendant").find(".ui-menu").addBack().removeClass("ui-menu ui-widget ui-widget-content ui-menu-icons ui-front").removeAttr("role").removeAttr("tabIndex").removeAttr("aria-labelledby").removeAttr("aria-expanded").removeAttr("aria-hidden").removeAttr("aria-disabled").removeUniqueId().show(),this.element.find(".ui-menu-item").removeClass("ui-menu-item").removeAttr("role").removeAttr("aria-disabled").removeUniqueId().removeClass("ui-state-hover").removeAttr("tabIndex").removeAttr("role").removeAttr("aria-haspopup").children().each(function(){var e=x(this);e.data("ui-menu-submenu-carat")&&e.remove()}),this.element.find(".ui-menu-divider").removeClass("ui-menu-divider ui-widget-content")},_keydown:function(e){var t,o,i,n=!0;switch(e.keyCode){case x.ui.keyCode.PAGE_UP:this.previousPage(e);break;case x.ui.keyCode.PAGE_DOWN:this.nextPage(e);break;case x.ui.keyCode.HOME:this._move("first","first",e);break;case x.ui.keyCode.END:this._move("last","last",e);break;case x.ui.keyCode.UP:this.previous(e);break;case x.ui.keyCode.DOWN:this.next(e);break;case x.ui.keyCode.LEFT:this.collapse(e);break;case x.ui.keyCode.RIGHT:this.active&&!this.active.is(".ui-state-disabled")&&this.expand(e);break;case x.ui.keyCode.ENTER:case x.ui.keyCode.SPACE:this._activate(e);break;case x.ui.keyCode.ESCAPE:this.collapse(e);break;default:n=!1,t=this.previousFilter||"",o=String.fromCharCode(e.keyCode),i=!1,clearTimeout(this.filterTimer),o===t?i=!0:o=t+o,t=this._filterMenuItems(o),(t=i&&-1!==t.index(this.active.next())?this.active.nextAll(".ui-menu-item"):t).length||(o=String.fromCharCode(e.keyCode),t=this._filterMenuItems(o)),t.length?(this.focus(e,t),this.previousFilter=o,this.filterTimer=this._delay(function(){delete this.previousFilter},1e3)):delete this.previousFilter}n&&e.preventDefault()},_activate:function(e){this.active.is(".ui-state-disabled")||(this.active.is("[aria-haspopup='true']")?this.expand(e):this.select(e))},refresh:function(){var t=this,i=this.options.icons.submenu,e=this.element.find(this.options.menus);this.element.toggleClass("ui-menu-icons",!!this.element.find(".ui-icon").length),e.filter(":not(.ui-menu)").addClass("ui-menu ui-widget ui-widget-content ui-front").hide().attr({role:this.options.role,"aria-hidden":"true","aria-expanded":"false"}).each(function(){var e=x(this),t=e.parent(),o=x("<span>").addClass("ui-menu-icon ui-icon "+i).data("ui-menu-submenu-carat",!0);t.attr("aria-haspopup","true").prepend(o),e.attr("aria-labelledby",t.attr("id"))}),(e=e.add(this.element).find(this.options.items)).not(".ui-menu-item").each(function(){var e=x(this);t._isDivider(e)&&e.addClass("ui-widget-content ui-menu-divider")}),e.not(".ui-menu-item, .ui-menu-divider").addClass("ui-menu-item").uniqueId().attr({tabIndex:-1,role:this._itemRole()}),e.filter(".ui-state-disabled").attr("aria-disabled","true"),this.active&&!x.contains(this.element[0],this.active[0])&&this.blur()},_itemRole:function(){return{menu:"menuitem",listbox:"option"}[this.options.role]},_setOption:function(e,t){"icons"===e&&this.element.find(".ui-menu-icon").removeClass(this.options.icons.submenu).addClass(t.submenu),"disabled"===e&&this.element.toggleClass("ui-state-disabled",!!t).attr("aria-disabled",t),this._super(e,t)},focus:function(e,t){var o;this.blur(e,e&&"focus"===e.type),this._scrollIntoView(t),this.active=t.first(),o=this.active.addClass("ui-state-focus").removeClass("ui-state-active"),this.options.role&&this.element.attr("aria-activedescendant",o.attr("id")),this.active.parent().closest(".ui-menu-item").addClass("ui-state-active"),e&&"keydown"===e.type?this._close():this.timer=this._delay(function(){this._close()},this.delay),(o=t.children(".ui-menu")).length&&e&&/^mouse/.test(e.type)&&this._startOpening(o),this.activeMenu=t.parent(),this._trigger("focus",e,{item:t})},_scrollIntoView:function(e){var t,o,i;this._hasScroll()&&(t=parseFloat(x.css(this.activeMenu[0],"borderTopWidth"))||0,o=parseFloat(x.css(this.activeMenu[0],"paddingTop"))||0,t=e.offset().top-this.activeMenu.offset().top-t-o,o=this.activeMenu.scrollTop(),i=this.activeMenu.height(),e=e.outerHeight(),t<0?this.activeMenu.scrollTop(o+t):i<t+e&&this.activeMenu.scrollTop(o+t-i+e))},blur:function(e,t){t||clearTimeout(this.timer),this.active&&(this.active.removeClass("ui-state-focus"),this.active=null,this._trigger("blur",e,{item:this.active}))},_startOpening:function(e){clearTimeout(this.timer),"true"===e.attr("aria-hidden")&&(this.timer=this._delay(function(){this._close(),this._open(e)},this.delay))},_open:function(e){var t=x.extend({of:this.active},this.options.position);clearTimeout(this.timer),this.element.find(".ui-menu").not(e.parents(".ui-menu")).hide().attr("aria-hidden","true"),e.show().removeAttr("aria-hidden").attr("aria-expanded","true").position(t)},collapseAll:function(t,o){clearTimeout(this.timer),this.timer=this._delay(function(){var e=o?this.element:x(t&&t.target).closest(this.element.find(".ui-menu"));e.length||(e=this.element),this._close(e),this.blur(t),this.activeMenu=e},this.delay)},_close:function(e){(e=e||(this.active?this.active.parent():this.element)).find(".ui-menu").hide().attr("aria-hidden","true").attr("aria-expanded","false").end().find(".ui-state-active").not(".ui-state-focus").removeClass("ui-state-active")},_closeOnDocumentClick:function(e){return!x(e.target).closest(".ui-menu").length},_isDivider:function(e){return!/[^\-\u2014\u2013\s]/.test(e.text())},collapse:function(e){var t=this.active&&this.active.parent().closest(".ui-menu-item",this.element);t&&t.length&&(this._close(),this.focus(e,t))},expand:function(e){var t=this.active&&this.active.children(".ui-menu ").find(this.options.items).first();t&&t.length&&(this._open(t.parent()),this._delay(function(){this.focus(e,t)}))},next:function(e){this._move("next","first",e)},previous:function(e){this._move("prev","last",e)},isFirstItem:function(){return this.active&&!this.active.prevAll(".ui-menu-item").length},isLastItem:function(){return this.active&&!this.active.nextAll(".ui-menu-item").length},_move:function(e,t,o){var i;(i=this.active?"first"===e||"last"===e?this.active["first"===e?"prevAll":"nextAll"](".ui-menu-item").eq(-1):this.active[e+"All"](".ui-menu-item").eq(0):i)&&i.length&&this.active||(i=this.activeMenu.find(this.options.items)[t]()),this.focus(o,i)},nextPage:function(e){var t,o,i;return this.active?void(this.isLastItem()||(this._hasScroll()?(o=this.active.offset().top,i=this.element.height(),this.active.nextAll(".ui-menu-item").each(function(){return(t=x(this)).offset().top-o-i<0}),this.focus(e,t)):this.focus(e,this.activeMenu.find(this.options.items)[this.active?"last":"first"]()))):void this.next(e)},previousPage:function(e){var t,o,i;return this.active?void(this.isFirstItem()||(this._hasScroll()?(o=this.active.offset().top,i=this.element.height(),this.active.prevAll(".ui-menu-item").each(function(){return 0<(t=x(this)).offset().top-o+i}),this.focus(e,t)):this.focus(e,this.activeMenu.find(this.options.items).first()))):void this.next(e)},_hasScroll:function(){return this.element.outerHeight()<this.element.prop("scrollHeight")},select:function(e){this.active=this.active||x(e.target).closest(".ui-menu-item");var t={item:this.active};this.active.has(".ui-menu").length||this.collapseAll(e,!0),this._trigger("select",e,t)},_filterMenuItems:function(e){var e=e.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&"),t=RegExp("^"+e,"i");return this.activeMenu.find(this.options.items).filter(".ui-menu-item").filter(function(){return t.test(x.trim(x(this).text()))})}}),x.widget("ui.autocomplete",{version:"1.11.4",defaultElement:"<input>",options:{appendTo:null,autoFocus:!1,delay:300,minLength:1,position:{my:"left top",at:"left bottom",collision:"none"},source:null,change:null,close:null,focus:null,open:null,response:null,search:null,select:null},requestIndex:0,pending:0,_create:function(){var o,i,n,e=this.element[0].nodeName.toLowerCase(),t="textarea"===e,e="input"===e;this.isMultiLine=t||!e&&this.element.prop("isContentEditable"),this.valueMethod=this.element[t||e?"val":"text"],this.isNewMenu=!0,this.element.addClass("ui-autocomplete-input").attr("autocomplete","off"),this._on(this.element,{keydown:function(e){if(this.element.prop("readOnly"))i=n=o=!0;else{i=n=o=!1;var t=x.ui.keyCode;switch(e.keyCode){case t.PAGE_UP:o=!0,this._move("previousPage",e);break;case t.PAGE_DOWN:o=!0,this._move("nextPage",e);break;case t.UP:o=!0,this._keyEvent("previous",e);break;case t.DOWN:o=!0,this._keyEvent("next",e);break;case t.ENTER:this.menu.active&&(o=!0,e.preventDefault(),this.menu.select(e));break;case t.TAB:this.menu.active&&this.menu.select(e);break;case t.ESCAPE:this.menu.element.is(":visible")&&(this.isMultiLine||this._value(this.term),this.close(e),e.preventDefault());break;default:i=!0,this._searchTimeout(e)}}},keypress:function(e){if(o)return o=!1,void(this.isMultiLine&&!this.menu.element.is(":visible")||e.preventDefault());if(!i){var t=x.ui.keyCode;switch(e.keyCode){case t.PAGE_UP:this._move("previousPage",e);break;case t.PAGE_DOWN:this._move("nextPage",e);break;case t.UP:this._keyEvent("previous",e);break;case t.DOWN:this._keyEvent("next",e)}}},input:function(e){return n?(n=!1,void e.preventDefault()):void this._searchTimeout(e)},focus:function(){this.selectedItem=null,this.previous=this._value()},blur:function(e){return this.cancelBlur?void delete this.cancelBlur:(clearTimeout(this.searching),this.close(e),void this._change(e))}}),this._initSource(),this.menu=x("<ul>").addClass("ui-autocomplete ui-front").appendTo(this._appendTo()).menu({role:null}).hide().menu("instance"),this._on(this.menu.element,{mousedown:function(e){e.preventDefault(),this.cancelBlur=!0,this._delay(function(){delete this.cancelBlur});var o=this.menu.element[0];x(e.target).closest(".ui-menu-item").length||this._delay(function(){var t=this;this.document.one("mousedown",function(e){e.target===t.element[0]||e.target===o||x.contains(o,e.target)||t.close()})})},menufocus:function(e,t){var o;return this.isNewMenu&&(this.isNewMenu=!1,e.originalEvent&&/^mouse/.test(e.originalEvent.type))?(this.menu.blur(),void this.document.one("mousemove",function(){x(e.target).trigger(e.originalEvent)})):(o=t.item.data("ui-autocomplete-item"),!1!==this._trigger("focus",e,{item:o})&&e.originalEvent&&/^key/.test(e.originalEvent.type)&&this._value(o.value),void((t=t.item.attr("aria-label")||o.value)&&x.trim(t).length&&(this.liveRegion.children().hide(),x("<div>").text(t).appendTo(this.liveRegion))))},menuselect:function(e,t){var o=t.item.data("ui-autocomplete-item"),i=this.previous;this.element[0]!==this.document[0].activeElement&&(this.element.focus(),this.previous=i,this._delay(function(){this.previous=i,this.selectedItem=o})),!1!==this._trigger("select",e,{item:o})&&this._value(o.value),this.term=this._value(),this.close(e),this.selectedItem=o}}),this.liveRegion=x("<span>",{role:"status","aria-live":"assertive","aria-relevant":"additions"}).addClass("ui-helper-hidden-accessible").appendTo(this.document[0].body),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_destroy:function(){clearTimeout(this.searching),this.element.removeClass("ui-autocomplete-input").removeAttr("autocomplete"),this.menu.element.remove(),this.liveRegion.remove()},_setOption:function(e,t){this._super(e,t),"source"===e&&this._initSource(),"appendTo"===e&&this.menu.element.appendTo(this._appendTo()),"disabled"===e&&t&&this.xhr&&this.xhr.abort()},_appendTo:function(){var e=this.options.appendTo;return e=(e=(e=e&&(e.jquery||e.nodeType?x(e):this.document.find(e).eq(0)))&&e[0]?e:this.element.closest(".ui-front")).length?e:this.document[0].body},_initSource:function(){var o,i,n=this;x.isArray(this.options.source)?(o=this.options.source,this.source=function(e,t){t(x.ui.autocomplete.filter(o,e.term))}):"string"==typeof this.options.source?(i=this.options.source,this.source=function(e,t){n.xhr&&n.xhr.abort(),n.xhr=x.ajax({url:i,data:e,dataType:"json",success:function(e){t(e)},error:function(){t([])}})}):this.source=this.options.source},_searchTimeout:function(i){clearTimeout(this.searching),this.searching=this._delay(function(){var e=this.term===this._value(),t=this.menu.element.is(":visible"),o=i.altKey||i.ctrlKey||i.metaKey||i.shiftKey;e&&(t||o)||(this.selectedItem=null,this.search(null,i))},this.options.delay)},search:function(e,t){return e=null!=e?e:this._value(),this.term=this._value(),e.length<this.options.minLength?this.close(t):!1!==this._trigger("search",t)?this._search(e):void 0},_search:function(e){this.pending++,this.element.addClass("ui-autocomplete-loading"),this.cancelSearch=!1,this.source({term:e},this._response())},_response:function(){var t=++this.requestIndex;return x.proxy(function(e){t===this.requestIndex&&this.__response(e),this.pending--,this.pending||this.element.removeClass("ui-autocomplete-loading")},this)},__response:function(e){e=e&&this._normalize(e),this._trigger("response",null,{content:e}),!this.options.disabled&&e&&e.length&&!this.cancelSearch?(this._suggest(e),this._trigger("open")):this._close()},close:function(e){this.cancelSearch=!0,this._close(e)},_close:function(e){this.menu.element.is(":visible")&&(this.menu.element.hide(),this.menu.blur(),this.isNewMenu=!0,this._trigger("close",e))},_change:function(e){this.previous!==this._value()&&this._trigger("change",e,{item:this.selectedItem})},_normalize:function(e){return e.length&&e[0].label&&e[0].value?e:x.map(e,function(e){return"string"==typeof e?{label:e,value:e}:x.extend({},e,{label:e.label||e.value,value:e.value||e.label})})},_suggest:function(e){var t=this.menu.element.empty();this._renderMenu(t,e),this.isNewMenu=!0,this.menu.refresh(),t.show(),this._resizeMenu(),t.position(x.extend({of:this.element},this.options.position)),this.options.autoFocus&&this.menu.next()},_resizeMenu:function(){var e=this.menu.element;e.outerWidth(Math.max(e.width("").outerWidth()+1,this.element.outerWidth()))},_renderMenu:function(o,e){var i=this;x.each(e,function(e,t){i._renderItemData(o,t)})},_renderItemData:function(e,t){return this._renderItem(e,t).data("ui-autocomplete-item",t)},_renderItem:function(e,t){return x("<li>").text(t.label).appendTo(e)},_move:function(e,t){return this.menu.element.is(":visible")?this.menu.isFirstItem()&&/^previous/.test(e)||this.menu.isLastItem()&&/^next/.test(e)?(this.isMultiLine||this._value(this.term),void this.menu.blur()):void this.menu[e](t):void this.search(null,t)},widget:function(){return this.menu.element},_value:function(){return this.valueMethod.apply(this.element,arguments)},_keyEvent:function(e,t){this.isMultiLine&&!this.menu.element.is(":visible")||(this._move(e,t),t.preventDefault())}}),x.extend(x.ui.autocomplete,{escapeRegex:function(e){return e.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")},filter:function(e,t){var o=RegExp(x.ui.autocomplete.escapeRegex(t),"i");return x.grep(e,function(e){return o.test(e.label||e.value||e)})}}),x.widget("ui.autocomplete",x.ui.autocomplete,{options:{messages:{noResults:"No search results.",results:function(e){return e+(1<e?" results are":" result is")+" available, use up and down arrow keys to navigate."}}},__response:function(e){var t;this._superApply(arguments),this.options.disabled||this.cancelSearch||(t=e&&e.length?this.options.messages.results(e.length):this.options.messages.noResults,this.liveRegion.children().hide(),x("<div>").text(t).appendTo(this.liveRegion))}}),x.ui.autocomplete;function z(){var e=x(this);setTimeout(function(){e.find(":ui-button").button("refresh")},1)}function H(e){var t=e.name,o=e.form,i=x([]);return t&&(t=t.replace(/'/g,"\\'"),i=o?x(o).find("[name='"+t+"'][type=radio]"):x("[name='"+t+"'][type=radio]",e.ownerDocument).filter(function(){return!this.form})),i}var M,R,N,B="ui-button ui-widget ui-state-default ui-corner-all",U="ui-button-icons-only ui-button-icon-only ui-button-text-icons ui-button-text-icon-primary ui-button-text-icon-secondary ui-button-text-only";x.widget("ui.button",{version:"1.11.4",defaultElement:"<button>",options:{disabled:null,text:!0,label:null,icons:{primary:null,secondary:null}},_create:function(){this.element.closest("form").unbind("reset"+this.eventNamespace).bind("reset"+this.eventNamespace,z),"boolean"!=typeof this.options.disabled?this.options.disabled=!!this.element.prop("disabled"):this.element.prop("disabled",this.options.disabled),this._determineButtonType(),this.hasTitle=!!this.buttonElement.attr("title");var t=this,o=this.options,e="checkbox"===this.type||"radio"===this.type,i=e?"":"ui-state-active";null===o.label&&(o.label="input"===this.type?this.buttonElement.val():this.buttonElement.html()),this._hoverable(this.buttonElement),this.buttonElement.addClass(B).attr("role","button").bind("mouseenter"+this.eventNamespace,function(){o.disabled||this===M&&x(this).addClass("ui-state-active")}).bind("mouseleave"+this.eventNamespace,function(){o.disabled||x(this).removeClass(i)}).bind("click"+this.eventNamespace,function(e){o.disabled&&(e.preventDefault(),e.stopImmediatePropagation())}),this._on({focus:function(){this.buttonElement.addClass("ui-state-focus")},blur:function(){this.buttonElement.removeClass("ui-state-focus")}}),e&&this.element.bind("change"+this.eventNamespace,function(){t.refresh()}),"checkbox"===this.type?this.buttonElement.bind("click"+this.eventNamespace,function(){return!o.disabled&&void 0}):"radio"===this.type?this.buttonElement.bind("click"+this.eventNamespace,function(){if(o.disabled)return!1;x(this).addClass("ui-state-active"),t.buttonElement.attr("aria-pressed","true");var e=t.element[0];H(e).not(e).map(function(){return x(this).button("widget")[0]}).removeClass("ui-state-active").attr("aria-pressed","false")}):(this.buttonElement.bind("mousedown"+this.eventNamespace,function(){return!o.disabled&&(x(this).addClass("ui-state-active"),M=this,void t.document.one("mouseup",function(){M=null}))}).bind("mouseup"+this.eventNamespace,function(){return!o.disabled&&void x(this).removeClass("ui-state-active")}).bind("keydown"+this.eventNamespace,function(e){return!o.disabled&&void(e.keyCode!==x.ui.keyCode.SPACE&&e.keyCode!==x.ui.keyCode.ENTER||x(this).addClass("ui-state-active"))}).bind("keyup"+this.eventNamespace+" blur"+this.eventNamespace,function(){x(this).removeClass("ui-state-active")}),this.buttonElement.is("a")&&this.buttonElement.keyup(function(e){e.keyCode===x.ui.keyCode.SPACE&&x(this).click()})),this._setOption("disabled",o.disabled),this._resetButton()},_determineButtonType:function(){var e,t;this.type=this.element.is("[type=checkbox]")?"checkbox":this.element.is("[type=radio]")?"radio":this.element.is("input")?"input":"button","checkbox"===this.type||"radio"===this.type?(t=this.element.parents().last(),e="label[for='"+this.element.attr("id")+"']",this.buttonElement=t.find(e),this.buttonElement.length||(t=(t.length?t:this.element).siblings(),this.buttonElement=t.filter(e),this.buttonElement.length||(this.buttonElement=t.find(e))),this.element.addClass("ui-helper-hidden-accessible"),(t=this.element.is(":checked"))&&this.buttonElement.addClass("ui-state-active"),this.buttonElement.prop("aria-pressed",t)):this.buttonElement=this.element},widget:function(){return this.buttonElement},_destroy:function(){this.element.removeClass("ui-helper-hidden-accessible"),this.buttonElement.removeClass(B+" ui-state-active "+U).removeAttr("role").removeAttr("aria-pressed").html(this.buttonElement.find(".ui-button-text").html()),this.hasTitle||this.buttonElement.removeAttr("title")},_setOption:function(e,t){return this._super(e,t),"disabled"===e?(this.widget().toggleClass("ui-state-disabled",!!t),this.element.prop("disabled",!!t),void(t&&("checkbox"===this.type||"radio"===this.type?this.buttonElement.removeClass("ui-state-focus"):this.buttonElement.removeClass("ui-state-focus ui-state-active")))):void this._resetButton()},refresh:function(){var e=this.element.is("input, button")?this.element.is(":disabled"):this.element.hasClass("ui-button-disabled");e!==this.options.disabled&&this._setOption("disabled",e),"radio"===this.type?H(this.element[0]).each(function(){x(this).is(":checked")?x(this).button("widget").addClass("ui-state-active").attr("aria-pressed","true"):x(this).button("widget").removeClass("ui-state-active").attr("aria-pressed","false")}):"checkbox"===this.type&&(this.element.is(":checked")?this.buttonElement.addClass("ui-state-active").attr("aria-pressed","true"):this.buttonElement.removeClass("ui-state-active").attr("aria-pressed","false"))},_resetButton:function(){var e,t,o,i,n;"input"===this.type?this.options.label&&this.element.val(this.options.label):(e=this.buttonElement.removeClass(U),t=x("<span></span>",this.document[0]).addClass("ui-button-text").html(this.options.label).appendTo(e.empty()).text(),i=(o=this.options.icons).primary&&o.secondary,n=[],o.primary||o.secondary?(this.options.text&&n.push("ui-button-text-icon"+(i?"s":o.primary?"-primary":"-secondary")),o.primary&&e.prepend("<span class='ui-button-icon-primary ui-icon "+o.primary+"'></span>"),o.secondary&&e.append("<span class='ui-button-icon-secondary ui-icon "+o.secondary+"'></span>"),this.options.text||(n.push(i?"ui-button-icons-only":"ui-button-icon-only"),this.hasTitle||e.attr("title",x.trim(t)))):n.push("ui-button-text-only"),e.addClass(n.join(" ")))}}),x.widget("ui.buttonset",{version:"1.11.4",options:{items:"button, input[type=button], input[type=submit], input[type=reset], input[type=checkbox], input[type=radio], a, :data(ui-button)"},_create:function(){this.element.addClass("ui-buttonset")},_init:function(){this.refresh()},_setOption:function(e,t){"disabled"===e&&this.buttons.button("option",e,t),this._super(e,t)},refresh:function(){var e="rtl"===this.element.css("direction"),t=this.element.find(this.options.items),o=t.filter(":ui-button");t.not(":ui-button").button(),o.button("refresh"),this.buttons=t.map(function(){return x(this).button("widget")[0]}).removeClass("ui-corner-all ui-corner-left ui-corner-right").filter(":first").addClass(e?"ui-corner-right":"ui-corner-left").end().filter(":last").addClass(e?"ui-corner-left":"ui-corner-right").end().end()},_destroy:function(){this.element.removeClass("ui-buttonset"),this.buttons.map(function(){return x(this).button("widget")[0]}).removeClass("ui-corner-left ui-corner-right").end().button("destroy")}}),x.ui.button,x.extend(x.ui,{datepicker:{version:"1.11.4"}}),x.extend(e.prototype,{markerClassName:"hasDatepicker",maxRows:4,_widgetDatepicker:function(){return this.dpDiv},setDefaults:function(e){return l(this._defaults,e||{}),this},_attachDatepicker:function(e,t){var o,i=e.nodeName.toLowerCase(),n="div"===i||"span"===i;e.id||(this.uuid+=1,e.id="dp"+this.uuid),(o=this._newInst(x(e),n)).settings=x.extend({},t||{}),"input"===i?this._connectDatepicker(e,o):n&&this._inlineDatepicker(e,o)},_newInst:function(e,t){return{id:e[0].id.replace(/([^A-Za-z0-9_\-])/g,"\\\\$1"),input:e,selectedDay:0,selectedMonth:0,selectedYear:0,drawMonth:0,drawYear:0,inline:t,dpDiv:t?o(x("<div class='"+this._inlineClass+" ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all'></div>")):this.dpDiv}},_connectDatepicker:function(e,t){var o=x(e);t.append=x([]),t.trigger=x([]),o.hasClass(this.markerClassName)||(this._attachments(o,t),o.addClass(this.markerClassName).keydown(this._doKeyDown).keypress(this._doKeyPress).keyup(this._doKeyUp),this._autoSize(t),x.data(e,"datepicker",t),t.settings.disabled&&this._disableDatepicker(e))},_attachments:function(e,t){var o,i=this._get(t,"appendText"),n=this._get(t,"isRTL");t.append&&t.append.remove(),i&&(t.append=x("<span class='"+this._appendClass+"'>"+i+"</span>"),e[n?"before":"after"](t.append)),e.unbind("focus",this._showDatepicker),t.trigger&&t.trigger.remove(),"focus"!==(i=this._get(t,"showOn"))&&"both"!==i||e.focus(this._showDatepicker),"button"!==i&&"both"!==i||(i=this._get(t,"buttonText"),o=this._get(t,"buttonImage"),t.trigger=x(this._get(t,"buttonImageOnly")?x("<img/>").addClass(this._triggerClass).attr({src:o,alt:i,title:i}):x("<button type='button'></button>").addClass(this._triggerClass).html(o?x("<img/>").attr({src:o,alt:i,title:i}):i)),e[n?"before":"after"](t.trigger),t.trigger.click(function(){return x.datepicker._datepickerShowing&&x.datepicker._lastInput===e[0]?x.datepicker._hideDatepicker():(x.datepicker._datepickerShowing&&x.datepicker._lastInput!==e[0]&&x.datepicker._hideDatepicker(),x.datepicker._showDatepicker(e[0])),!1}))},_autoSize:function(e){var t,o,i,n,r,s;this._get(e,"autoSize")&&!e.inline&&(r=new Date(2009,11,20),(s=this._get(e,"dateFormat")).match(/[DM]/)&&(r.setMonth((t=function(e){for(n=i=o=0;e.length>n;n++)e[n].length>o&&(o=e[n].length,i=n);return i})(this._get(e,s.match(/MM/)?"monthNames":"monthNamesShort"))),r.setDate(t(this._get(e,s.match(/DD/)?"dayNames":"dayNamesShort"))+20-r.getDay())),e.input.attr("size",this._formatDate(e,r).length))},_inlineDatepicker:function(e,t){var o=x(e);o.hasClass(this.markerClassName)||(o.addClass(this.markerClassName).append(t.dpDiv),x.data(e,"datepicker",t),this._setDate(t,this._getDefaultDate(t),!0),this._updateDatepicker(t),this._updateAlternate(t),t.settings.disabled&&this._disableDatepicker(e),t.dpDiv.css("display","block"))},_dialogDatepicker:function(e,t,o,i,n){var r,s=this._dialogInst;return s||(this.uuid+=1,r="dp"+this.uuid,this._dialogInput=x("<input type='text' id='"+r+"' style='position: absolute; top: -100px; width: 0px;'/>"),this._dialogInput.keydown(this._doKeyDown),x("body").append(this._dialogInput),(s=this._dialogInst=this._newInst(this._dialogInput,!1)).settings={},x.data(this._dialogInput[0],"datepicker",s)),l(s.settings,i||{}),t=t&&t.constructor===Date?this._formatDate(s,t):t,this._dialogInput.val(t),this._pos=n?n.length?n:[n.pageX,n.pageY]:null,this._pos||(r=document.documentElement.clientWidth,i=document.documentElement.clientHeight,t=document.documentElement.scrollLeft||document.body.scrollLeft,n=document.documentElement.scrollTop||document.body.scrollTop,this._pos=[r/2-100+t,i/2-150+n]),this._dialogInput.css("left",this._pos[0]+20+"px").css("top",this._pos[1]+"px"),s.settings.onSelect=o,this._inDialog=!0,this.dpDiv.addClass(this._dialogClass),this._showDatepicker(this._dialogInput[0]),x.blockUI&&x.blockUI(this.dpDiv),x.data(this._dialogInput[0],"datepicker",s),this},_destroyDatepicker:function(e){var t,o=x(e),i=x.data(e,"datepicker");o.hasClass(this.markerClassName)&&(t=e.nodeName.toLowerCase(),x.removeData(e,"datepicker"),"input"===t?(i.append.remove(),i.trigger.remove(),o.removeClass(this.markerClassName).unbind("focus",this._showDatepicker).unbind("keydown",this._doKeyDown).unbind("keypress",this._doKeyPress).unbind("keyup",this._doKeyUp)):"div"!==t&&"span"!==t||o.removeClass(this.markerClassName).empty(),R===i&&(R=null))},_enableDatepicker:function(t){var e,o=x(t),i=x.data(t,"datepicker");o.hasClass(this.markerClassName)&&("input"===(e=t.nodeName.toLowerCase())?(t.disabled=!1,i.trigger.filter("button").each(function(){this.disabled=!1}).end().filter("img").css({opacity:"1.0",cursor:""})):"div"!==e&&"span"!==e||((i=o.children("."+this._inlineClass)).children().removeClass("ui-state-disabled"),i.find("select.ui-datepicker-month, select.ui-datepicker-year").prop("disabled",!1)),this._disabledInputs=x.map(this._disabledInputs,function(e){return e===t?null:e}))},_disableDatepicker:function(t){var e,o=x(t),i=x.data(t,"datepicker");o.hasClass(this.markerClassName)&&("input"===(e=t.nodeName.toLowerCase())?(t.disabled=!0,i.trigger.filter("button").each(function(){this.disabled=!0}).end().filter("img").css({opacity:"0.5",cursor:"default"})):"div"!==e&&"span"!==e||((i=o.children("."+this._inlineClass)).children().addClass("ui-state-disabled"),i.find("select.ui-datepicker-month, select.ui-datepicker-year").prop("disabled",!0)),this._disabledInputs=x.map(this._disabledInputs,function(e){return e===t?null:e}),this._disabledInputs[this._disabledInputs.length]=t)},_isDisabledDatepicker:function(e){if(!e)return!1;for(var t=0;this._disabledInputs.length>t;t++)if(this._disabledInputs[t]===e)return!0;return!1},_getInst:function(e){try{return x.data(e,"datepicker")}catch(e){throw"Missing instance data for this datepicker"}},_optionDatepicker:function(e,t,o){var i,n,r,s,a=this._getInst(e);return 2===arguments.length&&"string"==typeof t?"defaults"===t?x.extend({},x.datepicker._defaults):a?"all"===t?x.extend({},a.settings):this._get(a,t):null:(i=t||{},"string"==typeof t&&((i={})[t]=o),void(a&&(this._curInst===a&&this._hideDatepicker(),n=this._getDateDatepicker(e,!0),r=this._getMinMaxDate(a,"min"),s=this._getMinMaxDate(a,"max"),l(a.settings,i),null!==r&&void 0!==i.dateFormat&&void 0===i.minDate&&(a.settings.minDate=this._formatDate(a,r)),null!==s&&void 0!==i.dateFormat&&void 0===i.maxDate&&(a.settings.maxDate=this._formatDate(a,s)),"disabled"in i&&(i.disabled?this._disableDatepicker(e):this._enableDatepicker(e)),this._attachments(x(e),a),this._autoSize(a),this._setDate(a,n),this._updateAlternate(a),this._updateDatepicker(a))))},_changeDatepicker:function(e,t,o){this._optionDatepicker(e,t,o)},_refreshDatepicker:function(e){e=this._getInst(e);e&&this._updateDatepicker(e)},_setDateDatepicker:function(e,t){e=this._getInst(e);e&&(this._setDate(e,t),this._updateDatepicker(e),this._updateAlternate(e))},_getDateDatepicker:function(e,t){e=this._getInst(e);return e&&!e.inline&&this._setDateFromField(e,t),e?this._getDate(e):null},_doKeyDown:function(e){var t,o,i=x.datepicker._getInst(e.target),n=!0,r=i.dpDiv.is(".ui-datepicker-rtl");if(i._keyEvent=!0,x.datepicker._datepickerShowing)switch(e.keyCode){case 9:x.datepicker._hideDatepicker(),n=!1;break;case 13:return(o=x("td."+x.datepicker._dayOverClass+":not(."+x.datepicker._currentClass+")",i.dpDiv))[0]&&x.datepicker._selectDay(e.target,i.selectedMonth,i.selectedYear,o[0]),(o=x.datepicker._get(i,"onSelect"))?(t=x.datepicker._formatDate(i),o.apply(i.input?i.input[0]:null,[t,i])):x.datepicker._hideDatepicker(),!1;case 27:x.datepicker._hideDatepicker();break;case 33:x.datepicker._adjustDate(e.target,e.ctrlKey?-x.datepicker._get(i,"stepBigMonths"):-x.datepicker._get(i,"stepMonths"),"M");break;case 34:x.datepicker._adjustDate(e.target,e.ctrlKey?+x.datepicker._get(i,"stepBigMonths"):+x.datepicker._get(i,"stepMonths"),"M");break;case 35:(e.ctrlKey||e.metaKey)&&x.datepicker._clearDate(e.target),n=e.ctrlKey||e.metaKey;break;case 36:(e.ctrlKey||e.metaKey)&&x.datepicker._gotoToday(e.target),n=e.ctrlKey||e.metaKey;break;case 37:(e.ctrlKey||e.metaKey)&&x.datepicker._adjustDate(e.target,r?1:-1,"D"),n=e.ctrlKey||e.metaKey,e.originalEvent.altKey&&x.datepicker._adjustDate(e.target,e.ctrlKey?-x.datepicker._get(i,"stepBigMonths"):-x.datepicker._get(i,"stepMonths"),"M");break;case 38:(e.ctrlKey||e.metaKey)&&x.datepicker._adjustDate(e.target,-7,"D"),n=e.ctrlKey||e.metaKey;break;case 39:(e.ctrlKey||e.metaKey)&&x.datepicker._adjustDate(e.target,r?-1:1,"D"),n=e.ctrlKey||e.metaKey,e.originalEvent.altKey&&x.datepicker._adjustDate(e.target,e.ctrlKey?+x.datepicker._get(i,"stepBigMonths"):+x.datepicker._get(i,"stepMonths"),"M");break;case 40:(e.ctrlKey||e.metaKey)&&x.datepicker._adjustDate(e.target,7,"D"),n=e.ctrlKey||e.metaKey;break;default:n=!1}else 36===e.keyCode&&e.ctrlKey?x.datepicker._showDatepicker(this):n=!1;n&&(e.preventDefault(),e.stopPropagation())},_doKeyPress:function(e){var t,o=x.datepicker._getInst(e.target);return x.datepicker._get(o,"constrainInput")?(o=x.datepicker._possibleChars(x.datepicker._get(o,"dateFormat")),t=String.fromCharCode(null==e.charCode?e.keyCode:e.charCode),e.ctrlKey||e.metaKey||t<" "||!o||-1<o.indexOf(t)):void 0},_doKeyUp:function(e){e=x.datepicker._getInst(e.target);if(e.input.val()!==e.lastVal)try{x.datepicker.parseDate(x.datepicker._get(e,"dateFormat"),e.input?e.input.val():null,x.datepicker._getFormatConfig(e))&&(x.datepicker._setDateFromField(e),x.datepicker._updateAlternate(e),x.datepicker._updateDatepicker(e))}catch(e){}return!0},_showDatepicker:function(e){var t,o,i,n;"input"!==(e=e.target||e).nodeName.toLowerCase()&&(e=x("input",e.parentNode)[0]),x.datepicker._isDisabledDatepicker(e)||x.datepicker._lastInput===e||(n=x.datepicker._getInst(e),x.datepicker._curInst&&x.datepicker._curInst!==n&&(x.datepicker._curInst.dpDiv.stop(!0,!0),n&&x.datepicker._datepickerShowing&&x.datepicker._hideDatepicker(x.datepicker._curInst.input[0])),!1!==(o=(o=x.datepicker._get(n,"beforeShow"))?o.apply(e,[e,n]):{})&&(l(n.settings,o),n.lastVal=null,x.datepicker._lastInput=e,x.datepicker._setDateFromField(n),x.datepicker._inDialog&&(e.value=""),x.datepicker._pos||(x.datepicker._pos=x.datepicker._findPos(e),x.datepicker._pos[1]+=e.offsetHeight),t=!1,x(e).parents().each(function(){return!(t|="fixed"===x(this).css("position"))}),o={left:x.datepicker._pos[0],top:x.datepicker._pos[1]},x.datepicker._pos=null,n.dpDiv.empty(),n.dpDiv.css({position:"absolute",display:"block",top:"-1000px"}),x.datepicker._updateDatepicker(n),o=x.datepicker._checkOffset(n,o,t),n.dpDiv.css({position:x.datepicker._inDialog&&x.blockUI?"static":t?"fixed":"absolute",display:"none",left:o.left+"px",top:o.top+"px"}),n.inline||(o=x.datepicker._get(n,"showAnim"),i=x.datepicker._get(n,"duration"),n.dpDiv.css("z-index",function(e){for(var t;e.length&&e[0]!==document;){if(("absolute"===(t=e.css("position"))||"relative"===t||"fixed"===t)&&(t=parseInt(e.css("zIndex"),10),!isNaN(t)&&0!==t))return t;e=e.parent()}return 0}(x(e))+1),x.datepicker._datepickerShowing=!0,x.effects&&x.effects.effect[o]?n.dpDiv.show(o,x.datepicker._get(n,"showOptions"),i):n.dpDiv[o||"show"](o?i:null),x.datepicker._shouldFocusInput(n)&&n.input.focus(),x.datepicker._curInst=n)))},_updateDatepicker:function(e){this.maxRows=4,(R=e).dpDiv.empty().append(this._generateHTML(e)),this._attachHandlers(e);var t,o=this._getNumberOfMonths(e),i=o[1],n=e.dpDiv.find("."+this._dayOverClass+" a");0<n.length&&s.apply(n.get(0)),e.dpDiv.removeClass("ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4").width(""),1<i&&e.dpDiv.addClass("ui-datepicker-multi-"+i).css("width",17*i+"em"),e.dpDiv[(1!==o[0]||1!==o[1]?"add":"remove")+"Class"]("ui-datepicker-multi"),e.dpDiv[(this._get(e,"isRTL")?"add":"remove")+"Class"]("ui-datepicker-rtl"),e===x.datepicker._curInst&&x.datepicker._datepickerShowing&&x.datepicker._shouldFocusInput(e)&&e.input.focus(),e.yearshtml&&(t=e.yearshtml,setTimeout(function(){t===e.yearshtml&&e.yearshtml&&e.dpDiv.find("select.ui-datepicker-year:first").replaceWith(e.yearshtml),t=e.yearshtml=null},0))},_shouldFocusInput:function(e){return e.input&&e.input.is(":visible")&&!e.input.is(":disabled")&&!e.input.is(":focus")},_checkOffset:function(e,t,o){var i=e.dpDiv.outerWidth(),n=e.dpDiv.outerHeight(),r=e.input?e.input.outerWidth():0,s=e.input?e.input.outerHeight():0,a=document.documentElement.clientWidth+(o?0:x(document).scrollLeft()),l=document.documentElement.clientHeight+(o?0:x(document).scrollTop());return t.left-=this._get(e,"isRTL")?i-r:0,t.left-=o&&t.left===e.input.offset().left?x(document).scrollLeft():0,t.top-=o&&t.top===e.input.offset().top+s?x(document).scrollTop():0,t.left-=Math.min(t.left,t.left+i>a&&i<a?Math.abs(t.left+i-a):0),t.top-=Math.min(t.top,t.top+n>l&&n<l?Math.abs(n+s):0),t},_findPos:function(e){for(var t=this._getInst(e),o=this._get(t,"isRTL");e&&("hidden"===e.type||1!==e.nodeType||x.expr.filters.hidden(e));)e=e[o?"previousSibling":"nextSibling"];return[(t=x(e).offset()).left,t.top]},_hideDatepicker:function(e){var t,o,i=this._curInst;!i||e&&i!==x.data(e,"datepicker")||this._datepickerShowing&&(e=this._get(i,"showAnim"),o=this._get(i,"duration"),t=function(){x.datepicker._tidyDialog(i)},x.effects&&(x.effects.effect[e]||x.effects[e])?i.dpDiv.hide(e,x.datepicker._get(i,"showOptions"),o,t):i.dpDiv["slideDown"===e?"slideUp":"fadeIn"===e?"fadeOut":"hide"](e?o:null,t),e||t(),this._datepickerShowing=!1,(o=this._get(i,"onClose"))&&o.apply(i.input?i.input[0]:null,[i.input?i.input.val():"",i]),this._lastInput=null,this._inDialog&&(this._dialogInput.css({position:"absolute",left:"0",top:"-100px"}),x.blockUI&&(x.unblockUI(),x("body").append(this.dpDiv))),this._inDialog=!1)},_tidyDialog:function(e){e.dpDiv.removeClass(this._dialogClass).unbind(".ui-datepicker-calendar")},_checkExternalClick:function(e){var t;x.datepicker._curInst&&(e=x(e.target),t=x.datepicker._getInst(e[0]),(!(e[0].id===x.datepicker._mainDivId||0!==e.parents("#"+x.datepicker._mainDivId).length||e.hasClass(x.datepicker.markerClassName)||e.closest("."+x.datepicker._triggerClass).length||!x.datepicker._datepickerShowing||x.datepicker._inDialog&&x.blockUI)||e.hasClass(x.datepicker.markerClassName)&&x.datepicker._curInst!==t)&&x.datepicker._hideDatepicker())},_adjustDate:function(e,t,o){var e=x(e),i=this._getInst(e[0]);this._isDisabledDatepicker(e[0])||(this._adjustInstDate(i,t+("M"===o?this._get(i,"showCurrentAtPos"):0),o),this._updateDatepicker(i))},_gotoToday:function(e){var t,e=x(e),o=this._getInst(e[0]);this._get(o,"gotoCurrent")&&o.currentDay?(o.selectedDay=o.currentDay,o.drawMonth=o.selectedMonth=o.currentMonth,o.drawYear=o.selectedYear=o.currentYear):(t=new Date,o.selectedDay=t.getDate(),o.drawMonth=o.selectedMonth=t.getMonth(),o.drawYear=o.selectedYear=t.getFullYear()),this._notifyChange(o),this._adjustDate(e)},_selectMonthYear:function(e,t,o){var e=x(e),i=this._getInst(e[0]);i["selected"+("M"===o?"Month":"Year")]=i["draw"+("M"===o?"Month":"Year")]=parseInt(t.options[t.selectedIndex].value,10),this._notifyChange(i),this._adjustDate(e)},_selectDay:function(e,t,o,i){var n=x(e);x(i).hasClass(this._unselectableClass)||this._isDisabledDatepicker(n[0])||((n=this._getInst(n[0])).selectedDay=n.currentDay=x("a",i).html(),n.selectedMonth=n.currentMonth=t,n.selectedYear=n.currentYear=o,this._selectDate(e,this._formatDate(n,n.currentDay,n.currentMonth,n.currentYear)))},_clearDate:function(e){e=x(e);this._selectDate(e,"")},_selectDate:function(e,t){var o,e=x(e),e=this._getInst(e[0]);t=null!=t?t:this._formatDate(e),e.input&&e.input.val(t),this._updateAlternate(e),(o=this._get(e,"onSelect"))?o.apply(e.input?e.input[0]:null,[t,e]):e.input&&e.input.trigger("change"),e.inline?this._updateDatepicker(e):(this._hideDatepicker(),this._lastInput=e.input[0],"object"!=typeof e.input[0]&&e.input.focus(),this._lastInput=null)},_updateAlternate:function(e){var t,o,i,n=this._get(e,"altField");n&&(t=this._get(e,"altFormat")||this._get(e,"dateFormat"),o=this._getDate(e),i=this.formatDate(t,o,this._getFormatConfig(e)),x(n).each(function(){x(this).val(i)}))},noWeekends:function(e){e=e.getDay();return[0<e&&e<6,""]},iso8601Week:function(e){var t,e=new Date(e.getTime());return e.setDate(e.getDate()+4-(e.getDay()||7)),t=e.getTime(),e.setMonth(0),e.setDate(1),Math.floor(Math.round((t-e)/864e5)/7)+1},parseDate:function(t,n,e){if(null==t||null==n)throw"Invalid arguments";if(""===(n="object"==typeof n?""+n:n+""))return null;function o(e){var t=y(e),t="@"===e?14:"!"===e?20:"y"===e&&t?4:"o"===e?3:2,e=RegExp("^\\d{"+("y"===e?t:1)+","+t+"}");if(t=n.substring(l).match(e))return l+=t[0].length,parseInt(t[0],10);throw"Missing number at position "+l}function i(e,t,o){var i=-1,e=x.map(y(e)?o:t,function(e,t){return[[t,e]]}).sort(function(e,t){return-(e[1].length-t[1].length)});if(x.each(e,function(e,t){var o=t[1];return n.substr(l,o.length).toLowerCase()===o.toLowerCase()?(i=t[0],l+=o.length,!1):void 0}),-1!==i)return i+1;throw"Unknown name at position "+l}function r(){if(n.charAt(l)!==t.charAt(C))throw"Unexpected literal at position "+l;l++}for(var s,a,l=0,c=(e?e.shortYearCutoff:null)||this._defaults.shortYearCutoff,c="string"!=typeof c?c:(new Date).getFullYear()%100+parseInt(c,10),u=(e?e.dayNamesShort:null)||this._defaults.dayNamesShort,d=(e?e.dayNames:null)||this._defaults.dayNames,h=(e?e.monthNamesShort:null)||this._defaults.monthNamesShort,p=(e?e.monthNames:null)||this._defaults.monthNames,f=-1,m=-1,g=-1,v=-1,b=!1,y=function(e){e=t.length>C+1&&t.charAt(C+1)===e;return e&&C++,e},C=0;t.length>C;C++)if(b)"'"!==t.charAt(C)||y("'")?r():b=!1;else switch(t.charAt(C)){case"d":g=o("d");break;case"D":i("D",u,d);break;case"o":v=o("o");break;case"m":m=o("m");break;case"M":m=i("M",h,p);break;case"y":f=o("y");break;case"@":f=(a=new Date(o("@"))).getFullYear(),m=a.getMonth()+1,g=a.getDate();break;case"!":f=(a=new Date((o("!")-this._ticksTo1970)/1e4)).getFullYear(),m=a.getMonth()+1,g=a.getDate();break;case"'":y("'")?r():b=!0;break;default:r()}if(n.length>l&&(e=n.substr(l),!/^\s+/.test(e)))throw"Extra/unparsed characters found in date: "+e;if(-1===f?f=(new Date).getFullYear():f<100&&(f+=(new Date).getFullYear()-(new Date).getFullYear()%100+(f<=c?0:-100)),-1<v)for(m=1,g=v;!(g<=(s=this._getDaysInMonth(f,m-1)));)m++,g-=s;if((a=this._daylightSavingAdjust(new Date(f,m-1,g))).getFullYear()!==f||a.getMonth()+1!==m||a.getDate()!==g)throw"Invalid date";return a},ATOM:"yy-mm-dd",COOKIE:"D, dd M yy",ISO_8601:"yy-mm-dd",RFC_822:"D, d M y",RFC_850:"DD, dd-M-y",RFC_1036:"D, d M y",RFC_1123:"D, d M yy",RFC_2822:"D, d M yy",RSS:"D, d M y",TICKS:"!",TIMESTAMP:"@",W3C:"yy-mm-dd",_ticksTo1970:864e9*(718685+Math.floor(492.5)-Math.floor(19.7)+Math.floor(4.925)),formatDate:function(t,e,o){if(!e)return"";function i(e,t,o){var i=""+t;if(u(e))for(;o>i.length;)i="0"+i;return i}function n(e,t,o,i){return(u(e)?i:o)[t]}var r,s=(o?o.dayNamesShort:null)||this._defaults.dayNamesShort,a=(o?o.dayNames:null)||this._defaults.dayNames,l=(o?o.monthNamesShort:null)||this._defaults.monthNamesShort,c=(o?o.monthNames:null)||this._defaults.monthNames,u=function(e){e=t.length>r+1&&t.charAt(r+1)===e;return e&&r++,e},d="",h=!1;if(e)for(r=0;t.length>r;r++)if(h)"'"!==t.charAt(r)||u("'")?d+=t.charAt(r):h=!1;else switch(t.charAt(r)){case"d":d+=i("d",e.getDate(),2);break;case"D":d+=n("D",e.getDay(),s,a);break;case"o":d+=i("o",Math.round((new Date(e.getFullYear(),e.getMonth(),e.getDate()).getTime()-new Date(e.getFullYear(),0,0).getTime())/864e5),3);break;case"m":d+=i("m",e.getMonth()+1,2);break;case"M":d+=n("M",e.getMonth(),l,c);break;case"y":d+=u("y")?e.getFullYear():(e.getYear()%100<10?"0":"")+e.getYear()%100;break;case"@":d+=e.getTime();break;case"!":d+=1e4*e.getTime()+this._ticksTo1970;break;case"'":u("'")?d+="'":h=!0;break;default:d+=t.charAt(r)}return d},_possibleChars:function(t){function e(e){return(e=t.length>n+1&&t.charAt(n+1)===e)&&n++,e}for(var o="",i=!1,n=0;t.length>n;n++)if(i)"'"!==t.charAt(n)||e("'")?o+=t.charAt(n):i=!1;else switch(t.charAt(n)){case"d":case"m":case"y":case"@":o+="0123456789";break;case"D":case"M":return null;case"'":e("'")?o+="'":i=!0;break;default:o+=t.charAt(n)}return o},_get:function(e,t){return(void 0!==e.settings[t]?e.settings:this._defaults)[t]},_setDateFromField:function(e,t){if(e.input.val()!==e.lastVal){var o=this._get(e,"dateFormat"),i=e.lastVal=e.input?e.input.val():null,n=this._getDefaultDate(e),r=n,s=this._getFormatConfig(e);try{r=this.parseDate(o,i,s)||n}catch(e){i=t?"":i}e.selectedDay=r.getDate(),e.drawMonth=e.selectedMonth=r.getMonth(),e.drawYear=e.selectedYear=r.getFullYear(),e.currentDay=i?r.getDate():0,e.currentMonth=i?r.getMonth():0,e.currentYear=i?r.getFullYear():0,this._adjustInstDate(e)}},_getDefaultDate:function(e){return this._restrictMinMax(e,this._determineDate(e,this._get(e,"defaultDate"),new Date))},_determineDate:function(a,e,t){var o,i=null==e||""===e?t:"string"==typeof e?function(e){try{return x.datepicker.parseDate(x.datepicker._get(a,"dateFormat"),e,x.datepicker._getFormatConfig(a))}catch(e){}for(var t=(e.toLowerCase().match(/^c/)?x.datepicker._getDate(a):null)||new Date,o=t.getFullYear(),i=t.getMonth(),n=t.getDate(),r=/([+\-]?[0-9]+)\s*(d|D|w|W|m|M|y|Y)?/g,s=r.exec(e);s;){switch(s[2]||"d"){case"d":case"D":n+=parseInt(s[1],10);break;case"w":case"W":n+=7*parseInt(s[1],10);break;case"m":case"M":i+=parseInt(s[1],10),n=Math.min(n,x.datepicker._getDaysInMonth(o,i));break;case"y":case"Y":o+=parseInt(s[1],10),n=Math.min(n,x.datepicker._getDaysInMonth(o,i))}s=r.exec(e)}return new Date(o,i,n)}(e):"number"==typeof e?isNaN(e)?t:(i=e,(o=new Date).setDate(o.getDate()+i),o):new Date(e.getTime());return(i=i&&"Invalid Date"==""+i?t:i)&&(i.setHours(0),i.setMinutes(0),i.setSeconds(0),i.setMilliseconds(0)),this._daylightSavingAdjust(i)},_daylightSavingAdjust:function(e){return e?(e.setHours(12<e.getHours()?e.getHours()+2:0),e):null},_setDate:function(e,t,o){var i=!t,n=e.selectedMonth,r=e.selectedYear,t=this._restrictMinMax(e,this._determineDate(e,t,new Date));e.selectedDay=e.currentDay=t.getDate(),e.drawMonth=e.selectedMonth=e.currentMonth=t.getMonth(),e.drawYear=e.selectedYear=e.currentYear=t.getFullYear(),n===e.selectedMonth&&r===e.selectedYear||o||this._notifyChange(e),this._adjustInstDate(e),e.input&&e.input.val(i?"":this._formatDate(e))},_getDate:function(e){return!e.currentYear||e.input&&""===e.input.val()?null:this._daylightSavingAdjust(new Date(e.currentYear,e.currentMonth,e.currentDay))},_attachHandlers:function(e){var t=this._get(e,"stepMonths"),o="#"+e.id.replace(/\\\\/g,"\\");e.dpDiv.find("[data-handler]").map(function(){var e={prev:function(){x.datepicker._adjustDate(o,-t,"M")},next:function(){x.datepicker._adjustDate(o,+t,"M")},hide:function(){x.datepicker._hideDatepicker()},today:function(){x.datepicker._gotoToday(o)},selectDay:function(){return x.datepicker._selectDay(o,+this.getAttribute("data-month"),+this.getAttribute("data-year"),this),!1},selectMonth:function(){return x.datepicker._selectMonthYear(o,this,"M"),!1},selectYear:function(){return x.datepicker._selectMonthYear(o,this,"Y"),!1}};x(this).bind(this.getAttribute("data-event"),e[this.getAttribute("data-handler")])})},_generateHTML:function(e){var t,o,i,n,r,L,O,z,H,s,a,B,l,c,u,d,h,p,f,m,g,v,U,b,y,C,w,j,V,x,_,S,k=new Date,W=this._daylightSavingAdjust(new Date(k.getFullYear(),k.getMonth(),k.getDate())),T=this._get(e,"isRTL"),k=this._get(e,"showButtonPanel"),F=this._get(e,"hideIfNoPrevNext"),E=this._get(e,"navigationAsDateFormat"),D=this._getNumberOfMonths(e),P=this._get(e,"showCurrentAtPos"),A=this._get(e,"stepMonths"),G=1!==D[0]||1!==D[1],$=this._daylightSavingAdjust(e.currentDay?new Date(e.currentYear,e.currentMonth,e.currentDay):new Date(9999,9,9)),I=this._getMinMaxDate(e,"min"),M=this._getMinMaxDate(e,"max"),R=e.drawMonth-P,N=e.drawYear;if(R<0&&(R+=12,N--),M)for(t=this._daylightSavingAdjust(new Date(M.getFullYear(),M.getMonth()-D[0]*D[1]+1,M.getDate())),t=I&&t<I?I:t;this._daylightSavingAdjust(new Date(N,R,1))>t;)--R<0&&(R=11,N--);for(e.drawMonth=R,e.drawYear=N,P=this._get(e,"prevText"),P=E?this.formatDate(P,this._daylightSavingAdjust(new Date(N,R-A,1)),this._getFormatConfig(e)):P,o=this._canAdjustMonth(e,-1,N,R)?"<a class='ui-datepicker-prev ui-corner-all' data-handler='prev' data-event='click' title='"+P+"'><span class='ui-icon ui-icon-circle-triangle-"+(T?"e":"w")+"'>"+P+"</span></a>":F?"":"<a class='ui-datepicker-prev ui-corner-all ui-state-disabled' title='"+P+"'><span class='ui-icon ui-icon-circle-triangle-"+(T?"e":"w")+"'>"+P+"</span></a>",P=this._get(e,"nextText"),P=E?this.formatDate(P,this._daylightSavingAdjust(new Date(N,R+A,1)),this._getFormatConfig(e)):P,i=this._canAdjustMonth(e,1,N,R)?"<a class='ui-datepicker-next ui-corner-all' data-handler='next' data-event='click' title='"+P+"'><span class='ui-icon ui-icon-circle-triangle-"+(T?"w":"e")+"'>"+P+"</span></a>":F?"":"<a class='ui-datepicker-next ui-corner-all ui-state-disabled' title='"+P+"'><span class='ui-icon ui-icon-circle-triangle-"+(T?"w":"e")+"'>"+P+"</span></a>",A=this._get(e,"currentText"),F=this._get(e,"gotoCurrent")&&e.currentDay?$:W,A=E?this.formatDate(A,F,this._getFormatConfig(e)):A,P=e.inline?"":"<button type='button' class='ui-datepicker-close ui-state-default ui-priority-primary ui-corner-all' data-handler='hide' data-event='click'>"+this._get(e,"closeText")+"</button>",E=k?"<div class='ui-datepicker-buttonpane ui-widget-content'>"+(T?P:"")+(this._isInRange(e,F)?"<button type='button' class='ui-datepicker-current ui-state-default ui-priority-secondary ui-corner-all' data-handler='today' data-event='click'>"+A+"</button>":"")+(T?"":P)+"</div>":"",n=parseInt(this._get(e,"firstDay"),10),n=isNaN(n)?0:n,r=this._get(e,"showWeek"),L=this._get(e,"dayNames"),O=this._get(e,"dayNamesMin"),z=this._get(e,"monthNames"),H=this._get(e,"monthNamesShort"),s=this._get(e,"beforeShowDay"),a=this._get(e,"showOtherMonths"),B=this._get(e,"selectOtherMonths"),l=this._getDefaultDate(e),c="",d=0;D[0]>d;d++){for(h="",this.maxRows=4,p=0;D[1]>p;p++){if(f=this._daylightSavingAdjust(new Date(N,R,e.selectedDay)),m=" ui-corner-all",g="",G){if(g+="<div class='ui-datepicker-group",1<D[1])switch(p){case 0:g+=" ui-datepicker-group-first",m=" ui-corner-"+(T?"right":"left");break;case D[1]-1:g+=" ui-datepicker-group-last",m=" ui-corner-"+(T?"left":"right");break;default:g+=" ui-datepicker-group-middle",m=""}g+="'>"}for(g+="<div class='ui-datepicker-header ui-widget-header ui-helper-clearfix"+m+"'>"+(/all|left/.test(m)&&0===d?T?i:o:"")+(/all|right/.test(m)&&0===d?T?o:i:"")+this._generateMonthYearHeader(e,R,N,I,M,0<d||0<p,z,H)+"</div><table class='ui-datepicker-calendar'><thead><tr>",v=r?"<th class='ui-datepicker-week-col'>"+this._get(e,"weekHeader")+"</th>":"",u=0;u<7;u++)v+="<th scope='col'"+(5<=(u+n+6)%7?" class='ui-datepicker-week-end'":"")+"><span title='"+L[U=(u+n)%7]+"'>"+O[U]+"</span></th>";for(g+=v+"</tr></thead><tbody>",y=this._getDaysInMonth(N,R),N===e.selectedYear&&R===e.selectedMonth&&(e.selectedDay=Math.min(e.selectedDay,y)),b=(this._getFirstDayOfMonth(N,R)-n+7)%7,y=Math.ceil((b+y)/7),C=G&&this.maxRows>y?this.maxRows:y,this.maxRows=C,w=this._daylightSavingAdjust(new Date(N,R,1-b)),j=0;j<C;j++){for(g+="<tr>",V=r?"<td class='ui-datepicker-week-col'>"+this._get(e,"calculateWeek")(w)+"</td>":"",u=0;u<7;u++)x=s?s.apply(e.input?e.input[0]:null,[w]):[!0,""],S=(_=w.getMonth()!==R)&&!B||!x[0]||I&&w<I||M&&M<w,V+="<td class='"+(5<=(u+n+6)%7?" ui-datepicker-week-end":"")+(_?" ui-datepicker-other-month":"")+(w.getTime()===f.getTime()&&R===e.selectedMonth&&e._keyEvent||l.getTime()===w.getTime()&&l.getTime()===f.getTime()?" "+this._dayOverClass:"")+(S?" "+this._unselectableClass+" ui-state-disabled":"")+(_&&!a?"":" "+x[1]+(w.getTime()===$.getTime()?" "+this._currentClass:"")+(w.getTime()===W.getTime()?" ui-datepicker-today":""))+"'"+(_&&!a||!x[2]?"":" title='"+x[2].replace(/'/g,"&#39;")+"'")+(S?"":" data-handler='selectDay' data-event='click' data-month='"+w.getMonth()+"' data-year='"+w.getFullYear()+"'")+">"+(_&&!a?"&#xa0;":S?"<span class='ui-state-default'>"+w.getDate()+"</span>":"<a class='ui-state-default"+(w.getTime()===W.getTime()?" ui-state-highlight":"")+(w.getTime()===$.getTime()?" ui-state-active":"")+(_?" ui-priority-secondary":"")+"' href='#'>"+w.getDate()+"</a>")+"</td>",w.setDate(w.getDate()+1),w=this._daylightSavingAdjust(w);g+=V+"</tr>"}11<++R&&(R=0,N++),h+=g+="</tbody></table>"+(G?"</div>"+(0<D[0]&&p===D[1]-1?"<div class='ui-datepicker-row-break'></div>":""):"")}c+=h}return c+=E,e._keyEvent=!1,c},_generateMonthYearHeader:function(e,t,o,i,n,r,s,a){var l,c,u,d,h,p,f,m=this._get(e,"changeMonth"),g=this._get(e,"changeYear"),v=this._get(e,"showMonthAfterYear"),b="<div class='ui-datepicker-title'>",y="";if(r||!m)y+="<span class='ui-datepicker-month'>"+s[t]+"</span>";else{for(l=i&&i.getFullYear()===o,c=n&&n.getFullYear()===o,y+="<select class='ui-datepicker-month' data-handler='selectMonth' data-event='change'>",u=0;u<12;u++)(!l||u>=i.getMonth())&&(!c||n.getMonth()>=u)&&(y+="<option value='"+u+"'"+(u===t?" selected='selected'":"")+">"+a[u]+"</option>");y+="</select>"}if(v||(b+=y+(!r&&m&&g?"":"&#xa0;")),!e.yearshtml)if(e.yearshtml="",r||!g)b+="<span class='ui-datepicker-year'>"+o+"</span>";else{for(s=this._get(e,"yearRange").split(":"),d=(new Date).getFullYear(),p=(h=function(e){e=e.match(/c[+\-].*/)?o+parseInt(e.substring(1),10):e.match(/[+\-].*/)?d+parseInt(e,10):parseInt(e,10);return isNaN(e)?d:e})(s[0]),f=Math.max(p,h(s[1]||"")),p=i?Math.max(p,i.getFullYear()):p,f=n?Math.min(f,n.getFullYear()):f,e.yearshtml+="<select class='ui-datepicker-year' data-handler='selectYear' data-event='change'>";p<=f;p++)e.yearshtml+="<option value='"+p+"'"+(p===o?" selected='selected'":"")+">"+p+"</option>";e.yearshtml+="</select>",b+=e.yearshtml,e.yearshtml=null}return b+=this._get(e,"yearSuffix"),v&&(b+=(!r&&m&&g?"":"&#xa0;")+y),b+"</div>"},_adjustInstDate:function(e,t,o){var i=e.drawYear+("Y"===o?t:0),n=e.drawMonth+("M"===o?t:0),t=Math.min(e.selectedDay,this._getDaysInMonth(i,n))+("D"===o?t:0),i=this._restrictMinMax(e,this._daylightSavingAdjust(new Date(i,n,t)));e.selectedDay=i.getDate(),e.drawMonth=e.selectedMonth=i.getMonth(),e.drawYear=e.selectedYear=i.getFullYear(),"M"!==o&&"Y"!==o||this._notifyChange(e)},_restrictMinMax:function(e,t){var o=this._getMinMaxDate(e,"min"),e=this._getMinMaxDate(e,"max"),o=o&&t<o?o:t;return e&&e<o?e:o},_notifyChange:function(e){var t=this._get(e,"onChangeMonthYear");t&&t.apply(e.input?e.input[0]:null,[e.selectedYear,e.selectedMonth+1,e])},_getNumberOfMonths:function(e){e=this._get(e,"numberOfMonths");return null==e?[1,1]:"number"==typeof e?[1,e]:e},_getMinMaxDate:function(e,t){return this._determineDate(e,this._get(e,t+"Date"),null)},_getDaysInMonth:function(e,t){return 32-this._daylightSavingAdjust(new Date(e,t,32)).getDate()},_getFirstDayOfMonth:function(e,t){return new Date(e,t,1).getDay()},_canAdjustMonth:function(e,t,o,i){var n=this._getNumberOfMonths(e),o=this._daylightSavingAdjust(new Date(o,i+(t<0?t:n[0]*n[1]),1));return t<0&&o.setDate(this._getDaysInMonth(o.getFullYear(),o.getMonth())),this._isInRange(e,o)},_isInRange:function(e,t){var o,i=this._getMinMaxDate(e,"min"),n=this._getMinMaxDate(e,"max"),r=null,s=null,e=this._get(e,"yearRange");return e&&(e=e.split(":"),o=(new Date).getFullYear(),r=parseInt(e[0],10),s=parseInt(e[1],10),e[0].match(/[+\-].*/)&&(r+=o),e[1].match(/[+\-].*/)&&(s+=o)),(!i||t.getTime()>=i.getTime())&&(!n||t.getTime()<=n.getTime())&&(!r||t.getFullYear()>=r)&&(!s||s>=t.getFullYear())},_getFormatConfig:function(e){var t=this._get(e,"shortYearCutoff");return{shortYearCutoff:t="string"!=typeof t?t:(new Date).getFullYear()%100+parseInt(t,10),dayNamesShort:this._get(e,"dayNamesShort"),dayNames:this._get(e,"dayNames"),monthNamesShort:this._get(e,"monthNamesShort"),monthNames:this._get(e,"monthNames")}},_formatDate:function(e,t,o,i){t||(e.currentDay=e.selectedDay,e.currentMonth=e.selectedMonth,e.currentYear=e.selectedYear);i=t?"object"==typeof t?t:this._daylightSavingAdjust(new Date(i,o,t)):this._daylightSavingAdjust(new Date(e.currentYear,e.currentMonth,e.currentDay));return this.formatDate(this._get(e,"dateFormat"),i,this._getFormatConfig(e))}}),x.fn.datepicker=function(e){if(!this.length)return this;x.datepicker.initialized||(x(document).mousedown(x.datepicker._checkExternalClick),x.datepicker.initialized=!0),0===x("#"+x.datepicker._mainDivId).length&&x("body").append(x.datepicker.dpDiv);var t=Array.prototype.slice.call(arguments,1);return"string"==typeof e&&("isDisabled"===e||"getDate"===e||"widget"===e)||"option"===e&&2===arguments.length&&"string"==typeof arguments[1]?x.datepicker["_"+e+"Datepicker"].apply(x.datepicker,[this[0]].concat(t)):this.each(function(){"string"==typeof e?x.datepicker["_"+e+"Datepicker"].apply(x.datepicker,[this].concat(t)):x.datepicker._attachDatepicker(this,e)})},x.datepicker=new e,x.datepicker.initialized=!1,x.datepicker.uuid=(new Date).getTime(),x.datepicker.version="1.11.4",x.datepicker,x.widget("ui.dialog",{version:"1.11.4",options:{appendTo:"body",autoOpen:!0,buttons:[],closeOnEscape:!0,closeText:"Close",dialogClass:"",draggable:!0,hide:null,height:"auto",maxHeight:null,maxWidth:null,minHeight:150,minWidth:150,modal:!1,position:{my:"center",at:"center",of:window,collision:"fit",using:function(e){var t=x(this).css(e).offset().top;t<0&&x(this).css("top",e.top-t)}},resizable:!0,show:null,title:null,width:300,beforeClose:null,close:null,drag:null,dragStart:null,dragStop:null,focus:null,open:null,resize:null,resizeStart:null,resizeStop:null},sizeRelatedOptions:{buttons:!0,height:!0,maxHeight:!0,maxWidth:!0,minHeight:!0,minWidth:!0,width:!0},resizableRelatedOptions:{maxHeight:!0,maxWidth:!0,minHeight:!0,minWidth:!0},_create:function(){this.originalCss={display:this.element[0].style.display,width:this.element[0].style.width,minHeight:this.element[0].style.minHeight,maxHeight:this.element[0].style.maxHeight,height:this.element[0].style.height},this.originalPosition={parent:this.element.parent(),index:this.element.parent().children().index(this.element)},this.originalTitle=this.element.attr("title"),this.options.title=this.options.title||this.originalTitle,this._createWrapper(),this.element.show().removeAttr("title").addClass("ui-dialog-content ui-widget-content").appendTo(this.uiDialog),this._createTitlebar(),this._createButtonPane(),this.options.draggable&&x.fn.draggable&&this._makeDraggable(),this.options.resizable&&x.fn.resizable&&this._makeResizable(),this._isOpen=!1,this._trackFocus()},_init:function(){this.options.autoOpen&&this.open()},_appendTo:function(){var e=this.options.appendTo;return e&&(e.jquery||e.nodeType)?x(e):this.document.find(e||"body").eq(0)},_destroy:function(){var e,t=this.originalPosition;this._untrackInstance(),this._destroyOverlay(),this.element.removeUniqueId().removeClass("ui-dialog-content ui-widget-content").css(this.originalCss).detach(),this.uiDialog.stop(!0,!0).remove(),this.originalTitle&&this.element.attr("title",this.originalTitle),(e=t.parent.children().eq(t.index)).length&&e[0]!==this.element[0]?e.before(this.element):t.parent.append(this.element)},widget:function(){return this.uiDialog},disable:x.noop,enable:x.noop,close:function(e){var t,o=this;if(this._isOpen&&!1!==this._trigger("beforeClose",e)){if(this._isOpen=!1,this._focusedElement=null,this._destroyOverlay(),this._untrackInstance(),!this.opener.filter(":focusable").focus().length)try{(t=this.document[0].activeElement)&&"body"!==t.nodeName.toLowerCase()&&x(t).blur()}catch(e){}this._hide(this.uiDialog,this.options.hide,function(){o._trigger("close",e)})}},isOpen:function(){return this._isOpen},moveToTop:function(){this._moveToTop()},_moveToTop:function(e,t){var o=!1,i=this.uiDialog.siblings(".ui-front:visible").map(function(){return+x(this).css("z-index")}).get(),i=Math.max.apply(null,i);return i>=+this.uiDialog.css("z-index")&&(this.uiDialog.css("z-index",i+1),o=!0),o&&!t&&this._trigger("focus",e),o},open:function(){var e=this;return this._isOpen?void(this._moveToTop()&&this._focusTabbable()):(this._isOpen=!0,this.opener=x(this.document[0].activeElement),this._size(),this._position(),this._createOverlay(),this._moveToTop(null,!0),this.overlay&&this.overlay.css("z-index",this.uiDialog.css("z-index")-1),this._show(this.uiDialog,this.options.show,function(){e._focusTabbable(),e._trigger("focus")}),this._makeFocusTarget(),void this._trigger("open"))},_focusTabbable:function(){var e=this._focusedElement;(e=(e=(e=(e=(e=e||this.element.find("[autofocus]")).length?e:this.element.find(":tabbable")).length?e:this.uiDialogButtonPane.find(":tabbable")).length?e:this.uiDialogTitlebarClose.filter(":tabbable")).length?e:this.uiDialog).eq(0).focus()},_keepFocus:function(e){function t(){var e=this.document[0].activeElement;this.uiDialog[0]===e||x.contains(this.uiDialog[0],e)||this._focusTabbable()}e.preventDefault(),t.call(this),this._delay(t)},_createWrapper:function(){this.uiDialog=x("<div>").addClass("ui-dialog ui-widget ui-widget-content ui-corner-all ui-front "+this.options.dialogClass).hide().attr({tabIndex:-1,role:"dialog"}).appendTo(this._appendTo()),this._on(this.uiDialog,{keydown:function(e){if(this.options.closeOnEscape&&!e.isDefaultPrevented()&&e.keyCode&&e.keyCode===x.ui.keyCode.ESCAPE)return e.preventDefault(),void this.close(e);var t,o,i;e.keyCode!==x.ui.keyCode.TAB||e.isDefaultPrevented()||(t=this.uiDialog.find(":tabbable"),o=t.filter(":first"),i=t.filter(":last"),e.target!==i[0]&&e.target!==this.uiDialog[0]||e.shiftKey?e.target!==o[0]&&e.target!==this.uiDialog[0]||!e.shiftKey||(this._delay(function(){i.focus()}),e.preventDefault()):(this._delay(function(){o.focus()}),e.preventDefault()))},mousedown:function(e){this._moveToTop(e)&&this._focusTabbable()}}),this.element.find("[aria-describedby]").length||this.uiDialog.attr({"aria-describedby":this.element.uniqueId().attr("id")})},_createTitlebar:function(){var e;this.uiDialogTitlebar=x("<div>").addClass("ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix").prependTo(this.uiDialog),this._on(this.uiDialogTitlebar,{mousedown:function(e){x(e.target).closest(".ui-dialog-titlebar-close")||this.uiDialog.focus()}}),this.uiDialogTitlebarClose=x("<button type='button'></button>").button({label:this.options.closeText,icons:{primary:"ui-icon-closethick"},text:!1}).addClass("ui-dialog-titlebar-close").appendTo(this.uiDialogTitlebar),this._on(this.uiDialogTitlebarClose,{click:function(e){e.preventDefault(),this.close(e)}}),e=x("<span>").uniqueId().addClass("ui-dialog-title").prependTo(this.uiDialogTitlebar),this._title(e),this.uiDialog.attr({"aria-labelledby":e.attr("id")})},_title:function(e){this.options.title||e.html("&#160;"),e.text(this.options.title)},_createButtonPane:function(){this.uiDialogButtonPane=x("<div>").addClass("ui-dialog-buttonpane ui-widget-content ui-helper-clearfix"),this.uiButtonSet=x("<div>").addClass("ui-dialog-buttonset").appendTo(this.uiDialogButtonPane),this._createButtons()},_createButtons:function(){var i=this,e=this.options.buttons;return this.uiDialogButtonPane.remove(),this.uiButtonSet.empty(),x.isEmptyObject(e)||x.isArray(e)&&!e.length?void this.uiDialog.removeClass("ui-dialog-buttons"):(x.each(e,function(e,t){var o;t=x.isFunction(t)?{click:t,text:e}:t,t=x.extend({type:"button"},t),o=t.click,t.click=function(){o.apply(i.element[0],arguments)},e={icons:t.icons,text:t.showText},delete t.icons,delete t.showText,x("<button></button>",t).button(e).appendTo(i.uiButtonSet)}),this.uiDialog.addClass("ui-dialog-buttons"),void this.uiDialogButtonPane.appendTo(this.uiDialog))},_makeDraggable:function(){function n(e){return{position:e.position,offset:e.offset}}var r=this,s=this.options;this.uiDialog.draggable({cancel:".ui-dialog-content, .ui-dialog-titlebar-close",handle:".ui-dialog-titlebar",containment:"document",start:function(e,t){x(this).addClass("ui-dialog-dragging"),r._blockFrames(),r._trigger("dragStart",e,n(t))},drag:function(e,t){r._trigger("drag",e,n(t))},stop:function(e,t){var o=t.offset.left-r.document.scrollLeft(),i=t.offset.top-r.document.scrollTop();s.position={my:"left top",at:"left"+(0<=o?"+":"")+o+" top"+(0<=i?"+":"")+i,of:r.window},x(this).removeClass("ui-dialog-dragging"),r._unblockFrames(),r._trigger("dragStop",e,n(t))}})},_makeResizable:function(){function n(e){return{originalPosition:e.originalPosition,originalSize:e.originalSize,position:e.position,size:e.size}}var r=this,s=this.options,e=s.resizable,t=this.uiDialog.css("position"),e="string"==typeof e?e:"n,e,s,w,se,sw,ne,nw";this.uiDialog.resizable({cancel:".ui-dialog-content",containment:"document",alsoResize:this.element,maxWidth:s.maxWidth,maxHeight:s.maxHeight,minWidth:s.minWidth,minHeight:this._minHeight(),handles:e,start:function(e,t){x(this).addClass("ui-dialog-resizing"),r._blockFrames(),r._trigger("resizeStart",e,n(t))},resize:function(e,t){r._trigger("resize",e,n(t))},stop:function(e,t){var o=r.uiDialog.offset(),i=o.left-r.document.scrollLeft(),o=o.top-r.document.scrollTop();s.height=r.uiDialog.height(),s.width=r.uiDialog.width(),s.position={my:"left top",at:"left"+(0<=i?"+":"")+i+" top"+(0<=o?"+":"")+o,of:r.window},x(this).removeClass("ui-dialog-resizing"),r._unblockFrames(),r._trigger("resizeStop",e,n(t))}}).css("position",t)},_trackFocus:function(){this._on(this.widget(),{focusin:function(e){this._makeFocusTarget(),this._focusedElement=x(e.target)}})},_makeFocusTarget:function(){this._untrackInstance(),this._trackingInstances().unshift(this)},_untrackInstance:function(){var e=this._trackingInstances(),t=x.inArray(this,e);-1!==t&&e.splice(t,1)},_trackingInstances:function(){var e=this.document.data("ui-dialog-instances");return e||this.document.data("ui-dialog-instances",e=[]),e},_minHeight:function(){var e=this.options;return"auto"===e.height?e.minHeight:Math.min(e.minHeight,e.height)},_position:function(){var e=this.uiDialog.is(":visible");e||this.uiDialog.show(),this.uiDialog.position(this.options.position),e||this.uiDialog.hide()},_setOptions:function(e){var o=this,i=!1,n={};x.each(e,function(e,t){o._setOption(e,t),e in o.sizeRelatedOptions&&(i=!0),e in o.resizableRelatedOptions&&(n[e]=t)}),i&&(this._size(),this._position()),this.uiDialog.is(":data(ui-resizable)")&&this.uiDialog.resizable("option",n)},_setOption:function(e,t){var o,i=this.uiDialog;"dialogClass"===e&&i.removeClass(this.options.dialogClass).addClass(t),"disabled"!==e&&(this._super(e,t),"appendTo"===e&&this.uiDialog.appendTo(this._appendTo()),"buttons"===e&&this._createButtons(),"closeText"===e&&this.uiDialogTitlebarClose.button({label:""+t}),"draggable"===e&&((o=i.is(":data(ui-draggable)"))&&!t&&i.draggable("destroy"),!o&&t&&this._makeDraggable()),"position"===e&&this._position(),"resizable"===e&&((o=i.is(":data(ui-resizable)"))&&!t&&i.resizable("destroy"),o&&"string"==typeof t&&i.resizable("option","handles",t),o||!1===t||this._makeResizable()),"title"===e&&this._title(this.uiDialogTitlebar.find(".ui-dialog-title")))},_size:function(){var e,t,o,i=this.options;this.element.show().css({width:"auto",minHeight:0,maxHeight:"none",height:0}),i.minWidth>i.width&&(i.width=i.minWidth),e=this.uiDialog.css({height:"auto",width:i.width}).outerHeight(),t=Math.max(0,i.minHeight-e),o="number"==typeof i.maxHeight?Math.max(0,i.maxHeight-e):"none","auto"===i.height?this.element.css({minHeight:t,maxHeight:o,height:"auto"}):this.element.height(Math.max(0,i.height-e)),this.uiDialog.is(":data(ui-resizable)")&&this.uiDialog.resizable("option","minHeight",this._minHeight())},_blockFrames:function(){this.iframeBlocks=this.document.find("iframe").map(function(){var e=x(this);return x("<div>").css({position:"absolute",width:e.outerWidth(),height:e.outerHeight()}).appendTo(e.parent()).offset(e.offset())[0]})},_unblockFrames:function(){this.iframeBlocks&&(this.iframeBlocks.remove(),delete this.iframeBlocks)},_allowInteraction:function(e){return!!x(e.target).closest(".ui-dialog").length||!!x(e.target).closest(".ui-datepicker").length},_createOverlay:function(){var t;this.options.modal&&(t=!0,this._delay(function(){t=!1}),this.document.data("ui-dialog-overlays")||this._on(this.document,{focusin:function(e){t||this._allowInteraction(e)||(e.preventDefault(),this._trackingInstances()[0]._focusTabbable())}}),this.overlay=x("<div>").addClass("ui-widget-overlay ui-front").appendTo(this._appendTo()),this._on(this.overlay,{mousedown:"_keepFocus"}),this.document.data("ui-dialog-overlays",(this.document.data("ui-dialog-overlays")||0)+1))},_destroyOverlay:function(){var e;this.options.modal&&this.overlay&&((e=this.document.data("ui-dialog-overlays")-1)?this.document.data("ui-dialog-overlays",e):this.document.unbind("focusin").removeData("ui-dialog-overlays"),this.overlay.remove(),this.overlay=null)}}),x.widget("ui.progressbar",{version:"1.11.4",options:{max:100,value:0,change:null,complete:null},min:0,_create:function(){this.oldValue=this.options.value=this._constrainedValue(),this.element.addClass("ui-progressbar ui-widget ui-widget-content ui-corner-all").attr({role:"progressbar","aria-valuemin":this.min}),this.valueDiv=x("<div class='ui-progressbar-value ui-widget-header ui-corner-left'></div>").appendTo(this.element),this._refreshValue()},_destroy:function(){this.element.removeClass("ui-progressbar ui-widget ui-widget-content ui-corner-all").removeAttr("role").removeAttr("aria-valuemin").removeAttr("aria-valuemax").removeAttr("aria-valuenow"),this.valueDiv.remove()},value:function(e){return void 0===e?this.options.value:(this.options.value=this._constrainedValue(e),void this._refreshValue())},_constrainedValue:function(e){return void 0===e&&(e=this.options.value),this.indeterminate=!1===e,"number"!=typeof e&&(e=0),!this.indeterminate&&Math.min(this.options.max,Math.max(this.min,e))},_setOptions:function(e){var t=e.value;delete e.value,this._super(e),this.options.value=this._constrainedValue(t),this._refreshValue()},_setOption:function(e,t){"max"===e&&(t=Math.max(this.min,t)),"disabled"===e&&this.element.toggleClass("ui-state-disabled",!!t).attr("aria-disabled",t),this._super(e,t)},_percentage:function(){return this.indeterminate?100:100*(this.options.value-this.min)/(this.options.max-this.min)},_refreshValue:function(){var e=this.options.value,t=this._percentage();this.valueDiv.toggle(this.indeterminate||e>this.min).toggleClass("ui-corner-right",e===this.options.max).width(t.toFixed(0)+"%"),this.element.toggleClass("ui-progressbar-indeterminate",this.indeterminate),this.indeterminate?(this.element.removeAttr("aria-valuenow"),this.overlayDiv||(this.overlayDiv=x("<div class='ui-progressbar-overlay'></div>").appendTo(this.valueDiv))):(this.element.attr({"aria-valuemax":this.options.max,"aria-valuenow":e}),this.overlayDiv&&(this.overlayDiv.remove(),this.overlayDiv=null)),this.oldValue!==e&&(this.oldValue=e,this._trigger("change")),e===this.options.max&&this._trigger("complete")}}),x.widget("ui.selectmenu",{version:"1.11.4",defaultElement:"<select>",options:{appendTo:null,disabled:null,icons:{button:"ui-icon-triangle-1-s"},position:{my:"left top",at:"left bottom",collision:"none"},width:null,change:null,close:null,focus:null,open:null,select:null},_create:function(){var e=this.element.uniqueId().attr("id");this.ids={element:e,button:e+"-button",menu:e+"-menu"},this._drawButton(),this._drawMenu(),this.options.disabled&&this.disable()},_drawButton:function(){var e=this;this.label=x("label[for='"+this.ids.element+"']").attr("for",this.ids.button),this._on(this.label,{click:function(e){this.button.focus(),e.preventDefault()}}),this.element.hide(),this.button=x("<span>",{class:"ui-selectmenu-button ui-widget ui-state-default ui-corner-all",tabindex:this.options.disabled?-1:0,id:this.ids.button,role:"combobox","aria-expanded":"false","aria-autocomplete":"list","aria-owns":this.ids.menu,"aria-haspopup":"true"}).insertAfter(this.element),x("<span>",{class:"ui-icon "+this.options.icons.button}).prependTo(this.button),this.buttonText=x("<span>",{class:"ui-selectmenu-text"}).appendTo(this.button),this._setText(this.buttonText,this.element.find("option:selected").text()),this._resizeButton(),this._on(this.button,this._buttonEvents),this.button.one("focusin",function(){e.menuItems||e._refreshMenu()}),this._hoverable(this.button),this._focusable(this.button)},_drawMenu:function(){var o=this;this.menu=x("<ul>",{"aria-hidden":"true","aria-labelledby":this.ids.button,id:this.ids.menu}),this.menuWrap=x("<div>",{class:"ui-selectmenu-menu ui-front"}).append(this.menu).appendTo(this._appendTo()),this.menuInstance=this.menu.menu({role:"listbox",select:function(e,t){e.preventDefault(),o._setSelection(),o._select(t.item.data("ui-selectmenu-item"),e)},focus:function(e,t){t=t.item.data("ui-selectmenu-item");null!=o.focusIndex&&t.index!==o.focusIndex&&(o._trigger("focus",e,{item:t}),o.isOpen||o._select(t,e)),o.focusIndex=t.index,o.button.attr("aria-activedescendant",o.menuItems.eq(t.index).attr("id"))}}).menu("instance"),this.menu.addClass("ui-corner-bottom").removeClass("ui-corner-all"),this.menuInstance._off(this.menu,"mouseleave"),this.menuInstance._closeOnDocumentClick=function(){return!1},this.menuInstance._isDivider=function(){return!1}},refresh:function(){this._refreshMenu(),this._setText(this.buttonText,this._getSelectedItem().text()),this.options.width||this._resizeButton()},_refreshMenu:function(){this.menu.empty();var e=this.element.find("option");e.length&&(this._parseOptions(e),this._renderMenu(this.menu,this.items),this.menuInstance.refresh(),this.menuItems=this.menu.find("li").not(".ui-selectmenu-optgroup"),e=this._getSelectedItem(),this.menuInstance.focus(null,e),this._setAria(e.data("ui-selectmenu-item")),this._setOption("disabled",this.element.prop("disabled")))},open:function(e){this.options.disabled||(this.menuItems?(this.menu.find(".ui-state-focus").removeClass("ui-state-focus"),this.menuInstance.focus(null,this._getSelectedItem())):this._refreshMenu(),this.isOpen=!0,this._toggleAttr(),this._resizeMenu(),this._position(),this._on(this.document,this._documentClick),this._trigger("open",e))},_position:function(){this.menuWrap.position(x.extend({of:this.button},this.options.position))},close:function(e){this.isOpen&&(this.isOpen=!1,this._toggleAttr(),this.range=null,this._off(this.document),this._trigger("close",e))},widget:function(){return this.button},menuWidget:function(){return this.menu},_renderMenu:function(o,e){var i=this,n="";x.each(e,function(e,t){t.optgroup!==n&&(x("<li>",{class:"ui-selectmenu-optgroup ui-menu-divider"+(t.element.parent("optgroup").prop("disabled")?" ui-state-disabled":""),text:t.optgroup}).appendTo(o),n=t.optgroup),i._renderItemData(o,t)})},_renderItemData:function(e,t){return this._renderItem(e,t).data("ui-selectmenu-item",t)},_renderItem:function(e,t){var o=x("<li>");return t.disabled&&o.addClass("ui-state-disabled"),this._setText(o,t.label),o.appendTo(e)},_setText:function(e,t){t?e.text(t):e.html("&#160;")},_move:function(e,t){var o,i=".ui-menu-item";this.isOpen?o=this.menuItems.eq(this.focusIndex):(o=this.menuItems.eq(this.element[0].selectedIndex),i+=":not(.ui-state-disabled)"),(o="first"===e||"last"===e?o["first"===e?"prevAll":"nextAll"](i).eq(-1):o[e+"All"](i).eq(0)).length&&this.menuInstance.focus(t,o)},_getSelectedItem:function(){return this.menuItems.eq(this.element[0].selectedIndex)},_toggle:function(e){this[this.isOpen?"close":"open"](e)},_setSelection:function(){var e;this.range&&(window.getSelection?((e=window.getSelection()).removeAllRanges(),e.addRange(this.range)):this.range.select(),this.button.focus())},_documentClick:{mousedown:function(e){!this.isOpen||x(e.target).closest(".ui-selectmenu-menu, #"+this.ids.button).length||this.close(e)}},_buttonEvents:{mousedown:function(){var e;window.getSelection?(e=window.getSelection()).rangeCount&&(this.range=e.getRangeAt(0)):this.range=document.selection.createRange()},click:function(e){this._setSelection(),this._toggle(e)},keydown:function(e){var t=!0;switch(e.keyCode){case x.ui.keyCode.TAB:case x.ui.keyCode.ESCAPE:this.close(e),t=!1;break;case x.ui.keyCode.ENTER:this.isOpen&&this._selectFocusedItem(e);break;case x.ui.keyCode.UP:e.altKey?this._toggle(e):this._move("prev",e);break;case x.ui.keyCode.DOWN:e.altKey?this._toggle(e):this._move("next",e);break;case x.ui.keyCode.SPACE:this.isOpen?this._selectFocusedItem(e):this._toggle(e);break;case x.ui.keyCode.LEFT:this._move("prev",e);break;case x.ui.keyCode.RIGHT:this._move("next",e);break;case x.ui.keyCode.HOME:case x.ui.keyCode.PAGE_UP:this._move("first",e);break;case x.ui.keyCode.END:case x.ui.keyCode.PAGE_DOWN:this._move("last",e);break;default:this.menu.trigger(e),t=!1}t&&e.preventDefault()}},_selectFocusedItem:function(e){var t=this.menuItems.eq(this.focusIndex);t.hasClass("ui-state-disabled")||this._select(t.data("ui-selectmenu-item"),e)},_select:function(e,t){var o=this.element[0].selectedIndex;this.element[0].selectedIndex=e.index,this._setText(this.buttonText,e.label),this._setAria(e),this._trigger("select",t,{item:e}),e.index!==o&&this._trigger("change",t,{item:e}),this.close(t)},_setAria:function(e){e=this.menuItems.eq(e.index).attr("id");this.button.attr({"aria-labelledby":e,"aria-activedescendant":e}),this.menu.attr("aria-activedescendant",e)},_setOption:function(e,t){"icons"===e&&this.button.find("span.ui-icon").removeClass(this.options.icons.button).addClass(t.button),this._super(e,t),"appendTo"===e&&this.menuWrap.appendTo(this._appendTo()),"disabled"===e&&(this.menuInstance.option("disabled",t),this.button.toggleClass("ui-state-disabled",t).attr("aria-disabled",t),this.element.prop("disabled",t),t?(this.button.attr("tabindex",-1),this.close()):this.button.attr("tabindex",0)),"width"===e&&this._resizeButton()},_appendTo:function(){var e=this.options.appendTo;return e=(e=(e=e&&(e.jquery||e.nodeType?x(e):this.document.find(e).eq(0)))&&e[0]?e:this.element.closest(".ui-front")).length?e:this.document[0].body},_toggleAttr:function(){this.button.toggleClass("ui-corner-top",this.isOpen).toggleClass("ui-corner-all",!this.isOpen).attr("aria-expanded",this.isOpen),this.menuWrap.toggleClass("ui-selectmenu-open",this.isOpen),this.menu.attr("aria-hidden",!this.isOpen)},_resizeButton:function(){var e=this.options.width;e||(e=this.element.show().outerWidth(),this.element.hide()),this.button.outerWidth(e)},_resizeMenu:function(){this.menu.outerWidth(Math.max(this.button.outerWidth(),this.menu.width("").outerWidth()+1))},_getCreateOptions:function(){return{disabled:this.element.prop("disabled")}},_parseOptions:function(e){var i=[];e.each(function(e,t){var t=x(t),o=t.parent("optgroup");i.push({element:t,index:e,value:t.val(),label:t.text(),optgroup:o.attr("label")||"",disabled:o.prop("disabled")||t.prop("disabled")})}),this.items=i},_destroy:function(){this.menuWrap.remove(),this.button.remove(),this.element.show(),this.element.removeUniqueId(),this.label.attr("for",this.ids.element)}}),x.widget("ui.slider",x.ui.mouse,{version:"1.11.4",widgetEventPrefix:"slide",options:{animate:!1,distance:0,max:100,min:0,orientation:"horizontal",range:!1,step:1,value:0,values:null,change:null,slide:null,start:null,stop:null},numPages:5,_create:function(){this._keySliding=!1,this._mouseSliding=!1,this._animateOff=!0,this._handleIndex=null,this._detectOrientation(),this._mouseInit(),this._calculateNewMax(),this.element.addClass("ui-slider ui-slider-"+this.orientation+" ui-widget ui-widget-content ui-corner-all"),this._refresh(),this._setOption("disabled",this.options.disabled),this._animateOff=!1},_refresh:function(){this._createRange(),this._createHandles(),this._setupEvents(),this._refreshValue()},_createHandles:function(){var e,t=this.options,o=this.element.find(".ui-slider-handle").addClass("ui-state-default ui-corner-all"),i=[],n=t.values&&t.values.length||1;for(o.length>n&&(o.slice(n).remove(),o=o.slice(0,n)),e=o.length;e<n;e++)i.push("<span class='ui-slider-handle ui-state-default ui-corner-all' tabindex='0'></span>");this.handles=o.add(x(i.join("")).appendTo(this.element)),this.handle=this.handles.eq(0),this.handles.each(function(e){x(this).data("ui-slider-handle-index",e)})},_createRange:function(){var e=this.options,t="";e.range?(!0===e.range&&(e.values?e.values.length&&2!==e.values.length?e.values=[e.values[0],e.values[0]]:x.isArray(e.values)&&(e.values=e.values.slice(0)):e.values=[this._valueMin(),this._valueMin()]),this.range&&this.range.length?this.range.removeClass("ui-slider-range-min ui-slider-range-max").css({left:"",bottom:""}):(this.range=x("<div></div>").appendTo(this.element),t="ui-slider-range ui-widget-header ui-corner-all"),this.range.addClass(t+("min"===e.range||"max"===e.range?" ui-slider-range-"+e.range:""))):(this.range&&this.range.remove(),this.range=null)},_setupEvents:function(){this._off(this.handles),this._on(this.handles,this._handleEvents),this._hoverable(this.handles),this._focusable(this.handles)},_destroy:function(){this.handles.remove(),this.range&&this.range.remove(),this.element.removeClass("ui-slider ui-slider-horizontal ui-slider-vertical ui-widget ui-widget-content ui-corner-all"),this._mouseDestroy()},_mouseCapture:function(e){var o,i,n,r,t,s,a=this,l=this.options;return!l.disabled&&(this.elementSize={width:this.element.outerWidth(),height:this.element.outerHeight()},this.elementOffset=this.element.offset(),t={x:e.pageX,y:e.pageY},o=this._normValueFromMouse(t),i=this._valueMax()-this._valueMin()+1,this.handles.each(function(e){var t=Math.abs(o-a.values(e));(t<i||i===t&&(e===a._lastChangedValue||a.values(e)===l.min))&&(i=t,n=x(this),r=e)}),!1!==this._start(e,r)&&(this._mouseSliding=!0,this._handleIndex=r,n.addClass("ui-state-active").focus(),t=n.offset(),s=!x(e.target).parents().addBack().is(".ui-slider-handle"),this._clickOffset=s?{left:0,top:0}:{left:e.pageX-t.left-n.width()/2,top:e.pageY-t.top-n.height()/2-(parseInt(n.css("borderTopWidth"),10)||0)-(parseInt(n.css("borderBottomWidth"),10)||0)+(parseInt(n.css("marginTop"),10)||0)},this.handles.hasClass("ui-state-hover")||this._slide(e,r,o),this._animateOff=!0))},_mouseStart:function(){return!0},_mouseDrag:function(e){var t={x:e.pageX,y:e.pageY},t=this._normValueFromMouse(t);return this._slide(e,this._handleIndex,t),!1},_mouseStop:function(e){return this.handles.removeClass("ui-state-active"),this._mouseSliding=!1,this._stop(e,this._handleIndex),this._change(e,this._handleIndex),this._handleIndex=null,this._clickOffset=null,this._animateOff=!1},_detectOrientation:function(){this.orientation="vertical"===this.options.orientation?"vertical":"horizontal"},_normValueFromMouse:function(e){var t,e="horizontal"===this.orientation?(t=this.elementSize.width,e.x-this.elementOffset.left-(this._clickOffset?this._clickOffset.left:0)):(t=this.elementSize.height,e.y-this.elementOffset.top-(this._clickOffset?this._clickOffset.top:0)),e=e/t;return(e=1<e?1:e)<0&&(e=0),"vertical"===this.orientation&&(e=1-e),t=this._valueMax()-this._valueMin(),e=this._valueMin()+e*t,this._trimAlignValue(e)},_start:function(e,t){var o={handle:this.handles[t],value:this.value()};return this.options.values&&this.options.values.length&&(o.value=this.values(t),o.values=this.values()),this._trigger("start",e,o)},_slide:function(e,t,o){var i,n;this.options.values&&this.options.values.length?(i=this.values(t?0:1),(o=2===this.options.values.length&&!0===this.options.range&&(0===t&&i<o||1===t&&o<i)?i:o)!==this.values(t)&&((n=this.values())[t]=o,n=this._trigger("slide",e,{handle:this.handles[t],value:o,values:n}),i=this.values(t?0:1),!1!==n&&this.values(t,o))):o===this.value()||!1!==(n=this._trigger("slide",e,{handle:this.handles[t],value:o}))&&this.value(o)},_stop:function(e,t){var o={handle:this.handles[t],value:this.value()};this.options.values&&this.options.values.length&&(o.value=this.values(t),o.values=this.values()),this._trigger("stop",e,o)},_change:function(e,t){var o;this._keySliding||this._mouseSliding||(o={handle:this.handles[t],value:this.value()},this.options.values&&this.options.values.length&&(o.value=this.values(t),o.values=this.values()),this._lastChangedValue=t,this._trigger("change",e,o))},value:function(e){return arguments.length?(this.options.value=this._trimAlignValue(e),this._refreshValue(),void this._change(null,0)):this._value()},values:function(e,t){var o,i,n;if(1<arguments.length)return this.options.values[e]=this._trimAlignValue(t),this._refreshValue(),void this._change(null,e);if(!arguments.length)return this._values();if(!x.isArray(e))return this.options.values&&this.options.values.length?this._values(e):this.value();for(o=this.options.values,i=e,n=0;o.length>n;n+=1)o[n]=this._trimAlignValue(i[n]),this._change(null,n);this._refreshValue()},_setOption:function(e,t){var o,i=0;switch("range"===e&&!0===this.options.range&&("min"===t?(this.options.value=this._values(0),this.options.values=null):"max"===t&&(this.options.value=this._values(this.options.values.length-1),this.options.values=null)),x.isArray(this.options.values)&&(i=this.options.values.length),"disabled"===e&&this.element.toggleClass("ui-state-disabled",!!t),this._super(e,t),e){case"orientation":this._detectOrientation(),this.element.removeClass("ui-slider-horizontal ui-slider-vertical").addClass("ui-slider-"+this.orientation),this._refreshValue(),this.handles.css("horizontal"===t?"bottom":"left","");break;case"value":this._animateOff=!0,this._refreshValue(),this._change(null,0),this._animateOff=!1;break;case"values":for(this._animateOff=!0,this._refreshValue(),o=0;o<i;o+=1)this._change(null,o);this._animateOff=!1;break;case"step":case"min":case"max":this._animateOff=!0,this._calculateNewMax(),this._refreshValue(),this._animateOff=!1;break;case"range":this._animateOff=!0,this._refresh(),this._animateOff=!1}},_value:function(){var e=this.options.value;return this._trimAlignValue(e)},_values:function(e){var t,o,i;if(arguments.length)return t=this.options.values[e],this._trimAlignValue(t);if(this.options.values&&this.options.values.length){for(o=this.options.values.slice(),i=0;o.length>i;i+=1)o[i]=this._trimAlignValue(o[i]);return o}return[]},_trimAlignValue:function(e){if(this._valueMin()>=e)return this._valueMin();if(e>=this._valueMax())return this._valueMax();var t=0<this.options.step?this.options.step:1,o=(e-this._valueMin())%t,e=e-o;return 2*Math.abs(o)>=t&&(e+=0<o?t:-t),parseFloat(e.toFixed(5))},_calculateNewMax:function(){var e=this.options.max,t=this._valueMin(),o=this.options.step,e=Math.floor(+(e-t).toFixed(this._precision())/o)*o+t;this.max=parseFloat(e.toFixed(this._precision()))},_precision:function(){var e=this._precisionOf(this.options.step);return e=null!==this.options.min?Math.max(e,this._precisionOf(this.options.min)):e},_precisionOf:function(e){var e=""+e,t=e.indexOf(".");return-1===t?0:e.length-t-1},_valueMin:function(){return this.options.min},_valueMax:function(){return this.max},_refreshValue:function(){var t,o,e,i,n,r=this.options.range,s=this.options,a=this,l=!this._animateOff&&s.animate,c={};this.options.values&&this.options.values.length?this.handles.each(function(e){o=(a.values(e)-a._valueMin())/(a._valueMax()-a._valueMin())*100,c["horizontal"===a.orientation?"left":"bottom"]=o+"%",x(this).stop(1,1)[l?"animate":"css"](c,s.animate),!0===a.options.range&&("horizontal"===a.orientation?(0===e&&a.range.stop(1,1)[l?"animate":"css"]({left:o+"%"},s.animate),1===e&&a.range[l?"animate":"css"]({width:o-t+"%"},{queue:!1,duration:s.animate})):(0===e&&a.range.stop(1,1)[l?"animate":"css"]({bottom:o+"%"},s.animate),1===e&&a.range[l?"animate":"css"]({height:o-t+"%"},{queue:!1,duration:s.animate}))),t=o}):(e=this.value(),i=this._valueMin(),n=this._valueMax(),o=n!==i?(e-i)/(n-i)*100:0,c["horizontal"===this.orientation?"left":"bottom"]=o+"%",this.handle.stop(1,1)[l?"animate":"css"](c,s.animate),"min"===r&&"horizontal"===this.orientation&&this.range.stop(1,1)[l?"animate":"css"]({width:o+"%"},s.animate),"max"===r&&"horizontal"===this.orientation&&this.range[l?"animate":"css"]({width:100-o+"%"},{queue:!1,duration:s.animate}),"min"===r&&"vertical"===this.orientation&&this.range.stop(1,1)[l?"animate":"css"]({height:o+"%"},s.animate),"max"===r&&"vertical"===this.orientation&&this.range[l?"animate":"css"]({height:100-o+"%"},{queue:!1,duration:s.animate}))},_handleEvents:{keydown:function(e){var t,o,i,n=x(e.target).data("ui-slider-handle-index");switch(e.keyCode){case x.ui.keyCode.HOME:case x.ui.keyCode.END:case x.ui.keyCode.PAGE_UP:case x.ui.keyCode.PAGE_DOWN:case x.ui.keyCode.UP:case x.ui.keyCode.RIGHT:case x.ui.keyCode.DOWN:case x.ui.keyCode.LEFT:if(e.preventDefault(),!this._keySliding&&(this._keySliding=!0,x(e.target).addClass("ui-state-active"),!1===this._start(e,n)))return}switch(i=this.options.step,t=o=this.options.values&&this.options.values.length?this.values(n):this.value(),e.keyCode){case x.ui.keyCode.HOME:o=this._valueMin();break;case x.ui.keyCode.END:o=this._valueMax();break;case x.ui.keyCode.PAGE_UP:o=this._trimAlignValue(t+(this._valueMax()-this._valueMin())/this.numPages);break;case x.ui.keyCode.PAGE_DOWN:o=this._trimAlignValue(t-(this._valueMax()-this._valueMin())/this.numPages);break;case x.ui.keyCode.UP:case x.ui.keyCode.RIGHT:if(t===this._valueMax())return;o=this._trimAlignValue(t+i);break;case x.ui.keyCode.DOWN:case x.ui.keyCode.LEFT:if(t===this._valueMin())return;o=this._trimAlignValue(t-i)}this._slide(e,n,o)},keyup:function(e){var t=x(e.target).data("ui-slider-handle-index");this._keySliding&&(this._keySliding=!1,this._stop(e,t),this._change(e,t),x(e.target).removeClass("ui-state-active"))}}}),x.widget("ui.spinner",{version:"1.11.4",defaultElement:"<input>",widgetEventPrefix:"spin",options:{culture:null,icons:{down:"ui-icon-triangle-1-s",up:"ui-icon-triangle-1-n"},incremental:!0,max:null,min:null,numberFormat:null,page:10,step:1,change:null,spin:null,start:null,stop:null},_create:function(){this._setOption("max",this.options.max),this._setOption("min",this.options.min),this._setOption("step",this.options.step),""!==this.value()&&this._value(this.element.val(),!0),this._draw(),this._on(this._events),this._refresh(),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_getCreateOptions:function(){var i={},n=this.element;return x.each(["min","max","step"],function(e,t){var o=n.attr(t);void 0!==o&&o.length&&(i[t]=o)}),i},_events:{keydown:function(e){this._start(e)&&this._keydown(e)&&e.preventDefault()},keyup:"_stop",focus:function(){this.previous=this.element.val()},blur:function(e){return this.cancelBlur?void delete this.cancelBlur:(this._stop(),this._refresh(),void(this.previous!==this.element.val()&&this._trigger("change",e)))},mousewheel:function(e,t){if(t){if(!this.spinning&&!this._start(e))return!1;this._spin((0<t?1:-1)*this.options.step,e),clearTimeout(this.mousewheelTimer),this.mousewheelTimer=this._delay(function(){this.spinning&&this._stop(e)},100),e.preventDefault()}},"mousedown .ui-spinner-button":function(e){function t(){this.element[0]!==this.document[0].activeElement&&(this.element.focus(),this.previous=o,this._delay(function(){this.previous=o}))}var o=this.element[0]===this.document[0].activeElement?this.previous:this.element.val();e.preventDefault(),t.call(this),this.cancelBlur=!0,this._delay(function(){delete this.cancelBlur,t.call(this)}),!1!==this._start(e)&&this._repeat(null,x(e.currentTarget).hasClass("ui-spinner-up")?1:-1,e)},"mouseup .ui-spinner-button":"_stop","mouseenter .ui-spinner-button":function(e){return x(e.currentTarget).hasClass("ui-state-active")?!1!==this._start(e)&&void this._repeat(null,x(e.currentTarget).hasClass("ui-spinner-up")?1:-1,e):void 0},"mouseleave .ui-spinner-button":"_stop"},_draw:function(){var e=this.uiSpinner=this.element.addClass("ui-spinner-input").attr("autocomplete","off").wrap(this._uiSpinnerHtml()).parent().append(this._buttonHtml());this.element.attr("role","spinbutton"),this.buttons=e.find(".ui-spinner-button").attr("tabIndex",-1).button().removeClass("ui-corner-all"),this.buttons.height()>Math.ceil(.5*e.height())&&0<e.height()&&e.height(e.height()),this.options.disabled&&this.disable()},_keydown:function(e){var t=this.options,o=x.ui.keyCode;switch(e.keyCode){case o.UP:return this._repeat(null,1,e),!0;case o.DOWN:return this._repeat(null,-1,e),!0;case o.PAGE_UP:return this._repeat(null,t.page,e),!0;case o.PAGE_DOWN:return this._repeat(null,-t.page,e),!0}return!1},_uiSpinnerHtml:function(){return"<span class='ui-spinner ui-widget ui-widget-content ui-corner-all'></span>"},_buttonHtml:function(){return"<a class='ui-spinner-button ui-spinner-up ui-corner-tr'><span class='ui-icon "+this.options.icons.up+"'>&#9650;</span></a><a class='ui-spinner-button ui-spinner-down ui-corner-br'><span class='ui-icon "+this.options.icons.down+"'>&#9660;</span></a>"},_start:function(e){return!(!this.spinning&&!1===this._trigger("start",e))&&(this.counter||(this.counter=1),this.spinning=!0)},_repeat:function(e,t,o){e=e||500,clearTimeout(this.timer),this.timer=this._delay(function(){this._repeat(40,t,o)},e),this._spin(t*this.options.step,o)},_spin:function(e,t){var o=this.value()||0;this.counter||(this.counter=1),o=this._adjustValue(o+e*this._increment(this.counter)),this.spinning&&!1===this._trigger("spin",t,{value:o})||(this._value(o),this.counter++)},_increment:function(e){var t=this.options.incremental;return t?x.isFunction(t)?t(e):Math.floor(e*e*e/5e4-e*e/500+17*e/200+1):1},_precision:function(){var e=this._precisionOf(this.options.step);return e=null!==this.options.min?Math.max(e,this._precisionOf(this.options.min)):e},_precisionOf:function(e){var e=""+e,t=e.indexOf(".");return-1===t?0:e.length-t-1},_adjustValue:function(e){var t=this.options,o=null!==t.min?t.min:0,i=e-o;return e=o+Math.round(i/t.step)*t.step,e=parseFloat(e.toFixed(this._precision())),null!==t.max&&e>t.max?t.max:null!==t.min&&t.min>e?t.min:e},_stop:function(e){this.spinning&&(clearTimeout(this.timer),clearTimeout(this.mousewheelTimer),this.counter=0,this.spinning=!1,this._trigger("stop",e))},_setOption:function(e,t){var o;if("culture"===e||"numberFormat"===e)return o=this._parse(this.element.val()),this.options[e]=t,void this.element.val(this._format(o));"max"!==e&&"min"!==e&&"step"!==e||"string"!=typeof t||(t=this._parse(t)),"icons"===e&&(this.buttons.first().find(".ui-icon").removeClass(this.options.icons.up).addClass(t.up),this.buttons.last().find(".ui-icon").removeClass(this.options.icons.down).addClass(t.down)),this._super(e,t),"disabled"===e&&(this.widget().toggleClass("ui-state-disabled",!!t),this.element.prop("disabled",!!t),this.buttons.button(t?"disable":"enable"))},_setOptions:t(function(e){this._super(e)}),_parse:function(e){return""===(e="string"==typeof e&&""!==e?window.Globalize&&this.options.numberFormat?Globalize.parseFloat(e,10,this.options.culture):+e:e)||isNaN(e)?null:e},_format:function(e){return""===e?"":window.Globalize&&this.options.numberFormat?Globalize.format(e,this.options.numberFormat,this.options.culture):e},_refresh:function(){this.element.attr({"aria-valuemin":this.options.min,"aria-valuemax":this.options.max,"aria-valuenow":this._parse(this.element.val())})},isValid:function(){var e=this.value();return null!==e&&e===this._adjustValue(e)},_value:function(e,t){var o;""!==e&&null!==(o=this._parse(e))&&(t||(o=this._adjustValue(o)),e=this._format(o)),this.element.val(e),this._refresh()},_destroy:function(){this.element.removeClass("ui-spinner-input").prop("disabled",!1).removeAttr("autocomplete").removeAttr("role").removeAttr("aria-valuemin").removeAttr("aria-valuemax").removeAttr("aria-valuenow"),this.uiSpinner.replaceWith(this.element)},stepUp:t(function(e){this._stepUp(e)}),_stepUp:function(e){this._start()&&(this._spin((e||1)*this.options.step),this._stop())},stepDown:t(function(e){this._stepDown(e)}),_stepDown:function(e){this._start()&&(this._spin((e||1)*-this.options.step),this._stop())},pageUp:t(function(e){this._stepUp((e||1)*this.options.page)}),pageDown:t(function(e){this._stepDown((e||1)*this.options.page)}),value:function(e){return arguments.length?void t(this._value).call(this,e):this._parse(this.element.val())},widget:function(){return this.uiSpinner}}),x.widget("ui.tabs",{version:"1.11.4",delay:300,options:{active:null,collapsible:!1,event:"click",heightStyle:"content",hide:null,show:null,activate:null,beforeActivate:null,beforeLoad:null,load:null},_isLocal:(N=/#.*$/,function(e){var t=(e=e.cloneNode(!1)).href.replace(N,""),o=location.href.replace(N,"");try{t=decodeURIComponent(t)}catch(e){}try{o=decodeURIComponent(o)}catch(e){}return 1<e.hash.length&&t===o}),_create:function(){var t=this,e=this.options;this.running=!1,this.element.addClass("ui-tabs ui-widget ui-widget-content ui-corner-all").toggleClass("ui-tabs-collapsible",e.collapsible),this._processTabs(),e.active=this._initialActive(),x.isArray(e.disabled)&&(e.disabled=x.unique(e.disabled.concat(x.map(this.tabs.filter(".ui-state-disabled"),function(e){return t.tabs.index(e)}))).sort()),this.active=!1!==this.options.active&&this.anchors.length?this._findActive(e.active):x(),this._refresh(),this.active.length&&this.load(e.active)},_initialActive:function(){var o=this.options.active,e=this.options.collapsible,i=location.hash.substring(1);return null===o&&(i&&this.tabs.each(function(e,t){return x(t).attr("aria-controls")===i?(o=e,!1):void 0}),null!==(o=null===o?this.tabs.index(this.tabs.filter(".ui-tabs-active")):o)&&-1!==o||(o=!!this.tabs.length&&0)),!1!==o&&(-1===(o=this.tabs.index(this.tabs.eq(o)))&&(o=!e&&0)),o=!e&&!1===o&&this.anchors.length?0:o},_getCreateEventData:function(){return{tab:this.active,panel:this.active.length?this._getPanelForTab(this.active):x()}},_tabKeydown:function(e){var t=x(this.document[0].activeElement).closest("li"),o=this.tabs.index(t),i=!0;if(!this._handlePageNav(e)){switch(e.keyCode){case x.ui.keyCode.RIGHT:case x.ui.keyCode.DOWN:o++;break;case x.ui.keyCode.UP:case x.ui.keyCode.LEFT:i=!1,o--;break;case x.ui.keyCode.END:o=this.anchors.length-1;break;case x.ui.keyCode.HOME:o=0;break;case x.ui.keyCode.SPACE:return e.preventDefault(),clearTimeout(this.activating),void this._activate(o);case x.ui.keyCode.ENTER:return e.preventDefault(),clearTimeout(this.activating),void this._activate(o!==this.options.active&&o);default:return}e.preventDefault(),clearTimeout(this.activating),o=this._focusNextTab(o,i),e.ctrlKey||e.metaKey||(t.attr("aria-selected","false"),this.tabs.eq(o).attr("aria-selected","true"),this.activating=this._delay(function(){this.option("active",o)},this.delay))}},_panelKeydown:function(e){this._handlePageNav(e)||e.ctrlKey&&e.keyCode===x.ui.keyCode.UP&&(e.preventDefault(),this.active.focus())},_handlePageNav:function(e){return e.altKey&&e.keyCode===x.ui.keyCode.PAGE_UP?(this._activate(this._focusNextTab(this.options.active-1,!1)),!0):e.altKey&&e.keyCode===x.ui.keyCode.PAGE_DOWN?(this._activate(this._focusNextTab(this.options.active+1,!0)),!0):void 0},_findNextTab:function(e,t){for(var o=this.tabs.length-1;-1!==x.inArray(e=(e=o<e?0:e)<0?o:e,this.options.disabled);)e=t?e+1:e-1;return e},_focusNextTab:function(e,t){return e=this._findNextTab(e,t),this.tabs.eq(e).focus(),e},_setOption:function(e,t){return"active"===e?void this._activate(t):"disabled"===e?void this._setupDisabled(t):(this._super(e,t),"collapsible"===e&&(this.element.toggleClass("ui-tabs-collapsible",t),t||!1!==this.options.active||this._activate(0)),"event"===e&&this._setupEvents(t),void("heightStyle"===e&&this._setupHeightStyle(t)))},_sanitizeSelector:function(e){return e?e.replace(/[!"$%&'()*+,.\/:;<=>?@\[\]\^`{|}~]/g,"\\$&"):""},refresh:function(){var e=this.options,t=this.tablist.children(":has(a[href])");e.disabled=x.map(t.filter(".ui-state-disabled"),function(e){return t.index(e)}),this._processTabs(),!1!==e.active&&this.anchors.length?this.active.length&&!x.contains(this.tablist[0],this.active[0])?this.tabs.length===e.disabled.length?(e.active=!1,this.active=x()):this._activate(this._findNextTab(Math.max(0,e.active-1),!1)):e.active=this.tabs.index(this.active):(e.active=!1,this.active=x()),this._refresh()},_refresh:function(){this._setupDisabled(this.options.disabled),this._setupEvents(this.options.event),this._setupHeightStyle(this.options.heightStyle),this.tabs.not(this.active).attr({"aria-selected":"false","aria-expanded":"false",tabIndex:-1}),this.panels.not(this._getPanelForTab(this.active)).hide().attr({"aria-hidden":"true"}),this.active.length?(this.active.addClass("ui-tabs-active ui-state-active").attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0}),this._getPanelForTab(this.active).show().attr({"aria-hidden":"false"})):this.tabs.eq(0).attr("tabIndex",0)},_processTabs:function(){var l=this,e=this.tabs,t=this.anchors,o=this.panels;this.tablist=this._getList().addClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all").attr("role","tablist").delegate("> li","mousedown"+this.eventNamespace,function(e){x(this).is(".ui-state-disabled")&&e.preventDefault()}).delegate(".ui-tabs-anchor","focus"+this.eventNamespace,function(){x(this).closest("li").is(".ui-state-disabled")&&this.blur()}),this.tabs=this.tablist.find("> li:has(a[href])").addClass("ui-state-default ui-corner-top").attr({role:"tab",tabIndex:-1}),this.anchors=this.tabs.map(function(){return x("a",this)[0]}).addClass("ui-tabs-anchor").attr({role:"presentation",tabIndex:-1}),this.panels=x(),this.anchors.each(function(e,t){var o,i,n,r=x(t).uniqueId().attr("id"),s=x(t).closest("li"),a=s.attr("aria-controls");l._isLocal(t)?(n=(o=t.hash).substring(1),i=l.element.find(l._sanitizeSelector(o))):(n=s.attr("aria-controls")||x({}).uniqueId()[0].id,(i=l.element.find(o="#"+n)).length||(i=l._createPanel(n)).insertAfter(l.panels[e-1]||l.tablist),i.attr("aria-live","polite")),i.length&&(l.panels=l.panels.add(i)),a&&s.data("ui-tabs-aria-controls",a),s.attr({"aria-controls":n,"aria-labelledby":r}),i.attr("aria-labelledby",r)}),this.panels.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom").attr("role","tabpanel"),e&&(this._off(e.not(this.tabs)),this._off(t.not(this.anchors)),this._off(o.not(this.panels)))},_getList:function(){return this.tablist||this.element.find("ol,ul").eq(0)},_createPanel:function(e){return x("<div>").attr("id",e).addClass("ui-tabs-panel ui-widget-content ui-corner-bottom").data("ui-tabs-destroy",!0)},_setupDisabled:function(e){x.isArray(e)&&(e.length?e.length===this.anchors.length&&(e=!0):e=!1);for(var t,o=0;t=this.tabs[o];o++)!0===e||-1!==x.inArray(o,e)?x(t).addClass("ui-state-disabled").attr("aria-disabled","true"):x(t).removeClass("ui-state-disabled").removeAttr("aria-disabled");this.options.disabled=e},_setupEvents:function(e){var o={};e&&x.each(e.split(" "),function(e,t){o[t]="_eventHandler"}),this._off(this.anchors.add(this.tabs).add(this.panels)),this._on(!0,this.anchors,{click:function(e){e.preventDefault()}}),this._on(this.anchors,o),this._on(this.tabs,{keydown:"_tabKeydown"}),this._on(this.panels,{keydown:"_panelKeydown"}),this._focusable(this.tabs),this._hoverable(this.tabs)},_setupHeightStyle:function(e){var o,t=this.element.parent();"fill"===e?(o=t.height(),o-=this.element.outerHeight()-this.element.height(),this.element.siblings(":visible").each(function(){var e=x(this),t=e.css("position");"absolute"!==t&&"fixed"!==t&&(o-=e.outerHeight(!0))}),this.element.children().not(this.panels).each(function(){o-=x(this).outerHeight(!0)}),this.panels.each(function(){x(this).height(Math.max(0,o-x(this).innerHeight()+x(this).height()))}).css("overflow","auto")):"auto"===e&&(o=0,this.panels.each(function(){o=Math.max(o,x(this).height("").height())}).height(o))},_eventHandler:function(e){var t=this.options,o=this.active,i=x(e.currentTarget).closest("li"),n=i[0]===o[0],r=n&&t.collapsible,s=r?x():this._getPanelForTab(i),a=o.length?this._getPanelForTab(o):x(),o={oldTab:o,oldPanel:a,newTab:r?x():i,newPanel:s};e.preventDefault(),i.hasClass("ui-state-disabled")||i.hasClass("ui-tabs-loading")||this.running||n&&!t.collapsible||!1===this._trigger("beforeActivate",e,o)||(t.active=!r&&this.tabs.index(i),this.active=n?x():i,this.xhr&&this.xhr.abort(),a.length||s.length||x.error("jQuery UI Tabs: Mismatching fragment identifier."),s.length&&this.load(this.tabs.index(i),e),this._toggle(e,o))},_toggle:function(e,t){function o(){n.running=!1,n._trigger("activate",e,t)}function i(){t.newTab.closest("li").addClass("ui-tabs-active ui-state-active"),r.length&&n.options.show?n._show(r,n.options.show,o):(r.show(),o())}var n=this,r=t.newPanel,s=t.oldPanel;this.running=!0,s.length&&this.options.hide?this._hide(s,this.options.hide,function(){t.oldTab.closest("li").removeClass("ui-tabs-active ui-state-active"),i()}):(t.oldTab.closest("li").removeClass("ui-tabs-active ui-state-active"),s.hide(),i()),s.attr("aria-hidden","true"),t.oldTab.attr({"aria-selected":"false","aria-expanded":"false"}),r.length&&s.length?t.oldTab.attr("tabIndex",-1):r.length&&this.tabs.filter(function(){return 0===x(this).attr("tabIndex")}).attr("tabIndex",-1),r.attr("aria-hidden","false"),t.newTab.attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0})},_activate:function(e){var e=this._findActive(e);e[0]!==this.active[0]&&(e=(e=e.length?e:this.active).find(".ui-tabs-anchor")[0],this._eventHandler({target:e,currentTarget:e,preventDefault:x.noop}))},_findActive:function(e){return!1===e?x():this.tabs.eq(e)},_getIndex:function(e){return e="string"==typeof e?this.anchors.index(this.anchors.filter("[href$='"+e+"']")):e},_destroy:function(){this.xhr&&this.xhr.abort(),this.element.removeClass("ui-tabs ui-widget ui-widget-content ui-corner-all ui-tabs-collapsible"),this.tablist.removeClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all").removeAttr("role"),this.anchors.removeClass("ui-tabs-anchor").removeAttr("role").removeAttr("tabIndex").removeUniqueId(),this.tablist.unbind(this.eventNamespace),this.tabs.add(this.panels).each(function(){x.data(this,"ui-tabs-destroy")?x(this).remove():x(this).removeClass("ui-state-default ui-state-active ui-state-disabled ui-corner-top ui-corner-bottom ui-widget-content ui-tabs-active ui-tabs-panel").removeAttr("tabIndex").removeAttr("aria-live").removeAttr("aria-busy").removeAttr("aria-selected").removeAttr("aria-labelledby").removeAttr("aria-hidden").removeAttr("aria-expanded").removeAttr("role")}),this.tabs.each(function(){var e=x(this),t=e.data("ui-tabs-aria-controls");t?e.attr("aria-controls",t).removeData("ui-tabs-aria-controls"):e.removeAttr("aria-controls")}),this.panels.show(),"content"!==this.options.heightStyle&&this.panels.css("height","")},enable:function(o){var e=this.options.disabled;!1!==e&&(e=void 0!==o&&(o=this._getIndex(o),x.isArray(e)?x.map(e,function(e){return e!==o?e:null}):x.map(this.tabs,function(e,t){return t!==o?t:null})),this._setupDisabled(e))},disable:function(e){var t=this.options.disabled;if(!0!==t){if(void 0===e)t=!0;else{if(e=this._getIndex(e),-1!==x.inArray(e,t))return;t=x.isArray(t)?x.merge([e],t).sort():[e]}this._setupDisabled(t)}},load:function(e,i){e=this._getIndex(e);function n(e,t){"abort"===t&&r.panels.stop(!1,!0),o.removeClass("ui-tabs-loading"),s.removeAttr("aria-busy"),e===r.xhr&&delete r.xhr}var r=this,o=this.tabs.eq(e),e=o.find(".ui-tabs-anchor"),s=this._getPanelForTab(o),a={tab:o,panel:s};this._isLocal(e[0])||(this.xhr=x.ajax(this._ajaxSettings(e,i,a)),this.xhr&&"canceled"!==this.xhr.statusText&&(o.addClass("ui-tabs-loading"),s.attr("aria-busy","true"),this.xhr.done(function(e,t,o){setTimeout(function(){s.html(e),r._trigger("load",i,a),n(o,t)},1)}).fail(function(e,t){setTimeout(function(){n(e,t)},1)})))},_ajaxSettings:function(e,o,i){var n=this;return{url:e.attr("href"),beforeSend:function(e,t){return n._trigger("beforeLoad",o,x.extend({jqXHR:e,ajaxSettings:t},i))}}},_getPanelForTab:function(e){e=x(e).attr("aria-controls");return this.element.find(this._sanitizeSelector("#"+e))}}),x.widget("ui.tooltip",{version:"1.11.4",options:{content:function(){var e=x(this).attr("title")||"";return x("<a>").text(e).html()},hide:!0,items:"[title]:not([disabled])",position:{my:"left top+15",at:"left bottom",collision:"flipfit flip"},show:!0,tooltipClass:null,track:!1,close:null,open:null},_addDescribedBy:function(e,t){var o=(e.attr("aria-describedby")||"").split(/\s+/);o.push(t),e.data("ui-tooltip-id",t).attr("aria-describedby",x.trim(o.join(" ")))},_removeDescribedBy:function(e){var t=e.data("ui-tooltip-id"),o=(e.attr("aria-describedby")||"").split(/\s+/),t=x.inArray(t,o);-1!==t&&o.splice(t,1),e.removeData("ui-tooltip-id"),(o=x.trim(o.join(" ")))?e.attr("aria-describedby",o):e.removeAttr("aria-describedby")},_create:function(){this._on({mouseover:"open",focusin:"open"}),this.tooltips={},this.parents={},this.options.disabled&&this._disable(),this.liveRegion=x("<div>").attr({role:"log","aria-live":"assertive","aria-relevant":"additions"}).addClass("ui-helper-hidden-accessible").appendTo(this.document[0].body)},_setOption:function(e,t){var o=this;return"disabled"===e?(this[t?"_disable":"_enable"](),void(this.options[e]=t)):(this._super(e,t),void("content"===e&&x.each(this.tooltips,function(e,t){o._updateContent(t.element)})))},_disable:function(){var i=this;x.each(this.tooltips,function(e,t){var o=x.Event("blur");o.target=o.currentTarget=t.element[0],i.close(o,!0)}),this.element.find(this.options.items).addBack().each(function(){var e=x(this);e.is("[title]")&&e.data("ui-tooltip-title",e.attr("title")).removeAttr("title")})},_enable:function(){this.element.find(this.options.items).addBack().each(function(){var e=x(this);e.data("ui-tooltip-title")&&e.attr("title",e.data("ui-tooltip-title"))})},open:function(e){var o=this,t=x(e?e.target:this.element).closest(this.options.items);t.length&&!t.data("ui-tooltip-id")&&(t.attr("title")&&t.data("ui-tooltip-title",t.attr("title")),t.data("ui-tooltip-open",!0),e&&"mouseover"===e.type&&t.parents().each(function(){var e,t=x(this);t.data("ui-tooltip-open")&&((e=x.Event("blur")).target=e.currentTarget=this,o.close(e,!0)),t.attr("title")&&(t.uniqueId(),o.parents[this.id]={element:this,title:t.attr("title")},t.attr("title",""))}),this._registerCloseHandlers(e,t),this._updateContent(t,e))},_updateContent:function(t,o){var e=this.options.content,i=this,n=o?o.type:null;return"string"==typeof e?this._open(o,t,e):void((e=e.call(t[0],function(e){i._delay(function(){t.data("ui-tooltip-open")&&(o&&(o.type=n),this._open(o,t,e))})}))&&this._open(o,t,e))},_open:function(e,t,o){function i(e){l.of=e,r.is(":hidden")||r.position(l)}var n,r,s,a,l=x.extend({},this.options.position);o&&((n=this._find(t))?n.tooltip.find(".ui-tooltip-content").html(o):(t.is("[title]")&&(e&&"mouseover"===e.type?t.attr("title",""):t.removeAttr("title")),n=this._tooltip(t),r=n.tooltip,this._addDescribedBy(t,r.attr("id")),r.find(".ui-tooltip-content").html(o),this.liveRegion.children().hide(),o.clone?(a=o.clone()).removeAttr("id").find("[id]").removeAttr("id"):a=o,x("<div>").html(a).appendTo(this.liveRegion),this.options.track&&e&&/^mouse/.test(e.type)?(this._on(this.document,{mousemove:i}),i(e)):r.position(x.extend({of:t},this.options.position)),r.hide(),this._show(r,this.options.show),this.options.show&&this.options.show.delay&&(s=this.delayedShow=setInterval(function(){r.is(":visible")&&(i(l.of),clearInterval(s))},x.fx.interval)),this._trigger("open",e,{tooltip:r})))},_registerCloseHandlers:function(e,t){var o={keyup:function(e){e.keyCode===x.ui.keyCode.ESCAPE&&((e=x.Event(e)).currentTarget=t[0],this.close(e,!0))}};t[0]!==this.element[0]&&(o.remove=function(){this._removeTooltip(this._find(t).tooltip)}),e&&"mouseover"!==e.type||(o.mouseleave="close"),e&&"focusin"!==e.type||(o.focusout="close"),this._on(!0,t,o)},close:function(e){var t,o=this,i=x(e?e.currentTarget:this.element),n=this._find(i);return n?(t=n.tooltip,void(n.closing||(clearInterval(this.delayedShow),i.data("ui-tooltip-title")&&!i.attr("title")&&i.attr("title",i.data("ui-tooltip-title")),this._removeDescribedBy(i),n.hiding=!0,t.stop(!0),this._hide(t,this.options.hide,function(){o._removeTooltip(x(this))}),i.removeData("ui-tooltip-open"),this._off(i,"mouseleave focusout keyup"),i[0]!==this.element[0]&&this._off(i,"remove"),this._off(this.document,"mousemove"),e&&"mouseleave"===e.type&&x.each(this.parents,function(e,t){x(t.element).attr("title",t.title),delete o.parents[e]}),n.closing=!0,this._trigger("close",e,{tooltip:t}),n.hiding||(n.closing=!1)))):void i.removeData("ui-tooltip-open")},_tooltip:function(e){var t=x("<div>").attr("role","tooltip").addClass("ui-tooltip ui-widget ui-corner-all ui-widget-content "+(this.options.tooltipClass||"")),o=t.uniqueId().attr("id");return x("<div>").addClass("ui-tooltip-content").appendTo(t),t.appendTo(this.document[0].body),this.tooltips[o]={element:e,tooltip:t}},_find:function(e){e=e.data("ui-tooltip-id");return e?this.tooltips[e]:null},_removeTooltip:function(e){e.remove(),delete this.tooltips[e.attr("id")]},_destroy:function(){var i=this;x.each(this.tooltips,function(e,t){var o=x.Event("blur"),t=t.element;o.target=o.currentTarget=t[0],i.close(o,!0),x("#"+e).remove(),t.data("ui-tooltip-title")&&(t.attr("title")||t.attr("title",t.data("ui-tooltip-title")),t.removeData("ui-tooltip-title"))}),this.liveRegion.remove()}})});
\ No newline at end of file
diff --git a/static/ethercalc.js.map b/static/ethercalc.js.map
index d3af77d2..db717255 100644
--- a/static/ethercalc.js.map
+++ b/static/ethercalc.js.map
@@ -1 +1 @@
-{"version":3,"sources":["node_modules/socialcalc/dist/SocialCalc.js","third-party/class-js/lib/Class.js","third-party/wikiwyg/lib/Document/Emitter.js","third-party/wikiwyg/lib/Document/Emitter/HTML.js","third-party/wikiwyg/lib/Document/Parser.js","third-party/wikiwyg/lib/Document/Parser/Wikitext.js","static/jquery.js","static/vex.combined.min.js","static/jquery-ui.min.js"],"names":["root","factory","define","amd","bind","this","module","exports","call","SocialCalc","window","Constants","cellDataType","v","n","t","f","c","textdatadefaulttype","s_BrowserNotSupported","s_InternalError","s_pssUnknownColType","s_pssUnknownRowType","s_pssUnknownLineType","s_cfspUnknownCellType","doCanonicalizeSheet","s_escUnknownSheetCmd","s_escUnknownSetCoordCmd","s_escUnknownCmd","s_caccCircRef","defaultRowNameWidth","defaultAssumedRowHeight","defaultCellIDPrefix","defaultCellLayout","defaultCellFontStyle","defaultCellFontSize","defaultCellFontFamily","defaultPaneDividerWidth","defaultPaneDividerHeight","defaultGridCSS","defaultCommentClass","defaultCommentStyle","defaultCommentNoGridClass","defaultCommentNoGridStyle","defaultReadonlyClass","defaultReadonlyStyle","defaultReadonlyNoGridClass","defaultReadonlyNoGridStyle","defaultReadonlyComment","defaultColWidth","defaultMinimumColWidth","defaultHighlightTypeCursorClass","defaultHighlightTypeCursorStyle","defaultHighlightTypeRangeClass","defaultHighlightTypeRangeStyle","defaultColnameClass","defaultColnameStyle","defaultSelectedColnameClass","defaultSelectedColnameStyle","defaultRownameClass","defaultRownameStyle","defaultSelectedRownameClass","defaultSelectedRownameStyle","defaultUpperLeftClass","defaultUpperLeftStyle","defaultSkippedCellClass","defaultSkippedCellStyle","defaultPaneDividerClass","defaultPaneDividerStyle","defaultUnhideLeftClass","defaultUnhideLeftStyle","defaultUnhideRightClass","defaultUnhideRightStyle","defaultUnhideTopClass","defaultUnhideTopStyle","defaultUnhideBottomClass","defaultUnhideBottomStyle","defaultColResizeBarClass","defaultRowResizeBarClass","s_rcMissingSheet","defaultLinkFormatString","defaultPageLinkFormatString","defaultFormatp","defaultFormatc","defaultFormatdt","defaultFormatd","defaultFormatt","defaultDisplayTRUE","defaultDisplayFALSE","defaultImagePrefix","defaultTableEditorIDPrefix","defaultPageUpDnAmount","AllowCtrlS","defaultTableControlThickness","cteGriddivClass","s_statusline_executing","s_statusline_displaying","s_statusline_ordering","s_statusline_calculating","s_statusline_calculatingls","s_statusline_doingserverfunc","s_statusline_incell","s_statusline_calcstart","s_statusline_sum","s_statusline_recalcneeded","s_statusline_circref","s_statusline_sendemail","s_inputboxdisplaymultilinetext","defaultInputEchoClass","defaultInputEchoStyle","defaultInputEchoPromptClass","defaultInputEchoPromptStyle","defaultInputEchoHintClass","defaultInputEchoHintStyle","ietUnknownFunction","CH_radius1","CH_radius2","s_CHfillAllTooltip","s_CHfillContentsTooltip","s_CHmovePasteAllTooltip","s_CHmovePasteContentsTooltip","s_CHmoveInsertAllTooltip","s_CHmoveInsertContentsTooltip","s_CHindicatorOperationLookup","Fill","FillC","Move","MoveI","MoveC","MoveIC","s_CHindicatorDirectionLookup","Down","Right","Horizontal","Vertical","defaultTCSliderThickness","defaultTCButtonThickness","defaultTCThumbThickness","TCmainStyle","TCmainClass","TCendcapStyle","TCendcapClass","TCpanesliderClass","s_panesliderTooltiph","s_panesliderTooltipv","TClessbuttonStyle","TClessbuttonClass","TClessbuttonRepeatWait","TClessbuttonRepeatInterval","TCmorebuttonStyle","TCmorebuttonClass","TCmorebuttonRepeatWait","TCmorebuttonRepeatInterval","TCscrollareaStyle","TCscrollareaClass","TCscrollareaRepeatWait","TCscrollareaRepeatInterval","TCthumbClass","TCthumbStyle","TCPStrackinglineClass","TCPStrackinglineStyle","TCPStrackinglineThickness","TCTDFSthumbstatusvClass","TCTDFSthumbstatusvStyle","TCTDFSthumbstatushClass","TCTDFSthumbstatushStyle","TCTDFSthumbstatusrownumClass","TCTDFSthumbstatusrownumStyle","TCTDFStopOffsetv","TCTDFSleftOffsetv","s_TCTDFthumbstatusPrefixv","TCTDFStopOffseth","TCTDFSleftOffseth","s_TCTDFthumbstatusPrefixh","TooltipOffsetX","TooltipOffsetY","TDpopupElementClass","TDpopupElementStyle","SCToolbarbackground","SCTabbackground","SCTabselectedCSS","SCTabplainCSS","SCToolbartext","SCFormulabarheight","SCStatuslineheight","SCStatuslineCSS","SCFormatNumberFormats","SCFormatTextFormats","SCFormatPadsizes","SCFormatFontsizes","SCFormatFontfamilies","SCFormatFontlook","SCFormatTextAlignhoriz","SCFormatNumberAlignhoriz","SCFormatAlignVertical","SCFormatColwidth","SCFormatRecalc","SCFormatUserMaxCol","SCFormatUserMaxRow","ISCButtonNormalBackground","ISCButtonBorderNormal","ISCButtonBorderHover","ISCButtonBorderDown","ISCButtonDownBackground","s_PopupListCancel","s_PopupListCustom","s_loc_align_center","s_loc_align_left","s_loc_align_right","s_loc_alignment","s_loc_audit","s_loc_audit_trail_this_session","s_loc_auto","s_loc_auto_sum","s_loc_auto_wX_commas","s_loc_automatic","s_loc_background","s_loc_bold","s_loc_bold_XampX_italics","s_loc_bold_italic","s_loc_borders","s_loc_borders_off","s_loc_borders_on","s_loc_bottom","s_loc_bottom_border","s_loc_cell_settings","s_loc_csv_format","s_loc_cancel","s_loc_category","s_loc_center","s_loc_clear","s_loc_clear_socialcalc_clipboard","s_loc_clipboard","s_loc_color","s_loc_column_","s_loc_comment","s_loc_copy","s_loc_custom","s_loc_cut","s_loc_default","s_loc_default_alignment","s_loc_default_column_width","s_loc_default_font","s_loc_default_format","s_loc_default_padding","s_loc_delete","s_loc_delete_column","s_loc_delete_contents","s_loc_delete_row","s_loc_description","s_loc_display_clipboard_in","s_loc_down","s_loc_edit","s_loc_existing_names","s_loc_family","s_loc_fill_down","s_loc_fill_right","s_loc_font","s_loc_format","s_loc_formula","s_loc_function_list","s_loc_functions","s_loc_grid","s_loc_hidden","s_loc_hide_column","s_loc_hide_row","s_loc_horizontal","s_loc_insert_column","s_loc_insert_row","s_loc_italic","s_loc_last_sort","s_loc_left","s_loc_left_border","s_loc_link","s_loc_link_input_box","s_loc_list","s_loc_load_socialcalc_clipboard_with_this","s_loc_lock_cell","s_loc_major_sort","s_loc_manual","s_loc_merge_cells","s_loc_middle","s_loc_minor_sort","s_loc_move_insert","s_loc_move_paste","s_loc_multiXline_input_box","s_loc_name","s_loc_names","s_loc_no_padding","s_loc_normal","s_loc_number","s_loc_number_horizontal","s_loc_ok","s_loc_padding","s_loc_page_name","s_loc_paste","s_loc_paste_formats","s_loc_plain_text","s_loc_recalc","s_loc_recalculation","s_loc_redo","s_loc_right","s_loc_right_border","s_loc_sheet_settings","s_loc_save","s_loc_save_to","s_loc_set_cell_contents","s_loc_set_cells_to_sort","s_loc_set_value_to","s_loc_set_to_link_format","s_loc_setXclear_move_from","s_loc_show_cell_settings","s_loc_show_sheet_settings","s_loc_show_in_new_browser_window","s_loc_size","s_loc_socialcalcXsave_format","s_loc_sort","s_loc_sort_","s_loc_sort_cells","s_loc_swap_colors","s_loc_tabXdelimited_format","s_loc_text","s_loc_text_horizontal","s_loc_this_is_aXbrXsample","s_loc_top","s_loc_top_border","s_loc_undone_steps","s_loc_url","s_loc_undo","s_loc_unlock_cell","s_loc_unmerge_cells","s_loc_up","s_loc_value","s_loc_vertical","s_loc_wikitext","s_loc_workspace","s_loc_XnewX","s_loc_XnoneX","s_loc_Xselect_rangeX","SVStatuslineheight","SVStatuslineCSS","FormatNumber_separatorchar","FormatNumber_decimalchar","FormatNumber_defaultCurrency","s_FormatNumber_daynames","s_FormatNumber_daynames3","s_FormatNumber_monthnames","s_FormatNumber_monthnames3","s_FormatNumber_am","s_FormatNumber_am1","s_FormatNumber_pm","s_FormatNumber_pm1","s_parseerrexponent","s_parseerrchar","s_parseerrstring","s_parseerrspecialvalue","s_parseerrtwoops","s_parseerrmissingopenparen","s_parseerrcloseparennoopen","s_parseerrmissingcloseparen","s_parseerrmissingoperand","s_parseerrerrorinformula","s_calcerrerrorvalueinformula","s_parseerrerrorinformulabadval","s_formularangeresult","s_calcerrnumericnan","s_calcerrnumericoverflow","s_sheetunavailable","s_calcerrcellrefmissing","s_calcerrsheetnamemissing","s_circularnameref","s_calcerrunknownname","s_calcerrincorrectargstofunction","s_sheetfuncunknownfunction","s_sheetfunclnarg","s_sheetfunclog10arg","s_sheetfunclogsecondarg","s_sheetfunclogfirstarg","s_sheetfuncroundsecondarg","s_sheetfuncddblife","s_sheetfuncslnlife","s_fdef_ABS","s_fdef_ACOS","s_fdef_AND","s_fdef_ASIN","s_fdef_ATAN","s_fdef_ATAN2","s_fdef_AVERAGE","s_fdef_CHOOSE","s_fdef_COLUMNS","s_fdef_COS","s_fdef_CONCAT","s_fdef_CONCATENATE","s_fdef_COUNT","s_fdef_COUNTA","s_fdef_COUNTBLANK","s_fdef_COUNTIF","s_fdef_DATE","s_fdef_DAVERAGE","s_fdef_DAY","s_fdef_DCOUNT","s_fdef_DCOUNTA","s_fdef_DDB","s_fdef_DEGREES","s_fdef_DGET","s_fdef_DMAX","s_fdef_DMIN","s_fdef_DPRODUCT","s_fdef_DSTDEV","s_fdef_DSTDEVP","s_fdef_DSUM","s_fdef_DVAR","s_fdef_DVARP","s_fdef_EVEN","s_fdef_EXACT","s_fdef_EXP","s_fdef_FACT","s_fdef_FALSE","s_fdef_FIND","s_fdef_FV","s_fdef_HLOOKUP","s_fdef_HOUR","s_fdef_IF","s_fdef_INDEX","s_fdef_INT","s_fdef_IRR","s_fdef_ISBLANK","s_fdef_ISERR","s_fdef_ISERROR","s_fdef_ISLOGICAL","s_fdef_ISNA","s_fdef_ISNONTEXT","s_fdef_ISNUMBER","s_fdef_ISTEXT","s_fdef_LEFT","s_fdef_LEN","s_fdef_LN","s_fdef_LOG","s_fdef_LOG10","s_fdef_LOWER","s_fdef_MATCH","s_fdef_MAX","s_fdef_MID","s_fdef_MIN","s_fdef_MINUTE","s_fdef_MOD","s_fdef_MONTH","s_fdef_N","s_fdef_NA","s_fdef_NOT","s_fdef_NOW","s_fdef_NPER","s_fdef_NPV","s_fdef_ODD","s_fdef_OR","s_fdef_PI","s_fdef_PMT","s_fdef_POWER","s_fdef_PRODUCT","s_fdef_PROPER","s_fdef_PV","s_fdef_RADIANS","s_fdef_RATE","s_fdef_REPLACE","s_fdef_REPT","s_fdef_RIGHT","s_fdef_ROUND","s_fdef_ROWS","s_fdef_SECOND","s_fdef_SIN","s_fdef_SLN","s_fdef_SQRT","s_fdef_STDEV","s_fdef_STDEVP","s_fdef_SUBSTITUTE","s_fdef_SUM","s_fdef_SUMIF","s_fdef_SUMIFS","s_fdef_SYD","s_fdef_T","s_fdef_TAN","s_fdef_TIME","s_fdef_TODAY","s_fdef_TRIM","s_fdef_TRUE","s_fdef_TRUNC","s_fdef_UPPER","s_fdef_VALUE","s_fdef_VAR","s_fdef_VARP","s_fdef_VLOOKUP","s_fdef_WEEKDAY","s_fdef_YEAR","s_fdef_SUMPRODUCT","s_fdef_CEILING","s_fdef_FLOOR","s_farg_v","s_farg_vn","s_farg_xy","s_farg_choose","s_farg_range","s_farg_rangec","s_farg_date","s_farg_dfunc","s_farg_ddb","s_farg_find","s_farg_fv","s_farg_hlookup","s_farg_iffunc","s_farg_index","s_farg_irr","s_farg_tc","s_farg_log","s_farg_match","s_farg_mid","s_farg_nper","s_farg_npv","s_farg_pmt","s_farg_pv","s_farg_rate","s_farg_replace","s_farg_vp","s_farg_valpre","s_farg_csl","s_farg_cslp","s_farg_subs","s_farg_sumif","s_farg_hms","s_farg_txt","s_farg_vlookup","s_farg_weekday","s_farg_dt","s_farg_rangen","s_farg_vsig","function_classlist","s_fclass_all","s_fclass_stat","s_fclass_lookup","s_fclass_datetime","s_fclass_financial","s_fclass_test","s_fclass_math","s_fclass_text","s_fclass_action","s_fclass_gui","lastone","ConstantsDefaultClasses","defaultComment","defaultCommentNoGrid","defaultHighlightTypeCursor","defaultHighlightTypeRange","defaultColname","defaultSelectedColname","defaultRowname","defaultSelectedRowname","defaultUpperLeft","defaultSkippedCell","defaultPaneDivider","cteGriddiv","defaultInputEcho","classname","style","TCmain","TCendcap","TCpaneslider","TClessbutton","TCmorebutton","TCscrollarea","TCthumb","TCPStrackingline","TCTDFSthumbstatus","TDpopupElement","ConstantsSetClasses","prefix","item","defaults","scc","undefined","ConstantsSetImagePrefix","imagePrefix","replace","Callbacks","expand_wiki","expand_markup","displayvalue","sheetobj","linkstyle","default_expand_markup","MakePageLink","NormalizeSheetName","Cell","coord","datavalue","datatype","formula","valuetype","readonly","CellProperties","errors","comment","bt","br","bb","bl","layout","font","color","bgcolor","cellformat","nontextvalueformat","textvalueformat","colspan","rowspan","cssc","csss","mod","displaystring","parseinfo","hcolspan","hrowspan","CellPropertiesTable","Sheet","ResetSheet","statuscallback","statuscallbackparams","sheet","cells","attribs","lastcol","lastrow","defaultlayout","usermaxcol","usermaxrow","rowattribs","hide","height","colattribs","width","names","layouts","layouthash","fonts","fonthash","colors","colorhash","borderstyles","borderstylehash","cellformats","cellformathash","valueformats","valueformathash","matched_cells","selected_search_cell","copiedfrom","changes","UndoStack","renderneeded","changedrendervalues","recalcchangedavalue","hiddencolrow","sci","SheetCommandInfo","ioEventTree","ioParameterList","prototype","AddCell","newcell","LastCol","last_col","cell_id","cr","coordToCr","col","LastRow","last_row","row","GetAssuredCell","ParseSheetSave","savedsheet","CellFromStringParts","cell","parts","j","CreateSheetSave","range","canonicalize","CellToString","CanonicalizeSheet","full","EncodeCellAttributes","EncodeSheetAttributes","DecodeCellAttributes","DecodeSheetAttributes","ScheduleSheetCommands","cmd","saveundo","SheetUndo","SheetRedo","CreateAuditString","GetStyleNum","atype","GetStyleString","num","RecalcSheet","line","i","name","lines","split","length","defaultcolwidth","defaultrowheight","defaulttextformat","defaultnontextformat","defaultfont","defaulttextvalueformat","defaultnontextvalueformat","defaultcolor","defaultbgcolor","circularreferencecell","recalc","needsrecalc","decodeFromSave","toUpperCase","desc","definition","match","alert","charAt","ro","toLowerCase","sheetfields","sheetfieldsshort","sheetfieldsxlat","sheetfieldsxlatshort","sheetfieldsxlatxlt","cr1","cr2","value","prange","result","xlt","ParseRange","maxrow","maxcol","push","crToCoord","rcColname","encodeForSave","newborderstyles","newcellformats","newcolors","newfonts","newlayouts","newvalueformats","namesorder","join","r","b","l","borderstylesxlat","layoutsxlat","fontsxlat","colorsxlat","cellformatsxlat","valueformatsxlat","filled","an","a","newa","newxlat","used","ahash","alist","sort","Array","colorsUsed","borderstylesUsed","fontsUsed","layoutsUsed","cellformatsUsed","valueformatsUsed","unshift","InitAttrib","def","val","InitAttribs","namelist","SetAttrib","SetAttribStar","rowheight","newattribs","changed","CheckChanges","attribname","oldval","cmdname","DoCmd","cmdstr","str","alignvert","padtop","padright","padbottom","padleft","fontlook","fontsize","fontfamily","timerobj","firsttimerdelay","timerdelay","maxtimeslice","CmdExtensionCallbacks","parseobj","Parse","PushChange","setTimeout","SheetCommandsTimerRoutine","errortext","starttime","Date","EOF","ExecuteSheetCommand","err","message","console","log","NextLine","increment_amount","down","valid_datatype","type","editor","GetSpreadsheetControlObject","range2","returnval","hasrange","startcell","endcell","bottom","top","left","right","Range2Remove","cmd1","rest","what","attrib","pos","pos2","undostart","fillright","rowstart","colstart","crbase","rowoffset","coloffset","basecell","clipsheet","cliprange","numcols","numrows","attribtable","colend","rowend","newcolstart","newrowstart","newcolend","newrowend","rownext","colnext","colthis","rowbefore","colbefore","oldformula","oldcr","cols","dirs","lastsortcol","sortlist","sortcells","sortvalues","sorttypes","sortfunction","valtype","originalrow","sortedcr","v1","v2","cmdextension","undoNum","trackLine","cellProperties","cellChanged","RestOfStringNoMove","AddDo","NextToken","RestOfString","AddUndo","test","indexOf","substring","celldisplayneeded","_app","prevvaluetype","quashedCellCoord","quashedCell","Clipboard","clipboard","inc","OffsetFormulaCoords","Math","max","currentClipCol","currentClipRow","sourceColname","colWidth","colHide","sourceRow","rowHide","slast","a1","b1","ta","cresult","tb","widgetsClean","AdjustFormulaCoords","tempRenderContext","RenderContext","CalculateCellSkipData","cellsToExpand","skipCell","cellskip","skipCellCR","mergerCellCoords","cellsToShrink","mergerCellCR","coordToCR","movingcells","dest","destcr","inserthoriz","insertvert","pushamount","movedto","ReplaceFormulaCoords","recalconce","parseInt","context","rowpanes","first","timeout","SetRowPaneFirstLast","griddiv","document","getElementById","removeChild","FitToEditTable","colpanes","SetColPaneFirstLast","func","data","tos","TOS","undo","Undo","didredo","Redo","command","stack","ttext","ttype","newcr","updatedformula","scf","Formula","tokentype","TokenType","token_op","op","token_string","string","token_coord","tokenOpExpansion","TokenOpExpansion","ParseFormulaIntoTokens","text","sheetref","RecalcInfo","currentState","state","idle","start_calc","order","calc","start_wait","done_wait","recalctimer","timeslicedelay","queue","LoadSheet","RecalcData","inrecalc","celllist","celllistitem","calclist","calclistlength","firstcalc","lastcalc","nextcalc","count","checkinfo","RecalcCheckInfo","oldcoord","parsepos","inrange","inrangestart","c1","c2","r1","r2","scri","FreshnessInfoReset","RecalcClearTimeout","RecalcSetTimeout","RecalcTimerRoutine","clearTimeout","RecalcLoadedSheet","sheetname","recalcneeded","live","AddSheetToCache","SheetCache","waitingForLoading","previousrecalcsheet","eresult","status","recalcdata","do_statuscallback","arg","RecalcCheckCell","total","evaluate_parsed_formula","firstRenderScheduled","ScheduleRender","RemoteFunctionInfo","waitingForServer","funcname","error","reRenderCellList","FreshnessInfo","recalc_completed","shift","startcoord","rangecoord","coordvals","token_name","mainloop","LookupName","delimiter","lineEnd","pos1","oldpos","maxRedo","maxUndo","pop","args","arguments","hideRowsCols","showGrid","showRCHeaders","rownamewidth","pixelsPerRow","colwidth","totalwidth","totalheight","colunhideleft","colunhideright","rowunhidetop","rowunhidebottom","highlights","cursorsuffix","highlightTypes","cursor","className","cursorinsertup","cursorinsertleft","cellIDprefix","defaultlinkstyle","defaultHTMLlinkstyle","defaultfontstyle","defaultfontsize","defaultfontfamily","defaultpanedividerwidth","defaultpanedividerheight","gridCSS","commentClassName","commentCSS","commentNoGridClassName","commentNoGridCSS","readonlyClassName","readonlyCSS","readonlyNoGridClassName","readonlyNoGridCSS","readonlyComment","classnames","colname","rowname","selectedcolname","selectedrowname","upperleft","skippedcell","panedivider","unhideleft","unhideright","unhidetop","unhidebottom","colresizebar","rowresizebar","explicitStyles","needcellskip","needprecompute","last","PrecomputeSheetFontsAndLayouts","CalculateColWidthData","CalculateRowHeightData","panenum","CoordInPane","rowpane","colpane","CellInPane","InitializeTable","tableobj","RenderSheet","oldtable","RenderColGroup","RenderColHeaders","RenderSizingRow","RenderRow","rownum","RenderSpacingRow","RenderCell","colnum","noElement","layoutre","dparts","sparts","s","weight","size","family","skiprow","skipcol","skipcoord","borderCollapse","cellSpacing","cellPadding","newrow","colgroupobj","tbodyobj","parentnode","createElement","appendChild","parentNode","replaceChild","newcol","newdiv","cssText","verticalAlign","innerHTML","container","position","unhide","fixPosition","resizeBar","overflow","w","span","sheetattribs","stylestr","CreatePseudoElement","id","colSpan","rowSpan","FormatValueForDisplay","title","classList","add","setStyles","panerowlimits","panecollimits","collow","colhigh","floor","String","fromCharCode","letters","coordToCol","coordToRow","ch","charCodeAt","decodeFromAjax","special_chars","Lookup","list","element","part","GetViewportInfo","innerWidth","innerHeight","horizontalScroll","pageXOffset","verticalScroll","pageYOffset","documentElement","clientWidth","clientHeight","scrollLeft","scrollTop","body","GetElementPosition","offsetLeft","offsetTop","GetComputedStyle","offsetParent","GetElementPositionWithScroll","rect","getBoundingClientRect","GetElementFixedParent","tagName","computedStyle","currentStyle","defaultView","getComputedStyle","LookupElement","array","AssignID","obj","idPrefix","GetCellContents","cellobj","valueformat","valuesubtype","valueinputwidget","formula_name","html_display_value","html_formated_value","format_text_for_display","format_number_for_display","parameters","formula_details","FunctionList","cell_html","checkedValue","parameterValue","index","paramRegExp","RegExp","html","htmlIndex","css","rawvalue","dvsc","dvue","textval","encodeURI","expand_text_link","u","FormatNumber","formatNumberWithFormat","DetermineValueType","tvalue","matches","year","hour","minute","second","denom","intgr","constr","isNaN","slice","navigator","convert_date_gregorian_to_julian","InputConstants","TRUE","FALSE","#N/A","#NULL!","#NUM!","#DIV/0!","#VALUE!","#REF!","#NAME?","url","ParseCellLinkText","pagename","newwin","workspacename","workspace","pageform","urlend","descstart","lastlt","lastIndexOf","lastbrkt","lastbrace","descend","wsend","ConvertSaveToOtherFormat","savestr","outputformat","dorecalc","clipextents","div","ele","ConvertOtherFormatToSave","inputstr","inputformat","inquote","maxc","SetConvertedCell","TableEditor","toplevel","fullgrid","noEdit","tablewidth","tableheight","inputBox","inputEcho","verticaltablecontrol","horizontaltablecontrol","logo","cellhandles","busy","ensureecell","deferredCommands","deferredEmailCommands","gridposition","headposition","firstscrollingrow","firstscrollingrowtop","lastnonscrollingrow","lastvisiblerow","firstscrollingcol","firstscrollingcolleft","lastnonscrollingcol","lastvisiblecol","rowpositions","colpositions","ecell","workingvalues","imageprefix","pageUpDnAmount","recalcFunction","EditorSheetStatusCallback","ctrlkeyFunction","charname","sel","cliptext","MoveECell","RangeAnchor","RangeExtend","pasteTextarea","GetEditorCellElement","ECellReadonly","EditorScheduleSheetCommands","display","focus","select","blur","KeyboardFocus","pastescclipboard","clipstr","ntvf","newntvf","prompt","CtrlSEditor","StatusCallback","MoveECellCallback","RangeChangeCallback","SettingsCallbacks","CreateTableEditor","ResizeTableEditor","SaveEditorSettings","LoadEditorSettings","flags","EditorRenderSheet","ignorebusy","EditorStepSet","GetStatuslineString","params","EditorGetStatuslineString","EditorMouseRegister","EditorMouseUnregister","EditorMouseRange","EditorProcessKey","e","EditorAddToInput","DisplayCellContents","EditorDisplayCellContents","EditorSaveEdit","EditorApplySetCommandsToRange","cmdline","MoveECellWithKey","ReplaceCell","UpdateCellCSS","SetECellHeaders","selected","EnsureECellVisible","RangeRemove","CalculateEditorPositions","renderwidgets","DoRenderStep","SchedulePositionCalculations","DoPositionCalculations","CalculateRowPositions","positions","sizes","CalculateColPositions","ScrollRelative","vertical","amount","ScrollRelativeBoth","vamount","hamount","PageRelative","direction","LimitLastPanes","ScrollTableUpOneRow","ScrollTableDownOneRow","ScrollTableLeftOneCol","ScrollTableRightOneCol","StopPropagation","SetMouseMoveUp","RemoveMouseMoveUp","TableControl","CreateTableControl","main","table","tbody","tr","td","layouttable","background","firstChild","InputEcho","CellHandles","userAgent","removeEventListener","SafariPasteFunction","addEventListener","MouseWheelRegister","WheelMove","EditorProcessMouseWheel","KeyboardSetFocus","preventDefault","setting","anchorcoord","save","anchorrow","anchorcol","load","cmdTokens","TriggerIoAction","Email","dcmd","signalstatus","emailcmd","sstr","progress","circ","sum","emailing","emailreponse","calculating","EditorMouseInfo","registeredElements","ignore","mousedowncoord","mouselastcoord","mouseresizecol","mouseresizeclientx","mouseresizedisplay","mouseinfo","ProcessEditorMouseDown","ProcessEditorDblClick","attachEvent","oldelement","detachEvent","splice","event","stopPropagation","cancelBubble","returnValue","move","up","setCapture","releaseCapture","target","srcElement","nodeType","mobj","clientX","clientY","GridMousePosition","rowheader","rowselect","ProcessEditorRowselectMouseDown","ProcessEditorRowsizeMouseDown","colheader","colselect","ProcessEditorColselectMouseDown","ProcessEditorColsizeMouseDown","shiftKey","CmdGotFocus","clickedCell","widget_id","cell_widget","ProcessEditorMouseMove","ProcessEditorMouseUp","inputtext","wval","GetText","partialexpr","SetText","Blur","ShowInputBox","ShowCellHandles","SetDragAutoRepeat","mouseresizecolnum","coltoresize","mousedownclientx","mousecoltounhide","coltounhide","sizedisplay","zIndex","lastChild","childNodes","ProcessEditorColsizeMouseMove","ProcessEditorColsizeMouseUp","newsize","FinishColRowSize","coord1","coord2","coord3","ProcessEditorRowselectMouseMove","ProcessEditorRowselectMouseUp","ProcessEditorColselectMouseMove","ProcessEditorColselectMouseUp","spreadsheetDiv","offsetHeight","mouseresizerownum","rowtoresize","mouseresizerow","mousedownclienty","mouserowtounhide","rowtounhide","ProcessEditorRowsizeMouseMove","ProcessEditorRowsizeMouseUp","AutoRepeatInfo","timer","repeatinterval","repeatcallback","callback","repeatinfo","rowfooter","colfooter","distance","DragAutoRepeat","EditorOpenCellEdit","disabled","Focus","Select","ecoord","erow","ecol","substr","skipOne","valueinfo","fch","oldvalue","EditedTriggerCell","actionFormulaCells","editedCellRef","actionCellId","function_name","delta","mousewheelinfo","wobj","functionobj","ceil","offsetWidth","controlborder","headerColOffset","headerRowOffset","rowindex","colindex","shifted","min","newelement","headercell","totalrows","needed","firstRow","lastRow","ComputeTableControlPositions","ignoreRender","PositionTableControlElements","toprow","offset","trowobj","leftcol","cellposition","dv","dh","vplen","vlimit","hplen","hlimit","newfirst","totalsize","current","panes","lastpane","lastvisible","sizearray","defaultsize","plen","oldrownum","newbottomrow","oldchild","bottomrownum","rowneedsrefresh","maxrowspan","newrownum","insertBefore","InputBox","onmousedown","InputBoxOnMouseDown","formulabar","InputBoxDisplayCellContents","show","ShowInputEcho","newtext","InputBoxFocus","selection","createRange","duplicate","moveToElementText","collapse","selectionStart","selectionEnd","inputbox","Keyboard","focusTable","interval","hint","functionbox","DragRegister","MouseDown","DragFunctionStart","MouseMove","DragFunctionPosition","MouseUp","Disabled","positionobj","SetInputEchoText","inputecho","clearInterval","setInterval","InputEchoHeartbeat","fname","fstr","newstr","FillFunctionInfo","FunctionArgString","InputEchoMouseDown","noCursorSuffix","movedmouse","draghandle","imagetype","dragpalette","dragtooltip","fillinghandle","CellHandlesMouseMoveOnHandle","CellHandlesMouseDown","moveshow","doshow","colinc","rowinc","mouseDown","whichhandle","SegmentDivHit","CellHandlesHoverTimeout","segtable","divWithMouseHit","x","y","len","sqrt","pow","quadrant","dragtype","filltype","startingcoord","startingX","startingY","CellHandlesMouseMove","CellHandlesMouseUp","crstart","crend","CellHandlesDragAutoRepeat","abs","newcoord","vscroll","hscroll","cstr","cmdtype","cmdtype2","sizec","sizer","deltac","deltar","endcap","paneslider","lessbutton","morebutton","scrollarea","thumb","endcapstart","panesliderstart","lessbuttonstart","morebuttonstart","scrollareastart","scrollareaend","scrollareasize","thumbpos","controlthickness","sliderthickness","buttonthickness","thumbthickness","minscrollingpanesize","control","functions","vh","SCLoc","LocalizeString","backgroundImage","TCPSDragFunctionStart","TCPSDragFunctionMove","TCPSDragFunctionStop","repeatwait","normalstyle","downstyle","hoverstyle","Repeat","ButtonRegister","ScrollAreaClick","TCTDragFunctionStart","TCTDragFunctionMove","TCTDragFunctionStop","buttoninfo","bobj","clickpos","border","realend","draginfo","dobj","trackingline","offsetY","offsetX","thumbstatus","rowmsgele","rowpreviewele","thumbcontext","pane","TCTDragFunctionRowSetStatus","msg","thumbrowshown","DragInfo","draggingElement","startX","startY","startZ","relativeOffset","horizontal","parent","DragMouseDown","DragUnregister","DragMouseMove","DragMouseUp","ButtonInfo","buttonElement","doingHover","buttonDown","paramobj","ButtonMouseDown","ButtonMouseOver","ButtonMouseOut","MouseOver","MouseOut","ButtonMouseUp","ButtonRepeat","MouseWheelInfo","ProcessMouseWheel","passThru","wheelDelta","detail","keyboardTables","specialKeysCommon",8,9,13,25,27,33,34,35,36,37,38,39,40,45,46,113,"specialKeysIE","controlKeysIE",65,67,83,86,88,90,"specialKeysOpera","controlKeysOpera","specialKeysSafari",63232,63233,63234,63235,63272,63273,63275,63276,63277,63237,"controlKeysSafari",97,99,115,118,120,122,"ignoreKeysSafari",63236,63238,63239,63240,63241,63242,63243,63244,63245,63246,63247,63289,"specialKeysFirefox","controlKeysFirefox","ignoreKeysFirefox",16,17,18,20,19,44,91,92,112,114,116,117,119,121,123,144,145,224,"areListener","didProcessKey","statusFromProcessKey","repeatingKeyPress","chForProcessKey","onkeydown","ProcessKeyDown","onkeypress","ProcessKeyPress","kt","which","keyCode","ctrlKey","ProcessKey","metaKey","charCode","ft","format_definitions","separatorchar","decimalchar","daynames","daynames3","monthnames3","monthnames","allowedcolors","BLACK","BLUE","CYAN","GREEN","MAGENTA","RED","WHITE","YELLOW","alloweddates","H","M","MM","S","SS","commands","copy","integer_placeholder","fraction_placeholder","decimal","currency","general","separator","date","comparison","section","datevalues","julian_offset","seconds_in_a_day","seconds_in_an_hour","format_string","currency_char","operandstr","fromend","cval","operandstrlc","startval","estartval","hrs","mins","secs","ehrs","emins","esecs","ampmstr","ymd","minOK","thisformat","gotcomparison","compop","compval","cpos","oppos","sectioninfo","decimalscale","scaledvalue","strvalue","strparts","integervalue","fractionvalue","integerdigits2","integerpos","fractionpos","textcolor","textstyle","scfn","isFinite","formatTextWithFormat","negativevalue","zerovalue","FormatNumber_DefaultCurrency","parse_format_string","hascomparison","operators","operands","commas","percent","fractiondigits","integerdigits","hasdate","convert_date_julian_to_gregorian","mspos","sectionstart","thousandssep","factor","LOG10E","day","month","format_defs","lastwasinteger","lastwasslash","lastwasasterisk","lastwasunderscore","quotestr","inbracket","bracketstr","bracketdata","ingeneral","indate","chpos","integerpart","parse_format_bracket","operator","operand","ampstr","juliandate","intFunc","L","N","I","J","K","ParseState","alpha","stringquote","numexp1","numexp2","alphanumeric","specialvalue","space","CharClass","numstart","eof","incoord","quote","specialstart","CharClassTable"," ","!","\"","'","#","$","%","&","(",")","*","+",",","-",".","/","0","1","2","3","4","5","6","7",":","<","=",">","A","B","C","D","E","F","G","O","P","Q","R","T","U","V","W","X","Y","Z","^","_","d","g","h","k","m","o","p","q","z","UpperCaseTable","SpecialConstants","TokenPrecedence","TypeLookupTable","unaryminus","n*","e*","t*","unaryplus","unarypercent","plus","n%","nd","nt","ndt","n$","nl","concat","th","tw","tl","oneargnumeric","twoargnumeric","propagateerror","cclass","haddecimal","last_token","last_token_type","last_token_text","parsestate","charclass","charclasstable","uppercasetable","pushtoken","ParsePushToken","coordregex","twochrop","topcode","opcode","allowrangereturn","revpolish","ConvertInfixToPolish","EvaluatePolish","pii","tprecedence","tstackprecedence","token_precedence","parsestack","function_start","debug_log","DebugLog","rii","prii","value1","value2","tostype","tostype2","resulttype","cond","vmatch","smatch","lookup_result_type","LookupResultType","typelookup","operand_as_number","OperandAsNumber","operand_as_text","OperandAsText","operand_value_and_type","OperandValueAndType","operands_as_coord_on_sheet","OperandsAsCoordOnSheet","missingOperandError","PushOperand","parameterInfo","OperandsAsRangeOnSheet","CalculateFunction","type1","type2","table1","TopOfStackValueAndType","stacklen","operandinfo","cellvtype","coordsheet","StepThroughRangeDown","FindInSheetCache","PlainCoord","OperandAsCoord","OperandAsType","OperandAsRange","operandtype","othersheet","OperandAsSheetName","nvalue","isEnd","specialc","startedwalk","checknamecirc","rangevalue","sequence","sheet1","rp","OrderRangeParts","DecodeRangeParts","sheetdata","coordsheetdata","col1num","ncols","row1num","nrows","FunctionClasses","FunctionArgDefs","StoreIoEventFormula","operand_reverse","io_parameters","Clone","reverse","ioTimeTriggerList","radioGroupList","PushTriggerTime","coordA1","sheetData","triggerTimeCellId","currentTriggerTimeList","rangeinfo","cellCoord","ArrayValuesEqual","timeZoneOffsetMins","getTimezoneOffset","start_1_1_1970","triggerUTCTimeList","toString","triggerCellId","PushTriggerCord","cellcr","formDataViewer","CurrentSpreadsheetControlObject","CurrentSpreadsheetViewerObject","loaded","formFields","LoadFormFields","formFieldName","sheetCmd","formFieldsLength","headerCoord","valueCoord","sheetCmdTwo","destination","source","property","A1","A2","fobj","foperand","ffunc","argnum","CopyFunctionArgs","FunctionArgsError","FunctionSpecificError","errortype","CheckForErrorValue","classes","cname","items","nargs","fdata","adef","SeriesFunctions","maxval","minval","mk","sk","mk1","sk1","typelookupplus","resulttypesum","counta","countblank","product","SumProductFunction","products","DSeriesFunctions","dbrange","fieldname","criteriarange","dbinfo","criteriainfo","fieldasnum","targetcol","criteriafieldnums","testok","criteriacr","criteria","testcol","testcr","countmatches","FieldToColnum","criterianum","CRITERIAROW","TestCriteria","fieldtype","LookupFunctions","lookupvalue","rangelookup","offsetvalue","cincr","rincr","previousOK","csave","rsave","IndexFunction","indexinfo","CountifSumifFunctions","sumrange","f2operand","SumifsFunction","ranges","criterias","all_good","IfFunction","op1","op2","DateFunction","TimeFunction","hours","minutes","seconds","DMYFunctions","dtype","doffset","datevalue","HMSFunctions","fraction","datetime","ExactFunction","v1type","v2type","ArgList","FIND","LEFT","LEN","LOWER","MID","PROPER","REPLACE","REPT","RIGHT","SUBSTITUTE","TRIM","HEXCODE","UPPER","StringFunctions","start","numargs","argdef","operand_value","operand_type","word","fulltext","oldtext","code","next","IsFunctions","NTVFunctions","Math1Functions","acos","asin","atan","cos","PI","exp","sin","tan","Math2Functions","xval","yval","quotient","atan2","LogFunction","RoundFunction","round","CeilingFloorFunctions","sig","AndOrFunctions","NotFunction","ChooseFunction","cindex","ColumnsRowsFunctions","ZeroArgFunctions","tzoffset","nowdays","getTime","volatile","NOW","TODAY","random","RAND","DDBFunction","method","depreciation","accumulateddepreciation","cost","salvage","lifetime","period","SLNFunction","SYDFunction","sumperiods","InterestFunctions","dval","eval","fval","pv","fv","rate","payment","paytype","guess","part1","part2","part3","part4","part5","olddelta","maxloop","tries","oldrate","aval","bval","epsilon","NPVFunction","resulttypenpv","IRRFunction","oldsum","rangeoperand","cashflows","IoFunctions","parameter","repeatIndex","wantedType","argList","BUTTON","IMAGEBUTTON","EMAIL","EMAILIF","EMAILONEDIT","EMAILAT","EMAILONEDITIF","EMAILATIF","SUBMIT","TEXTBOX","AUTOCOMPLETE","SELECT","CHECKBOX","RADIOBUTTON","COPYVALUE","COPYFORMULA","INSERT","DELETEIF","COMMAND","COMMANDIF","PANEL","SPLASH","STYLE","repeatCount","parameterType","validParameterType","getStandardizedList","cssParameter","optionSource","options","optionRegExp","showindices","firstPanelIndex","splashdone","showrows","showcols","parameterIndex","showPanelFound","showIndex","panelCoordData","getStandardizedCoords","spreadsheet","ss","forceRender","lastShowDimension","showGridDimension","lastIndex","sheetHideList","showList","getIndexOf","arrayIndex","sheetHideIndex","getRowIndex","AddAutocomplete","autocompleteSource","ui","autocomplete","filter","term","matcher","escapeRegex","grep","label","minLength","autoFocus","AutoComplete","change","Button","conditionsParameter","parameterdata","getStandardizedValues","sheetCommandList","CopyValueToRange","CopyFormulaToRange","insertCommand","colOffset","rowOffset","insertcellCoord","cellcoord","sourceDataIndex","copyCellRange","deleteCommand","criteriaParameter","testRangeParameter","criteriaValue","celldata","commandsParameter","conditionCell","cellCommand","trim","formulaData","sheetCommand","destCellCoord","cellValueType","cellDataValue","cellFormula","sourceData","emailFormulaCellId","optionalTriggerCellId","parameterValues","parameterCellRefs","maxRangeSize","rangeSizeCounter","conditionIndex","toAddressParamOffset","setStatusBarMessage","emailContentsList","rangeIndex","conditionRangeIndex","toaddressRangeIndex","subjectsRangeIndex","bodyRangeIndex","emailContents","Submit","formDataValues","getFullYear","getMonth","getDate","getHours","getMinutes","getSeconds","colIndex","SelectList","selectListCellId","getHTMLselectListCellValue","selectListWidget","updateInputWidgetFormula","autoCompleteCellId","getHTMLAutoCompleteCellValue","autoCompleteWidget","TextBox","textBoxCellId","getHTMLTextBoxCellValue","textBoxWidget","CheckBox","checkBoxCellId","getHTMLCheckBoxCellValue","checkBoxWidget","checked","RadioButton","radioButtonGroupName","getHTMLRadioButtonValue","radioButtonWidget","each","attr","widgetCellId","getHTMLWidgetCellValue","inputValue","paramIndex","UpdateFormDataSheet","formCellId","parameterData","getStandardizedParameter","listParameter","listValues","includeCellCoord","includeCellData","constantDatatype","sourcerangeinfo","sourceCoord","sheets","constants","asloaded","recalcing","recalcdone","loadsheet","sfsc","nsheetname","newsheet","sfscc","newsheetname","recalcstate","scffi","scfsc","comparitor","basestring","basevalue","testvalue","search","Popup","Types","Controls","Current","Create","pt","SetValue","sp","spt","spc","spcdata","changedcallback","SetDisabled","Hide","GetValue","Initialize","Reset","CClick","Show","Close","Cancel","CreatePopupDiv","mainele","backgroundColor","moveable","dragregistered","EnsurePosition","GetLayoutValues","popup","popupele","DestroyPopupDiv","RGBToHex","rgbvals","ToHex","HexDigits","FromHex","HexToRGB","makeRGB","splitRGB","rgb","List","spcid","custom","skip","cancel","MakeCustom","customele","listdiv","contentele","MakeList","ensureWithin","bg","SPLoc","ItemClicked","oele","nele","CustomToList","CustomOK","rowele","ColorChooser","spca","sampleWidth","sampleHeight","img","backgroundImageDefault","backgroundPosition","backgroundImageDisabled","CreateGrid","padding","grid","fontSize","borderRight","backgroundRepeat","marginTop","defaultbox","onclick","DefaultClicked","CustomClicked","CloseOK","GridMouseDown","DetermineColors","SetColors","gridToG","sptc","steps","commonrgb","mousedown","gpos","newrgb","oldrgb","ControlClicked","cid","CustomToGrid","SpreadsheetControl","requestedHeight","requestedWidth","requestedSpaceBelow","viewheight","tabs","tabnums","tabreplacements","currentTab","views","editorDiv","sortrange","moverange","multipartBoundary","toolbarbackground","tabbackground","tabselectedCSS","tabplainCSS","toolbartext","formulabarheight","statuslineheight","statuslineCSS","ExportCallback","statusline","SpreadsheetControlStatuslineCallback","statuslineid","recalcid1","recalcid2","movefrom","formulabuttons","formulafunctions","image","tooltip","DoFunctionList","multilineinput","DoMultiline","link","DoLink","DoSum","findbuttons","SearchUp","SearchDown","edit","oncreate","settings","view","SettingsControls","SettingControlReset","cellattribs","SettingsControlLoadPanel","values","sheetspanel","cellspanel","SpreadsheetControlSettingsSwitch","onclickFocus","viewobj","colorchooser","formatnumber","initialdata","formattext","textalignhoriz","numberalignhoriz","cformatnumber","cformattext","cfontfamily","cfontlook","cfontsize","calignhoriz","calignvert","ctextcolor","cbgcolor","cbt","cbr","cbb","cbl","cpadtop","cpadright","cpadbottom","cpadleft","SettingsControlInitializePanel","replacements","itemtitle","regex","replacement","sectiontitle","parttitle","itembody","bodypart","divStyle","SpreadsheetControlSortOnclick","SpreadsheetControlSortSave","SpreadsheetControlSortLoad","audit","ObjToSource","check","na","SpreadsheetControlCommentOnclick","onunclick","SpreadsheetControlCommentOnunclick","SpreadsheetControlNamesOnclick","SpreadsheetControlNamesOnunclick","SpreadsheetControlClipboardOnclick","InitializeSpreadsheetControl","node","spacebelow","DoOnResize","SizeSSDiv","ExecuteCommand","combostr","SpreadsheetControlExecuteCommand","CreateSheetHTML","SpreadsheetControlCreateSheetHTML","CreateSpreadsheetSave","otherparts","SpreadsheetControlCreateSpreadsheetSave","DecodeSpreadsheetSave","SpreadsheetControlDecodeSpreadsheetSave","CreateCellHTML","SpreadsheetControlCreateCellHTML","CreateCellHTMLSave","SpreadsheetControlCreateCellHTMLSave","child","vname","button","bele","SCLocSS","LocalizeSubstrings","Buttons","button_undo","button_redo","button_copy","button_cut","button_paste","button_pasteformats","button_lock","button_unlock","button_delete","button_filldown","button_fillright","button_movefrom","button_movepaste","button_moveinsert","button_alignleft","button_aligncenter","button_alignright","button_borderon","button_borderoff","button_swapcolors","button_merge","button_insertrow","button_insertcol","button_deleterow","button_deletecol","button_hiderow","button_hidecol","button_recalc","ISCButtonHoverBackground","DoButtonCmd","formulabarDiv","src","skipImagePrefix","marginLeft","input","searchBar","append","on","FindInSheet","keyup","CalculateSheetNonViewHeight","nonviewheight","appViewDiv","formDataDiv","SpreadsheetViewer","InitializeSpreadsheetViewer","statuslineDiv","paddingTop","paddingBottom","SetSpreadsheetControlObject","nodeIndex","LocalizeStringList","csco","needresize","resized","nodestyle","newval","fudgefactorX","fudgefactorY","marginBottom","marginRight","SetTab","newtab","tname","newtabnum","newview","menutabs","tools","needsresize","onresize","rele1","rele2","UpdateSortRangeProposal","LoadColumnChoosers","nrange","rparts","sele","oldindex","selectedIndex","Option","cl","clele","slist","slistele","rele","lele","SpreadsheetCmdTable","slists","min_col","max_col","min_row","max_row","visibility","SpreadsheetCmdLookup","SpreadsheetCmdSLookup","cut","paste","pasteformats","lock","unlock","delete","filldown","erase","borderon","borderoff","merge","unmerge","align-left","align-center","align-right","align-default","insertrow","insertcol","deleterow","deletecol","hiderow","hidecol","redo","eobj","cellHTML","fcl","idp","GetFunctionNamesStr","GetFunctionInfoStr","vp","FillFunctionNames","scsc","FunctionClassChosen","FunctionChosen","HideFunctions","DoFunctionPaste","mele","HideMultiline","DoMultilineClear","DoMultilinePaste","setformat","HideLink","DoLinkClear","DoLinkPaste","ltsym","gtsym","obsym","cbsym","descele","urlele","pagenameele","workspaceele","formatele","foundvalue","searchstatus","search_cells","cellvalue","SearchSheet","selected_cell","new_cell","textContent","n_options","SpreadsheetControlCommentMoveECell","SpreadsheetControlCommentDisplay","SpreadsheetControlCommentSet","SpreadsheetControlNamesRangeChange","SpreadsheetControlNamesFillNameList","SpreadsheetControlNamesChangedName","currentname","SpreadsheetControlNamesSetValue","SpreadsheetControlNamesSave","SpreadsheetControlNamesDelete","clipele","SpreadsheetControlClipboardFormat","SpreadsheetControlClipboardLoad","savetype","SpreadsheetControlClipboardClear","SpreadsheetControlClipboardExport","sheettable","celltable","sheettoolbar","celltoolbar","SettingsControlSetCurrentPanel","SettingsControlSave","sc","panelobj","CurrentPanel","SettingsControlUnloadPanel","partname","extranl","otherpartsstr","otherpartsnames","mpregex","searchinfo","boundary","boundaryregex","blanklineregex","ending","partlist","exec","pnum","end","PopupChangeCallback","ctrlname","ctrl","str1","str2","cv","fontFamily","paddingRight","paddingLeft","borderTop","borderBottom","borderLeft","BorderSideGetValue","textAlign","fontStyle","fontWeight","PopupListSetValue","PopupListGetValue","ctl","PopupListInitialize","otext","InitialData","optionvals","PopupListReset","PopupList","OnReset","ChangedCallback","ColorChooserSetValue","ColorChooserGetValue","ColorChooserInitialize","ColorChooserReset","BorderSideSetValue","idname","idstart","BorderSideInitialize","SettingsControlOnchangeBorder","nameparts","ctrlidsuffix","ctrltype","BorderSide","OnClick","ColorComboOnClick","thickness","OtherSaveParts","whichpart","strtoedit","editbox","ebta","CtrlSEditorDone","idprefix","edittextarea","_view","SpreadsheetViewerStatuslineCallback","hasStatusLine","statuslineHTML","statuslineFull","noRecalc","repeatingMacroTimer","repeatingMacroInterval","repeatingMacroCommands","LoadSave","SpreadsheetViewerLoadSave","SpreadsheetViewerDecodeSpreadsheetSave","spreadsheetobj","rmstr","t2","startupmacro","repeatingmacro","SpreadsheetViewerDoRepeatingMacro","GetSpreadsheetViewerObject","repeatmacro","SpreadsheetViewerRepeatMacroCommand","SpreadsheetViewerStopRepeatingMacro","SpreadsheetViewerDoButtonCmd","csvo","slstr","SpreadsheetViewerCreateSheetHTML","hasreturnonly","self","thread","cb","ms","nextTick","Class","classDefinition","classWrapper","$1","baseClassName","$2","$3","incValues","strict","option","klass","global","init","isa","baseName","superFunc","addGlobal","newGlobals","extend","pairs","ii","ll","eval_strict","apply","last_key","globals","globals_after","proto","instantiate","output","content","insert","receiver","begin_node","tag","_wafl","onload","_label","imageName","_href","end_node","text_node","parse","grammar","create_grammar","parse_blocks","container_type","types","blocks","matched","find_match","handle_match","JSON","stringify","subparse","matched_func","re","capture","lookbehind","parse_phrases","phrases","begin","filtered_text","parser","matched_block","matched_phrase","$4","all_blocks","all_phrases","re_huggy","brace1","brace2","im_types","yahoo","ymsgr","callto","callme","skype","aim","im_label","im_re","key","re_list","bullet","filter_out","exclusion","_all_blocks","_all_phrases","ol","ul","blockquote","subl","li","li2","_html","pre","hr","hx","empty","else","waflparagraph","waflphrase","asis","wikilink","wikilink2","file","href","im","mail","tt","del","Error","isWindow","isFunction","inArray","readyState","ready","getAttribute","parseJSON","isEmptyObject","acceptData","expando","cache","guid","toJSON","noop","camelCase","isArray","map","cleanData","deleteExpando","db","activeElement","eb","fb","createDocumentFragment","vb","getElementsByTagName","querySelectorAll","nodeName","wb","defaultChecked","xb","ownerDocument","yb","find","zb","qb","removeAttribute","Ab","_data","Bb","hasData","events","handle","Cb","noCloneEvent","removeEvent","outerHTML","html5Clone","defaultSelected","defaultValue","Fb","appendTo","getDefaultComputedStyle","detach","Gb","Eb","Db","contentWindow","contentDocument","write","close","Mb","get","Vb","Ub","Wb","Xb","Qb","Yb","Zb","Jb","boxSizing","Kb","Ib","boxSizingReliable","parseFloat","$b","gc","_b","now","hc","opacity","ic","fc","jc","_queueHooks","unqueued","fire","always","overflowX","overflowY","inlineBlockNeedsLayout","zoom","shrinkWrapBlocks","bc","hidden","done","_removeData","kc","cssHooks","expand","lc","ec","Deferred","elem","startTime","duration","tweens","run","notifyWith","resolveWith","promise","props","opts","specialEasing","originalProperties","originalOptions","createTween","Tween","easing","stop","rejectWith","fx","anim","complete","fail","Mc","Nc","dataTypes","Jc","Oc","ajaxSettings","flatOptions","Pc","contents","mimeType","getResponseHeader","converters","Qc","responseFields","dataFilter","dataType","Wc","Sc","$c","XMLHttpRequest","_c","ActiveXObject","ed","parentWindow","hasOwnProperty","fn","jquery","constructor","selector","toArray","pushStack","prevObject","eq","isPlainObject","isReady","isNumeric","ownLast","globalEval","execScript","makeArray","Object","proxy","support","getElementsByClassName","qsa","ob","setAttribute","pb","mb","cacheLength","gb","hb","attrHandle","ib","sourceIndex","nextSibling","jb","kb","lb","nb","preFilter","dir","rb","sb","ub","relative","TAG","uniqueSort","getById","ID","ab","needsContext","CLASS","ATTR","PSEUDO","CHILD","bool","isXML","setDocument","attributes","createComment","getElementsByName","getAttributeNode","matchesSelector","webkitMatchesSelector","mozMatchesSelector","oMatchesSelector","msMatchesSelector","disconnectedMatch","compareDocumentPosition","contains","sortDetached","specified","detectDuplicates","sortStable","getText","nodeValue","selectors","createPseudo","~","pseudos","setFilters","not","has","innerText","lang","location","hash","hasFocus","tabIndex","enabled","header","even","odd","lt","gt","nth","radio","checkbox","password","submit","reset","filters","compile","expr","unique","isXMLDoc","is","parseHTML","children","prev","sibling","closest","prevAll","addBack","parents","parentsUntil","nextAll","nextUntil","prevUntil","siblings","once","memory","stopOnFalse","disable","remove","locked","fireWith","fired","then","resolve","reject","notify","pipe","when","readyWait","holdReady","trigger","off","frameElement","doScroll","noData","applet ","embed ","object ","removeData","dequeue","clearQueue","access","leadingWhitespace","htmlSerialize","cloneNode","appendChecked","noCloneChecked","checkClone","click","focusin","handler","triggered","dispatch","special","delegateType","bindType","origType","namespace","delegateCount","setup","teardown","Event","isTrigger","namespace_re","noBubble","isPropagationStopped","isDefaultPrevented","_default","fix","delegateTarget","preDispatch","handlers","currentTarget","isImmediatePropagationStopped","handleObj","postDispatch","fixHooks","mouseHooks","keyHooks","fromElement","pageX","clientLeft","pageY","clientTop","relatedTarget","toElement","beforeunload","originalEvent","simulate","isSimulated","defaultPrevented","getPreventDefault","timeStamp","stopImmediatePropagation","mouseenter","mouseleave","submitBubbles","form","_submit_bubble","changeBubbles","propertyName","_just_changed","focusinBubbles","one","triggerHandler","legend","area","param","thead","optgroup","tfoot","colgroup","caption","clone","buildFragment","createTextNode","domManip","prepend","before","after","replaceWith","_evalUrl","prependTo","insertAfter","replaceAll","cssFloat","backgroundClip","clearCloneStyle","Hb","Lb","getPropertyValue","minWidth","maxWidth","runtimeStyle","pixelLeft","swap","reliableHiddenOffsets","pixelPosition","reliableMarginRight","Nb","Ob","Pb","Rb","Sb","Tb","letterSpacing","cssNumber","columnCount","fillOpacity","lineHeight","orphans","widows","cssProps","float","set","margin","toggle","prop","cur","unit","propHooks","step","linear","swing","ac","cc","dc","Animation","tweener","prefilter","speed","speeds","old","fadeTo","animate","finish","timers","slideDown","slideUp","slideToggle","fadeIn","fadeOut","fadeToggle","tick","slow","fast","delay","getSetAttribute","hrefNormalized","checkOn","optSelected","enctype","optDisabled","radioValue","mc","valHooks","scrollHeight","nc","oc","pc","qc","rc","removeAttr","attrHooks","propFix","setAttributeNode","createAttribute","coords","contenteditable","tc","uc","removeProp","for","class","vc","addClass","removeClass","toggleClass","hasClass","hover","unbind","delegate","undelegate","wc","xc","yc","Function","parseXML","DOMParser","parseFromString","async","loadXML","zc","Ac","Bc","Cc","Dc","Ec","Fc","Gc","Hc","Ic","Kc","Lc","active","lastModified","etag","isLocal","processData","contentType","accepts","xml","json","* text","text html","text json","text xml","ajaxSetup","ajaxPrefilter","ajaxTransport","ajax","ifModified","statusText","statusCode","getAllResponseHeaders","setRequestHeader","overrideMimeType","abort","success","crossDomain","traditional","hasContent","headers","beforeSend","send","getJSON","getScript","throws","wrapAll","wrapInner","wrap","unwrap","visible","Rc","Tc","Uc","Vc","encodeURIComponent","serialize","serializeArray","xhr","Xc","Yc","Zc","cors","open","username","xhrFields","onreadystatechange","responseText","script","text script","head","scriptCharset","charset","ad","bd","jsonp","jsonpCallback","cd","animated","dd","setOffset","using","scrollTo","Height","Width","andSelf","fd","jQuery","gd","noConflict","animation","WebkitAnimation","MozAnimation","MsAnimation","OAnimation","closeByEscape","globalID","animationEndEvent","baseClassNames","vex","overlay","closing","defaultOptions","showCloseButton","escapeButtonCloses","overlayClosesOnClick","appendLocation","overlayClassName","overlayCSS","contentClassName","contentCSS","closeClassName","closeCSS","$vex","$vexOverlay","$vexContent","$closeButton","setupBodyClassName","afterOpen","getAllVexes","getVexByID","closeByID","closeAll","beforeClose","afterClose","hideLoading","showLoading","require","buttons","YES","NO","onSubmit","getFormValueOnSubmit","focusFirstInput","defaultAlertOptions","defaultConfirmOptions","buildDialogForm","confirm","placeholder","buttonsToDOM","dialog","_curInst","_keyEvent","_disabledInputs","_datepickerShowing","_inDialog","_mainDivId","_inlineClass","_appendClass","_triggerClass","_dialogClass","_disableClass","_unselectableClass","_currentClass","_dayOverClass","regional","closeText","prevText","nextText","currentText","monthNames","monthNamesShort","dayNames","dayNamesShort","dayNamesMin","weekHeader","dateFormat","firstDay","isRTL","showMonthAfterYear","yearSuffix","_defaults","showOn","showAnim","showOptions","defaultDate","appendText","buttonText","buttonImage","buttonImageOnly","hideIfNoPrevNext","navigationAsDateFormat","gotoCurrent","changeMonth","changeYear","yearRange","showOtherMonths","selectOtherMonths","showWeek","calculateWeek","iso8601Week","shortYearCutoff","minDate","maxDate","beforeShowDay","beforeShow","onSelect","onChangeMonthYear","onClose","numberOfMonths","showCurrentAtPos","stepMonths","stepBigMonths","altField","altFormat","constrainInput","showButtonPanel","autoSize","en","dpDiv","datepicker","_isDisabledDatepicker","inline","_refresh","_trigger","version","BACKSPACE","COMMA","DELETE","DOWN","END","ENTER","ESCAPE","HOME","PAGE_DOWN","PAGE_UP","PERIOD","SPACE","TAB","UP","scrollParent","uniqueId","removeUniqueId","focusable","tabbable","outerWidth","outerHeight","ie","disableSelection","enableSelection","plugin","plugins","widget","Widget","_createWidget","_proto","_childConstructors","_super","_superApply","widgetEventPrefix","widgetName","widgetFullName","bridge","_init","defaultElement","create","uuid","eventNamespace","bindings","hoverable","_on","destroy","_getCreateOptions","_create","_getCreateEventData","_destroy","_setOptions","_setOption","enable","_off","_delay","_hoverable","_focusable","focusout","effect","effects","mouseup","_mouseInit","_mouseDown","started","_mouseDestroy","_mouseMoveDelegate","_mouseUpDelegate","_mouseMoved","_mouseStarted","_mouseUp","_mouseDownEvent","_mouseCapture","mouseDelayMet","_mouseDelayTimer","_mouseDistanceMet","_mouseDelayMet","_mouseStart","_mouseMove","documentMode","_mouseDrag","_mouseStop","scrollbarWidth","getScrollInfo","isDocument","scrollWidth","getWithinInfo","of","within","collision","at","my","targetWidth","targetHeight","elemWidth","elemHeight","collisionPosition","collisionWidth","collisionHeight","important","fit","flip","flipfit","mouse","addClasses","axis","connectToSortable","containment","cursorAt","helper","iframeFix","refreshPositions","revert","revertDuration","scope","scroll","scrollSensitivity","scrollSpeed","snap","snapMode","snapTolerance","drag","_setPositionRelative","_setHandleClassName","_removeHandleClassName","destroyOnClear","_blurActiveElement","_getHandle","_blockFrames","iframeBlocks","_unblockFrames","handleElement","_createHelper","_cacheHelperProportions","ddmanager","_cacheMargins","cssPosition","hasFixedAncestor","positionAbs","_refreshOffsets","originalPosition","_generatePosition","originalPageX","originalPageY","_adjustOffsetFromHelper","_setContainment","_clear","dropBehaviour","prepareOffsets","_normalizeRightBottom","dragStart","margins","_getParentOffset","_getRelativeOffset","_convertPositionTo","_uiHash","drop","dropped","dragStop","helperProportions","_isRootNode","relativeContainer","cancelHelperRemoval","sortables","sortable","isOver","_storedCSS","_helper","_intersectsWith","containerCache","_parent","currentItem","fromOutside","_revert","_cursor","_opacity","scrollParentNotHidden","overflowOffset","snapElements","snapping","release","snapItem","_zIndex","draggable","accept","activeClass","greedy","hoverClass","tolerance","activate","deactivate","out","over","isover","isout","proportions","_addToManager","droppables","_splice","_activate","_deactivate","_over","_out","_drop","droppable","intersect","absolute","default","greedyChild","alsoResize","animateDuration","animateEasing","aspectRatio","autoHide","ghost","handles","maxHeight","minHeight","resize","_num","_isNumber","_hasScroll","_aspectRatio","originalElement","_proportionallyResizeElements","resizable","elementIsWrapper","originalResizeStyle","_proportionallyResize","se","sw","ne","nw","_handles","_renderAxis","mouseover","resizing","_renderProxy","originalSize","sizeDiff","originalMousePosition","_propagate","_change","_updatePrevProperties","_updateVirtualBoundaries","_updateRatio","_respectSize","_updateCache","_applyChanges","prevPosition","prevSize","_vBoundaries","_getPaddingPlusBorderDimensions","outerDimensions","elementOffset","containerElement","containerOffset","containerPosition","parentData","containerSize","autoRefresh","selecting","unselected","unselecting","dragged","refresh","$element","startselected","selectees","opos","connectWith","dropOnEmpty","forcePlaceholderSize","forceHelperSize","beforeStop","receive","update","_isOverAxis","_isFloating","instance","reverting","_refreshItems","_removeCurrentsFromItems","currentContainer","domPosition","_createPlaceholder","storedCursor","storedStylesheet","_storedOpacity","_storedZIndex","_preserveHelperProportions","containers","dragging","lastPositionAbs","_intersectsWithPointer","_intersectsWithSides","_rearrange","_contactContainers","_noFinalSort","_getItemsAsjQuery","connected","attribute","expression","forcePointerForContainers","floating","_getDragVerticalDirection","_getDragHorizontalDirection","_connectWith","toleranceElement","refreshContainers","_createTrPlaceholder","counter","sender","collapsible","heightStyle","icons","activeHeader","beforeActivate","hideProps","borderTopWidth","borderBottomWidth","showProps","prevShow","prevHide","_processPanels","panel","_createIcons","_destroyIcons","_setupEvents","_keydown","altKey","_eventHandler","_panelKeyDown","panels","_findActive","aria-selected","aria-expanded","aria-hidden","keydown","oldHeader","oldPanel","newHeader","newPanel","_toggle","_animate","_toggleComplete","submenu","menus","role","activeMenu","mouseHandled","mousedown .ui-menu-item","click .ui-menu-item","mouseenter .ui-menu-item","previousFilter","mouseleave .ui-menu","collapseAll","_closeOnDocumentClick","previousPage","nextPage","_move","previous","filterTimer","_filterMenuItems","_isDivider","_itemRole","menu","listbox","_scrollIntoView","_close","_startOpening","_open","isFirstItem","isLastItem","response","requestIndex","pending","isMultiLine","valueMethod","isNewMenu","_value","_searchTimeout","keypress","selectedItem","cancelBlur","searching","_initSource","_appendTo","menufocus","liveRegion","menuselect","aria-live","aria-relevant","_search","cancelSearch","_response","__response","_normalize","_suggest","_renderMenu","_resizeMenu","_renderItemData","_renderItem","messages","noResults","results","primary","secondary","_determineButtonType","hasTitle","_resetButton","markerClassName","maxRows","_widgetDatepicker","setDefaults","_attachDatepicker","_newInst","_connectDatepicker","_inlineDatepicker","selectedDay","selectedMonth","selectedYear","drawMonth","drawYear","_attachments","_doKeyDown","_doKeyPress","_doKeyUp","_autoSize","_disableDatepicker","_get","_showDatepicker","alt","_lastInput","_hideDatepicker","setMonth","setDate","getDay","_formatDate","_setDate","_getDefaultDate","_updateDatepicker","_updateAlternate","_dialogDatepicker","_dialogInst","_dialogInput","_pos","blockUI","_destroyDatepicker","_enableDatepicker","_getInst","_optionDatepicker","_getDateDatepicker","_getMinMaxDate","_changeDatepicker","_refreshDatepicker","_setDateDatepicker","_setDateFromField","_getDate","_selectDay","_adjustDate","_clearDate","_gotoToday","_possibleChars","lastVal","parseDate","_getFormatConfig","_findPos","_checkOffset","_shouldFocusInput","_generateHTML","_attachHandlers","_getNumberOfMonths","yearshtml","_tidyDialog","unblockUI","_checkExternalClick","_adjustInstDate","currentDay","currentMonth","currentYear","_notifyChange","_selectMonthYear","_selectDate","formatDate","noWeekends","_ticksTo1970","_getDaysInMonth","_daylightSavingAdjust","ATOM","COOKIE","ISO_8601","RFC_822","RFC_850","RFC_1036","RFC_1123","RFC_2822","RSS","TICKS","TIMESTAMP","W3C","getYear","_restrictMinMax","_determineDate","setHours","setMinutes","setSeconds","setMilliseconds","today","selectDay","selectMonth","selectYear","te","_canAdjustMonth","_isInRange","_generateMonthYearHeader","_getFirstDayOfMonth","initialized","autoOpen","closeOnEscape","dialogClass","modal","resizeStart","resizeStop","sizeRelatedOptions","resizableRelatedOptions","originalCss","originalTitle","_createWrapper","uiDialog","_createTitlebar","_createButtonPane","_makeDraggable","_makeResizable","_isOpen","_trackFocus","_untrackInstance","_destroyOverlay","_focusedElement","opener","_hide","isOpen","moveToTop","_moveToTop","_focusTabbable","_size","_position","_createOverlay","_show","_makeFocusTarget","uiDialogButtonPane","uiDialogTitlebarClose","_keepFocus","aria-describedby","uiDialogTitlebar","_title","aria-labelledby","uiButtonSet","_createButtons","showText","_minHeight","_trackingInstances","_allowInteraction","oldValue","_constrainedValue","aria-valuemin","valueDiv","_refreshValue","indeterminate","_percentage","toFixed","overlayDiv","aria-valuemax","aria-valuenow","ids","_drawButton","_drawMenu","tabindex","aria-autocomplete","aria-owns","aria-haspopup","_setText","_resizeButton","_buttonEvents","menuItems","_refreshMenu","menuWrap","menuInstance","_setSelection","_select","focusIndex","_getSelectedItem","_parseOptions","_setAria","_toggleAttr","_documentClick","menuWidget","getSelection","removeAllRanges","addRange","rangeCount","getRangeAt","_selectFocusedItem","aria-activedescendant","orientation","slide","numPages","_keySliding","_mouseSliding","_animateOff","_handleIndex","_detectOrientation","_calculateNewMax","_createRange","_createHandles","_valueMin","_handleEvents","elementSize","_normValueFromMouse","_valueMax","_lastChangedValue","_start","_clickOffset","_slide","_stop","_trimAlignValue","_values","_precision","_precisionOf","culture","incremental","numberFormat","page","spin","_draw","_events","mousewheel","spinning","_spin","mousewheelTimer","mousedown .ui-spinner-button","_repeat","mouseup .ui-spinner-button","mouseenter .ui-spinner-button","mouseleave .ui-spinner-button","uiSpinner","_uiSpinnerHtml","_buttonHtml","_adjustValue","_increment","_parse","_format","Globalize","format","isValid","stepUp","_stepUp","stepDown","_stepDown","pageUp","pageDown","beforeLoad","_isLocal","decodeURIComponent","running","_processTabs","_initialActive","anchors","tab","_getPanelForTab","_tabKeydown","_handlePageNav","activating","_focusNextTab","_panelKeydown","_findNextTab","_setupDisabled","_setupHeightStyle","_sanitizeSelector","tablist","_getList","_createPanel","aria-controls","oldTab","newTab","_getIndex","_ajaxSettings","jqXHR","tooltipClass","track","_addDescribedBy","_removeDescribedBy","tooltips","_disable","_updateContent","_enable","_registerCloseHandlers","_find","_tooltip","mousemove","delayedShow","_removeTooltip","hiding"],"mappings":"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","sourcesContent":["// Taken from https://github.com/umdjs/umd/blob/master/templates/returnExports.js\n// (c) by The UMD contributors\n// MIT License: https://github.com/umdjs/umd/blob/master/LICENSE.md\n(function (root, factory) {\n    if (typeof define === 'function' && define.amd) {\n        // AMD. Register as an anonymous module.\n        define([], factory.bind(root, this));\n    } else if (typeof module === 'object' && module.exports) {\n        // Node. Does not work with strict CommonJS, but\n        // only CommonJS-like environments that support module.exports,\n        // like Node.\n        module.exports = factory.call(root, this);\n    } else {\n        // Browser globals (root is window)\n        root.SocialCalc = factory.call(root, this);\n  }\n}(this, function (window) {\n\n//\n/*\n// The module of the SocialCalc package with customizable constants, strings, etc.\n// This is where most of the common localizations are done.\n//\n// (c) Copyright 2008, 2009, 2010 Socialtext, Inc.\n// All Rights Reserved.\n//\n// The contents of this file are subject to the Artistic License 2.0; you may not\n// use this file except in compliance with the License. You may obtain a copy of \n// the License at http://socialcalc.org/licenses/al-20/.\n//\n// Some of the other files in the SocialCalc package are licensed under\n// different licenses. Please note the licenses of the modules you use.\n//\n// Code History:\n//\n// Initially coded by Dan Bricklin of Software Garden, Inc., for Socialtext, Inc.\n// Based in part on the SocialCalc 1.1.0 code written in Perl.\n// The SocialCalc 1.1.0 code was:\n//    Portions (c) Copyright 2005, 2006, 2007 Software Garden, Inc.\n//    All Rights Reserved.\n//    Portions (c) Copyright 2007 Socialtext, Inc.\n//    All Rights Reserved.\n// The Perl SocialCalc started as modifications to the wikiCalc(R) program, version 1.0.\n// wikiCalc 1.0 was written by Software Garden, Inc.\n// Unless otherwise specified, referring to \"SocialCalc\" in comments refers to this\n// JavaScript version of the code, not the SocialCalc Perl code.\n//\n*/\n\nvar SocialCalc;\nif (!SocialCalc) SocialCalc = {};\n\n// *************************************\n//\n// TO LEARN HOW TO LOCALIZE OR CUSTOMIZE SOCIALCALC, PLEASE READ THIS:\n//\n// The constants are all properties of the SocialCalc.Constants object.\n// They are grouped here by what they are for, which module uses them, etc.\n//\n// Properties whose names start with \"s_\" are strings, or arrays of strings,\n// that are good candidates for translation from the English.\n//\n// Other properties relate to visual settings, localization parameters, etc.\n//\n// These values are not used when SocialCalc modules are first loaded.\n// They may be modified before the first use of the routines that use them,\n// e.g., before creating SocialCalc objects.\n//\n// The exceptions are:\n//    TooltipOffsetX and TooltipOffsetY, as described with their definitions.\n//\n// SocialCalc IS NOT DESIGNED FOR USE WITH A TRANSLATION FUNCTION each time a string\n// is used. Instead, language translations may be done by modifying this object.\n//\n// To customize SocialCalc, you may either replace this file with a modified version\n// or you can overwrite the values before use. An example would be to\n// iterate over all the properties looking for names that start with \"s_\" and\n// use some other mechanism to obtain a localized string and replace the values\n// here with those translated values.\n//\n// There is also a function, SocialCalc.ConstantsSetClasses, that may be used\n// to easily switch SocialCalc from using explicit CSS styles for many things\n// to using CSS classes. See the function, below, for more information.\n//\n// *************************************\n\nSocialCalc.Constants = {\n\n//\n// Main SocialCalc module, socialcalc-3.js:\n//\n\n// eddy cellDataType {\n//    datatype: if present, v=numeric value, t=text value, f=formula,\n//              or c=constant that is not a simple number (like \"$1.20\")\n   cellDataType: { \n\tv:\"value\",\n\tn:\"value\",\n\tt:\"text\",\n\tf:\"formula\",\n\tc:\"constant\"\t\n   },\n// }   \n   \n   //*** Common Constants\n\n   textdatadefaulttype: \"t\", // This sets the default type for text on reading source file\n                             // It should normally be \"t\"\n\n   //*** Common error messages\n\n   s_BrowserNotSupported: \"Browser not supported.\", // error thrown if browser can't handle events like IE or Firefox.\n   s_InternalError: \"Internal SocialCalc error (probably an internal bug): \", // hopefully unlikely, but a test failed\n\n   //*** SocialCalc.ParseSheetSave\n\n   // Errors thrown on unexpected value in save file:\n\n   s_pssUnknownColType: \"Unknown col type item\",\n   s_pssUnknownRowType: \"Unknown row type item\",\n   s_pssUnknownLineType: \"Unknown line type\",\n\n   //*** SocialCalc.CellFromStringParts\n\n   // Error thrown on unexpected value in save file:\n\n   s_cfspUnknownCellType: \"Unknown cell type item\",\n\n   //*** SocialCalc.CanonicalizeSheet\n\n   doCanonicalizeSheet: true, // if true, do the canonicalization calculations\n\n   //*** ExecuteSheetCommand\n\n   s_escUnknownSheetCmd: \"Unknown sheet command: \",\n   s_escUnknownSetCoordCmd: \"Unknown set coord command: \",\n   s_escUnknownCmd: \"Unknown command: \",\n\n   //*** SocialCalc.CheckAndCalcCell\n\n   s_caccCircRef: \"Circular reference to \", // circular reference found during recalc\n\n   //*** SocialCalc.RenderContext\n\n   defaultRowNameWidth: \"30\", // used to set minimum width of the row header column - a string in pixels\n   defaultAssumedRowHeight: 15, // used when guessing row heights - number\n   defaultCellIDPrefix: \"cell_\", // if non-null, each cell will render with an ID starting with this\n\n   // Default sheet display values\n\n   defaultCellLayout: \"padding:2px 2px 1px 2px;vertical-align:top;\",\n   defaultCellFontStyle: \"normal normal\",\n   defaultCellFontSize: \"small\",\n   defaultCellFontFamily: \"Verdana,Arial,Helvetica,sans-serif\",\n\n   defaultPaneDividerWidth: \"3\", // a string\n   defaultPaneDividerHeight: \"3\", // a string\n\n   defaultGridCSS: \"1px solid #C0C0C0;\", // used as style to set each border when grid enabled (was #ECECEC)\n\n   defaultCommentClass: \"\", // class added to cells with non-null comments when grid enabled\n   defaultCommentStyle: \"background-repeat:no-repeat;background-position:top right;background-image:url(images/sc-commentbg.gif);\", // style added to cells with non-null comments when grid enabled\n   defaultCommentNoGridClass: \"\", // class added to cells with non-null comments when grid not enabled\n   defaultCommentNoGridStyle: \"\", // style added to cells with non-null comments when grid not enabled\n\n   defaultReadonlyClass: \"\", // class added to readonly cells when grid enabled\n   defaultReadonlyStyle: \"background-repeat:no-repeat;background-position:top right;background-image:url(images/sc-lockbg.gif);\", // style added to readonly cells when grid enabled\n   defaultReadonlyNoGridClass: \"\", // class added to readonly cells when grid not enabled\n   defaultReadonlyNoGridStyle: \"\", // style added to readonly cells when grid not enabled\n   defaultReadonlyComment: \"Locked cell\",\n\n   defaultColWidth: \"80\", // text\n   defaultMinimumColWidth: 10, // numeric\n\n   // For each of the following default sheet display values at least one of class and/or style are needed\n\n   defaultHighlightTypeCursorClass: \"\",\n   defaultHighlightTypeCursorStyle: \"color:#FFF;backgroundColor:#A6A6A6;\",\n   defaultHighlightTypeRangeClass: \"\",\n   defaultHighlightTypeRangeStyle: \"color:#000;backgroundColor:#E5E5E5;\",\n\n   defaultColnameClass: \"\", // regular column heading letters, needs a cursor property \n   defaultColnameStyle: \"overflow:visible;font-size:small;text-align:center;color:#FFFFFF;background-color:#808080;\",\n   defaultSelectedColnameClass: \"\", // column with selected cell, needs a cursor property \n   defaultSelectedColnameStyle: \"overflow:visible;font-size:small;text-align:center;color:#FFFFFF;background-color:#404040;\",\n   defaultRownameClass: \"\", // regular row heading numbers\n   defaultRownameStyle: \"position:relative;overflow:visible;font-size:small;text-align:right;color:#FFFFFF;background-color:#808080;\",\n   defaultSelectedRownameClass: \"\", // column with selected cell, needs a cursor property \n   defaultSelectedRownameStyle: \"position:relative;overflow:visible;font-size:small;text-align:right;color:#FFFFFF;background-color:#404040;\",\n   defaultUpperLeftClass: \"\", // Corner cell in upper left\n   defaultUpperLeftStyle: \"font-size:small;\",\n   defaultSkippedCellClass: \"\", // used if present for spanned cells peeking into a pane (at least one of class/style needed)\n   defaultSkippedCellStyle: \"font-size:small;background-color:#CCC\", // used if present\n   defaultPaneDividerClass: \"\", // used if present for the look of the space between panes (at least one of class/style needed)\n   defaultPaneDividerStyle: \"font-size:small;background-color:#C0C0C0;padding:0px;\", // used if present\n   defaultUnhideLeftClass: \"\",\n   defaultUnhideLeftStyle: \"float:right;width:9px;height:12px;cursor:pointer;background-image:url(images/sc-unhideleft.gif);padding:0;\", // used if present\n   defaultUnhideRightClass: \"\",\n   defaultUnhideRightStyle: \"float:left;width:9px;height:12px;cursor:pointer;background-image:url(images/sc-unhideright.gif);padding:0;\", // used if present\n   defaultUnhideTopClass: \"\",\n   defaultUnhideTopStyle: \"float:left;left:1px;position:absolute;bottom:-4px;width:12px;height:9px;cursor:pointer;background-image:url(images/sc-unhidetop.gif);padding:0;\",\n   defaultUnhideBottomClass: \"\",\n   defaultUnhideBottomStyle: \"float:left;width:12px;height:9px;cursor:pointer;background-image:url(images/sc-unhidebottom.gif);padding:0;\",\n\n   defaultColResizeBarClass: \"col-resize-bar\",\n   defaultRowResizeBarClass: \"row-resize-bar\",\n\n   s_rcMissingSheet: \"Render Context must have a sheet object\", // unlikely thrown error\n\n   //*** SocialCalc.format_text_for_display\n\n   defaultLinkFormatString: '<span style=\"font-size:smaller;text-decoration:none !important;background-color:#66B;color:#FFF;\">Link</span>', // used for format \"text-link\"; you could make this an img tag if desired\n//   defaultLinkFormatString: '<img src=\"images/sc-linkout.gif\" border=\"0\" alt=\"Link out\" title=\"Link out\">',\n   defaultPageLinkFormatString: '<span style=\"font-size:smaller;text-decoration:none !important;background-color:#66B;color:#FFF;\">Page</span>', // used for format \"text-link\"; you could make this an img tag if desired\n\n   //*** SocialCalc.format_number_for_display\n\n   defaultFormatp: '#,##0.0%',\n   defaultFormatc: '[$$]#,##0.00',\n   defaultFormatdt: 'd-mmm-yyyy h:mm:ss',\n   defaultFormatd: 'd-mmm-yyyy',\n   defaultFormatt: '[h]:mm:ss',\n   defaultDisplayTRUE: 'TRUE', // how TRUE shows when rendered\n   defaultDisplayFALSE: 'FALSE',\n\n//\n// SocialCalc Table Editor module, socialcalctableeditor.js:\n//\n\n   //*** SocialCalc.TableEditor\n\n   defaultImagePrefix: \"images/sc_\", // URL prefix for images (e.g., \"/images/sc\")\n   defaultTableEditorIDPrefix: \"te_\", // if present, many TableEditor elements are assigned IDs with this prefix\n   defaultPageUpDnAmount: 15, // number of rows to move cursor on PgUp/PgDn keys (numeric)\n\n   AllowCtrlS: true, // turns on Ctrl-S trapdoor for setting custom numeric formats and commands if true\n\n   //*** SocialCalc.CreateTableEditor\n\n   defaultTableControlThickness: 20, // the short size for the scrollbars, etc. (numeric in pixels)\n   cteGriddivClass: \"\", // if present, the class for the TableEditor griddiv element\n\n   //** SocialCalc.EditorGetStatuslineString -- strings shown on status line\n\n   s_statusline_executing: \"Executing...\",\n   s_statusline_displaying: \"Displaying...\",\n   s_statusline_ordering: \"Ordering...\",\n   s_statusline_calculating: \"Calculating...\",\n   s_statusline_calculatingls: \"Calculating... Loading Sheet...\",\n   s_statusline_doingserverfunc: \"doing server function \",\n   s_statusline_incell: \" in cell \",\n   s_statusline_calcstart: \"Calculation start...\",\n   s_statusline_sum: \"SUM\",\n   s_statusline_recalcneeded: '<span style=\"color:#999;\">(Recalc needed)</span>',\n   s_statusline_circref: '<span style=\"color:red;\">Circular reference: ',\n   s_statusline_sendemail: \"Sending Email \",  // eddy\n   //** SocialCalc.InputBoxDisplayCellContents\n\n   s_inputboxdisplaymultilinetext: \"[Multi-line text: Click icon on right to edit]\",\n\n   //** SocialCalc.InputEcho\n\n   defaultInputEchoClass: \"\", // if present, the class of the popup inputEcho div\n   defaultInputEchoStyle: \"filter:alpha(opacity=90);opacity:.9;backgroundColor:#FFD;border:1px solid #884;\"+\n      \"fontSize:small;padding:2px 10px 1px 2px;cursor:default;\", // if present, pseudo style\n   defaultInputEchoPromptClass: \"\", // if present, the class of the popup inputEcho div\n   defaultInputEchoPromptStyle: \"filter:alpha(opacity=90);opacity:.9;backgroundColor:#FFD;\"+\n      \"borderLeft:1px solid #884;borderRight:1px solid #884;borderBottom:1px solid #884;\"+\n      \"fontSize:small;fontStyle:italic;padding:2px 10px 1px 2px;cursor:default;\", // if present, pseudo style\n   defaultInputEchoHintClass: \"\", // if present, the class of the popup inputEcho div\n   defaultInputEchoHintStyle: \"filter:alpha(opacity=80);opacity:.8;backgroundColor:#884;border:1px solid #884;\"+\n      \"fontSize:small;fontWeight:bold;padding:2px 2px 2px 2px;color:#FFF;position:absolute;top:-20px;cursor:default;\", // if present, pseudo style\n\n   //** SocialCalc.InputEchoText\n\n   ietUnknownFunction: \"Unknown function \", // displayed when typing \"=unknown(\"\n\n   //** SocialCalc.CellHandles\n\n   CH_radius1: 29.0, // extent of inner circle within 90px image\n   CH_radius2: 41.0, // extent of outer circle within 90px image\n   s_CHfillAllTooltip: \"Fill Contents and Formats Down/Right\", // tooltip for fill all handle\n   s_CHfillContentsTooltip: \"Fill Contents Only Down/Right\", // tooltip for fill formulas handle\n   s_CHmovePasteAllTooltip: \"Move Contents and Formats\", // etc.\n   s_CHmovePasteContentsTooltip: \"Move Contents Only\",\n   s_CHmoveInsertAllTooltip: \"Slide Contents and Formats within Row/Col\",\n   s_CHmoveInsertContentsTooltip: \"Slide Contents within Row/Col\",\n   s_CHindicatorOperationLookup: {\"Fill\": \"Fill\", \"FillC\": \"Fill Contents\",\n                                  \"Move\": \"Move\", \"MoveI\": \"Slide\", \n                                  \"MoveC\": \"Move Contents\", \"MoveIC\": \"Slide Contents\"}, // short form of operation to follow drag\n   s_CHindicatorDirectionLookup: {\"Down\": \" Down\", \"Right\": \" Right\",\n                                  \"Horizontal\": \" Horizontal\", \"Vertical\": \" Vertical\"}, // direction that modifies operation during drag\n\n   //*** SocialCalc.TableControl\n\n   defaultTCSliderThickness: 9, // length of pane slider (numeric in pixels)\n   defaultTCButtonThickness: 20, // length of scroll +/- buttons (numeric in pixels)\n   defaultTCThumbThickness: 15, // length of thumb (numeric in pixels)\n\n   //*** SocialCalc.CreateTableControl\n\n   TCmainStyle: \"backgroundColor:#EEE;\", // if present, pseudo style (text-align is textAlign) for main div of a table control\n   TCmainClass: \"\", // if present, the CSS class of the main div for a table control\n   TCendcapStyle: \"backgroundColor:#FFF;\", // backgroundColor may be used while waiting for image that may not come\n   TCendcapClass: \"\",\n   TCpanesliderClass: \"tc-paneslider\",\n   s_panesliderTooltiph: \"Drag to lock pane vertically\", // tooltip for horizontal table control pane slider\n   s_panesliderTooltipv: \"Drag to lock pane horizontally\",\n   TClessbuttonStyle: \"backgroundColor:#AAA;\",\n   TClessbuttonClass: \"\",\n   TClessbuttonRepeatWait: 300, // in milliseconds\n   TClessbuttonRepeatInterval: 20,//100, // in milliseconds\n   TCmorebuttonStyle: \"backgroundColor:#AAA;\",\n   TCmorebuttonClass: \"\",\n   TCmorebuttonRepeatWait: 300, // in milliseconds\n   TCmorebuttonRepeatInterval: 20,//100, // in milliseconds\n   TCscrollareaStyle: \"backgroundColor:#DDD;\",\n   TCscrollareaClass: \"\",\n   TCscrollareaRepeatWait: 500, // in milliseconds\n   TCscrollareaRepeatInterval: 100, // in milliseconds\n   TCthumbClass: \"\",\n   TCthumbStyle: \"backgroundColor:#CCC;\",\n\n   //*** SocialCalc.TCPSDragFunctionStart\n\n   TCPStrackinglineClass: \"tracklingine\", // at least one of class/style for pane slider tracking line display in table control\n   TCPStrackinglineStyle: \"overflow:hidden;position:absolute;zIndex:100;\",\n                           // if present, pseudo style (text-align is textAlign)\n   TCPStrackinglineThickness: \"2px\", // narrow dimension of trackling line (string with units)\n\n\n   //*** SocialCalc.TCTDragFunctionStart\n\n   TCTDFSthumbstatusvClass: \"\", // at least one of class/style for vertical thumb dragging status display in table control\n   TCTDFSthumbstatusvStyle: \"height:20px;width:auto;border:3px solid #808080;overflow:hidden;\"+\n                           \"backgroundColor:#FFF;fontSize:small;position:absolute;zIndex:100;\",\n                           // if present, pseudo style (text-align is textAlign)\n   TCTDFSthumbstatushClass: \"\", // at least one of class/style for horizontal thumb dragging status display in table control\n   TCTDFSthumbstatushStyle: \"height:20px;width:auto;border:1px solid black;padding:2px;\"+\n                           \"backgroundColor:#FFF;fontSize:small;position:absolute;zIndex:100;\",\n                           // if present, pseudo style (text-align is textAlign)\n   TCTDFSthumbstatusrownumClass: \"\", // at least one of class/style for thumb dragging status display in table control\n   TCTDFSthumbstatusrownumStyle: \"color:#FFF;background-color:#808080;font-size:small;white-space:nowrap;padding:3px;\", // if present, real style\n   TCTDFStopOffsetv: 0, // offsets for thumbstatus display while dragging\n   TCTDFSleftOffsetv: -80,\n   s_TCTDFthumbstatusPrefixv: \"Row \", // Text Control Drag Function text before row number\n   TCTDFStopOffseth: -30,\n   TCTDFSleftOffseth: 0,\n   s_TCTDFthumbstatusPrefixh: \"Col \", // Text Control Drag Function text before col number\n\n   //*** SocialCalc.TooltipInfo\n\n   // Note: These two values are used to set the TooltipInfo initial values when the code is first read in.\n   // Modifying them here after loading has no effect -- you need to modify SocialCalc.TooltipInfo directly\n   // to dynamically set them. This is different than most other constants which may be modified until use.\n\n   TooltipOffsetX: 2, // offset in pixels from mouse position (to right on left side of screen, to left on right)\n   TooltipOffsetY: 10, // offset in pixels above mouse position for lower edge\n\n   //*** SocialCalc.TooltipDisplay\n\n   TDpopupElementClass: \"\", // at least one of class/style for tooltip display\n   TDpopupElementStyle: \"border:1px solid black;padding:1px 2px 2px 2px;textAlign:center;backgroundColor:#FFF;\"+\n                        \"fontSize:7pt;fontFamily:Verdana,Arial,Helvetica,sans-serif;\"+\n                        \"position:absolute;width:auto;zIndex:110;\",\n                        // if present, pseudo style (text-align is textAlign)\n\n\n//\n// SocialCalc Spreadsheet Control module, socialcalcspreadsheetcontrol.js:\n//\n\n   //*** SocialCalc.SpreadsheetControl\n\n   SCToolbarbackground: \"background-color:#ffffff;\",\n   SCTabbackground: \"background-color:#CCC;\",\n   SCTabselectedCSS: \"font-size:small;padding:6px 30px 6px 8px;color:#FFF;background-color:#404040;cursor:default;border-right:1px solid #CCC;\",\n   SCTabplainCSS: \"font-size:small;padding:6px 30px 6px 8px;color:#FFF;background-color:#808080;cursor:default;border-right:1px solid #CCC;\",\n   SCToolbartext: \"font-size:x-small;font-weight:bold;color:#888\",\n\n   SCFormulabarheight: 30, // in pixels, will contain a text input box\n\n   SCStatuslineheight: 20, // in pixels\n   SCStatuslineCSS: \"font-size:10px;padding:3px 0px;\",\n\n   // Constants for default Format tab (settings)\n   //\n   // *** EVEN THOUGH THESE DON'T START WITH s_: ***\n   //\n   // These should be carefully checked for localization. Make sure you understand what they do and how they work!\n   // The first part of \"first:second|first:second|...\" is what is displayed and the second is the value to be used.\n   // The value is normally not translated -- only the displayed part. The [cancel], [break], etc., are not translated --\n   // they are commands to SocialCalc.SettingsControls.PopupListInitialize \n\n   SCFormatNumberFormats: \"[cancel]:|[break]:|%loc!Default!:|[custom]:|%loc!Automatic!:general|%loc!Auto w/ commas!:[,]General|[break]:|\"+\n            \"00:00|000:000|0000:0000|00000:00000|[break]:|%loc!Formula!:formula|%loc!Hidden!:hidden|[newcol]:\"+\n            \"1234:0|1,234:#,##0|1,234.5:#,##0.0|1,234.56:#,##0.00|1,234.567:#,##0.000|1,234.5678:#,##0.0000|\"+\n            \"[break]:|1,234%:#,##0%|1,234.5%:#,##0.0%|1,234.56%:#,##0.00%|\"+\n            \"[newcol]:|$1,234:$#,##0|$1,234.5:$#,##0.0|$1,234.56:$#,##0.00|[break]:|\"+\n            \"(1,234):#,##0_);(#,##0)|(1,234.5):#,##0.0_);(#,##0.0)|(1,234.56):#,##0.00_);(#,##0.00)|[break]:|\"+\n            \"($1,234):$#,##0_);($#,##0)|($1,234.5):$#,##0.0_);($#,##0.0)|($1,234.56):$#,##0.00_);($#,##0.00)|\"+\n            \"[newcol]:|1/4/06:m/d/yy|01/04/2006:mm/dd/yyyy|2006-01-04:yyyy-mm-dd|4-Jan-06:d-mmm-yy|04-Jan-2006:dd-mmm-yyyy|January 4, 2006:mmmm d, yyyy|\"+\n            \"[break]:|1\\\\c23:h:mm|1\\\\c23 PM:h:mm AM/PM|1\\\\c23\\\\c45:h:mm:ss|01\\\\c23\\\\c45:hh:mm:ss|26\\\\c23 (h\\\\cm):[hh]:mm|69\\\\c45 (m\\\\cs):[mm]:ss|69 (s):[ss]|\"+\n            \"[newcol]:|2006-01-04 01\\\\c23\\\\c45:yyyy-mm-dd hh:mm:ss|January 4, 2006:mmmm d, yyyy hh:mm:ss|Wed:ddd|Wednesday:dddd|\",\n   SCFormatTextFormats: \"[cancel]:|[break]:|%loc!Default!:|[custom]:|%loc!Automatic!:general|%loc!Plain Text!:text-plain|\"+\n            \"HTML:text-html|%loc!Wikitext!:text-wiki|%loc!Link!:text-link|%loc!Formula!:formula|%loc!Hidden!:hidden|\",\n   SCFormatPadsizes: \"[cancel]:|[break]:|%loc!Default!:|[custom]:|%loc!No padding!:0px|\"+\n            \"[newcol]:|1 pixel:1px|2 pixels:2px|3 pixels:3px|4 pixels:4px|5 pixels:5px|\"+\n            \"6 pixels:6px|7 pixels:7px|8 pixels:8px|[newcol]:|9 pixels:9px|10 pixels:10px|11 pixels:11px|\"+\n            \"12 pixels:12px|13 pixels:13px|14 pixels:14px|16 pixels:16px|\"+\n            \"18 pixels:18px|[newcol]:|20 pixels:20px|22 pixels:22px|24 pixels:24px|28 pixels:28px|36 pixels:36px|\",\n   SCFormatFontsizes: \"[cancel]:|[break]:|%loc!Default!:|[custom]:|X-Small:x-small|Small:small|Medium:medium|Large:large|X-Large:x-large|\"+\n                  \"[newcol]:|6pt:6pt|7pt:7pt|8pt:8pt|9pt:9pt|10pt:10pt|11pt:11pt|12pt:12pt|14pt:14pt|16pt:16pt|\"+\n                  \"[newcol]:|18pt:18pt|20pt:20pt|22pt:22pt|24pt:24pt|28pt:28pt|36pt:36pt|48pt:48pt|72pt:72pt|\"+\n                  \"[newcol]:|8 pixels:8px|9 pixels:9px|10 pixels:10px|11 pixels:11px|\"+\n                  \"12 pixels:12px|13 pixels:13px|14 pixels:14px|[newcol]:|16 pixels:16px|\"+\n                  \"18 pixels:18px|20 pixels:20px|22 pixels:22px|24 pixels:24px|28 pixels:28px|36 pixels:36px|\",\n   SCFormatFontfamilies: \"[cancel]:|[break]:|%loc!Default!:|[custom]:|Verdana:Verdana,Arial,Helvetica,sans-serif|\"+\n                  \"Arial:arial,helvetica,sans-serif|Courier:'Courier New',Courier,monospace|\",\n   SCFormatFontlook: \"[cancel]:|[break]:|%loc!Default!:|%loc!Normal!:normal normal|%loc!Bold!:normal bold|%loc!Italic!:italic normal|\"+\n                  \"%loc!Bold Italic!:italic bold\",\n   SCFormatTextAlignhoriz:  \"[cancel]:|[break]:|%loc!Default!:|%loc!Left!:left|%loc!Center!:center|%loc!Right!:right|\",\n   SCFormatNumberAlignhoriz:  \"[cancel]:|[break]:|%loc!Default!:|%loc!Left!:left|%loc!Center!:center|%loc!Right!:right|\",\n   SCFormatAlignVertical: \"[cancel]:|[break]:|%loc!Default!:|%loc!Top!:top|%loc!Middle!:middle|%loc!Bottom!:bottom|\",\n   SCFormatColwidth: \"[cancel]:|[break]:|%loc!Default!:|[custom]:|[newcol]:|\"+\n                  \"20 pixels:20|40:40|60:60|80:80|100:100|120:120|140:140|160:160|\"+\n                  \"[newcol]:|180 pixels:180|200:200|220:220|240:240|260:260|280:280|300:300|\",\n   SCFormatRecalc: \"[cancel]:|[break]:|%loc!Auto!:|%loc!Manual!:off|\",\n   SCFormatUserMaxCol: \"[cancel]:|[break]:|%loc!Default!:|[custom]:|[newcol]:|\"+\n                  \"Unlimited:0|10:10|20:20|30:30|40:40|50:50|60:60|80:80|100:100|\",\n   SCFormatUserMaxRow: \"[cancel]:|[break]:|%loc!Default!:|[custom]:|[newcol]:|\"+\n                  \"Unlimited:0|10:10|20:20|30:30|40:40|50:50|60:60|80:80|100:100|\",\n\n   //*** SocialCalc.InitializeSpreadsheetControl\n\n   ISCButtonNormalBackground: \"transparent\",\n   ISCButtonBorderNormal: \"none\",\n   ISCButtonBorderHover: \"none\",\n   ISCButtonBorderDown: \"none\",\n   ISCButtonDownBackground: \"#888\",\n\n   //*** SocialCalc.SettingsControls.PopupListInitialize\n\n   s_PopupListCancel: \"[Cancel]\",\n   s_PopupListCustom: \"Custom\",\n\n   // ***\n   //\n   // s_loc_ constants accessed by SocialCalc.LocalizeString and SocialCalc.LocalizeSubstrings\n   //\n   // Used extensively by socialcalcspreadsheetcontrol.js\n   //\n   // ***\n\n   s_loc_align_center: \"Align Center\",\n   s_loc_align_left: \"Align Left\",\n   s_loc_align_right: \"Align Right\",\n   s_loc_alignment: \"Alignment\",\n   s_loc_audit: \"Audit\",\n   s_loc_audit_trail_this_session: \"Audit Trail This Session\",\n   s_loc_auto: \"Auto\",\n   s_loc_auto_sum: \"Auto Sum\",\n   s_loc_auto_wX_commas: \"Auto w/ commas\",\n   s_loc_automatic: \"Automatic\",\n   s_loc_background: \"Background\",\n   s_loc_bold: \"Bold\",\n   s_loc_bold_XampX_italics: \"Bold &amp; Italics\",\n   s_loc_bold_italic: \"Bold Italic\",\n   s_loc_borders: \"Borders\",\n   s_loc_borders_off: \"Borders Off\",\n   s_loc_borders_on: \"Borders On\",\n   s_loc_bottom: \"Bottom\",\n   s_loc_bottom_border: \"Bottom Border\",\n   s_loc_cell_settings: \"CELL SETTINGS\",\n   s_loc_csv_format: \"CSV format\",\n   s_loc_cancel: \"Cancel\",\n   s_loc_category: \"Category\",\n   s_loc_center: \"Center\",\n   s_loc_clear: \"Clear\",\n   s_loc_clear_socialcalc_clipboard: \"Clear SocialCalc Clipboard\",\n   s_loc_clipboard: \"Clipboard\",\n   s_loc_color: \"Color\",\n   s_loc_column_: \"Column \",\n   s_loc_comment: \"Comment\",\n   s_loc_copy: \"Copy\",\n   s_loc_custom: \"Custom\",\n   s_loc_cut: \"Cut\",\n   s_loc_default: \"Default\",\n   s_loc_default_alignment: \"Default Alignment\",\n   s_loc_default_column_width: \"Default Column Width\",\n   s_loc_default_font: \"Default Font\",\n   s_loc_default_format: \"Default Format\",\n   s_loc_default_padding: \"Default Padding\",\n   s_loc_delete: \"Delete\",\n   s_loc_delete_column: \"Delete Column\",\n   s_loc_delete_contents: \"Delete Cell Contents\",\n   s_loc_delete_row: \"Delete Row\",\n   s_loc_description: \"Description\",\n   s_loc_display_clipboard_in: \"Display Clipboard in\",\n   s_loc_down: \"Down\",\n   s_loc_edit: \"Edit\",\n   s_loc_existing_names: \"Existing Names\",\n   s_loc_family: \"Family\",\n   s_loc_fill_down: \"Fill Down\",\n   s_loc_fill_right: \"Fill Right\",\n   s_loc_font: \"Font\",\n   s_loc_format: \"Format\",\n   s_loc_formula: \"Formula\",\n   s_loc_function_list: \"Function List\",\n   s_loc_functions: \"Functions\",\n   s_loc_grid: \"Grid\",\n   s_loc_hidden: \"Hidden\",\n   s_loc_hide_column: \"Hide Column\",\n   s_loc_hide_row: \"Hide Row\",\n   s_loc_horizontal: \"Horizontal\",\n   s_loc_insert_column: \"Insert Column Before\",\n   s_loc_insert_row: \"Insert Row Before\",\n   s_loc_italic: \"Italic\",\n   s_loc_last_sort: \"Last Sort\",\n   s_loc_left: \"Left\",\n   s_loc_left_border: \"Left Border\",\n   s_loc_link: \"Link\",\n   s_loc_link_input_box: \"Link Input Box\",\n   s_loc_list: \"List\",\n   s_loc_load_socialcalc_clipboard_with_this: \"Load SocialCalc Clipboard With This\",\n   s_loc_lock_cell: \"Lock Cell\",\n   s_loc_major_sort: \"Major Sort\",\n   s_loc_manual: \"Manual\",\n   s_loc_merge_cells: \"Merge/Unmerge Cells\",\n   s_loc_middle: \"Middle\",\n   s_loc_minor_sort: \"Minor Sort\",\n   s_loc_move_insert: \"Move Insert\",\n   s_loc_move_paste: \"Move Paste\",\n   s_loc_multiXline_input_box: \"Multi-line Input Box\",\n   s_loc_name: \"Name\",\n   s_loc_names: \"Names\",\n   s_loc_no_padding: \"No padding\",\n   s_loc_normal: \"Normal\",\n   s_loc_number: \"Number\",\n   s_loc_number_horizontal: \"Number Horizontal\",\n   s_loc_ok: \"OK\",\n   s_loc_padding: \"Padding\",\n   s_loc_page_name: \"Page Name\",\n   s_loc_paste: \"Paste\",\n   s_loc_paste_formats: \"Paste Formats\",\n   s_loc_plain_text: \"Plain Text\",\n   s_loc_recalc: \"Recalc\",\n   s_loc_recalculation: \"Recalculation\",\n   s_loc_redo: \"Redo\",\n   s_loc_right: \"Right\",\n   s_loc_right_border: \"Right Border\",\n   s_loc_sheet_settings: \"SHEET SETTINGS\",\n   s_loc_save: \"Save\",\n   s_loc_save_to: \"Save to\",\n   s_loc_set_cell_contents: \"Set Cell Contents\",\n   s_loc_set_cells_to_sort: \"Set Cells To Sort\",\n   s_loc_set_value_to: \"Set Value To\",\n   s_loc_set_to_link_format: \"Set to Link format\",\n   s_loc_setXclear_move_from: \"Set/Clear Move From\",\n   s_loc_show_cell_settings: \"Show Cell Settings\",\n   s_loc_show_sheet_settings: \"Show Sheet Settings\",\n   s_loc_show_in_new_browser_window: \"Show in new browser window\",\n   s_loc_size: \"Size\",\n   s_loc_socialcalcXsave_format: \"SocialCalc-save format\",\n   s_loc_sort: \"Sort\",\n   s_loc_sort_: \"Sort \",\n   s_loc_sort_cells: \"Sort Cells\",\n   s_loc_swap_colors: \"Swap Colors\",\n   s_loc_tabXdelimited_format: \"Tab-delimited format\",\n   s_loc_text: \"Text\",\n   s_loc_text_horizontal: \"Text Horizontal\",\n   s_loc_this_is_aXbrXsample: \"This is a<br>sample\",\n   s_loc_top: \"Top\",\n   s_loc_top_border: \"Top Border\",\n   s_loc_undone_steps: \"UNDONE STEPS\",\n   s_loc_url: \"URL\",\n   s_loc_undo: \"Undo\",\n   s_loc_unlock_cell: \"Unlock Cell\",\n   s_loc_unmerge_cells: \"Unmerge Cells\",\n   s_loc_up: \"Up\",\n   s_loc_value: \"Value\",\n   s_loc_vertical: \"Vertical\",\n   s_loc_wikitext: \"Wikitext\",\n   s_loc_workspace: \"Workspace\",\n   s_loc_XnewX: \"[New]\",\n   s_loc_XnoneX: \"[None]\",\n   s_loc_Xselect_rangeX: \"[select range]\",\n\n//\n// SocialCalc Spreadsheet Viewer module, socialcalcviewer.js:\n//\n\n   //*** SocialCalc.SpreadsheetViewer\n\n   SVStatuslineheight: 20, // in pixels\n   SVStatuslineCSS: \"font-size:10px;padding:3px 0px;\",\n\n//\n// SocialCalc Format Number module, formatnumber2.js:\n//\n\n   FormatNumber_separatorchar: \",\", // the thousands separator character when formatting numbers for display\n   FormatNumber_decimalchar: \".\", // the decimal separator character when formatting numbers for display\n   FormatNumber_defaultCurrency: \"$\", // the currency string used if none specified\n\n   // The following constants are arrays of strings with the short (3 character) and full names of days and months\n\n   s_FormatNumber_daynames: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n   s_FormatNumber_daynames3: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n   s_FormatNumber_monthnames: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\",\n                                      \"October\", \"November\", \"December\"],\n   s_FormatNumber_monthnames3: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"],\n   s_FormatNumber_am: \"AM\",\n   s_FormatNumber_am1: \"A\",\n   s_FormatNumber_pm: \"PM\",\n   s_FormatNumber_pm1: \"P\",\n\n//\n// SocialCalc Spreadsheet Formula module, formula1.js:\n//\n\n   s_parseerrexponent: \"Improperly formed number exponent\",\n   s_parseerrchar: \"Unexpected character in formula\",\n   s_parseerrstring: \"Improperly formed string\",\n   s_parseerrspecialvalue: \"Improperly formed special value\",\n   s_parseerrtwoops: \"Error in formula (two operators inappropriately in a row)\",\n   s_parseerrmissingopenparen: \"Missing open parenthesis in list with comma(s). \",\n   s_parseerrcloseparennoopen: \"Closing parenthesis without open parenthesis. \",\n   s_parseerrmissingcloseparen: \"Missing close parenthesis. \",\n   s_parseerrmissingoperand: \"Missing operand. \",\n   s_parseerrerrorinformula: \"Error in formula.\",\n   s_calcerrerrorvalueinformula: \"Error value in formula\",\n   s_parseerrerrorinformulabadval: \"Error in formula resulting in bad value\",\n   s_formularangeresult: \"Formula results in range value:\",\n   s_calcerrnumericnan: \"Formula results in an bad numeric value\",\n   s_calcerrnumericoverflow: \"Numeric overflow\",\n   s_sheetunavailable: \"Sheet unavailable:\", // when FindSheetInCache returns null\n   s_calcerrcellrefmissing: \"Cell reference missing when expected.\",\n   s_calcerrsheetnamemissing: \"Sheet name missing when expected.\",\n   s_circularnameref: \"Circular name reference to name\",\n   s_calcerrunknownname: \"Unknown name\",\n   s_calcerrincorrectargstofunction: \"Incorrect arguments to function\",\n   s_sheetfuncunknownfunction: \"Unknown function\",\n   s_sheetfunclnarg: \"LN argument must be greater than 0\",\n   s_sheetfunclog10arg: \"LOG10 argument must be greater than 0\",\n   s_sheetfunclogsecondarg: \"LOG second argument must be numeric greater than 0\",\n   s_sheetfunclogfirstarg: \"LOG first argument must be greater than 0\",\n   s_sheetfuncroundsecondarg: \"ROUND second argument must be numeric\",\n   s_sheetfuncddblife: \"DDB life must be greater than 1\",\n   s_sheetfuncslnlife: \"SLN life must be greater than 1\",\n\n   // Function definition text\n\n   s_fdef_ABS: 'Absolute value function. ',\n   s_fdef_ACOS: 'Trigonometric arccosine function. ',\n   s_fdef_AND: 'True if all arguments are true. ',\n   s_fdef_ASIN: 'Trigonometric arcsine function. ',\n   s_fdef_ATAN: 'Trigonometric arctan function. ',\n   s_fdef_ATAN2: 'Trigonometric arc tangent function (result is in radians). ',\n   s_fdef_AVERAGE: 'Averages the values. ',\n   s_fdef_CHOOSE: 'Returns the value specified by the index. The values may be ranges of cells. ',\n   s_fdef_COLUMNS: 'Returns the number of columns in the range. ',\n   s_fdef_COS: 'Trigonometric cosine function (value is in radians). ',\n   s_fdef_CONCAT: 'Join Together Text & Values to Create a Single Combined Text String. ',\n   s_fdef_CONCATENATE: 'Join Together Text & Values to Create a Single Combined Text String. ',\n   s_fdef_COUNT: 'Counts the number of numeric values, not blank, text, or error. ',\n   s_fdef_COUNTA: 'Counts the number of non-blank values. ',\n   s_fdef_COUNTBLANK: 'Counts the number of blank values. (Note: \"\" is not blank.) ',\n   s_fdef_COUNTIF: 'Counts the number of number of cells in the range that meet the criteria. The criteria may be a value (\"x\", 15, 1+3) or a test (>25). ',\n   s_fdef_DATE: 'Returns the appropriate date value given numbers for year, month, and day. For example: DATE(2006,2,1) for February 1, 2006. Note: In this program, day \"1\" is December 31, 1899 and the year 1900 is not a leap year. Some programs use January 1, 1900, as day \"1\" and treat 1900 as a leap year. In both cases, though, dates on or after March 1, 1900, are the same. ',\n   s_fdef_DAVERAGE: 'Averages the values in the specified field in records that meet the criteria. ',\n   s_fdef_DAY: 'Returns the day of month for a date value. ',\n   s_fdef_DCOUNT: 'Counts the number of numeric values, not blank, text, or error, in the specified field in records that meet the criteria. ',\n   s_fdef_DCOUNTA: 'Counts the number of non-blank values in the specified field in records that meet the criteria. ',\n   s_fdef_DDB: 'Returns the amount of depreciation at the given period of time (the default factor is 2 for double-declining balance).   ',\n   s_fdef_DEGREES: 'Converts value in radians into degrees. ',\n   s_fdef_DGET: 'Returns the value of the specified field in the single record that meets the criteria. ',\n   s_fdef_DMAX: 'Returns the maximum of the numeric values in the specified field in records that meet the criteria. ',\n   s_fdef_DMIN: 'Returns the maximum of the numeric values in the specified field in records that meet the criteria. ',\n   s_fdef_DPRODUCT: 'Returns the result of multiplying the numeric values in the specified field in records that meet the criteria. ',\n   s_fdef_DSTDEV: 'Returns the sample standard deviation of the numeric values in the specified field in records that meet the criteria. ',\n   s_fdef_DSTDEVP: 'Returns the standard deviation of the numeric values in the specified field in records that meet the criteria. ',\n   s_fdef_DSUM: 'Returns the sum of the numeric values in the specified field in records that meet the criteria. ',\n   s_fdef_DVAR: 'Returns the sample variance of the numeric values in the specified field in records that meet the criteria. ',\n   s_fdef_DVARP: 'Returns the variance of the numeric values in the specified field in records that meet the criteria. ',\n   s_fdef_EVEN: 'Rounds the value up in magnitude to the nearest even integer. ',\n   s_fdef_EXACT: 'Returns \"true\" if the values are exactly the same, including case, type, etc. ',\n   s_fdef_EXP: 'Returns e raised to the value power. ',\n   s_fdef_FACT: 'Returns factorial of the value. ',\n   s_fdef_FALSE: 'Returns the logical value \"false\". ',\n   s_fdef_FIND: 'Returns the starting position within string2 of the first occurrence of string1 at or after \"start\". If start is omitted, 1 is assumed. ',\n   s_fdef_FV: 'Returns the future value of repeated payments of money invested at the given rate for the specified number of periods, with optional present value (default 0) and payment type (default 0 = at end of period, 1 = beginning of period). ',\n   s_fdef_HLOOKUP: 'Look for the matching value for the given value in the range and return the corresponding value in the cell specified by the row offset. If rangelookup is 1 (the default) and not 0, match if within numeric brackets (match<=value) instead of exact match. ',\n   s_fdef_HOUR: 'Returns the hour portion of a time or date/time value. ',\n   s_fdef_IF: 'Results in true-value if logical-expression is TRUE or non-zero, otherwise results in false-value. ',\n   s_fdef_INDEX: 'Returns a cell or range reference for the specified row and column in the range. If range is 1-dimensional, then only one of rownum or colnum are needed. If range is 2-dimensional and rownum or colnum are zero, a reference to the range of just the specified column or row is returned. You can use the returned reference value in a range, e.g., sum(A1:INDEX(A2:A10,4)). ',\n   s_fdef_INT: 'Returns the value rounded down to the nearest integer (towards -infinity). ',\n   s_fdef_IRR: 'Returns the interest rate at which the cash flows in the range have a net present value of zero. Uses an iterative process that will return #NUM! error if it does not converge. There may be more than one possible solution. Providing the optional guess value may help in certain situations where it does not converge or finds an inappropriate solution (the default guess is 10%). ',\n   s_fdef_ISBLANK: 'Returns \"true\" if the value is a reference to a blank cell. ',\n   s_fdef_ISERR: 'Returns \"true\" if the value is of type \"Error\" but not \"NA\". ',\n   s_fdef_ISERROR: 'Returns \"true\" if the value is of type \"Error\". ',\n   s_fdef_ISLOGICAL: 'Returns \"true\" if the value is of type \"Logical\" (true/false). ',\n   s_fdef_ISNA: 'Returns \"true\" if the value is the error type \"NA\". ',\n   s_fdef_ISNONTEXT: 'Returns \"true\" if the value is not of type \"Text\". ',\n   s_fdef_ISNUMBER: 'Returns \"true\" if the value is of type \"Number\" (including logical values). ',\n   s_fdef_ISTEXT: 'Returns \"true\" if the value is of type \"Text\". ',\n   s_fdef_LEFT: 'Returns the specified number of characters from the text value. If count is omitted, 1 is assumed. ',\n   s_fdef_LEN: 'Returns the number of characters in the text value. ',\n   s_fdef_LN: 'Returns the natural logarithm of the value. ',\n   s_fdef_LOG: 'Returns the logarithm of the value using the specified base. ',\n   s_fdef_LOG10: 'Returns the base 10 logarithm of the value. ',\n   s_fdef_LOWER: 'Returns the text value with all uppercase characters converted to lowercase. ',\n   s_fdef_MATCH: 'Look for the matching value for the given value in the range and return position (the first is 1) in that range. If rangelookup is 1 (the default) and not 0, match if within numeric brackets (match<=value) instead of exact match. If rangelookup is -1, act like 1 but the bracket is match>=value. ',\n   s_fdef_MAX: 'Returns the maximum of the numeric values. ',\n   s_fdef_MID: 'Returns the specified number of characters from the text value starting from the specified position. ',\n   s_fdef_MIN: 'Returns the minimum of the numeric values. ',\n   s_fdef_MINUTE: 'Returns the minute portion of a time or date/time value. ',\n   s_fdef_MOD: 'Returns the remainder of the first value divided by the second. ',\n   s_fdef_MONTH: 'Returns the month part of a date value. ',\n   s_fdef_N: 'Returns the value if it is a numeric value otherwise an error. ',\n   s_fdef_NA: 'Returns the #N/A error value which propagates through most operations. ',\n   s_fdef_NOT: 'Returns FALSE if value is true, and TRUE if it is false. ',\n   s_fdef_NOW: 'Returns the current date/time. ',\n   s_fdef_NPER: 'Returns the number of periods at which payments invested each period at the given rate with optional future value (default 0) and payment type (default 0 = at end of period, 1 = beginning of period) has the given present value. ',\n   s_fdef_NPV: 'Returns the net present value of cash flows (which may be individual values and/or ranges) at the given rate. The flows are positive if income, negative if paid out, and are assumed at the end of each period. ',\n   s_fdef_ODD: 'Rounds the value up in magnitude to the nearest odd integer. ',\n   s_fdef_OR: 'True if any argument is true ',\n   s_fdef_PI: 'The value 3.1415926... ',\n   s_fdef_PMT: 'Returns the amount of each payment that must be invested at the given rate for the specified number of periods to have the specified present value, with optional future value (default 0) and payment type (default 0 = at end of period, 1 = beginning of period). ',\n   s_fdef_POWER: 'Returns the first value raised to the second value power. ',\n   s_fdef_PRODUCT: 'Returns the result of multiplying the numeric values. ',\n   s_fdef_PROPER: 'Returns the text value with the first letter of each word converted to uppercase and the others to lowercase. ',\n   s_fdef_PV: 'Returns the present value of the given number of payments each invested at the given rate, with optional future value (default 0) and payment type (default 0 = at end of period, 1 = beginning of period). ',\n   s_fdef_RADIANS: 'Converts value in degrees into radians. ',\n   s_fdef_RATE: 'Returns the rate at which the given number of payments each invested at the given rate has the specified present value, with optional future value (default 0) and payment type (default 0 = at end of period, 1 = beginning of period). Uses an iterative process that will return #NUM! error if it does not converge. There may be more than one possible solution. Providing the optional guess value may help in certain situations where it does not converge or finds an inappropriate solution (the default guess is 10%). ',\n   s_fdef_REPLACE: 'Returns text1 with the specified number of characters starting from the specified position replaced by text2. ',\n   s_fdef_REPT: 'Returns the text repeated the specified number of times. ',\n   s_fdef_RIGHT: 'Returns the specified number of characters from the text value starting from the end. If count is omitted, 1 is assumed. ',\n   s_fdef_ROUND: 'Rounds the value to the specified number of decimal places. If precision is negative, then round to powers of 10. The default precision is 0 (round to integer). ',\n   s_fdef_ROWS: 'Returns the number of rows in the range. ',\n   s_fdef_SECOND: 'Returns the second portion of a time or date/time value (truncated to an integer). ',\n   s_fdef_SIN: 'Trigonometric sine function (value is in radians) ',\n   s_fdef_SLN: 'Returns the amount of depreciation at each period of time using the straight-line method. ',\n   s_fdef_SQRT: 'Square root of the value ',\n   s_fdef_STDEV: 'Returns the sample standard deviation of the numeric values. ',\n   s_fdef_STDEVP: 'Returns the standard deviation of the numeric values. ',\n   s_fdef_SUBSTITUTE: 'Returns text1 with the all occurrences of oldtext replaced by newtext. If \"occurrence\" is present, then only that occurrence is replaced. ',\n   s_fdef_SUM: 'Adds the numeric values. The values to the sum function may be ranges in the form similar to A1:B5. ',\n   s_fdef_SUMIF: 'Sums the numeric values of cells in the range that meet the criteria. The criteria may be a value (\"x\", 15, 1+3) or a test (>25). If range2 is present, then range1 is tested and the corresponding range2 value is summed. ',\n   s_fdef_SUMIFS: 'Sums the numeric values of cells in the sum_range that meet the multiple criteria. The criteria may be a value (\"x\", 15, 1+3) or a test (>25).  ',\n   s_fdef_SYD: 'Depreciation by Sum of Year\\'s Digits method. ',\n   s_fdef_T: 'Returns the text value or else a null string. ',\n   s_fdef_TAN: 'Trigonometric tangent function (value is in radians) ',\n   s_fdef_TIME: 'Returns the time value given the specified hour, minute, and second. ',\n   s_fdef_TODAY: 'Returns the current date (an integer). Note: In this program, day \"1\" is December 31, 1899 and the year 1900 is not a leap year. Some programs use January 1, 1900, as day \"1\" and treat 1900 as a leap year. In both cases, though, dates on or after March 1, 1900, are the same. ',\n   s_fdef_TRIM: 'Returns the text value with leading, trailing, and repeated spaces removed. ',\n   s_fdef_TRUE: 'Returns the logical value \"true\". ',\n   s_fdef_TRUNC: 'Truncates the value to the specified number of decimal places. If precision is negative, truncate to powers of 10. ',\n   s_fdef_UPPER: 'Returns the text value with all lowercase characters converted to uppercase. ',\n   s_fdef_VALUE: 'Converts the specified text value into a numeric value. Various forms that look like numbers (including digits followed by %, forms that look like dates, etc.) are handled. This may not handle all of the forms accepted by other spreadsheets and may be locale dependent. ',\n   s_fdef_VAR: 'Returns the sample variance of the numeric values. ',\n   s_fdef_VARP: 'Returns the variance of the numeric values. ',\n   s_fdef_VLOOKUP: 'Look for the matching value for the given value in the range and return the corresponding value in the cell specified by the column offset. If rangelookup is 1 (the default) and not 0, match if within numeric brackets (match>=value) instead of exact match. ',\n   s_fdef_WEEKDAY: 'Returns the day of week specified by the date value. If type is 1 (the default), Sunday is day and Saturday is day 7. If type is 2, Monday is day 1 and Sunday is day 7. If type is 3, Monday is day 0 and Sunday is day 6. ',\n   s_fdef_YEAR: 'Returns the year part of a date value. ',\n   s_fdef_SUMPRODUCT: 'Sums the pairwise products of 2 or more ranges. The ranges must be of equal length.',\n   s_fdef_CEILING: 'Rounds the given number up to the nearest integer or multiple of significance. Significance is the value to whose multiple of ten the value is to be rounded up (.01, .1, 1, 10, etc.)',\n   s_fdef_FLOOR: 'Rounds the given number down to the nearest multiple of significance. Significance is the value to whose multiple of ten the number is to be rounded down (.01, .1, 1, 10, etc.)',\n\n   s_farg_v: \"value\",\n   s_farg_vn: \"value1, value2, ...\",\n   s_farg_xy: \"valueX, valueY\",\n   s_farg_choose: \"index, value1, value2, ...\",\n   s_farg_range: \"range\",\n   s_farg_rangec: \"range, criteria\",\n   s_farg_date: \"year, month, day\",\n   s_farg_dfunc: \"databaserange, fieldname, criteriarange\",\n   s_farg_ddb: \"cost, salvage, lifetime, period, [factor]\",\n   s_farg_find: \"string1, string2, [start]\",\n   s_farg_fv: \"rate, n, payment, [pv, [paytype]]\",\n   s_farg_hlookup: \"value, range, row, [rangelookup]\",\n   s_farg_iffunc: \"logical-expression, true-value, [false-value]\",\n   s_farg_index: \"range, rownum, colnum\",\n   s_farg_irr: \"range, [guess]\",\n   s_farg_tc: \"text, count\",\n   s_farg_log: \"value, base\",\n   s_farg_match: \"value, range, [rangelookup]\",\n   s_farg_mid: \"text, start, length\",\n   s_farg_nper: \"rate, payment, pv, [fv, [paytype]]\",\n   s_farg_npv: \"rate, value1, value2, ...\",\n   s_farg_pmt: \"rate, n, pv, [fv, [paytype]]\",\n   s_farg_pv: \"rate, n, payment, [fv, [paytype]]\",\n   s_farg_rate: \"n, payment, pv, [fv, [paytype, [guess]]]\",\n   s_farg_replace: \"text1, start, length, text2\",\n   s_farg_vp: \"value, [precision]\",\n   s_farg_valpre: \"value, precision\",\n   s_farg_csl: \"cost, salvage, lifetime\",\n   s_farg_cslp: \"cost, salvage, lifetime, period\",\n   s_farg_subs: \"text1, oldtext, newtext, [occurrence]\",\n   s_farg_sumif: \"range1, criteria, [range2]\",\n   s_farg_hms: \"hour, minute, second\",\n   s_farg_txt: \"text\",\n   s_farg_vlookup: \"value, range, col, [rangelookup]\",\n   s_farg_weekday: \"date, [type]\",\n   s_farg_dt: \"date\",\n   s_farg_rangen: \"range1, range2, ...\",\n   s_farg_vsig: 'value, [significance]',\n\n   function_classlist: [\"all\", \"stat\", \"lookup\", \"datetime\", \"financial\", \"test\", \"math\", \"text\", \"gui\", \"action\"], // order of function classes\n\n   s_fclass_all: \"All\",\n   s_fclass_stat: \"Statistics\",\n   s_fclass_lookup: \"Lookup\",\n   s_fclass_datetime: \"Date & Time\",\n   s_fclass_financial: \"Financial\",\n   s_fclass_test: \"Test\",\n   s_fclass_math: \"Math\",\n   s_fclass_text: \"Text\",\n   s_fclass_action: \"Email & Copy\",\n   s_fclass_gui: \"Button & Input\",\n\n   lastone: null\n\n   };\n\n// Default classnames for use with SocialCalc.ConstantsSetClasses:\n\nSocialCalc.ConstantsDefaultClasses = {\n   defaultComment: \"\",\n   defaultCommentNoGrid: \"\",\n   defaultHighlightTypeCursor: \"\",\n   defaultHighlightTypeRange: \"\",\n   defaultColname: \"\",\n   defaultSelectedColname: \"\",\n   defaultRowname: \"\",\n   defaultSelectedRowname: \"\", \n   defaultUpperLeft: \"\",\n   defaultSkippedCell: \"\",\n   defaultPaneDivider: \"\",\n   cteGriddiv: \"\", // this one has no Style version with it\n   defaultInputEcho: {classname: \"\", style: \"filter:alpha(opacity=90);opacity:.9;\"}, // so FireFox won't show warning\n   TCmain: \"\",\n   TCendcap: \"\",\n   TCpaneslider: \"\",\n   TClessbutton: \"\",\n   TCmorebutton: \"\",\n   TCscrollarea: \"\",\n   TCthumb: \"\",\n   TCPStrackingline: \"\",\n   TCTDFSthumbstatus: \"\",\n   TDpopupElement: \"\"\n   };\n\n//\n// SocialCalc.ConstantsSetClasses(prefix)\n//\n// This routine goes through all of the xyzClass/xyzStyle pairs and sets the Class to a default and\n// turns off the Style, if present. The prefix is put before each default.\n// The list of items to set is in SocialCalc.ConstantsDefaultClasses. The names there\n// correspond to the \"xyz\" parts. If there is a value, it is the default to set. If the\n// default is a null, no change is made. If the default is the null string (\"\"), the\n// name of the item is used (e.g., \"defaultComment\" would use the classname \"defaultComment\").\n// If the default is an object, then it expects {classname: classname, style: stylestring} - this\n// lets you combine both.\n//\n\nSocialCalc.ConstantsSetClasses = function(prefix) {\n\n   var defaults = SocialCalc.ConstantsDefaultClasses;\n   var scc = SocialCalc.Constants;\n   var item;\n\n   prefix = prefix || \"\";\n\n   for (item in defaults) {\n      if (typeof defaults[item] == \"string\") {\n         scc[item+\"Class\"] = prefix + (defaults[item] || item);\n         if (scc[item+\"Style\"] !== undefined) {\n            scc[item+\"Style\"] = \"\";\n            }\n         }\n      else if (typeof defaults[item] == \"object\") {\n         scc[item+\"Class\"] = prefix + (defaults[item].classname || item);\n         scc[item+\"Style\"] = defaults[item].style;\n         }\n      }\n   }\n\n// Set the image prefix on all images.\n\nSocialCalc.ConstantsSetImagePrefix = function(imagePrefix) {\n\n   var scc = SocialCalc.Constants;\n\n   for (var item in scc) {\n      if (typeof scc[item] == \"string\") {\n         scc[item] = scc[item].replace(scc.defaultImagePrefix, imagePrefix);\n         }\n      }\n   scc.defaultImagePrefix = imagePrefix;\n\n   }\n\n\n//\n// The main SocialCalc code module of the SocialCalc package\n//\n/*\n// (c) Copyright 2010 Socialtext, Inc.\n// All Rights Reserved.\n//\n// The contents of this file are subject to the Artistic License 2.0; you may not\n// use this file except in compliance with the License. You may obtain a copy of\n// the License at http://socialcalc.org/licenses/al-20/.\n//\n// Some of the other files in the SocialCalc package are licensed under\n// different licenses. Please note the licenses of the modules you use.\n//\n// Code History:\n//\n// Initially coded by Dan Bricklin of Software Garden, Inc., for Socialtext, Inc.\n// Based in part on the SocialCalc 1.1.0 code written in Perl.\n// The SocialCalc 1.1.0 code was:\n//    Portions (c) Copyright 2005, 2006, 2007 Software Garden, Inc.\n//    All Rights Reserved.\n//    Portions (c) Copyright 2007 Socialtext, Inc.\n//    All Rights Reserved.\n// The Perl SocialCalc started as modifications to the wikiCalc(R) program, version 1.0.\n// wikiCalc 1.0 was written by Software Garden, Inc.\n// Unless otherwise specified, referring to \"SocialCalc\" in comments refers to this\n// JavaScript version of the code, not the SocialCalc Perl code.\n//\n*/\n\n/*\n\n**** Overview ****\n\nThis is the beginning of a library of routines for displaying and editing spreadsheet\ndata in a browser. The HTML that includes this does not need to have anything\nspecific to the spreadsheet or editor already present -- everything is dynamically\nadded to the DOM by this code, including the rendered sheet and any editing controls.\n\nThe library has a few parts. This is the main SocialCalc code module.\nOther parts are the Table Editor module, the Formula module, and the Format Number module.\nNote: The Table Editor module is licensed under a different license than this module.\n\nThe class/object style is derived from O'Reilly's JavaScript by Flanagan, 5th Edition,\nsection 9.3, page 157.\n\nAll of the data, object definitions, functions, etc., are stored as properties of the SocialCalc\nobject so as not to clutter up the global variables nor conflict with other names.\n\nA design goal (not tested yet for success) is to make it possible to have more than one\nspreadsheet active on a page, perhaps even open for editing. It is assumed, though, that\nthere is only one mouse and one keyboard (a good assumption on most PCs today but not in the\nnew \"touch and surface world\" Apple and Microsoft are working towards).\n\nThe testing has been on Windows Firefox (2 and 3),\nInternet Explorer (6 and 7), Opera (9.23 and mainly later), Mac Safari (3.1), and Mac Firefox (2.0.0.6).\nThere are small issues with Firefox before 2.0 (cosmetic with drag handles) and larger ones\nwith Opera before 9.5 (the Delete key isn't recognized in some cases -- the 9.5 version was still\nin beta and this bug affects other products like GMail, I believe).\n\nThe data is stored in a SocialCalc.Sheet object. The data is organized in a form similar to that\nused by SocialCalc 1.1.0. There is a function for converting a normal SocialCalc spreadsheet\nsave data string (the spreadsheet part of a SocialCalc data file) into this internal form.\n\nThe SocialCalc.RenderContext class provides methods for rendering a table into the DOM representing\npart of the spreadsheet. It is assumed that the spreadsheet could possibly be very large\nand that rendering the whole thing at once could be too time consuming. It is also set up so\nthat it might be possible to have some of the sheet data only be loaded on demand (such as by Ajax).\nThe rendering can render cells to the right and below the already active area of the spreadsheet\nso that you can scroll to that \"clean\" area without explicitly doing \"add row/column\". The class also\ndoes simple operations such as \"scrolling\" within that table. The table may optionally include\nrow and column headers and may be split into panes. Most of the code assumes any number of panes,\nbut only the rightmost pane has scrolling code. In normal operation there would be one or two\npanes horizontally and vertically. The panes may start on any row/column, though a given row/column\nshould only appear in one pane at a time (not all code enforces this, yet).\n\nThe RenderContext is designed to be rendered as part of a SocialCalc.TableEditor. The TableEditor\nincludes the spreadsheet grid as well as scrollbars, pane sliders, and (eventually) editing controls.\nThe layout is dynamic and may be recomputed on the fly, such as in response to resizing the browser\nwindow.\n\nThe scrollbars and pane sliders are created using SocialCalc.TableControl objects. These in turn\nmake use of Dragging, ToolTip, Button, and MouseWheel functions.\n\nThe keyboard input is handled by keyboard code.\n\nThere are also some helper routines.\n\nMore comments yet to come...\n\n*/\n\n\nvar SocialCalc;\nif (!SocialCalc) SocialCalc = {};\n\n// *************************************\n//\n// Shared values\n//\n// These are \"global\" values shared by the classes, including default settings\n//\n// *************************************\n\n// Callbacks\n\nSocialCalc.Callbacks = {\n\n   // The next two are used by SocialCalc.format_text_for_display\n\n   // The function to expand wiki text - should be set if you want wikitext expansion\n   // The form is: expand_wiki(displayvalue, sheetobj, linkstyle, valueformat)\n   //    valueformat is text-wiki followed by optional sub-formats, e.g., text-wikipagelink\n\n   expand_wiki: null,\n\n   expand_markup: function(displayvalue, sheetobj, linkstyle) // the old function to expand wiki text - may be replaced\n                   {return SocialCalc.default_expand_markup(displayvalue, sheetobj, linkstyle);},\n\n   // MakePageLink is used to create the href for a link to another \"page\"\n   // The form is: MakePageLink(pagename, workspacename, linktyle, valueformat), returns string\n\n   MakePageLink: null,\n\n   // NormalizeSheetName is used to make different variations of sheetnames use the same cache slot\n\n   NormalizeSheetName: null // use default - lowercase\n\n   };\n\n// Shared flags\n\n   // none at present\n\n\n// *************************************\n//\n// Cell class:\n//\n// *************************************\n\n//\n// Class SocialCalc.Cell\n//\n// Usage: var s = new SocialCalc.Cell(coord);\n//\n// Cell attributes include:\n//\n//    coord: the column/row as a string, e.g., \"A1\"\n//    datavalue: the value to be used for computation and formatting for display,\n//               string or numeric (tolerant of numbers stored as strings)\n//    datatype: if present, v=numeric value, t=text value, f=formula,\n//              or c=constant that is not a simple number (like \"$1.20\")\n//    formula: if present, the formula (without leading \"=\") for computation or the constant\n//    valuetype: first char is main type, the following are sub-types.\n//               Main types are b=blank cell, n=numeric, t=text, e=error\n//               Examples of using sub-types would be \"nt\" for a numeric time value, \"n$\" for currency, \"nl\" for logical\n//    readonly: if present, whether the current cell is read-only of writable\n//    displayvalue: if present, rendered version of datavalue with formatting attributes applied\n//    parseinfo: if present, cached parsed version of formula\n//\n//    The following optional values, if present, are mainly used in rendering, overriding defaults:\n//\n//    bt, br, bb, bl: number of border's definition\n//    layout: layout (vertical alignment, padding) definition number\n//    font: font definition number\n//    color: text color definition number\n//    bgcolor: background color definition number\n//    cellformat: cell format (horizontal alignment) definition number\n//    nontextvalueformat: custom format definition number for non-text values, e.g., numbers\n//    textvalueformat: custom format definition number for text values\n//    colspan, rowspan: number of cells to span for merged cells (only on main cell)\n//    cssc: custom css classname for cell, as text (no special chars)\n//    csss: custom css style definition\n//    mod: modification allowed flag \"y\" if present\n//    comment: cell comment string\n//\n\n// Eddy - SocialCalc.Cell\n\nSocialCalc.Cell = function(coord) {\n\n   this.coord = coord;\n   this.datavalue = \"\";\n   this.datatype = null;\n   this.formula = \"\";\n   this.valuetype = \"b\";\n   this.readonly = false;\n\n   }\n\n// The types of cell properties\n//\n// Type 1: Base, Type 2: Attribute, Type 3: Special (e.g., displaystring, parseinfo)\n\nSocialCalc.CellProperties = {\n   coord: 1, datavalue: 1, datatype: 1, formula: 1, valuetype: 1, errors: 1, comment: 1, readonly: 1,\n   bt: 2, br: 2, bb: 2, bl: 2, layout: 2, font: 2, color: 2, bgcolor: 2,\n   cellformat: 2, nontextvalueformat: 2, textvalueformat: 2, colspan: 2, rowspan: 2,\n   cssc: 2, csss: 2, mod: 2,\n   displaystring: 3, // used to cache rendered HTML of cell contents\n   parseinfo: 3, // used to cache parsed formulas\n   hcolspan: 3, hrowspan: 3 // spans taking hidden cols/rows into account (!!! NOT YET !!!)\n   };\n\nSocialCalc.CellPropertiesTable = {\n   bt: \"borderstyle\", br: \"borderstyle\", bb: \"borderstyle\", bl: \"borderstyle\",\n   layout: \"layout\", font: \"font\", color: \"color\", bgcolor: \"color\",\n   cellformat: \"cellformat\", nontextvalueformat: \"valueformat\", textvalueformat: \"valueformat\"\n   };\n\n// *************************************\n//\n// Sheet class:\n//\n// *************************************\n\n//\n// Class SocialCalc.Sheet\n//\n// Usage: var s = new SocialCalc.Sheet();\n//\n\nSocialCalc.Sheet = function() {\n\n   SocialCalc.ResetSheet(this);\n\n   // Set other values:\n   //\n   // sheet.statuscallback(data, status, arg, this.statuscallbackparams) is called\n   // during recalc and commands.\n   //\n   // During recalc, data is the current recalcdata.\n   // The values for status and the corresponding arg are:\n   //\n   //    calcorder, {coord: coord, total: celllist length, count: count} [0 or more times per recalc]\n   //    calccheckdone, calclist length [once per recalc]\n   //    calcstep, {coord: coord, total: calclist length, count: count} [0 or more times per recalc]\n   //    calcloading, {sheetname: name-of-sheet}\n   //    calcserverfunc, {funcname: name-of-function, coord: coord, total: calclist length, count: count}\n   //    calcfinished, time in milliseconds [once per recalc]\n   //\n   // During commands, data is SocialCalc.SheetCommandInfo.\n   // These values for status and arg are:\n   //\n   //    cmdstart, cmdstr\n   //    cmdend\n   //\n\n   this.statuscallback = null; // routine called with cmdstart, calcstart, etc., status and args:\n                                // sheet.statuscallback(data, status, arg, params)\n   this.statuscallbackparams = null; // parameters passed to that routine\n\n   }\n\n//\n// SocialCalc.ResetSheet(sheet)\n//\n// Resets (and/or initializes) sheet data values.\n//\n\nSocialCalc.ResetSheet = function(sheet, reload) {\n\n   // properties:\n\n   sheet.cells = {}; // at least one for each non-blank cell: coord: cell-object\n   sheet.attribs = // sheet attributes\n      {\n         lastcol: 1,\n         lastrow: 1,\n         defaultlayout: 0,\n         usermaxcol: 0,\n         usermaxrow: 0\n\n      };\n   sheet.rowattribs =\n      {\n         hide: {}, // access by row number\n         height: {}\n      };\n   sheet.colattribs =\n      {\n         width: {}, // access by col name\n         hide: {}\n      };\n   sheet.names={}; // Each is: {desc: \"optional description\", definition: \"B5, A1:B7, or =formula\"}\n   sheet.layouts=[];\n   sheet.layouthash={};\n   sheet.fonts=[];\n   sheet.fonthash={};\n   sheet.colors=[];\n   sheet.colorhash={};\n   sheet.borderstyles=[];\n   sheet.borderstylehash={};\n   sheet.cellformats=[];\n   sheet.cellformathash={};\n   sheet.valueformats=[];\n   sheet.valueformathash={};\n   sheet.matched_cells=[];\n   sheet.selected_search_cell=undefined;\n\n   sheet.copiedfrom = \"\"; // if a range, then this was loaded from a saved range as clipboard content\n\n   sheet.changes = new SocialCalc.UndoStack();\n\n   sheet.renderneeded = false;\n\n   sheet.changedrendervalues = true; // if true, spans and/or fonts have changed (set by ExecuteSheetCommand & GetStyle)\n\n   sheet.recalcchangedavalue = false; // true if a recalc resulted in a change to a cell's calculated value\n\n   sheet.hiddencolrow = \"\"; // \"col\" or \"row\" if it was hidden\n\n   sheet.sci = new SocialCalc.SheetCommandInfo(sheet);\n\n   sheet.ioEventTree ={};\n   sheet.ioParameterList = {};\n\n   }\n\n// Methods:\n\nSocialCalc.Sheet.prototype.ResetSheet = function() {SocialCalc.ResetSheet(this);};\nSocialCalc.Sheet.prototype.AddCell = function(newcell) {return this.cells[newcell.coord]=newcell;};\nSocialCalc.Sheet.prototype.LastCol = function() {\n    var last_col = 1;\n    for (var cell_id  in this.cells) {\n        var cr = SocialCalc.coordToCr(cell_id);\n        if (cr.col > last_col) {\n            last_col = cr.col;\n        }\n    }\n    return last_col;\n}\nSocialCalc.Sheet.prototype.LastRow = function() {\n    var last_row = 1;\n    for (var cell_id  in this.cells) {\n        var cr = SocialCalc.coordToCr(cell_id);\n        if (cr.row > last_row) {\n            last_row = cr.row;\n        }\n    }\n    return last_row;\n}\nSocialCalc.Sheet.prototype.GetAssuredCell = function(coord) {\n   return this.cells[coord] || this.AddCell(new SocialCalc.Cell(coord));\n   };\nSocialCalc.Sheet.prototype.ParseSheetSave = function(savedsheet) {SocialCalc.ParseSheetSave(savedsheet,this);};\nSocialCalc.Sheet.prototype.CellFromStringParts = function(cell, parts, j) {return SocialCalc.CellFromStringParts(this, cell, parts, j);};\nSocialCalc.Sheet.prototype.CreateSheetSave = function(range, canonicalize) {return SocialCalc.CreateSheetSave(this, range, canonicalize);};\nSocialCalc.Sheet.prototype.CellToString = function(cell) {return SocialCalc.CellToString(this, cell);};\nSocialCalc.Sheet.prototype.CanonicalizeSheet = function(full) {return SocialCalc.CanonicalizeSheet(this, full);};\nSocialCalc.Sheet.prototype.EncodeCellAttributes = function(coord) {return SocialCalc.EncodeCellAttributes(this, coord);};\nSocialCalc.Sheet.prototype.EncodeSheetAttributes = function() {return SocialCalc.EncodeSheetAttributes(this);};\nSocialCalc.Sheet.prototype.DecodeCellAttributes = function(coord, attribs, range) {return SocialCalc.DecodeCellAttributes(this, coord, attribs, range);};\nSocialCalc.Sheet.prototype.DecodeSheetAttributes = function(attribs) {return SocialCalc.DecodeSheetAttributes(this, attribs);};\n\nSocialCalc.Sheet.prototype.ScheduleSheetCommands = function(cmd, saveundo) {return SocialCalc.ScheduleSheetCommands(this, cmd, saveundo);};\nSocialCalc.Sheet.prototype.SheetUndo = function() {return SocialCalc.SheetUndo(this);};\nSocialCalc.Sheet.prototype.SheetRedo = function() {return SocialCalc.SheetRedo(this);};\nSocialCalc.Sheet.prototype.CreateAuditString = function() {return SocialCalc.CreateAuditString(this);};\nSocialCalc.Sheet.prototype.GetStyleNum = function(atype, style) {return SocialCalc.GetStyleNum(this, atype, style);};\nSocialCalc.Sheet.prototype.GetStyleString = function(atype, num) {return SocialCalc.GetStyleString(this, atype, num);};\nSocialCalc.Sheet.prototype.RecalcSheet = function() {return SocialCalc.RecalcSheet(this);};\n\n//\n// Sheet save format:\n//\n// linetype:param1:param2:...\n//\n// Linetypes are:\n//\n//    version:versionname - version of this format. Currently 1.5.\n//\n//    cell:coord:type:value...:type:value... - Types are as follows:\n//\n//       v:value - straight numeric value\n//       t:value - straight text/wiki-text in cell, encoded to handle \\, :, newlines\n//       vt:fulltype:value - value with value type/subtype\n//       vtf:fulltype:value:formulatext - formula resulting in value with value type/subtype, value and text encoded\n//       vtc:fulltype:value:valuetext - formatted text constant resulting in value with value type/subtype, value and text encoded\n//       vf:fvalue:formulatext - formula resulting in value, value and text encoded (obsolete: only pre format version 1.1)\n//          fvalue - first char is \"N\" for numeric value, \"T\" for text value, \"H\" for HTML value, rest is the value\n//       e:errortext - Error text. Non-blank means formula parsing/calculation results in error.\n//       b:topborder#:rightborder#:bottomborder#:leftborder# - border# in sheet border list or blank if none\n//       l:layout# - number in cell layout list\n//       f:font# - number in sheet fonts list\n//       c:color# - sheet color list index for text\n//       bg:color# - sheet color list index for background color\n//       cf:format# - sheet cell format number for explicit format (align:left, etc.)\n//       cvf:valueformat# - sheet cell value format number (obsolete: only pre format v1.2)\n//       tvf:valueformat# - sheet cell text value format number\n//       ntvf:valueformat# - sheet cell non-text value format number\n//       colspan:numcols - number of columns spanned in merged cell\n//       rowspan:numrows - number of rows spanned in merged cell\n//       cssc:classname - name of CSS class to be used for cell when published instead of one calculated here\n//       csss:styletext - explicit CSS style information, encoded to handle :, etc.\n//       mod:allow - if \"y\" allow modification of cell for live \"view\" recalc\n//       comment:value - encoded text of comment for this cell (added in v1.5)\n//\n//    col:\n//       w:widthval - number, \"auto\" (no width in <col> tag), number%, or blank (use default)\n//       hide: - yes/no, no is assumed if missing\n//    row:\n//       hide - yes/no, no is assumed if missing\n//\n//    sheet:\n//       c:lastcol - number\n//       r:lastrow - number\n//       w:defaultcolwidth - number, \"auto\", number%, or blank (default->80)\n//       h:defaultrowheight - not used\n//       tf:format# - cell format number for sheet default for text values\n//       ntf:format# - cell format number for sheet default for non-text values (i.e., numbers)\n//       layout:layout# - default cell layout number in cell layout list\n//       font:font# - default font number in sheet font list\n//       vf:valueformat# - default number value format number in sheet valueformat list (obsolete: only pre format version 1.2)\n//       ntvf:valueformat# - default non-text (number) value format number in sheet valueformat list\n//       tvf:valueformat# - default text value format number in sheet valueformat list\n//       color:color# - default number for text color in sheet color list\n//       bgcolor:color# - default number for background color in sheet color list\n//       circularreferencecell:coord - cell coord with a circular reference\n//       recalc:value - on/off (on is default). If not \"off\", appropriate changes to the sheet cause a recalc\n//       needsrecalc:value - yes/no (no is default). If \"yes\", formula values are not up to date\n//       usermaxcol:value - maximum column to display, 0 for unlimited (default=0)\n//       usermaxrow:value - maximum row to display, 0 for unlimited (default=0)\n//\n//    name:name:description:value - name definition, name in uppercase, with value being \"B5\", \"A1:B7\", or \"=formula\";\n//                                  description and value are encoded.\n//    font:fontnum:value - text of font definition (style weight size family) for font fontnum\n//                         \"*\" for \"style weight\", size, or family, means use default (first look to sheet, then builtin)\n//    color:colornum:rgbvalue - text of color definition (e.g., rgb(255,255,255)) for color colornum\n//    border:bordernum:value - text of border definition (thickness style color) for border bordernum\n//    layout:layoutnum:value - text of vertical alignment and padding style for cell layout layoutnum (* for default):\n//                             vertical-alignment:vavalue;padding:topval rightval bottomval leftval;\n//    cellformat:cformatnum:value - text of cell alignment (left/center/right) for cellformat cformatnum\n//    valueformat:vformatnum:value - text of number format (see FormatValueForDisplay) for valueformat vformatnum (changed in v1.2)\n//    clipboardrange:upperleftcoord:bottomrightcoord - ignored -- from wikiCalc\n//    clipboard:coord:type:value:... - ignored -- from wikiCalc\n//\n// If this is clipboard contents, then there is also information to facilitate pasting:\n//\n//    copiedfrom:upperleftcoord:bottomrightcoord - range from which this was copied\n//\n\n// Functions:\n\nSocialCalc.ParseSheetSave = function(savedsheet,sheetobj) {\n\n   var lines=savedsheet.split(/\\r\\n|\\n/);\n   var parts=[];\n   var line;\n   var i, j, t, v, coord, cell, attribs, name;\n   var scc = SocialCalc.Constants;\n\n   for (i=0;i<lines.length;i++) {\n      line=lines[i];\n      parts = line.split(\":\");\n      switch (parts[0]) {\n         case \"cell\":\n            cell=sheetobj.GetAssuredCell(parts[1]);\n            j=2;\n            sheetobj.CellFromStringParts(cell, parts, j);\n            break;\n\n         case \"col\":\n            coord=parts[1];\n            j=2;\n            while (t=parts[j++]) {\n               switch (t) {\n                  case \"w\":\n                     sheetobj.colattribs.width[coord]=parts[j++]; // must be text - could be auto or %, etc.\n                     break;\n                  case \"hide\":\n                     sheetobj.colattribs.hide[coord]=parts[j++];\n                     break;\n                  default:\n                     throw scc.s_pssUnknownColType+\" '\"+t+\"'\";\n                     break;\n                  }\n               }\n            break;\n\n         case \"row\":\n            coord=parts[1]-0;\n            j=2;\n            while (t=parts[j++]) {\n               switch (t) {\n                  case \"h\":\n                     sheetobj.rowattribs.height[coord]=parts[j++]-0;\n                     break;\n                  case \"hide\":\n                     sheetobj.rowattribs.hide[coord]=parts[j++];\n                     break;\n                  default:\n                     throw scc.s_pssUnknownRowType+\" '\"+t+\"'\";\n                     break;\n                  }\n               }\n            break;\n\n         case \"sheet\":\n            attribs=sheetobj.attribs;\n            j=1;\n            while (t=parts[j++]) {\n               switch (t) {\n                  case \"c\":\n                     attribs.lastcol=parts[j++]-0;\n                     break;\n                  case \"r\":\n                     attribs.lastrow=parts[j++]-0;\n                     break;\n                  case \"w\":\n                     attribs.defaultcolwidth=parts[j++]+\"\";\n                     break;\n                  case \"h\":\n                     attribs.defaultrowheight=parts[j++]-0;\n                     break;\n                  case \"tf\":\n                     attribs.defaulttextformat=parts[j++]-0;\n                     break;\n                  case \"ntf\":\n                     attribs.defaultnontextformat=parts[j++]-0;\n                     break;\n                  case \"layout\":\n                     attribs.defaultlayout=parts[j++]-0;\n                     break;\n                  case \"font\":\n                     attribs.defaultfont=parts[j++]-0;\n                     break;\n                  case \"tvf\":\n                     attribs.defaulttextvalueformat=parts[j++]-0;\n                     break;\n                  case \"ntvf\":\n                     attribs.defaultnontextvalueformat=parts[j++]-0;\n                     break;\n                  case \"color\":\n                     attribs.defaultcolor=parts[j++]-0;\n                     break;\n                  case \"bgcolor\":\n                     attribs.defaultbgcolor=parts[j++]-0;\n                     break;\n                  case \"circularreferencecell\":\n                     attribs.circularreferencecell=parts[j++];\n                     break;\n                  case \"recalc\":\n                     attribs.recalc=parts[j++];\n                     break;\n                  case \"needsrecalc\":\n                     attribs.needsrecalc=parts[j++];\n                     break;\n                  case \"usermaxcol\":\n                     attribs.usermaxcol=parts[j++]-0;\n                     break;\n                  case \"usermaxrow\":\n                     attribs.usermaxrow=parts[j++]-0;\n                     break;\n                  default:\n                     j+=1;\n                     break;\n                  }\n               }\n            break;\n\n         case \"name\":\n            name = SocialCalc.decodeFromSave(parts[1]).toUpperCase();\n            sheetobj.names[name] = {desc: SocialCalc.decodeFromSave(parts[2])};\n            sheetobj.names[name].definition = SocialCalc.decodeFromSave(parts[3]);\n            break;\n\n         case \"layout\":\n            parts=lines[i].match(/^layout\\:(\\d+)\\:(.+)$/); // layouts can have \":\" in them\n            sheetobj.layouts[parts[1]-0]=parts[2];\n            sheetobj.layouthash[parts[2]]=parts[1]-0;\n            break;\n\n         case \"font\":\n            sheetobj.fonts[parts[1]-0]=parts[2];\n            sheetobj.fonthash[parts[2]]=parts[1]-0;\n            break;\n\n         case \"color\":\n            sheetobj.colors[parts[1]-0]=parts[2];\n            sheetobj.colorhash[parts[2]]=parts[1]-0;\n            break;\n\n         case \"border\":\n            sheetobj.borderstyles[parts[1]-0]=parts[2];\n            sheetobj.borderstylehash[parts[2]]=parts[1]-0;\n            break;\n\n         case \"cellformat\":\n            v=SocialCalc.decodeFromSave(parts[2]);\n            sheetobj.cellformats[parts[1]-0]=v;\n            sheetobj.cellformathash[v]=parts[1]-0;\n            break;\n\n         case \"valueformat\":\n            v=SocialCalc.decodeFromSave(parts[2]);\n            sheetobj.valueformats[parts[1]-0]=v;\n            sheetobj.valueformathash[v]=parts[1]-0;\n            break;\n\n         case \"version\":\n            break;\n\n         case \"copiedfrom\":\n            sheetobj.copiedfrom = parts[1]+\":\"+parts[2];\n            break;\n\n         case \"clipboardrange\": // in save versions up to 1.3. Ignored.\n         case \"clipboard\":\n            break;\n\n         case \"\":\n            break;\n\n         default:\nalert(scc.s_pssUnknownLineType+\" '\"+parts[0]+\"'\");\n            throw scc.s_pssUnknownLineType+\" '\"+parts[0]+\"'\";\n            break;\n         }\n      parts = null;\n      }\n\n   }\n\n//\n// SocialCalc.CellFromStringParts(sheet, cell, parts, j)\n//\n// Takes string that has been split by \":\" in parts, starting at item j,\n// and fills in cell assuming save format.\n//\n\nSocialCalc.CellFromStringParts = function(sheet, cell, parts, j) {\n\n   var cell, t, v;\n\n   while (t=parts[j++]) {\n      switch (t) {\n         case \"v\":\n            cell.datavalue=SocialCalc.decodeFromSave(parts[j++])-0;\n            cell.datatype=\"v\";\n            cell.valuetype=\"n\";\n            break;\n         case \"t\":\n            cell.datavalue=SocialCalc.decodeFromSave(parts[j++]);\n            cell.datatype=\"t\";\n            cell.valuetype=SocialCalc.Constants.textdatadefaulttype;\n            break;\n         case \"vt\":\n            v=parts[j++];\n            cell.valuetype=v;\n            if (v.charAt(0)==\"n\") {\n               cell.datatype=\"v\";\n               cell.datavalue=SocialCalc.decodeFromSave(parts[j++])-0;\n               }\n            else {\n               cell.datatype=\"t\";\n               cell.datavalue=SocialCalc.decodeFromSave(parts[j++]);\n               }\n            break;\n         case \"vtf\":\n            v=parts[j++];\n            cell.valuetype=v;\n            if (v.charAt(0)==\"n\") {\n               cell.datavalue=SocialCalc.decodeFromSave(parts[j++])-0;\n               }\n            else {\n               cell.datavalue=SocialCalc.decodeFromSave(parts[j++]);\n               }\n            cell.formula=SocialCalc.decodeFromSave(parts[j++]);\n            cell.datatype=\"f\";\n            break;\n         case \"vtc\":\n            v=parts[j++];\n            cell.valuetype=v;\n            if (v.charAt(0)==\"n\") {\n               cell.datavalue=SocialCalc.decodeFromSave(parts[j++])-0;\n               }\n            else {\n               cell.datavalue=SocialCalc.decodeFromSave(parts[j++]);\n               }\n            cell.formula=SocialCalc.decodeFromSave(parts[j++]);\n            cell.datatype=\"c\";\n            break;\n         case \"ro\":\n            ro=SocialCalc.decodeFromSave(parts[j++]);\n            cell.readonly=ro.toLowerCase()==\"yes\";\n            break;\n         case \"e\":\n            cell.errors=SocialCalc.decodeFromSave(parts[j++]);\n            break;\n         case \"b\":\n            cell.bt=parts[j++]-0;\n            cell.br=parts[j++]-0;\n            cell.bb=parts[j++]-0;\n            cell.bl=parts[j++]-0;\n            break;\n         case \"l\":\n            cell.layout=parts[j++]-0;\n            break;\n         case \"f\":\n            cell.font=parts[j++]-0;\n            break;\n         case \"c\":\n            cell.color=parts[j++]-0;\n            break;\n         case \"bg\":\n            cell.bgcolor=parts[j++]-0;\n            break;\n         case \"cf\":\n            cell.cellformat=parts[j++]-0;\n            break;\n         case \"ntvf\":\n            cell.nontextvalueformat=parts[j++]-0;\n            break;\n         case \"tvf\":\n            cell.textvalueformat=parts[j++]-0;\n            break;\n         case \"colspan\":\n            cell.colspan=parts[j++]-0;\n            break;\n         case \"rowspan\":\n            cell.rowspan=parts[j++]-0;\n            break;\n         case \"cssc\":\n            cell.cssc=parts[j++];\n            break;\n         case \"csss\":\n            cell.csss=SocialCalc.decodeFromSave(parts[j++]);\n            break;\n         case \"mod\":\n            j+=1;\n            break;\n         case \"comment\":\n            cell.comment=SocialCalc.decodeFromSave(parts[j++]);\n            break;\n         default:\n            throw SocialCalc.Constants.s_cfspUnknownCellType+\" '\"+t+\"'\";\n            break;\n         }\n      }\n\n   }\n\n\nSocialCalc.sheetfields = [\"defaultrowheight\", \"defaultcolwidth\", \"circularreferencecell\", \"recalc\", \"needsrecalc\", \"usermaxcol\", \"usermaxrow\"];\nSocialCalc.sheetfieldsshort = [\"h\", \"w\", \"circularreferencecell\", \"recalc\", \"needsrecalc\", \"usermaxcol\", \"usermaxrow\"];\n\nSocialCalc.sheetfieldsxlat = [\"defaulttextformat\", \"defaultnontextformat\",\n                              \"defaulttextvalueformat\", \"defaultnontextvalueformat\",\n                              \"defaultcolor\", \"defaultbgcolor\", \"defaultfont\", \"defaultlayout\"];\nSocialCalc.sheetfieldsxlatshort = [\"tf\", \"ntf\", \"tvf\", \"ntvf\", \"color\", \"bgcolor\", \"font\", \"layout\"];\nSocialCalc.sheetfieldsxlatxlt = [\"cellformat\", \"cellformat\", \"valueformat\", \"valueformat\",\n                                  \"color\", \"color\", \"font\", \"layout\"];\n\n//\n// sheetstr = SocialCalc.CreateSheetSave(sheetobj, range, canonicalize)\n//\n// Creates a text representation of the sheetobj data.\n// If the range is present then only those cells are saved\n// (as clipboard data with \"copiedfrom\" set).\n//\n\nSocialCalc.CreateSheetSave = function(sheetobj, range, canonicalize) {\n\n   var cell, cr1, cr2, row, col, coord, attrib, line, value, formula, i, t, r, b, l, name, blanklen;\n   var result=[];\n\n   var prange;\n\n   sheetobj.CanonicalizeSheet(canonicalize || SocialCalc.Constants.doCanonicalizeSheet);\n   var xlt = sheetobj.xlt;\n\n   if (range) {\n      prange = SocialCalc.ParseRange(range);\n      }\n   else {\n      prange = {cr1: {row: 1, col:1},\n                cr2: {row: xlt.maxrow, col: xlt.maxcol}};\n      }\n   cr1 = prange.cr1;\n   cr2 = prange.cr2;\n\n   result.push(\"version:1.5\");\n\n   for (row=cr1.row; row <= cr2.row; row++) {\n      for (col=cr1.col; col <= cr2.col; col++) {\n         coord = SocialCalc.crToCoord(col, row);\n         cell=sheetobj.cells[coord];\n         if (!cell) continue;\n         line=sheetobj.CellToString(cell);\n         if (line.length==0) continue; // ignore completely empty cells\n         line=\"cell:\"+coord+line;\n         result.push(line);\n         }\n      }\n\n   for (col=1; col <= xlt.maxcol; col++) {\n      coord = SocialCalc.rcColname(col);\n      if (sheetobj.colattribs.width[coord])\n         result.push(\"col:\"+coord+\":w:\"+sheetobj.colattribs.width[coord]);\n      if (sheetobj.colattribs.hide[coord])\n         result.push(\"col:\"+coord+\":hide:\"+sheetobj.colattribs.hide[coord]);\n      }\n\n   for (row=1; row <= xlt.maxrow; row++) {\n      if (sheetobj.rowattribs.height[row])\n         result.push(\"row:\"+row+\":h:\"+sheetobj.rowattribs.height[row]);\n      if (sheetobj.rowattribs.hide[row])\n         result.push(\"row:\"+row+\":hide:\"+sheetobj.rowattribs.hide[row]);\n      }\n\n   line=\"sheet:c:\"+xlt.maxcol+\":r:\"+xlt.maxrow;\n\n   for (i=0; i<SocialCalc.sheetfields.length; i++) { // non-xlated values\n      value = SocialCalc.encodeForSave(sheetobj.attribs[SocialCalc.sheetfields[i]]);\n      if (value) line+=\":\"+SocialCalc.sheetfieldsshort[i]+\":\"+value;\n      }\n   for (i=0; i<SocialCalc.sheetfieldsxlat.length; i++) { // xlated values\n      value = sheetobj.attribs[SocialCalc.sheetfieldsxlat[i]];\n      if (value) line+=\":\"+SocialCalc.sheetfieldsxlatshort[i]+\":\"+xlt[SocialCalc.sheetfieldsxlatxlt[i]+\"sxlat\"][value];\n      }\n\n   result.push(line);\n\n   for (i=1;i<xlt.newborderstyles.length;i++) {\n      result.push(\"border:\"+i+\":\"+xlt.newborderstyles[i]);\n      }\n\n   for (i=1;i<xlt.newcellformats.length;i++) {\n      result.push(\"cellformat:\"+i+\":\"+SocialCalc.encodeForSave(xlt.newcellformats[i]));\n      }\n\n   for (i=1;i<xlt.newcolors.length;i++) {\n      result.push(\"color:\"+i+\":\"+xlt.newcolors[i]);\n      }\n\n   for (i=1;i<xlt.newfonts.length;i++) {\n      result.push(\"font:\"+i+\":\"+xlt.newfonts[i]);\n      }\n\n   for (i=1;i<xlt.newlayouts.length;i++) {\n      result.push(\"layout:\"+i+\":\"+xlt.newlayouts[i]);\n      }\n\n   for (i=1;i<xlt.newvalueformats.length;i++) {\n      result.push(\"valueformat:\"+i+\":\"+SocialCalc.encodeForSave(xlt.newvalueformats[i]));\n      }\n\n   for (i=0; i<xlt.namesorder.length; i++) {\n      name = xlt.namesorder[i];\n      result.push(\"name:\"+SocialCalc.encodeForSave(name).toUpperCase()+\":\"+\n                   SocialCalc.encodeForSave(sheetobj.names[name].desc)+\":\"+\n                   SocialCalc.encodeForSave(sheetobj.names[name].definition));\n      }\n\n   if (range) {\n      result.push(\"copiedfrom:\"+SocialCalc.crToCoord(cr1.col, cr1.row)+\":\"+\n                  SocialCalc.crToCoord(cr2.col, cr2.row));\n      }\n\n   result.push(\"\"); // one extra to get extra \\n\n\n   delete sheetobj.xlt; // clean up\n\n   return result.join(\"\\n\");\n   }\n\n//\n// line = SocialCalc.CellToString(sheet, cell)\n//\n\nSocialCalc.CellToString = function(sheet, cell) {\n\n   var cell, line, value, formula, t, r, b, l, xlt;\n\n   line = \"\";\n\n   if (!cell) return line;\n\n   value = SocialCalc.encodeForSave(cell.datavalue);\n   if (cell.datatype==\"v\") {\n      if (cell.valuetype==\"n\") line += \":v:\"+value;\n      else line += \":vt:\"+cell.valuetype+\":\"+value;\n      }\n   else if (cell.datatype==\"t\") {\n      if (cell.valuetype==SocialCalc.Constants.textdatadefaulttype)\n         line += \":t:\"+value;\n      else line += \":vt:\"+cell.valuetype+\":\"+value;\n      }\n   else {\n      formula = SocialCalc.encodeForSave(cell.formula);\n      if (cell.datatype==\"f\") {\n         line += \":vtf:\"+cell.valuetype+\":\"+value+\":\"+formula;\n         }\n      else if (cell.datatype==\"c\") {\n         line += \":vtc:\"+cell.valuetype+\":\"+value+\":\"+formula;\n         }\n      }\n   if (cell.readonly) {\n      line += \":ro:yes\";\n      }\n   if (cell.errors) {\n      line += \":e:\"+SocialCalc.encodeForSave(cell.errors);\n      }\n   t = cell.bt || \"\";\n   r = cell.br || \"\";\n   b = cell.bb || \"\";\n   l = cell.bl || \"\";\n\n   if (sheet.xlt) { // if have canonical save info\n      xlt = sheet.xlt;\n      if (t || r || b || l)\n      line += \":b:\"+xlt.borderstylesxlat[t||0]+\":\"+xlt.borderstylesxlat[r||0]+\":\"+xlt.borderstylesxlat[b||0]+\":\"+xlt.borderstylesxlat[l||0];\n      if (cell.layout) line += \":l:\"+xlt.layoutsxlat[cell.layout];\n      if (cell.font) line += \":f:\"+xlt.fontsxlat[cell.font];\n      if (cell.color) line += \":c:\"+xlt.colorsxlat[cell.color];\n      if (cell.bgcolor) line += \":bg:\"+xlt.colorsxlat[cell.bgcolor];\n      if (cell.cellformat) line += \":cf:\"+xlt.cellformatsxlat[cell.cellformat];\n      if (cell.textvalueformat) line += \":tvf:\"+xlt.valueformatsxlat[cell.textvalueformat];\n      if (cell.nontextvalueformat) line += \":ntvf:\"+xlt.valueformatsxlat[cell.nontextvalueformat];\n      }\n   else {\n      if (t || r || b || l)\n      line += \":b:\"+t+\":\"+r+\":\"+b+\":\"+l;\n      if (cell.layout) line += \":l:\"+cell.layout;\n      if (cell.font) line += \":f:\"+cell.font;\n      if (cell.color) line += \":c:\"+cell.color;\n      if (cell.bgcolor) line += \":bg:\"+cell.bgcolor;\n      if (cell.cellformat) line += \":cf:\"+cell.cellformat;\n      if (cell.textvalueformat) line += \":tvf:\"+cell.textvalueformat;\n      if (cell.nontextvalueformat) line += \":ntvf:\"+cell.nontextvalueformat;\n      }\n   if (cell.colspan) line += \":colspan:\"+cell.colspan;\n   if (cell.rowspan) line += \":rowspan:\"+cell.rowspan;\n   if (cell.cssc) line += \":cssc:\"+cell.cssc;\n   if (cell.csss) line += \":csss:\"+SocialCalc.encodeForSave(cell.csss);\n   if (cell.mod) line += \":mod:\"+cell.mod;\n   if (cell.comment) line += \":comment:\"+SocialCalc.encodeForSave(cell.comment);\n\n   return line;\n\n   }\n\n//\n// SocialCalc.CanonicalizeSheet(sheetobj, full)\n//\n// Goes through the sheet and fills in sheetobj.xlt with the following:\n//\n//   .maxrow, .maxcol - lastrow and lastcol are as small as possible\n//   .newlayouts - new version of sheetobj.layouts without unused ones and all in ascending order\n//   .layoutsxlat - maps old layouts index to new one\n//   same \".new\" and \".xlat\" for fonts, colors, borderstyles, cell and value formats\n//   .namesorder - array with names sorted\n//\n// If full or SocialCalc.Constants.doCanonicalizeSheet are not true, then the values will leave things unchanged (to save time, etc.)\n//\n// sheetobj.xlt should be deleted when you are finished using it\n//\n\nSocialCalc.CanonicalizeSheet = function(sheetobj, full) {\n\n   var l, coord, cr, cell, filled, an, a, newa, newxlat, used, ahash, i, v;\n   var maxrow = 0;\n   var maxcol = 0;\n   var alist = [\"borderstyle\", \"cellformat\", \"color\", \"font\", \"layout\", \"valueformat\"];\n\n   var xlt = {};\n\n   xlt.namesorder = []; // always return a sorted list\n   for (a in sheetobj.names) {\n      xlt.namesorder.push(a);\n      }\n   xlt.namesorder.sort();\n\n   if (!SocialCalc.Constants.doCanonicalizeSheet || !full) { // return make-no-changes values if not wanted\n      for (an=0; an<alist.length; an++) {\n         a = alist[an];\n         xlt[\"new\"+a+\"s\"] = sheetobj[a+\"s\"];\n         l = sheetobj[a+\"s\"].length;\n         newxlat = new Array(l);\n         newxlat[0] = \"\";\n         for (i=1; i<l; i++) {\n            newxlat[i] = i;\n            }\n         xlt[a+\"sxlat\"] = newxlat;\n         }\n\n      xlt.maxrow = sheetobj.attribs.lastrow;\n      xlt.maxcol = sheetobj.attribs.lastcol;\n\n      sheetobj.xlt = xlt;\n\n      return;\n      }\n\n   for (an=0; an<alist.length; an++) {\n      a = alist[an];\n      xlt[a+\"sUsed\"] = {};\n      }\n\n   var colorsUsed = xlt.colorsUsed;\n   var borderstylesUsed = xlt.borderstylesUsed;\n   var fontsUsed = xlt.fontsUsed;\n   var layoutsUsed = xlt.layoutsUsed;\n   var cellformatsUsed = xlt.cellformatsUsed;\n   var valueformatsUsed = xlt.valueformatsUsed;\n\n   for (coord in sheetobj.cells) { // check all cells to see which values are used\n      cr = SocialCalc.coordToCr(coord);\n      cell = sheetobj.cells[coord];\n      filled = false;\n\n      if (cell.valuetype && cell.valuetype!=\"b\") filled = true;\n\n      if (cell.color) {\n         colorsUsed[cell.color] = 1;\n         filled = true;\n         }\n\n      if (cell.bgcolor) {\n         colorsUsed[cell.bgcolor] = 1;\n         filled = true;\n         }\n\n      if (cell.bt) {\n         borderstylesUsed[cell.bt] = 1;\n         filled = true;\n         }\n      if (cell.br) {\n         borderstylesUsed[cell.br] = 1;\n         filled = true;\n         }\n      if (cell.bb) {\n         borderstylesUsed[cell.bb] = 1;\n         filled = true;\n         }\n      if (cell.bl) {\n         borderstylesUsed[cell.bl] = 1;\n         filled = true;\n         }\n\n      if (cell.layout) {\n         layoutsUsed[cell.layout] = 1;\n         filled = true;\n         }\n\n      if (cell.font) {\n         fontsUsed[cell.font] = 1;\n         filled = true;\n         }\n\n      if (cell.cellformat) {\n         cellformatsUsed[cell.cellformat] = 1;\n         filled = true;\n         }\n\n      if (cell.textvalueformat) {\n         valueformatsUsed[cell.textvalueformat] = 1;\n         filled = true;\n         }\n\n      if (cell.nontextvalueformat) {\n         valueformatsUsed[cell.nontextvalueformat] = 1;\n         filled = true;\n         }\n\n      if (filled) {\n         if (cr.row > maxrow) maxrow = cr.row;\n         if (cr.col > maxcol) maxcol = cr.col;\n         }\n      }\n\n   for (i=0; i<SocialCalc.sheetfieldsxlat.length; i++) { // do sheet values, too\n      v = sheetobj.attribs[SocialCalc.sheetfieldsxlat[i]];\n      if (v) {\n         xlt[SocialCalc.sheetfieldsxlatxlt[i]+\"sUsed\"][v] = 1;\n         }\n      }\n\n   a = {\"height\": 1, \"hide\": 1}; // look at explicit row settings\n   for (v in a) {\n      for (cr in sheetobj.rowattribs[v]) {\n         if (cr > maxrow) maxrow = cr;\n         }\n      }\n   a = {\"hide\": 1, \"width\": 1}; // look at explicit col settings\n   for (v in a) {\n      for (coord in sheetobj.colattribs[v]) {\n         cr = SocialCalc.coordToCr(coord+\"1\");\n         if (cr.col > maxcol) maxcol = cr.col;\n         }\n      }\n\n   for (an=0; an<alist.length; an++) { // go through the attribs we want\n      a = alist[an];\n\n      newa = [];\n      used = xlt[a+\"sUsed\"];\n      for (v in used) {\n         newa.push(sheetobj[a+\"s\"][v]);\n         }\n      newa.sort();\n      newa.unshift(\"\");\n\n      newxlat = [\"\"];\n      ahash = sheetobj[a+\"hash\"];\n\n      for (i=1; i<newa.length; i++) {\n         newxlat[ahash[newa[i]]] = i;\n         }\n\n      xlt[a+\"sxlat\"] = newxlat;\n      xlt[\"new\"+a+\"s\"] = newa;\n\n      }\n\n   xlt.maxrow = maxrow || 1;\n   xlt.maxcol = maxcol || 1;\n\n   sheetobj.xlt = xlt; // leave for use by caller\n\n   }\n\n//\n// result = SocialCalc.EncodeCellAttributes(sheet, coord)\n//\n// Returns the cell's attributes in an object, each in the following form:\n//\n//    attribname: {def: true/false, val: full-value}\n//\n\nSocialCalc.EncodeCellAttributes = function(sheet, coord) {\n\n   var value, i, b, bb;\n   var result = {};\n\n   var InitAttrib = function(name) {\n      result[name] = {def: true, val: \"\"};\n      }\n\n   var InitAttribs = function(namelist) {\n      for (var i=0; i<namelist.length; i++) {\n         InitAttrib(namelist[i]);\n         }\n      }\n\n   var SetAttrib = function(name, v) {\n      result[name].def = false;\n      result[name].val = v || \"\";\n      }\n\n   var SetAttribStar = function(name, v) {\n      if (v==\"*\") return;\n      result[name].def = false;\n      result[name].val = v;\n      }\n\n   var cell = sheet.GetAssuredCell(coord);\n\n   // cellformat: alignhoriz\n\n   InitAttrib(\"alignhoriz\");\n   if (cell.cellformat) {\n      SetAttrib(\"alignhoriz\", sheet.cellformats[cell.cellformat]);\n      }\n\n   // layout: alignvert, padtop, padright, padbottom, padleft\n\n   InitAttribs([\"alignvert\", \"padtop\", \"padright\", \"padbottom\", \"padleft\"]);\n   if (cell.layout) {\n      parts = sheet.layouts[cell.layout].match(/^padding:\\s*(\\S+)\\s+(\\S+)\\s+(\\S+)\\s+(\\S+);vertical-align:\\s*(\\S+);/);\n      SetAttribStar(\"padtop\", parts[1]);\n      SetAttribStar(\"padright\", parts[2]);\n      SetAttribStar(\"padbottom\", parts[3]);\n      SetAttribStar(\"padleft\", parts[4]);\n      SetAttribStar(\"alignvert\", parts[5]);\n      }\n\n   // font: fontfamily, fontlook, fontsize\n\n   InitAttribs([\"fontfamily\", \"fontlook\", \"fontsize\"]);\n   if (cell.font) {\n      parts = sheet.fonts[cell.font].match(/^(\\*|\\S+? \\S+?) (\\S+?) (\\S.*)$/);\n      SetAttribStar(\"fontfamily\", parts[3]);\n      SetAttribStar(\"fontsize\", parts[2]);\n      SetAttribStar(\"fontlook\", parts[1]);\n      }\n\n   // color: textcolor\n\n   InitAttrib(\"textcolor\");\n   if (cell.color) {\n      SetAttrib(\"textcolor\", sheet.colors[cell.color]);\n      }\n\n   // bgcolor: bgcolor\n\n   InitAttrib(\"bgcolor\");\n   if (cell.bgcolor) {\n      SetAttrib(\"bgcolor\", sheet.colors[cell.bgcolor]);\n      }\n\n   // formatting: numberformat, textformat\n\n   InitAttribs([\"numberformat\", \"textformat\"]);\n   if (cell.nontextvalueformat) {\n      SetAttrib(\"numberformat\", sheet.valueformats[cell.nontextvalueformat]);\n      }\n   if (cell.textvalueformat) {\n      SetAttrib(\"textformat\", sheet.valueformats[cell.textvalueformat]);\n      }\n\n   // merges: colspan, rowspan\n\n   InitAttribs([\"colspan\", \"rowspan\"]);\n   SetAttrib(\"colspan\", cell.colspan || 1);\n   SetAttrib(\"rowspan\", cell.rowspan || 1);\n\n   // borders: bXthickness, bXstyle, bXcolor for X = t, r, b, and l\n\n   for (i=0; i<4; i++) {\n      b = \"trbl\".charAt(i);\n      bb = \"b\"+b;\n      InitAttrib(bb);\n      SetAttrib(bb, cell[bb] ? sheet.borderstyles[cell[bb]] : \"\");\n      InitAttrib(bb+\"thickness\");\n      InitAttrib(bb+\"style\");\n      InitAttrib(bb+\"color\");\n      if (cell[bb]) {\n         parts = sheet.borderstyles[cell[bb]].match(/(\\S+)\\s+(\\S+)\\s+(\\S.+)/);\n         SetAttrib(bb+\"thickness\", parts[1]);\n         SetAttrib(bb+\"style\", parts[2]);\n         SetAttrib(bb+\"color\", parts[3]);\n         }\n      }\n\n   // misc: cssc, csss, mod\n\n   InitAttribs([\"cssc\", \"csss\", \"mod\"]);\n   SetAttrib(\"cssc\", cell.cssc || \"\");\n   SetAttrib(\"csss\", cell.csss || \"\");\n   SetAttrib(\"mod\", cell.mod || \"n\");\n\n   return result;\n\n   }\n\n//\n// result = SocialCalc.EncodeSheetAttributes(sheet)\n//\n// Returns the sheet's attributes in an object, each in the following form:\n//\n//    attribname: {def: true/false, val: full-value}\n//\n\nSocialCalc.EncodeSheetAttributes = function(sheet) {\n\n   var value;\n   var attribs = sheet.attribs;\n   var result = {};\n\n   var InitAttrib = function(name) {\n      result[name] = {def: true, val: \"\"};\n      }\n\n   var InitAttribs = function(namelist) {\n      for (var i=0; i<namelist.length; i++) {\n         InitAttrib(namelist[i]);\n         }\n      }\n\n   var SetAttrib = function(name, v) {\n      result[name].def = false;\n      result[name].val = v || value;\n      }\n\n   var SetAttribStar = function(name, v) {\n      if (v==\"*\") return;\n      result[name].def = false;\n      result[name].val = v;\n      }\n\n   // sizes: colwidth, rowheight\n\n   InitAttrib(\"colwidth\");\n   if (attribs.defaultcolwidth) {\n      SetAttrib(\"colwidth\", attribs.defaultcolwidth);\n      }\n\n   InitAttrib(\"rowheight\");\n   if (attribs.rowheight) {\n      SetAttrib(\"rowheight\", attribs.defaultrowheight);\n      }\n\n   // cellformat: textalignhoriz, numberalignhoriz\n\n   InitAttrib(\"textalignhoriz\");\n   if (attribs.defaulttextformat) {\n      SetAttrib(\"textalignhoriz\", sheet.cellformats[attribs.defaulttextformat]);\n      }\n\n   InitAttrib(\"numberalignhoriz\");\n   if (attribs.defaultnontextformat) {\n      SetAttrib(\"numberalignhoriz\", sheet.cellformats[attribs.defaultnontextformat]);\n      }\n\n   // layout: alignvert, padtop, padright, padbottom, padleft\n\n   InitAttribs([\"alignvert\", \"padtop\", \"padright\", \"padbottom\", \"padleft\"]);\n   if (attribs.defaultlayout) {\n      parts = sheet.layouts[attribs.defaultlayout].match(/^padding:\\s*(\\S+)\\s+(\\S+)\\s+(\\S+)\\s+(\\S+);vertical-align:\\s*(\\S+);/);\n      SetAttribStar(\"padtop\", parts[1]);\n      SetAttribStar(\"padright\", parts[2]);\n      SetAttribStar(\"padbottom\", parts[3]);\n      SetAttribStar(\"padleft\", parts[4]);\n      SetAttribStar(\"alignvert\", parts[5]);\n      }\n\n   // font: fontfamily, fontlook, fontsize\n\n   InitAttribs([\"fontfamily\", \"fontlook\", \"fontsize\"]);\n   if (attribs.defaultfont) {\n      parts = sheet.fonts[attribs.defaultfont].match(/^(\\*|\\S+? \\S+?) (\\S+?) (\\S.*)$/);\n      SetAttribStar(\"fontfamily\", parts[3]);\n      SetAttribStar(\"fontsize\", parts[2]);\n      SetAttribStar(\"fontlook\", parts[1]);\n      }\n\n   // color: textcolor\n\n   InitAttrib(\"textcolor\");\n   if (attribs.defaultcolor) {\n      SetAttrib(\"textcolor\", sheet.colors[attribs.defaultcolor]);\n      }\n\n   // bgcolor: bgcolor\n\n   InitAttrib(\"bgcolor\");\n   if (attribs.defaultbgcolor) {\n      SetAttrib(\"bgcolor\", sheet.colors[attribs.defaultbgcolor]);\n      }\n\n   // formatting: numberformat, textformat\n\n   InitAttribs([\"numberformat\", \"textformat\"]);\n   if (attribs.defaultnontextvalueformat) {\n      SetAttrib(\"numberformat\", sheet.valueformats[attribs.defaultnontextvalueformat]);\n      }\n   if (attribs.defaulttextvalueformat) {\n      SetAttrib(\"textformat\", sheet.valueformats[attribs.defaulttextvalueformat]);\n      }\n\n   // recalc: recalc\n\n   InitAttrib(\"recalc\");\n   if (attribs.recalc) {\n      SetAttrib(\"recalc\", attribs.recalc);\n      }\n\n   // usermaxcol, usermaxrow\n   InitAttrib(\"usermaxcol\");\n   if (attribs.usermaxcol) {\n      SetAttrib(\"usermaxcol\", attribs.usermaxcol);\n      }\n   InitAttrib(\"usermaxrow\");\n   if (attribs.usermaxrow) {\n      SetAttrib(\"usermaxrow\", attribs.usermaxrow);\n      }\n\n   return result;\n\n   }\n\n//\n// cmdstr = SocialCalc.DecodeCellAttributes(sheet, coord, attribs, range)\n//\n// Takes cell attributes in an object, each in the following form:\n//\n//    attribname: {def: true/false, val: full-value}\n//\n// and returns the sheet commands to make the actual attributes correspond.\n// Returns a non-null string if any commands are to be executed, null otherwise.\n//\n// If range is provided, the commands are executed on the whole range.\n//\n\nSocialCalc.DecodeCellAttributes = function(sheet, coord, newattribs, range) {\n\n   var value, b, bb;\n\n   var cell = sheet.GetAssuredCell(coord);\n\n   var changed = false;\n\n   var CheckChanges = function(attribname, oldval, cmdname) {\n      var val;\n      if (newattribs[attribname]) {\n         if (newattribs[attribname].def) {\n            val = \"\";\n            }\n         else {\n            val = newattribs[attribname].val;\n            }\n         if (val != (oldval || \"\")) {\n            DoCmd(cmdname+\" \"+val);\n            }\n         }\n      }\n\n   var cmdstr = \"\";\n\n   var DoCmd = function(str) {\n      if (cmdstr) cmdstr += \"\\n\";\n      cmdstr += \"set \"+(range || coord)+\" \"+str;\n      changed = true;\n      }\n\n   // cellformat: alignhoriz\n\n   CheckChanges(\"alignhoriz\", sheet.cellformats[cell.cellformat], \"cellformat\");\n\n   // layout: alignvert, padtop, padright, padbottom, padleft\n\n   if (!newattribs.alignvert.def || !newattribs.padtop.def || !newattribs.padright.def ||\n       !newattribs.padbottom.def || !newattribs.padleft.def) {\n      value = \"padding:\" +\n         (newattribs.padtop.def ? \"* \" : newattribs.padtop.val + \" \") +\n         (newattribs.padright.def ? \"* \" : newattribs.padright.val + \" \") +\n         (newattribs.padbottom.def ? \"* \" : newattribs.padbottom.val + \" \") +\n         (newattribs.padleft.def ? \"*\" : newattribs.padleft.val) +\n         \";vertical-align:\" +\n         (newattribs.alignvert.def ? \"*;\" : newattribs.alignvert.val+\";\");\n      }\n   else {\n      value = \"\";\n      }\n\n   if (value != (sheet.layouts[cell.layout] || \"\")) {\n      DoCmd(\"layout \"+value);\n      }\n\n   // font: fontfamily, fontlook, fontsize\n\n   if (!newattribs.fontlook.def || !newattribs.fontsize.def || !newattribs.fontfamily.def) {\n      value =\n         (newattribs.fontlook.def ? \"* \" : newattribs.fontlook.val + \" \") +\n         (newattribs.fontsize.def ? \"* \" : newattribs.fontsize.val + \" \") +\n         (newattribs.fontfamily.def ? \"*\" : newattribs.fontfamily.val);\n      }\n   else {\n      value = \"\";\n      }\n\n   if (value != (sheet.fonts[cell.font] || \"\")) {\n      DoCmd(\"font \"+value);\n      }\n\n   // color: textcolor\n\n   CheckChanges(\"textcolor\", sheet.colors[cell.color], \"color\");\n\n   // bgcolor: bgcolor\n\n   CheckChanges(\"bgcolor\", sheet.colors[cell.bgcolor], \"bgcolor\");\n\n   // formatting: numberformat, textformat\n\n   CheckChanges(\"numberformat\", sheet.valueformats[cell.nontextvalueformat], \"nontextvalueformat\");\n\n   CheckChanges(\"textformat\", sheet.valueformats[cell.textvalueformat], \"textvalueformat\");\n\n   // merges: colspan, rowspan - NOT HANDLED: IGNORED!\n\n   // borders: bX for X = t, r, b, and l; bXthickness, bXstyle, bXcolor ignored\n\n   for (i=0; i<4; i++) {\n      b = \"trbl\".charAt(i);\n      bb = \"b\"+b;\n      CheckChanges(bb, sheet.borderstyles[cell[bb]], bb);\n      }\n\n   // misc: cssc, csss, mod\n\n   CheckChanges(\"cssc\", cell.cssc, \"cssc\");\n\n   CheckChanges(\"csss\", cell.csss, \"csss\");\n\n   if (newattribs.mod) {\n      if (newattribs.mod.def) {\n         value = \"n\";\n         }\n      else {\n         value = newattribs.mod.val;\n         }\n      if (value != (cell.mod || \"n\")) {\n         if (value==\"n\") value = \"\"; // restrict to \"y\" and \"\" normally\n         DoCmd(\"mod \"+value);\n         }\n      }\n\n   // if any changes return command(s)\n\n   if (changed) {\n       return cmdstr;\n      }\n   else {\n      return null;\n      }\n\n   }\n\n\n//\n// changed = SocialCalc.DecodeSheetAttributes(sheet, newattribs)\n//\n// Takes sheet attributes in an object, each in the following form:\n//\n//    attribname: {def: true/false, val: full-value}\n//\n// and returns the sheet commands to make the actual attributes correspond.\n// Returns a non-null string if any commands were executed, null otherwise.\n//\n\nSocialCalc.DecodeSheetAttributes = function(sheet, newattribs) {\n\n   var value;\n   var attribs = sheet.attribs;\n   var changed = false;\n\n   var CheckChanges = function(attribname, oldval, cmdname) {\n      var val;\n      if (newattribs[attribname]) {\n         if (newattribs[attribname].def) {\n            val = \"\";\n            }\n         else {\n            val = newattribs[attribname].val;\n            }\n         if (val != (oldval || \"\")) {\n            DoCmd(cmdname+\" \"+val);\n            }\n         }\n      }\n\n   var cmdstr = \"\";\n\n   var DoCmd = function(str) {\n      if (cmdstr) cmdstr += \"\\n\";\n      cmdstr += \"set sheet \"+str;\n      changed = true;\n      }\n\n   // sizes: colwidth, rowheight\n\n   CheckChanges(\"colwidth\", attribs.defaultcolwidth, \"defaultcolwidth\");\n\n   CheckChanges(\"rowheight\", attribs.defaultrowheight, \"defaultrowheight\");\n\n   // cellformat: textalignhoriz, numberalignhoriz\n\n   CheckChanges(\"textalignhoriz\", sheet.cellformats[attribs.defaulttextformat], \"defaulttextformat\");\n\n   CheckChanges(\"numberalignhoriz\", sheet.cellformats[attribs.defaultnontextformat], \"defaultnontextformat\");\n\n   // layout: alignvert, padtop, padright, padbottom, padleft\n\n   if (!newattribs.alignvert.def || !newattribs.padtop.def || !newattribs.padright.def ||\n       !newattribs.padbottom.def || !newattribs.padleft.def) {\n      value = \"padding:\" +\n         (newattribs.padtop.def ? \"* \" : newattribs.padtop.val + \" \") +\n         (newattribs.padright.def ? \"* \" : newattribs.padright.val + \" \") +\n         (newattribs.padbottom.def ? \"* \" : newattribs.padbottom.val + \" \") +\n         (newattribs.padleft.def ? \"*\" : newattribs.padleft.val) +\n         \";vertical-align:\" +\n         (newattribs.alignvert.def ? \"*;\" : newattribs.alignvert.val+\";\");\n      }\n   else {\n      value = \"\";\n      }\n\n   if (value != (sheet.layouts[attribs.defaultlayout] || \"\")) {\n      DoCmd(\"defaultlayout \"+value);\n      }\n\n   // font: fontfamily, fontlook, fontsize\n\n   if (!newattribs.fontlook.def || !newattribs.fontsize.def || !newattribs.fontfamily.def) {\n      value =\n         (newattribs.fontlook.def ? \"* \" : newattribs.fontlook.val + \" \") +\n         (newattribs.fontsize.def ? \"* \" : newattribs.fontsize.val + \" \") +\n         (newattribs.fontfamily.def ? \"*\" : newattribs.fontfamily.val);\n      }\n   else {\n      value = \"\";\n      }\n\n   if (value != (sheet.fonts[attribs.defaultfont] || \"\")) {\n      DoCmd(\"defaultfont \"+value);\n      }\n\n   // color: textcolor\n\n   CheckChanges(\"textcolor\", sheet.colors[attribs.defaultcolor], \"defaultcolor\");\n\n   // bgcolor: bgcolor\n\n   CheckChanges(\"bgcolor\", sheet.colors[attribs.defaultbgcolor], \"defaultbgcolor\");\n\n   // formatting: numberformat, textformat\n\n   CheckChanges(\"numberformat\", sheet.valueformats[attribs.defaultnontextvalueformat], \"defaultnontextvalueformat\");\n\n   CheckChanges(\"textformat\", sheet.valueformats[attribs.defaulttextvalueformat], \"defaulttextvalueformat\");\n\n   // recalc: recalc\n\n   CheckChanges(\"recalc\", sheet.attribs.recalc, \"recalc\");\n\n   // usermaxcol, usermaxrow\n\n   CheckChanges(\"usermaxcol\", sheet.attribs.usermaxcol, \"usermaxcol\");\n   CheckChanges(\"usermaxrow\", sheet.attribs.usermaxrow, \"usermaxrow\");\n\n   // if any changes return command(s)\n\n   if (changed) {\n       return cmdstr;\n      }\n   else {\n      return null;\n      }\n\n   }\n\n// *************************************\n//\n// Sheet command routines\n//\n// *************************************\n\n//\n// SocialCalc.SheetCommandInfo - object with information used during command execution\n//\n\nSocialCalc.SheetCommandInfo = function(sheetobj) {\n\n   this.sheetobj = sheetobj; // sheet being operated on\n   this.timerobj = null; // used for timeslicing\n   this.firsttimerdelay = 50; // wait before starting cmds (for Chrome - to give time to update)\n   this.timerdelay = 1; // wait between slices\n   this.maxtimeslice = 100; // do another slice after this many milliseconds\n   this.saveundo = false; // arg for ExecuteSheetCommand\n\n   this.CmdExtensionCallbacks = {}; // for startcmdextension, in form: cmdname, {func:function(cmdname, data, sheet, SocialCalc.Parse object, saveundo), data:whatever}\n\n//   statuscallback: null, // called during execution - obsolete: use sheet obj's\n//   statuscallbackparams: null\n\n   };\n\n//\n// SocialCalc.ScheduleSheetCommands\n//\n// statuscallback is called at the beginning (cmdstart) and end (cmdend).\n//\n\nSocialCalc.ScheduleSheetCommands = function(sheet, cmdstr, saveundo) {\n\n   var sci = sheet.sci;\n\n   var parseobj = new SocialCalc.Parse(cmdstr);\n\n   if (sci.sheetobj.statuscallback) { // notify others if requested\n      sheet.statuscallback(sci, \"cmdstart\", \"\", sci.sheetobj.statuscallbackparams);\n      }\n\n   if (saveundo) {\n      sci.sheetobj.changes.PushChange(\"\"); // add a step to undo stack\n      }\n\n   sci.timerobj = window.setTimeout(function() {\n      SocialCalc.SheetCommandsTimerRoutine(sci, parseobj, saveundo);\n   }, sci.firsttimerdelay);\n\n   }\n\nSocialCalc.SheetCommandsTimerRoutine = function(sci, parseobj, saveundo) {\n\n   var errortext;\n   var starttime = new Date();\n   sci.timerobj = null;\n\n   while (!parseobj.EOF()) { // go through all commands (separated by newlines)\n      try {\n        errortext = SocialCalc.ExecuteSheetCommand(sci.sheetobj, parseobj, saveundo);\n      } catch (err) {\n        errortext = err.message\n      }\n\n      // Error - Use  log on server   OR  alert on client\n      if (errortext) {\n        if (typeof(alert) == \"function\")  {\n          alert(errortext);\n        } else {\n          console.log(errortext)\n        }\n      }\n\n      parseobj.NextLine();\n\n      if (((new Date()) - starttime) >= sci.maxtimeslice) { // if taking too long, give up CPU for a while\n         sci.timerobj = window.setTimeout(function() {\n            SocialCalc.SheetCommandsTimerRoutine(sci, parseobj, saveundo);\n         }, sci.timerdelay);\n         return;\n         }\n      }\n\n   if (sci.sheetobj.statuscallback) { // notify others if requested\n      sci.sheetobj.statuscallback(sci, \"cmdend\", \"\", sci.sheetobj.statuscallbackparams);\n      }\n\n   }\n\n//\n// errortext = SocialCalc.ExecuteSheetCommand(sheet, cmd, saveundo)\n//\n// cmd is a SocialCalc.Parse object.\n//\n// Executes commands that modify the sheet data.\n// Sets sheet \"needsrecalc\" as needed.\n// Sets sheet \"changedrendervalues\" as needed.\n//\n// The cmd string may be multiple commands, separated by newlines. In that case\n// only one \"step\" is put on the undo stack representing all the commands.\n// Note that because of this, in \"set A1 text ...\" and \"set A1 comment ...\" text is\n// treated as encoded (newline => \\n, \\ => \\b, : => \\c).\n//\n// The commands are in the forms:\n//\n//    set sheet attributename value (plus lastcol and lastrow)\n//    set 22 attributename value\n//    set B attributename value\n//    set A1 attributename value1 value2... (see each attribute in code for details)\n//    set A1:B5 attributename value1 value2...\n//    erase/copy/cut/paste/fillright/filldown A1:B5 all/formulas/format\n//    loadclipboard save-encoded-clipboard-data\n//    clearclipboard\n//    merge C3:F3\n//    unmerge C3\n//    insertcol/insertrow C5\n//    deletecol/deleterow C5:E7\n//    movepaste/moveinsert A1:B5 A8 all/formulas/format (if insert, destination must be in same rows or columns or else paste done)\n//    sort cr1:cr2 col1 up/down col2 up/down col3 up/down\n//    name define NAME definition\n//    name desc NAME description\n//    name delete NAME\n//    recalc\n//    redisplay\n//    changedrendervalues\n//    startcmdextension extension rest-of-command\n//    sendemail ??? eddy ???\n//\n// If saveundo is true, then undo information is saved in sheet.changes.\n//\n\nSocialCalc.ExecuteSheetCommand = function(sheet, cmd, saveundo) {\n\n   var cmdstr, cmd1, rest, what, attrib, num, pos, pos2, errortext, undostart, val;\n   var cr1, cr2, col, row, cr, cell, newcell;\n   var fillright, rowstart, colstart, crbase, rowoffset, coloffset, basecell;\n   var clipsheet, cliprange, numcols, numrows, attribtable;\n   var colend, rowend, newcolstart, newrowstart, newcolend, newrowend, rownext, colnext, colthis, cellnext;\n   var lastrow, lastcol, rowbefore, colbefore, oldformula, oldcr;\n   var cols, dirs, lastsortcol, i, sortlist, sortcells, sortvalues, sorttypes;\n   var sortfunction, slen, valtype, originalrow, sortedcr;\n   var name, v1, v2;\n   var cmdextension;\n   var col, row, editor, undoNum, trackLine;\n\n   var attribs = sheet.attribs;\n   var changes = sheet.changes;\n   var cellProperties = SocialCalc.CellProperties;\n   var scc = SocialCalc.Constants;\n   var cellChanged = false;\n\n   var ParseRange =\n      function() {\n         var prange = SocialCalc.ParseRange(what);\n         cr1 = prange.cr1;\n         cr2 = prange.cr2;\n         if (cr2.col > attribs.lastcol) attribs.lastcol = cr2.col;\n         if (cr2.row > attribs.lastrow) attribs.lastrow = cr2.row;\n         };\n\n   errortext = \"\";\n\n   cmdstr = cmd.RestOfStringNoMove();\n   if (saveundo) {\n      sheet.changes.AddDo(cmdstr);\n      }\n\n   cmd1 = cmd.NextToken();\n   switch (cmd1) {\n\n      case \"set\":\n         what = cmd.NextToken();\n         attrib = cmd.NextToken();\n         rest = cmd.RestOfString();\n         undostart = \"set \"+what+\" \"+attrib;\n\n         if (what==\"sheet\") {\n            sheet.renderneeded = true;\n            switch (attrib) {\n               case \"defaultcolwidth\":\n                  if (saveundo) changes.AddUndo(undostart, attribs[attrib]);\n                  attribs[attrib] = rest;\n                  break;\n               case \"defaultcolor\":\n               case \"defaultbgcolor\":\n                  if (saveundo) changes.AddUndo(undostart, sheet.GetStyleString(\"color\", attribs[attrib]));\n                  attribs[attrib] = sheet.GetStyleNum(\"color\", rest);\n                  break;\n               case \"defaultlayout\":\n                  if (saveundo) changes.AddUndo(undostart, sheet.GetStyleString(\"layout\", attribs[attrib]));\n                  attribs[attrib] = sheet.GetStyleNum(\"layout\", rest);\n                  break;\n               case \"defaultfont\":\n                  if (saveundo) changes.AddUndo(undostart, sheet.GetStyleString(\"font\", attribs[attrib]));\n                  if (rest==\"* * *\") rest = \"\"; // all default\n                  attribs[attrib] = sheet.GetStyleNum(\"font\", rest);\n                  break;\n               case \"defaulttextformat\":\n               case \"defaultnontextformat\":\n                  if (saveundo) changes.AddUndo(undostart, sheet.GetStyleString(\"cellformat\", attribs[attrib]));\n                  attribs[attrib] = sheet.GetStyleNum(\"cellformat\", rest);\n                  break;\n               case \"defaulttextvalueformat\":\n               case \"defaultnontextvalueformat\":\n                  if (saveundo) changes.AddUndo(undostart, sheet.GetStyleString(\"valueformat\", attribs[attrib]));\n                  attribs[attrib] = sheet.GetStyleNum(\"valueformat\", rest);\n                  for (cr in sheet.cells) { // forget all cached display strings\n                     delete sheet.cells[cr].displaystring;\n                     }\n                  break;\n               case \"lastcol\":\n               case \"lastrow\":\n                  if (saveundo) changes.AddUndo(undostart, attribs[attrib]-0);\n                  num = rest-0;\n                  if (typeof num == \"number\") attribs[attrib] = num > 0 ? num : 1;\n                  break;\n               case \"recalc\":\n                  if (saveundo) changes.AddUndo(undostart, attribs[attrib]);\n                  if (rest == \"off\") {\n                     attribs.recalc = rest; // manual recalc, not auto\n                     }\n                  else { // all values other than \"off\" mean \"on\"\n                     delete attribs.recalc;\n                     }\n                  break;\n               case \"usermaxcol\":\n               case \"usermaxrow\":\n                  if (saveundo) changes.AddUndo(undostart, attribs[attrib]-0);\n                  num = rest-0;\n                  if (typeof num == \"number\") attribs[attrib] = num > 0 ? num : 0;\n                  break;\n               default:\n                  errortext = scc.s_escUnknownSheetCmd+cmdstr;\n                  break;\n               }\n            }\n\n         else if (/^[a-z]{1,2}(:[a-z]{1,2})?$/i.test(what)) { // col attributes\n            sheet.renderneeded = true;\n\n            what = what.toUpperCase();\n            pos = what.indexOf(\":\");\n            if (pos>=0) {\n               cr1 = SocialCalc.coordToCr(what.substring(0,pos)+\"1\");\n               cr2 = SocialCalc.coordToCr(what.substring(pos+1)+\"1\");\n               }\n            else {\n               cr1 = SocialCalc.coordToCr(what+\"1\");\n               cr2 = cr1;\n               }\n            for (col=cr1.col; col <= cr2.col; col++) {\n               if (attrib==\"width\") {\n                  cr = SocialCalc.rcColname(col);\n                  if (saveundo) changes.AddUndo(\"set \"+cr+\" width\", sheet.colattribs.width[cr]);\n                  if (rest.length > 0 ) {\n                     sheet.colattribs.width[cr] = rest;\n                     }\n                  else {\n                     delete sheet.colattribs.width[cr];\n                     }\n                  }\n               else if (attrib==\"hide\") {\n                  sheet.hiddencolrow = \"col\";\n                  cr = SocialCalc.rcColname(col);\n                  if (saveundo) changes.AddUndo(\"set \"+cr+\" hide\", sheet.colattribs.hide[cr]);\n                  if (rest.length > 0) {\n                     sheet.colattribs.hide[cr] = rest;\n                     }\n                  else {\n                     delete sheet.colattribs.hide[cr];\n                     }\n                  }\n               }\n            }\n\n         else if (/^\\d+(:\\d+)?$/i.test(what)) { // row attributes\n            sheet.renderneeded = true;\n            what = what.toUpperCase();\n            pos = what.indexOf(\":\");\n            if (pos>=0) {\n               cr1 = SocialCalc.coordToCr(\"A\"+what.substring(0,pos));\n               cr2 = SocialCalc.coordToCr(\"A\"+what.substring(pos+1));\n               }\n            else {\n               cr1 = SocialCalc.coordToCr(\"A\"+what);\n               cr2 = cr1;\n               }\n            for (row=cr1.row; row <= cr2.row; row++) {\n               if (attrib==\"height\") {\n                  if (saveundo) changes.AddUndo(\"set \"+row+\" height\", sheet.rowattribs.height[row]);\n                  if (rest.length > 0 ) {\n                     sheet.rowattribs.height[row] = rest;\n                     }\n                  else {\n                     delete sheet.rowattribs.height[row];\n                     }\n                  }\n               else if (attrib==\"hide\") {\n                  sheet.hiddencolrow = \"row\";\n                  if (saveundo) changes.AddUndo(\"set \"+row+\" hide\", sheet.rowattribs.hide[row]);\n                  if (rest.length > 0) {\n                     sheet.rowattribs.hide[row] = rest;\n                     }\n                  else {\n                     delete sheet.rowattribs.hide[row];\n                     }\n                  }\n               }\n            }\n\n         else if (/^[a-z]{1,2}\\d+(:[a-z]{1,2}\\d+)?$/i.test(what)) { // cell attributes\n           cellChanged = true;\n            ParseRange();\n            if (cr1.row!=cr2.row || cr1.col!=cr2.col || sheet.celldisplayneeded || sheet.renderneeded) { // not one cell\n               sheet.renderneeded = true;\n               sheet.celldisplayneeded = \"\";\n               }\n            else {\n               sheet.celldisplayneeded = SocialCalc.crToCoord(cr1.col, cr1.row);\n               }\n            for (row=cr1.row; row <= cr2.row; row++) {\n               for (col=cr1.col; col <= cr2.col; col++) {\n                  cr = SocialCalc.crToCoord(col, row);\n                  cell=sheet.GetAssuredCell(cr);\n                  if (cell.readonly && attrib!=\"readonly\") continue;\n                  if (saveundo) changes.AddUndo(\"set \"+cr+\" all\", sheet.CellToString(cell));\n                  if (attrib==\"value\") { // set coord value type numeric-value\n                     pos = rest.indexOf(\" \");\n                     cell.datavalue = rest.substring(pos+1)-0;\n                     delete cell.errors;\n                     cell.datatype = \"v\";\n                     cell.valuetype = rest.substring(0,pos);\n                     delete cell.displaystring;\n                     delete cell.parseinfo;\n                     attribs.needsrecalc = \"yes\";\n                     }\n                  else if (attrib==\"text\") { // set coord text type text-value\n                     pos = rest.indexOf(\" \");\n                     cell.datavalue = SocialCalc.decodeFromSave(rest.substring(pos+1));\n                     delete cell.errors;\n                     cell.datatype = \"t\";\n                     cell.valuetype = rest.substring(0,pos);\n                     delete cell.displaystring;\n                     delete cell.parseinfo;\n                     attribs.needsrecalc = \"yes\";\n                     }\n                  else if (attrib==\"formula\") { // set coord formula formula-body-less-initial-=\n                     cell.datavalue = 0; // until recalc\n                     delete cell.errors;\n                     cell.datatype = \"f\";\n                     if(SocialCalc._app && cell.valuetype != \"e#N/A\") cell.prevvaluetype = cell.valuetype;  // repaint when widgets added/removed\n                     cell.valuetype = \"e#N/A\"; // until recalc\n                     cell.formula = rest;\n                     delete cell.displaystring;\n                     delete cell.parseinfo;\n                     attribs.needsrecalc = \"yes\";\n                     }\n                  else if (attrib==\"constant\") { // set coord constant type numeric-value source-text\n                     pos = rest.indexOf(\" \");\n                     pos2 = rest.substring(pos+1).indexOf(\" \");\n                     cell.datavalue = rest.substring(pos+1,pos+1+pos2)-0;\n                     cell.valuetype = rest.substring(0,pos);\n                     if (cell.valuetype.charAt(0)==\"e\") { // error\n                        cell.errors = cell.valuetype.substring(1);\n                        }\n                     else {\n                        delete cell.errors;\n                        }\n                     cell.datatype = \"c\";\n                     cell.formula = rest.substring(pos+pos2+2);\n                     delete cell.displaystring;\n                     delete cell.parseinfo;\n                     attribs.needsrecalc = \"yes\";\n                     }\n                  else if (attrib==\"empty\") { // erase value\n                     cell.datavalue = \"\";\n                     delete cell.errors;\n                     cell.datatype = null;\n                     cell.formula = \"\";\n                     cell.valuetype = \"b\";\n                     delete cell.displaystring;\n                     delete cell.parseinfo;\n                     attribs.needsrecalc = \"yes\";\n                     }\n                  else if (attrib==\"all\") { // set coord all :this:val1:that:val2...\n                     if (rest.length>0) {\n                        cell = new SocialCalc.Cell(cr);\n                        sheet.CellFromStringParts(cell, rest.split(\":\"), 1);\n                        sheet.cells[cr] = cell;\n                        }\n                     else {\n                        delete sheet.cells[cr];\n                        }\n                     attribs.needsrecalc = \"yes\";\n                     }\n                  else if (/^b[trbl]$/.test(attrib)) { // set coord bt 1px solid black\n                     cell[attrib] = sheet.GetStyleNum(\"borderstyle\", rest);\n                     sheet.renderneeded = true; // affects more than just one cell\n                     }\n                  else if (attrib==\"color\" || attrib==\"bgcolor\") {\n                     cell[attrib] = sheet.GetStyleNum(\"color\", rest);\n                     }\n                  else if (attrib==\"layout\" || attrib==\"cellformat\") {\n                     cell[attrib] = sheet.GetStyleNum(attrib, rest);\n                     }\n                  else if (attrib==\"font\") { // set coord font style weight size family\n                     if (rest==\"* * *\") rest = \"\";\n                     cell[attrib] = sheet.GetStyleNum(\"font\", rest);\n                     }\n                  else if (attrib==\"textvalueformat\" || attrib==\"nontextvalueformat\") {\n                     cell[attrib] = sheet.GetStyleNum(\"valueformat\", rest);\n                     delete cell.displaystring;\n                     }\n                  else if (attrib==\"cssc\") {\n                     rest = rest.replace(/[^a-zA-Z0-9\\-]/g, \"\");\n                     cell.cssc = rest;\n                     }\n                  else if (attrib==\"csss\") {\n                     rest = rest.replace(/\\n/g, \"\");\n                     cell.csss = rest;\n                     }\n                  else if (attrib==\"mod\") {\n                     rest = rest.replace(/[^yY]/g, \"\").toLowerCase();\n                     cell.mod = rest;\n                     }\n                  else if (attrib==\"comment\") {\n                     cell.comment = SocialCalc.decodeFromSave(rest);\n                     }\n                  else if (attrib==\"readonly\") {\n                     cell.readonly = rest.toLowerCase()==\"yes\";\n                     }\n                  else {\n                     errortext = scc.s_escUnknownSetCoordCmd+cmdstr;\n                     }\n                  }\n               }\n\n            }\n         break;\n\n      case \"merge\":\n         sheet.renderneeded = true;\n         what = cmd.NextToken();\n         rest = cmd.RestOfString();\n         ParseRange();\n         cell=sheet.GetAssuredCell(cr1.coord);\n         if (cell.readonly) break;\n\n         // check whether merged cells other than cr1 contain data and clear them\n         for (row=cr1.row; row <= cr2.row; row++) {\n            for (col=cr1.col; col <= cr2.col; col++) {\n               if (!(row == cr1.row && col == cr1.col)){ // skip top left cell\n                   quashedCellCoord = SocialCalc.crToCoord(col, row);\n                   quashedCell = sheet.GetAssuredCell(quashedCellCoord);\n                   // save quashed cell value for undo\n                   if (saveundo) changes.AddUndo(\"set \"+quashedCellCoord+\" all\", sheet.CellToString(quashedCell));\n                   delete sheet.cells[quashedCellCoord]; // delete cell\n               }\n            }\n         }\n\n\n         if (saveundo) changes.AddUndo(\"unmerge \"+cr1.coord);\n\n         if (cr2.col > cr1.col) cell.colspan = cr2.col - cr1.col + 1;\n         else delete cell.colspan;\n         if (cr2.row > cr1.row) cell.rowspan = cr2.row - cr1.row + 1;\n         else delete cell.rowspan;\n\n         sheet.changedrendervalues = true;\n\n         break;\n\n      case \"unmerge\":\n         sheet.renderneeded = true;\n         what = cmd.NextToken();\n         rest = cmd.RestOfString();\n         ParseRange();\n         cell=sheet.GetAssuredCell(cr1.coord);\n         if (cell.readonly) break;\n         if (saveundo) changes.AddUndo(\"merge \"+cr1.coord+\":\"+SocialCalc.crToCoord(cr1.col+(cell.colspan||1)-1, cr1.row+(cell.rowspan||1)-1));\n\n         delete cell.colspan;\n         delete cell.rowspan;\n\n         sheet.changedrendervalues = true;\n\n         break;\n\n      case \"erase\":\n      case \"cut\":\n         sheet.renderneeded = true;\n         sheet.changedrendervalues = true;\n         what = cmd.NextToken();\n         rest = cmd.RestOfString();\n         ParseRange();\n\n         if (saveundo) changes.AddUndo(\"changedrendervalues\"); // to take care of undone pasted spans\n         if (cmd1==\"cut\") { // save copy of whole thing before erasing\n            if (saveundo) changes.AddUndo(\"loadclipboard\", SocialCalc.encodeForSave(SocialCalc.Clipboard.clipboard));\n            SocialCalc.Clipboard.clipboard = SocialCalc.CreateSheetSave(sheet, what);\n            }\n\n         for (row = cr1.row; row <= cr2.row; row++) {\n            for (col = cr1.col; col <= cr2.col; col++) {\n               cr = SocialCalc.crToCoord(col, row);\n               cell=sheet.GetAssuredCell(cr);\n               if (cell.readonly) continue;\n               if (saveundo) changes.AddUndo(\"set \"+cr+\" all\", sheet.CellToString(cell));\n               if (rest==\"all\") {\n                  delete sheet.cells[cr];\n                  }\n               else if (rest == \"formulas\") {\n                  cell.datavalue = \"\";\n                  cell.datatype = null;\n                  cell.formula = \"\";\n                  cell.valuetype = \"b\";\n                  delete cell.errors;\n                  delete cell.displaystring;\n                  delete cell.parseinfo;\n                  if (cell.comment) { // comments are considered content for erasing\n                     delete cell.comment;\n                     }\n                  }\n               else if (rest == \"formats\") {\n                  newcell = new SocialCalc.Cell(cr); // create a new cell without attributes\n                  newcell.datavalue = cell.datavalue; // copy existing values\n                  newcell.datatype = cell.datatype;\n                  newcell.formula = cell.formula;\n                  newcell.valuetype = cell.valuetype;\n                  if (cell.comment) {\n                     newcell.comment = cell.comment;\n                     }\n                  sheet.cells[cr] = newcell; // replace\n                  }\n               }\n            }\n         attribs.needsrecalc = \"yes\";\n         break;\n\n      case \"fillright\":\n      case \"filldown\":\n         sheet.renderneeded = true;\n         sheet.changedrendervalues = true;\n         if (saveundo) changes.AddUndo(\"changedrendervalues\"); // to take care of undone pasted spans\n         what = cmd.NextToken();\n         rest = cmd.RestOfString();\n         ParseRange();\n         function increment_amount(down) {\n            function valid_datatype(type) {\n\t\treturn type == \"v\" || type == \"c\";\n            }\n            var editor = SocialCalc.GetSpreadsheetControlObject().editor;\n            var range = editor.range2;\n            var returnval = undefined;\n            if (range.hasrange) {\n                var startcell, endcell;\n                if (down && (range.bottom - range.top == 1) && range.left == range.right) {\n                  startcell = sheet.GetAssuredCell(SocialCalc.crToCoord(range.left, range.top));\n                  endcell = sheet.GetAssuredCell(SocialCalc.crToCoord(range.left, range.bottom));\n                  if (valid_datatype(startcell.datatype) && valid_datatype(endcell.datatype)) {\n                      returnval =  endcell.datavalue - startcell.datavalue;\n                  }\n                } else if (!down && range.left != range.right) {\n                  startcell = sheet.GetAssuredCell(SocialCalc.crToCoord(range.left, range.top));\n                  endcell = sheet.GetAssuredCell(SocialCalc.crToCoord(range.right, range.top));\n                  if (valid_datatype(startcell.datatype) && valid_datatype(endcell.datatype)) {\n                      returnval =  endcell.datavalue - startcell.datavalue;\n\t\t  }\n                }\n            }\n           editor.Range2Remove();\n           return returnval;\n         }\n\t var inc;\n         if (cmd1 == \"fillright\") {\n            fillright = true;\n            rowstart = cr1.row;\n            colstart = cr1.col + 1;\n\t    inc = increment_amount(false);\n            }\n         else {\n            fillright = false;\n            rowstart = cr1.row + 1;\n            colstart = cr1.col;\n\t    inc = increment_amount(true);\n            }\n         for (row = rowstart; row <= cr2.row; row++) {\n            for (col = colstart; col <= cr2.col; col++) {\n               cr = SocialCalc.crToCoord(col, row);\n               cell=sheet.GetAssuredCell(cr);\n               if (cell.readonly) continue;\n               if (saveundo) changes.AddUndo(\"set \"+cr+\" all\", sheet.CellToString(cell));\n               if (fillright) {\n                  crbase = SocialCalc.crToCoord(cr1.col, row);\n                  coloffset = col - colstart + 1;\n                  rowoffset = 0;\n                  }\n               else {\n                  crbase = SocialCalc.crToCoord(col, cr1.row);\n                  coloffset = 0;\n                  rowoffset = row - rowstart + 1;\n                  }\n               basecell = sheet.GetAssuredCell(crbase);\n               if (rest == \"all\" || rest == \"formats\") {\n                  for (attrib in cellProperties) {\n                     if (cellProperties[attrib] == 1) continue; // copy only format attributes\n                     if (typeof basecell[attrib] === undefined || cellProperties[attrib] == 3) {\n                        delete cell[attrib];\n                        }\n                     else {\n                        cell[attrib] = basecell[attrib];\n                        }\n                     }\n                  }\n               if (rest == \"all\" || rest == \"formulas\") {\n                  if (inc !== undefined) {\n                      cell.datavalue = basecell.datavalue + (fillright ? coloffset : rowoffset)*inc;\n                  } else {\n                      cell.datavalue = basecell.datavalue;\n                  }\n                  cell.datatype = basecell.datatype;\n                  cell.valuetype = basecell.valuetype;\n                  if (cell.datatype == \"f\") { // offset relative coords, even in sheet references\n                     cell.formula = SocialCalc.OffsetFormulaCoords(basecell.formula, coloffset, rowoffset);\n                     }\n                  else {\n                     cell.formula = basecell.formula;\n                     }\n                  delete cell.parseinfo;\n                  cell.errors = basecell.errors;\n                  }\n               delete cell.displaystring;\n               }\n            }\n\n         attribs.needsrecalc = \"yes\";\n         break;\n\n      case \"copy\":\n         what = cmd.NextToken();\n         rest = cmd.RestOfString();\n         if (saveundo) changes.AddUndo(\"loadclipboard\", SocialCalc.encodeForSave(SocialCalc.Clipboard.clipboard));\n         SocialCalc.Clipboard.clipboard = SocialCalc.CreateSheetSave(sheet, what);\n         break;\n\n      case \"loadclipboard\":\n         rest = cmd.RestOfString();\n         if (saveundo) changes.AddUndo(\"loadclipboard\", SocialCalc.encodeForSave(SocialCalc.Clipboard.clipboard));\n         SocialCalc.Clipboard.clipboard = SocialCalc.decodeFromSave(rest);\n         break;\n\n      case \"clearclipboard\":\n         if (saveundo) changes.AddUndo(\"loadclipboard\", SocialCalc.encodeForSave(SocialCalc.Clipboard.clipboard));\n         SocialCalc.Clipboard.clipboard = \"\";\n         break;\n\n      case \"paste\":\n         sheet.renderneeded = true;\n         sheet.changedrendervalues = true;\n         if (saveundo) changes.AddUndo(\"changedrendervalues\"); // to take care of undone pasted spans\n         what = cmd.NextToken();\n         rest = cmd.RestOfString();\n         ParseRange();\n         if (!SocialCalc.Clipboard.clipboard) {\n            break;\n            }\n         clipsheet = new SocialCalc.Sheet(); // load clipboard contents as another sheet\n         clipsheet.ParseSheetSave(SocialCalc.Clipboard.clipboard);\n         cliprange = SocialCalc.ParseRange(clipsheet.copiedfrom);\n         numcols = Math.max(cr2.col - cr1.col + 1, cliprange.cr2.col - cliprange.cr1.col + 1);\n         numrows = Math.max(cr2.row - cr1.row + 1, cliprange.cr2.row - cliprange.cr1.row + 1);\n         if (cr1.col+numcols-1 > attribs.lastcol) attribs.lastcol = cr1.col+numcols-1;\n         if (cr1.row+numrows-1 > attribs.lastrow) attribs.lastrow = cr1.row+numrows-1;\n\n         for (row = cr1.row; row < cr1.row+numrows; row++) {\n            for (col = cr1.col; col < cr1.col+numcols; col++) {\n               cr = SocialCalc.crToCoord(col, row);\n               cell=sheet.GetAssuredCell(cr);\n               if (cell.readonly) continue;\n               if (saveundo) changes.AddUndo(\"set \"+cr+\" all\", sheet.CellToString(cell));\n               var currentClipCol = cliprange.cr1.col + ((col-cr1.col) % (cliprange.cr2.col - cliprange.cr1.col + 1)); \n               var currentClipRow = cliprange.cr1.row + ((row-cr1.row) % (cliprange.cr2.row - cliprange.cr1.row + 1));\n               crbase = SocialCalc.crToCoord(currentClipCol, currentClipRow);\n               basecell = clipsheet.GetAssuredCell(crbase);\n               if (rest == \"all\" || rest == \"formats\") {\n                 // get source width and hidden attribute\n                 // and copy to sheet\n                 if(row == cr1.row) { // only need 1st row of cols\n                   // col attributes\n                   sourceColname = SocialCalc.rcColname(cliprange.cr1.col + ((col-cr1.col) % (cliprange.cr2.col - cliprange.cr1.col + 1)));\n                   colWidth = clipsheet.colattribs.width[ sourceColname];\n                   colHide = clipsheet.colattribs.hide[sourceColname];\n                   if (colWidth != null) {\n                     // if source col width exists\n                     // set dest col width\n                     sheet.colattribs.width[SocialCalc.rcColname(col)] = colWidth;\n                     }\n                   if (colHide != null) {\n                     // if source col is hidden\n                     // set dest col hidden\n                     sheet.colattribs.hide[SocialCalc.rcColname(col)] = colHide;\n                     }\n                   }\n                 if(col == cr1.col) {  // only need 1st col or rows\n                   // row attributes\n                   sourceRow = cliprange.cr1.row + ((row-cr1.row) % (cliprange.cr2.row - cliprange.cr1.row + 1));\n                   rowHide = clipsheet.rowattribs.hide[sourceRow];\n                   if (rowHide != null) {\n                     // if source row is hidden\n                     // set dest row hidden\n                     sheet.rowattribs.hide[row] = rowHide;\n                     }\n                 }\n\n                 for (attrib in cellProperties) {\n                     if (cellProperties[attrib] == 1) continue; // copy only format attributes\n                     if (typeof basecell[attrib] === undefined || cellProperties[attrib] == 3) {\n                        delete cell[attrib];\n                        }\n                     else {\n                        attribtable = SocialCalc.CellPropertiesTable[attrib];\n                        if (attribtable && basecell[attrib]) { // table indexes to expand to strings since other sheet may have diff indexes\n                           cell[attrib] = sheet.GetStyleNum(attribtable, clipsheet.GetStyleString(attribtable, basecell[attrib]));\n                           }\n                        else { // these are not table indexes\n                           cell[attrib] = basecell[attrib];\n                           }\n                        }\n                     }\n                  }\n               if (rest == \"all\" || rest == \"formulas\") {\n                  cell.datavalue = basecell.datavalue;\n                  cell.datatype = basecell.datatype;\n                  cell.valuetype = basecell.valuetype;\n                  if (cell.datatype == \"f\") { // offset relative coords, even in sheet references\n                     cell.formula = SocialCalc.OffsetFormulaCoords(basecell.formula, col - currentClipCol, row - currentClipRow);\n                     }\n                  else {\n                     cell.formula = basecell.formula;\n                     }\n                  delete cell.parseinfo;\n                  cell.errors = basecell.errors;\n                  if (basecell.comment) { // comments are pasted as part of content, though not filled, etc.\n                     cell.comment = basecell.comment;\n                     }\n                  else if (cell.comment) {\n                     delete cell.comment;\n                     }\n                  }\n               delete cell.displaystring;\n               }\n            }\n\n         attribs.needsrecalc = \"yes\";\n         break;\n\n      case \"sort\": // sort cr1:cr2 col1 up/down col2 up/down col3 up/down\n         sheet.renderneeded = true;\n         sheet.changedrendervalues = true;\n         if (saveundo) changes.AddUndo(\"changedrendervalues\"); // to take care of undone pasted spans\n         what = cmd.NextToken();\n         ParseRange();\n         cols = []; // get columns and sort directions (or \"\")\n         dirs = [];\n         lastsortcol = 0;\n         for (i=0; i<=3; i++) {\n            cols[i] = cmd.NextToken();\n            dirs[i] = cmd.NextToken();\n            if (cols[i]) lastsortcol = i;\n            }\n\n         sortcells = {}; // a copy of the data which will replace the original, but in the new order\n         sortlist = []; // an array of 0, 1, ..., nrows-1 needed for sorting\n         sortvalues = []; // values to be sorted corresponding to sortlist\n         sorttypes = []; // basic types of the values\n\n         for (row = cr1.row; row <= cr2.row; row++) { // fill in the sort info\n            for (col = cr1.col; col <= cr2.col; col++) {\n               cr = SocialCalc.crToCoord(col, row);\n               cell=sheet.cells[cr];\n               if (cell) { // only copy non-empty cells\n                  sortcells[cr] = sheet.CellToString(cell);\n                  if (saveundo) changes.AddUndo(\"set \"+cr+\" all\", sortcells[cr]);\n                  }\n               else {\n                  if (saveundo) changes.AddUndo(\"set \"+cr+\" all\");\n                  }\n               }\n            sortlist.push(sortlist.length);\n            sortvalues.push([]);\n            sorttypes.push([]);\n            slast = sorttypes.length-1;\n            for (i = 0; i <= lastsortcol; i++) {\n               cr = cols[i] + row; // get cr on this row in sort col\n               cell = sheet.GetAssuredCell(cr);\n               val = cell.datavalue;\n               valtype = cell.valuetype.charAt(0) || \"b\";\n               if (valtype == \"t\") val = val.toLowerCase();\n               sortvalues[slast].push(val);\n               sorttypes[slast].push(valtype);\n               }\n            }\n\n         sortfunction = function(a, b) { // a comparison function that can handle all the type variations\n            var i, a1, b1, ta, cresult;\n            for (i=0; i<=lastsortcol; i++) {\n               if (dirs[i] == \"up\") { // handle sort direction\n                  a1 = a; b1 = b;\n                  }\n               else {\n                  a1 = b; b1 = a;\n                  }\n               ta = sorttypes[a1][i];\n               tb = sorttypes[b1][i];\n               if (ta == \"t\") { // numbers < text < errors, blank always last no matter what dir\n                  if (tb == \"t\") {\n                     a1 = sortvalues[a1][i];\n                     b1 = sortvalues[b1][i];\n                     cresult = a1 > b1 ? 1 : (a1 < b1 ? -1 : 0);\n                     }\n                  else if (tb == \"n\") {\n                     cresult = 1;\n                     }\n                  else if (tb == \"b\") {\n                     cresult = dirs[i] == \"up\" ? -1 : 1;\n                     }\n                  else if (tb == \"e\") {\n                     cresult = -1;\n                     }\n                  }\n               else if (ta == \"n\") {\n                  if (tb == \"t\") {\n                     cresult = -1;\n                     }\n                  else if (tb == \"n\") {\n                     a1 = sortvalues[a1][i]-0; // force to numeric, just in case\n                     b1 = sortvalues[b1][i]-0;\n                     cresult = a1 > b1 ? 1 : (a1 < b1 ? -1 : 0);\n                     }\n                  else if (tb == \"b\") {\n                     cresult = dirs[i] == \"up\" ? -1 : 1;\n                     }\n                  else if (tb == \"e\") {\n                     cresult = -1;\n                     }\n                  }\n               else if (ta == \"e\") {\n                  if (tb == \"e\") {\n                     a1 = sortvalues[a1][i];\n                     b1 = sortvalues[b1][i];\n                     cresult = a1 > b1 ? 1 : (a1 < b1 ? -1 : 0);\n                     }\n                  else if (tb == \"b\") {\n                     cresult = dirs[i] == \"up\" ? -1 : 1;\n                     }\n                  else {\n                     cresult = 1;\n                     }\n                  }\n               else if (ta == \"b\") {\n                  if (tb == \"b\") {\n                     cresult = 0;\n                     }\n                  else {\n                     cresult = dirs[i] == \"up\" ? 1 : -1;\n                     }\n                  }\n               if (cresult) { // return if tested not equal, otherwise do next column\n                  return cresult;\n                  }\n               }\n            cresult = a > b ? 1 : (a < b ? -1 : 0); // equal - return position in original to maintain it\n            return cresult;\n            }\n\n         sortlist.sort(sortfunction);\n\n         for (row = cr1.row; row <= cr2.row; row++) { // copy original rows into sorted positions\n            originalrow = sortlist[row-cr1.row]; // relative position where it was in original\n            for (col = cr1.col; col <= cr2.col; col++) {\n               cr = SocialCalc.crToCoord(col, row);\n               sortedcr = SocialCalc.crToCoord(col, originalrow+cr1.row); // original cell to be put in new place\n               if (sortcells[sortedcr]) {\n                  cell = new SocialCalc.Cell(cr);\n                  sheet.CellFromStringParts(cell, sortcells[sortedcr].split(\":\"), 1);\n                  if (cell.datatype == \"f\") { // offset coord refs, even to ***relative*** coords in other sheets\n                     cell.formula = SocialCalc.OffsetFormulaCoords(cell.formula, 0, (row-cr1.row)-originalrow);\n                     }\n                  sheet.cells[cr] = cell;\n                  }\n               else {\n                  delete sheet.cells[cr];\n                  }\n               }\n            }\n\n         attribs.needsrecalc = \"yes\";\n         break;\n\n      case \"insertcol\":\n      case \"insertrow\":\n         sheet.renderneeded = true;\n         sheet.changedrendervalues = true;\n         sheet.widgetsClean = false; //  force widgets to repaint - update cell reference in widget HTML\n         what = cmd.NextToken();\n         rest = cmd.RestOfString();\n         ParseRange();\n\n         if (cmd1 == \"insertcol\") {\n            coloffset = 1;\n            colend = cr1.col;\n            rowoffset = 0;\n            rowend = 1;\n            newcolstart = cr1.col;\n            newcolend = cr1.col;\n            newrowstart = 1;\n            newrowend = attribs.lastrow;\n            if (saveundo) changes.AddUndo(\"deletecol \"+cr1.coord);\n            }\n         else {\n            coloffset = 0;\n            colend = 1;\n            rowoffset = 1;\n            rowend = cr1.row;\n            newcolstart = 1;\n            newcolend = attribs.lastcol;\n            newrowstart = cr1.row;\n            newrowend = cr1.row;\n            if (saveundo) changes.AddUndo(\"deleterow \"+cr1.coord);\n            }\n\n         for (row=attribs.lastrow; row >= rowend; row--) { // copy the cells forward\n            for (col=attribs.lastcol; col >= colend; col--) {\n               crbase = SocialCalc.crToCoord(col, row);\n               cr = SocialCalc.crToCoord(col+coloffset, row+rowoffset);\n               if (!sheet.cells[crbase]) { // copying empty cell\n                  delete sheet.cells[cr]; // delete anything that may have been there\n                  }\n               else { // overwrite existing cell with moved contents\n                  sheet.cells[cr] = sheet.cells[crbase];\n                  }\n               }\n            }\n\n         for (row=newrowstart; row <= newrowend; row++) { // fill the \"new\" empty cells\n            for (col=newcolstart; col <= newcolend; col++) {\n               cr = SocialCalc.crToCoord(col, row);\n               cell = new SocialCalc.Cell(cr);\n               sheet.cells[cr] = cell;\n               crbase = SocialCalc.crToCoord(col-coloffset, row-rowoffset); // copy attribs of the one before (0 gives you A or 1)\n               basecell = sheet.GetAssuredCell(crbase);\n               for (attrib in cellProperties) {\n                  if (cellProperties[attrib] == 2) { // copy only format attributes\n                     cell[attrib] = basecell[attrib];\n                     }\n                  }\n               }\n            }\n\n         for (cr in sheet.cells) { // update cell references to moved cells in calculated formulas\n             cell = sheet.cells[cr];\n             if (cell && cell.datatype == \"f\") {\n                cell.formula = SocialCalc.AdjustFormulaCoords(cell.formula, cr1.col, coloffset, cr1.row, rowoffset);\n                }\n             if (cell) {\n                delete cell.parseinfo;\n                }\n             }\n\n         for (name in sheet.names) { // update cell references to moved cells in names\n            if (sheet.names[name]) { // works with \"A1\", \"A1:A20\", and \"=formula\" forms\n               v1 = sheet.names[name].definition;\n               v2 = \"\";\n               if (v1.charAt(0) == \"=\") {\n                  v2 = \"=\";\n                  v1 = v1.substring(1);\n                  }\n               sheet.names[name].definition = v2 +\n                  SocialCalc.AdjustFormulaCoords(v1, cr1.col, coloffset, cr1.row, rowoffset);\n               }\n            }\n\n         for (row = attribs.lastrow; row >= rowend && cmd1 == \"insertrow\"; row--) { // copy the row attributes forward\n            rownext = row + rowoffset;\n            for (attrib in sheet.rowattribs) {\n               val = sheet.rowattribs[attrib][row];\n               if (sheet.rowattribs[attrib][rownext] != val) { // make assignment only if different\n                  if (val) {\n                     sheet.rowattribs[attrib][rownext] = val;\n                     }\n                  else {\n                     delete sheet.rowattribs[attrib][rownext];\n                     }\n                  }\n               }\n            }\n\n         for (col = attribs.lastcol; col >= colend && cmd1 == \"insertcol\"; col--) { // copy the column attributes forward\n            colthis = SocialCalc.rcColname(col);\n            colnext = SocialCalc.rcColname(col + coloffset);\n            for (attrib in sheet.colattribs) {\n               val = sheet.colattribs[attrib][colthis];\n               if (sheet.colattribs[attrib][colnext] != val) { // make assignment only if different\n                  if (val) {\n                     sheet.colattribs[attrib][colnext] = val;\n                     }\n                  else {\n                     delete sheet.colattribs[attrib][colnext];\n                     }\n                  }\n               }\n            }\n\n         // Expand merged cells if the new row/col is in between\n\n         var tempRenderContext = new SocialCalc.RenderContext(sheet)\n         tempRenderContext.CalculateCellSkipData()\n\n         var cellsToExpand = {} // Keep track of all merge spans we've expanded\n                                // so we don't expand one twice\n         for (var skipCell in tempRenderContext.cellskip) {\n             var skipCellCR = SocialCalc.coordToCr(skipCell)\n               , mergerCellCoords = tempRenderContext.cellskip[skipCell]\n             // for insertcol we check if the newly inserted col has\n             // has any spans. This can only mean, that those cells\n             // are part of a row span\n             if (cmd1 === \"insertcol\" && skipCellCR.col === newcolstart) {\n                if (!cellsToExpand[mergerCellCoords]) {\n                    sheet.GetAssuredCell(mergerCellCoords).colspan += coloffset\n                    }\n                cellsToExpand[mergerCellCoords] = true\n                }\n             // for insertrow it's the same method\n             if (cmd1 === \"insertrow\" && skipCellCR.row === newrowstart) {\n                if (!cellsToExpand[mergerCellCoords]) {\n                    sheet.GetAssuredCell(mergerCellCoords).rowspan += rowoffset\n                    }\n                cellsToExpand[mergerCellCoords] = true\n                }\n            }\n\n         attribs.lastcol += coloffset;\n         attribs.lastrow += rowoffset;\n         attribs.needsrecalc = \"yes\";\n         break;\n\n      case \"deletecol\":\n      case \"deleterow\":\n         sheet.renderneeded = true;\n         sheet.changedrendervalues = true;\n         sheet.widgetsClean = false; // update cell reference in widget HTML - force widgets to repaint\n         what = cmd.NextToken();\n         rest = cmd.RestOfString();\n         lastcol = attribs.lastcol; // save old values since ParseRange sets...\n         lastrow = attribs.lastrow;\n         ParseRange();\n\n         if (cmd1 == \"deletecol\") {\n            coloffset = cr1.col - cr2.col - 1;\n            rowoffset = 0;\n            colstart = cr2.col + 1;\n            rowstart = 1;\n            }\n         else {\n            coloffset = 0;\n            rowoffset = cr1.row - cr2.row - 1;\n            colstart = 1;\n            rowstart = cr2.row + 1;\n            }\n\n         for (row=rowstart; row <= lastrow - rowoffset; row++) { // check for readonly cells\n            for (col=colstart; col <= lastcol - coloffset; col++) {\n               cr = SocialCalc.crToCoord(col+coloffset, row+rowoffset);\n               cell = sheet.cells[cr];\n               if (cell && cell.readonly) {\n                    errortext = \"Unable to remove \" + (cmd1 == \"deletecol\" ? \"column\" : \"row\") + \", because cell \" + cell.coord + \" is locked\";\n                    return errortext;\n               }\n            }\n         }\n\n         for (row=rowstart; row <= lastrow - rowoffset; row++) { // copy the cells backwards - extra so no dup of last set\n            for (col=colstart; col <= lastcol - coloffset; col++) {\n               cr = SocialCalc.crToCoord(col+coloffset, row+rowoffset);\n               if (saveundo && (row<rowstart-rowoffset || col<colstart\t-coloffset)) { // save cells that are overwritten as undo info\n                  cell = sheet.cells[cr];\n                  if (!cell) { // empty cell\n                     changes.AddUndo(\"erase \"+cr+\" all\");\n                     }\n                  else {\n                     changes.AddUndo(\"set \"+cr+\" all\", sheet.CellToString(cell));\n                     }\n                  }\n               crbase = SocialCalc.crToCoord(col, row);\n               cell = sheet.cells[crbase];\n               if (!cell) { // copying empty cell\n                  delete sheet.cells[cr]; // delete anything that may have been there\n                  }\n               else { // overwrite existing cell with moved contents\n                  sheet.cells[cr] = cell;\n                  }\n               }\n            }\n\n//!!! multiple deletes isn't setting #REF!; need to fix up #REF!'s on undo but only those!\n\n         for (cr in sheet.cells) { // update cell references to moved cells in calculated formulas\n             cell = sheet.cells[cr];\n             if (cell) {\n                if (cell.datatype == \"f\") {\n                   oldformula = cell.formula;\n                   cell.formula = SocialCalc.AdjustFormulaCoords(oldformula, cr1.col, coloffset, cr1.row, rowoffset);\n                   if (cell.formula != oldformula) {\n                      delete cell.parseinfo;\n                      if (saveundo && cell.formula.indexOf(\"#REF!\")!=-1) { // save old version only if removed coord\n                         oldcr = SocialCalc.coordToCr(cr);\n                         changes.AddUndo(\"set \"+SocialCalc.rcColname(oldcr.col-coloffset)+(oldcr.row-rowoffset)+\n                                         \" formula \"+oldformula);\n                         }\n                      }\n                   }\n                else {\n                   delete cell.parseinfo;\n                   }\n                }\n             }\n\n         for (name in sheet.names) { // update cell references to moved cells in names\n            if (sheet.names[name]) { // works with \"A1\", \"A1:A20\", and \"=formula\" forms\n               v1 = sheet.names[name].definition;\n               v2 = \"\";\n               if (v1.charAt(0) == \"=\") {\n                  v2 = \"=\";\n                  v1 = v1.substring(1);\n                  }\n               sheet.names[name].definition = v2 +\n                  SocialCalc.AdjustFormulaCoords(v1, cr1.col, coloffset, cr1.row, rowoffset);\n               }\n            }\n\n         for (row = rowstart; row <= lastrow - rowoffset && cmd1 == \"deleterow\"; row++) { // copy the row attributes backwards\n            rowbefore = row + rowoffset;\n            for (attrib in sheet.rowattribs) {\n               val = sheet.rowattribs[attrib][row];\n               if (sheet.rowattribs[attrib][rowbefore] != val) { // make assignment only if different\n                  if (saveundo) changes.AddUndo(\"set \"+rowbefore+\" \"+attrib, sheet.rowattribs[attrib][rowbefore]);\n                  if (val) {\n                     sheet.rowattribs[attrib][rowbefore] = val;\n                     }\n                  else {\n                     delete sheet.rowattribs[attrib][rowbefore];\n                     }\n                  }\n               }\n            }\n\n         for (col = colstart; col <= lastcol - coloffset && cmd1 == \"deletecol\"; col++) { // copy the column attributes backwards\n            colthis = SocialCalc.rcColname(col);\n            colbefore = SocialCalc.rcColname(col + coloffset);\n            for (attrib in sheet.colattribs) {\n               val = sheet.colattribs[attrib][colthis];\n               if (sheet.colattribs[attrib][colbefore] != val) { // make assignment only if different\n                  if (saveundo) changes.AddUndo(\"set \"+colbefore+\" \"+attrib, sheet.colattribs[attrib][colbefore]);\n                  if (val) {\n                     sheet.colattribs[attrib][colbefore] = val;\n                     }\n                  else {\n                     delete sheet.colattribs[attrib][colbefore];\n                     }\n                  }\n               }\n            }\n\n         // Shrink merged cells if the new row/col was in between\n\n         var tempRenderContext = new SocialCalc.RenderContext(sheet)\n         tempRenderContext.CalculateCellSkipData()\n\n         var cellsToShrink = {} // Keep track of shrinked cells, so we don't do it twice\n         for (var skipCell in tempRenderContext.cellskip) {\n             var skipCellCR = SocialCalc.coordToCr(skipCell)\n               , mergerCellCoords = tempRenderContext.cellskip[skipCell]\n               , mergerCellCR = tempRenderContext.coordToCR[mergerCellCoords]\n             // for deletecol we check if the removed col any spans that\n             // are from younger cols and shrink those\n             if (cmd1 === \"deletecol\" && skipCellCR.col === colstart+coloffset && mergerCellCR.col < skipCellCR.col) {\n                if (!cellsToShrink[mergerCellCoords]) {\n                    sheet.GetAssuredCell(mergerCellCoords).colspan += coloffset\n                    }\n                cellsToShrink[mergerCellCoords] = true\n                }\n             // for insertrow it's the same method\n             if (cmd1 === \"deleterow\" && skipCellCR.row === rowstart+rowoffset && mergerCellCR.row < skipCellCR.row) {\n                if (!cellsToShrink[mergerCellCoords]) {\n                    sheet.GetAssuredCell(mergerCellCoords).rowspan += rowoffset\n                    }\n                cellsToShrink[mergerCellCoords] = true\n                }\n            }\n\n         if (saveundo) {\n            if (cmd1 == \"deletecol\") {\n               for (col=cr1.col; col<=cr2.col; col++) {\n                  changes.AddUndo(\"insertcol \"+SocialCalc.rcColname(cr1.col));\n                  }\n               }\n            else {\n               for (row=cr1.row; row<=cr2.row; row++) {\n                  changes.AddUndo(\"insertrow \"+cr1.row);\n                  }\n               }\n            }\n\n         if (cmd1 == \"deletecol\") {\n            if (cr1.col <= lastcol) { // shrink sheet unless deleted phantom cols off the end\n               if (cr2.col <= lastcol) {\n                  attribs.lastcol += coloffset;\n                  }\n               else {\n                  attribs.lastcol = cr1.col - 1;\n                  }\n               }\n            }\n         else {\n            if (cr1.row <= lastrow) { // shrink sheet unless deleted phantom rows off the end\n               if (cr2.row <= lastrow) {\n                  attribs.lastrow += rowoffset;\n                  }\n               else {\n                  attribs.lastrow = cr1.row - 1;\n                  }\n               }\n            }\n         attribs.needsrecalc = \"yes\";\n         break;\n\n\n      case \"movepaste\":\n      case \"moveinsert\":\n\n         var movingcells, dest, destcr, inserthoriz, insertvert, pushamount, movedto;\n\n         sheet.renderneeded = true;\n         sheet.changedrendervalues = true;\n         if (saveundo) changes.AddUndo(\"changedrendervalues\"); // to take care of undone pasted spans\n         what = cmd.NextToken();\n         dest = cmd.NextToken();\n         rest = cmd.RestOfString(); // rest is all/formulas/formats\n         if (rest==\"\") rest = \"all\";\n\n         ParseRange();\n\n         destcr = SocialCalc.coordToCr(dest);\n\n         coloffset = destcr.col - cr1.col;\n         rowoffset = destcr.row - cr1.row;\n         numcols = cr2.col - cr1.col + 1;\n         numrows = cr2.row - cr1.row + 1;\n\n         // get a copy of moving cells and erase from where they were\n\n         movingcells = {};\n\n         for (row = cr1.row; row <= cr2.row; row++) {\n            for (col = cr1.col; col <= cr2.col; col++) {\n               cr = SocialCalc.crToCoord(col, row);\n               cell=sheet.GetAssuredCell(cr);\n               if (cell.readonly) continue;\n               if (saveundo) changes.AddUndo(\"set \"+cr+\" all\", sheet.CellToString(cell));\n\n               if (!sheet.cells[cr]) { // if had nothing\n                  continue; // don't save anything\n                  }\n               movingcells[cr] = new SocialCalc.Cell(cr); // create new cell to copy\n\n               for (attrib in cellProperties) { // go through each property\n                  if (typeof cell[attrib] === undefined) { // don't copy undefined things and no need to delete\n                     continue;\n                     }\n                  else {\n                     movingcells[cr][attrib] = cell[attrib]; // copy for potential moving\n                     }\n                  if (rest == \"all\") {\n                     delete cell[attrib];\n                     }\n                  if (rest == \"formulas\") {\n                     if (cellProperties[attrib] == 1 || cellProperties[attrib] == 3) {\n                        delete cell[attrib];\n                        }\n                     }\n                  if (rest == \"formats\") {\n                     if (cellProperties[attrib] == 2) {\n                        delete cell[attrib];\n                        }\n                     }\n                  }\n               if (rest == \"formulas\") { // leave pristene deleted cell\n                  cell.datavalue = \"\";\n                  cell.datatype = null;\n                  cell.formula = \"\";\n                  cell.valuetype = \"b\";\n                  }\n               if (rest == \"all\") { // leave nothing for move all\n                  delete sheet.cells[cr];\n                  }\n               }\n            }\n\n         // if moveinsert, check destination OK, and calculate pushing parameters\n\n         if (cmd1 == \"moveinsert\") {\n            inserthoriz = false;\n            insertvert = false;\n            if (rowoffset==0 && (destcr.col < cr1.col || destcr.col > cr2.col)) {\n               if (destcr.col < cr1.col) { // moving left\n                  pushamount = cr1.col - destcr.col;\n                  inserthoriz = -1;\n                  }\n               else {\n                  destcr.col -= 1;\n                  coloffset = destcr.col - cr2.col;\n                  pushamount = destcr.col - cr2.col;\n                  inserthoriz = 1;\n                  }\n               }\n            else if (coloffset==0 && (destcr.row < cr1.row || destcr.row > cr2.row)) {\n               if (destcr.row < cr1.row) { // moving up\n                  pushamount = cr1.row - destcr.row;\n                  insertvert = -1;\n                  }\n               else {\n                  destcr.row -= 1;\n                  rowoffset = destcr.row - cr2.row;\n                  pushamount = destcr.row - cr2.row;\n                  insertvert = 1;\n                  }\n               }\n            else {\n               cmd1 = \"movepaste\"; // not allowed right now - ignore\n               }\n            }\n\n         // push any cells that need pushing\n\n         movedto = {}; // remember what was moved where\n\n         if (insertvert) {\n            for (row = 0; row < pushamount; row++) {\n               for (col = cr1.col; col <= cr2.col; col++) {\n                  if (insertvert < 0) {\n                     crbase = SocialCalc.crToCoord(col, destcr.row+pushamount-row-1); // from cell\n                     cr = SocialCalc.crToCoord(col, cr2.row-row); // to cell\n                     }\n                  else {\n                     crbase = SocialCalc.crToCoord(col, destcr.row-pushamount+row+1); // from cell\n                     cr = SocialCalc.crToCoord(col, cr1.row+row); // to cell\n                     }\n\n                  basecell = sheet.GetAssuredCell(crbase);\n                  if (saveundo) changes.AddUndo(\"set \"+crbase+\" all\", sheet.CellToString(basecell));\n\n                  cell = sheet.GetAssuredCell(cr);\n                  if (rest == \"all\" || rest == \"formats\") {\n                     for (attrib in cellProperties) {\n                        if (cellProperties[attrib] == 1) continue; // copy only format attributes\n                        if (typeof basecell[attrib] === undefined || cellProperties[attrib] == 3) {\n                           delete cell[attrib];\n                           }\n                        else {\n                           cell[attrib] = basecell[attrib];\n                           }\n                        }\n                     }\n                  if (rest == \"all\" || rest == \"formulas\") {\n                     cell.datavalue = basecell.datavalue;\n                     cell.datatype = basecell.datatype;\n                     cell.valuetype = basecell.valuetype;\n                     cell.formula = basecell.formula;\n                     delete cell.parseinfo;\n                     cell.errors = basecell.errors;\n                     }\n                  delete cell.displaystring;\n\n                  movedto[crbase] = cr; // old crbase is now at cr\n                  }\n               }\n            }\n         if (inserthoriz) {\n            for (col = 0; col < pushamount; col++) {\n               for (row = cr1.row; row <= cr2.row; row++) {\n                  if (inserthoriz < 0) {\n                     crbase = SocialCalc.crToCoord(destcr.col+pushamount-col-1, row);\n                     cr = SocialCalc.crToCoord(cr2.col-col, row);\n                     }\n                  else {\n                     crbase = SocialCalc.crToCoord(destcr.col-pushamount+col+1, row);\n                     cr = SocialCalc.crToCoord(cr1.col+col, row);\n                     }\n\n                  basecell = sheet.GetAssuredCell(crbase);\n                  if (saveundo) changes.AddUndo(\"set \"+crbase+\" all\", sheet.CellToString(basecell));\n\n                  cell = sheet.GetAssuredCell(cr);\n                  if (rest == \"all\" || rest == \"formats\") {\n                     for (attrib in cellProperties) {\n                        if (cellProperties[attrib] == 1) continue; // copy only format attributes\n                        if (typeof basecell[attrib] === undefined || cellProperties[attrib] == 3) {\n                           delete cell[attrib];\n                           }\n                        else {\n                           cell[attrib] = basecell[attrib];\n                           }\n                        }\n                     }\n                  if (rest == \"all\" || rest == \"formulas\") {\n                     cell.datavalue = basecell.datavalue;\n                     cell.datatype = basecell.datatype;\n                     cell.valuetype = basecell.valuetype;\n                     cell.formula = basecell.formula;\n                     delete cell.parseinfo;\n                     cell.errors = basecell.errors;\n                     }\n                  delete cell.displaystring;\n\n                  movedto[crbase] = cr; // old crbase is now at cr\n                  }\n               }\n            }\n\n         // paste moved cells into new place\n\n         if (destcr.col+numcols-1 > attribs.lastcol) attribs.lastcol = destcr.col+numcols-1;\n         if (destcr.row+numrows-1 > attribs.lastrow) attribs.lastrow = destcr.row+numrows-1;\n\n         for (row = cr1.row; row < cr1.row+numrows; row++) {\n            for (col = cr1.col; col < cr1.col+numcols; col++) {\n               cr = SocialCalc.crToCoord(col+coloffset, row+rowoffset);\n               cell=sheet.GetAssuredCell(cr);\n               if (cell.readonly) continue;\n               if (saveundo) changes.AddUndo(\"set \"+cr+\" all\", sheet.CellToString(cell));\n\n               crbase = SocialCalc.crToCoord(col, row); // get old cell to move\n\n               movedto[crbase] = cr; // old crbase (moved cell) will now be at cr (destination)\n\n               if (rest == \"all\" && !movingcells[crbase]) { // moving an empty cell\n                  delete sheet.cells[cr]; // make the cell empty\n                  continue;\n                  }\n\n               basecell = movingcells[crbase];\n               if (!basecell) basecell = sheet.GetAssuredCell(crbase);\n\n               if (rest == \"all\" || rest == \"formats\") {\n                  for (attrib in cellProperties) {\n                     if (cellProperties[attrib] == 1) continue; // copy only format attributes\n                     if (typeof basecell[attrib] === undefined || cellProperties[attrib] == 3) {\n                        delete cell[attrib];\n                        }\n                     else {\n                        cell[attrib] = basecell[attrib];\n                        }\n                     }\n                  }\n               if (rest == \"all\" || rest == \"formulas\") {\n                  cell.datavalue = basecell.datavalue;\n                  cell.datatype = basecell.datatype;\n                  cell.valuetype = basecell.valuetype;\n                  cell.formula = basecell.formula;\n                  delete cell.parseinfo;\n                  cell.errors = basecell.errors;\n                  if (basecell.comment) { // comments are pasted as part of content, though not filled, etc.\n                     cell.comment = basecell.comment;\n                     }\n                  else if (cell.comment) {\n                     delete cell.comment;\n                     }\n                  }\n               delete cell.displaystring;\n               }\n            }\n\n         // do fixups\n\n         for (cr in sheet.cells) { // update cell references to moved cells in calculated formulas\n             cell = sheet.cells[cr];\n             if (cell) {\n                if (cell.datatype == \"f\") {\n                   oldformula = cell.formula;\n                   cell.formula = SocialCalc.ReplaceFormulaCoords(oldformula, movedto);\n                   if (cell.formula != oldformula) {\n                      delete cell.parseinfo;\n                      if (saveundo && !movedto[cr]) { // moved cells are already saved for undo\n                         changes.AddUndo(\"set \"+cr+\" formula \"+oldformula);\n                         }\n                      }\n                   }\n                else {\n                   delete cell.parseinfo;\n                   }\n                }\n             }\n\n         for (name in sheet.names) { // update cell references to moved cells in names\n            if (sheet.names[name]) { // works with \"A1\", \"A1:A20\", and \"=formula\" forms\n               v1 = sheet.names[name].definition;\n               oldformula = v1;\n               v2 = \"\";\n               if (v1.charAt(0) == \"=\") {\n                  v2 = \"=\";\n                  v1 = v1.substring(1);\n                  }\n               sheet.names[name].definition = v2 +\n                  SocialCalc.ReplaceFormulaCoords(v1, movedto);\n               if (saveundo && sheet.names[name].definition != oldformula) { // save changes\n                  changes.AddUndo(\"name define \"+name+\" \"+oldformula);\n                  }\n               }\n            }\n\n         attribs.needsrecalc = \"yes\";\n         break;\n\n      case \"name\":\n         what = cmd.NextToken();\n         name = cmd.NextToken();\n         rest = cmd.RestOfString();\n\n         name = name.toUpperCase().replace(/[^A-Z0-9_\\.]/g, \"\");\n         if (name == \"\") break; // must have something\n\n         if (what == \"define\") {\n            if (rest == \"\") break; // must have something\n            if (sheet.names[name]) { // already exists\n               if (saveundo) changes.AddUndo(\"name define \"+name+\" \"+sheet.names[name].definition);\n               sheet.names[name].definition = rest;\n               }\n            else { // new\n               if (saveundo) changes.AddUndo(\"name delete \"+name);\n               sheet.names[name] = {definition: rest, desc: \"\"};\n               }\n            }\n         else if (what == \"desc\") {\n            if (sheet.names[name]) { // must already exist\n               if (saveundo) changes.AddUndo(\"name desc \"+name+\" \"+sheet.names[name].desc);\n               sheet.names[name].desc = rest;\n               }\n            }\n         else if (what == \"delete\") {\n            if (saveundo) {\n               if (sheet.names[name].desc) changes.AddUndo(\"name desc \"+name+\" \"+sheet.names[name].desc);\n               changes.AddUndo(\"name define \"+name+\" \"+sheet.names[name].definition);\n               }\n            delete sheet.names[name];\n            }\n         attribs.needsrecalc = \"yes\";\n\n         break;\n\n      case \"recalc\":\n         attribs.needsrecalc = \"yes\"; // request recalc\n         sheet.recalconce = true; // even if turned off\n         break;\n\n      case \"redisplay\":\n         sheet.renderneeded = true;\n         break;\n\n      case \"changedrendervalues\": // needed for undo sometimes\n         sheet.changedrendervalues = true;\n         break;\n\n      case \"pane\":\n\n         name = cmd.NextToken().toUpperCase();\n         undoNum = 1;\n         editor = SocialCalc.GetSpreadsheetControlObject().editor;\n\n         if (name.toUpperCase() === 'ROW') {\n           row = parseInt(cmd.NextToken(), 10);\n\n           if (typeof(editor.context.rowpanes[1]) !== 'undefined' && typeof(editor.context.rowpanes[1].first) === 'number') {\n             undoNum = editor.context.rowpanes[1].first;\n           }\n           if (saveundo) changes.AddUndo('pane row ' + undoNum);\n\n           // Handle hidden row.\n           while (editor.context.sheetobj.rowattribs.hide[row] == 'yes') {\n             row++;\n           }\n\n           if ((!row || row<=editor.context.rowpanes[0].first) && editor.context.rowpanes.length>1) { // set to no panes, leaving first pane settings\n             editor.context.rowpanes.length = 1;\n           } else if (editor.context.rowpanes.length-1 && !editor.timeout) { // has 2 already\n             // not waiting for position calc (so positions could be wrong)\n             editor.context.SetRowPaneFirstLast(0, editor.context.rowpanes[0].first, row-1);\n             editor.context.SetRowPaneFirstLast(1, row, row);\n           } else {\n             editor.context.SetRowPaneFirstLast(0, editor.context.rowpanes[0].first, row-1);\n             editor.context.SetRowPaneFirstLast(1, row, row);\n           }\n\n           // remove tracklingine\n           if (editor.griddiv) {\n             //trackingline-horizon\n             trackLine = document.getElementById('trackingline-vertical');\n             if (trackLine) {\n               editor.griddiv.removeChild(trackLine);\n               editor.FitToEditTable();\n             }\n           }\n\n         } else {\n\n           col = parseInt(cmd.NextToken(), 10);\n\n           if (typeof(editor.context.colpanes[1]) !== 'undefined' && typeof(editor.context.colpanes[1].first) === 'number') {\n             undoNum = editor.context.colpanes[1].first;\n           }\n           if (saveundo) changes.AddUndo('pane col ' + undoNum);\n\n           // Handle hidden column.\n           while (editor.context.sheetobj.colattribs.hide[SocialCalc.rcColname(col)] == 'yes') {\n             col++;\n           }\n\n           if ((!col || col<=editor.context.colpanes[0].first) && editor.context.colpanes.length > 1) { // set to no panes, leaving first pane settings\n             editor.context.colpanes.length = 1;\n           } else if (editor.context.colpanes.length-1 && !editor.timeout) { // has 2 already\n             // not waiting for position calc (so positions could be wrong)\n             editor.context.SetColPaneFirstLast(0, editor.context.colpanes[0].first, col-1);\n             editor.context.SetColPaneFirstLast(1, col, col);\n           } else {\n             editor.context.SetColPaneFirstLast(0, editor.context.colpanes[0].first, col-1);\n             editor.context.SetColPaneFirstLast(1, col, col);\n           }\n\n           // remove tracklingine\n           if (editor.griddiv) {\n             trackLine = document.getElementById('trackingline-horizon');\n             if (trackLine) {\n               editor.griddiv.removeChild(trackLine);\n               editor.FitToEditTable();\n             }\n           }\n         }\n\n         sheet.renderneeded = true;\n\n         break;\n\n      case \"startcmdextension\": // startcmdextension extension rest-of-command\n         name = cmd.NextToken();\n         cmdextension = sheet.sci.CmdExtensionCallbacks[name];\n         if (cmdextension) {\n            cmdextension.func(name, cmdextension.data, sheet, cmd, saveundo);\n            }\n         break;\n\n         // eddy ExecuteSheetCommand {\n//      case \"setemailparameters\":\n//    \t  break;\n\n      case \"settimetrigger\":\n      case \"sendemail\":\n      case \"submitform\":\n    \t  // email/form/timetrigger handled by server, so ignore here\n    \t  break;\n         // } eddy ExecuteSheetCommand\n\n      default:\n         errortext = scc.s_escUnknownCmd+cmdstr;\n         break;\n      }\n\n/* For Debugging:\nvar ustack=\"\";\nfor (var i=0;i<sheet.changes.stack.length;i++) {\n   ustack+=(i-0)+\":\"+sheet.changes.stack[i].command[0]+\" of \"+sheet.changes.stack[i].command.length+\"/\"+sheet.changes.stack[i].undo[0]+\" of \"+sheet.changes.stack[i].undo.length+\",\";\n   }\nalert(cmdstr+\"|\"+sheet.changes.stack.length+\"--\"+ustack);\n*/\n   if(SocialCalc._app) {\n     // widgets need focus. In app mode, render widgets only when required. Rather than default of render everything\n     if(cellChanged) {\n       if(sheet.renderneeded == true && attrib!=\"value\" && attrib!=\"text\" && attrib!=\"formula\" && attrib!=\"constant\" && attrib!=\"empty\") sheet.widgetsClean = false;  // force widgets to render\n       else if(attrib==\"all\") sheet.widgetsClean = false;  // force widgets to render - because of undo\n       }\n     else {\n       if(sheet.renderneeded == true) sheet.widgetsClean = false;  // force widgets to render\n       }\n     }\n\n   return errortext;\n\n   }\n\nSocialCalc.SheetUndo = function(sheet) {\n\n   var i;\n   var tos = sheet.changes.TOS();\n   var lastone = tos ? tos.undo.length-1 : -1;\n   var cmdstr = \"\";\n\n   for (i=lastone; i>=0; i--) { // do them backwards\n      if (cmdstr) cmdstr += \"\\n\"; // concatenate with separate lines\n      cmdstr += tos.undo[i];\n      }\n   sheet.changes.Undo();\n   sheet.ScheduleSheetCommands(cmdstr, false); // do undo operations\n\n   }\n\nSocialCalc.SheetRedo = function(sheet) {\n\n   var tos, i;\n   var didredo = sheet.changes.Redo();\n   if (!didredo) {\n      sheet.ScheduleSheetCommands(\"\", false); // schedule doing nothing\n      return;\n      }\n   tos = sheet.changes.TOS();\n   var cmdstr = \"\";\n\n   for (i=0; tos && i<tos.command.length; i++) {\n      if (cmdstr) cmdstr += \"\\n\"; // concatenate with separate lines\n      cmdstr += tos.command[i];\n      }\n   sheet.ScheduleSheetCommands(cmdstr, false); // do undo operations\n\n   }\n\nSocialCalc.CreateAuditString = function(sheet) {\n\n   var i, j;\n   var result = \"\";\n   var stack = sheet.changes.stack;\n   var tos = sheet.changes.tos;\n   for (i=0; i<=tos; i++) {\n      for (j=0; j<stack[i].command.length; j++) {\n         result += stack[i].command[j] + \"\\n\";\n         }\n      }\n\n   return result;\n\n   }\n\nSocialCalc.GetStyleNum = function(sheet, atype, style) {\n\n   var num;\n\n   if (style.length==0) return 0; // null means use zero, which means default or global default\n\n   num = sheet[atype+\"hash\"][style];\n   if (!num) {\n      if (sheet[atype+\"s\"].length<1) sheet[atype+\"s\"].push(\"\");\n      num = sheet[atype+\"s\"].push(style) - 1;\n      sheet[atype+\"hash\"][style] = num;\n      sheet.changedrendervalues = true;\n      }\n   return num;\n\n   }\n\nSocialCalc.GetStyleString = function(sheet, atype, num) {\n\n   if (!num) return null; // zero, null, and undefined return null\n\n   return sheet[atype+\"s\"][num];\n\n   }\n\n//\n// updatedformula = SocialCalc.OffsetFormulaCoords(formula, coloffset, rowoffset)\n//\n// Change relative cell references by offsets (even those to other worksheets so fill, paste, sort work as expected).\n// If not what you want, use absolute references.\n//\n\nSocialCalc.OffsetFormulaCoords = function(formula, coloffset, rowoffset) {\n\n   var parseinfo, ttext, ttype, i, cr, newcr;\n   var updatedformula = \"\";\n   var scf = SocialCalc.Formula;\n   if (!scf) {\n      return \"Need SocialCalc.Formula\";\n      }\n   var tokentype = scf.TokenType;\n   var token_op = tokentype.op;\n   var token_string = tokentype.string;\n   var token_coord = tokentype.coord;\n   var tokenOpExpansion = scf.TokenOpExpansion;\n\n   parseinfo = scf.ParseFormulaIntoTokens(formula);\n\n   for (i=0; i<parseinfo.length; i++) {\n      ttype = parseinfo[i].type;\n      ttext = parseinfo[i].text;\n      if (ttype == token_coord) {\n         newcr = \"\";\n         cr = SocialCalc.coordToCr(ttext);\n         if (ttext.charAt(0)!=\"$\") { // add col offset unless absolute column\n            cr.col += coloffset;\n            }\n         else {\n            newcr += \"$\";\n            }\n         newcr += SocialCalc.rcColname(cr.col);\n         if (ttext.indexOf(\"$\", 1)==-1) { // add row offset unless absolute row\n            cr.row += rowoffset;\n            }\n         else {\n            newcr += \"$\";\n            }\n         newcr += cr.row;\n         if (cr.row < 1 || cr.col < 1) {\n            newcr = \"#REF!\";\n            }\n         updatedformula += newcr;\n         }\n      else if (ttype == token_string) {\n         if (ttext.indexOf('\"') >= 0) { // quotes to double\n            updatedformula += '\"' + ttext.replace(/\"/, '\"\"') + '\"';\n            }\n         else updatedformula += '\"' + ttext + '\"';\n         }\n      else if (ttype == token_op) {\n         updatedformula += tokenOpExpansion[ttext] || ttext; // make sure short tokens (e.g., \"G\") go back full (\">=\")\n         }\n      else { // leave everything else alone\n         updatedformula += ttext;\n         }\n      }\n\n   return updatedformula;\n\n   }\n\n//\n// updatedformula = SocialCalc.AdjustFormulaCoords(formula, col, coloffset, row, rowoffset)\n//\n// Change all cell references to cells starting with col/row by offsets\n//\n\nSocialCalc.AdjustFormulaCoords = function(formula, col, coloffset, row, rowoffset) {\n\n   var ttype, ttext, i, newcr;\n   var updatedformula = \"\";\n   var sheetref = false;\n   var scf = SocialCalc.Formula;\n   if (!scf) {\n      return \"Need SocialCalc.Formula\";\n      }\n   var tokentype = scf.TokenType;\n   var token_op = tokentype.op;\n   var token_string = tokentype.string;\n   var token_coord = tokentype.coord;\n   var tokenOpExpansion = scf.TokenOpExpansion;\n\n   parseinfo = SocialCalc.Formula.ParseFormulaIntoTokens(formula);\n\n   for (i=0; i<parseinfo.length; i++) {\n      ttype = parseinfo[i].type;\n      ttext = parseinfo[i].text;\n      if (ttype == token_op) { // references with sheet specifier are not offset\n         if (ttext == \"!\") {\n            sheetref = true; // found a sheet reference\n            }\n         else if (ttext != \":\") { // for everything but a range, reset\n            sheetref = false;\n            }\n         ttext = tokenOpExpansion[ttext] || ttext; // make sure short tokens (e.g., \"G\") go back full (\">=\")\n         }\n      if (ttype == token_coord) {\n         cr = SocialCalc.coordToCr(ttext);\n         if ((coloffset < 0 && cr.col >= col && cr.col < col-coloffset) ||\n             (rowoffset < 0 && cr.row >= row && cr.row < row-rowoffset)) { // refs to deleted cells become invalid\n            if (!sheetref) {\n               cr.col = 0;\n               cr.row = 0;\n               }\n            }\n         if (!sheetref) {\n            if (cr.col >= col) {\n               cr.col += coloffset;\n               }\n            if (cr.row >= row) {\n               cr.row += rowoffset;\n               }\n            }\n         if (ttext.charAt(0)==\"$\") {\n            newcr = \"$\"+SocialCalc.rcColname(cr.col);\n            }\n         else {\n            newcr = SocialCalc.rcColname(cr.col);\n            }\n         if (ttext.indexOf(\"$\", 1)!=-1) {\n            newcr += \"$\" + cr.row;\n            }\n         else {\n            newcr += cr.row;\n            }\n         if (cr.row < 1 || cr.col < 1) {\n            newcr = \"#REF!\";\n            }\n         ttext = newcr;\n         }\n      else if (ttype == token_string) {\n         if (ttext.indexOf('\"') >= 0) { // quotes to double\n            ttext = '\"' + ttext.replace(/\"/, '\"\"') + '\"';\n            }\n         else ttext = '\"' + ttext + '\"';\n         }\n      updatedformula += ttext;\n      }\n\n   return updatedformula;\n\n   }\n\n//\n// updatedformula = SocialCalc.ReplaceFormulaCoords(formula, movedto)\n//\n// Change all cell references to cells that are keys in moveto to be to moveto[coord].\n// Don't change references to other sheets.\n// Handle range extents specially.\n//\n\nSocialCalc.ReplaceFormulaCoords = function(formula, movedto) {\n\n   var ttype, ttext, i, newcr, coord;\n   var updatedformula = \"\";\n   var sheetref = false;\n   var scf = SocialCalc.Formula;\n   if (!scf) {\n      return \"Need SocialCalc.Formula\";\n      }\n   var tokentype = scf.TokenType;\n   var token_op = tokentype.op;\n   var token_string = tokentype.string;\n   var token_coord = tokentype.coord;\n   var tokenOpExpansion = scf.TokenOpExpansion;\n\n   parseinfo = SocialCalc.Formula.ParseFormulaIntoTokens(formula);\n\n   for (i=0; i<parseinfo.length; i++) {\n      ttype = parseinfo[i].type;\n      ttext = parseinfo[i].text;\n      if (ttype == token_op) { // references with sheet specifier are not change\n         if (ttext == \"!\") {\n            sheetref = true; // found a sheet reference\n            }\n         else if (ttext != \":\") { // for everything but a range, reset\n            sheetref = false;\n            }\n\n//!!!! HANDLE RANGE EXTENT MOVES\n\n         ttext = tokenOpExpansion[ttext] || ttext; // make sure short tokens (e.g., \"G\") go back full (\">=\")\n         }\n      if (ttype == token_coord) {\n         cr = SocialCalc.coordToCr(ttext); // get parts\n         coord = SocialCalc.crToCoord(cr.col, cr.row); // get \"clean\" reference\n         if (movedto[coord] && !sheetref) { // this is a reference to a moved cell\n            cr = SocialCalc.coordToCr(movedto[coord]); // get new row and col\n            if (ttext.charAt(0)==\"$\") { // copy absolute ref marks if present\n               newcr = \"$\"+SocialCalc.rcColname(cr.col);\n               }\n            else {\n               newcr = SocialCalc.rcColname(cr.col);\n               }\n            if (ttext.indexOf(\"$\", 1)!=-1) {\n               newcr += \"$\" + cr.row;\n               }\n            else {\n               newcr += cr.row;\n               }\n            ttext = newcr;\n            }\n         }\n      else if (ttype == token_string) {\n         if (ttext.indexOf('\"') >= 0) { // quotes to double\n            ttext = '\"' + ttext.replace(/\"/, '\"\"') + '\"';\n            }\n         else ttext = '\"' + ttext + '\"';\n         }\n      updatedformula += ttext;\n      }\n\n   return updatedformula;\n\n   }\n\n\n// ************************\n//\n// Recalc Loop Code\n//\n// ************************\n\n//\n// How recalc works:\n//\n// !!!!!!!!!!!!!!\n//\n\n// SocialCalc.RecalcInfo - object with global recalc info\n\nSocialCalc.RecalcInfo = {\n\n   sheet: null, // which sheet is being recalced\n\n   currentState: 0, // current state\n   state: {idle: 0, start_calc: 1, order: 2, calc: 3, start_wait: 4, done_wait: 5}, // allowed state values\n\n   recalctimer: null, // value to cancel timer\n   maxtimeslice: 100, // maximum milliseconds per slice of recalc time before a wait\n   timeslicedelay: 1, // milliseconds to wait between recalc time slices\n   starttime: 0, // when recalc started\n\n   queue: [], // queue of sheet waiting to be recalced\n\n   // LoadSheet: a function that returns true if started a load or false if not.\n   //\n\n   LoadSheet: function(sheetname) {return false;} // default returns not found\n\n   }\n\n// SocialCalc.RecalcData - object with recalc info while determining recalc order and afterward\n\nSocialCalc.RecalcData = function() { // initialize a RecalcData object\n\n   this.inrecalc = true; // if true, doing a recalc\n   this.celllist = []; // list with all potential cells to calculate\n   this.celllistitem = 0; // cell to check next when ordering\n   this.calclist = null; // object which is the chained list of cells to calculate\n                         // each in the form of \"coord: nextcoord\"\n                         // e.g., if B8 is calculated right after A8, then calclist.A8==\"B8\"\n                         // if null, need to create the list\n   this.calclistlength = 0; // number of items in calclist\n\n   this.firstcalc = null; // start of the calc list - a string or null\n   this.lastcalc = null; // last one on chain (used to add more to the end)\n\n   this.nextcalc = null; // used to keep track during background recalc to make it restartable\n   this.count = 0; // number calculated\n\n   // checkinfo is used when determining calc order:\n\n   this.checkinfo = {}; // attributes are coords; if no attrib for a coord, it wasn't checked or doesn't need it\n                        // values are RecalcCheckInfo objects while checking or TRUE when complete\n\n   }\n\n// SocialCalc.RecalcCheckInfo - object that stores checking info while determining recalc order\n\nSocialCalc.RecalcCheckInfo = function() { // initialize a RecalcCheckInfo object\n\n   this.oldcoord = null; // chain back up of cells referring to cells\n   this.parsepos = 0; // which token we are up to\n\n   // range info\n\n   this.inrange = false; // if true, in the process of checking a range of coords\n   this.inrangestart = false; // if true, have not yet filled in range loop values\n   this.cr1 = null; // range first coord as a cr object\n   this.cr2 = null; // range second coord as a cr object\n   this.c1 = null; // range extents\n   this.c2 = null;\n   this.r1 = null;\n   this.r2 = null;\n   this.c = null; // looping values\n   this.r = null;\n\n   }\n\n// Recalc the entire sheet\n\nSocialCalc.RecalcSheet = function(sheet) {\n\n   var coord, err, recalcdata;\n   var scri = SocialCalc.RecalcInfo;\n\n   if (scri.currentState != scri.state.idle) {\n      scri.queue.push(sheet);\n      return;\n      }\n\n   delete sheet.attribs.circularreferencecell; // reset recalc-wide things\n   SocialCalc.Formula.FreshnessInfoReset();\n\n   SocialCalc.RecalcClearTimeout();\n\n   scri.sheet = sheet; // set values needed by background recalc\n   scri.currentState = scri.state.start_calc;\n\n   scri.starttime = new Date();\n\n   if (sheet.statuscallback) {\n      sheet.statuscallback(scri, \"calcstart\", null, sheet.statuscallbackparams);\n      }\n\n   SocialCalc.RecalcSetTimeout();\n\n   }\n\n//\n// SocialCalc.RecalcSetTimeout - set a timer for next recalc step\n//\n\nSocialCalc.RecalcSetTimeout = function() {\n\n   var scri = SocialCalc.RecalcInfo;\n\n   scri.recalctimer = window.setTimeout(SocialCalc.RecalcTimerRoutine, scri.timeslicedelay);\n\n   }\n\n//\n// SocialCalc.RecalcClearTimeout - cancel any timeouts\n//\n\nSocialCalc.RecalcClearTimeout = function() {\n\n   var scri = SocialCalc.RecalcInfo;\n\n   if (scri.recalctimer) {\n      window.clearTimeout(scri.recalctimer);\n      scri.recalctimer = null;\n      }\n\n   }\n\n\n//\n// SocialCalc.RecalcLoadedSheet(sheetname, str, recalcneeded, live)\n//\n// Called when a sheet finishes loading with name, string, and t/f whether it should be recalced.\n// If loaded sheet has sheet.attribs.recalc==\"off\", then no recalc done.\n// If sheetname is null, then the sheetname waiting for will be used.\n//\n\nSocialCalc.RecalcLoadedSheet = function(sheetname, str, recalcneeded, live) {\n\n   var sheet;\n   var scri = SocialCalc.RecalcInfo;\n   var scf = SocialCalc.Formula;\n\n   sheet = SocialCalc.Formula.AddSheetToCache(sheetname || scf.SheetCache.waitingForLoading, str, live);\n\n   if (recalcneeded && sheet && sheet.attribs.recalc!=\"off\") { // if recalcneeded, and not manual sheet, chain in this new sheet to recalc loop\n      sheet.previousrecalcsheet = scri.sheet;\n      scri.sheet = sheet;\n      scri.currentState = scri.state.start_calc;\n      }\n   scf.SheetCache.waitingForLoading = null;\n\n   SocialCalc.RecalcSetTimeout();\n\n   }\n\n\n//\n// SocialCalc.RecalcTimerRoutine - handles the actual order determination and cell-by-cell recalculation in the background\n//\n\nSocialCalc.RecalcTimerRoutine = function() {\n\n   var eresult, cell, coord, err, status;\n   var starttime = new Date();\n   var count = 0;\n   var scf = SocialCalc.Formula;\n   if (!scf) {\n      return \"Need SocialCalc.Formula\";\n      }\n   var scri = SocialCalc.RecalcInfo;\n   var sheet = scri.sheet;\n   if (!sheet) {\n      return;\n      }\n   var recalcdata = sheet.recalcdata || (sheet.recalcdata = {});\n\n   var do_statuscallback = function(status, arg) { // routine to do callback if required\n      if (sheet.statuscallback) {\n         sheet.statuscallback(recalcdata, status, arg, sheet.statuscallbackparams);\n         }\n      }\n\n   SocialCalc.RecalcClearTimeout();\n\n   if (scri.currentState == scri.state.start_calc) {\n\n      recalcdata = new SocialCalc.RecalcData();\n      sheet.recalcdata = recalcdata;\n\n      for (coord in sheet.cells) { // get list of cells to check for order\n         if (!coord) continue;\n         recalcdata.celllist.push(coord);\n         }\n\n      recalcdata.calclist = {}; // start with empty list\n      scri.currentState = scri.state.order; // drop through to determining recalc order\n      }\n\n   if (scri.currentState == scri.state.order) {\n      while (recalcdata.celllistitem < recalcdata.celllist.length) { // check all the cells to see if they should be on the list\n         coord = recalcdata.celllist[recalcdata.celllistitem++];\n         err = SocialCalc.RecalcCheckCell(sheet, coord);\n         if (((new Date()) - starttime) >= scri.maxtimeslice) { // if taking too long, give up CPU for a while\n            do_statuscallback(\"calcorder\", {coord: coord, total: recalcdata.celllist.length, count: recalcdata.celllistitem});\n            SocialCalc.RecalcSetTimeout();\n            return;\n            }\n         }\n\n      do_statuscallback(\"calccheckdone\", recalcdata.calclistlength);\n\n      recalcdata.nextcalc = recalcdata.firstcalc; // start at the beginning of the recalc chain\n      scri.currentState = scri.state.calc; // loop through cells on next timer call\n      SocialCalc.RecalcSetTimeout();\n      return;\n      }\n\n   if (scri.currentState == scri.state.start_wait) { // starting to wait for something\n      scri.currentState = scri.state.done_wait; // finished on next timer call\n      if (scri.LoadSheet) {\n         status = scri.LoadSheet(scf.SheetCache.waitingForLoading);\n         if (status) { // started a load operation\n            return;\n            }\n         }\n      SocialCalc.RecalcLoadedSheet(null, \"\", false);\n      return;\n      }\n\n   if (scri.currentState == scri.state.done_wait) {\n      scri.currentState = scri.state.calc; // loop through cells on next timer call\n      SocialCalc.RecalcSetTimeout();\n      return;\n      }\n\n   // otherwise should be scri.state.calc\n\n   if (scri.currentState != scri.state.calc) {\n      alert(\"Recalc state error: \"+scri.currentState+\". Error in SocialCalc code.\");\n      }\n\n   coord = sheet.recalcdata.nextcalc;\n   while (coord) {\n      cell = sheet.cells[coord];\n\t  // app widgets need cell ID so store in parseinfo {\n      if (!cell.parseinfo) { // cache parsed formula\n        cell.parseinfo = scf.ParseFormulaIntoTokens(cell.formula);\n        }\n      cell.parseinfo.coord = coord;\n\t  // }\n      eresult = scf.evaluate_parsed_formula(cell.parseinfo, sheet, false);\n      if (scf.SheetCache.waitingForLoading) { // wait until restarted\n         // schedule render to run while waiting for dependent sheet to load - schedules first render of sheet\n         if (scri.firstRenderScheduled != true) {\n           var editor = SocialCalc.GetSpreadsheetControlObject().editor;\n           editor.ScheduleRender(false);\n           scri.firstRenderScheduled = true; // stop more renders because done first render of sheet\n         }\n         recalcdata.nextcalc = coord; // start with this cell again\n         recalcdata.count += count;\n         do_statuscallback(\"calcloading\", {sheetname: scf.SheetCache.waitingForLoading});\n         scri.currentState = scri.state.start_wait; // start load on next timer call\n         SocialCalc.RecalcSetTimeout();\n         return;\n         }\n\n      if (scf.RemoteFunctionInfo.waitingForServer) { // wait until restarted\n         recalcdata.nextcalc = coord; // start with this cell again\n         recalcdata.count += count;\n         do_statuscallback(\"calcserverfunc\",\n            {funcname: scf.RemoteFunctionInfo.waitingForServer, coord: coord, total: recalcdata.calclistlength, count: recalcdata.count});\n         scri.currentState = scri.state.done_wait; // start load on next timer call\n         return; // return and wait for next recalc timer event\n         }\n\n      if (cell.datavalue != eresult.value ||\n       cell.valuetype != eresult.type) { // only update if changed from last time\n         cell.datavalue = eresult.value;\n         cell.valuetype = eresult.type;\n         delete cell.displaystring;\n         sheet.recalcchangedavalue = true; // remember something changed in case other code wants to know\n         }\n      if (eresult.error) {\n         cell.errors = eresult.error;\n         }\n      count++;\n      coord = sheet.recalcdata.calclist[coord];\n\n      if (((new Date()) - starttime) >= scri.maxtimeslice) { // if taking too long, give up CPU for a while\n         recalcdata.nextcalc = coord; // start with next cell on chain\n         recalcdata.count += count;\n         do_statuscallback(\"calcstep\", {coord: coord, total: recalcdata.calclistlength, count: recalcdata.count});\n         SocialCalc.RecalcSetTimeout();\n         return;\n         }\n      }\n\n   recalcdata.inrecalc = false;\n\n   sheet.reRenderCellList = sheet.recalcdata.celllist; // GUI widgets need focus - if app then only re-render non-widget cells\n   delete sheet.recalcdata; // save memory and clear out for name lookup formula evaluation\n\n   delete sheet.attribs.needsrecalc; // remember recalc done\n\n   scri.sheet = sheet.previousrecalcsheet || null; // chain back if doing recalc of loaded sheets\n   if (scri.sheet) {\n      scri.currentState = scri.state.calc; // start where we left off\n      SocialCalc.RecalcSetTimeout();\n      return;\n      }\n\n   scf.FreshnessInfo.recalc_completed = true; // say freshness info is complete\n   scri.currentState = scri.state.idle; // we are idle\n\n   do_statuscallback(\"calcfinished\", (new Date()) - scri.starttime);\n\n   // Check queue for more sheets.\n   if (scri.queue.length > 0) {\n      sheet = scri.queue.shift();\n      sheet.RecalcSheet();\n      }\n   }\n\n\n//\n// circref = SocialCalc.RecalcCheckCell(sheet, coord)\n//\n// Checks cell to put on calclist, looking at parsed tokens.\n// Also checks cells this cell is dependent upon\n// if it contains a formula with cell references.\n// If circular reference, returns non-null.\n//\n\nSocialCalc.RecalcCheckCell = function(sheet, startcoord) {\n\n   var parseinfo, ttext, ttype, i, rangecoord, circref, value, pos, pos2, cell, coordvals;\n   var scf = SocialCalc.Formula;\n   if (!scf) {\n      return \"Need SocialCalc.Formula\";\n      }\n   var tokentype = scf.TokenType;\n   var token_op = tokentype.op;\n   var token_name = tokentype.name;\n   var token_coord = tokentype.coord;\n\n   var recalcdata = sheet.recalcdata;\n   var checkinfo = recalcdata.checkinfo;\n\n   var sheetref = false; // if true, a sheet reference is in effect, so don't check that\n   var oldcoord = null; // coord of formula that referred to this one when checking down the tree\n   var coord = startcoord; // the coord of the cell we are checking\n\n   // Start with requested cell, and then continue down or up the dependency tree\n   // oldcoord (and checkinfo[coord].oldcoord) maintains the reference stack during the tree walk\n   // checkinfo[coord] maintains the stack of checking looping values, e.g., token number being checked\n\nmainloop:\n   while (coord) {\n      cell = sheet.cells[coord];\n      coordvals = checkinfo[coord];\n\n      if (!cell || cell.datatype != \"f\" || // Don't calculate if not a formula\n          (coordvals && typeof coordvals != \"object\")) { // Don't calc if already calculated\n         coord = oldcoord; // go back up dependency tree to coord that referred to us\n         if (checkinfo[coord]) oldcoord = checkinfo[coord].oldcoord;\n         continue;\n         }\n\n      if (!coordvals) { // do we have checking information about this cell?\n         coordvals = new SocialCalc.RecalcCheckInfo(); // no - make a place to hold it\n         checkinfo[coord] = coordvals;\n         }\n\n      if (cell.errors) { // delete errors from previous recalcs\n         delete cell.errors;\n         }\n\n      if (!cell.parseinfo) { // cache parsed formula\n         cell.parseinfo = scf.ParseFormulaIntoTokens(cell.formula);\n         }\n      parseinfo = cell.parseinfo;\n\n      for (i=coordvals.parsepos; i<parseinfo.length; i++) { // go through each token in formula\n\n         if (coordvals.inrange) { // processing a range of coords\n            if (coordvals.inrangestart) { // first time - fill in other values\n               if (coordvals.cr1.col > coordvals.cr2.col) { coordvals.c1 = coordvals.cr2.col; coordvals.c2 = coordvals.cr1.col; }\n               else { coordvals.c1 = coordvals.cr1.col; coordvals.c2 = coordvals.cr2.col; }\n               coordvals.c = coordvals.c1 - 1; // start one before\n\n               if (coordvals.cr1.row > coordvals.cr2.row) { coordvals.r1 = coordvals.cr2.row; coordvals.r2 = coordvals.cr1.row; }\n               else { coordvals.r1 = coordvals.cr1.row; coordvals.r2 = coordvals.cr2.row; }\n               coordvals.r = coordvals.r1; // start on this row\n               coordvals.inrangestart = false;\n               }\n            else { // not first time\n               }\n            coordvals.c += 1; // increment column\n            if (coordvals.c > coordvals.c2) { // finished the columns of this row\n               coordvals.r += 1; // increment row\n               if (coordvals.r > coordvals.r2) { // finished checking the entire range\n                  coordvals.inrange = false;\n                  continue;\n                  }\n               coordvals.c = coordvals.c1; // start at the beginning of next row\n               }\n            rangecoord = SocialCalc.crToCoord(coordvals.c, coordvals.r);\n\n            // now check that one\n\n            coordvals.parsepos = i; // remember our position\n            coordvals.oldcoord = oldcoord; // remember back up chain\n            oldcoord = coord; // come back to us\n            coord = rangecoord;\n            if (checkinfo[coord] && typeof checkinfo[coord] == \"object\") { // Circular reference\n               cell.errors = SocialCalc.Constants.s_caccCircRef+startcoord; // set on original cell making the ref\n               checkinfo[startcoord] = true; // this one should be calculated once at this point\n               if (!recalcdata.firstcalc) {\n                  recalcdata.firstcalc = startcoord;\n                  }\n               else {\n                  recalcdata.calclist[recalcdata.lastcalc] = startcoord;\n                  }\n               recalcdata.lastcalc = startcoord;\n               recalcdata.calclistlength++; // count number on list\n               sheet.attribs.circularreferencecell = coord+\"|\"+oldcoord; // remember at least one circ ref\n               return cell.errors;\n               }\n            continue mainloop;\n            }\n\n         ttype = parseinfo[i].type; // get token details\n         ttext = parseinfo[i].text;\n         if (ttype == token_op) { // references with sheet specifier are not checked\n            if (ttext == \"!\") {\n               sheetref = true; // found a sheet reference\n               }\n            else if (ttext != \":\") { // for everything but a range, reset\n               sheetref = false;\n               }\n            }\n\n         if (ttype == token_name) { // look for named range\n            value = scf.LookupName(sheet, ttext);\n            if (value.type == \"range\") { // only need to recurse here for range, which may be just one cell\n               pos = value.value.indexOf(\"|\");\n               if (pos != -1) { // range - check each cell\n                  coordvals.cr1 = SocialCalc.coordToCr(value.value.substring(0,pos));\n                  pos2 = value.value.indexOf(\"|\", pos+1);\n                  coordvals.cr2 = SocialCalc.coordToCr(value.value.substring(pos+1,pos2));\n                  coordvals.inrange = true;\n                  coordvals.inrangestart = true;\n                  i = i-1; // back up so will start up again here\n                  continue;\n                  }\n               }\n            else if (value.type == \"coord\") { // just a coord\n               ttype = token_coord; // treat as a coord inline\n               ttext = value.value; // and then drop through to next test which should succeed\n               }\n            else { // not a defined name - probably a function\n               }\n            }\n\n         if (ttype == token_coord) { // token is a coord\n\n            if (i >= 2 // look for a range\n             && parseinfo[i-1].type == token_op && parseinfo[i-1].text == ':'\n             && parseinfo[i-2].type == token_coord\n             && !sheetref) { // Range -- check each cell\n               coordvals.cr1 = SocialCalc.coordToCr(parseinfo[i-2].text); // remember range extents\n               coordvals.cr2 = SocialCalc.coordToCr(ttext);\n               coordvals.inrange = true; // next time use the range looping code\n               coordvals.inrangestart = true;\n               i = i-1; // back up so will start up again here\n               continue;\n               }\n\n            else if (!sheetref) { // Single cell reference\n               if (ttext.indexOf(\"$\") != -1) ttext = ttext.replace(/\\$/g, \"\"); // remove any $'s\n               coordvals.parsepos = i+1; // remember our position - come back on next token\n               coordvals.oldcoord = oldcoord; // remember back up chain\n               oldcoord = coord; // come back to us\n               coord = ttext;\n               if (checkinfo[coord] && typeof checkinfo[coord] == \"object\") { // Circular reference\n                  cell.errors = SocialCalc.Constants.s_caccCircRef+startcoord; // set on original cell making the ref\n                  checkinfo[startcoord] = true; // this one should be calculated once at this point\n                  if (!recalcdata.firstcalc) { // add to calclist\n                     recalcdata.firstcalc = startcoord;\n                     }\n                  else {\n                     recalcdata.calclist[recalcdata.lastcalc] = startcoord;\n                     }\n                  recalcdata.lastcalc = startcoord;\n                  recalcdata.calclistlength++; // count number on list\n                  sheet.attribs.circularreferencecell = coord+\"|\"+oldcoord; // remember at least one circ ref\n                  return cell.errors;\n                  }\n               continue mainloop;\n               }\n            }\n         }\n\n      sheetref = false; // make sure off when bump back up\n\n      checkinfo[coord] = true; // this one is finished\n      if (!recalcdata.firstcalc) { // add to calclist\n         recalcdata.firstcalc = coord;\n         }\n      else {\n         recalcdata.calclist[recalcdata.lastcalc] = coord;\n         }\n      recalcdata.lastcalc = coord;\n      recalcdata.calclistlength++; // count number on list\n\n      coord = oldcoord; // go back to the formula that referred to us and continue\n      oldcoord = checkinfo[coord] ? checkinfo[coord].oldcoord : null;\n\n      }\n\n   return \"\";\n\n   }\n\n\n// *************************************\n//\n// Parse class:\n//\n// Used by ExecuteSheetCommand to get elements of commands to execute.\n// The string it works with consists of one or more lines each\n// made up of one or more tokens separated by a delimiter.\n//\n// *************************************\n\n// Initialize: set string to work with\n\nSocialCalc.Parse = function(str) {\n\n   // properties:\n\n   this.str = str;\n   this.pos = 0;\n   this.delimiter = \" \";\n   this.lineEnd = str.indexOf(\"\\n\");\n   if (this.lineEnd < 0) {\n      this.lineEnd = str.length;\n      }\n\n   }\n\n// Return next token as a string\n\nSocialCalc.Parse.prototype.NextToken = function() {\n   if (this.pos < 0) return \"\";\n   var pos2 = this.str.indexOf(this.delimiter, this.pos);\n   var pos1 = this.pos;\n   if (pos2 > this.lineEnd) { // don't go past end of line\n      pos2 = this.lineEnd;\n      }\n   if (pos2 >= 0) {\n      this.pos = pos2 + 1;\n      return this.str.substring(pos1, pos2);\n      }\n   else {\n      this.pos = this.lineEnd;\n      return this.str.substring(pos1, this.lineEnd);\n      }\n   }\n\n// Return everything from current point until end of line\n\nSocialCalc.Parse.prototype.RestOfString = function() {\n   var oldpos = this.pos;\n   if (this.pos < 0 || this.pos >= this.lineEnd) return \"\";\n   this.pos = this.lineEnd;\n   return this.str.substring(oldpos, this.lineEnd);\n   }\n\nSocialCalc.Parse.prototype.RestOfStringNoMove = function() {\n   if (this.pos < 0 || this.pos >= this.lineEnd) return \"\";\n   return this.str.substring(this.pos, this.lineEnd);\n   }\n\n// Move current point to next line\n\nSocialCalc.Parse.prototype.NextLine = function() {\n   this.pos = this.lineEnd + 1;\n   this.lineEnd = this.str.indexOf(\"\\n\", this.pos);\n   if (this.lineEnd < 0) {\n      this.lineEnd = this.str.length;\n      }\n   }\n\n// Check to see if at end of string with no more to process\n\nSocialCalc.Parse.prototype.EOF = function() {\n   if (this.pos < 0 || this.pos >= this.str.length) return true;\n   return false;\n   }\n\n\n// *************************************\n//\n// UndoStack class:\n//\n// Implements the behavior needed for a normal application's undo/redo stack.\n// You add a new change sequence with PushChange.\n// The type argument is a string that can be used to lookup some general string\n// like \"typing\" or \"setting attribute\" for the menu prompts for undo/redo.\n//\n// You add the \"do\" steps with AddDo. The non-null, non-undefined arguments are\n// joined together with \" \" to make a command string to be saved.\n//\n// You add the undo steps as commands for the most recent change with AddUndo.\n// The non-null, non-undefined arguments are joined together with \" \" to make\n// a command string to be saved.\n//\n// The Undo and Redo functions move the Top Of Stack pointer through the changes stack\n// so you can undo and redo. Doing a new PushChange removes all undone items\n// after TOS.\n//\n// You can push more things than you can undo if you want.\n// There is a maximum to remember as the \"did\" stack for an audit trail (and as redo). This may be unlimited.\n// There is a separate maximum to remember that can be undone. This may be smaller than maxRedo.\n//\n// *************************************\n\nSocialCalc.UndoStack = function() {\n\n   // properties:\n\n   this.stack = []; // {command: [], type: type, undo: []} -- multiple dos and undos allowed\n   this.tos = -1; // top of stack position, used for undo/redo\n   this.maxRedo = 0; // Maximum size of redo stack (and audit trail which is this.stack[n].command) or zero if no limit\n   this.maxUndo = 50; // Maximum number of steps kept for undo (usually the memory intensive part) or zero if no limit\n\n   }\n\nSocialCalc.UndoStack.prototype.PushChange = function(type) { // adding a new thing to the stack\n   while (this.stack.length > 0 && this.stack.length-1 > this.tos) { // pop off things not redone\n      this.stack.pop();\n      }\n   this.stack.push({command: [], type: type, undo: []});\n   if (this.maxRedo && this.stack.length > this.maxRedo) { // limit number kept as audit trail\n      this.stack.shift(); // remove the extra one\n      }\n   if (this.maxUndo && this.stack.length > this.maxUndo) { // need to trim excess undo info\n      this.stack[this.stack.length - this.maxUndo - 1].undo = []; // only need to remove one\n      }\n   this.tos = this.stack.length - 1;\n   }\n\nSocialCalc.UndoStack.prototype.AddDo = function() {\n   if (!this.stack[this.stack.length-1]) { return; }\n   var args = [];\n   for (var i=0; i<arguments.length; i++) {\n      if (arguments[i]!=null) args.push(arguments[i]); // ignore null or undefined\n      }\n   var cmd = args.join(\" \");\n   this.stack[this.stack.length-1].command.push(cmd);\n   }\n\nSocialCalc.UndoStack.prototype.AddUndo = function() {\n   if (!this.stack[this.stack.length-1]) { return; }\n   var args = [];\n   for (var i=0; i<arguments.length; i++) {\n      if (arguments[i]!=null) args.push(arguments[i]); // ignore null or undefined\n      }\n   var cmd = args.join(\" \");\n   this.stack[this.stack.length-1].undo.push(cmd);\n   }\n\nSocialCalc.UndoStack.prototype.TOS = function() {\n   if (this.tos >= 0) return this.stack[this.tos];\n   else return null;\n   }\n\nSocialCalc.UndoStack.prototype.Undo = function() {\n   if (this.tos >= 0 && (!this.maxUndo || this.tos > this.stack.length - this.maxUndo - 1)) {\n      this.tos -= 1;\n      return true;\n      }\n   else {\n      return false;\n      }\n   }\n\nSocialCalc.UndoStack.prototype.Redo = function() {\n   if (this.tos < this.stack.length-1) {\n      this.tos += 1;\n      return true;\n      }\n   else {\n      return false;\n      }\n   }\n\n// *************************************\n//\n// Clipboard Object:\n//\n// This is a single object.\n// Stores the clipboard, which is shared by all active sheets.\n// Like the undo stack, it does not persist from one editing session to another.\n//\n// *************************************\n\nSocialCalc.Clipboard = {\n\n   // properties:\n\n   clipboard:  \"\" // empty or string in save format with \"copiedfrom:\" set to a range\n\n   }\n\n\n// *************************************\n//\n// RenderContext class:\n//\n// *************************************\n\nSocialCalc.RenderContext = function(sheetobj) {\n\n   var parts, num, s;\n   var attribs = sheetobj.attribs;\n   var scc = SocialCalc.Constants;\n\n   // properties:\n\n   this.sheetobj = sheetobj;\n   this.hideRowsCols = false; // Rendering with panes only works with \"false\"\n                              // !!!! Note: not implemented yet in rendering, just saved as an attribute\n   this.showGrid = false;\n   this.showRCHeaders = false;\n   this.rownamewidth = scc.defaultRowNameWidth;\n   this.pixelsPerRow = scc.defaultAssumedRowHeight;\n\n   this.cellskip = {}; // if present, coord of cell covering this cell\n   this.coordToCR = {}; // for cells starting spans, coordToCR[coord]={row:row, col:col}\n   this.colwidth = []; // precomputed column widths, taking into account defaults\n   this.rowheight = []; // precomputed row height, taking into account defaults\n   this.totalwidth = 0; // precomputed total table width\n   this.totalheight = 0; // precomputed total table height\n\n   this.rowpanes = []; // for each pane, {first: firstrow, last: lastrow}\n   this.colpanes = []; // for each pane, {first: firstrow, last: lastrow}\n   this.colunhideleft = [];\n   this.colunhideright = [];\n   this.rowunhidetop = [];\n   this.rowunhidebottom = [];\n   this.maxcol=0; // max col and row to display, adding long spans, etc.\n   this.maxrow=0;\n\n   this.highlights = {}; // for each cell with special display: coord:highlightType (see this.highlightTypes)\n   this.cursorsuffix = \"\"; // added to highlights[cr]==\"cursor\" to get type to lookup\n\n   this.highlightTypes = // attributes to change when highlit\n      {\n         cursor: {style: scc.defaultHighlightTypeCursorStyle, className: scc.defaultHighlightTypeCursorClass},\n         range: {style: scc.defaultHighlightTypeRangeStyle, className: scc.defaultHighlightTypeRangeClass},\n         cursorinsertup: {style: \"color:#FFF;backgroundColor:#A6A6A6;backgroundRepeat:repeat-x;backgroundPosition:top left;backgroundImage:url(\"+scc.defaultImagePrefix+\"cursorinsertup.gif);\", className: scc.defaultHighlightTypeCursorClass},\n         cursorinsertleft: {style: \"color:#FFF;backgroundColor:#A6A6A6;backgroundRepeat:repeat-y;backgroundPosition:top left;backgroundImage:url(\"+scc.defaultImagePrefix+\"cursorinsertleft.gif);\", className: scc.defaultHighlightTypeCursorClass},\n         range2: {style: \"color:#000;backgroundColor:#FFF;backgroundImage:url(\"+scc.defaultImagePrefix+\"range2.gif);\", className: \"\"}\n      }\n\n   this.cellIDprefix = scc.defaultCellIDPrefix; // if non-null, each cell will render with an ID\n\n   this.defaultlinkstyle = null; // default linkstyle object (allows you to pass values to link renderer)\n   this.defaultHTMLlinkstyle = {type: \"html\"}; // default linkstyle for standalone HTML\n\n   // constants:\n\n   this.defaultfontstyle = scc.defaultCellFontStyle;\n   this.defaultfontsize = scc.defaultCellFontSize;\n   this.defaultfontfamily = scc.defaultCellFontFamily;\n\n   this.defaultlayout = scc.defaultCellLayout;\n\n   this.defaultpanedividerwidth = scc.defaultPaneDividerWidth;\n   this.defaultpanedividerheight = scc.defaultPaneDividerHeight;\n\n   this.gridCSS = scc.defaultGridCSS;\n\n   this.commentClassName = scc.defaultCommentClass; // for cells with non-blank comments when this.showGrid is true\n   this.commentCSS = scc.defaultCommentStyle; // any combination of classnames and styles may be used\n   this.commentNoGridClassName = scc.defaultCommentNoGridClass; // for cells when this.showGrid is false\n   this.commentNoGridCSS = scc.defaultCommentNoGridStyle; // any combination of classnames and styles may be used\n\n   this.readonlyClassName = scc.defaultReadonlyClass; // for readonly cells with non-blank comments when this.showGrid is true\n   this.readonlyCSS = scc.defaultReadonlyStyle; // any combination of classnames and styles may be used\n   this.readonlyNoGridClassName = scc.defaultReadonlyNoGridClass; // for readonly cells when this.showGrid is false\n   this.readonlyNoGridCSS = scc.defaultReadonlyNoGridStyle; // any combination of classnames and styles may be used\n   this.readonlyComment = scc.defaultReadonlyComment;\n\n   this.classnames = // any combination of classnames and explicitStyles can be used\n      {\n         colname: scc.defaultColnameClass,\n         rowname: scc.defaultRownameClass,\n         selectedcolname: scc.defaultSelectedColnameClass,\n         selectedrowname: scc.defaultSelectedRownameClass,\n         upperleft: scc.defaultUpperLeftClass,\n         skippedcell: scc.defaultSkippedCellClass,\n         panedivider: scc.defaultPaneDividerClass,\n         unhideleft: scc.defaultUnhideLeftClass,\n         unhideright: scc.defaultUnhideRightClass,\n         unhidetop: scc.defaultUnhideTopClass,\n         unhidebottom: scc.defaultUnhideBottomClass,\n         colresizebar: scc.defaultColResizeBarClass,\n         rowresizebar: scc.defaultRowResizeBarClass\n      };\n\n   this.explicitStyles = // these may be used so you won't need a stylesheet with the classnames\n      {\n         colname: scc.defaultColnameStyle,\n         rowname: scc.defaultRownameStyle,\n         selectedcolname: scc.defaultSelectedColnameStyle,\n         selectedrowname: scc.defaultSelectedRownameStyle,\n         upperleft: scc.defaultUpperLeftStyle,\n         skippedcell: scc.defaultSkippedCellStyle,\n         panedivider: scc.defaultPaneDividerStyle,\n         unhideleft: scc.defaultUnhideLeftStyle,\n         unhideright: scc.defaultUnhideRightStyle,\n         unhidetop: scc.defaultUnhideTopStyle,\n         unhidebottom: scc.defaultUnhideBottomStyle\n      };\n\n   // processed info about cell skipping\n\n   this.cellskip = null;\n   this.needcellskip = true;\n\n   // precomputed values, filling in defaults indicated by \"*\"\n\n   this.fonts=[]; // for each fontnum, {style: fs, weight: fw, size: fs, family: ff}\n   this.layouts=[]; // for each layout, \"padding:Tpx Rpx Bpx Lpx;vertical-align:va;\"\n\n   this.needprecompute = true; // need to call PrecomputeSheetFontsAndLayouts\n\n   // if have a sheet object, initialize constants and precomputed values\n\n   if (attribs) {\n      this.rowpanes[0] = {first: 1, last: attribs.lastrow};\n      this.colpanes[0] = {first: 1, last: attribs.lastcol};\n      this.usermaxcol = attribs.usermaxcol;\n      this.usermaxrow = attribs.usermaxrow;\n\n      }\n   else throw scc.s_rcMissingSheet;\n\n   }\n\n// Methods:\n\nSocialCalc.RenderContext.prototype.PrecomputeSheetFontsAndLayouts = function() {SocialCalc.PrecomputeSheetFontsAndLayouts(this);};\nSocialCalc.RenderContext.prototype.CalculateCellSkipData = function() {SocialCalc.CalculateCellSkipData(this);};\nSocialCalc.RenderContext.prototype.CalculateColWidthData = function() {SocialCalc.CalculateColWidthData(this);};\nSocialCalc.RenderContext.prototype.CalculateRowHeightData = function() {SocialCalc.CalculateRowHeightData(this);};\nSocialCalc.RenderContext.prototype.SetRowPaneFirstLast = function(panenum, first, last) {this.rowpanes[panenum]={first:first, last:last};};\nSocialCalc.RenderContext.prototype.SetColPaneFirstLast = function(panenum, first, last) {this.colpanes[panenum]={first:first, last:last};};\nSocialCalc.RenderContext.prototype.CoordInPane = function(coord, rowpane, colpane) {return SocialCalc.CoordInPane(this, coord, rowpane, colpane);};\nSocialCalc.RenderContext.prototype.CellInPane = function(row, col, rowpane, colpane) {return SocialCalc.CellInPane(this, row, col, rowpane, colpane);};\nSocialCalc.RenderContext.prototype.InitializeTable = function(tableobj) {SocialCalc.InitializeTable(this, tableobj);};\nSocialCalc.RenderContext.prototype.RenderSheet = function(oldtable, linkstyle) {return SocialCalc.RenderSheet(this, oldtable, linkstyle);};\nSocialCalc.RenderContext.prototype.RenderColGroup = function() {return SocialCalc.RenderColGroup(this);};\nSocialCalc.RenderContext.prototype.RenderColHeaders = function() {return SocialCalc.RenderColHeaders(this);};\nSocialCalc.RenderContext.prototype.RenderSizingRow = function() {return SocialCalc.RenderSizingRow(this);};\nSocialCalc.RenderContext.prototype.RenderRow = function(rownum, rowpane, linkstyle) {return SocialCalc.RenderRow(this, rownum, rowpane, linkstyle);};\nSocialCalc.RenderContext.prototype.RenderSpacingRow = function() {return SocialCalc.RenderSpacingRow(this);};\nSocialCalc.RenderContext.prototype.RenderCell = function(rownum, colnum, rowpane, colpane, noElement, linkstyle)\n      {return SocialCalc.RenderCell(this, rownum, colnum, rowpane, colpane, noElement, linkstyle);};\n\n// Functions:\n\nSocialCalc.PrecomputeSheetFontsAndLayouts = function(context) {\n\n   var defaultfont, parts, layoutre, dparts, sparts, num, s, i;\n   var sheetobj = context.sheetobj;\n   var attribs =  sheetobj.attribs;\n\n   if (attribs.defaultfont) {\n      defaultfont = sheetobj.fonts[attribs.defaultfont];\n      defaultfont = defaultfont.replace(/^\\*/,SocialCalc.Constants.defaultCellFontStyle);\n      defaultfont = defaultfont.replace(/(.+)\\*(.+)/,\"$1\"+SocialCalc.Constants.defaultCellFontSize+\"$2\");\n      defaultfont = defaultfont.replace(/\\*$/,SocialCalc.Constants.defaultCellFontFamily);\n      parts=defaultfont.match(/^(\\S+? \\S+?) (\\S+?) (\\S.*)$/);\n      context.defaultfontstyle = parts[1];\n      context.defaultfontsize = parts[2];\n      context.defaultfontfamily = parts[3];\n      }\n\n   for (num=1; num<sheetobj.fonts.length; num++) { // precompute fonts by filling in the *'s\n      s=sheetobj.fonts[num];\n      s=s.replace(/^\\*/,context.defaultfontstyle);\n      s=s.replace(/(.+)\\*(.+)/,\"$1\"+context.defaultfontsize+\"$2\");\n      s=s.replace(/\\*$/,context.defaultfontfamily);\n      parts=s.match(/^(\\S+?) (\\S+?) (\\S+?) (\\S.*)$/);\n\n      if (!parts) continue\n\n      context.fonts[num] = {style: parts[1], weight: parts[2], size: parts[3], family: parts[4]};\n\n      }\n\n   layoutre = /^padding:\\s*(\\S+)\\s+(\\S+)\\s+(\\S+)\\s+(\\S+);vertical-align:\\s*(\\S+);/;\n   dparts = SocialCalc.Constants.defaultCellLayout.match(layoutre); // get built-in defaults\n\n   if (attribs.defaultlayout) {\n      sparts = sheetobj.layouts[attribs.defaultlayout].match(layoutre); // get sheet defaults, if set\n      }\n   else {\n      sparts = [\"\", \"*\", \"*\", \"*\", \"*\", \"*\"];\n      }\n\n   for (num=1; num<sheetobj.layouts.length; num++) { // precompute layouts by filling in the *'s\n      s=sheetobj.layouts[num];\n      parts = s.match(layoutre);\n\n      if (!parts) continue\n\n      for (i=1; i<=5; i++) {\n         if (parts[i]==\"*\") {\n            parts[i] = (sparts[i] != \"*\" ? sparts[i] : dparts[i]); // if *, sheet default or built-in\n            }\n         }\n      context.layouts[num] = \"padding:\"+parts[1]+\" \"+parts[2]+\" \"+parts[3]+\" \"+parts[4]+\n         \";vertical-align:\"+parts[5]+\";\";\n      }\n\n   context.needprecompute = false;\n\n   }\n\nSocialCalc.CalculateCellSkipData = function(context) {\n\n   var row, col, coord, cell, contextcell, colspan, rowspan, skiprow, skipcol, skipcoord;\n\n   var sheetobj=context.sheetobj;\n   var sheetrowattribs=sheetobj.rowattribs;\n   var sheetcolattribs=sheetobj.colattribs;\n   context.maxrow=0;\n   context.maxcol=0;\n   context.cellskip = {}; // reset\n\n   // Calculate cellskip data\n\n   for (row=1; row<=sheetobj.attribs.lastrow; row++) {\n      for (col=1; col<=sheetobj.attribs.lastcol; col++) { // look for spans and set cellskip for skipped cells\n         coord=SocialCalc.crToCoord(col, row);\n         cell=sheetobj.cells[coord];\n         // don't look at undefined cells (they have no spans) or skipped cells\n         if (cell===undefined || context.cellskip[coord]) continue;\n         colspan=cell.colspan || 1;\n         rowspan=cell.rowspan || 1;\n         if (colspan>1 || rowspan>1) {\n            for (skiprow=row; skiprow<row+rowspan; skiprow++) {\n               for (skipcol=col; skipcol<col+colspan; skipcol++) { // do the setting on individual cells\n                  skipcoord=SocialCalc.crToCoord(skipcol,skiprow);\n                  if (skipcoord==coord) { // for coord, remember row and col\n                     context.coordToCR[coord]={row: row, col: col};\n                     }\n                  else { // for other cells, flag with coord of here\n                     context.cellskip[skipcoord]=coord;\n                     }\n                  if (skiprow>context.maxrow) maxrow=skiprow;\n                  if (skipcol>context.maxcol) maxcol=skipcol;\n                  }\n               }\n            }\n         }\n      }\n\n   context.needcellskip = false;\n\n   }\n\nSocialCalc.CalculateColWidthData = function(context) {\n\n   var colnum, colname, colwidth, totalwidth;\n\n   var sheetobj=context.sheetobj;\n   var sheetcolattribs=sheetobj.colattribs;\n\n   // Calculate column width data\n\n   totalwidth=context.showRCHeaders ? context.rownamewidth-0 : 0;\n   for (colpane=0; colpane<context.colpanes.length; colpane++) {\n      for (colnum=context.colpanes[colpane].first; colnum<=context.colpanes[colpane].last; colnum++) {\n         colname=SocialCalc.rcColname(colnum);\n         if (sheetobj.colattribs.hide[colname] == \"yes\") {\n            context.colwidth[colnum] = 0;\n            }\n         else {\n            colwidth = sheetobj.colattribs.width[colname] || sheetobj.attribs.defaultcolwidth || SocialCalc.Constants.defaultColWidth;\n            if (colwidth==\"blank\" || colwidth==\"auto\") colwidth=\"\";\n            context.colwidth[colnum]=colwidth+\"\";\n            totalwidth+=(colwidth && ((colwidth-0)>0)) ? (colwidth-0) : 10;\n            }\n         }\n      }\n   context.totalwidth = totalwidth;\n\n   }\n\nSocialCalc.CalculateRowHeightData = function(context) {\n  var rownum, rowheight, totalheight;\n  var sheetobj = context.sheetobj;\n\n  // Calculate row height data\n  totalheight = context.showRCHeaders ? context.pixelsPerRow : 0;\n  for (rowpane = 0; rowpane < context.rowpanes.length; rowpane++) {\n    for (rownum = context.rowpanes[rowpane].first; rownum <= context.rowpanes[rowpane].last; rownum++) {\n      if (sheetobj.rowattribs.hide[rownum] === \"yes\") {\n        context.rowheight[rownum] = 0;\n      } else {\n        rowheight = sheetobj.rowattribs.height[rownum] || sheetobj.attribs.defaultrowheight || SocialCalc.Constants.defaultAssumedRowHeight;\n        if (rowheight === \"blank\" || rowheight === \"auto\") rowheight = \"\";\n        context.rowheight[rownum] = rowheight+\"\";\n        totalheight += (rowheight && ((rowheight - 0) > 0)) ? (rowheight-0) : 10;\n      }\n    }\n  }\n  context.totalheight = totalheight;\n\n}\n\nSocialCalc.InitializeTable = function(context, tableobj) {\n\n/*\n\nUses border-collapse so corners don't have holes\nNote: IE and Firefox handle <col> differently (IE adds borders and padding)\nunder border-collapse and Safari has problems with <col> and wide text\nTablelayout \"fixed\" also leads to problems\n\n*/\n\n/*\n\n*** Discussion ***\n\nThe rendering assumes fixed column widths, even though SocialCalc allows \"auto\".\nThere may be issues with \"auto\" and it is hard to make it work cross-browser\nwith border-collapse, etc.\n\nThis and the RenderSheet routine are where in the code the specifics of\ntable attributes and column size definitions are set. As the browsers settle down\nand when we decide if we don't need auto width, we may want to revisit the way the\ncode does this (e.g., use table-layout:fixed).\n\n*/\n   tableobj.style.borderCollapse=\"collapse\";\n   tableobj.cellSpacing=\"0\";\n   tableobj.cellPadding=\"0\";\n\n   tableobj.style.width=context.totalwidth+\"px\";\n\n   }\n\n//\n// tableobj = SocialCalc.RenderSheet(context, oldtable, linkstyle)\n//\n// Renders a render context returning a DOM table object.\n// If there is an oldtable object, it replaces it in the parent node.\n// If oldtable is null, it just returns the new one.\n// The linkstyle is \"\" or null for editing rendering\n// and optionally an object passed on to formatting code.\n//\n\nSocialCalc.RenderSheet = function(context, oldtable, linkstyle) {\n\n   var newrow, rowpane;\n   var tableobj, colgroupobj, tbodyobj, parentnode;\n\n   // do precompute stuff if necessary\n\n   if (context.sheetobj.changedrendervalues) {\n      context.needcellskip = true;\n      context.needprecompute = true;\n      context.sheetobj.changedrendervalues = false;\n      }\n   if (context.needcellskip) {\n      context.CalculateCellSkipData();\n      }\n   if (context.needprecompute) {\n      context.PrecomputeSheetFontsAndLayouts();\n      }\n\n   context.CalculateColWidthData(); // always make sure col width values are up to date\n   context.CalculateRowHeightData();\n\n   // make the table element and fill it in\n\n   tableobj=document.createElement(\"table\");\n   context.InitializeTable(tableobj);\n\n   colgroupobj=context.RenderColGroup();\n   tableobj.appendChild(colgroupobj);\n\n   tbodyobj=document.createElement(\"tbody\");\n\n   tbodyobj.appendChild(context.RenderSizingRow());\n\n   if (context.showRCHeaders) {\n      newrow=context.RenderColHeaders();\n      if (newrow) tbodyobj.appendChild(newrow);\n      }\n\n   for (rowpane=0; rowpane<context.rowpanes.length; rowpane++) {\n      for (rownum=context.rowpanes[rowpane].first;rownum<=context.rowpanes[rowpane].last;rownum++) {\n         newrow=context.RenderRow(rownum, rowpane, linkstyle);\n         tbodyobj.appendChild(newrow);\n         }\n      if (rowpane<context.rowpanes.length-1) {\n         newrow=context.RenderSpacingRow();\n         tbodyobj.appendChild(newrow);\n         }\n      }\n\n   tableobj.appendChild(tbodyobj);\n\n   if (oldtable) {\n      parentnode = oldtable.parentNode;\n      if (parentnode) parentnode.replaceChild(tableobj, oldtable);\n      }\n\n   return tableobj;\n\n   }\n\nSocialCalc.RenderRow = function(context, rownum, rowpane, linkstyle) {\n\n   var sheetobj=context.sheetobj;\n\n   var result=document.createElement(\"tr\");\n   var colnum, newcol, colpane, newdiv;\n\n   if (context.showRCHeaders) {\n      newcol=document.createElement(\"td\");\n      if (context.classnames) newcol.className=context.classnames.rowname;\n      if (context.explicitStyles) newcol.style.cssText=context.explicitStyles.rowname;\n      newcol.width=context.rownamewidth;\n      newcol.height = context.rowheight[rownum];\n      newcol.style.verticalAlign=\"top\"; // to get around Safari making top of centered row number be\n                                        // considered top of row (and can't get <row> position in Safari)\n      newcol.innerHTML=rownum+\"\";\n\n      // If neighbour is hidden, show an icon in this column.\n      if (rownum < context.rowpanes[context.rowpanes.length-1].last && sheetobj.rowattribs.hide[rownum+1] == \"yes\") {\n         // HACK: Because we likely want the icon floating at the bottom of the cell, we create an enclosing div\n         // with position relative and the icon's div will be placed inside it with position: absolute and bottom: 0.\n         var container = document.createElement(\"div\");\n         container.style.position = \"relative\";\n         var unhide = document.createElement(\"div\");\n         if (context.classnames) unhide.className=context.classnames.unhidetop;\n         if (context.explicitStyles) unhide.style.cssText=context.explicitStyles.unhidetop;\n         var fixPosition = ((context.rowheight[rownum] - 0) - SocialCalc.Constants.defaultAssumedRowHeight);\n         fixPosition = (fixPosition === 0) ? 4 : fixPosition;\n         unhide.style.bottom = '-' + fixPosition + 'px';\n         context.rowunhidetop[rownum] = unhide;\n         container.appendChild(unhide);\n         newcol.appendChild(container);\n         }\n      if (rownum > 1 && sheetobj.rowattribs.hide[rownum-1] == \"yes\") {\n         var unhide = document.createElement(\"div\");\n         if (context.classnames) unhide.className=context.classnames.unhidebottom;\n         if (context.explicitStyles) unhide.style.cssText=context.explicitStyles.unhidebottom;\n         context.rowunhidebottom[rownum] = unhide;\n         newcol.appendChild(unhide);\n         }\n\n      // add resize bar\n      var resizeBar = document.createElement('div');\n      resizeBar.className = context.classnames.rowresizebar;\n      newcol.appendChild(resizeBar);\n\n      result.appendChild(newcol);\n      }\n\n   for (colpane=0; colpane<context.colpanes.length; colpane++) {\n      for (colnum=context.colpanes[colpane].first; colnum<=context.colpanes[colpane].last; colnum++) {\n         newcol=context.RenderCell(rownum, colnum, rowpane, colpane, null, linkstyle);\n         if (newcol) result.appendChild(newcol);\n         }\n      if (colpane<context.colpanes.length-1) {\n         newcol=document.createElement(\"td\");\n         newcol.width=context.defaultpanedividerwidth;\n         if (context.classnames.panedivider) newcol.className=context.classnames.panedivider;\n         if (context.explicitStyles.panedivider) newcol.style.cssText=context.explicitStyles.panedivider;\n         newdiv=document.createElement(\"div\"); // for Firefox to avoid squishing\n         newdiv.style.width=context.defaultpanedividerwidth+\"px\";\n         newdiv.style.overflow=\"hidden\";\n         newcol.appendChild(newdiv);\n         result.appendChild(newcol);\n         }\n      }\n\n   // If hidden row, display: none.\n   if (sheetobj.rowattribs.hide[rownum] == \"yes\") {\n      result.style.cssText += \";display:none\";\n      }\n\n   return result;\n   }\n\nSocialCalc.RenderSpacingRow = function(context) {\n\n   var colnum, newcol, colpane, w;\n\n   var sheetobj=context.sheetobj;\n\n   var result=document.createElement(\"tr\");\n\n   if (context.showRCHeaders) {\n      newcol=document.createElement(\"td\");\n      newcol.width=context.rownamewidth;\n      newcol.height=context.defaultpanedividerheight;\n      if (context.classnames.panedivider) newcol.className=context.classnames.panedivider;\n      if (context.explicitStyles.panedivider) newcol.style.cssText=context.explicitStyles.panedivider;\n      result.appendChild(newcol);\n      }\n\n   for (colpane=0; colpane<context.colpanes.length; colpane++) {\n      for (colnum=context.colpanes[colpane].first; colnum<=context.colpanes[colpane].last; colnum++) {\n         newcol=document.createElement(\"td\");\n         w = context.colwidth[colnum];\n         if (w) newcol.width=w;\n         newcol.height=context.defaultpanedividerheight;\n         if (context.classnames.panedivider) newcol.className=context.classnames.panedivider;\n         if (context.explicitStyles.panedivider) newcol.style.cssText=context.explicitStyles.panedivider;\n         if (newcol) result.appendChild(newcol);\n         }\n      if (colpane<context.colpanes.length-1) {\n         newcol=document.createElement(\"td\");\n         newcol.width=context.defaultpanedividerwidth;\n         newcol.height=context.defaultpanedividerheight;\n         if (context.classnames.panedivider) newcol.className=context.classnames.panedivider;\n         if (context.explicitStyles.panedivider) newcol.style.cssText=context.explicitStyles.panedivider;\n         result.appendChild(newcol);\n         }\n      }\n   return result;\n   }\n\nSocialCalc.RenderColHeaders = function(context) {\n\n   var sheetobj=context.sheetobj;\n\n   var result=document.createElement(\"tr\");\n   var colnum, newcol;\n\n   if (!context.showRCHeaders) return null;\n\n   newcol=document.createElement(\"td\");\n   if (context.classnames) newcol.className=context.classnames.upperleft;\n   if (context.explicitStyles) newcol.style.cssText=context.explicitStyles.upperleft;\n   newcol.width=context.rownamewidth;\n   result.appendChild(newcol);\n\n   for (colpane=0; colpane<context.colpanes.length; colpane++) {\n      for (colnum=context.colpanes[colpane].first; colnum<=context.colpanes[colpane].last; colnum++) {\n         newcol=document.createElement(\"td\");\n         if (context.classnames) newcol.className=context.classnames.colname;\n         if (context.explicitStyles) newcol.style.cssText=context.explicitStyles.colname;\n\n         // If hidden column, display: none.\n         if (sheetobj.colattribs.hide[SocialCalc.rcColname(colnum)] == \"yes\") {\n            newcol.style.cssText += \";display:none\";\n            }\n\n         newcol.innerHTML=SocialCalc.rcColname(colnum);\n\n         // If neighbour is hidden, show an icon in this column.\n         if (colnum < context.colpanes[context.colpanes.length-1].last && sheetobj.colattribs.hide[SocialCalc.rcColname(colnum+1)] == \"yes\") {\n            var unhide = document.createElement(\"div\");\n            if (context.classnames) unhide.className=context.classnames.unhideleft;\n            if (context.explicitStyles) unhide.style.cssText=context.explicitStyles.unhideleft;\n            context.colunhideleft[colnum] = unhide;\n            newcol.appendChild(unhide);\n         }\n         if (colnum > 1 && sheetobj.colattribs.hide[SocialCalc.rcColname(colnum-1)] == \"yes\") {\n            unhide = document.createElement(\"div\");\n            if (context.classnames) unhide.className=context.classnames.unhideright;\n            if (context.explicitStyles) unhide.style.cssText=context.explicitStyles.unhideright;\n            context.colunhideright[colnum] = unhide;\n            newcol.appendChild(unhide);\n         }\n\n         // add resize bar\n         var resizeBar = document.createElement('span');\n         resizeBar.style.height = SocialCalc.Constants.defaultAssumedRowHeight + 'px';\n         resizeBar.className = context.classnames.colresizebar;\n         newcol.appendChild(resizeBar);\n\n         result.appendChild(newcol);\n         }\n      if (colpane<context.colpanes.length-1) {\n         newcol=document.createElement(\"td\");\n         newcol.width=context.defaultpanedividerwidth;\n         if (context.classnames.panedivider) newcol.className=context.classnames.panedivider;\n         if (context.explicitStyles.panedivider) newcol.style.cssText=context.explicitStyles.panedivider;\n         result.appendChild(newcol);\n         }\n      }\n   // eddy {\n//   if(context.formColNames != null) {\n//     for(var nodeIndex = 0;  nodeIndex < result.childNodes.length;  nodeIndex++ ) {\n//       var currentCol = result.childNodes[nodeIndex];\n//       if(context.formColNames[currentCol.innerText] != null) currentCol.innerText = context.formColNames[currentCol.innerText];\n//     }\n//   }\n   // }\n   return result;\n   }\n\nSocialCalc.RenderColGroup = function(context) {\n\n   var colpane, colnum, newcol, t;\n   var sheetobj=context.sheetobj;\n\n   var result=document.createElement(\"colgroup\");\n\n   if (context.showRCHeaders) {\n      newcol=document.createElement(\"col\");\n      newcol.width=context.rownamewidth;\n      result.appendChild(newcol);\n      }\n\n   for (colpane=0; colpane<context.colpanes.length; colpane++) {\n      for (colnum=context.colpanes[colpane].first; colnum<=context.colpanes[colpane].last; colnum++) {\n         newcol=document.createElement(\"col\");\n         if (sheetobj.colattribs.hide[SocialCalc.rcColname(colnum)] == \"yes\") {\n            newcol.width=\"1\";\n            }\n         else {\n            t = context.colwidth[colnum];\n            if (t) newcol.width=t;\n            result.appendChild(newcol);\n            }\n         }\n      if (colpane<context.colpanes.length-1) {\n         newcol=document.createElement(\"col\");\n         newcol.width=context.defaultpanedividerwidth;\n         result.appendChild(newcol);\n         }\n      }\n   return result;\n   }\n\nSocialCalc.RenderSizingRow = function(context) {\n\n   var colpane, colnum, newcell, t;\n   var sheetobj=context.sheetobj;\n\n   var result=document.createElement(\"tr\");\n\n   if (context.showRCHeaders) {\n      newcell=document.createElement(\"td\");\n      newcell.style.width=context.rownamewidth+\"px\";\n      newcell.height=\"1\";\n      result.appendChild(newcell);\n      }\n\n   for (colpane=0; colpane<context.colpanes.length; colpane++) {\n      for (colnum=context.colpanes[colpane].first; colnum<=context.colpanes[colpane].last; colnum++) {\n         newcell=document.createElement(\"td\");\n         if (sheetobj.colattribs.hide[SocialCalc.rcColname(colnum)] == \"yes\") {\n            newcell.width=\"1\";\n            }\n         else {\n            t = context.colwidth[colnum];\n            if (t) newcell.width=t;\n            }\n         newcell.height=\"1\";\n         result.appendChild(newcell);\n         }\n      if (colpane<context.colpanes.length-1) {\n         newcell=document.createElement(\"td\");\n         newcell.width=context.defaultpanedividerwidth;\n         newcell.height=\"1\";\n         result.appendChild(newcell);\n         }\n      }\n   return result;\n   }\n\nSocialCalc.RenderCell = function(context, rownum, colnum, rowpane, colpane, noElement, linkstyle) {\n\n   var sheetobj=context.sheetobj;\n\n   var num, t, result, span, stylename, cell, endcell, sheetattribs, scdefaults;\n   var stylestr=\"\";\n\n   rownum = rownum-0; // make sure a number\n   colnum = colnum-0;\n\n   var coord=SocialCalc.crToCoord(colnum, rownum);\n\n   if (context.cellskip[coord]) { // skip if within a span\n      if (context.CoordInPane(context.cellskip[coord], rowpane, colpane)) {\n         return null; // span starts in this pane -- so just skip\n         }\n      result=noElement ? SocialCalc.CreatePseudoElement() : document.createElement(\"td\"); // span start is scrolled away, so make a special cell\n      if (context.classnames.skippedcell) result.className=context.classnames.skippedcell;\n      if (context.explicitStyles.skippedcell) result.style.cssText=context.explicitStyles.skippedcell;\n      result.innerHTML=\"&nbsp;\"; // put something there so height is OK\n      // !!! Really need to add borders in case there isn't anything else shown in the pane to get height\n      return result;\n      }\n\n   result=noElement ? SocialCalc.CreatePseudoElement() : document.createElement(\"td\");\n\n   if (context.cellIDprefix) {\n      result.id = context.cellIDprefix+coord;\n      }\n\n   cell=sheetobj.cells[coord];\n\n   if (!cell) {\n      cell=new SocialCalc.Cell(coord);\n      }\n\n   sheetattribs=sheetobj.attribs;\n   scc=SocialCalc.Constants;\n\n   if (cell.colspan>1) {\n      span=1;\n      for (num=1; num<cell.colspan; num++) {\n          if (sheetobj.colattribs.hide[SocialCalc.rcColname(colnum+num)]!=\"yes\" &&\n                context.CellInPane(rownum, colnum+num, rowpane, colpane)) {\n             span++;\n             }\n          }\n      result.colSpan=span;\n      }\n\n   if (cell.rowspan>1) {\n      span=1;\n      for (num=1; num<cell.rowspan; num++) {\n          if (sheetobj.rowattribs.hide[(rownum+num)+\"\"]!=\"yes\" &&\n                context.CellInPane(rownum+num, colnum, rowpane, colpane))\n             span++;\n         }\n      result.rowSpan=span;\n      }\n\n   if (cell.displaystring==undefined || sheetobj.widgetsClean == false) { // cache the display value\n      cell.displaystring = SocialCalc.FormatValueForDisplay(sheetobj, cell.datavalue, coord, (linkstyle || context.defaultlinkstyle));\n      }\n\n   result.innerHTML = cell.displaystring;\n\n   num=cell.layout || sheetattribs.defaultlayout;\n   if (num && typeof(context.layouts[num]) !== \"undefined\") {\n      stylestr+=context.layouts[num]; // use precomputed layout with \"*\"'s filled in\n      }\n   else {\n      stylestr+=scc.defaultCellLayout;\n      }\n\n   num=cell.font || sheetattribs.defaultfont;\n   if (num && typeof(context.fonts[num]) !== \"undefined\") { // get expanded font strings in context\n      t = context.fonts[num]; // do each - plain \"font:\" style sets all sorts of other values, too (Safari font-stretch problem on cssText)\n      stylestr+=\"font-style:\"+t.style+\";font-weight:\"+t.weight+\";font-size:\"+t.size+\";font-family:\"+t.family+\";\";\n      }\n   else {\n      if (scc.defaultCellFontSize) {\n         stylestr+=\"font-size:\"+scc.defaultCellFontSize+\";\";\n         }\n      if (scc.defaultCellFontFamily) {\n         stylestr+=\"font-family:\"+scc.defaultCellFontFamily+\";\";\n         }\n      }\n\n   num=cell.color || sheetattribs.defaultcolor;\n   if (num && typeof(sheetobj.colors[num]) !== \"undefined\") stylestr+=\"color:\"+sheetobj.colors[num]+\";\";\n\n   num=cell.bgcolor || sheetattribs.defaultbgcolor;\n   if (num && typeof(sheetobj.colors[num]) !== \"undefined\") stylestr+=\"background-color:\"+sheetobj.colors[num]+\";\";\n\n   num=cell.cellformat;\n   if (num && typeof(sheetobj.cellformats[num]) !== \"undefined\") {\n      stylestr+=\"text-align:\"+sheetobj.cellformats[num]+\";\";\n      }\n   else {\n      t=cell.valuetype.charAt(0);\n      if (t==\"t\") {\n         num=sheetattribs.defaulttextformat;\n         if (num && typeof(sheetobj.cellformats[num]) !== \"undefined\") stylestr+=\"text-align:\"+sheetobj.cellformats[num]+\";\";\n         }\n      else if (t==\"n\") {\n         num=sheetattribs.defaultnontextformat;\n         if (num && typeof(sheetobj.cellformats[num]) !== \"undefined\") {\n            stylestr+=\"text-align:\"+sheetobj.cellformats[num]+\";\";\n            }\n         else {\n            stylestr+=\"text-align:right;\";\n            }\n         }\n      else stylestr+=\"text-align:left;\";\n      }\n\n   // get the end cell for border styling\n   if (cell.colspan > 1 || cell.rowspan > 1) {\n      endcell = sheetobj.cells[SocialCalc.crToCoord(colnum+(cell.colspan || 1)-1, rownum+(cell.rowspan || 1)-1)];\n      }\n\n   num=cell.bt;\n   if (num && typeof(sheetobj.borderstyles[num]) !== \"undefined\") stylestr+=\"border-top:\"+sheetobj.borderstyles[num]+\";\";\n\n   num=typeof(endcell) != \"undefined\" ? endcell.br : cell.br;\n   if (num && typeof(sheetobj.borderstyles[num]) !== \"undefined\") stylestr+=\"border-right:\"+sheetobj.borderstyles[num]+\";\";\n   else if (context.showGrid) {\n      if (context.CellInPane(rownum, colnum+(cell.colspan || 1), rowpane, colpane))\n         t=SocialCalc.crToCoord(colnum+(cell.colspan || 1), rownum);\n      else t=\"nomatch\";\n      if (context.cellskip[t]) t=context.cellskip[t];\n      if (!sheetobj.cells[t] || !sheetobj.cells[t].bl)\n         stylestr+=\"border-right:\"+context.gridCSS;\n      }\n\n   num=typeof(endcell) != \"undefined\" ? endcell.bb : cell.bb;\n   if (num && typeof(sheetobj.borderstyles[num]) !== \"undefined\") stylestr+=\"border-bottom:\"+sheetobj.borderstyles[num]+\";\";\n   else if (context.showGrid) {\n      if (context.CellInPane(rownum+(cell.rowspan || 1), colnum, rowpane, colpane))\n         t=SocialCalc.crToCoord(colnum, rownum+(cell.rowspan || 1));\n      else t=\"nomatch\";\n      if (context.cellskip[t]) t=context.cellskip[t];\n      if (!sheetobj.cells[t] || !sheetobj.cells[t].bt)\n         stylestr+=\"border-bottom:\"+context.gridCSS;\n      }\n\n   num=cell.bl;\n   if (num && typeof(sheetobj.borderstyles[num]) !== \"undefined\") stylestr+=\"border-left:\"+sheetobj.borderstyles[num]+\";\";\n\n   if (cell.comment) {\n      result.title = cell.comment;\n      if (context.showGrid) {\n         if (context.commentClassName) {\n            result.className = (result.className ? result.className+\" \" : \"\") + context.commentClassName;\n            }\n         stylestr+=context.commentCSS;\n         }\n      else {\n         if (context.commentNoGridClassName) {\n            result.className = (result.className ? result.className+\" \" : \"\") + context.commentNoGridClassName;\n            }\n         stylestr+=context.commentNoGridCSS;\n         }\n      }\n\n   if (cell.readonly) {\n      if (!cell.comment) {\n         result.title = context.readonlyComment;\n         }\n      if (context.showGrid) {\n         if (context.readonlyClassName) {\n            result.className = (result.className ? result.className+\" \" : \"\") + context.readonlyClassName;\n            }\n         stylestr+=context.readonlyCSS;\n         }\n      else {\n         if (context.readonlyNoGridClassName) {\n            result.className = (result.className ? result.className+\" \" : \"\") + context.readonlyNoGridClassName;\n            }\n         stylestr+=context.readonlyNoGridCSS;\n         }\n      }\n\n   result.style.cssText=stylestr;\n\n   //!!!!!!!!!\n   // NOTE: csss is not supported yet.\n   // csss needs to be parsed into pieces to override just the attributes specified, not all with assignment to cssText.\n   if (cell.cssc !== undefined) {\n      noElement ? (result.className = (result.className ? result.className + ' ' : '') + cell.cssc) : result.classList.add(cell.cssc);\n   }\n\n   t = context.highlights[coord];\n   if (t) { // this is a highlit cell: Override style appropriately\n      if (t==\"cursor\") t += context.cursorsuffix; // cursor can take alternative forms\n      if (context.highlightTypes[t].className) {\n         result.className = (result.className ? result.className+\" \" : \"\") + context.highlightTypes[t].className;\n         }\n      SocialCalc.setStyles(result, context.highlightTypes[t].style);\n      }\n\n   // If hidden column, display: none.\n   if (sheetobj.colattribs.hide[SocialCalc.rcColname(colnum)] == \"yes\") {\n      result.style.cssText+=\";display:none\";\n      }\n\n   // If hidden row, display: none.\n   if (sheetobj.rowattribs.hide[rownum] == \"yes\") {\n      result.style.cssText+=\";display:none\";\n      }\n\n   return result;\n   }\n\nSocialCalc.CoordInPane = function(context, coord, rowpane, colpane) {\n   var coordToCR = context.coordToCR[coord];\n   if (!coordToCR || !coordToCR.row || !coordToCR.col) throw \"Bad coordToCR for \"+coord;\n   return context.CellInPane(coordToCR.row, coordToCR.col, rowpane, colpane);\n   }\n\n\nSocialCalc.CellInPane = function(context, row, col, rowpane, colpane) {\n   var panerowlimits = context.rowpanes[rowpane];\n   var panecollimits = context.colpanes[colpane];\n   if (!panerowlimits || !panecollimits) throw \"CellInPane called with unknown panes \"+rowpane+\"/\"+colpane;\n   if (row < panerowlimits.first || row > panerowlimits.last) return false;\n   if (col < panecollimits.first || col > panecollimits.last) return false;\n   return true;\n   }\n\nSocialCalc.CreatePseudoElement = function() {\n   return {style:{cssText:\"\"}, innerHTML: \"\", className: \"\"};\n   }\n\n\n// *************************************\n//\n// Misc. functions:\n//\n// *************************************\n\nSocialCalc.rcColname = function(c) {\n   if (c > 702) c = 702; // maximum number of columns - ZZ\n   if (c < 1) c = 1;\n   var collow = (c - 1) % 26 + 65;\n   var colhigh = Math.floor((c - 1) / 26);\n   if (colhigh)\n      return String.fromCharCode(colhigh + 64) + String.fromCharCode(collow);\n   else\n      return String.fromCharCode(collow);\n   }\n\nSocialCalc.letters = [\"A\",\"B\",\"C\",\"D\",\"E\",\"F\",\"G\",\"H\",\"I\",\"J\",\"K\",\"L\",\"M\",\n                      \"N\",\"O\",\"P\",\"Q\",\"R\",\"S\",\"T\",\"U\",\"V\",\"W\",\"X\",\"Y\",\"Z\"];\n\nSocialCalc.crToCoord = function(c, r) {\n   var result;\n   if (c < 1) c = 1;\n   if (c > 702) c = 702; // maximum number of columns - ZZ\n   if (r < 1) r = 1;\n   var collow = (c - 1) % 26;\n   var colhigh = Math.floor((c - 1) / 26);\n   if (colhigh)\n      result = SocialCalc.letters[colhigh-1] + SocialCalc.letters[collow] + r;\n   else\n      result = SocialCalc.letters[collow] + r;\n   return result;\n   }\n\nSocialCalc.coordToCol = {}; // too expensive to set in crToCoord since that is called so many times\nSocialCalc.coordToRow = {};\n\nSocialCalc.coordToCr = function(cr) {\n   var c, i, ch;\n   var r = SocialCalc.coordToRow[cr];\n   if (r) return {row: r, col: SocialCalc.coordToCol[cr]};\n   c=0;r=0;\n   for (i=0; i<cr.length; i++) { // this was faster than using regexes; assumes well-formed\n      ch = cr.charCodeAt(i);\n      if (ch==36) ; // skip $'s\n      else if (ch<=57) r = 10*r + ch-48;\n      else if (ch>=97) c = 26*c + ch-96;\n      else if (ch>=65) c = 26*c + ch-64;\n      }\n   SocialCalc.coordToCol[cr] = c;\n   SocialCalc.coordToRow[cr] = r;\n   return {row: r, col: c};\n\n   }\n\nSocialCalc.ParseRange = function(range) {\n   var pos, cr, cr1, cr2;\n   if (!range) range = \"A1:A1\"; // error return, hopefully benign\n   range = range.toUpperCase();\n   pos = range.indexOf(\":\");\n   if (pos>=0) {\n      cr = range.substring(0,pos);\n      cr1 = SocialCalc.coordToCr(cr);\n      cr1.coord = cr;\n      cr = range.substring(pos+1);\n      cr2 = SocialCalc.coordToCr(cr);\n      cr2.coord = cr;\n      }\n   else {\n      cr1 = SocialCalc.coordToCr(range);\n      cr1.coord = range;\n      cr2 = SocialCalc.coordToCr(range);\n      cr2.coord = range;\n      }\n   return {cr1: cr1, cr2: cr2};\n   }\n\nSocialCalc.decodeFromSave = function(s) {\n   if (typeof s != \"string\") return s;\n   if (s.indexOf(\"\\\\\")==-1) return s; // for performace reasons: replace nothing takes up time\n   var r=s.replace(/\\\\c/g,\":\");\n   r=r.replace(/\\\\n/g,\"\\n\");\n   return r.replace(/\\\\b/g,\"\\\\\");\n   }\n\nSocialCalc.decodeFromAjax = function(s) {\n   if (typeof s != \"string\") return s;\n   if (s.indexOf(\"\\\\\")==-1) return s; // for performace reasons: replace nothing takes up time\n   var r=s.replace(/\\\\c/g,\":\");\n   r=r.replace(/\\\\n/g,\"\\n\");\n   r=r.replace(/\\\\e/g,\"]]\");\n   return r.replace(/\\\\b/g,\"\\\\\");\n   }\n\nSocialCalc.encodeForSave = function(s) {\n   if (typeof s != \"string\") return s;\n   if (s.indexOf(\"\\\\\")!=-1) // for performace reasons: replace nothing takes up time\n      s=s.replace(/\\\\/g,\"\\\\b\");\n   if (s.indexOf(\":\")!=-1)\n      s=s.replace(/:/g,\"\\\\c\");\n   if (s.indexOf(\"\\n\")!=-1)\n      s=s.replace(/\\n/g,\"\\\\n\");\n   return s;\n   }\n\n//\n// Returns estring where &, <, >, \" are HTML escaped\n//\nSocialCalc.special_chars = function(string) {\n\n   if (/[&<>\"]/.test(string)) { // only do \"slow\" replaces if something to replace\n      string = string.replace(/&/g, \"&amp;\");\n      string = string.replace(/</g, \"&lt;\");\n      string = string.replace(/>/g, \"&gt;\");\n      string = string.replace(/\"/g, \"&quot;\");\n      }\n   return string;\n\n   }\n\nSocialCalc.Lookup = function(value, list) {\n\n   for (i=0; i<list.length; i++) {\n      if (list[i] > value) {\n         if (i>0) return i-1;\n         else return null;\n         }\n      }\n   return list.length-1; // if all smaller, matches last\n\n   }\n\n//\n// setStyles(element, cssText)\n//\n// Takes a pseudo style string (e.g., text-align must be textAlign) and sets\n// the element's style value for each style name listed (leaving others unchanged).\n// OK to call with null cssText.\n//\n\nSocialCalc.setStyles = function (element, cssText) {\n\n   var parts, part, pos, name, value;\n\n   if (!cssText) return;\n\n   parts = cssText.split(\";\");\n   for (part=0; part<parts.length; part++) {\n      pos = parts[part].indexOf(\":\"); // find first colon (could be one in url)\n      if (pos != -1) {\n         name = parts[part].substring(0, pos);\n         value = parts[part].substring(pos+1);\n         if (name && value) { // if non-null name and value, set style\n            element.style[name] = value;\n            }\n         }\n//      namevalue = parts[part].split(\":\");\n//      if (namevalue[0]) element.style[namevalue[0]] = namevalue[1];\n      }\n\n   }\n\n//\n// GetViewportInfo() - returns object with viewport width and height, and scroll offsets\n//\n// Flanagan, JavaScript, 5th Edition, page 276\n//\n\nSocialCalc.GetViewportInfo = function () {\n\n   var result = {};\n\n   if (window.innerWidth) { // all but IE\n      result.width = window.innerWidth;\n      result.height = window.innerHeight;\n      result.horizontalScroll = window.pageXOffset;\n      result.verticalScroll = window.pageYOffset;\n      }\n   else {\n      if (document.documentElement && document.documentElement.clientWidth) {\n         result.width = document.documentElement.clientWidth;\n         result.height = document.documentElement.clientHeight;\n         result.horizontalScroll = document.documentElement.scrollLeft;\n         result.verticalScroll = document.documentElement.scrollTop;\n         }\n      else if (document.body.clientWidth) {\n         result.width = document.body.clientWidth;\n         result.height = document.body.clientHeight;\n         result.horizontalScroll = document.body.scrollLeft;\n         result.verticalScroll = document.body.scrollTop;\n         }\n      }\n\n   return result;\n   }\n\n//\n// GetElementPosition(element) - returns object with left and top position of the element in the document\n//\n// Goodman's JavaScript & DHTML Cookbook, 2nd Edition, page 415\n//\n\nSocialCalc.GetElementPosition = function (element) {\n\n   var offsetLeft = 0;\n   var offsetTop = 0;\n   while (element) {\n      if (SocialCalc.GetComputedStyle(element,'position')=='relative') break;\n      offsetLeft+=element.offsetLeft;\n      offsetTop+=element.offsetTop;\n      element=element.offsetParent;\n      }\n   return {left:offsetLeft, top:offsetTop};\n\n   }\n\n//\n// GetElementPositionWithScroll(element) - returns object with left and top position of the element in the document\n//\n\nSocialCalc.GetElementPositionWithScroll = function (element) {\n\n   var rect = element.getBoundingClientRect();\n   return {\n      left:rect.left,\n      right:rect.right,\n      top:rect.top,\n      bottom:rect.bottom,\n      width:rect.width?rect.width:rect.right-rect.left,\n      height:rect.height?rect.height:rect.bottom-rect.top\n      };\n\n   }\n\n//\n// GetElementFixedParent(element) - checks whether element has a parent with position:fixed\n//\n\nSocialCalc.GetElementFixedParent = function(element) {\n\n   while (element) {\n      if (element.tagName==\"HTML\") break;\n      if (SocialCalc.GetComputedStyle(element,'position')=='fixed') return element;\n      element=element.parentNode;\n      }\n      return false;\n\n   }\n\n//\n// GetComputedStyle(element, style) - returns computed style value\n//\n// http://blog.stchur.com/2006/06/21/css-computed-style/\n//\n\nSocialCalc.GetComputedStyle = function (element, style) {\n\n   var computedStyle;\n   if (typeof element.currentStyle != 'undefined') { // IE\n      computedStyle = element.currentStyle;\n      }\n   else {\n      computedStyle = document.defaultView.getComputedStyle(element, null);\n      }\n   return computedStyle[style];\n\n   }\n\n//\n// LookupElement(element, array) - returns array element which is an object with \"element\" of element\n//\n\nSocialCalc.LookupElement = function (element, array) {\n\n   var i;\n   for (i=0; i<array.length; i++) {\n      if (array[i].element == element) return array[i];\n      }\n   return null;\n\n   }\n\n//\n// AssignID(obj, element, id) - Optionally assigns an ID with a prefix to the element\n//\n\nSocialCalc.AssignID = function (obj, element, id) {\n\n   if (obj.idPrefix) { // Object must have a non-empty idPrefix attribute\n      element.id = obj.idPrefix + id;\n      }\n\n   }\n\n//\n// SocialCalc.GetCellContents(sheetobj, coord)\n//\n// Returns the contents (value, formula, constant, etc.) of a cell\n// with appropriate prefix (\"'\", \"=\", etc.)\n//\n\nSocialCalc.GetCellContents = function(sheetobj, coord) {\n\n   var result = \"\";\n   var cellobj = sheetobj.cells[coord];\n   if (cellobj) {\n      switch (cellobj.datatype) {\n         case \"v\":\n            result = cellobj.datavalue+\"\";\n            break;\n         case \"t\":\n            result = \"'\"+cellobj.datavalue;\n            break;\n         case \"f\":\n            result = \"=\"+cellobj.formula;\n            break;\n         case \"c\":\n            result = cellobj.formula;\n            break;\n         default:\n            break;\n         }\n      }\n\n   return result;\n\n   }\n\n//\n// Routines translated from the SocialCalc 1.1.0 Perl code:\n//\n// (Makes use of the FormatNumber JavaScript code translated from the Perl.)\n//\n\n//\n// displayvalue = FormatValueForDisplay(sheetobj, value, cr, linkstyle)\n//\n// Returns a string, in HTML, for the contents of a cell.\n//\n// The value is a either numeric or text, the cr is the coord of the cell\n// (its cell properties are used to determine formatting), and linkstyle\n// is a value passed to wiki-text expansion routines specifying the\n// purpose of the rendering so, for example, links can be rendered differently\n// during edit than with plain HTML.\n//\n\nSocialCalc.FormatValueForDisplay = function(sheetobj, value, cr, linkstyle) {\n\n   var valueformat, has_parens, has_commas, valuetype, valuesubtype;\n   var displayvalue;\n\n   var sheetattribs=sheetobj.attribs;\n   var scc=SocialCalc.Constants;\n\n   var cell=sheetobj.cells[cr];\n\n   if (!cell) { // get an empty cell if not there\n      cell=new SocialCalc.Cell(cr);\n      }\n\n   displayvalue = value;\n\n   valuetype = cell.valuetype || \"\"; // get type of value to determine formatting\n   valuesubtype = valuetype.substring(1);\n\n   // eddy setup display cell {\n   valueinputwidget = valuetype.charAt(1);\n   var formula_name= valuetype.substring(2);\n   var html_display_value = null;\n   var html_formated_value = null;\n   // }\n\n   valuetype = valuetype.charAt(0);\n\n\n   if (cell.errors || valuetype==\"e\") {\n      displayvalue = cell.errors || valuesubtype || \"Error in cell\";\n      return displayvalue;\n      }\n\n   if (valuetype==\"t\") {\n      valueformat = sheetobj.valueformats[cell.textvalueformat-0] || sheetobj.valueformats[sheetattribs.defaulttextvalueformat-0] || \"\";\n      if (valueformat==\"formula\") {\n         if (cell.datatype==\"f\") {\n            displayvalue = SocialCalc.special_chars(\"=\"+cell.formula) || \"&nbsp;\";\n            }\n         else if (cell.datatype==\"c\") {\n            displayvalue = SocialCalc.special_chars(\"'\"+cell.formula) || \"&nbsp;\";\n            }\n         else {\n            displayvalue = SocialCalc.special_chars(\"'\"+displayvalue) || \"&nbsp;\";\n            }\n         return displayvalue;\n         }\n\t  var html_display_value = displayvalue; // eddy\n      displayvalue = SocialCalc.format_text_for_display(displayvalue, cell.valuetype, valueformat, sheetobj, linkstyle, cell.nontextvalueformat);\n\t  var html_formated_value = displayvalue; // eddy\n\n      }\n\n   else if (valuetype==\"n\") {\n      valueformat = cell.nontextvalueformat;\n      if (valueformat==null || valueformat==\"\") { //\n         valueformat = sheetattribs.defaultnontextvalueformat;\n         }\n      valueformat = sheetobj.valueformats[valueformat-0];\n      if (valueformat==null || valueformat==\"none\") {\n         valueformat = \"\";\n         }\n\n\n      if (valueformat==\"formula\") {\n         if (cell.datatype==\"f\") {\n            displayvalue = SocialCalc.special_chars(\"=\"+cell.formula) || \"&nbsp;\";\n            }\n         else if (cell.datatype==\"c\") {\n            displayvalue = SocialCalc.special_chars(\"'\"+cell.formula) || \"&nbsp;\";\n            }\n         else {\n            displayvalue = SocialCalc.special_chars(\"'\"+displayvalue) || \"&nbsp;\";\n            }\n         return displayvalue;\n         }\n      else if (valueformat==\"forcetext\") {\n         if (cell.datatype==\"f\") {\n            displayvalue = SocialCalc.special_chars(\"=\"+cell.formula) || \"&nbsp;\";\n            }\n         else if (cell.datatype==\"c\") {\n            displayvalue = SocialCalc.special_chars(cell.formula) || \"&nbsp;\";\n            }\n         else {\n            displayvalue = SocialCalc.special_chars(displayvalue) || \"&nbsp;\";\n            }\n         return displayvalue;\n         }\n\n\t  var html_display_value = displayvalue; // eddy\n      displayvalue = SocialCalc.format_number_for_display(displayvalue, cell.valuetype, valueformat);\n\t  var html_formated_value = displayvalue; // eddy\n\n      }\n   else { // unknown type - probably blank\n      displayvalue = \"&nbsp;\";\n      }\n\n\n   // eddy display cell HTML {\n   if(valueinputwidget==\"i\" && html_display_value!=null && html_formated_value!=null) {\n     var parameters = sheetobj.ioParameterList[cr];\n\n\t   var formula_details = SocialCalc.Formula.FunctionList[formula_name];\n//\t var ecell = SocialCalc.GetSpreadsheetControlObject().editor.ecell; // check if widget has focus\n//\t SocialCalc.GetSpreadsheetControlObject().debug.push({formula_name:formula_name});\n\t\t if( formula_details) {\n\t\t\t var cell_html = formula_details[5];\n\t\t\t // var cell_html = \"<button type='button' onclick=\\\"SocialCalc.TriggerIoAction('<%=cell_reference%>');\\\"><%=display_value%></button>\";\n\n\t\t\t var checkedValue = (html_display_value == 0) ? \"\" : \"checked\"; // for checkbox\n\t\t\t cell_html = cell_html.replace(/<%=checked%>/g, checkedValue);\n\t\t\t cell_html = cell_html.replace(/<%=formated_value%>/g, html_formated_value);\n       cell_html = cell_html.replace(/<%=display_value%>/g, html_display_value);\n       // replace widget HTML with parameter\n       // FOR each parameter\n       var parameterValue; // set to value of param for if coord, value of cell\n       if(parameters) {\n         // add forumla parameters to widget html\n         for(var index=0; index < parameters.length; index ++) {\n           // IF coord THEN replace with cell value\n           if(parameters[index].type == 'coord') {\n             parameterValue = sheetobj.GetAssuredCell(parameters[index].value).datavalue;\n           } else {\n             // ELSE with param value\n             parameterValue = parameters[index].value;\n           }\n           var paramRegExp = new RegExp(\"<%=parameter\"+index+\"_value%>\",'g');\n           cell_html = cell_html.replace(paramRegExp, parameterValue);\n         }\n         if(parameters.html) { // add html created in formula1.js to widget\n           for(var htmlIndex=0; htmlIndex < parameters.html.length; htmlIndex ++) {\n             var paramRegExp = new RegExp(\"<%=html\"+htmlIndex+\"_value%>\",'g');\n             cell_html = cell_html.replace(paramRegExp, parameters.html[htmlIndex]);\n           }\n         }\n         if(parameters.css) { // add style(css) formula css value, if any - e.g. =textbox(\"\")+style(\"margin: 8px 0;\")\n           // * RegEx Unit Test **  https://regex101.com/r/oV7wU5/2\n           cell_html = cell_html.replace(/^(<\\w+)(\\W)/, \"$1 style='\"+parameters.css+ \"'$2\");\n         }\n\n       }\n\n\t\t\t return cell_html.replace(/<%=cell_reference%>/g, cr);\n\t\t\t }\n\t\t return \"error:Widget HTML missing\";\n\t }\n   // }\n\n\n\n   return displayvalue;\n\n   }\n\n\n\n//\n// displayvalue = format_text_for_display(rawvalue, valuetype, valueformat, sheetobj, linkstyle, nontextvalueformat)\n//\n\nSocialCalc.format_text_for_display = function(rawvalue, valuetype, valueformat, sheetobj, linkstyle, nontextvalueformat) {\n\n   var valueformat, valuesubtype, dvsc, dvue, textval;\n   var displayvalue;\n\n   valuesubtype = valuetype.substring(1);\n\n   displayvalue = rawvalue;\n\n   if (valueformat==\"none\" || valueformat==null) valueformat=\"\";\n   if (!/^(text-|custom|hidden)/.test(valueformat)) valueformat=\"\";\n   if (valueformat==\"\" || valueformat==\"General\") { // determine format from type\n      if (valuesubtype==\"h\") valueformat=\"text-html\";\n      if (valuesubtype==\"w\" || valuesubtype==\"r\") valueformat=\"text-wiki\";\n      if (valuesubtype==\"l\") valueformat=\"text-link\";\n      if (!valuesubtype) valueformat=\"text-plain\";\n      }\n   if (valueformat==\"text-html\") { // HTML - output as it as is\n      ;\n      }\n   else if (SocialCalc.Callbacks.expand_wiki && /^text-wiki/.test(valueformat)) { // do general wiki markup\n      displayvalue = SocialCalc.Callbacks.expand_wiki(displayvalue, sheetobj, linkstyle, valueformat);\n      }\n   else if (valueformat==\"text-wiki\") { // wiki text\n      displayvalue = (SocialCalc.Callbacks.expand_markup\n                      && SocialCalc.Callbacks.expand_markup(displayvalue, sheetobj, linkstyle)) || // do old wiki markup\n                     SocialCalc.special_chars(\"wiki-text:\"+displayvalue);\n      }\n   else if (valueformat==\"text-url\") { // text is a URL for a link\n      dvsc = SocialCalc.special_chars(displayvalue);\n      dvue = encodeURI(displayvalue);\n      displayvalue = '<a href=\"'+dvue+'\">'+dvsc+'</a>';\n      }\n   else if (valueformat==\"text-link\") { // more extensive link capabilities for regular web links\n      displayvalue = SocialCalc.expand_text_link(displayvalue, sheetobj, linkstyle, valueformat);\n      }\n   else if (valueformat==\"text-image\") { // text is a URL for an image\n      dvue = encodeURI(displayvalue);\n      displayvalue = '<img src=\"'+dvue+'\">';\n      }\n   else if (valueformat.substring(0,12)==\"text-custom:\") { // construct a custom text format: @r = text raw, @s = special chars, @u = url encoded\n      dvsc = SocialCalc.special_chars(displayvalue); // do special chars\n      dvsc = dvsc.replace(/  /g, \"&nbsp; \"); // keep multiple spaces\n      dvsc = dvsc.replace(/\\n/g, \"<br>\");  // keep line breaks\n      dvue = encodeURI(displayvalue);\n      textval={};\n      textval.r = displayvalue;\n      textval.s = dvsc;\n      textval.u = dvue;\n      displayvalue = valueformat.substring(12); // remove \"text-custom:\"\n      displayvalue = displayvalue.replace(/@(r|s|u)/g, function(a,c){return textval[c];}); // replace placeholders\n      }\n   else if (valueformat.substring(0,6)==\"custom\") { // custom\n      displayvalue = SocialCalc.special_chars(displayvalue); // do special chars\n      displayvalue = displayvalue.replace(/  /g, \"&nbsp; \"); // keep multiple spaces\n      displayvalue = displayvalue.replace(/\\n/g, \"<br>\"); // keep line breaks\n      displayvalue += \" (custom format)\";\n      }\n   else if (valueformat==\"hidden\") {\n      displayvalue = \"&nbsp;\";\n      }\n   else if (nontextvalueformat != null && nontextvalueformat != \"\" && sheetobj.valueformats[nontextvalueformat-0] != \"none\" && sheetobj.valueformats[nontextvalueformat-0] != \"\" ) {\n      valueformat = sheetobj.valueformats[nontextvalueformat];\n      displayvalue = SocialCalc.format_number_for_display(rawvalue, valuetype, valueformat);\n      }\n   else { // plain text\n      displayvalue = SocialCalc.special_chars(displayvalue); // do special chars\n      displayvalue = displayvalue.replace(/  /g, \"&nbsp; \"); // keep multiple spaces\n      displayvalue = displayvalue.replace(/\\n/g, \"<br>\"); // keep line breaks\n      }\n\n   return displayvalue;\n\n   }\n\n\n//\n// displayvalue = format_number_for_display(rawvalue, valuetype, valueformat)\n//\n\nSocialCalc.format_number_for_display = function(rawvalue, valuetype, valueformat) {\n\n   var value, valuesubtype;\n   var scc = SocialCalc.Constants;\n\n   value = rawvalue-0;\n\n   valuesubtype = valuetype.substring(1);\n\n   if (valueformat==\"Auto\" || valueformat==\"\") { // cases with default format\n      if (valuesubtype==\"%\") { // will display a % character\n         valueformat = scc.defaultFormatp;\n         }\n      else if (valuesubtype=='$') {\n         valueformat = scc.defaultFormatc;\n         }\n      else if (valuesubtype=='dt') {\n         valueformat = scc.defaultFormatdt;\n         }\n      else if (valuesubtype=='d') {\n         valueformat = scc.defaultFormatd;\n         }\n      else if (valuesubtype=='t') {\n         valueformat = scc.defaultFormatt;\n         }\n      else if (valuesubtype=='l') {\n         valueformat = 'logical';\n         }\n      else {\n         valueformat = \"General\";\n         }\n      }\n\n   if (valueformat==\"logical\") { // do logical format\n      return value ? scc.defaultDisplayTRUE : scc.defaultDisplayFALSE;\n      }\n\n   if (valueformat==\"hidden\") { // do hidden format\n      return \"&nbsp;\";\n      }\n\n   // Use format\n\n   return SocialCalc.FormatNumber.formatNumberWithFormat(rawvalue, valueformat, \"\");\n\n   }\n\n//\n// valueinfo = DetermineValueType(rawvalue)\n//\n// Takes a value and looks for special formatting like $, %, numbers, etc.\n// Returns the value as a number or string and the type as {value: value, type: type}.\n// Tries to follow the spec for spreadsheet function VALUE(v).\n//\n\nSocialCalc.DetermineValueType = function(rawvalue) {\n\n   var value = rawvalue + \"\";\n   var type = \"t\";\n   var tvalue, matches, year, hour, minute, second, denom, num, intgr, constr;\n\n   tvalue = value.replace(/^\\s+/, \"\"); // remove leading and trailing blanks\n   tvalue = tvalue.replace(/\\s+$/, \"\");\n\n   if (value.length==0) {\n      type = \"\";\n      }\n   else if (value.match(/^\\s+$/)) { // just blanks\n      ; // leave type \"t\"\n      }\n   else if (tvalue.match(/^[-+]?\\d*(?:\\.)?\\d*(?:[eE][-+]?\\d+)?$/)) { // general number, including E\n      value = tvalue - 0; // try converting to number\n      if (isNaN(value)) { // leave alone - catches things like plain \"-\"\n         value = rawvalue + \"\";\n         }\n      else {\n         type = \"n\";\n         }\n      }\n   else if (tvalue.match(/^[-+]?\\d*(?:\\.)?\\d*\\s*%$/)) { // percent form: 15.1%\n      value = (tvalue.slice(0, -1) - 0) / 100; // convert and scale\n      type = \"n%\";\n      }\n   else if (tvalue.match(/^[-+]?\\$\\s*\\d*(?:\\.)?\\d*\\s*$/) && tvalue.match(/\\d/)) { // $ format: $1.49\n      value = tvalue.replace(/\\$/, \"\") - 0;\n      type = \"n$\";\n      }\n   else if (tvalue.match(/^[-+]?(\\d*,\\d*)+(?:\\.)?\\d*$/)) { // number format ignoring commas: 1,234.49\n      value = tvalue.replace(/,/g, \"\") - 0;\n      type = \"n\";\n      }\n   else if (tvalue.match(/^[-+]?(\\d*,\\d*)+(?:\\.)?\\d*\\s*%$/)) { // % with commas: 1,234.49%\n      value = (tvalue.replace(/[%,]/g, \"\") - 0) / 100;\n      type = \"n%\";\n      }\n   else if (tvalue.match(/^[-+]?\\$\\s*(\\d*,\\d*)+(?:\\.)?\\d*$/) && tvalue.match(/\\d/)) { // $ and commas: $1,234.49\n      value = tvalue.replace(/[\\$,]/g, \"\") - 0;\n      type = \"n$\";\n      }\n   else if (matches=value.match(/^(\\d{1,2})[\\/\\-](\\d{1,2})[\\/\\-](\\d{1,4})\\s*$/)) { // MM-DD-YYYY, MM/DD/YYYY\n      year = matches[3] - 0;\n      year = year < 1000 ? year + 2000 : year;\n      value = ((navigator.language).indexOf(\"fr\") === 0)  ? (SocialCalc.FormatNumber.convert_date_gregorian_to_julian(year, matches[2]-0, matches[1]-0)-2415019) : (SocialCalc.FormatNumber.convert_date_gregorian_to_julian(year, matches[1]-0, matches[2]-0)-2415019);\n      type = \"nd\";\n      }\n   else if (matches=value.match(/^(\\d{4})[\\/\\-](\\d{1,2})[\\/\\-](\\d{1,2})\\s*$/)) { // YYYY-MM-DD, YYYY/MM/DD\n      year = matches[1]-0;\n      year = year < 1000 ? year + 2000 : year;\n      value = SocialCalc.FormatNumber.convert_date_gregorian_to_julian(year, matches[2]-0, matches[3]-0)-2415019;\n      type = \"nd\";\n      }\n   else if (matches=value.match(/^(\\d{4})[\\/\\-](\\d{1,2})[\\/\\-](\\d{1,2}) (\\d{1,2}):(\\d{1,2})\\s*$/)) { // YYYY-MM-DD, YYYY/MM/DD HH:MM\n     // eddy added YYYY-MM-DD, YYYY/MM/DD HH:MM\n     year = matches[1]-0;\n     year = year < 1000 ? year + 2000 : year;\n     hour = matches[4]-0;\n     minute = matches[5]-0;\n     value = SocialCalc.FormatNumber.convert_date_gregorian_to_julian(year, matches[2]-0, matches[3]-0)-2415019;\n     type = \"nd\";\n     if (hour < 24 && minute < 60) {\n       value += hour/24 + minute/(24*60);\n       type = \"ndt\";\n       }\n     }\n   else if (matches=value.match(/^(\\d{4})[\\/\\-](\\d{1,2})[\\/\\-](\\d{1,2}) (\\d{1,2}):(\\d{1,2}):(\\d{1,2})\\s*$/)) { // YYYY-MM-DD, YYYY/MM/DD HH:MM:SS\n     // eddy added YYYY-MM-DD, YYYY/MM/DD HH:MM:SS\n     year = matches[1]-0;\n     year = year < 1000 ? year + 2000 : year;\n     hour = matches[4]-0;\n     minute = matches[5]-0;\n     second = matches[6]-0;\n     value = SocialCalc.FormatNumber.convert_date_gregorian_to_julian(year, matches[2]-0, matches[3]-0)-2415019;\n     type = \"nd\";\n     if (hour < 24 && minute < 60 && second < 60) {\n       value += hour/24 + minute/(24*60) + second/(24*60*60);\n       type = \"ndt\";\n       }\n     }\n   else if (matches=value.match(/^(\\d{1,2}):(\\d{1,2})\\s*$/)) { // HH:MM\n      hour = matches[1]-0;\n      minute = matches[2]-0;\n      if (hour < 24 && minute < 60) {\n         value = hour/24 + minute/(24*60);\n         type = \"nt\";\n         }\n      }\n   else if (matches=value.match(/^(\\d{1,2}):(\\d{1,2}):(\\d{1,2})\\s*$/)) { // HH:MM:SS\n      hour = matches[1]-0;\n      minute = matches[2]-0;\n      second = matches[3]-0;\n      if (hour < 24 && minute < 60 && second < 60) {\n         value = hour/24 + minute/(24*60) + second/(24*60*60);\n         type = \"nt\";\n         }\n      }\n   else if (matches=value.match(/^\\s*([-+]?\\d+) (\\d+)\\/(\\d+)\\s*$/)) { // 1 1/2\n      intgr = matches[1]-0;\n      num = matches[2]-0;\n      denom = matches[3]-0;\n      if (denom && denom > 0) {\n         value = intgr + (intgr < 0 ? -num/denom : num/denom);\n         type = \"n\";\n         }\n      }\n   else if (constr=SocialCalc.InputConstants[value.toUpperCase()]) { // special constants, like \"false\" and #N/A\n      num = constr.indexOf(\",\");\n      value = constr.substring(0,num)-0;\n      type = constr.substring(num+1);\n      }\n   else if (tvalue.length > 7 && tvalue.substring(0,7).toLowerCase()==\"http://\") { // URL\n      value = tvalue;\n      type = \"tl\";\n      }\n   else if (tvalue.match(/<([A-Z][A-Z0-9]*)\\b[^>]*>[\\s\\S]*?<\\/\\1>/i)) { // HTML\n      value = tvalue;\n      type = \"th\";\n      }\n\n   return {value: value, type: type};\n\n   }\n\nSocialCalc.InputConstants = { // strings that turn into constants for SocialCalc.DetermineValueType\n      \"TRUE\": \"1,nl\", \"FALSE\": \"0,nl\", \"#N/A\": \"0,e#N/A\", \"#NULL!\": \"0,e#NULL!\", \"#NUM!\": \"0,e#NUM!\",\n      \"#DIV/0!\": \"0,e#DIV/0!\", \"#VALUE!\": \"0,e#VALUE!\", \"#REF!\": \"0,e#REF!\", \"#NAME?\": \"0,e#NAME?\"};\n\n//\n// result = default_expand_markup(displayvalue, sheetobj, linkstyle)\n//\n// Processes wiki-text -- this is a placeholder.\n// Reference to here in SocialCalc.expand_markup should be replaced by application-specific routine.\n//\n\nSocialCalc.default_expand_markup = function(displayvalue, sheetobj, linkstyle) {\n\n   var result = displayvalue;\n\n   result = SocialCalc.special_chars(result); // do special chars\n   result = result.replace(/  /g, \"&nbsp; \"); // keep multiple spaces\n   result = result.replace(/\\n/g, \"<br>\"); // keep line breaks\n\n   return result; // do very little by default\n\n   result = result.replace(/('*)'''(.*?)'''/g, \"$1<b>$2<\\/b>\"); // Wiki-style bold/italics\n   result = result.replace(/''(.*?)''/g, \"<i>$1<\\/i>\");\n\n   return result;\n\n   }\n\n\n//\n// result = SocialCalc.expand_text_link(displayvalue, sheetobj, linkstyle, valueformat)\n//\n// Parses link text (URL, descriptions, pagenames, workspace names) and returns HTML\n//\n\nSocialCalc.expand_text_link = function(displayvalue, sheetobj, linkstyle, valueformat) {\n\n   var desc, tb, str;\n\n   var scc = SocialCalc.Constants;\n\n   var url = \"\";\n   var parts = SocialCalc.ParseCellLinkText(displayvalue+\"\");\n\n   if (parts.desc) {\n      desc = SocialCalc.special_chars(parts.desc);\n      }\n   else {\n      desc = parts.pagename ? scc.defaultPageLinkFormatString : scc.defaultLinkFormatString;\n      }\n\n   if (displayvalue.length > 7 && displayvalue.substring(0,7).toLowerCase()==\"http://\"\n      && displayvalue.charAt(displayvalue.length-1)!=\">\") {\n      desc = desc.substring(7); // remove http:// unless explicit\n      }\n\n   tb = (parts.newwin || !linkstyle) ? ' target=\"_blank\"' : \"\";\n\n   if (parts.pagename) {\n      if (SocialCalc.Callbacks.MakePageLink) {\n         url = SocialCalc.Callbacks.MakePageLink(parts.pagename, parts.workspacename, linkstyle, valueformat);\n         }\n//      else if (parts.workspace) {\n//         url = \"/\" + encodeURI(parts.workspace) + \"/\" + encodeURI(parts.pagename);\n//         }\n//      else {\n//         url = parts.pagename;\n//         }\n      }\n   else {\n      url = encodeURI(parts.url);\n      }\n   str = '<a href=\"' + url + '\"' + tb + '>' + desc + '</a>';\n\n   return str;\n\n   }\n\n\n//\n// result = SocialCalc.ParseCellLinkText(str)\n//\n// Given: url = http://www.someurl.com/more, desc = Some descriptive text\n//\n// Takes the following:\n//\n//    url\n//    <url>\n//    desc<url>\n//    \"desc\"<url>\n//    <<>> instead of <> => target=\"_blank\" (new window)\n//\n//    [page name]\n//    \"desc\"[page name]\n//    desc[page name]\n//    {workspace name [page name]}\n//    \"desc\"{workspace name [page name]}\n//    [[]] instead of [] => target=\"_blank\" (new window)\n//\n//\n// Returns: {url: url, desc: desc, newwin: t/f, pagename: pagename, workspace: workspace}\n//\n\nSocialCalc.ParseCellLinkText = function(str) {\n\n   var result = {url: \"\", desc: \"\", newwin: false, pagename: \"\", workspace: \"\"};\n\n   var pageform = false;\n   var urlend = str.length - 1;\n   var descstart = 0;\n   var lastlt = str.lastIndexOf(\"<\");\n   var lastbrkt = str.lastIndexOf(\"[\");\n   var lastbrace = str.lastIndexOf(\"{\");\n   var descend = -1;\n\n   if ((str.charAt(urlend) != \">\" || lastlt == -1)\n         && (str.charAt(urlend) != \"]\" || lastbrkt == -1)\n         && (str.charAt(urlend) != \"}\" || str.charAt(urlend-1) != \"]\" ||\n             lastbrace == -1 || lastbrkt == -1 || lastbrkt < lastbrace)) { // plain url\n      urlend++;\n      descend = urlend;\n      }\n   else { // some markup\n      if (str.charAt(urlend)==\">\") { // url form\n         descend = lastlt - 1;\n         if (lastlt > 0 && str.charAt(descend) == \"<\" && str.charAt(urlend-1) == \">\") {\n            descend--;\n            urlend--;\n            result.newwin = true;\n            }\n         }\n\n      else if (str.charAt(urlend)==\"]\") { // plain page form\n         descend = lastbrkt - 1;\n         pageform = true;\n         if (lastbrkt > 0 && str.charAt(descend) == \"[\" && str.charAt(urlend-1) == \"]\") {\n            descend--;\n            urlend--;\n            result.newwin = true;\n            }\n         }\n\n      else if (str.charAt(urlend)==\"}\") { // page and workspace form\n         descend = lastbrace - 1;\n         pageform = true;\n         wsend = lastbrkt;\n         urlend--;\n         if (lastbrkt > 0 && str.charAt(lastbrkt-1) == \"[\" && str.charAt(urlend-1) == \"]\") {\n            wsend = lastbrkt-1;\n            urlend--;\n            result.newwin = true;\n            }\n         if (str.charAt(wsend-1)==\" \") { // trim trailing space in workspace name\n            wsend--;\n            }\n         result.workspace = str.substring(lastbrace+1, wsend) || \"\";\n         }\n\n      if (str.charAt(descend)==\" \") { // trim trailing space on desc\n         descend--;\n         }\n\n      if (str.charAt(descstart) == '\"' && str.charAt(descend) == '\"') {\n         descstart++;\n         descend--;\n         }\n      }\n\n   if (pageform) {\n      result.pagename = str.substring(lastbrkt+1, urlend) || \"\";\n      }\n   else {\n      result.url = str.substring(lastlt+1, urlend) || \"\";\n      }\n\n   if (descend >= descstart) {\n      result.desc = str.substring(descstart, descend+1);\n      }\n\n   return result;\n\n   }\n\n\n//\n// result = SocialCalc.ConvertSaveToOtherFormat(savestr, outputformat, dorecalc)\n//\n// Returns a string in the specificed format: \"scsave\", \"html\", \"csv\", \"tab\" (tab delimited)\n// If dorecalc is true, performs a recalc after loading (NO: obsolete!).\n//\n\nSocialCalc.ConvertSaveToOtherFormat = function(savestr, outputformat, dorecalc) {\n\n   var sheet, context, clipextents, div, ele, row, col, cr, cell, str;\n\n   var result = \"\";\n\n   if (outputformat == \"scsave\") {\n      return savestr;\n      }\n\n   if (savestr == \"\") {\n      return \"\";\n      }\n\n   sheet = new SocialCalc.Sheet();\n   sheet.ParseSheetSave(savestr);\n\n   if (dorecalc) {\n      // no longer supported as of 9/10/08\n      // Recalc is now async, so can't do it this way\n      throw(\"SocialCalc.ConvertSaveToOtherFormat: Not doing recalc.\");\n      }\n\n   if (sheet.copiedfrom) {\n      clipextents = SocialCalc.ParseRange(sheet.copiedfrom);\n      }\n   else {\n      clipextents = {cr1: {row: 1, col: 1}, cr2: {row: sheet.attribs.lastrow, col: sheet.attribs.lastcol}};\n      }\n\n   if (outputformat == \"html\") {\n      context=new SocialCalc.RenderContext(sheet);\n      if (sheet.copiedfrom) {\n         context.rowpanes[0] = {first: clipextents.cr1.row, last: clipextents.cr2.row};\n         context.colpanes[0] = {first: clipextents.cr1.col, last: clipextents.cr2.col};\n         }\n      div = document.createElement(\"div\");\n      ele = context.RenderSheet(null, context.defaultHTMLlinkstyle);\n      div.appendChild(ele);\n      delete context;\n      delete sheet;\n      result = div.innerHTML;\n      delete ele;\n      delete div;\n      return result;\n      }\n\n   for (row = clipextents.cr1.row; row <= clipextents.cr2.row; row++) {\n      for (col = clipextents.cr1.col; col <= clipextents.cr2.col; col++) {\n         cr = SocialCalc.crToCoord(col, row);\n         cell = sheet.GetAssuredCell(cr);\n\n         if (cell.errors) {\n            str = cell.errors;\n            }\n         else {\n            str = cell.datavalue+\"\"; // get value as text\n            }\n\n         if (outputformat == \"csv\") {\n            if (str.indexOf('\"')!=-1) {\n               str = str.replace(/\"/g, '\"\"'); // double quotes\n               }\n            if (/[, \\n\"]/.test(str)) {\n               str = '\"' + str + '\"'; // add quotes\n               }\n            if (col>clipextents.cr1.col) {\n               str = \",\" + str; // add commas\n               }\n            }\n         else if (outputformat == \"tab\") {\n            if (str.indexOf('\\n')!=-1) { // if multiple lines\n               if (str.indexOf('\"')!=-1) {\n                  str = str.replace(/\"/g, '\"\"'); // double quotes\n                  }\n               str = '\"' + str + '\"'; // add quotes\n               }\n            if (col>clipextents.cr1.col) {\n               str = \"\\t\" + str; // add tabs\n               }\n            }\n         result += str;\n         }\n      result += \"\\n\";\n      }\n\n   return result;\n\n   }\n\n\n//\n// result = SocialCalc.ConvertOtherFormatToSave(inputstr, inputformat)\n//\n// Returns a string converted from the specified format: \"scsave\", \"csv\", \"tab\" (tab delimited)\n//\n\nSocialCalc.ConvertOtherFormatToSave = function(inputstr, inputformat) {\n\n   var sheet, context, lines, i, line, value, inquote, j, ch, values, row, col, cr, maxc;\n\n   var result = \"\";\n\n   var AddCell = function() {\n      col++;\n      if (col>maxc) maxc = col;\n      cr = SocialCalc.crToCoord(col, row);\n      SocialCalc.SetConvertedCell(sheet, cr, value);\n      value = \"\";\n      }\n\n   if (inputformat == \"scsave\") {\n      return inputstr;\n      }\n\n   sheet = new SocialCalc.Sheet();\n\n   lines = inputstr.split(/\\r\\n|\\n/);\n\n   maxc = 0;\n   if (inputformat == \"csv\") {\n      row = 0;\n      inquote = false;\n      for (i=0; i<lines.length; i++) {\n         if (i==lines.length-1 && lines[i]==\"\") { // extra null line - ignore\n            break;\n            }\n         if (inquote) { // if inquote, just continue from where left off\n            value += \"\\n\";\n            }\n         else { // otherwise next row\n            value = \"\";\n            row++;\n            col = 0;\n            }\n         line = lines[i];\n         for (j=0; j<line.length; j++) {\n            ch = line.charAt(j);\n            if (ch == '\"') {\n               if (inquote) {\n                  if (j<line.length-1 && line.charAt(j+1) == '\"') { // double quotes\n                     j++; // skip the second one\n                     value += '\"'; // add one quote\n                     }\n                  else {\n                     inquote = false;\n                     if (j==line.length-1) { // at end of line\n                        AddCell();\n                        }\n                     }\n                  }\n               else {\n                  inquote = true;\n                  }\n               continue;\n               }\n            if (ch == \",\" && !inquote) {\n               AddCell();\n               }\n            else {\n               value += ch;\n               }\n            if (j==line.length-1 && !inquote) {\n               AddCell();\n               }\n            }\n         }\n      if (maxc>0) {\n         sheet.attribs.lastrow = row;\n         sheet.attribs.lastcol = maxc;\n         result = sheet.CreateSheetSave(\"A1:\"+SocialCalc.crToCoord(maxc, row));\n         }\n      }\n\n   if (inputformat == \"tab\") {\n      row = 0;\n      inquote = false;\n      for (i=0; i<lines.length; i++) {\n         if (i==lines.length-1 && lines[i]==\"\") { // extra null line - ignore\n            break;\n            }\n         if (inquote) { // if inquote, just continue from where left off\n            value += \"\\n\";\n            }\n         else { // otherwise next row\n            value = \"\";\n            row++;\n            col = 0;\n            }\n         line = lines[i];\n         for (j=0; j<line.length; j++) {\n            ch = line.charAt(j);\n            if (ch == '\"') {\n               if (inquote) {\n                  if (j<line.length-1) {\n                     if (line.charAt(j+1) == '\"') { // double quotes\n                        j++; // skip the second one\n                        value += '\"'; // add one quote\n                        }\n                     else if (line.charAt(j+1) == '\\t') { // end of quoted item\n                        j++;\n                        inquote = false;\n                        AddCell();\n                        }\n                     }\n                  else { // at end of line\n                     inquote = false;\n                     AddCell();\n                     }\n                  continue;\n                  }\n               if (value==\"\") { // quote at start of item\n                  inquote = true;\n                  continue;\n                  }\n               }\n            if (ch == \"\\t\" && !inquote) {\n               AddCell();\n               }\n            else {\n               value += ch;\n               }\n            if (j==line.length-1 && !inquote) {\n               AddCell();\n               }\n            }\n         }\n      if (maxc>0) {\n         sheet.attribs.lastrow = row;\n         sheet.attribs.lastcol = maxc;\n         result = sheet.CreateSheetSave(\"A1:\"+SocialCalc.crToCoord(maxc, row));\n         }\n      }\n\n   return result;\n\n   }\n\n//\n// SocialCalc.SetConvertedCell(sheet, cr, rawvalue)\n//\n// Sets the cell cr with a value and type determined from rawvalue\n//\n\nSocialCalc.SetConvertedCell = function(sheet, cr, rawvalue) {\n\n   var cell, value;\n\n   cell = sheet.GetAssuredCell(cr);\n\n   value = SocialCalc.DetermineValueType(rawvalue);\n\n   if (value.type == 'n' && value.value == rawvalue) { // check that we don't need \"constant\" to remember original value\n      cell.datatype = \"v\";\n      cell.valuetype = \"n\";\n      cell.datavalue = value.value;\n      }\n   else if (value.type.charAt(0) == 't') { // text of some sort but left unchanged\n      cell.datatype = \"t\";\n      cell.valuetype = value.type;\n      cell.datavalue = value.value;\n      }\n   else { // special number types\n      cell.datatype = \"c\";\n      cell.valuetype = value.type;\n      cell.datavalue = value.value;\n      cell.formula = rawvalue;\n      }\n\n   }\n\n\n//\n// SocialCalcTableEditor\n//\n/*\n// The code module of the SocialCalc package that displays a scrolling grid with panes\n// and handles keyboard and mouse I/O.\n//\n// (c) Copyright 2008, 2009, 2010 Socialtext, Inc.\n// All Rights Reserved.\n//\n*/\n\n/*\n\nLEGAL NOTICES REQUIRED BY THE COMMON PUBLIC ATTRIBUTION LICENSE:\n\nEXHIBIT A. Common Public Attribution License Version 1.0.\n\nThe contents of this file are subject to the Common Public Attribution License Version 1.0 (the\n\"License\"); you may not use this file except in compliance with the License. You may obtain a copy\nof the License at http://socialcalc.org. The License is based on the Mozilla Public License Version 1.1 but\nSections 14 and 15 have been added to cover use of software over a computer network and provide for\nlimited attribution for the Original Developer. In addition, Exhibit A has been modified to be\nconsistent with Exhibit B.\n\nSoftware distributed under the License is distributed on an \"AS IS\" basis, WITHOUT WARRANTY OF ANY\nKIND, either express or implied. See the License for the specific language governing rights and\nlimitations under the License.\n\nThe Original Code is SocialCalc JavaScript TableEditor.\n\nThe Original Developer is the Initial Developer.\n\nThe Initial Developer of the Original Code is Socialtext, Inc. All portions of the code written by\nSocialtext, Inc., are Copyright (c) Socialtext, Inc. All Rights Reserved.\n\nContributor: Dan Bricklin.\n\n\nEXHIBIT B. Attribution Information\n\nWhen the TableEditor is producing and/or controlling the display the Graphic Image must be\ndisplayed on the screen visible to the user in a manner comparable to that in the\nOriginal Code. The Attribution Phrase must be displayed as a \"tooltip\" or \"hover-text\" for\nthat image. The image must be linked to the Attribution URL so as to access that page\nwhen clicked. If the user interface includes a prominent \"about\" display which includes\nfactual prominent attribution in a form similar to that in the \"about\" display included\nwith the Original Code, including Socialtext copyright notices and URLs, then the image\nneed not be linked to the Attribution URL but the \"tool-tip\" is still required.\n\nAttribution Copyright Notice:\n\n Copyright (C) 2010 Socialtext, Inc.\n All Rights Reserved.\n\nAttribution Phrase (not exceeding 10 words): SocialCalc\n\nAttribution URL: http://www.socialcalc.org/xoattrib\n\nGraphic Image: The contents of the sc-logo.gif file in the Original Code or\na suitable replacement from http://www.socialcalc.org/licenses specified as\nbeing for SocialCalc.\n\nDisplay of Attribution Information is required in Larger Works which are defined\nin the CPAL as a work which combines Covered Code or portions thereof with code\nnot governed by the terms of the CPAL.\n\n*/\n\n//\n// Some of the other files in the SocialCalc package are licensed under\n// different licenses. Please note the licenses of the modules you use.\n//\n// Code History:\n//\n// Initially coded by Dan Bricklin of Software Garden, Inc., for Socialtext, Inc.\n// Based in part on the SocialCalc 1.1.0 code written in Perl.\n// The SocialCalc 1.1.0 code was:\n//    Portions (c) Copyright 2005, 2006, 2007 Software Garden, Inc.\n//    All Rights Reserved.\n//    Portions (c) Copyright 2007 Socialtext, Inc.\n//    All Rights Reserved.\n// The Perl SocialCalc started as modifications to the wikiCalc(R) program, version 1.0.\n// wikiCalc 1.0 was written by Software Garden, Inc.\n// Unless otherwise specified, referring to \"SocialCalc\" in comments refers to this\n// JavaScript version of the code, not the SocialCalc Perl code.\n//\n\n/*\n\nSee the comments in the main SocialCalc code module file of the SocialCalc package.\n\n*/\n\n   var SocialCalc;\n   if (!SocialCalc) { // created here, too, in case load order is wrong, but main routines are required\n      SocialCalc = {};\n      }\n\n// *************************************\n//\n// Table Editor class:\n//\n// *************************************\n\n// Constructor:\n\nSocialCalc.TableEditor = function(context) {\n\n   var scc = SocialCalc.Constants;\n\n   // Properties:\n\n   this.context = context; // editing context\n   this.toplevel = null; // top level HTML element for this table editor\n   this.fullgrid = null; // rendered editing context\n\n   this.noEdit = false; // if true, disable all edit UI and make read-only\n\n   this.width = null;\n   this.tablewidth = null;\n   this.height = null;\n   this.tableheight = null;\n\n   this.inputBox = null;\n   this.inputEcho = null;\n   this.verticaltablecontrol = null;\n   this.horizontaltablecontrol = null;\n\n   this.logo = null;\n\n   this.cellhandles = null;\n\n   // Dynamic properties:\n\n   this.timeout = null; // if non-null, timer id for position calculations\n   this.busy = false; // true when executing command, calculating, etc.\n   this.ensureecell = false; // if true, ensure ecell is visible after timeout\n   this.deferredCommands = []; // commands to execute after busy, in form: {cmdstr: \"cmds\", saveundo: t/f}\n   this.deferredEmailCommands = []; // Email commands to execute after busy, in form: {cmdstr: \"cmds\", saveundo: t/f}\n\n   this.gridposition = null; // screen coords of full grid\n   this.headposition = null; // screen coords of upper left of grid within header rows\n   this.firstscrollingrow = null; // row number of top row in last (the scrolling) pane\n   this.firstscrollingrowtop = null;  // position of top row in last (the scrolling) pane\n   this.lastnonscrollingrow = null; // row number of last displayed row in last non-scrolling\n                                    // pane, or zero (for thumb position calculations)\n   this.lastvisiblerow = null; // used for paging down\n   this.firstscrollingcol = null; // column number of top col in last (the scrolling) pane\n   this.firstscrollingcolleft = null;  // position of top col in last (the scrolling) pane\n   this.lastnonscrollingcol = null; // col number of last displayed column in last non-scrolling\n                                    // pane, or zero (for thumb position calculations)\n   this.lastvisiblecol = null; // used for paging right\n\n   this.rowpositions = []; // screen positions of the top of some rows\n   this.colpositions = []; // screen positions of the left side of some rows\n   this.rowheight = []; // size in pixels of each row when last checked, or null/undefined, for page up\n   this.colwidth = []; // size in pixels of each column when last checked, or null/undefined, for page left\n\n   this.ecell = null; // either null or {coord: c, row: r, col: c}\n   this.state = \"start\"; // the keyboard states: see EditorProcessKey\n\n   this.workingvalues = {}; // values used during keyboard editing, etc.\n\n   // Constants:\n\n   this.imageprefix = scc.defaultImagePrefix; // URL prefix for images (e.g., \"/images/sc\")\n   this.idPrefix = scc.defaultTableEditorIDPrefix;\n   this.pageUpDnAmount = scc.defaultPageUpDnAmount; // number of rows to move cursor on PgUp/PgDn keys (numeric)\n\n   // Callbacks\n\n   // recalcFunction: if present, function(editor) {...}, called to do a recalc\n   // Default (sheet.RecalcSheet) does all the right stuff.\n\n   this.recalcFunction = function(editor) {\n      if (editor.context.sheetobj.RecalcSheet) {\n         editor.context.sheetobj.RecalcSheet(SocialCalc.EditorSheetStatusCallback, editor);\n         }\n      else return null;\n      };\n\n   // ctrlkeyFunction: if present, function(editor, charname) {...}, called to handle ctrl-V, etc., at top level\n   // Returns true (pass through for continued processing) or false (stop processing this key).\n\n   this.ctrlkeyFunction = function(editor, charname) {\n\n      var ta, cell, position, cmd, sel, cliptext;\n\n      switch (charname) {\n         case \"[ctrl-a]\":\n            editor.MoveECell(\"A1\");\n            editor.RangeAnchor(\"A1\");\n            editor.RangeExtend(SocialCalc.crToCoord(editor.context.sheetobj.attribs.lastcol,editor.context.sheetobj.attribs.lastrow));\n            return false;\n         case \"[ctrl-c]\":\n         case \"[ctrl-x]\":\n            ta = editor.pasteTextarea;\n            ta.value = \"\";\n            cell=SocialCalc.GetEditorCellElement(editor, editor.ecell.row, editor.ecell.col);\n            if (cell) {\n               position = SocialCalc.GetElementPosition(cell.element);\n               ta.style.left = (position.left-1)+\"px\";\n               ta.style.top = (position.top-1)+\"px\";\n               }\n            if (editor.range.hasrange) {\n               sel = SocialCalc.crToCoord(editor.range.left, editor.range.top)+\n                  \":\"+SocialCalc.crToCoord(editor.range.right, editor.range.bottom);\n               }\n            else {\n               sel = editor.ecell.coord;\n               }\n\n            // get what to copy to clipboard\n            cliptext = SocialCalc.ConvertSaveToOtherFormat(SocialCalc.CreateSheetSave(editor.context.sheetobj, sel), \"tab\");\n\n            if (charname == \"[ctrl-c]\" || editor.noEdit || editor.ECellReadonly()) { // if copy or cut but in no edit\n               cmd = \"copy \"+sel+\" formulas\";\n               }\n            else { // [ctrl-x]\n               cmd = \"cut \"+sel+\" formulas\";\n               }\n            editor.EditorScheduleSheetCommands(cmd, true, false); // queue up command to put on SocialCalc clipboard\n\n            ta.style.display = \"block\";\n            ta.value = cliptext; // must follow \"block\" setting for Webkit\n            ta.focus();\n            ta.select();\n            window.setTimeout(function() {\n               var ta = editor.pasteTextarea;\n               ta.blur();\n               ta.style.display = \"none\";\n               SocialCalc.KeyboardFocus();\n               }, 200);\n\n            return true;\n\n         case \"[ctrl-v]\":\n            if (editor.noEdit || editor.ECellReadonly()) return true; // not if no edit\n            ta = editor.pasteTextarea;\n            ta.value = \"\";\n            cell=SocialCalc.GetEditorCellElement(editor, editor.ecell.row, editor.ecell.col);\n            if (cell) {\n               position = SocialCalc.GetElementPosition(cell.element);\n               ta.style.left = (position.left-1)+\"px\";\n               ta.style.top = (position.top-1)+\"px\";\n               }\n            ta.style.display = \"block\";\n            ta.value = \"\";  // must follow \"block\" setting for Webkit\n            ta.focus();\n            window.setTimeout(function() {\n               var ta = editor.pasteTextarea;\n               var value = ta.value;\n               ta.blur();\n               ta.style.display = \"none\";\n               var cmd = \"\";\n               if(editor.pastescclipboard) {\n                 // Clipboard loaded from \"clipboard tab\" - see  SpreadsheetControlClipboardLoad\n                 // ignore windows clipboard contents\n                 editor.pastescclipboard = false;\n                 }\n               else {\n                 // Use windows clipboard contents if value does not match last copy\n                 var clipstr = SocialCalc.ConvertSaveToOtherFormat(SocialCalc.Clipboard.clipboard, \"tab\");\n                 value = value.replace(/\\r\\n/g, \"\\n\");\n                 // pastes SocialCalc clipboard if did a Ctrl-C and contents still the same\n                 // Webkit adds an extra blank line, so need to allow for that\n                 if (value != clipstr && (value.length-clipstr.length!=1 || value.substring(0,value.length-1)!=clipstr)) {\n                    cmd = \"loadclipboard \"+\n                    SocialCalc.encodeForSave(SocialCalc.ConvertOtherFormatToSave(value, \"tab\")) + \"\\n\";\n                    }\n                 }\n               var cr;\n               if (editor.range.hasrange) {\n                  var clipsheet = new SocialCalc.Sheet();\n                  clipsheet.ParseSheetSave(SocialCalc.Clipboard.clipboard);\n                  var matches = clipsheet.copiedfrom.match(/(.+):(.+)/);\n                  if (matches !== null && matches[1] === matches[2]) {\n                    // copy one cell to selected range\n                    cr = SocialCalc.crToCoord(editor.range.left, editor.range.top) +\n                      ':' + SocialCalc.crToCoord(editor.range.right, editor.range.bottom);\n                  } else {\n                    cr = SocialCalc.crToCoord(editor.range.left, editor.range.top);\n                  }\n                  }\n               else {\n                  cr = editor.ecell.coord;\n                  }\n               cmd += \"paste \"+cr+\" formulas\";\n               editor.EditorScheduleSheetCommands(cmd, true, false);\n               SocialCalc.KeyboardFocus();\n               }, 200);\n            return true;\n\n         case \"[ctrl-z]\":\n            editor.EditorScheduleSheetCommands(\"undo\", true, false);\n            return false;\n\n         case \"[ctrl-s]\": // !!!! temporary hack\n            if (!SocialCalc.Constants.AllowCtrlS) break;\n            window.setTimeout(\n               function() {\n                  var sheet = editor.context.sheetobj;\n                  var cell = sheet.GetAssuredCell(editor.ecell.coord);\n                  var ntvf = cell.nontextvalueformat ? sheet.valueformats[cell.nontextvalueformat-0] || \"\" : \"\";\n                  var newntvf = window.prompt(\"Advanced Feature:\\n\\nCustom Numeric Format or Command\", ntvf);\n                  if (newntvf != null) { // not cancelled\n                     if (newntvf.match(/^cmd:/)) {\n                        cmd = newntvf.substring(4); // execute as command\n                        }\n                     else if (newntvf.match(/^edit:/)) {\n                        cmd = newntvf.substring(5); // execute as command\n                        if (SocialCalc.CtrlSEditor) {\n                           SocialCalc.CtrlSEditor(cmd);\n                           }\n                        return;\n                        }\n                     else {\n                        if (editor.range.hasrange) {\n                           sel = SocialCalc.crToCoord(editor.range.left, editor.range.top)+\n                              \":\"+SocialCalc.crToCoord(editor.range.right, editor.range.bottom);\n                           }\n                        else {\n                          sel = editor.ecell.coord;\n                           }\n                        cmd = \"set \"+sel+\" nontextvalueformat \"+newntvf;\n                        }\n                     editor.EditorScheduleSheetCommands(cmd, true, false);\n                     }\n                  },\n               200);\n            return false;\n\n         default:\n            break;\n            }\n      return true;\n      };\n\n   // Set sheet's status callback:\n\n   context.sheetobj.statuscallback = SocialCalc.EditorSheetStatusCallback;\n   context.sheetobj.statuscallbackparams = this; // this object: the table editor object\n\n\n   // StatusCallback: all values are called at appropriate times, add with unique name, delete when done\n   //\n   // Each value must be an object in the form of:\n   //\n   //    func: function(editor, status, arg, params) {...},\n   //    params: params value to call func with\n   //\n   // The values for status and arg are:\n   //\n   //    all the SocialCalc RecalcSheet statuscallbacks, including:\n   //\n   //       calccheckdone, calclist length\n   //       calcorder, {coord: coord, total: celllist length, count: count}\n   //       calcstep, {coord: coord, total: calclist length, count: count}\n   //       calcfinished, time in milliseconds\n   //\n   //    the command callbacks, like cmdstart and cmdend\n   //    cmdendnorender\n   //\n   //    calcstart, null\n   //    moveecell, new ecell coord\n   //    rangechange, \"coord:coord\" or \"coord\" or \"\"\n   //    specialkey, keyname (\"[esc]\")\n   //\n\n   this.StatusCallback = {};\n\n\n   this.MoveECellCallback = {}; // all values are called with editor as arg; add with unique name, delete when done\n   this.RangeChangeCallback = {}; // all values are called with editor as arg; add with unique name, delete when done\n   this.SettingsCallbacks = {}; // See SocialCalc.SaveEditorSettings\n\n   // Set initial cursor\n\n   this.ecell = {coord: \"A1\", row: 1, col: 1};\n   context.highlights[this.ecell.coord] = \"cursor\";\n\n   // Initialize range data\n   // Range has at least hasrange (true/false).\n   // It may also have: anchorcoord, anchorrow, anchorcol, top, bottom, left, and right.\n\n   this.range = {hasrange: false};\n\n   // Initialize range2 data (used to show selections, such as for move)\n   // Range2 has at least hasrange (true/false).\n   // It may also have: top, bottom, left, and right.\n\n   this.range2 = {hasrange: false};\n\n   }\n\n// Methods:\n\nSocialCalc.TableEditor.prototype.CreateTableEditor = function(width, height) {return SocialCalc.CreateTableEditor(this, width, height);};\nSocialCalc.TableEditor.prototype.ResizeTableEditor = function(width, height) {return SocialCalc.ResizeTableEditor(this, width, height);};\n\nSocialCalc.TableEditor.prototype.SaveEditorSettings = function() {return SocialCalc.SaveEditorSettings(this);};\nSocialCalc.TableEditor.prototype.LoadEditorSettings = function(str, flags) {return SocialCalc.LoadEditorSettings(this, str, flags);};\n\nSocialCalc.TableEditor.prototype.EditorRenderSheet = function() {SocialCalc.EditorRenderSheet(this);};\nSocialCalc.TableEditor.prototype.EditorScheduleSheetCommands = function(cmdstr, saveundo, ignorebusy) {SocialCalc.EditorScheduleSheetCommands(this, cmdstr, saveundo, ignorebusy);};\nSocialCalc.TableEditor.prototype.ScheduleSheetCommands = function(cmdstr, saveundo) {\n   this.context.sheetobj.ScheduleSheetCommands(cmdstr, saveundo);\n   };\nSocialCalc.TableEditor.prototype.SheetUndo = function() {\n   this.context.sheetobj.SheetUndo();\n   };\nSocialCalc.TableEditor.prototype.SheetRedo = function() {\n   this.context.sheetobj.SheetRedo();\n   };\nSocialCalc.TableEditor.prototype.EditorStepSet = function(status, arg) {SocialCalc.EditorStepSet(this, status, arg);};\nSocialCalc.TableEditor.prototype.GetStatuslineString = function(status, arg, params) {return SocialCalc.EditorGetStatuslineString(this, status, arg, params);};\n\nSocialCalc.TableEditor.prototype.EditorMouseRegister = function() {return SocialCalc.EditorMouseRegister(this);};\nSocialCalc.TableEditor.prototype.EditorMouseUnregister = function() {return SocialCalc.EditorMouseUnregister(this);};\nSocialCalc.TableEditor.prototype.EditorMouseRange = function(coord) {return SocialCalc.EditorMouseRange(this, coord);};\n\nSocialCalc.TableEditor.prototype.EditorProcessKey = function(ch, e) {return SocialCalc.EditorProcessKey(this, ch, e);};\nSocialCalc.TableEditor.prototype.EditorAddToInput = function(str, prefix) {return SocialCalc.EditorAddToInput(this, str, prefix);};\nSocialCalc.TableEditor.prototype.DisplayCellContents = function() {return SocialCalc.EditorDisplayCellContents(this);};\nSocialCalc.TableEditor.prototype.EditorSaveEdit = function(text) {return SocialCalc.EditorSaveEdit(this, text);};\nSocialCalc.TableEditor.prototype.EditorApplySetCommandsToRange = function(cmdline, type) {return SocialCalc.EditorApplySetCommandsToRange(this, cmdline, type);};\n\nSocialCalc.TableEditor.prototype.MoveECellWithKey = function(ch) {return SocialCalc.MoveECellWithKey(this, ch);};\nSocialCalc.TableEditor.prototype.MoveECell = function(newcell) { if (SocialCalc._app) return \"A1\"; return SocialCalc.MoveECell(this, newcell);};\nSocialCalc.TableEditor.prototype.ReplaceCell = function(cell, row, col) {SocialCalc.ReplaceCell(this, cell, row, col);};\nSocialCalc.TableEditor.prototype.UpdateCellCSS = function(cell, row, col) {SocialCalc.UpdateCellCSS(this, cell, row, col);};\nSocialCalc.TableEditor.prototype.SetECellHeaders = function(selected) {SocialCalc.SetECellHeaders(this, selected);};\nSocialCalc.TableEditor.prototype.EnsureECellVisible = function() {SocialCalc.EnsureECellVisible(this);};\nSocialCalc.TableEditor.prototype.ECellReadonly = function(coord) {return SocialCalc.ECellReadonly(this, coord);};\nSocialCalc.TableEditor.prototype.RangeAnchor = function(coord) {SocialCalc.RangeAnchor(this, coord);};\nSocialCalc.TableEditor.prototype.RangeExtend = function(coord) {SocialCalc.RangeExtend(this, coord);};\nSocialCalc.TableEditor.prototype.RangeRemove = function() {SocialCalc.RangeRemove(this);};\nSocialCalc.TableEditor.prototype.Range2Remove = function() {SocialCalc.Range2Remove(this);};\n\nSocialCalc.TableEditor.prototype.FitToEditTable = function() {SocialCalc.FitToEditTable(this);};\nSocialCalc.TableEditor.prototype.CalculateEditorPositions = function() {SocialCalc.CalculateEditorPositions(this);};\nSocialCalc.TableEditor.prototype.ScheduleRender = function() {this.ScheduleRender(true);};\nSocialCalc.TableEditor.prototype.ScheduleRender = function(renderwidgets) {\n  // App widgets need focus - so only render widgets when needed, rather than the default of rendering everything.\n  if(SocialCalc._app && renderwidgets == true) this.context.sheetobj.widgetsClean = false;\n  SocialCalc.ScheduleRender(this);\n  };\nSocialCalc.TableEditor.prototype.DoRenderStep = function() {SocialCalc.DoRenderStep(this);};\nSocialCalc.TableEditor.prototype.SchedulePositionCalculations = function() {SocialCalc.SchedulePositionCalculations(this);};\nSocialCalc.TableEditor.prototype.DoPositionCalculations = function() {SocialCalc.DoPositionCalculations(this);};\nSocialCalc.TableEditor.prototype.CalculateRowPositions = function(panenum, positions, sizes) {return SocialCalc.CalculateRowPositions(this,  panenum, positions, sizes);};\nSocialCalc.TableEditor.prototype.CalculateColPositions = function(panenum, positions, sizes) {return SocialCalc.CalculateColPositions(this,  panenum, positions, sizes);};\n\nSocialCalc.TableEditor.prototype.ScrollRelative = function(vertical, amount) {SocialCalc.ScrollRelative(this, vertical, amount);};\nSocialCalc.TableEditor.prototype.ScrollRelativeBoth = function(vamount, hamount) {SocialCalc.ScrollRelativeBoth(this, vamount, hamount);};\nSocialCalc.TableEditor.prototype.PageRelative = function(vertical, direction) {SocialCalc.PageRelative(this, vertical, direction);};\nSocialCalc.TableEditor.prototype.LimitLastPanes = function() {SocialCalc.LimitLastPanes(this);};\n\nSocialCalc.TableEditor.prototype.ScrollTableUpOneRow = function() {return SocialCalc.ScrollTableUpOneRow(this);};\nSocialCalc.TableEditor.prototype.ScrollTableDownOneRow = function() {return SocialCalc.ScrollTableDownOneRow(this);};\nSocialCalc.TableEditor.prototype.ScrollTableLeftOneCol = function() {return SocialCalc.ScrollTableLeftOneCol(this);};\nSocialCalc.TableEditor.prototype.ScrollTableRightOneCol = function() {return SocialCalc.ScrollTableRightOneCol(this);};\n\nSocialCalc.TableEditor.prototype.StopPropagation = function() {\n    return SocialCalc.StopPropagation(this);\n};\n\nSocialCalc.TableEditor.prototype.SetMouseMoveUp = function() {\n    return SocialCalc.SetMouseMoveUp(this);\n};\n\nSocialCalc.TableEditor.prototype.RemoveMouseMoveUp = function() {\n    return SocialCalc.RemoveMouseMoveUp(this);\n};\n\n// Functions:\n\nSocialCalc.CreateTableEditor = function(editor, width, height) {\n\n   var scc = SocialCalc.Constants;\n   var AssignID = SocialCalc.AssignID;\n\n   editor.toplevel = document.createElement(\"div\");\n   editor.toplevel.style.position = \"relative\";\n   AssignID(editor, editor.toplevel, \"toplevel\");\n   editor.width = width;\n   editor.height = height;\n\n   editor.griddiv = document.createElement(\"div\");\n   editor.tablewidth = Math.max(0, width - scc.defaultTableControlThickness);\n   editor.tableheight = Math.max(0, height - scc.defaultTableControlThickness);\n   editor.griddiv.style.width = editor.tablewidth+\"px\";\n   editor.griddiv.style.height = editor.tableheight+\"px\";\n   editor.griddiv.style.overflow = \"hidden\";\n   editor.griddiv.style.cursor = \"default\";\n   if (scc.cteGriddivClass) editor.griddiv.className = scc.cteGriddivClass;\n   AssignID(editor, editor.griddiv, \"griddiv\");\n\n   editor.FitToEditTable();\n\n   editor.EditorRenderSheet();\n\n   editor.griddiv.appendChild(editor.fullgrid);\n\n   editor.verticaltablecontrol = new SocialCalc.TableControl(editor, true, editor.tableheight);\n   editor.verticaltablecontrol.CreateTableControl();\n   AssignID(editor, editor.verticaltablecontrol.main, \"tablecontrolv\");\n\n   editor.horizontaltablecontrol = new SocialCalc.TableControl(editor, false, editor.tablewidth);\n   editor.horizontaltablecontrol.CreateTableControl();\n   AssignID(editor, editor.horizontaltablecontrol.main, \"tablecontrolh\");\n\n   var table, tbody, tr, td, img, anchor, ta;\n\n   table = document.createElement(\"table\");\n   editor.layouttable = table;\n   table.cellSpacing = 0;\n   table.cellPadding = 0;\n   AssignID(editor, table, \"layouttable\");\n\n   tbody = document.createElement(\"tbody\");\n   table.appendChild(tbody);\n\n   tr = document.createElement(\"tr\");\n   tbody.appendChild(tr);\n   td = document.createElement(\"td\");\n   td.appendChild(editor.griddiv);\n   tr.appendChild(td);\n   if (SocialCalc._app != true) { // no scroll bar in app\n     // Add v scroll bar\n     td = document.createElement(\"td\");\n     td.appendChild(editor.verticaltablecontrol.main);\n     tr.appendChild(td);\n   }\n   tr = document.createElement(\"tr\");\n   tbody.appendChild(tr);\n   if (SocialCalc._app != true) { // no scroll bar in app\n     // Add h scroll bar\n     td = document.createElement(\"td\");\n     td.appendChild(editor.horizontaltablecontrol.main);\n     tr.appendChild(td);\n   }\n\n   td = document.createElement(\"td\"); // logo display: Required by CPAL License for this code!\n   if (SocialCalc._app) { // in app right align Required CPAL License logo\n     td.style.background=\"url(\"+editor.imageprefix+\"logo.gif) no-repeat right center\";\n   } else {\n     td.style.background=\"url(\"+editor.imageprefix+\"logo.gif) no-repeat center center\";\n   }\n   td.innerHTML = \"<div style='cursor:pointer;font-size:1px;'><img src='\"+editor.imageprefix+\"1x1.gif' border='0' width='18' height='18'></div>\";\n   tr.appendChild(td);\n   editor.logo = td;\n   AssignID(editor, editor.logo, \"logo\");\n   td.firstChild.firstChild.title = \"SocialCalc\";\n\n   editor.toplevel.appendChild(editor.layouttable);\n\n   if (!editor.noEdit) {\n      editor.inputEcho = new SocialCalc.InputEcho(editor);\n      AssignID(editor, editor.inputEcho.main, \"inputecho\");\n      }\n\n   editor.cellhandles = new SocialCalc.CellHandles(editor);\n\n   ta = document.createElement(\"textarea\"); // used for ctrl-c/ctrl-v where an invisible text area is needed\n   SocialCalc.setStyles(ta, \"display:none;position:absolute;height:1px;width:1px;opacity:0;filter:alpha(opacity=0);\");\n   ta.value = \"\";\n   editor.pasteTextarea = ta;\n   AssignID(editor, editor.pasteTextarea, \"pastetextarea\");\n\n   if (navigator.userAgent.match(/Safari\\//) &&!navigator.userAgent.match(/Chrome\\//)) { // special code for Safari 5 change\n      window.removeEventListener('beforepaste', SocialCalc.SafariPasteFunction, false);\n      window.addEventListener('beforepaste', SocialCalc.SafariPasteFunction, false);\n      window.removeEventListener('beforecopy', SocialCalc.SafariPasteFunction, false);\n      window.addEventListener('beforecopy', SocialCalc.SafariPasteFunction, false);\n      window.removeEventListener('beforecut', SocialCalc.SafariPasteFunction, false);\n      window.addEventListener('beforecut', SocialCalc.SafariPasteFunction, false);\n      }\n\n   editor.toplevel.appendChild(editor.pasteTextarea);\n\n   SocialCalc.MouseWheelRegister(editor.toplevel, {WheelMove: SocialCalc.EditorProcessMouseWheel, editor: editor});\n\n   SocialCalc.KeyboardSetFocus(editor);\n\n   // do status reporting things\n\n   SocialCalc.EditorSheetStatusCallback(null, \"startup\", null, editor);\n\n   // done\n\n   return editor.toplevel;\n\n   }\n\n// Special code needed for change that occurred with Safari 5 that made paste not work for some reason\n\nSocialCalc.SafariPasteFunction = function(e) {\n   e.preventDefault();\n   }\n\n//\n// SocialCalc.ResizeTableEditor(editor, width, height)\n//\n// Move things around as appropriate and resize\n//\n\nSocialCalc.ResizeTableEditor = function(editor, width, height) {\n\n   var scc = SocialCalc.Constants;\n\n   editor.width = width;\n   editor.height = height;\n\n   editor.toplevel.style.width = width+\"px\";\n   editor.toplevel.style.height = height+\"px\";\n\n   if (SocialCalc._app) {\n     editor.tablewidth = Math.max(0, width ); // no v scroll bar with app\n   } else {\n     editor.tablewidth = Math.max(0, width - scc.defaultTableControlThickness);\n   }\n   editor.tableheight = Math.max(0, height - scc.defaultTableControlThickness);\n   editor.griddiv.style.width=editor.tablewidth+\"px\";\n   editor.griddiv.style.height=editor.tableheight+\"px\";\n\n   editor.verticaltablecontrol.main.style.height = editor.tableheight + \"px\";\n   editor.horizontaltablecontrol.main.style.width = editor.tablewidth + \"px\";\n\n   editor.FitToEditTable();\n\n   editor.ScheduleRender();\n\n   return;\n\n   }\n\n//\n// str = SaveEditorSettings(editor)\n//\n// Returns a string representation of the pane settings, etc.\n//\n// The format is:\n//\n//    version:1.0\n//    rowpane:panenumber:firstnum:lastnum\n//    colpane:panenumber:firstnum:lastnum\n//    ecell:coord -- if set\n//    range:anchorcoord:top:bottom:left:right -- if set\n//\n// You can add additional values to be saved by using editor.SettingsCallbacks:\n//\n//   editor.SettingsCallbacks[\"item-name\"] = {save: savefunction, load: loadfunction}\n//\n// where savefunction(editor, \"item-name\") returns a string with the new lines to be added to the saved settings\n// which include the trailing newlines, and loadfunction(editor, \"item-name\", line, flags) is given the line to process\n// without the trailing newlines.\n//\n\nSocialCalc.SaveEditorSettings = function(editor) {\n\n   var i, setting;\n   var context = editor.context;\n   var range = editor.range;\n   var result = \"\";\n\n   result += \"version:1.0\\n\";\n\n   for (i=0; i<context.rowpanes.length; i++) {\n      result += \"rowpane:\"+i+\":\"+context.rowpanes[i].first+\":\"+context.rowpanes[i].last+\"\\n\";\n      }\n   for (i=0; i<context.colpanes.length; i++) {\n      result += \"colpane:\"+i+\":\"+context.colpanes[i].first+\":\"+context.colpanes[i].last+\"\\n\";\n      }\n\n   if (editor.ecell) {\n      result += \"ecell:\"+editor.ecell.coord+\"\\n\";\n      }\n\n   if (range.hasrange) {\n      result += \"range:\"+range.anchorcoord+\":\"+range.top+\":\"+range.bottom+\":\"+range.left+\":\"+range.right+\"\\n\";\n      }\n\n   for (setting in editor.SettingsCallbacks) {\n      result += editor.SettingsCallbacks[setting].save(editor, setting);\n      }\n\n   return result;\n\n   }\n\n//\n// LoadEditorSettings(editor, str, flags)\n//\n// Sets the editor settings based on str. See SocialCalc.SaveEditorSettings for more details.\n// Unrecognized lines are ignored.\n//\n\nSocialCalc.LoadEditorSettings = function(editor, str, flags) {\n\n   var lines=str.split(/\\r\\n|\\n/);\n   var parts=[];\n   var line, i, cr, row, col, coord, setting;\n   var context = editor.context;\n   var highlights, range;\n\n   context.rowpanes = [{first: 1, last: 1}]; // reset to start\n   context.colpanes = [{first: 1, last: 1}];\n   editor.ecell = null;\n   editor.range = {hasrange: false};\n   editor.range2 = {hasrange: false};\n   range = editor.range;\n   context.highlights = {};\n   highlights = context.highlights;\n\n   for (i=0; i<lines.length; i++) {\n      line=lines[i];\n      parts = line.split(\":\");\n      setting = parts[0];\n      switch (setting) {\n         case \"version\":\n            break;\n\n         case \"rowpane\":\n            context.rowpanes[parts[1]-0] = {first: parts[2]-0, last: parts[3]-0};\n            break;\n\n         case \"colpane\":\n            context.colpanes[parts[1]-0] = {first: parts[2]-0, last: parts[3]-0};\n            break;\n\n         case \"ecell\":\n            editor.ecell = SocialCalc.coordToCr(parts[1]);\n            editor.ecell.coord = parts[1];\n            highlights[parts[1]] = \"cursor\";\n            break;\n\n         case \"range\":\n            range.hasrange = true;\n            range.anchorcoord = parts[1];\n            cr = SocialCalc.coordToCr(range.anchorcoord);\n            range.anchorrow = cr.row;\n            range.anchorcol = cr.col;\n            range.top = parts[2]-0;\n            range.bottom = parts[3]-0;\n            range.left = parts[4]-0;\n            range.right = parts[5]-0;\n            for (row=range.top; row<=range.bottom; row++) {\n               for (col=range.left; col<=range.right; col++) {\n                  coord = SocialCalc.crToCoord(col, row);\n                  if (highlights[coord]!=\"cursor\") {\n                     highlights[coord] = \"range\";\n                     }\n                  }\n               }\n            break;\n\n         default:\n            if (editor.SettingsCallbacks[setting]) {\n               editor.SettingsCallbacks[setting].load(editor, setting, line, flags);\n               }\n            break;\n         }\n      }\n\n   return;\n\n   }\n\n//\n// EditorRenderSheet(editor)\n//\n// Renders the sheet and updates editor.fullgrid.\n// Sets event handlers.\n//\n\nSocialCalc.EditorRenderSheet = function(editor) {\n\n   editor.EditorMouseUnregister();\n\n   var sheetobj = editor.context.sheetobj;\n   // App widgets need to keep focus -  only render widgets if needed\n   if(sheetobj.reRenderCellList != null && SocialCalc._app && sheetobj.widgetsClean === true) {\n     // re-render each individual cells - but not widget with focus\n     for(var index in sheetobj.reRenderCellList) {\n       var coord = sheetobj.reRenderCellList[index];\n       var valuetype = sheetobj.cells[coord].valuetype;\n       if(valuetype.charAt(1) != \"i\" || valuetype !=  sheetobj.cells[coord].prevvaluetype) { // skip widgets - but paint when added/replaced\n         cr = SocialCalc.coordToCr(coord);\n         cell = SocialCalc.GetEditorCellElement(editor, cr.row, cr.col);\n         if(cell!=null) editor.ReplaceCell(cell, cr.row, cr.col);\n       }\n     }\n     sheetobj.reRenderCellList = [];\n   } else {\n      editor.fullgrid = editor.context.RenderSheet(editor.fullgrid);\n      if (sheetobj.reRenderCellList != null && SocialCalc._app) {\n        sheetobj.widgetsClean = true; // widgets have been rendered\n        sheetobj.reRenderCellList = [];\n      }\n   }\n\n   if (editor.ecell) editor.SetECellHeaders(\"selected\");\n\n   SocialCalc.AssignID(editor, editor.fullgrid, \"fullgrid\"); // give it an id\n   // eddy EditorRenderSheet {\n   if(!SocialCalc._app) editor.fullgrid.className = \"te_download\";\n   editor.EditorMouseRegister();\n   // } EditorRenderSheet\n\n   }\n\n//\n// EditorScheduleSheetCommands(editor, cmdstr, saveundo, ignorebusy)\n//\n\nSocialCalc.EditorScheduleSheetCommands = function(editor, cmdstr, saveundo, ignorebusy) {\n\n   if (editor.state!=\"start\" && !ignorebusy) { // ignore commands if editing a cell\n      return;\n      }\n\n   if (editor.busy && !ignorebusy) { // hold off on commands if doing one\n      editor.deferredCommands.push({cmdstr: cmdstr, saveundo: saveundo});\n      return;\n      }\n\n   // eddy ExecuteSheetCommand {\n   var cmdTokens = cmdstr.split(\" \");\n\n   switch (cmdTokens[0]) {\n\t   // } eddy ExecuteSheetCommand\n      case \"recalc\":\n      case \"redisplay\":\n         editor.context.sheetobj.ScheduleSheetCommands(cmdstr, false);\n         break;\n\n      case \"undo\":\n         if(SocialCalc._app ) editor.context.sheetobj.widgetsClean = false;     // force app widgets to render\n         editor.SheetUndo();\n         break;\n\n      case \"redo\":\n         if(SocialCalc._app ) editor.context.sheetobj.widgetsClean = false;     // force app widgets to render\n         editor.SheetRedo();\n         break;\n\n      case \"setemailparameters\":\n\t\t  SocialCalc.TriggerIoAction.Email(cmdTokens[1], cmdTokens[2]);\n    \t  break;\n\n\n      default:\n         editor.context.sheetobj.ScheduleSheetCommands(cmdstr, saveundo);\n         break;\n      }\n   }\n\n\n//\n// EditorSheetStatusCallback(recalcdata, status, arg, editor)\n//\n// Called during recalc, executing commands, etc.\n//\n\nSocialCalc.EditorSheetStatusCallback = function(recalcdata, status, arg, editor) {\n\n   var f, cell, dcmd;\n   var sheetobj = editor.context.sheetobj;\n\n   var signalstatus = function(s) {\n      for (f in editor.StatusCallback) {\n         if (editor.StatusCallback[f].func) {\n            editor.StatusCallback[f].func(editor, s, arg, editor.StatusCallback[f].params);\n            }\n         }\n      }\n\n   switch (status) {\n\n      case \"startup\":\n         break;\n\n      case \"cmdstart\":\n         editor.busy = true;\n         sheetobj.celldisplayneeded = \"\";\n         break;\n\n      case \"cmdextension\":\n         break;\n\n      case \"cmdend\":\n         signalstatus(status);\n\n         if (sheetobj.changedrendervalues) {\n            editor.context.PrecomputeSheetFontsAndLayouts();\n            editor.context.CalculateCellSkipData();\n            sheetobj.changedrendervalues = false;\n            }\n\n         if (sheetobj.celldisplayneeded && !sheetobj.renderneeded) {\n             if (sheetobj.cells[sheetobj.celldisplayneeded] && sheetobj.cells[sheetobj.celldisplayneeded].valuetype != \"e#N/A\") {\n                cr = SocialCalc.coordToCr(sheetobj.celldisplayneeded);\n                cell = SocialCalc.GetEditorCellElement(editor, cr.row, cr.col);\n                editor.ReplaceCell(cell, cr.row, cr.col); // if no value set, wait for recalc and render .\n                }\n             }\n         if (editor.deferredCommands.length) {\n            dcmd = editor.deferredCommands.shift();\n            editor.EditorScheduleSheetCommands(dcmd.cmdstr, dcmd.saveundo, true);\n            return;\n            }\n         if (sheetobj.attribs.needsrecalc &&\n               (sheetobj.attribs.recalc!=\"off\" || sheetobj.recalconce)\n               && editor.recalcFunction) {\n            editor.FitToEditTable();\n            sheetobj.renderneeded = false; // recalc will force a render\n            if (sheetobj.recalconce) delete sheetobj.recalconce; // only do once\n            editor.recalcFunction(editor);\n            }\n         else {\n            if (sheetobj.renderneeded) {\n               editor.FitToEditTable();\n               sheetobj.renderneeded = false;\n               editor.ScheduleRender(false);\n               }\n            else {\n               editor.SchedulePositionCalculations(); // just in case command changed positions\n//               editor.busy = false;\n//               signalstatus(\"cmdendnorender\");\n               }\n            }\n\n         // Handle hidden column.\n         if (sheetobj.hiddencolrow == \"col\") {\n            if (editor.ecell !== null) {\n               var col = editor.ecell.col;\n               while (sheetobj.colattribs.hide[SocialCalc.rcColname(col)] == \"yes\") {\n                  col++;\n                  }\n               var coord = SocialCalc.crToCoord(col, editor.ecell.row);\n               editor.MoveECell(coord);\n               sheetobj.hiddencolrow = \"\";\n               }\n            }\n\n         // Handle hidden row.\n         if (sheetobj.hiddencolrow == \"row\") {\n            if (editor.ecell !== null) {\n               var row = editor.ecell.row;\n               while (sheetobj.rowattribs.hide[row] == \"yes\") {\n                  row++;\n                  }\n               var coord = SocialCalc.crToCoord(editor.ecell.col, row);\n               editor.MoveECell(coord);\n               sheetobj.hiddencolrow = \"\";\n               }\n            }\n\n         return;\n\n      case \"calcstart\":\n         editor.busy = true;\n         break;\n\n      case \"calccheckdone\":\n      case \"calcorder\":\n      case \"calcstep\":\n      case \"calcloading\":\n      case \"calcserverfunc\":\n         break;\n\n      case \"calcfinished\":\n         signalstatus(status);\n         editor.ScheduleRender(false);\n         return;\n\n      case \"schedrender\":\n         editor.busy = true; // in case got here without cmd or recalc\n         break;\n\n      case \"renderdone\":\n         break;\n\n      case \"schedposcalc\":\n         editor.busy = true; // in case got here without cmd or recalc\n         break;\n\n      case \"doneposcalc\":\n          if (editor.deferredEmailCommands.length) {\n              signalstatus(status);\n              var emailcmd = editor.deferredEmailCommands.shift();\n              editor.EditorScheduleSheetCommands(emailcmd.cmdstr, emailcmd.saveundo, true);\n              return;\n              }\n\n\n         if (editor.deferredCommands.length) {\n            signalstatus(status);\n            dcmd = editor.deferredCommands.shift();\n            editor.EditorScheduleSheetCommands(dcmd.cmdstr, dcmd.saveundo, true);\n            }\n         else {\n            editor.busy = false;\n            signalstatus(status);\n            if (editor.state==\"start\") editor.DisplayCellContents(); // make sure up to date\n            }\n         return;\n      // eddy EditorSheetStatusCallback {\n      case \"emailing\":\n      case \"confirmemailsent\":\n        break;\n      // } EditorSheetStatusCallback eddy\n\n      default:\n    \t alert(\"Unknown status: \"+status);\n         break;\n\n      }\n\n   signalstatus(status);\n\n   return;\n\n   }\n\n//\n// str = SocialCalc.EditorGetStatuslineString(editor, status, arg, params)\n//\n// Assumes params is an object where it can use \"calculating\" and \"command\"\n// to keep track of state.\n// Returns string for status line.\n//\n\nSocialCalc.EditorGetStatuslineString = function(editor, status, arg, params) {\n\n   var scc = SocialCalc.Constants;\n\n   var sstr, progress, coord, circ, r, c, cell, sum, ele;\n\n   progress = \"\";\n\n   switch (status) {\n      case \"moveecell\":\n      case \"rangechange\":\n      case \"startup\":\n         break;\n      case \"cmdstart\":\n         params.command = true;\n         document.body.style.cursor = \"progress\";\n         editor.griddiv.style.cursor = \"progress\";\n         progress = scc.s_statusline_executing;\n         break;\n      case \"cmdextension\":\n         progress = \"Command Extension: \"+arg;\n         break;\n      case \"cmdend\":\n         params.command = false;\n         break;\n      case \"schedrender\":\n         progress = scc.s_statusline_displaying;\n         break;\n      case \"renderdone\":\n         progress = \" \";\n         break;\n      case \"schedposcalc\":\n         progress = scc.s_statusline_displaying;\n         break;\n      case \"cmdendnorender\":\n      case \"doneposcalc\":\n         document.body.style.cursor = \"default\";\n         editor.griddiv.style.cursor = \"default\";\n         // eddy EditorGetStatuslineString {\n         // all updates done, So let future event clear the \"sent\" message in the status bar\n         if(params.emailing == \"sent\") {\n        \t progress = params.emailreponse;\n        \t params.emailreponse = \"\";\n        \t params.emailing = \"done\";\n         }\n         // } eddy EditorGetStatuslineString\n         break;\n\n      case \"calcorder\":\n         progress = scc.s_statusline_ordering+Math.floor(100*arg.count/(arg.total||1))+\"%\";\n         break;\n      case \"calcstep\":\n         progress = scc.s_statusline_calculating+Math.floor(100*arg.count/(arg.total||1))+\"%\";\n         break;\n      case \"calcloading\":\n         progress = scc.s_statusline_calculatingls+\": \"+arg.sheetname;\n         break;\n      case \"calcserverfunc\":\n         progress = scc.s_statusline_calculating+Math.floor(100*arg.count/(arg.total||1))+\"%, \"+scc.s_statusline_doingserverfunc+arg.funcname+scc.s_statusline_incell+arg.coord;\n         break;\n      case \"calcstart\":\n         params.calculating = true;\n         document.body.style.cursor = \"progress\";\n         editor.griddiv.style.cursor = \"progress\"; // griddiv has an explicit cursor style\n         progress = scc.s_statusline_calcstart;\n         break;\n      case \"calccheckdone\":\n         break;\n      case \"calcfinished\":\n         params.calculating = false;\n         break;\n      // eddy EditorGetStatuslineString {\n      case \"emailing\":\n    \t params.emailing = \"sending\";\n    \t params.emailreponse =\"\";\n         break;\n      case \"confirmemailsent\":\n     \t params.emailing = \"sent\";\n     \t if(typeof params.emailreponse === 'undefined') params.emailreponse =\"\";\n     \t params.emailreponse += arg;\n         break;\n      // } eddy EditorGetStatuslineString\n\n      default:\n         progress = status;\n         break;\n      }\n\n   // eddy EditorGetStatuslineString {\n   // if send email then update status bar with \"sending\" and then \"sent\"\n   if(params.emailing == \"sending\") {\n  \t progress += scc.s_statusline_sendemail;\n   }\n   if(params.emailing == \"sent\") {\n  \t progress += params.emailreponse;\n   }\n   // } eddy EditorGetStatuslineString\n\n   if (!progress && params.calculating) {\n      progress = scc.s_statusline_calculating;\n      }\n\n   // if there is a range, calculate sum (not during busy times)\n   if (!params.calculating && !params.command && !progress && editor.range.hasrange\n       && (editor.range.left!=editor.range.right || editor.range.top!=editor.range.bottom)) {\n      sum = 0;\n      for (r=editor.range.top; r <= editor.range.bottom; r++) {\n         for (c=editor.range.left; c <= editor.range.right; c++) {\n            cell = editor.context.sheetobj.cells[SocialCalc.crToCoord(c, r)];\n            if (!cell) continue;\n            if (cell.valuetype && cell.valuetype.charAt(0)==\"n\") {\n               sum += cell.datavalue-0;\n               }\n            }\n         }\n\n      sum = SocialCalc.FormatNumber.formatNumberWithFormat(sum, \"[,]General\", \"\");\n\n      coord = SocialCalc.crToCoord(editor.range.left, editor.range.top) + \":\" +\n         SocialCalc.crToCoord(editor.range.right, editor.range.bottom);\n      progress = coord + \" (\" + (editor.range.right-editor.range.left+1) + \"x\" + (editor.range.bottom-editor.range.top+1) +\n                 \") \"+scc.s_statusline_sum+\"=\" + sum + \" \" + progress;\n      }\n   sstr = (editor.ecell || {}).coord+\" &nbsp; \"+progress;\n\n   if (!params.calculating && editor.context.sheetobj.attribs.needsrecalc==\"yes\") {\n      sstr += ' &nbsp; '+scc.s_statusline_recalcneeded;\n      }\n\n   circ = editor.context.sheetobj.attribs.circularreferencecell;\n   if (circ) {\n      circ = circ.replace(/\\|/, \" referenced by \");\n      sstr += ' &nbsp; '+scc.s_statusline_circref + circ + '</span>';\n      }\n   // eddy EditorGetStatuslineString {\n   sstr += \"\";\n   // } eddy EditorGetStatuslineString\n   return sstr;\n\n   }\n\n\n//\n// Mouse stuff\n//\n\nSocialCalc.EditorMouseInfo = {\n\n   // The registeredElements array is used to identify editor grid in which the mouse is doing things.\n\n   // One item for each active editor, each an object with:\n   //    .element, .editor\n\n   registeredElements: [],\n\n   editor: null, // editor being processed (between mousedown and mouseup)\n   element: null, // element being processed\n\n   ignore: false, // if true, mousedowns are ignored\n\n   mousedowncoord: \"\", // coord where mouse went down for drag range\n   mouselastcoord: \"\", // coord where mouse last was during drag\n   mouseresizecol: \"\", // col being resized\n   mouseresizeclientx: null, // where resize started\n   mouseresizedisplay: null // element tracking new size\n   }\n\n//\n// EditorMouseRegister(editor)\n//\n\nSocialCalc.EditorMouseRegister = function(editor) {\n\n   var mouseinfo = SocialCalc.EditorMouseInfo;\n   var element = editor.fullgrid;\n   var i;\n\n   for (i=0; i<mouseinfo.registeredElements.length; i++) {\n      if (mouseinfo.registeredElements[i].editor == editor) {\n         if (mouseinfo.registeredElements[i].element == element) {\n            return; // already set - don't do it again\n            }\n         break;\n         }\n      }\n\n   if (i<mouseinfo.registeredElements.length) {\n      mouseinfo.registeredElements[i].element = element;\n      }\n   else {\n      mouseinfo.registeredElements.push({element: element, editor: editor});\n      }\n\n   if (element.addEventListener) { // DOM Level 2 -- Firefox, et al\n      element.addEventListener(\"mousedown\", SocialCalc.ProcessEditorMouseDown, false);\n      element.addEventListener(\"dblclick\", SocialCalc.ProcessEditorDblClick, false);\n      }\n   else if (element.attachEvent) { // IE 5+\n      element.attachEvent(\"onmousedown\", SocialCalc.ProcessEditorMouseDown);\n      element.attachEvent(\"ondblclick\", SocialCalc.ProcessEditorDblClick);\n      }\n   else { // don't handle this\n      throw \"Browser not supported\";\n      }\n\n   mouseinfo.ignore = false; // just in case\n\n   return;\n\n   }\n\n//\n// EditorMouseUnregister(editor)\n//\n\nSocialCalc.EditorMouseUnregister = function(editor) {\n\n   var mouseinfo = SocialCalc.EditorMouseInfo;\n   var element = editor.fullgrid;\n   var i, oldelement;\n\n   for (i=0; i<mouseinfo.registeredElements.length; i++) {\n      if (mouseinfo.registeredElements[i].editor == editor) {\n         break;\n         }\n      }\n\n   if (i<mouseinfo.registeredElements.length) {\n      oldelement = mouseinfo.registeredElements[i].element; // remove old handlers\n      if (oldelement.removeEventListener) { // DOM Level 2\n         oldelement.removeEventListener(\"mousedown\", SocialCalc.ProcessEditorMouseDown, false);\n         oldelement.removeEventListener(\"dblclick\", SocialCalc.ProcessEditorDblClick, false);\n         }\n      else if (oldelement.detachEvent) { // IE\n         oldelement.detachEvent(\"onmousedown\", SocialCalc.ProcessEditorMouseDown);\n         oldelement.detachEvent(\"ondblclick\", SocialCalc.ProcessEditorDblClick);\n         }\n      mouseinfo.registeredElements.splice(i, 1);\n      }\n\n   return;\n\n   }\n\nSocialCalc.StopPropagation = function(event) {\n    if (event.stopPropagation) event.stopPropagation(); // DOM Level 2\n    else event.cancelBubble = true; // IE 5+\n    if (event.preventDefault) event.preventDefault(); // DOM Level 2\n    else event.returnValue = false; // IE 5+\n}\n\nSocialCalc.SetMouseMoveUp = function(move, up, element, event) {\n       // Event code from JavaScript, Flanagan, 5th Edition, pg. 422\n   if (document.addEventListener) { // DOM Level 2 -- Firefox, et al\n      document.addEventListener(\"mousemove\", move, true); // capture everywhere\n      document.addEventListener(\"mouseup\", up, true); // capture everywhere\n      }\n   else if (element.attachEvent) { // IE 5+\n      element.setCapture();\n      element.attachEvent(\"onmousemove\", move);\n      element.attachEvent(\"onmouseup\", up);\n      element.attachEvent(\"onlosecapture\", up);\n   }\n    SocialCalc.StopPropagation(event);\n}\n\nSocialCalc.RemoveMouseMoveUp = function(move, up, element, event) {\n    SocialCalc.StopPropagation(event);\n    if (document.removeEventListener) { // DOM Level 2\n\tdocument.removeEventListener(\"mousemove\", move, true);\n\tdocument.removeEventListener(\"mouseup\", up, true);\n    }\n    else if (element.detachEvent) { // IE\n\telement.detachEvent(\"onlosecapture\", up);\n\telement.detachEvent(\"onmouseup\", up);\n\telement.detachEvent(\"onmousemove\", move);\n\telement.releaseCapture();\n    }\n}\n\nSocialCalc.ProcessEditorMouseDown = function(e) {\n\n   var editor, result, coord, textarea, wval, range;\n\n   var event = e || window.event;\n\n   var mouseinfo = SocialCalc.EditorMouseInfo;\n   var ele = event.target || event.srcElement; // source object is often within what we want\n   var target = ele;\n   if (target.nodeType == 3) target = target.parentNode; // defeat Safari bug\n\n   var mobj;\n\n   if (mouseinfo.ignore) return; // ignore this\n\n   for (mobj=null; !mobj && ele; ele=ele.parentNode) { // go up tree looking for one of our elements\n      mobj = SocialCalc.LookupElement(ele, mouseinfo.registeredElements);\n      }\n   if (!mobj) {\n      mouseinfo.editor = null;\n      return; // not one of our elements\n      }\n\n   editor = mobj.editor;\n   mouseinfo.element = ele;\n   range = editor.range;\n\n   var pos = SocialCalc.GetElementPositionWithScroll(editor.toplevel);\n   var clientX = event.clientX - pos.left;\n   var clientY = event.clientY - pos.top;\n   result = SocialCalc.GridMousePosition(editor, clientX, clientY);\n\n   if (!result) return; // not on a cell or col header\n   mouseinfo.editor = editor; // remember for later\n\n    if (result.rowheader) {\n\tif (result.rowselect)  {\n\t    SocialCalc.ProcessEditorRowselectMouseDown(e, ele, result);\n\t} else {\n\t    SocialCalc.ProcessEditorRowsizeMouseDown(e, ele, result);\n\t}\n\treturn;\n    }\n\n    if (result.colheader) {\n\tif (result.colselect)  {\n\t    SocialCalc.ProcessEditorColselectMouseDown(e, ele, result);\n\t} else {\n\t    SocialCalc.ProcessEditorColsizeMouseDown(e, ele, result);\n\t}\n\treturn;\n    }\n\n   if (!result.coord) return; // not us\n\n   if (!range.hasrange) {\n      if (e.shiftKey)\n         editor.RangeAnchor();\n      }\n   coord = editor.MoveECell(result.coord);\n   // eddy ProcessEditorMouseDown {\n   if(SocialCalc._app == true) { // \"app\" wigets need to keep focus - needed because \"coord\" always equals A1\n     SocialCalc.CmdGotFocus(true); // cell widgets need to keep focus\n     return;\n   }\n\n   var clickedCell = editor.context.sheetobj.cells[coord];\n   if(clickedCell) {\n     if(clickedCell.valuetype.charAt(1) == 'i') { // IF cell contains ioWidget\n       var formula_name= clickedCell.valuetype.substring(2);\n       var widget_id = formula_name+'_'+coord;\n       if(target && widget_id == target.id) { // if widget was clicked (rather than cell containing widget)\n         var cell_widget=document.getElementById(widget_id);\n         SocialCalc.CmdGotFocus(cell_widget); // cell widgets need to keep focus\n       }\n\t\treturn; // let ioWidget keep the focus\n\t\t}\n\t }\n   // }\n\n   if (range.hasrange) {\n      if (e.shiftKey)\n         editor.RangeExtend();\n      else\n         editor.RangeRemove();\n      }\n\n   mouseinfo.mousedowncoord = coord; // remember if starting drag range select\n   mouseinfo.mouselastcoord = coord;\n\n   editor.EditorMouseRange(coord);\n\n   SocialCalc.KeyboardSetFocus(editor);\n   if (editor.state!=\"start\" && editor.inputBox) editor.inputBox.element.focus();\n    SocialCalc.SetMouseMoveUp(SocialCalc.ProcessEditorMouseMove,\n\t\t\t      SocialCalc.ProcessEditorMouseUp,\n\t\t\t      ele,\n\t\t\t      event);\n   return;\n\n   }\n\nSocialCalc.EditorMouseRange = function(editor, coord) {\n\n   var inputtext, wval;\n   var range = editor.range;\n\n   switch (editor.state) { // editing a cell - shouldn't get here if no inputBox\n      case \"input\":\n         inputtext = editor.inputBox.GetText();\n         wval = editor.workingvalues;\n         if ((\"(+-*/,:!&<>=^\".indexOf(inputtext.slice(-1))>=0 && inputtext.slice(0,1)==\"=\") ||\n             (inputtext == \"=\")) {\n            wval.partialexpr = inputtext;\n            }\n\n         if (wval.partialexpr) { // if in pointing operation\n            if (coord) {\n               if (range.hasrange) {\n                  editor.inputBox.SetText(wval.partialexpr + SocialCalc.crToCoord(range.left, range.top) + \":\" +\n                     SocialCalc.crToCoord(range.right, range.bottom));\n                  }\n               else {\n                  editor.inputBox.SetText(wval.partialexpr + coord);\n                  }\n               }\n            }\n         else { // not in point -- done editing\n            editor.inputBox.Blur();\n            editor.inputBox.ShowInputBox(false);\n            editor.state = \"start\";\n            editor.cellhandles.ShowCellHandles(true);\n            editor.EditorSaveEdit();\n            editor.inputBox.DisplayCellContents(null);\n            }\n         break;\n\n      case \"inputboxdirect\":\n         editor.inputBox.Blur();\n         editor.inputBox.ShowInputBox(false);\n         editor.state = \"start\";\n         editor.cellhandles.ShowCellHandles(true);\n         editor.EditorSaveEdit();\n         editor.inputBox.DisplayCellContents(null);\n         break;\n      }\n   }\n\nSocialCalc.ProcessEditorMouseMove = function(e) {\n\n   var editor, element, result, coord, now, textarea, sheetobj, cellobj, wval;\n\n   var event = e || window.event;\n\n   var mouseinfo = SocialCalc.EditorMouseInfo;\n   editor = mouseinfo.editor;\n   if (!editor) return; // not us, ignore\n   if (mouseinfo.ignore) return; // ignore this\n   element = mouseinfo.element;\n\n   var pos = SocialCalc.GetElementPositionWithScroll(editor.toplevel);\n   var clientX = event.clientX - pos.left;\n   var clientY = event.clientY - pos.top;\n   result = SocialCalc.GridMousePosition(editor, clientX, clientY); // get cell with move\n\n   if (!result) return;\n\n   if (result && !result.coord) {\n      SocialCalc.SetDragAutoRepeat(editor, result);\n      return;\n      }\n\n   SocialCalc.SetDragAutoRepeat(editor, null); // stop repeating if it was\n\n   if (!result.coord) return;\n\n   if (result.coord!=mouseinfo.mouselastcoord) {\n      if (!e.shiftKey && !editor.range.hasrange) {\n         editor.RangeAnchor(mouseinfo.mousedowncoord);\n         }\n      editor.MoveECell(result.coord);\n      editor.RangeExtend();\n      }\n   mouseinfo.mouselastcoord = result.coord;\n\n   editor.EditorMouseRange(result.coord);\n   SocialCalc.StopPropagation(event);\n   return;\n   }\n\n\nSocialCalc.ProcessEditorMouseUp = function(e) {\n\n   var editor, element, result, coord, now, textarea, sheetobj, cellobj, wval;\n\n   var event = e || window.event;\n\n   var mouseinfo = SocialCalc.EditorMouseInfo;\n   editor = mouseinfo.editor;\n   if (!editor) return; // not us, ignore\n   if (mouseinfo.ignore) return; // ignore this\n   element = mouseinfo.element;\n\n   var pos = SocialCalc.GetElementPositionWithScroll(editor.toplevel);\n   var clientX = event.clientX - pos.left;\n   var clientY = event.clientY - pos.top;\n   result = SocialCalc.GridMousePosition(editor, clientX, clientY); // get cell with up\n\n   SocialCalc.SetDragAutoRepeat(editor, null); // stop repeating if it was\n\n   if (!result) return;\n\n   if (!result.coord) result.coord = editor.ecell.coord;\n\n   if (editor.range.hasrange) {\n      editor.MoveECell(result.coord);\n      editor.RangeExtend();\n      }\n   else if (result.coord && result.coord!=mouseinfo.mousedowncoord) {\n      editor.RangeAnchor(mouseinfo.mousedowncoord);\n      editor.MoveECell(result.coord);\n      editor.RangeExtend();\n      }\n\n   editor.EditorMouseRange(result.coord);\n   mouseinfo.editor = null;\n   SocialCalc.RemoveMouseMoveUp(SocialCalc.ProcessEditorMouseMove,\n\t\t\t\t  SocialCalc.ProcessEditorMouseUp,\n\t\t\t\t  element,\n\t\t\t\t  event);\n   return false;\n\n   }\n\n\nSocialCalc.ProcessEditorColsizeMouseDown = function(e, ele, result) {\n\n   var event = e || window.event;\n   var mouseinfo = SocialCalc.EditorMouseInfo;\n   var editor = mouseinfo.editor;\n   var pos = SocialCalc.GetElementPositionWithScroll(editor.toplevel);\n   var clientX = event.clientX - pos.left;\n\n   mouseinfo.mouseresizecolnum = result.coltoresize; // remember col being resized\n   mouseinfo.mouseresizecol = SocialCalc.rcColname(result.coltoresize);\n   mouseinfo.mousedownclientx = clientX;\n   mouseinfo.mousecoltounhide = result.coltounhide;\n\n   if (result.coltoresize) {\n      var sizedisplay = document.createElement(\"div\");\n      mouseinfo.mouseresizedisplay = sizedisplay;\n      sizedisplay.style.width = \"auto\";\n      sizedisplay.style.position = \"absolute\";\n      sizedisplay.style.zIndex = 100;\n      sizedisplay.style.top = editor.headposition.top+\"px\";\n      sizedisplay.style.left = editor.colpositions[result.coltoresize]+\"px\";\n      sizedisplay.innerHTML = '<table cellpadding=\"0\" cellspacing=\"0\"><tr><td style=\"height:100px;'+\n        'border:1px dashed black;background-color:white;width:' +\n        (editor.context.colwidth[mouseinfo.mouseresizecolnum]-2) + 'px;\">&nbsp;</td>'+\n        '<td><div style=\"font-size:small;color:white;background-color:gray;padding:4px;\">'+\n        editor.context.colwidth[mouseinfo.mouseresizecolnum] + '</div></td></tr></table>';\n      SocialCalc.setStyles(sizedisplay.firstChild.lastChild.firstChild.childNodes[0], \"filter:alpha(opacity=85);opacity:.85;\"); // so no warning msg with Firefox about filter\n\n      editor.toplevel.appendChild(sizedisplay);\n      }\n    SocialCalc.SetMouseMoveUp( SocialCalc.ProcessEditorColsizeMouseMove,\n\t\t\t       SocialCalc.ProcessEditorColsizeMouseUp,\n\t\t\t       editor.toplevel,\n\t\t\t       event);\n   return;\n   }\n\n\nSocialCalc.ProcessEditorColsizeMouseMove = function(e) {\n\n   var event = e || window.event;\n   var mouseinfo = SocialCalc.EditorMouseInfo;\n   var editor = mouseinfo.editor;\n   if (!editor) return; // not us, ignore\n\n   if (mouseinfo.mouseresizecolnum) {\n      var pos = SocialCalc.GetElementPositionWithScroll(editor.toplevel);\n      var clientX = event.clientX - pos.left;\n\n      var newsize = (editor.context.colwidth[mouseinfo.mouseresizecolnum]-0) + (clientX - mouseinfo.mousedownclientx);\n      if (newsize < SocialCalc.Constants.defaultMinimumColWidth) newsize = SocialCalc.Constants.defaultMinimumColWidth;\n\n      var sizedisplay = mouseinfo.mouseresizedisplay;\n//      sizedisplay.firstChild.lastChild.firstChild.childNodes[1].firstChild.innerHTML = newsize+\"\";\n//      sizedisplay.firstChild.lastChild.firstChild.childNodes[0].firstChild.style.width = (newsize-2)+\"px\";\n      sizedisplay.innerHTML = '<table cellpadding=\"0\" cellspacing=\"0\"><tr><td style=\"height:100px;'+\n          'border:1px dashed black;background-color:white;width:' + (newsize-2) + 'px;\">&nbsp;</td>'+\n          '<td><div style=\"font-size:small;color:white;background-color:gray;padding:4px;\">'+\n          newsize + '</div></td></tr></table>';\n      SocialCalc.setStyles(sizedisplay.firstChild.lastChild.firstChild.childNodes[0], \"filter:alpha(opacity=85);opacity:.85;\"); // so no warning msg with Firefox about filter\n      }\n   SocialCalc.StopPropagation(event);\n   return;\n   }\n\n\nSocialCalc.ProcessEditorColsizeMouseUp = function(e) {\n\n   var event = e || window.event;\n   var mouseinfo = SocialCalc.EditorMouseInfo;\n   var editor = mouseinfo.editor;\n   if (!editor) return; // not us, ignore\n   element = mouseinfo.element;\n   var pos = SocialCalc.GetElementPositionWithScroll(editor.toplevel);\n   var clientX = event.clientX - pos.left;\n   SocialCalc.RemoveMouseMoveUp(\n       SocialCalc.ProcessEditorColsizeMouseMove,\n       SocialCalc.ProcessEditorColsizeMouseUp,\n       editor.toplevel,\n       event);\n\n   if (mouseinfo.mousecoltounhide) {\n      editor.EditorScheduleSheetCommands(\"set \"+SocialCalc.rcColname(mouseinfo.mousecoltounhide)+\" hide\", true, false);\n      /*\n      if (editor.ecell && editor.ecell.col == mouseinfo.mousecoltounhide+1) {\n         editor.MoveECell(SocialCalc.crToCoord(mouseinfo.mousecoltounhide, editor.ecell.row));\n         }*/\n      }\n   else if (mouseinfo.mouseresizecolnum) {\n      var newsize = (editor.context.colwidth[mouseinfo.mouseresizecolnum]-0) + (clientX - mouseinfo.mousedownclientx);\n      if (newsize < SocialCalc.Constants.defaultMinimumColWidth) newsize = SocialCalc.Constants.defaultMinimumColWidth;\n\n      editor.EditorScheduleSheetCommands(\"set \"+mouseinfo.mouseresizecol+\" width \"+newsize, true, false);\n\n      if (editor.timeout) window.clearTimeout(editor.timeout);\n      editor.timeout = window.setTimeout(SocialCalc.FinishColRowSize, 1); // wait - Firefox 2 has a bug otherwise with next mousedown\n      }\n\n   return false;\n\n   }\n\n\nSocialCalc.FinishColRowSize = function() {\n\n   var mouseinfo = SocialCalc.EditorMouseInfo;\n   var editor = mouseinfo.editor;\n   if (!editor) return;\n\n   editor.toplevel.removeChild(mouseinfo.mouseresizedisplay);\n   mouseinfo.mouseresizedisplay = null;\n\n//   editor.FitToEditTable();\n//   editor.EditorRenderSheet();\n//   editor.SchedulePositionCalculations();\n\n   mouseinfo.editor = null;\n\n   return;\n\n   }\n\n\nSocialCalc.ProcessEditorRowselectMouseDown = function(e, ele, result) {\n    var event = e || window.event;\n    var mouseinfo = SocialCalc.EditorMouseInfo;\n    var editor = mouseinfo.editor;\n    var sheet = SocialCalc.GetSpreadsheetControlObject().sheet;\n    coord1 = SocialCalc.crToCoord(1, result.row)\n    coord2 = SocialCalc.crToCoord(sheet.LastCol(),\n\t\t\t\t  result.row)\n    coord3 = SocialCalc.crToCoord(editor.firstscrollingcol,\n\t\t\t\t  result.row)\n    editor.RangeAnchor(coord1);\n    editor.RangeExtend(coord2);\n    editor.MoveECell(coord3);\n    SocialCalc.SetMouseMoveUp(SocialCalc.ProcessEditorRowselectMouseMove,\n\t\t\t      SocialCalc.ProcessEditorRowselectMouseUp,\n\t\t\t      editor.toplevel,\n\t\t\t      event);\n}\n\nSocialCalc.ProcessEditorRowselectMouseMove = function(e) {\n    var event = e || window.event;\n    var mouseinfo = SocialCalc.EditorMouseInfo;\n    var editor = mouseinfo.editor;\n    var sheet = SocialCalc.GetSpreadsheetControlObject().sheet;\n\n    if (!editor) return; // not us, ignore\n\n    var pos = SocialCalc.GetElementPositionWithScroll(editor.toplevel);\n    var clientX = event.clientX - pos.left;\n    var clientY = event.clientY - pos.top;\n    result = SocialCalc.GridMousePosition(editor, clientX, clientY);\n    coord2 = SocialCalc.crToCoord(sheet.LastCol(),\n\t\t\t\t  result.row)\n    coord3 = SocialCalc.crToCoord(editor.firstscrollingcol,\n\t\t\t\t  result.row)\n    editor.RangeExtend(coord2);\n    editor.MoveECell(coord3);\n    return;\n}\n\nSocialCalc.ProcessEditorRowselectMouseUp = function(e) {\n    var event = e || window.event;\n    var mouseinfo = SocialCalc.EditorMouseInfo;\n    var editor = mouseinfo.editor;\n    if (!editor) return; // not us, ignore\n    SocialCalc.RemoveMouseMoveUp(SocialCalc.ProcessEditorRowselectMouseMove,\n\t\t\t\t SocialCalc.ProcessEditorRowselectMouseUp,\n\t\t\t\t editor.toplevel,\n\t\t\t\t e);\n    return;\n}\n\nSocialCalc.ProcessEditorColselectMouseDown = function(e, ele, result) {\n    var event = e || window.event;\n    var mouseinfo = SocialCalc.EditorMouseInfo;\n    var editor = mouseinfo.editor;\n    var sheet = SocialCalc.GetSpreadsheetControlObject().sheet;\n\n    coord1 = SocialCalc.crToCoord(result.col, 1)\n    coord2 = SocialCalc.crToCoord(result.col,\n\t\t\t\t  sheet.LastRow())\n    coord3 = SocialCalc.crToCoord(result.col,\n\t\t\t\t  editor.firstscrollingrow)\n\n    editor.RangeAnchor(coord1);\n    editor.RangeExtend(coord2);\n    editor.MoveECell(coord3);\n    SocialCalc.SetMouseMoveUp(SocialCalc.ProcessEditorColselectMouseMove,\n\t\t\t      SocialCalc.ProcessEditorColselectMouseUp,\n\t\t\t      editor.toplevel,\n\t\t\t      event);\n\n}\n\nSocialCalc.ProcessEditorColselectMouseMove = function(e) {\n    var event = e || window.event;\n    var mouseinfo = SocialCalc.EditorMouseInfo;\n    var editor = mouseinfo.editor;\n    var sheet = SocialCalc.GetSpreadsheetControlObject().sheet;\n\n    if (!editor) return; // not us, ignore\n\n    var pos = SocialCalc.GetElementPositionWithScroll(editor.toplevel);\n    var clientX = event.clientX - pos.left;\n    var clientY = event.clientY - pos.top;\n    result = SocialCalc.GridMousePosition(editor, clientX, clientY);\n    coord2 = SocialCalc.crToCoord(result.col,\n\t\t\t\t  sheet.LastRow())\n    coord3 = SocialCalc.crToCoord(result.col,\n\t\t\t\t  editor.firstscrollingrow)\n    editor.RangeExtend(coord2);\n    editor.MoveECell(coord3);\n    return;\n}\n\nSocialCalc.ProcessEditorColselectMouseUp = function(e) {\n    var event = e || window.event;\n    var mouseinfo = SocialCalc.EditorMouseInfo;\n    var editor = mouseinfo.editor;\n    if (!editor) return; // not us, ignore\n    SocialCalc.RemoveMouseMoveUp(SocialCalc.ProcessEditorColselectMouseMove,\n\t\t\t\t SocialCalc.ProcessEditorColselectMouseUp,\n\t\t\t\t editor.toplevel,\n\t\t\t\t e);\n    return;\n}\n\nSocialCalc.ProcessEditorRowsizeMouseDown = function(e, ele, result) {\n\n   var event = e || window.event;\n   var mouseinfo = SocialCalc.EditorMouseInfo;\n   var editor = mouseinfo.editor;\n   var pos = SocialCalc.GetSpreadsheetControlObject().spreadsheetDiv.firstChild.offsetHeight;\n   var clientY = event.clientY - pos;\n\n   mouseinfo.mouseresizerownum = result.rowtoresize; // remember col being resized\n   mouseinfo.mouseresizerow = result.rowtoresize;\n   mouseinfo.mousedownclienty = clientY;\n   mouseinfo.mouserowtounhide = result.rowtounhide;\n\n  if (result.rowtoresize) {\n    var sizedisplay = document.createElement(\"div\");\n    mouseinfo.mouseresizedisplay = sizedisplay;\n    sizedisplay.style.width = editor.context.totalwidth+\"px\";\n    sizedisplay.style.height = editor.rowpositions[result.rowtoresize]+\"px\";\n    sizedisplay.style.position = \"absolute\";\n    sizedisplay.style.zIndex = 100;\n    sizedisplay.style.top = editor.rowpositions[result.rowtoresize]+\"px\";\n    sizedisplay.style.left = editor.headposition.left+\"px\";\n    sizedisplay.innerHTML = '<table cellpadding=\"0\" cellspacing=\"0\"><tr><td style=\"width:100px' +\n      'border:1px dashed black;background-color:white;height:' +\n      (editor.context.rowheight[mouseinfo.mouseresizerownum]-2) + 'px;\">&nbsp;</td>'+\n      '<td><div style=\"font-size:small;color:white;background-color:gray;padding:4px;\">'+\n      editor.context.rowheight[mouseinfo.mouseresizerownum] + '</div></td></tr></table>';\n    SocialCalc.setStyles(sizedisplay.firstChild.lastChild.firstChild.childNodes[0], \"filter:alpha(opacity=85);opacity:.5;\"); // so no warning msg with Firefox about filter\n\n    editor.toplevel.appendChild(sizedisplay);\n  }\n    SocialCalc.SetMouseMoveUp(SocialCalc.ProcessEditorRowsizeMouseMove,\n\t\t\t      SocialCalc.ProcessEditorRowsizeMouseUp,\n\t\t\t      editor.toplevel,\n\t\t\t      event);\n    return;\n   }\n\n\nSocialCalc.ProcessEditorRowsizeMouseMove = function(e) {\n\n   var event = e || window.event;\n   var mouseinfo = SocialCalc.EditorMouseInfo;\n   var editor = mouseinfo.editor;\n   if (!editor) return; // not us, ignore\n\n  if (mouseinfo.mouseresizerownum) {\n    var pos = SocialCalc.GetSpreadsheetControlObject().spreadsheetDiv.firstChild.offsetHeight;\n    var clientY = event.clientY - pos;\n\n    var newsize = (editor.context.rowheight[mouseinfo.mouseresizerownum]-0) + (clientY - mouseinfo.mousedownclienty);\n    if (newsize < SocialCalc.Constants.defaultAssumedRowHeight) newsize = SocialCalc.Constants.defaultAssumedRowHeight;\n\n    var sizedisplay = mouseinfo.mouseresizedisplay;\n    sizedisplay.innerHTML = '<table cellpadding=\"0\" cellspacing=\"0\"><tr><td style=\"width:100px;'+\n      'border:1px dashed black;background-color:white;height:' + (newsize-2) + 'px;\">&nbsp;</td>'+\n      '<td><div style=\"font-size:small;color:white;background-color:gray;padding:4px;\">'+\n      newsize + '</div></td></tr></table>';\n    SocialCalc.setStyles(sizedisplay.firstChild.lastChild.firstChild.childNodes[0], \"filter:alpha(opacity=85);opacity:.5;\"); // so no warning msg with Firefox about filter\n  }\n\n   SocialCalc.StopPropagation(event);\n   return;\n\n   }\n\n\nSocialCalc.ProcessEditorRowsizeMouseUp = function(e) {\n\n   var event = e || window.event;\n   var mouseinfo = SocialCalc.EditorMouseInfo;\n   var editor = mouseinfo.editor;\n   if (!editor) return; // not us, ignore\n   element = mouseinfo.element;\n   var pos = SocialCalc.GetSpreadsheetControlObject().spreadsheetDiv.firstChild.offsetHeight;\n   var clientY = event.clientY - pos;\n   SocialCalc.RemoveMouseMoveUp(\n       SocialCalc.ProcessEditorRowsizeMouseMove,\n       SocialCalc.ProcessEditorRowsizeMouseUp,\n       editor.toplevel,\n       event);\n   if (mouseinfo.mouserowtounhide) {\n      editor.EditorScheduleSheetCommands(\"set \"+mouseinfo.mouserowtounhide+\" hide\", true, false);\n      }\n   else if (mouseinfo.mouseresizerownum) {\n     var newsize = (editor.context.rowheight[mouseinfo.mouseresizerownum]-0) + (clientY - mouseinfo.mousedownclienty);\n     if (newsize < SocialCalc.Constants.defaultAssumedRowHeight) newsize = SocialCalc.Constants.defaultAssumedRowHeight;\n     editor.EditorScheduleSheetCommands(\"set \"+mouseinfo.mouseresizerownum+\" height \"+newsize, true, false);\n\n     if (editor.timeout) window.clearTimeout(editor.timeout);\n     editor.timeout = window.setTimeout(SocialCalc.FinishColRowSize, 1); // wait - Firefox 2 has a bug otherwise with next mousedown\n   }\n\n   return false;\n\n   }\n\n\n//\n// Handle auto-repeat of dragging the cursor into the borders of the sheet\n//\n\nSocialCalc.AutoRepeatInfo = {\n\n   timer: null, // timer object for repeating\n   mouseinfo: null, // result from SocialCalc.GridMousePosition\n   repeatinterval: 1000, // milliseconds to wait between repeats\n   editor: null, // editor object to use when it repeats\n   repeatcallback: null // used instead of default when repeating (e.g., for cellhandles)\n                        // called as: repeatcallback(newcoord, direction)\n\n};\n\n// Control auto-repeat. If mouseinfo==null, cancel.\n\nSocialCalc.SetDragAutoRepeat = function(editor, mouseinfo, callback) {\n\n   var repeatinfo = SocialCalc.AutoRepeatInfo;\n   var coord, direction;\n\n   repeatinfo.repeatcallback = callback; // null in regular case\n\n   if (!mouseinfo) { // cancel\n      if (repeatinfo.timer) { // If was repeating, stop\n         window.clearTimeout(repeatinfo.timer); // cancel timer\n         repeatinfo.timer = null;\n         }\n      repeatinfo.mouseinfo = null;\n      return; // done\n      }\n\n   repeatinfo.editor = editor;\n\n   if (repeatinfo.mouseinfo) { // check for change while repeating\n      if (mouseinfo.rowheader || mouseinfo.rowfooter) {\n         if (mouseinfo.row != repeatinfo.mouseinfo.row) { // changed row while dragging sidewards\n            coord = SocialCalc.crToCoord(editor.ecell.col, mouseinfo.row); // change to it\n            if (repeatinfo.repeatcallback) {\n               if (mouseinfo.row < repeatinfo.mouseinfo.row) {\n                  direction = \"left\";\n                  }\n               else if (mouseinfo.row > repeatinfo.mouseinfo.row) {\n                  direction = \"right\";\n                  }\n               else {\n                  direction = \"\";\n                  }\n               repeatinfo.repeatcallback(coord, direction);\n               }\n            else {\n               editor.MoveECell(coord);\n               editor.MoveECell(coord);\n               editor.RangeExtend();\n               editor.EditorMouseRange(coord);\n               }\n            }\n         }\n      else if (mouseinfo.colheader || mouseinfo.colfooter) {\n         if (mouseinfo.col != repeatinfo.mouseinfo.col) { // changed col while dragging vertically\n            coord = SocialCalc.crToCoord(mouseinfo.col, editor.ecell.row); // change to it\n            if (repeatinfo.repeatcallback) {\n               if (mouseinfo.row < repeatinfo.mouseinfo.row) {\n                  direction = \"left\";\n                  }\n               else if (mouseinfo.row > repeatinfo.mouseinfo.row) {\n                  direction = \"right\";\n                  }\n               else {\n                  direction = \"\";\n                  }\n               repeatinfo.repeatcallback(coord, direction);\n               }\n            else {\n               editor.MoveECell(coord);\n               editor.RangeExtend();\n               editor.EditorMouseRange(coord);\n               }\n            }\n         }\n      }\n\n   repeatinfo.mouseinfo = mouseinfo;\n\n   if (mouseinfo.distance < 5) repeatinfo.repeatinterval = 333;\n   else if (mouseinfo.distance < 10) repeatinfo.repeatinterval = 250;\n   else if (mouseinfo.distance < 25) repeatinfo.repeatinterval = 100;\n   else if (mouseinfo.distance < 35) repeatinfo.repeatinterval = 75;\n   else { // too far - stop repeating\n      if (repeatinfo.timer) { // if repeating, cancel it\n         window.clearTimeout(repeatinfo.timer); // cancel timer\n         repeatinfo.timer = null;\n         }\n      return;\n      }\n\n   if (!repeatinfo.timer) { // start if not already running\n      repeatinfo.timer = window.setTimeout(SocialCalc.DragAutoRepeat, repeatinfo.repeatinterval);\n      }\n\n   return;\n\n   }\n\n//\n// DragAutoRepeat()\n//\n\nSocialCalc.DragAutoRepeat = function() {\n\n   var repeatinfo = SocialCalc.AutoRepeatInfo;\n   var mouseinfo = repeatinfo.mouseinfo;\n\n   var direction, coord, cr;\n\n   if (mouseinfo.rowheader) direction = \"left\";\n   else if (mouseinfo.rowfooter) direction = \"right\";\n   else if (mouseinfo.colheader) direction = \"up\";\n   else if (mouseinfo.colfooter) direction = \"down\";\n\n   if (repeatinfo.repeatcallback) {\n      cr = SocialCalc.coordToCr(repeatinfo.editor.ecell.coord);\n      if (direction == \"left\" && cr.col > 1) cr.col--;\n      else if (direction == \"right\") cr.col++;\n      else if (direction == \"up\" && cr.row > 1) cr.row--;\n      else if (direction == \"down\") cr.row++;\n      coord = SocialCalc.crToCoord(cr.col, cr.row);\n      repeatinfo.repeatcallback(coord, direction);\n      }\n   else {\n      coord = repeatinfo.editor.MoveECellWithKey(\"[a\"+direction+\"]shifted\");\n      if (coord) repeatinfo.editor.EditorMouseRange(coord);\n      }\n\n   repeatinfo.timer = window.setTimeout(SocialCalc.DragAutoRepeat, repeatinfo.repeatinterval);\n\n   }\n\n//\n// Handling Clicking\n//\n\nSocialCalc.ProcessEditorDblClick = function(e) {\n\n   var editor, result, coord, textarea, wval, range;\n\n   var event = e || window.event;\n\n   var mouseinfo = SocialCalc.EditorMouseInfo;\n   var ele = event.target || event.srcElement; // source object is often within what we want\n   var mobj;\n\n   if (mouseinfo.ignore) return; // ignore this\n\n   for (mobj=null; !mobj && ele; ele=ele.parentNode) { // go up tree looking for one of our elements\n      mobj = SocialCalc.LookupElement(ele, mouseinfo.registeredElements);\n      }\n   if (!mobj) {\n      mouseinfo.editor = null;\n      return; // not one of our elements\n      }\n\n   editor = mobj.editor;\n\n   var pos = SocialCalc.GetElementPositionWithScroll(editor.toplevel);\n   var clientX = event.clientX - pos.left;\n   var clientY = event.clientY - pos.top;\n   result = SocialCalc.GridMousePosition(editor, clientX, clientY);\n   if (!result || !result.coord) return; // not within cell area - ignore\n\n   mouseinfo.editor = editor; // remember for later\n   mouseinfo.element = ele;\n   range = editor.range;\n\n   sheetobj = editor.context.sheetobj;\n\n   switch (editor.state) {\n      case \"start\":\n         SocialCalc.EditorOpenCellEdit(editor);\n         break;\n\n      case \"input\":\n         break;\n\n      default:\n         break;\n      }\n   SocialCalc.StopPropagation(event);\n   return;\n\n   }\n\n\nSocialCalc.EditorOpenCellEdit = function(editor) {\n\n   var wval;\n\n   if (!editor.ecell) return true; // no ecell\n   if (!editor.inputBox) return true; // no input box, so no editing (happens on noEdit)\n   if (editor.inputBox.element.disabled) return true; // multi-line: ignore\n   editor.inputBox.ShowInputBox(true);\n   editor.inputBox.Focus();\n   editor.inputBox.SetText(\"\");\n   editor.inputBox.DisplayCellContents();\n   editor.inputBox.Select(\"end\");\n   wval = editor.workingvalues;\n   wval.partialexpr = \"\";\n   wval.ecoord = editor.ecell.coord;\n   wval.erow = editor.ecell.row;\n   wval.ecol = editor.ecell.col;\n\n   return;\n\n   }\n\n\nSocialCalc.EditorProcessKey = function(editor, ch, e) {\n\n   var result, cell, cellobj, valueinfo, fch, coord, inputtext, f;\n\n   var sheetobj = editor.context.sheetobj;\n   var wval = editor.workingvalues;\n   var range = editor.range;\n\n   if (typeof ch != \"string\") ch = \"\";\n\n   switch (editor.state) {\n      case \"start\":\n         if (e.shiftKey && ch.substr(0,2)==\"[a\") {\n            ch = ch + \"shifted\";\n            }\n         if (ch==\"[enter]\") ch = \"[adown]\";\n         if (ch==\"[tab]\") ch = e.shiftKey ? \"[aleft]\" : \"[aright]\";\n         if (ch.substr(0,2)==\"[a\" || ch.substr(0,3)==\"[pg\" || ch==\"[home]\") {\n            result = editor.MoveECellWithKey(ch);\n            return !result;\n            }\n         if (ch==\"[del]\" || ch==\"[backspace]\") {\n            if (!editor.noEdit && !editor.ECellReadonly()) {\n               editor.EditorApplySetCommandsToRange(\"empty\", \"\");\n               }\n            break;\n            }\n         if (ch==\"[esc]\") {\n            if (range.hasrange) {\n               editor.RangeRemove();\n               editor.MoveECell(range.anchorcoord);\n               for (f in editor.StatusCallback) {\n                  editor.StatusCallback[f].func(editor, \"specialkey\", ch, editor.StatusCallback[f].params);\n                  }\n               }\n            return false;\n            }\n\n         if (ch==\"[f2]\") {\n            if (editor.noEdit || editor.ECellReadonly()) return true;\n            SocialCalc.EditorOpenCellEdit(editor);\n            editor.state=\"inputboxdirect\"; // arrow keys move left and right, rather than select cells\n            return false;\n            }\n\n         if ((ch.length>1 && ch.substr(0,1)==\"[\") || ch.length==0) { // some control key\n            if (editor.ctrlkeyFunction && ch.length>0) {\n               return editor.ctrlkeyFunction(editor, ch);\n               }\n            else {\n               return true;\n               }\n            }\n         if (!editor.ecell) return true; // no ecell\n         if (!editor.inputBox) return true; // no inputBox so no editing\n         if (editor.ECellReadonly()) return true;\n         editor.inputBox.element.disabled = false; // make sure editable\n         editor.state = \"input\";\n         editor.inputBox.ShowInputBox(true);\n         editor.inputBox.Focus();\n         editor.inputBox.SetText(ch);\n         editor.inputBox.Select(\"end\");\n         wval.partialexpr = \"\";\n         wval.ecoord = editor.ecell.coord;\n         wval.erow = editor.ecell.row;\n         wval.ecol = editor.ecell.col;\n         editor.RangeRemove();\n         break;\n\n      case \"input\":\n         inputtext = editor.inputBox.GetText(); // should not get here if no inputBox\n         if (editor.inputBox.skipOne) return false; // ignore a key already handled\n         if (ch==\"[esc]\" || ch==\"[enter]\" || ch==\"[tab]\" || (ch && ch.substr(0,2)==\"[a\")) {\n            if ((\"(+-*/,:!&<>=^\".indexOf(inputtext.slice(-1))>=0 && inputtext.slice(0,1)==\"=\") ||\n                (inputtext == \"=\")) {\n               wval.partialexpr = inputtext;\n               }\n            if (wval.partialexpr) { // if in pointing operation\n               if (e.shiftKey && ch.substr(0,2)==\"[a\") {\n                  ch = ch + \"shifted\";\n                  }\n               coord = editor.MoveECellWithKey(ch);\n               if (coord) {\n                  if (range.hasrange) {\n                     editor.inputBox.SetText(wval.partialexpr + SocialCalc.crToCoord(range.left, range.top) + \":\" +\n                        SocialCalc.crToCoord(range.right, range.bottom));\n                     }\n                  else {\n                     editor.inputBox.SetText(wval.partialexpr + coord);\n                     }\n                  return false;\n                  }\n               }\n            editor.inputBox.Blur();\n            editor.inputBox.ShowInputBox(false);\n            editor.state = \"start\";\n            editor.cellhandles.ShowCellHandles(true);\n            if (ch != \"[esc]\") {\n               editor.EditorSaveEdit();\n               if (editor.ecell.coord != wval.ecoord) {\n                  editor.MoveECell(wval.ecoord);\n                  }\n               if (ch==\"[enter]\") ch = \"[adown]\";\n               if (ch==\"[tab]\") ch = e.shiftKey ? \"[aleft]\" : \"[aright]\";\n               if (ch.substr(0,2)==\"[a\") {\n                  editor.MoveECellWithKey(ch);\n                  }\n               }\n            else {\n               editor.inputBox.DisplayCellContents();\n               editor.RangeRemove();\n               editor.MoveECell(wval.ecoord);\n               }\n            break;\n            }\n         if (wval.partialexpr && ch==\"[backspace]\") {\n            editor.inputBox.SetText(wval.partialexpr);\n            wval.partialexpr = \"\";\n            editor.RangeRemove();\n            editor.MoveECell(wval.ecoord);\n            editor.inputBox.ShowInputBox(true); // make sure it's moved back if necessary\n            return false;\n            }\n         if (ch==\"[f2]\") {\n           editor.state = \"inputboxdirect\";\n           return false;\n           }\n         if (range.hasrange) {\n            editor.RangeRemove();\n            }\n         editor.MoveECell(wval.ecoord);\n         if (wval.partialexpr) {\n            editor.inputBox.ShowInputBox(true); // make sure it's moved back if necessary\n            wval.partialexpr = \"\"; // not pointing\n            }\n         return true;\n\n      case \"inputboxdirect\":\n         inputtext = editor.inputBox.GetText(); // should not get here if no inputBox\n         if (ch==\"[esc]\" || ch==\"[enter]\" || ch==\"[tab]\") {\n            editor.inputBox.Blur();\n            editor.inputBox.ShowInputBox(false);\n            editor.state = \"start\";\n            editor.cellhandles.ShowCellHandles(true);\n            if (ch == \"[esc]\") {\n               editor.inputBox.DisplayCellContents();\n               }\n            else {\n               editor.EditorSaveEdit();\n               if (editor.ecell.coord != wval.ecoord) {\n                  editor.MoveECell(wval.ecoord);\n                  }\n               if (ch==\"[enter]\") ch = \"[adown]\";\n               if (ch==\"[tab]\") ch = e.shiftKey ? \"[aleft]\" : \"[aright]\";\n               if (ch.substr(0,2)==\"[a\") {\n                  editor.MoveECellWithKey(ch);\n                  }\n               }\n            break;\n            }\n         if (ch==\"[f2]\") {\n           editor.state = \"input\"; // arrow keys add range/coord to inputbox formula\n           return false;\n           }\n         return true;\n\n      case \"skip-and-start\":\n         editor.state = \"start\";\n         editor.cellhandles.ShowCellHandles(true);\n         return false;\n\n      default:\n         return true;\n      }\n\n   return false;\n\n   }\n\nSocialCalc.EditorAddToInput = function(editor, str, prefix) {\n\n   var wval = editor.workingvalues;\n\n   if (editor.noEdit || editor.ECellReadonly()) return;\n\n   switch (editor.state) {\n      case \"start\":\n         editor.state = \"input\";\n         editor.inputBox.ShowInputBox(true);\n         editor.inputBox.element.disabled = false; // make sure editable and overwrite old\n         editor.inputBox.Focus();\n         editor.inputBox.SetText((prefix||\"\")+str);\n         editor.inputBox.Select(\"end\");\n         wval.partialexpr = \"\";\n         wval.ecoord = editor.ecell.coord;\n         wval.erow = editor.ecell.row;\n         wval.ecol = editor.ecell.col;\n         editor.RangeRemove();\n         break;\n\n      case \"input\":\n      case \"inputboxdirect\":\n         editor.inputBox.element.focus();\n         if (wval.partialexpr) {\n            editor.inputBox.SetText(wval.partialexpr);\n            wval.partialexpr = \"\";\n            editor.RangeRemove();\n            editor.MoveECell(wval.ecoord);\n            }\n         editor.inputBox.SetText(editor.inputBox.GetText()+str);\n         break;\n\n      default:\n         break;\n      }\n\n   }\n\n\nSocialCalc.EditorDisplayCellContents = function(editor) {\n\n   if (editor.inputBox) editor.inputBox.DisplayCellContents();\n\n   }\n\nSocialCalc.EditorSaveEdit = function(editor, text) {\n\n   var result, cell, valueinfo, fch, type, value, oldvalue, cmdline;\n\n   var sheetobj = editor.context.sheetobj;\n   var wval = editor.workingvalues;\n\n   type = \"text t\";\n   value = typeof text == \"string\" ? text : editor.inputBox.GetText(); // either explicit or from input box\n\n   oldvalue = SocialCalc.GetCellContents(sheetobj, wval.ecoord)+\"\";\n   if (value == oldvalue) { // no change\n      return;\n      }\n   fch = value.charAt(0);\n   if (fch==\"=\" && value.indexOf(\"\\n\")==-1) {\n      type = \"formula\";\n      value = value.substring(1);\n      }\n   else if (fch==\"'\") {\n      type = \"text t\";\n      value = value.substring(1);\n      valueinfo = SocialCalc.DetermineValueType(value); // determine type again\n      if (valueinfo.type.charAt(0)==\"t\") {\n         type = \"text \"+valueinfo.type;\n         }\n      }\n   else if (value.length==0) {\n      type = \"empty\";\n      }\n   else {\n      valueinfo = SocialCalc.DetermineValueType(value);\n      if (valueinfo.type==\"n\" && value==(valueinfo.value+\"\")) { // see if don't need \"constant\"\n         type = \"value n\";\n         }\n      else if (valueinfo.type.charAt(0)==\"t\") {\n         type = \"text \"+valueinfo.type;\n         }\n      else if (valueinfo.type==\"\") {\n         type = \"text t\";\n         }\n      else {\n         type = \"constant \"+valueinfo.type+\" \"+valueinfo.value;\n         }\n      }\n\n   if (type.charAt(0)==\"t\") { // text\n      value = SocialCalc.encodeForSave(value); // newlines, :, and \\ are escaped\n      }\n\n   cmdline = \"set \"+wval.ecoord+\" \"+type+\" \"+value;\n   editor.EditorScheduleSheetCommands(cmdline, true, false);\n   // eddy EditorSaveEdit {\n   if(typeof sheetobj.ioEventTree === 'undefined') return;\n   if(typeof sheetobj.ioParameterList === 'undefined') return;\n   if(typeof sheetobj.ioEventTree[wval.ecoord] !== 'undefined') {\n\t   SocialCalc.EditedTriggerCell(sheetobj.ioEventTree[wval.ecoord], wval.ecoord, editor, sheetobj);\n   }\n\n   // }\n\n   return;\n\n   }\n\n\n// Eddy EditedTriggerCell {\n\n\nSocialCalc.EditedTriggerCell  = function(actionFormulaCells, editedCellRef, editor, sheet) {\n\n\t for(var actionCellId in actionFormulaCells) {\n\n\t\t\tvar parameters = sheet.ioParameterList[actionCellId];\n            if(typeof parameters === 'undefined') continue;\n\n\t\t\tswitch(parameters.function_name) {\n\t\t\t\t  case \"EMAILONEDIT\" :\n\t\t\t\t  case \"EMAILONEDITIF\" :\n\t\t\t\t\t  cmdline = \"setemailparameters \"+actionCellId+ \" \" + editedCellRef;\n\t\t\t\t\t// hold off on commands until recalc done\n\t\t\t\t      editor.deferredEmailCommands.push({cmdstr: cmdline, saveundo: false});\n//\t\t\t\t\t  editor.EditorScheduleSheetCommands(cmdline, false, false);\n\t\t\t\t\t  break;\n\t\t\t}\n\t }\n\n}\n// } Eddy EditedTriggerCell\n\n\n\n\n\n\n//\n// SocialCalc.EditorApplySetCommandsToRange(editor, cmd)\n//\n// Takes ecell or range and does a \"set\" command with cmd.\n//\n\nSocialCalc.EditorApplySetCommandsToRange = function(editor, cmd) {\n\n   var cell, row, col, line, errortext;\n\n   var sheetobj = editor.context.sheetobj;\n   var ecell = editor.ecell;\n   var range = editor.range;\n\n   if (range.hasrange) {\n      coord = SocialCalc.crToCoord(range.left, range.top)+\":\"+SocialCalc.crToCoord(range.right, range.bottom);\n      line = \"set \"+coord+\" \"+cmd;\n      errortext = editor.EditorScheduleSheetCommands(line, true, false);\n      }\n   else {\n      line = \"set \"+ecell.coord+\" \"+cmd;\n      errortext = editor.EditorScheduleSheetCommands(line, true, false);\n      }\n\n   editor.DisplayCellContents();\n\n   }\n\nSocialCalc.EditorProcessMouseWheel = function(event, delta, mousewheelinfo, wobj) {\n\n   if (wobj.functionobj.editor.busy) return; // ignore if busy\n\n   if (delta > 0) {\n      wobj.functionobj.editor.ScrollRelative(true, Math.floor(-delta * 1.5));\n      }\n   if (delta < 0) {\n      wobj.functionobj.editor.ScrollRelative(true, Math.ceil(-delta * 1.5));\n      }\n\n   }\n\n//\n// GridMousePosition(editor, clientX, clientY)\n//\n// Returns an object with row and col numbers and coord (spans handled for coords),\n// and rowheader/colheader true if in header (where coord will be undefined).\n// If in colheader, will return coltoresize if on appropriate place in col header.\n// Also, there is rowfooter (on right) and colfooter (on bottom).\n// In row/col header/footer, returns \"distance\" as pixels over the edge.\n//\n\nSocialCalc.GridMousePosition = function(editor, clientX, clientY) {\n\n   var row, rowpane, col, colpane, rowtoresize, coltoresize;\n   var result = {};\n\n   for (row=1; row<editor.rowpositions.length; row++) {\n      if (!editor.rowheight[row]) continue; // not rendered yet -- may be above or below us\n      if (editor.rowpositions[row]+editor.rowheight[row]>clientY) {\n         break;\n         }\n      }\n   for (col=1; col<editor.colpositions.length; col++) {\n      if (!editor.colwidth[col]) continue;\n      if (editor.colpositions[col]+editor.colwidth[col]>clientX) {\n         break;\n         }\n      }\n\n   result.row = row;\n   result.col = col;\n\n   if (editor.headposition && SocialCalc._app != true)  {\n      if (clientX < editor.headposition.left && clientX >= editor.gridposition.left) {\n         result.rowheader = true;\n         result.distance = editor.headposition.left - clientX;\n         result.rowtoresize = false;\n         result.rowselect = false;\n\n         // resize bar\n         for (rowtoresize=1; rowtoresize<editor.rowpositions.length; rowtoresize++) {\n            if (!editor.rowheight[rowtoresize]) continue;\n            if (((editor.rowpositions[rowtoresize] + editor.rowheight[rowtoresize]) - 3) <= clientY\n               && ((editor.rowpositions[rowtoresize] + editor.rowheight[rowtoresize]) + 3) >= clientY) {\n               result.rowtoresize = rowtoresize;\n               break;\n            }\n         }\n\n         // Handle unhide row.\n         if (unhide = editor.context.rowunhidetop[row]) {\n           pos = SocialCalc.GetElementPosition(unhide);\n           if (clientX >= pos.left && clientX < pos.left+unhide.offsetWidth\n               && clientY >= (editor.rowpositions[row] + editor.rowheight[row] - unhide.offsetHeight)\n               && clientY < (editor.rowpositions[row] + editor.rowheight[row])) {\n             result.rowtounhide = row+1;\n           }\n         }\n         if (unhide = editor.context.rowunhidebottom[row]) {\n           pos = SocialCalc.GetElementPosition(unhide);\n           if (clientX >= pos.left && clientX < pos.left+unhide.offsetWidth\n               && clientY >= (editor.rowpositions[row])\n               && clientY < (editor.rowpositions[row] + unhide.offsetHeight)) {\n             result.rowtounhide = row-1;\n           }\n         }\n         if(result.rowtounhide == null) {  //if unhide then ignore row select & resize\n           for (rowpane=0; rowpane<editor.context.rowpanes.length; rowpane++) {\n             if (result.rowtoresize >= editor.context.rowpanes[rowpane].first &&\n               result.rowtoresize <= editor.context.rowpanes[rowpane].last) { // visible column\n               return result;\n             }\n           }\n           result.rowselect = true;\n         }\n         delete result.rowtoresize;\n         return result;\n         }\n      else if (clientY < editor.headposition.top && clientY > editor.gridposition.top) { // > because of sizing row\n         result.colheader = true;\n         result.distance = editor.headposition.top - clientY;\n         result.coltoresize = false;\n\t result.colselect = false;\n\n         // resize bar\n         for (coltoresize=1; coltoresize<editor.colpositions.length; coltoresize++) {\n            if (!editor.colwidth[coltoresize]) continue;\n            if (((editor.colpositions[coltoresize] + editor.colwidth[coltoresize]) - 3) <= clientX\n               && ((editor.colpositions[coltoresize] + editor.colwidth[coltoresize]) + 3) >= clientX) {\n               result.coltoresize = coltoresize;\n               break;\n            }\n         }\n\n         // Handle unhide column.\n         if (unhide = editor.context.colunhideleft[col]) {\n            pos = SocialCalc.GetElementPosition(unhide);\n            if (clientX >= pos.left && clientX < pos.left+unhide.offsetWidth && clientY >= pos.top  && clientY < pos.top+unhide.offsetHeight) {\n               result.coltounhide = col+1;\n               }\n            }\n         if (unhide = editor.context.colunhideright[col]) {\n            pos = SocialCalc.GetElementPosition(unhide);\n            if (clientX >= pos.left && clientX < pos.left+unhide.offsetWidth && clientY >= pos.top  && clientY < pos.top+unhide.offsetHeight) {\n               result.coltounhide = col-1;\n               }\n            }\n\n         if(result.coltounhide == null) {  //if unhide then ignore col select & resize\n           for (colpane=0; colpane<editor.context.colpanes.length; colpane++) {\n              if (result.coltoresize >= editor.context.colpanes[colpane].first &&\n                  result.coltoresize <= editor.context.colpanes[colpane].last) { // visible column\n                 return result;\n                 }\n              }\n           result.colselect = true;\n           }\n         delete result.coltoresize;\n         return result;\n         }\n      else if (clientX >= editor.verticaltablecontrol.controlborder) {\n         result.rowfooter = true;\n         result.distance = clientX - editor.verticaltablecontrol.controlborder;\n         return result;\n         }\n      else if (clientY >= editor.horizontaltablecontrol.controlborder) {\n         result.colfooter = true;\n         result.distance = clientY - editor.horizontaltablecontrol.controlborder;\n         return result;\n         }\n      else if (clientX < editor.gridposition.left) {\n         result.rowheader = true;\n         result.distance = editor.headposition.left - clientX;\n         return result;\n         }\n      else if (clientY <= editor.gridposition.top) {\n         result.colheader = true;\n         result.distance = editor.headposition.top - clientY;\n         return result;\n         }\n      else {\n         result.coord = SocialCalc.crToCoord(result.col, result.row);\n         if (editor.context.cellskip[result.coord]) { // handle skipped cells\n            result.coord = editor.context.cellskip[result.coord];\n            }\n         return result;\n         }\n      }\n\n   return null;\n\n   }\n\n//\n// GetEditorCellElement(editor, row, col)\n//\n// Returns an object with element, the table cell element in the DOM that corresponds to row and column,\n// as well as rowpane and colpane, the panes with the cell.\n// If no such element, then returns null;\n//\n\nSocialCalc.GetEditorCellElement = function(editor, row, col) {\n\n  var headerColOffset = 0;\n  var headerRowOffset = 0;\n   //Adjust for row/col headers\n   if (editor.context.showRCHeaders == false) {\n     var headerColOffset = -1;\n     var headerRowOffset = -1;\n   }\n   var rowpane, colpane, c, coord;\n   var rowindex = 0;\n   var colindex = 0;\n\n   for (rowpane=0; rowpane<editor.context.rowpanes.length; rowpane++) {\n      if (row >= editor.context.rowpanes[rowpane].first && row <= editor.context.rowpanes[rowpane].last) {\n         for (colpane=0; colpane<editor.context.colpanes.length; colpane++) {\n            if (col >= editor.context.colpanes[colpane].first && col <= editor.context.colpanes[colpane].last) {\n               rowindex += row - editor.context.rowpanes[rowpane].first + 2;\n               for (c=editor.context.colpanes[colpane].first; c<=col; c++) {\n                  coord=editor.context.cellskip[SocialCalc.crToCoord(c,row)];\n                  if (!coord || !editor.context.CoordInPane(coord, rowpane, colpane)) // don't count col-spanned cells\n                     colindex++;\n                  }\n               return {\n                  element: editor.griddiv.firstChild.lastChild.childNodes[rowindex +headerRowOffset].childNodes[colindex + headerColOffset],\n                  rowpane: rowpane, colpane: colpane};\n               }\n            for (c=editor.context.colpanes[colpane].first; c<=editor.context.colpanes[colpane].last; c++) {\n               coord=editor.context.cellskip[SocialCalc.crToCoord(c,row)];\n               if (!coord || !editor.context.CoordInPane(coord, rowpane, colpane)) // don't count col-spanned cells\n                  colindex++;\n               }\n            colindex += 1;\n            }\n         }\n      rowindex += editor.context.rowpanes[rowpane].last - editor.context.rowpanes[rowpane].first + 1 + 1;\n      }\n\n   return null;\n}\n\n//\n// cellcoord = MoveECellWithKey(editor, ch)\n//\n// Processes an arrow key, etc., moving the edit cell.\n// If not a movement key, returns null.\n//\n\nSocialCalc.MoveECellWithKey = function(editor, ch) {\n\n   var coord, row, col, cell;\n   var shifted = false;\n   var delta = 1;\n\n   if (!editor.ecell) {\n      return null;\n      }\n\n   if (ch.slice(-7)==\"shifted\") {\n      ch = ch.slice(0,-7);\n      shifted = true;\n      }\n\n   row = editor.ecell.row;\n   col = editor.ecell.col;\n   cell = editor.context.sheetobj.cells[editor.ecell.coord];\n\n   switch (ch) {\n      case \"[adown]\":\n         row += (cell && cell.rowspan) || 1;\n         break;\n      case \"[aup]\":\n         row--;\n         delta = -1;\n         break;\n      case \"[pgdn]\":\n         row += editor.pageUpDnAmount - 1 + ((cell && cell.rowspan) || 1);\n         break;\n      case \"[pgup]\":\n         row -= editor.pageUpDnAmount;\n         delta = -1;\n         break;\n      case \"[aright]\":\n         col += (cell && cell.colspan) || 1;\n         break;\n      case \"[aleft]\":\n         col--;\n         delta = -1;\n         break;\n      case \"[home]\":\n         row = 1;\n         col = 1;\n         break;\n      default:\n         return null;\n      }\n\n   // Adjust against usermax col and row.\n   if (editor.context.sheetobj.attribs.usermaxcol) col = Math.min(editor.context.sheetobj.attribs.usermaxcol, col);\n   if (editor.context.sheetobj.attribs.usermaxrow) row = Math.min(editor.context.sheetobj.attribs.usermaxrow, row);\n\n   // Handle hidden column.\n   while (editor.context.sheetobj.colattribs.hide[SocialCalc.rcColname(col)] == \"yes\") {\n      col += delta;\n      if (col < 1) {\n         delta = -delta;\n         col = 1;\n         }\n      }\n\n   // Handle hidden row.\n   while (editor.context.sheetobj.rowattribs.hide[row] == \"yes\") {\n      row += delta;\n      if (row < 1) {\n         delta = -delta;\n         row = 1;\n         }\n      }\n\n   if (!editor.range.hasrange) {\n      if (shifted)\n         editor.RangeAnchor();\n      }\n\n   coord = editor.MoveECell(SocialCalc.crToCoord(col, row));\n\n   if (editor.range.hasrange) {\n      if (shifted)\n         editor.RangeExtend();\n      else\n         editor.RangeRemove();\n      }\n\n   return coord;\n\n   }\n\n//\n// cellcoord = MoveECell(editor, newecell)\n//\n// Takes a coordinate and returns the new edit cell coordinate (which may be\n// different if newecell is covered by a span).\n//\n\nSocialCalc.MoveECell = function(editor, newcell) {\n\n   var cell, f;\n\n   var highlights = editor.context.highlights;\n\n   // adjust against user max col/row\n   var ecell = SocialCalc.coordToCr(newcell);\n   if (editor.context.sheetobj.attribs.usermaxcol && ecell.col > editor.context.sheetobj.attribs.usermaxcol)\n      ecell.col = editor.context.sheetobj.attribs.usermaxcol;\n   if (editor.context.sheetobj.attribs.usermaxrow && ecell.row > editor.context.sheetobj.attribs.usermaxrow)\n      ecell.row = editor.context.sheetobj.attribs.usermaxrow;\n   newcell = SocialCalc.crToCoord(ecell.col, ecell.row);\n\n   if (editor.ecell) {\n      if (editor.ecell.coord==newcell) return newcell; // already there - don't do anything and don't tell anybody\n      cell=SocialCalc.GetEditorCellElement(editor, editor.ecell.row, editor.ecell.col);\n      delete highlights[editor.ecell.coord];\n      if (editor.range2.hasrange &&\n        editor.ecell.row>=editor.range2.top && editor.ecell.row<=editor.range2.bottom &&\n        editor.ecell.col>=editor.range2.left && editor.ecell.col<=editor.range2.right) {\n         highlights[editor.ecell.coord] = \"range2\";\n         }\n      editor.UpdateCellCSS(cell, editor.ecell.row, editor.ecell.col);\n      editor.SetECellHeaders(\"\"); // set to regular col/rowname styles\n      if(editor.cellhandles) editor.cellhandles.ShowCellHandles(false); // only if row/col visible\n      }\n   newcell = editor.context.cellskip[newcell] || newcell;\n   editor.ecell = SocialCalc.coordToCr(newcell);\n   editor.ecell.coord = newcell;\n   cell=SocialCalc.GetEditorCellElement(editor, editor.ecell.row, editor.ecell.col);\n   // eddy MoveECell {\n   // }\n   highlights[newcell] = \"cursor\";\n\n   for (f in editor.MoveECellCallback) { // let others know\n      editor.MoveECellCallback[f](editor);\n      }\n\n   editor.UpdateCellCSS(cell, editor.ecell.row, editor.ecell.col);\n   editor.SetECellHeaders(\"selected\");\n\n   for (f in editor.StatusCallback) { // let status line, etc., know\n      editor.StatusCallback[f].func(editor, \"moveecell\", newcell, editor.StatusCallback[f].params);\n      }\n\n   if (editor.busy) {\n      editor.ensureecell = true; // wait for when not busy\n      }\n   else {\n      editor.ensureecell = false;\n      editor.EnsureECellVisible();\n      }\n\n   return newcell;\n\n   }\n\nSocialCalc.EnsureECellVisible = function(editor) {\n\n   var vamount = 0;\n   var hamount = 0;\n\n   if (editor.ecell.row > editor.lastnonscrollingrow) {\n      if (editor.ecell.row < editor.firstscrollingrow) {\n         vamount = editor.ecell.row - editor.firstscrollingrow - Math.floor((editor.lastvisiblerow - editor.firstscrollingrow)/2);\n         }\n      else if (editor.ecell.row + 1 > editor.lastvisiblerow) {\n         vamount = editor.ecell.row - editor.lastvisiblerow + Math.floor((editor.lastvisiblerow - editor.firstscrollingrow)/2);\n         }\n      }\n   if (editor.ecell.col > editor.lastnonscrollingcol) {\n      if (editor.ecell.col < editor.firstscrollingcol) {\n         hamount = editor.ecell.col - editor.firstscrollingcol - Math.floor((editor.lastvisiblecol - editor.firstscrollingcol)/2);\n         }\n      else if (editor.ecell.col + 1 > editor.lastvisiblecol) {\n        hamount = editor.ecell.col- editor.lastvisiblecol + Math.floor((editor.lastvisiblecol - editor.firstscrollingcol)/2);\n         }\n      }\n\n   if (vamount!=0 || hamount!=0) {\n      editor.ScrollRelativeBoth(vamount, hamount);\n      }\n   else {\n      editor.cellhandles.ShowCellHandles(true);\n      }\n\n   }\n\nSocialCalc.ReplaceCell = function(editor, cell, row, col) {\n\n   var newelement, a;\n   if (!cell) return;\n   newelement = editor.context.RenderCell(row, col, cell.rowpane, cell.colpane, true, null);\n   if (newelement && cell.element) { // skip hidden cells\n      // Don't use a real element and replaceChild, which seems to have focus issues with IE, Firefox, and speed issues\n      cell.element.innerHTML = newelement.innerHTML;\n      cell.element.style.cssText = \"\";\n      cell.element.className = newelement.className;\n      for (a in newelement.style) {\n         if (newelement.style[a]!=\"cssText\")\n            cell.element.style[a] = newelement.style[a];\n         }\n      }\n   }\n\n\nSocialCalc.UpdateCellCSS = function(editor, cell, row, col) {\n\n   var newelement, a;\n   if (!cell) return;\n   newelement = editor.context.RenderCell(row, col, cell.rowpane, cell.colpane, true, null);\n   if (newelement) {\n      cell.element.style.cssText = \"\";\n      cell.element.className = newelement.className;\n      for (a in newelement.style) {\n         if (newelement.style[a]!=\"cssText\")\n            cell.element.style[a] = newelement.style[a];\n         }\n      }\n   }\n\n\nSocialCalc.SetECellHeaders = function(editor, selected) {\n\n   // eddy SetECellHeaders {\n   if(editor.context.showRCHeaders === false) return;\n   // } SetECellHeaders\n   var ecell = editor.ecell;\n   var context = editor.context;\n\n   var rowpane, colpane, first, last;\n   var rowindex = 0;\n   var colindex = 0;\n   var headercell;\n\n   if (!ecell) return;\n\n   // Handle ecell on a hidden column/row.\n   while (context.sheetobj.colattribs.hide[SocialCalc.rcColname(ecell.col)] == \"yes\") {\n      ecell.col++;\n      }\n   while (context.sheetobj.rowattribs.hide[ecell.row] == \"yes\") {\n      ecell.row++;\n      }\n\n   ecell.coord = SocialCalc.crToCoord(ecell.col, ecell.row);\n\n   for (rowpane=0; rowpane<context.rowpanes.length; rowpane++) {\n      first = context.rowpanes[rowpane].first;\n      last = context.rowpanes[rowpane].last;\n      if (ecell.row >= first && ecell.row <= last) {\n         var i = 2+rowindex+ecell.row-first\n         if (editor.fullgrid !== null && i >= 0) {\n            headercell = editor.fullgrid.childNodes[1].childNodes[i].childNodes[0];\n            if (headercell) {\n               if (context.classnames) headercell.className=context.classnames[selected+\"rowname\"];\n               if (context.explicitStyles) headercell.style.cssText=context.explicitStyles[selected+\"rowname\"];\n               headercell.style.verticalAlign=\"top\"; // to get around Safari making top of centered row number be\n                                                     // considered top of row (and can't get <row> position in Safari)\n               }\n            }\n         }\n      rowindex += last - first + 1 + 1;\n      }\n\n   for (colpane=0; colpane<context.colpanes.length; colpane++) {\n      first = context.colpanes[colpane].first;\n      last = context.colpanes[colpane].last;\n      if (ecell.col >= first && ecell.col <= last) {\n         var i = 1+colindex+ecell.col-first\n         if (editor.fullgrid !== null && i >= 0) {\n            headercell = editor.fullgrid.childNodes[1].childNodes[1].childNodes[i];\n            if (headercell) {\n               if (context.classnames) headercell.className=context.classnames[selected+\"colname\"];\n               if (context.explicitStyles) headercell.style.cssText=context.explicitStyles[selected+\"colname\"];\n               }\n            }\n         }\n      colindex += last - first + 1 + 1;\n      }\n   }\n\n//\n// ECellReadonly(editor, ecoord)\n//\n// Returns true if ecoord is readonly (or ecell if missing).\n//\n\nSocialCalc.ECellReadonly = function(editor, ecoord) {\n\n   if (!ecoord && editor.ecell) {\n      ecoord = editor.ecell.coord;\n      }\n\n   if (!ecoord) return false;\n\n   var cell = editor.context.sheetobj.cells[ecoord];\n   return cell && cell.readonly;\n\n   }\n\n//\n// RangeAnchor(editor, ecoord)\n//\n// Sets the anchor of a range to ecoord (or ecell if missing).\n//\n\nSocialCalc.RangeAnchor = function(editor, ecoord) {\n\n   if (editor.range.hasrange) {\n      editor.RangeRemove();\n      }\n\n   editor.RangeExtend(ecoord);\n\n   }\n\n//\n// RangeExtend(editor, ecoord)\n//\n// Sets the other corner of the range to ecoord or, if missing, ecell.\n//\n\nSocialCalc.RangeExtend = function(editor, ecoord) {\n\n   var a, cell, cr, coord, row, col, f;\n\n   var highlights = editor.context.highlights;\n   var range = editor.range;\n   var range2 = editor.range2;\n\n   var ecell;\n   if (ecoord) {\n      ecell = SocialCalc.coordToCr(ecoord);\n      ecell.coord = ecoord;\n      }\n   else ecell = editor.ecell;\n\n   if (!ecell) return; // just in case\n\n   if (!range.hasrange) { // called without RangeAnchor...\n      range.anchorcoord = ecell.coord;\n      range.anchorrow = ecell.row;\n      range.top = ecell.row;\n      range.bottom = ecell.row;\n      range.anchorcol = ecell.col;\n      range.left = ecell.col;\n      range.right = ecell.col;\n      range.hasrange = true;\n      }\n\n   if (range.anchorrow < ecell.row) {\n      range.top = range.anchorrow;\n      range.bottom = ecell.row;\n      }\n   else {\n      range.top = ecell.row;\n      range.bottom = range.anchorrow;\n      }\n   if (range.anchorcol < ecell.col) {\n      range.left = range.anchorcol;\n      range.right = ecell.col;\n      }\n   else {\n      range.left = ecell.col;\n      range.right = range.anchorcol;\n      }\n\n   for (coord in highlights) {\n      switch (highlights[coord]) {\n         case \"range\":\n            highlights[coord] = \"unrange\";\n            break;\n         case \"range2\":\n            highlights[coord] = \"unrange2\";\n            break;\n         }\n      }\n\n   for (row=range.top; row<=range.bottom; row++) {\n      for (col=range.left; col<=range.right; col++) {\n         coord = SocialCalc.crToCoord(col, row);\n         switch (highlights[coord]) {\n            case \"unrange\":\n               highlights[coord] = \"range\";\n               break;\n            case \"cursor\":\n               break;\n            case \"unrange2\":\n            default:\n               highlights[coord] = \"newrange\";\n               break;\n            }\n         }\n      }\n\n   for (row=range2.top; range2.hasrange && row<=range2.bottom; row++) {\n      for (col=range2.left; col<=range2.right; col++) {\n         coord = SocialCalc.crToCoord(col, row);\n         switch (highlights[coord]) {\n            case \"unrange2\":\n               highlights[coord] = \"range2\";\n               break;\n            case \"range\":\n            case \"newrange\":\n            case \"cursor\":\n               break;\n            default:\n               highlights[coord] = \"newrange2\";\n               break;\n            }\n         }\n      }\n\n   for (coord in highlights) {\n\n      switch (highlights[coord]) {\n         case \"unrange\":\n            delete highlights[coord];\n            break;\n         case \"newrange\":\n            highlights[coord] = \"range\";\n            break;\n         case \"newrange2\":\n            highlights[coord] = \"range2\";\n            break;\n         case \"range\":\n         case \"range2\":\n         case \"cursor\":\n            continue;\n         }\n\n      cr = SocialCalc.coordToCr(coord);\n      cell = SocialCalc.GetEditorCellElement(editor, cr.row, cr.col);\n      editor.UpdateCellCSS(cell, cr.row, cr.col);\n\n      }\n\n   for (f in editor.RangeChangeCallback) { // let others know\n      editor.RangeChangeCallback[f](editor);\n      }\n\n   // create range/coord string and do status callback\n\n   coord = SocialCalc.crToCoord(editor.range.left, editor.range.top);\n   if (editor.range.left!=editor.range.right || editor.range.top!=editor.range.bottom) { // more than one cell\n      coord += \":\" + SocialCalc.crToCoord(editor.range.right, editor.range.bottom);\n      }\n   for (f in editor.StatusCallback) {\n      editor.StatusCallback[f].func(editor, \"rangechange\", coord, editor.StatusCallback[f].params);\n      }\n\n   return;\n\n   }\n\n//\n// RangeRemove(editor)\n//\n// Turns off the range.\n//\n\nSocialCalc.RangeRemove = function(editor) {\n\n   var cell, cr, coord, row, col, f;\n\n   var highlights = editor.context.highlights;\n   var range = editor.range;\n   var range2 = editor.range2;\n\n   if (!range.hasrange && !range2.hasrange) return;\n\n   for (row=range2.top; range2.hasrange && row<=range2.bottom; row++) {\n      for (col=range2.left; col<=range2.right; col++) {\n         coord = SocialCalc.crToCoord(col, row);\n         switch (highlights[coord]) {\n            case \"range\":\n               highlights[coord] = \"newrange2\";\n               break;\n            case \"range2\":\n            case \"cursor\":\n               break;\n            default:\n               highlights[coord] = \"newrange2\";\n               break;\n            }\n         }\n      }\n\n   for (coord in highlights) {\n      switch (highlights[coord]) {\n         case \"range\":\n            delete highlights[coord];\n            break;\n         case \"newrange2\":\n            highlights[coord] = \"range2\";\n            break;\n         case \"cursor\":\n            continue;\n         }\n      cr = SocialCalc.coordToCr(coord);\n      cell=SocialCalc.GetEditorCellElement(editor, cr.row, cr.col);\n      editor.UpdateCellCSS(cell, cr.row, cr.col);\n      }\n\n   range.hasrange = false;\n\n   for (f in editor.RangeChangeCallback) { // let others know\n      editor.RangeChangeCallback[f](editor);\n      }\n\n   for (f in editor.StatusCallback) {\n      editor.StatusCallback[f].func(editor, \"rangechange\", \"\", editor.StatusCallback[f].params);\n      }\n\n   return;\n\n   }\n\n//\n// Range2Remove(editor)\n//\n// Turns off the range2.\n//\n\nSocialCalc.Range2Remove = function(editor) {\n\n   var cell, cr, coord, row, col, f;\n\n   var highlights = editor.context.highlights;\n   var range2 = editor.range2;\n\n   if (!range2.hasrange) return;\n\n   for (coord in highlights) {\n      switch (highlights[coord]) {\n         case \"range2\":\n            delete highlights[coord];\n            break;\n         case \"range\":\n         case \"cursor\":\n            continue;\n         }\n      cr = SocialCalc.coordToCr(coord);\n      cell=SocialCalc.GetEditorCellElement(editor, cr.row, cr.col);\n      editor.UpdateCellCSS(cell, cr.row, cr.col);\n      }\n\n   range2.hasrange = false;\n\n   return;\n\n   }\n\n//\n// FitToEditTable(editor)\n//\n// Figure out (through column width declarations and approximation of pixels per row)\n// how many rendered rows and columns you need to be at least a little larger than\n// the editor's editing area.\n//\n\nSocialCalc.FitToEditTable = function(editor) {\n\n   var colnum, colname, colwidth, totalwidth, totalrows, rownum, rowpane, needed;\n\n   var context=editor.context;\n   var sheetobj=context.sheetobj;\n   var sheetcolattribs=sheetobj.colattribs;\n\n   // Calculate column width data\n\n   totalwidth=context.showRCHeaders ? context.rownamewidth-0 : 0;\n   for (colpane=0; colpane<context.colpanes.length-1; colpane++) { // Get width of all but last pane\n      for (colnum=context.colpanes[colpane].first; colnum<=context.colpanes[colpane].last; colnum++) {\n         colname=SocialCalc.rcColname(colnum);\n         if (sheetobj.colattribs.hide[colname] != \"yes\") {\n            colwidth = sheetobj.colattribs.width[colname] || sheetobj.attribs.defaultcolwidth || SocialCalc.Constants.defaultColWidth;\n            if (colwidth==\"blank\" || colwidth==\"auto\") colwidth=\"\";\n            totalwidth+=(colwidth && ((colwidth-0)>0)) ? (colwidth-0) : 10;\n            }\n         }\n      }\n\n   for (colnum=context.colpanes[colpane].first; colnum<=10000; colnum++) { //!!! max for safety, but makes that col max!!!\n      colname=SocialCalc.rcColname(colnum);\n      if (sheetobj.colattribs.hide[colname] != \"yes\") {\n         colwidth = sheetobj.colattribs.width[colname] || sheetobj.attribs.defaultcolwidth || SocialCalc.Constants.defaultColWidth;\n         if (colwidth==\"blank\" || colwidth==\"auto\") colwidth=\"\";\n         totalwidth+=(colwidth && ((colwidth-0)>0)) ? (colwidth-0) : 10;\n         }\n      if (totalwidth > editor.tablewidth) break;\n      }\n\n   context.colpanes[colpane].last = context.sheetobj.attribs.usermaxcol || colnum;\n\n   // Calculate row height data\n\n   // find first visible row - Bug fix when many rows hidden - as PANEL formula hides many rows\n   var firstRow = context.rowpanes[0].first;\n   var lastRow = context.sheetobj.attribs.lastrow;\n   while(sheetobj.rowattribs.hide[firstRow] == \"yes\" && firstRow <lastRow) firstRow++;\n   context.rowpanes[0].first = firstRow;\n\n   // count visible rows in pane(s)\n   totalrows=context.showRCHeaders ? 1 : 0;\n   for (rowpane=0; rowpane<context.rowpanes.length-1; rowpane++) { // count all panes but last one\n      totalrows += context.rowpanes[rowpane].last - context.rowpanes[rowpane].first + 1;\n      for (rownum=context.rowpanes[rowpane].first; rownum<=context.rowpanes[rowpane].last; rownum++) {\n         if (sheetobj.rowattribs.hide[rownum] == \"yes\") {\n            totalrows--;\n            }\n         }\n      }\n\n   needed = editor.tableheight - totalrows * context.pixelsPerRow; // estimate amount needed\n\n   context.rowpanes[rowpane].last = context.sheetobj.attribs.usermaxrow || context.rowpanes[rowpane].first + Math.floor(needed / context.pixelsPerRow) + 1;\n\n   }\n\n//\n// CalculateEditorPositions(editor)\n//\n// Calculate the screen positions and other values of various editing elements\n// These values change and need to be recomputed when the pane first/last or cell contents change,\n// as well as new column widths, etc.\n//\n// Note: Only call this after the grid has been rendered! You may have to wait for a timeout...\n//\n\nSocialCalc.CalculateEditorPositions = function(editor) {\n\n   var rowpane, colpane, i;\n\n   editor.gridposition = SocialCalc.GetElementPosition(editor.griddiv);\n\n   var element = editor.griddiv.firstChild.lastChild.childNodes[1].childNodes[0]; // 2nd tr 1st td\n   editor.headposition = SocialCalc.GetElementPosition(element);\n   editor.headposition.left += element.offsetWidth;\n   editor.headposition.top += element.offsetHeight;\n\n   editor.rowpositions = [];\n   for (rowpane=0; rowpane<editor.context.rowpanes.length; rowpane++) {\n      editor.CalculateRowPositions(rowpane, editor.rowpositions, editor.rowheight);\n      }\n   for (i=0; i<editor.rowpositions.length; i++) {\n      if (editor.rowpositions[i]>editor.gridposition.top+editor.tableheight) break;\n      }\n   editor.lastvisiblerow = i-1;\n\n   editor.colpositions = [];\n   for (colpane=0; colpane<editor.context.colpanes.length; colpane++) {\n      editor.CalculateColPositions(colpane, editor.colpositions, editor.colwidth);\n      }\n   for (i=0; i<editor.colpositions.length; i++) {\n      if (editor.colpositions[i]>editor.gridposition.left+editor.tablewidth) break;\n      }\n   editor.lastvisiblecol = i-1;\n\n   editor.firstscrollingrow = editor.context.rowpanes[editor.context.rowpanes.length-1].first;\n   while (editor.context.sheetobj.rowattribs.hide[editor.firstscrollingrow] == \"yes\") {\n      editor.firstscrollingrow++;\n      }\n   editor.firstscrollingrowtop = editor.rowpositions[editor.firstscrollingrow] || editor.headposition.top;\n   editor.lastnonscrollingrow = editor.context.rowpanes.length-1 > 0 ?\n         editor.context.rowpanes[editor.context.rowpanes.length-2].last : 0;\n   editor.firstscrollingcol = editor.context.colpanes[editor.context.colpanes.length-1].first;\n   while (editor.context.sheetobj.colattribs.hide[SocialCalc.rcColname(editor.firstscrollingcol)] == \"yes\") {\n      editor.firstscrollingcol++;\n      }\n   editor.firstscrollingcolleft = editor.colpositions[editor.firstscrollingcol] || editor.headposition.left;\n   editor.lastnonscrollingcol = editor.context.colpanes.length-1 > 0 ?\n         editor.context.colpanes[editor.context.colpanes.length-2].last : 0;\n\n   // Now do the table controls\n\n   editor.verticaltablecontrol.ComputeTableControlPositions();\n   editor.horizontaltablecontrol.ComputeTableControlPositions();\n   }\n\n//\n// ScheduleRender(editor)\n//\n// Do a series of timeouts to render the sheet, wait for background layout and\n// rendering by the browser, and then update editor visuals, sliders, etc.\n//\n\nSocialCalc.ScheduleRender = function(editor) {\n   if(editor.ignoreRender == true) return; // formDataViewer is only used for \"ExecuteSheetCommand\" fumctions - so skip render\n   if (editor.timeout) window.clearTimeout(editor.timeout); // in case called more than once, just use latest\n\n   SocialCalc.EditorSheetStatusCallback(null, \"schedrender\", null, editor);\n   editor.timeout = window.setTimeout(function() { SocialCalc.DoRenderStep(editor); }, 1);\n\n   }\n\n// DoRenderStep(editor)\n//\n\nSocialCalc.DoRenderStep = function(editor) {\n\n   editor.timeout = null;\n\n   editor.EditorRenderSheet();\n\n   SocialCalc.EditorSheetStatusCallback(null, \"renderdone\", null, editor);\n\n   SocialCalc.EditorSheetStatusCallback(null, \"schedposcalc\", null, editor);\n\n   editor.timeout = window.setTimeout(function() { SocialCalc.DoPositionCalculations(editor); }, 1);\n\n   }\n\n//\n// SocialCalc.SchedulePositionCalculations(editor)\n//\n\nSocialCalc.SchedulePositionCalculations = function(editor) {\n\n   SocialCalc.EditorSheetStatusCallback(null, \"schedposcalc\", null, editor);\n\n   editor.timeout = window.setTimeout(function() { SocialCalc.DoPositionCalculations(editor); }, 1);\n\n   }\n\n// DoPositionCalculations(editor)\n//\n// Update editor visuals, sliders, etc.\n//\n// Note: Only call this after the DOM objects have been modified and rendered!\n//\n\nSocialCalc.DoPositionCalculations = function(editor) {\n\n   editor.timeout = null;\n\n   editor.CalculateEditorPositions();\n   editor.verticaltablecontrol.PositionTableControlElements();\n   editor.horizontaltablecontrol.PositionTableControlElements();\n\n   SocialCalc.EditorSheetStatusCallback(null, \"doneposcalc\", null, editor);\n\n   if (editor.ensureecell && editor.ecell && !editor.deferredCommands.length) { // don't do if deferred cmd to execute\n      editor.ensureecell = false;\n      editor.EnsureECellVisible(); // this could cause another redisplay\n      }\n\n   editor.cellhandles.ShowCellHandles(true);\n\n\n//!!! Need to now check to see if this positioned controls out of the editing area\n//!!! (such as when there is a large wrapped cell and it pushes the pane boundary too far down).\n\n   }\n\nSocialCalc.CalculateRowPositions = function(editor, panenum, positions, sizes) {\n\n   var toprow, rowpane, rownum, offset, trowobj, cellposition;\n\n   var context=editor.context;\n   var sheetobj=context.sheetobj;\n\n   var tbodyobj;\n\n   // eddy CalculateRowPositions {\n//   if (!context.showRCHeaders) throw(\"Needs showRCHeaders=true\");\n   if (!context.showRCHeaders) return;\n   // } CalculateRowPositions\n\n   tbodyobj=editor.fullgrid.lastChild;\n\n   // Calculate start of this pane as row in this table:\n\n   toprow = 2;\n   for (rowpane=0; rowpane<panenum; rowpane++) {\n      toprow += context.rowpanes[rowpane].last - context.rowpanes[rowpane].first + 2; // skip pane and spacing row\n      }\n\n   offset = 0;\n   for (rownum=context.rowpanes[rowpane].first; rownum<=context.rowpanes[rowpane].last; rownum++) {\n      trowobj = tbodyobj.childNodes[toprow+offset];\n      offset++;\n      if (!trowobj) { continue; }\n\n      if (!positions[rownum]) {\n         positions[rownum] = trowobj.firstChild.offsetTop;\n         sizes[rownum] = trowobj.firstChild.offsetHeight;\n         }\n      }\n\n   return;\n\n   }\n\nSocialCalc.CalculateColPositions = function(editor, panenum, positions, sizes) {\n\n   var leftcol, colpane, colnum, offset, trowobj, cellposition;\n\n   var context=editor.context;\n   var sheetobj=context.sheetobj;\n\n   var tbodyobj;\n\n   // eddy CalculateColPositions {\n   // if (!context.showRCHeaders) throw(\"Needs showRCHeaders=true\");\n   if (!context.showRCHeaders) return;\n   // } CalculateColPositions\n\n   tbodyobj=editor.fullgrid.lastChild;\n\n   // Calculate start of this pane as column in this table:\n\n   leftcol = 1;\n   for (colpane=0; colpane<panenum; colpane++) {\n      leftcol += context.colpanes[colpane].last - context.colpanes[colpane].first + 2; // skip pane and spacing col\n      }\n\n   trowobj = tbodyobj.childNodes[1]; // get heading row, which has all columns\n   offset = 0;\n   for (colnum=context.colpanes[colpane].first; colnum<=context.colpanes[colpane].last; colnum++) {\n      cellposition = SocialCalc.GetElementPosition(trowobj.childNodes[leftcol+offset]);\n      if (!positions[colnum]) {\n         positions[colnum] = cellposition.left; // first one takes precedence\n         if (trowobj.childNodes[leftcol+offset]) {\n            sizes[colnum] = trowobj.childNodes[leftcol+offset].offsetWidth;\n            }\n         }\n      offset++;\n      }\n\n   return;\n\n   }\n\n\n// ScrollRelative(editor, vertical, amount)\n//\n// If vertical true, scrolls up(-)/down(+), else left(-)/right(+)\n\nSocialCalc.ScrollRelative = function(editor, vertical, amount) {\n\n   if (vertical) {\n      editor.ScrollRelativeBoth(amount, 0);\n      }\n   else {\n      editor.ScrollRelativeBoth(0, amount);\n      }\n   return;\n\n   }\n\n// ScrollRelativeBoth(editor, vamount, hamount)\n//\n// Does both with one render\n\nSocialCalc.ScrollRelativeBoth = function(editor, vamount, hamount) {\n\n   var context=editor.context;\n   var dv = vamount > 0 ? 1 : -1, dh = hamount > 0 ? 1 : -1;\n\n   var vplen=context.rowpanes.length;\n   var vlimit = vplen>1 ? context.rowpanes[vplen-2].last+1 : 1; // don't scroll past here\n   if (context.rowpanes[vplen-1].first+vamount < vlimit) { // limit amount\n      vamount = (-context.rowpanes[vplen-1].first) + vlimit;\n      }\n\n   var hplen=context.colpanes.length;\n   var hlimit = hplen>1 ? context.colpanes[hplen-2].last+1 : 1; // don't scroll past here\n   if (context.colpanes[hplen-1].first+hamount < hlimit) { // limit amount\n      hamount = (-context.colpanes[hplen-1].first) + hlimit;\n      }\n\n   // Handle hidden column by finding a next one that's not hidden.\n   while (context.sheetobj.colattribs.hide[SocialCalc.rcColname(context.colpanes[hplen-1].first+hamount)] == \"yes\") {\n      hamount += dh;\n      if (hamount < 1) {\n         hamount = 0;\n         break;\n         }\n      }\n\n   // Handle hidden row by finding a next one that's not hidden.\n   while (context.sheetobj.rowattribs.hide[context.rowpanes[vplen-1].first+vamount] == \"yes\") {\n      vamount += dv;\n      if (vamount < 1) {\n         vamount = 0;\n         break;\n         }\n      }\n\n   if ((vamount==1 || vamount==-1) && hamount==0) { // special case quick scrolls\n      if (vamount==1) {\n         editor.ScrollTableUpOneRow();\n         }\n      else {\n         editor.ScrollTableDownOneRow();\n         }\n      if (editor.ecell) editor.SetECellHeaders(\"selected\");\n      editor.SchedulePositionCalculations();\n      return;\n      }\n\n   // Do a gross move and render\n\n   if (vamount!=0 || hamount!=0) {\n      context.rowpanes[vplen-1].first += vamount;\n      context.rowpanes[vplen-1].last += vamount;\n      context.colpanes[hplen-1].first += hamount;\n      context.colpanes[hplen-1].last += hamount;\n      editor.LimitLastPanes();\n      editor.FitToEditTable();\n      editor.ScheduleRender();\n      }\n\n   }\n\n\n// PageRelative(editor, vertical, direction)\n//\n// If vertical true, pages up(direction is -)/down(+), else left(-)/right(+)\n\nSocialCalc.PageRelative = function(editor, vertical, direction) {\n\n   var context=editor.context;\n   var panes=vertical ? \"rowpanes\" : \"colpanes\";\n   var lastpane=context[panes][context[panes].length-1];\n   var lastvisible=vertical ? \"lastvisiblerow\" : \"lastvisiblecol\";\n   var sizearray=vertical ? editor.rowheight : editor.colwidth;\n   var defaultsize=vertical ? SocialCalc.Constants.defaultAssumedRowHeight : SocialCalc.Constants.defaultColWidth;\n   var size, newfirst, totalsize, current;\n\n   if (direction > 0) { // down/right\n      newfirst = editor[lastvisible];\n      if (newfirst == lastpane.first) newfirst += 1; // move at least one\n      }\n   else {\n      if (vertical) { // calculate amount to scroll\n         totalsize = editor.tableheight - (editor.firstscrollingrowtop - editor.gridposition.top);\n         }\n      else {\n         totalsize = editor.tablewidth - (editor.firstscrollingcolleft - editor.gridposition.left);\n         }\n      totalsize -= sizearray[editor[lastvisible]] > 0 ? sizearray[editor[lastvisible]] : defaultsize;\n\n      for (newfirst=lastpane.first-1; newfirst>0; newfirst--) {\n         size = sizearray[newfirst] > 0 ? sizearray[newfirst] : defaultsize;\n         if (totalsize < size) break;\n         totalsize -= size;\n         }\n\n      current = lastpane.first;\n      if (newfirst >= current) newfirst = current-1; // move at least 1\n      if (newfirst < 1) newfirst = 1;\n      }\n\n   lastpane.first = newfirst;\n   lastpane.last = newfirst+1;\n   editor.LimitLastPanes();\n   editor.FitToEditTable();\n   editor.ScheduleRender();\n\n   }\n\n// LimitLastPanes(editor)\n//\n// Makes sure that the \"first\" of the last panes isn't before the last of the previous pane\n//\n\nSocialCalc.LimitLastPanes = function(editor) {\n\n   var context=editor.context;\n   var plen;\n\n   plen = context.rowpanes.length;\n   if (plen>1 && context.rowpanes[plen-1].first <= context.rowpanes[plen-2].last)\n       context.rowpanes[plen-1].first = context.rowpanes[plen-2].last+1;\n   if (context.sheetobj.attribs.usermaxrow && context.rowpanes[plen-1].first > context.sheetobj.attribs.usermaxrow)\n       context.rowpanes[plen-1].first = context.sheetobj.attribs.usermaxrow;\n\n   plen = context.colpanes.length;\n   if (plen>1 && context.colpanes[plen-1].first <= context.colpanes[plen-2].last)\n       context.colpanes[plen-1].first = context.colpanes[plen-2].last+1;\n   if (context.sheetobj.attribs.usermaxcol && context.colpanes[plen-1].first > context.sheetobj.attribs.usermaxcol)\n       context.colpanes[plen-1].first = context.sheetobj.attribs.usermaxcol;\n\n   }\n\nSocialCalc.ScrollTableUpOneRow = function(editor) {\n\n   var toprow, rowpane, rownum, colnum, colpane, cell, oldrownum, maxspan, newbottomrow, newrow, oldchild, bottomrownum;\n   var rowneedsrefresh={};\n\n   var context=editor.context;\n   var sheetobj=context.sheetobj;\n   var tableobj=editor.fullgrid;\n\n   var tbodyobj;\n\n   tbodyobj=tableobj.lastChild;\n\n   toprow = context.showRCHeaders ? 2 : 1;\n   for (rowpane=0; rowpane<context.rowpanes.length-1; rowpane++) {\n      toprow += context.rowpanes[rowpane].last - context.rowpanes[rowpane].first + 2; // skip pane and spacing row\n      }\n\n   // abort if scrolling beyond user max row\n   if (context.sheetobj.attribs.usermaxrow && (context.sheetobj.attribs.usermaxrow - context.rowpanes[rowpane].first < 1)) {\n      return tableobj;\n      }\n\n   tbodyobj.removeChild(tbodyobj.childNodes[toprow]);\n\n   context.rowpanes[rowpane].first++;\n   context.rowpanes[rowpane].last++;\n   editor.FitToEditTable();\n   context.CalculateColWidthData(); // Just in case, since normally done in RenderSheet\n\n   if (!context.sheetobj.attribs.usermaxrow || context.rowpanes[rowpane].last != context.sheetobj.attribs.usermaxrow) {\n      newbottomrow = context.RenderRow(context.rowpanes[rowpane].last, rowpane);\n      tbodyobj.appendChild(newbottomrow);\n      }\n\n   // if scrolled off a row with starting rowspans, replace rows for the largest rowspan\n\n   maxrowspan = 1;\n   oldrownum=context.rowpanes[rowpane].first - 1;\n\n   for (colpane=0; colpane<context.colpanes.length; colpane++) {\n      for (colnum=context.colpanes[colpane].first; colnum<=context.colpanes[colpane].last; colnum++) {\n         coord=SocialCalc.crToCoord(colnum, oldrownum);\n         if (context.cellskip[coord]) continue;\n         cell=sheetobj.cells[coord];\n         if (cell && cell.rowspan>maxrowspan) maxrowspan=cell.rowspan;\n         }\n      }\n\n   if (maxrowspan>1) {\n      for (rownum=1; rownum<maxrowspan; rownum++) {\n         if (rownum+oldrownum >= context.rowpanes[rowpane].last) break;\n         newrow=context.RenderRow(rownum+oldrownum, rowpane);\n         oldchild=tbodyobj.childNodes[toprow+rownum-1];\n         tbodyobj.replaceChild(newrow,oldchild);\n         }\n      }\n\n   // if added a row that includes rowspans from above, update the size of those to include new row\n\n   bottomrownum=context.rowpanes[rowpane].last;\n\n   for (colpane=0; colpane<context.colpanes.length; colpane++) {\n      for (colnum=context.colpanes[colpane].first; colnum<=context.colpanes[colpane].last; colnum++) {\n         coord=context.cellskip[SocialCalc.crToCoord(colnum, bottomrownum)];\n         if (!coord) continue; // only look at spanned cells\n         rownum=context.coordToCR[coord].row-0;\n         if (rownum==context.rowpanes[rowpane].last ||\n             rownum<context.rowpanes[rowpane].first) continue; // this row (colspan) or starts above pane\n         cell=sheetobj.cells[coord];\n         if (cell && cell.rowspan>1) rowneedsrefresh[rownum]=true; // remember row num to update\n         }\n      }\n\n   for (rownum in rowneedsrefresh) {\n      newrow=context.RenderRow(rownum, rowpane);\n      oldchild=tbodyobj.childNodes[(toprow+(rownum-context.rowpanes[rowpane].first))];\n      tbodyobj.replaceChild(newrow,oldchild);\n      }\n\n   return tableobj;\n   }\n\nSocialCalc.ScrollTableDownOneRow = function(editor) {\n\n   var toprow, rowpane, rownum, colnum, colpane, cell, newrownum, maxspan, newbottomrow, newrow, oldchild, bottomrownum;\n   var rowneedsrefresh={};\n\n   var context=editor.context;\n   var sheetobj=context.sheetobj;\n   var tableobj=editor.fullgrid;\n\n   var tbodyobj;\n\n   tbodyobj=tableobj.lastChild;\n\n   toprow = context.showRCHeaders ? 2 : 1;\n   for (rowpane=0; rowpane<context.rowpanes.length-1; rowpane++) {\n      toprow += context.rowpanes[rowpane].last - context.rowpanes[rowpane].first + 2; // skip pane and spacing row\n      }\n\n   if (!context.sheetobj.attribs.usermaxrow) {\n      tbodyobj.removeChild(tbodyobj.childNodes[toprow+(context.rowpanes[rowpane].last-context.rowpanes[rowpane].first)]);\n      }\n\n   context.rowpanes[rowpane].first--;\n   context.rowpanes[rowpane].last--;\n   editor.FitToEditTable();\n   context.CalculateColWidthData(); // Just in case, since normally done in RenderSheet\n\n   newrow = context.RenderRow(context.rowpanes[rowpane].first, rowpane);\n   tbodyobj.insertBefore(newrow, tbodyobj.childNodes[toprow]);\n\n   // if inserted a row with starting rowspans, replace rows for the largest rowspan\n\n   maxrowspan = 1;\n   newrownum=context.rowpanes[rowpane].first;\n\n   for (colpane=0; colpane<context.colpanes.length; colpane++) {\n      for (colnum=context.colpanes[colpane].first; colnum<=context.colpanes[colpane].last; colnum++) {\n         coord=SocialCalc.crToCoord(colnum, newrownum);\n         if (context.cellskip[coord]) continue;\n         cell=sheetobj.cells[coord];\n         if (cell && cell.rowspan>maxrowspan) maxrowspan=cell.rowspan;\n         }\n      }\n\n   if (maxrowspan>1) {\n      for (rownum=1; rownum<maxrowspan; rownum++) {\n         if (rownum+newrownum > context.rowpanes[rowpane].last) break;\n         newrow=context.RenderRow(rownum+newrownum, rowpane);\n         oldchild=tbodyobj.childNodes[toprow+rownum];\n         tbodyobj.replaceChild(newrow,oldchild);\n         }\n      }\n\n   // if last row now includes rowspans or rowspans from above, update the size of those to remove deleted row\n\n   bottomrownum=context.rowpanes[rowpane].last;\n\n   for (colpane=0; colpane<context.colpanes.length; colpane++) {\n      for (colnum=context.colpanes[colpane].first; colnum<=context.colpanes[colpane].last; colnum++) {\n         coord=SocialCalc.crToCoord(colnum, bottomrownum);\n         cell=sheetobj.cells[coord];\n         if (cell && cell.rowspan>1) {\n            rowneedsrefresh[bottomrownum]=true; // need to update this row\n            continue;\n            }\n         coord=context.cellskip[SocialCalc.crToCoord(colnum, bottomrownum)];\n         if (!coord) continue; // only look at spanned cells\n         rownum=context.coordToCR[coord].row-0;\n         if (rownum==bottomrownum ||\n             rownum<context.rowpanes[rowpane].first) continue; // this row (colspan) or starts above pane\n         cell=sheetobj.cells[coord];\n         if (cell && cell.rowspan>1) rowneedsrefresh[rownum]=true; // remember row num to update\n         }\n      }\n\n   for (rownum in rowneedsrefresh) {\n      newrow=context.RenderRow(rownum, rowpane);\n      oldchild=tbodyobj.childNodes[(toprow+(rownum-context.rowpanes[rowpane].first))];\n      tbodyobj.replaceChild(newrow,oldchild);\n      }\n\n   return tableobj;\n   }\n\n\n// *************************************\n//\n// InputBox class:\n//\n// This class deals with the text box for editing cell contents.\n// It mainly controls a user input box for typed content and is used to interact with\n// the keyboard code, etc.\n//\n// You can use this inside a formula bar control of some sort.\n// You create this after you have created a table editor object (but not necessarily\n// done the CreateTableEditor method).\n//\n// When the user starts typing text, or double-clicks on a cell, this object\n// comes into play.\n//\n// The element given when this is first constructed should be an input HTMLElement or\n// something that acts like one. Check the code here to see what is done to it.\n//\n// *************************************\n\nSocialCalc.InputBox = function(element, editor) {\n\n   if (!element) return; // invoked without enough data to work\n\n   this.element = element; // the input element associated with this InputBox\n   this.editor = editor; // the TableEditor this belongs to\n   this.inputEcho = null;\n\n   editor.inputBox = this;\n\n   element.onmousedown = SocialCalc.InputBoxOnMouseDown;\n\n   editor.MoveECellCallback.formulabar = function(e){\n      if (e.state!=\"start\") return; // if not in normal keyboard mode don't replace formula bar\n      editor.inputBox.DisplayCellContents(e.ecell.coord);\n      };\n   }\n\n\n// Methods:\n\nSocialCalc.InputBox.prototype.DisplayCellContents = function(coord) {SocialCalc.InputBoxDisplayCellContents(this, coord);};\nSocialCalc.InputBox.prototype.ShowInputBox = function(show) {this.editor.inputEcho.ShowInputEcho(show);};\nSocialCalc.InputBox.prototype.GetText = function() {return this.element.value;};\nSocialCalc.InputBox.prototype.SetText = function(newtext) {\n   if (!this.element) return;\n   this.element.value=newtext;\n   this.editor.inputEcho.SetText(newtext+\"_\");\n   };\nSocialCalc.InputBox.prototype.Focus = function() {SocialCalc.InputBoxFocus(this);};\nSocialCalc.InputBox.prototype.Blur = function() {return this.element.blur();};\nSocialCalc.InputBox.prototype.Select = function(t) {\n   if (!this.element) return;\n   switch (t) {\n      case \"end\":\n         if (document.selection && document.selection.createRange) {\n            /* IE 4+ - Safer than setting .selectionEnd as it also works for Textareas. */\n            try {\n               var range = document.selection.createRange().duplicate();\n               range.moveToElementText(this.element);\n               range.collapse(false);\n               range.select();\n            }\n            catch (e) {\n               if (this.element.selectionStart!=undefined) {\n                  this.element.selectionStart=this.element.value.length;\n                  this.element.selectionEnd=this.element.value.length;\n               }\n            }\n         } else if (this.element.selectionStart!=undefined) {\n            this.element.selectionStart=this.element.value.length;\n            this.element.selectionEnd=this.element.value.length;\n         }\n         break;\n      }\n   };\n\n// Functions:\n\n//\n// SocialCalc.InputBoxDisplayCellContents(inputbox, coord)\n//\n// Sets input box to the contents of the specified cell (or ecell if null).\n//\n\nSocialCalc.InputBoxDisplayCellContents = function(inputbox, coord) {\n\n   var scc = SocialCalc.Constants;\n\n   if (!inputbox) return;\n   if (!coord) {\n     if (!inputbox.editor) return; // not initialized yet\n     if (!inputbox.editor.ecell) return; // not initialized yet\n     coord = inputbox.editor.ecell.coord;\n   }\n   var text = SocialCalc.GetCellContents(inputbox.editor.context.sheetobj, coord);\n   if (text.indexOf(\"\\n\")!=-1) {\n      text = scc.s_inputboxdisplaymultilinetext;\n      inputbox.element.disabled = true;\n      }\n   else if (inputbox.editor.ECellReadonly()) {\n      inputbox.element.disabled = true;\n      }\n   else {\n      inputbox.element.disabled = false;\n      }\n   inputbox.SetText(text);\n\n   }\n\n//\n// SocialCalc.InputBoxFocus(inputbox)\n//\n// Call this to have the input box get the focus and respond to keystrokes\n// but still pass them off to SocialCalc.ProcessKey.\n//\n\nSocialCalc.InputBoxFocus = function(inputbox) {\n\n   if (!inputbox) return;\n   inputbox.element.focus();\n   var editor = inputbox.editor;\n   editor.state = \"input\";\n   var wval = editor.workingvalues;\n   wval.partialexpr = \"\";\n   wval.ecoord = editor.ecell.coord;\n   wval.erow = editor.ecell.row;\n   wval.ecol = editor.ecell.col;\n\n   };\n\n//\n// SocialCalc.InputBoxOnMouseDown(e)\n//\n// This is called when the input box gets the focus. It then responds to keystrokes\n// and pass them off to SocialCalc.ProcessKey, but in a different editing state.\n//\n\nSocialCalc.InputBoxOnMouseDown = function(e) {\n\n   var editor = SocialCalc.Keyboard.focusTable; // get TableEditor doing keyboard stuff\n   if (!editor) return true; // we're not handling it -- let browser do default\n   var wval = editor.workingvalues;\n\n   switch (editor.state) {\n      case \"start\":\n         editor.state=\"inputboxdirect\";\n         wval.partialexpr = \"\";\n         wval.ecoord = editor.ecell.coord;\n         wval.erow = editor.ecell.row;\n         wval.ecol = editor.ecell.col;\n         editor.inputEcho.ShowInputEcho(true);\n         break;\n\n      case \"input\":\n         wval.partialexpr = \"\"; // make sure not pointing\n         editor.MoveECell(wval.ecoord);\n         editor.state=\"inputboxdirect\";\n         SocialCalc.KeyboardFocus(); // may have come here from outside of grid\n         break;\n\n      case \"inputboxdirect\":\n         break;\n      }\n   }\n\n\n// *************************************\n//\n// InputEcho class:\n//\n// This object creates and controls an element that echos what's in the InputBox during editing\n// It is draggable.\n//\n// *************************************\n\nSocialCalc.InputEcho = function(editor) {\n\n   var scc = SocialCalc.Constants;\n\n   this.editor = editor; // the TableEditor this belongs to\n   this.text = \"\"; // current value of what is displayed\n   this.interval = null; // timer handle\n\n   this.container = null; // element containing main echo as well as prompt line\n   this.main = null; // main echo area\n   this.prompt = null;\n   this.hint = null; // focus cell hint area\n\n   this.functionbox = null; // function chooser dialog\n\n   this.container = document.createElement(\"div\");\n   SocialCalc.setStyles(this.container, \"display:none;position:absolute;zIndex:10;\");\n\n   this.main = document.createElement(\"div\");\n   if (scc.defaultInputEchoClass) this.main.className = scc.defaultInputEchoClass;\n   if (scc.defaultInputEchoStyle) SocialCalc.setStyles(this.main, scc.defaultInputEchoStyle);\n   this.main.innerHTML = \"&nbsp;\";\n\n   this.hint = document.createElement(\"div\");\n   if (scc.defaultInputEchoHintClass) this.hint.className = scc.defaultInputEchoHintClass;\n   if (scc.defaultInputEchoHintStyle) SocialCalc.setStyles(this.hint, scc.defaultInputEchoHintStyle);\n   this.hint.innerHTML = \"\";\n\n   this.container.appendChild(this.hint);\n   this.container.appendChild(this.main);\n\n   this.prompt = document.createElement(\"div\");\n   if (scc.defaultInputEchoPromptClass) this.prompt.className = scc.defaultInputEchoPromptClass;\n   if (scc.defaultInputEchoPromptStyle) SocialCalc.setStyles(this.prompt, scc.defaultInputEchoPromptStyle);\n   this.prompt.innerHTML = \"\";\n\n   this.container.appendChild(this.prompt);\n\n   SocialCalc.DragRegister(this.main, true, true,\n                 {MouseDown: SocialCalc.DragFunctionStart,\n                  MouseMove: SocialCalc.DragFunctionPosition,\n                  MouseUp: SocialCalc.DragFunctionPosition,\n                  Disabled: null, positionobj: this.container},\n                  this.editor.toplevel);\n\n   editor.toplevel.appendChild(this.container);\n\n   }\n\n// Methods:\n\nSocialCalc.InputEcho.prototype.ShowInputEcho = function(show) {return SocialCalc.ShowInputEcho(this, show);};\nSocialCalc.InputEcho.prototype.SetText = function(str) {return SocialCalc.SetInputEchoText(this, str);};\n\n// Functions:\n\nSocialCalc.ShowInputEcho = function(inputecho, show) {\n\n   var cell, position;\n   var editor = inputecho.editor;\n\n   if (!editor) return;\n\n   if (show) {\n      editor.cellhandles.ShowCellHandles(false);\n      cell=SocialCalc.GetEditorCellElement(editor, editor.ecell.row, editor.ecell.col);\n      if (cell) {\n         position = SocialCalc.GetElementPosition(cell.element);\n         inputecho.container.style.left = (position.left-1)+\"px\";\n         inputecho.container.style.top = (position.top-1)+\"px\";\n         }\n      inputecho.hint.innerHTML = editor.ecell.coord;\n      inputecho.container.style.display = \"block\";\n      if (inputecho.interval) window.clearInterval(inputecho.interval); // just in case\n      inputecho.interval = window.setInterval(SocialCalc.InputEchoHeartbeat, 50);\n      }\n   else {\n      if (inputecho.interval) window.clearInterval(inputecho.interval);\n      inputecho.container.style.display = \"none\";\n      }\n\n   }\n\nSocialCalc.SetInputEchoText = function(inputecho, str) {\n\n   var scc = SocialCalc.Constants;\n   var fname, fstr;\n   var newstr = SocialCalc.special_chars(str);\n   newstr = newstr.replace(/\\n/g,\"<br>\");\n\n   if (inputecho.text != newstr) {\n      inputecho.main.innerHTML = newstr;\n      inputecho.text = newstr;\n      }\n\n   var parts = str.match(/.*[\\+\\-\\*\\/\\&\\^\\<\\>\\=\\,\\(]([A-Za-z][A-Za-z][\\w\\.]*?)\\([^\\)]*$/);\n   if (str.charAt(0)==\"=\" && parts) {\n      fname = parts[1].toUpperCase();\n      if (SocialCalc.Formula.FunctionList[fname]) {\n         SocialCalc.Formula.FillFunctionInfo(); //  make sure filled\n         fstr = SocialCalc.special_chars(fname+\"(\"+SocialCalc.Formula.FunctionArgString(fname)+\")\");\n         }\n      else {\n         fstr = scc.ietUnknownFunction+fname;\n         }\n      if (inputecho.prompt.innerHTML != fstr) {\n         inputecho.prompt.innerHTML = fstr;\n         inputecho.prompt.style.display = \"block\";\n         }\n      }\n   else if (inputecho.prompt.style.display != \"none\") {\n      inputecho.prompt.innerHTML = \"\";\n      inputecho.prompt.style.display = \"none\";\n      }\n\n   }\n\nSocialCalc.InputEchoHeartbeat = function() {\n\n   var editor = SocialCalc.Keyboard.focusTable; // get TableEditor doing keyboard stuff\n   if (!editor) return true; // we're not handling it -- let browser do default\n\n   editor.inputEcho.SetText(editor.inputBox.GetText()+\"_\");\n\n   }\n\nSocialCalc.InputEchoMouseDown = function(e) {\n      var event = e || window.event;\n\n      var editor = SocialCalc.Keyboard.focusTable; // get TableEditor doing keyboard stuff\n      if (!editor) return true; // we're not handling it -- let browser do default\n\n//      if (event.stopPropagation) event.stopPropagation(); // DOM Level 2\n//      else event.cancelBubble = true; // IE 5+\n//      if (event.preventDefault) event.preventDefault(); // DOM Level 2\n//      else event.returnValue = false; // IE 5+\n\n      editor.inputBox.element.focus();\n\n//      return false;\n      };\n\n\n// *************************************\n//\n// CellHandles class:\n//\n// This object creates and controls the elements around the cursor cell for dragging, etc.\n//\n// *************************************\n\nSocialCalc.CellHandles = function(editor) {\n\n   var scc = SocialCalc.Constants;\n   var functions;\n\n   if (editor.noEdit) return; // leave us with nothing\n\n   this.editor = editor; // the TableEditor this belongs to\n\n   this.noCursorSuffix = false;\n\n   this.movedmouse = false; // used to detect no-op\n\n   this.draghandle = document.createElement(\"div\");\n   SocialCalc.setStyles(this.draghandle, \"display:none;position:absolute;zIndex:8;border:1px solid white;width:4px;height:4px;fontSize:1px;backgroundColor:#0E93D8;cursor:default;\");\n   this.draghandle.innerHTML = '&nbsp;';\n   editor.toplevel.appendChild(this.draghandle);\n   SocialCalc.AssignID(editor, this.draghandle, \"draghandle\");\n\n   var imagetype = \"png\";\n   if (navigator.userAgent.match(/MSIE 6\\.0/)) {\n      imagetype = \"gif\";\n      }\n\n   this.dragpalette = document.createElement(\"div\");\n   SocialCalc.setStyles(this.dragpalette, \"display:none;position:absolute;zIndex:8;width:90px;height:90px;fontSize:1px;textAlign:center;cursor:default;\"+\n      \"backgroundImage:url(\"+SocialCalc.Constants.defaultImagePrefix+\"drag-handles.\"+imagetype+\");\");\n   this.dragpalette.innerHTML = '&nbsp;';\n   editor.toplevel.appendChild(this.dragpalette);\n   SocialCalc.AssignID(editor, this.dragpalette, \"dragpalette\");\n\n   this.dragtooltip = document.createElement(\"div\");\n   SocialCalc.setStyles(this.dragtooltip, \"display:none;position:absolute;zIndex:9;border:1px solid black;width:100px;height:auto;fontSize:10px;backgroundColor:#FFFFFF;\");\n   this.dragtooltip.innerHTML = '&nbsp;';\n   editor.toplevel.appendChild(this.dragtooltip);\n   SocialCalc.AssignID(editor, this.dragtooltip, \"dragtooltip\");\n\n   this.fillinghandle = document.createElement(\"div\");\n   SocialCalc.setStyles(this.fillinghandle, \"display:none;position:absolute;zIndex:9;border:1px solid black;width:auto;height:14px;fontSize:10px;backgroundColor:#FFFFFF;\");\n   this.fillinghandle.innerHTML = '&nbsp;';\n   editor.toplevel.appendChild(this.fillinghandle);\n   SocialCalc.AssignID(editor, this.fillinghandle, \"fillinghandle\");\n\n   if (this.draghandle.addEventListener) { // DOM Level 2 -- Firefox, et al\n      this.draghandle.addEventListener(\"mousemove\", SocialCalc.CellHandlesMouseMoveOnHandle, false);\n      this.dragpalette.addEventListener(\"mousedown\", SocialCalc.CellHandlesMouseDown, false);\n      this.dragpalette.addEventListener(\"mousemove\", SocialCalc.CellHandlesMouseMoveOnHandle, false);\n      }\n   else if (this.draghandle.attachEvent) { // IE 5+\n      this.draghandle.attachEvent(\"onmousemove\", SocialCalc.CellHandlesMouseMoveOnHandle);\n      this.dragpalette.attachEvent(\"onmousedown\", SocialCalc.CellHandlesMouseDown);\n      this.dragpalette.attachEvent(\"onmousemove\", SocialCalc.CellHandlesMouseMoveOnHandle);\n      }\n   else { // don't handle this\n      throw \"Browser not supported\";\n      }\n\n   }\n\n// Methods:\n\nSocialCalc.CellHandles.prototype.ShowCellHandles = function(show, moveshow) {return SocialCalc.ShowCellHandles(this, show, moveshow);};\n\n// Functions:\n\nSocialCalc.ShowCellHandles = function(cellhandles, show, moveshow) {\n\n   var cell, cell2, position, position2;\n   var editor = cellhandles.editor;\n   var doshow = false;\n   var row, col;\n   var colinc = 1, rowinc = 1;\n\n   if (!editor) return;\n   if (!editor.ecell) return;\n\n   do { // a block that can you can \"break\" out of easily\n\n      if (!show) break;\n\n      row = editor.ecell.row;\n      col = editor.ecell.col;\n\n      if (editor.state != \"start\") break;\n      if (row >= editor.lastvisiblerow) break;\n      if (col >= editor.lastvisiblecol) break;\n      if (row < editor.firstscrollingrow) break;\n      if (col < editor.firstscrollingcol) break;\n\n      // Go beyond one column if hidden.\n      while (editor.context.sheetobj.colattribs.hide[SocialCalc.rcColname(col+colinc)] == \"yes\") {\n         colinc++;\n         }\n\n      // Go beyond one row if hidden.\n      while (editor.context.sheetobj.rowattribs.hide[row+rowinc] == \"yes\") {\n         rowinc++;\n         }\n\n      // Check colspan and rowspan.\n      cell = editor.context.sheetobj.cells[SocialCalc.crToCoord(col+colinc-1, row+rowinc-1)];\n      if (typeof cell != \"undefined\") {\n         colinc += (cell.colspan || 1) - 1;\n         rowinc += (cell.rowspan || 1) - 1;\n         }\n\n      if (editor.rowpositions[row+rowinc]+20>editor.horizontaltablecontrol.controlborder) {\n         break;\n         }\n      if (editor.rowpositions[row+rowinc]-10<editor.headposition.top) {\n         break;\n         }\n      if (editor.colpositions[col+colinc]+20>editor.verticaltablecontrol.controlborder) {\n         break;\n         }\n      if (editor.colpositions[col+colinc]-30<editor.headposition.left) {\n         break;\n         }\n\n      cellhandles.draghandle.style.left = (editor.colpositions[col+colinc]-1)+\"px\";\n      cellhandles.draghandle.style.top = (editor.rowpositions[row+rowinc]-1)+\"px\";\n      cellhandles.draghandle.style.display = \"block\";\n\n      if (moveshow) {\n         cellhandles.draghandle.style.display = \"none\";\n         cellhandles.dragpalette.style.left = (editor.colpositions[col+colinc]-45)+\"px\";\n         cellhandles.dragpalette.style.top = (editor.rowpositions[row+rowinc]-45)+\"px\";\n         cellhandles.dragpalette.style.display = \"block\";\n         cellhandles.dragtooltip.style.left = (editor.colpositions[col+colinc]-45)+\"px\";\n         cellhandles.dragtooltip.style.top = (editor.rowpositions[row+rowinc]+45)+\"px\";\n         cellhandles.dragtooltip.style.display = \"none\";\n         }\n\n      doshow = true;\n\n      }\n   while (false); // only do once\n\n   if (!doshow) {\n      cellhandles.draghandle.style.display = \"none\";\n      }\n   if (!moveshow) {\n      cellhandles.dragpalette.style.display = \"none\";\n      cellhandles.dragtooltip.style.display = \"none\";\n      }\n\n   }\n\nSocialCalc.CellHandlesMouseMoveOnHandle = function(e) {\n\n   var scc = SocialCalc.Constants;\n\n   var event = e || window.event;\n   var target = event.target || event.srcElement\n\n   var editor = SocialCalc.Keyboard.focusTable; // get TableEditor doing keyboard stuff\n   if (!editor) return true; // we're not handling it -- let browser do default\n   var cellhandles = editor.cellhandles;\n   if (!cellhandles.editor) return true; // no handles\n\n   var pos = SocialCalc.GetElementPositionWithScroll(editor.toplevel);\n   var clientX = event.clientX - pos.left;\n   var clientY = event.clientY - pos.top;\n\n   if (!editor.cellhandles.mouseDown) {\n      editor.cellhandles.ShowCellHandles(true, true); // show move handles, too\n\n      if (target == cellhandles.dragpalette) {\n         var whichhandle = SocialCalc.SegmentDivHit([scc.CH_radius1, scc.CH_radius2], editor.cellhandles.dragpalette, clientX, clientY);\n         if (whichhandle==0) { // off of active part of palette\n            SocialCalc.CellHandlesHoverTimeout();\n            return;\n            }\n         }\n\n      if (cellhandles.timer) {\n         window.clearTimeout(cellhandles.timer);\n         cellhandles.timer = null;\n         }\n      cellhandles.timer = window.setTimeout(SocialCalc.CellHandlesHoverTimeout, 3000);\n   }\n\n   return;\n\n   }\n\n//\n// whichsegment = SocialCalc.SegmentDivHit(segtable, divWithMouseHit, x, y)\n//\n// Takes segtable = [upperleft quadrant, upperright, bottomright, bottomleft]\n//  where each quadrant is either:\n//      0 = ignore hits here\n//      number = return this value\n//      array = a new segtable for this subquadrant\n//\n// Alternatively, segtable can be:\n//  [radius 1, radius 2] and it returns 0 if no hit,\n//  -1, -2, -3, -4 for inner quadrants, and +1...+4 for outer quadrants\n//\n\nSocialCalc.SegmentDivHit = function(segtable, divWithMouseHit, x, y) {\n\n   var width = divWithMouseHit.offsetWidth;\n   var height = divWithMouseHit.offsetHeight;\n   var left = divWithMouseHit.offsetLeft;\n   var top = divWithMouseHit.offsetTop;\n   var v = 0;\n   var table = segtable;\n   var len = Math.sqrt(Math.pow(x-left-(width/2.0-.5), 2)+Math.pow(y-top-(height/2.0-.5), 2));\n\n   if (table.length==2) { // type 2 segtable\n      if (x >= left && x < left+width/2 && y >= top && y < top+height/2) { // upper left\n         if (len <= segtable[0]) v = -1;\n         else if (len <= segtable[1]) v = 1;\n         }\n      if (x >= left+width/2 && x < left+width && y >= top && y < top+height/2) { // upper right\n         if (len <= segtable[0]) v = -2;\n         else if (len <= segtable[1]) v = 2;\n         }\n      if (x >= left+width/2 && x < left+width && y >= top+height/2 && y < top+height) { // bottom right\n         if (len <= segtable[0]) v = -3;\n         else if (len <= segtable[1]) v = 3;\n         }\n      if (x >= left && x < left+width/2 && y >= top+height/2 && y < top+height) { // bottom right\n         if (len <= segtable[0]) v = -4;\n         else if (len <= segtable[1]) v = 4;\n         }\n      return v;\n      }\n\n   while (true) {\n      if (x >= left && x < left+width/2 && y >= top && y < top+height/2) { // upper left\n         quadrant += \"1\";\n         v = table[0];\n         if (typeof v == \"number\") {\n            break;\n            }\n         table = v;\n         width = width/2;\n         height = height/2;\n         continue;\n         }\n      if (x >= left+width/2 && x < left+width && y >= top && y < top+height/2) { // upper right\n         quadrant += \"2\";\n         v = table[1];\n         if (typeof v == \"number\") {\n            break;\n            }\n         table = v;\n         width = width/2;\n         left = left+width;\n         height = height/2;\n         continue;\n         }\n      if (x >= left+width/2 && x < left+width && y >= top+height/2 && y < top+height) { // bottom right\n         quadrant += \"3\";\n         v = table[2];\n         if (typeof v == \"number\") {\n            break;\n            }\n         table = v;\n         width = width/2;\n         left = left + width;\n         height = height/2;\n         top = top + height;\n         continue;\n         }\n      if (x >= left && x < left+width/2 && y >= top+height/2 && y < top+height) { // bottom right\n         quadrant += \"4\";\n         v = table[3];\n         if (typeof v == \"number\") {\n            break;\n            }\n         table = v;\n         width = width/2;\n         height = height/2;\n         top = top + height;\n         continue;\n         }\n      return 0; // didn't match\n      }\n\n//addmsg((x-divWithMouseHit.offsetLeft)+\",\"+(y-divWithMouseHit.offsetTop)+\"=\"+quadrant+\" \"+v);\n   return v;\n\n}\n\nSocialCalc.CellHandlesHoverTimeout = function() {\n\n   editor = SocialCalc.Keyboard.focusTable; // get TableEditor doing keyboard stuff\n   if (!editor) return true; // we're not handling it -- let browser do default\n   var cellhandles = editor.cellhandles;\n   if (cellhandles.timer) {\n      window.clearTimeout(cellhandles.timer);\n      cellhandles.timer = null;\n      }\n   editor.cellhandles.ShowCellHandles(true, false); // hide move handles\n\n}\n\nSocialCalc.CellHandlesMouseDown = function(e) {\n\n   var scc = SocialCalc.Constants;\n   var editor, result, coord, textarea, wval, range;\n\n   var event = e || window.event;\n\n   var mouseinfo = SocialCalc.EditorMouseInfo;\n\n   editor = SocialCalc.Keyboard.focusTable; // get TableEditor doing keyboard stuff\n   if (!editor) return true; // we're not handling it -- let browser do default\n\n   if (editor.busy) return; // don't do anything when busy (is this correct?)\n\n   var cellhandles = editor.cellhandles;\n\n   cellhandles.movedmouse = false; // detect no-op\n\n   var pos = SocialCalc.GetElementPositionWithScroll(editor.toplevel);\n   var clientX = event.clientX - pos.left;\n   var clientY = event.clientY - pos.top;\n\n   if (cellhandles.timer) { // cancel timer\n      window.clearTimeout(cellhandles.timer);\n      cellhandles.timer = null;\n      }\n\n   cellhandles.dragtooltip.innerHTML = \"&nbsp;\";\n   cellhandles.dragtooltip.style.display = \"none\";\n\n   range = editor.range;\n\n   var whichhandle = SocialCalc.SegmentDivHit([scc.CH_radius1, scc.CH_radius2], editor.cellhandles.dragpalette, clientX, clientY);\n   if (whichhandle==1 || whichhandle==-1 || whichhandle==0) {\n      cellhandles.ShowCellHandles(true, false); // hide move handles\n      return;\n      }\n\n   mouseinfo.ignore = true; // stop other code from looking at the mouse\n\n   if (whichhandle==-3) {\n      cellhandles.dragtype = \"Fill\";\n//      mouseinfo.element = editor.cellhandles.fillhandle;\n      cellhandles.noCursorSuffix = false;\n      }\n   else if (whichhandle==3) {\n      cellhandles.dragtype = \"FillC\";\n//      mouseinfo.element = editor.cellhandles.fillhandle;\n      cellhandles.noCursorSuffix = false;\n      }\n   else if (whichhandle==-2) {\n      cellhandles.dragtype = \"Move\";\n//      mouseinfo.element = editor.cellhandles.movehandle1;\n      cellhandles.noCursorSuffix = true;\n      }\n   else if (whichhandle==-4) {\n      cellhandles.dragtype = \"MoveI\";\n//      mouseinfo.element = editor.cellhandles.movehandle2;\n      cellhandles.noCursorSuffix = false;\n      }\n   else if (whichhandle==2) {\n      cellhandles.dragtype = \"MoveC\";\n//      mouseinfo.element = editor.cellhandles.movehandle1;\n      cellhandles.noCursorSuffix = true;\n      }\n   else if (whichhandle==4) {\n      cellhandles.dragtype = \"MoveIC\";\n//      mouseinfo.element = editor.cellhandles.movehandle2;\n      cellhandles.noCursorSuffix = false;\n      }\n\n   cellhandles.filltype = null;\n\n   switch (cellhandles.dragtype) {\n      case \"Fill\":\n      case \"FillC\":\n         if (!range.hasrange) {\n            editor.RangeAnchor();\n            }\n         editor.range2.top = editor.range.top;\n         editor.range2.right = editor.range.right;\n         editor.range2.bottom = editor.range.bottom;\n         editor.range2.left = editor.range.left;\n         editor.range2.hasrange = true;\n         break;\n\n      case \"Move\":\n      case \"MoveI\":\n      case \"MoveC\":\n      case \"MoveIC\":\n         if (!range.hasrange) {\n            editor.RangeAnchor();\n            }\n         editor.range2.top = editor.range.top;\n         editor.range2.right = editor.range.right;\n         editor.range2.bottom = editor.range.bottom;\n         editor.range2.left = editor.range.left;\n         editor.range2.hasrange = true;\n         editor.RangeRemove();\n         break;\n\n      default:\n         return; // not for us\n      }\n\n   cellhandles.fillinghandle.style.left = (clientX)+\"px\";\n   cellhandles.fillinghandle.style.top = (clientY - 17)+\"px\";\n   cellhandles.fillinghandle.innerHTML = scc.s_CHindicatorOperationLookup[cellhandles.dragtype]+\n                                         (scc.s_CHindicatorDirectionLookup[editor.cellhandles.filltype] || \"\");\n   cellhandles.fillinghandle.style.display = \"block\";\n\n   cellhandles.ShowCellHandles(true, false); // hide move handles\n   cellhandles.mouseDown = true;\n\n   mouseinfo.editor = editor; // remember for later\n\n   coord = editor.ecell.coord; // start with cell with handles\n\n   cellhandles.startingcoord = coord;\n   cellhandles.startingX = clientX;\n   cellhandles.startingY = clientY;\n\n   mouseinfo.mouselastcoord = coord;\n\n   SocialCalc.KeyboardSetFocus(editor);\n\n   if (document.addEventListener) { // DOM Level 2 -- Firefox, et al\n      document.addEventListener(\"mousemove\", SocialCalc.CellHandlesMouseMove, true); // capture everywhere\n      document.addEventListener(\"mouseup\", SocialCalc.CellHandlesMouseUp, true); // capture everywhere\n      }\n   else if (cellhandles.draghandle.attachEvent) { // IE 5+\n      cellhandles.draghandle.setCapture();\n      cellhandles.draghandle.attachEvent(\"onmousemove\", SocialCalc.CellHandlesMouseMove);\n      cellhandles.draghandle.attachEvent(\"onmouseup\", SocialCalc.CellHandlesMouseUp);\n      cellhandles.draghandle.attachEvent(\"onlosecapture\", SocialCalc.CellHandlesMouseUp);\n     }\n   SocialCalc.StopPropagation(event);\n   return;\n\n   }\n\nSocialCalc.CellHandlesMouseMove = function(e) {\n\n   var scc = SocialCalc.Constants;\n   var editor, element, result, coord, now, textarea, sheetobj, cellobj, wval;\n   var crstart, crend, cr, c, r;\n\n   var event = e || window.event;\n\n   var mouseinfo = SocialCalc.EditorMouseInfo;\n   editor = mouseinfo.editor;\n   if (!editor) return; // not us, ignore\n   var cellhandles = editor.cellhandles;\n\n   element = mouseinfo.element;\n\n   var pos = SocialCalc.GetElementPositionWithScroll(editor.toplevel);\n   var clientX = event.clientX - pos.left;\n   var clientY = event.clientY - pos.top;\n   result = SocialCalc.GridMousePosition(editor, clientX, clientY); // get cell with move\n\n   if (!result) return;\n\n   if (result && !result.coord) {\n      SocialCalc.SetDragAutoRepeat(editor, result, SocialCalc.CellHandlesDragAutoRepeat);\n      return;\n      }\n\n   SocialCalc.SetDragAutoRepeat(editor, null); // stop repeating if it was\n\n   if (!result.coord) return;\n\n   crstart = SocialCalc.coordToCr(editor.cellhandles.startingcoord);\n   crend = SocialCalc.coordToCr(result.coord);\n\n\n   cellhandles.movedmouse = true; // did move, so not no-op\n\n   switch (cellhandles.dragtype) {\n      case \"Fill\":\n      case \"FillC\":\n\n         if (result.coord == cellhandles.startingcoord) { // reset when come back\n            cellhandles.filltype = null;\n            cellhandles.startingX = clientX;\n            cellhandles.startingY = clientY;\n            }\n         else {\n            if (cellhandles.filltype) { // moving and have already determined filltype\n               if (cellhandles.filltype==\"Down\") { // coerse to that\n                  crend.col = crstart.col;\n                  if (crend.row < crstart.row) crend.row = crstart.row;\n                  }\n               else {\n                  crend.row = crstart.row;\n                  if (crend.col < crstart.col) crend.col = crstart.col;\n                  }\n               }\n            else {\n               if (Math.abs(clientY - cellhandles.startingY) > 10) {\n                  cellhandles.filltype = \"Down\";\n                  }\n               else if (Math.abs(clientX - cellhandles.startingX) > 10) {\n                  cellhandles.filltype = \"Right\";\n                  }\n               crend.col = crstart.col; // until decide, leave it at start\n               crend.row = crstart.row;\n               }\n            }\n         result.coord = SocialCalc.crToCoord(crend.col, crend.row);\n         if (result.coord!=mouseinfo.mouselastcoord) {\n            editor.MoveECell(result.coord);\n            editor.RangeExtend();\n            }\n         break;\n\n      case \"Move\":\n      case \"MoveC\":\n         if (result.coord!=mouseinfo.mouselastcoord) {\n            editor.MoveECell(result.coord);\n            c = editor.range2.right - editor.range2.left + result.col;\n            r = editor.range2.bottom - editor.range2.top + result.row;\n            editor.RangeAnchor(SocialCalc.crToCoord(c, r));\n            editor.RangeExtend();\n            }\n         break;\n\n      case \"MoveI\":\n      case \"MoveIC\":\n         if (result.coord == cellhandles.startingcoord) { // reset when come back\n            cellhandles.filltype = null;\n            cellhandles.startingX = clientX;\n            cellhandles.startingY = clientY;\n            }\n         else {\n            if (cellhandles.filltype) { // moving and have already determined filltype\n               if (cellhandles.filltype==\"Vertical\") { // coerse to that\n                  crend.col = editor.range2.left;\n                  if (crend.row>=editor.range2.top && crend.row<=editor.range2.bottom+1) crend.row = editor.range2.bottom+2;\n                  }\n               else {\n                  crend.row = editor.range2.top;\n                  if (crend.col>=editor.range2.left && crend.col<=editor.range2.right+1) crend.col = editor.range2.right+2;\n                  }\n               }\n            else {\n               if (Math.abs(clientY - cellhandles.startingY) > 10) {\n                  cellhandles.filltype = \"Vertical\";\n                  }\n               else if (Math.abs(clientX - cellhandles.startingX) > 10) {\n                  cellhandles.filltype = \"Horizontal\";\n                  }\n               crend.col = crstart.col; // until decide, leave it at start\n               crend.row = crstart.row;\n               }\n            }\n         result.coord = SocialCalc.crToCoord(crend.col, crend.row);\n         if (result.coord!=mouseinfo.mouselastcoord) {\n            editor.MoveECell(result.coord);\n            if (!cellhandles.filltype) { // no fill type\n               editor.RangeRemove();\n               }\n            else {\n               c = editor.range2.right - editor.range2.left + crend.col;\n               r = editor.range2.bottom - editor.range2.top + crend.row;\n               editor.RangeAnchor(SocialCalc.crToCoord(c, r));\n               editor.RangeExtend();\n               }\n            }\n         break;\n\n      }\n\n\n   cellhandles.fillinghandle.style.left = clientX+\"px\";\n   cellhandles.fillinghandle.style.top = (clientY - 17)+\"px\";\n   cellhandles.fillinghandle.innerHTML = scc.s_CHindicatorOperationLookup[cellhandles.dragtype]+\n                                         (scc.s_CHindicatorDirectionLookup[editor.cellhandles.filltype] || \"\");\n   cellhandles.fillinghandle.style.display = \"block\";\n\n   mouseinfo.mouselastcoord = result.coord;\n   SocialCalc.StopPropagation(event);\n   return;\n   }\n\nSocialCalc.CellHandlesDragAutoRepeat = function(coord, direction) {\n\n   var mouseinfo = SocialCalc.EditorMouseInfo;\n   var editor = mouseinfo.editor;\n   if (!editor) return; // not us, ignore\n   var cellhandles = editor.cellhandles;\n\n   var crstart = SocialCalc.coordToCr(editor.cellhandles.startingcoord);\n   var crend = SocialCalc.coordToCr(coord);\n\n   var newcoord, c, r;\n\n   var vscroll = 0;\n   var hscroll = 0;\n\n   if (direction == \"left\") hscroll = -1;\n   else if (direction == \"right\") hscroll = 1;\n   else if (direction == \"up\") vscroll = -1;\n   else if (direction == \"down\") vscroll = 1;\n   editor.ScrollRelativeBoth(vscroll, hscroll);\n\n\n   switch (cellhandles.dragtype) {\n      case \"Fill\":\n      case \"FillC\":\n         if (cellhandles.filltype) { // moving and have already determined filltype\n            if (cellhandles.filltype==\"Down\") { // coerse to that\n               crend.col = crstart.col;\n               if (crend.row < crstart.row) crend.row = crstart.row;\n               }\n            else {\n               crend.row = crstart.row;\n               if (crend.col < crstart.col) crend.col = crstart.col;\n               }\n            }\n         else {\n            crend.col = crstart.col; // until decide, leave it at start\n            crend.row = crstart.row;\n            }\n\n         newcoord = SocialCalc.crToCoord(crend.col, crend.row);\n         if (newcoord!=mouseinfo.mouselastcoord) {\n            editor.MoveECell(coord);\n            editor.RangeExtend();\n            }\n         break;\n\n      case \"Move\":\n      case \"MoveC\":\n         if (coord!=mouseinfo.mouselastcoord) {\n            editor.MoveECell(coord);\n            c = editor.range2.right - editor.range2.left + editor.ecell.col;\n            r = editor.range2.bottom - editor.range2.top + editor.ecell.row;\n            editor.RangeAnchor(SocialCalc.crToCoord(c, r));\n            editor.RangeExtend();\n            }\n         break;\n\n      case \"MoveI\":\n      case \"MoveIC\":\n         if (cellhandles.filltype) { // moving and have already determined filltype\n            if (cellhandles.filltype==\"Vertical\") { // coerse to that\n               crend.col = editor.range2.left;\n               if (crend.row>=editor.range2.top && crend.row<=editor.range2.bottom+1) crend.row = editor.range2.bottom+2;\n               }\n            else {\n               crend.row = editor.range2.top;\n               if (crend.col>=editor.range2.left && crend.col<=editor.range2.right+1) crend.col = editor.range2.right+2;\n               }\n            }\n         else {\n            crend.col = crstart.col; // until decide, leave it at start\n            crend.row = crstart.row;\n            }\n\n         newcoord = SocialCalc.crToCoord(crend.col, crend.row);\n         if (newcoord!=mouseinfo.mouselastcoord) {\n            editor.MoveECell(newcoord);\n            c = editor.range2.right - editor.range2.left + crend.col;\n            r = editor.range2.bottom - editor.range2.top + crend.row;\n            editor.RangeAnchor(SocialCalc.crToCoord(c, r));\n            editor.RangeExtend();\n            }\n         break;\n\n      }\n\n   mouseinfo.mouselastcoord = newcoord;\n\n   }\n\nSocialCalc.CellHandlesMouseUp = function(e) {\n\n   var editor, element, result, coord, now, textarea, sheetobj, cellobj, wval, cstr, cmdtype, cmdtype2;\n   var crstart, crend;\n   var sizec, sizer, deltac, deltar;\n\n   var event = e || window.event;\n\n   var mouseinfo = SocialCalc.EditorMouseInfo;\n   editor = mouseinfo.editor;\n   if (!editor) return; // not us, ignore\n   var cellhandles = editor.cellhandles;\n\n   element = mouseinfo.element;\n\n   mouseinfo.ignore = false;\n\n   var pos = SocialCalc.GetElementPositionWithScroll(editor.toplevel);\n   var clientX = event.clientX - pos.left;\n   var clientY = event.clientY - pos.top;\n   result = SocialCalc.GridMousePosition(editor, clientX, clientY); // get cell with up\n\n   SocialCalc.SetDragAutoRepeat(editor, null); // stop repeating if it was\n\n   cellhandles.mouseDown = false;\n   cellhandles.noCursorSuffix = false;\n\n   cellhandles.fillinghandle.style.display = \"none\";\n\n   if (!result) result = {};\n   if (!result.coord) result.coord = editor.ecell.coord;\n\n   switch (cellhandles.dragtype) {\n      case \"Fill\":\n      case \"Move\":\n      case \"MoveI\":\n         cmdtype2 = \" all\";\n            break;\n      case \"FillC\":\n      case \"MoveC\":\n      case \"MoveIC\":\n         cmdtype2 = \" formulas\";\n         break;\n      }\n\n   if (!cellhandles.movedmouse) { // didn't move: just leave one cell selected\n      cellhandles.dragtype = \"Nothing\";\n      }\n\n   switch (cellhandles.dragtype) {\n      case \"Nothing\":\n         editor.Range2Remove();\n         editor.RangeRemove();\n         break;\n\n      case \"Fill\":\n      case \"FillC\":\n\n         crstart = SocialCalc.coordToCr(cellhandles.startingcoord);\n         crend = SocialCalc.coordToCr(result.coord);\n         if (cellhandles.filltype) {\n            if (cellhandles.filltype==\"Down\") {\n               crend.col = crstart.col;\n               }\n            else {\n               crend.row = crstart.row;\n               }\n            }\n         result.coord = SocialCalc.crToCoord(crend.col, crend.row);\n\n         editor.MoveECell(result.coord);\n         editor.RangeExtend();\n\n         if (editor.cellhandles.filltype==\"Right\") {\n            cmdtype = \"right\";\n            }\n         else {\n            cmdtype = \"down\";\n            }\n         cstr = \"fill\"+cmdtype+\" \"+SocialCalc.crToCoord(editor.range.left, editor.range.top)+\n                   \":\"+SocialCalc.crToCoord(editor.range.right, editor.range.bottom)+cmdtype2;\n         editor.EditorScheduleSheetCommands(cstr, true, false);\n         break;\n\n      case \"Move\":\n      case \"MoveC\":\n         editor.context.cursorsuffix = \"\";\n         cstr = \"movepaste \"+\n                     SocialCalc.crToCoord(editor.range2.left, editor.range2.top) + \":\" +\n                     SocialCalc.crToCoord(editor.range2.right, editor.range2.bottom)\n                     +\" \"+editor.ecell.coord+cmdtype2;\n         editor.EditorScheduleSheetCommands(cstr, true, false);\n         editor.Range2Remove();\n\n         break;\n\n      case \"MoveI\":\n      case \"MoveIC\":\n         editor.context.cursorsuffix = \"\";\n         sizec = editor.range2.right - editor.range2.left;\n         sizer = editor.range2.bottom - editor.range2.top;\n         deltac = editor.ecell.col - editor.range2.left;\n         deltar = editor.ecell.row - editor.range2.top;\n         cstr = \"moveinsert \"+\n                     SocialCalc.crToCoord(editor.range2.left, editor.range2.top) + \":\" +\n                     SocialCalc.crToCoord(editor.range2.right, editor.range2.bottom)\n                     +\" \"+editor.ecell.coord+cmdtype2;\n         editor.EditorScheduleSheetCommands(cstr, true, false);\n         editor.Range2Remove();\n         editor.RangeRemove();\n         if (editor.cellhandles.filltype==\" Horizontal\" && deltac > 0) {\n            editor.MoveECell(SocialCalc.crToCoord(editor.ecell.col-sizec-1, editor.ecell.row));\n            }\n         else if (editor.cellhandles.filltype==\" Vertical\" && deltar > 0) {\n            editor.MoveECell(SocialCalc.crToCoord(editor.ecell.col, editor.ecell.row-sizer-1));\n            }\n         editor.RangeAnchor(SocialCalc.crToCoord(editor.ecell.col+sizec, editor.ecell.row+sizer));\n         editor.RangeExtend();\n\n         break;\n\n      }\n    SocialCalc.RemoveMouseMoveUp(SocialCalc.CellHandlesMouseMove,\n\t\t\t\t    SocialCalc.CellHandlesMouseUp,\n\t\t\t\t    cellhandles.draghandle,\n\t\t\t\t    event);\n   mouseinfo.editor = null;\n   return false;\n   }\n\n// *************************************\n//\n// TableControl class:\n//\n// This class deals with the horizontal and verical scrollbars and pane sliders.\n//\n// +--------------+\n// | Endcap       |\n// +- - - - - - - +\n// |              |\n// +--------------+\n// | Pane Slider  |\n// +--------------+\n// |              |\n// | Less Button  |\n// |              |\n// +--------------+\n// | Scroll Area  |\n// |              |\n// |              |\n// +--------------+\n// | Thumb        |\n// +--------------+\n// |              |\n// +--------------+\n// |              |\n// | More Button  |\n// |              |\n// +--------------+\n//\n// *************************************\n\nSocialCalc.TableControl = function(editor, vertical, size) {\n\n   var scc = SocialCalc.Constants;\n\n   this.editor = editor; // the TableEditor this belongs to\n\n   this.vertical = vertical; // true if vertical control, false if horizontal\n   this.size = size; // length in pixels\n\n   this.main = null; // main element containing all the others\n   this.endcap = null; // the area at the top/left between the end and the pane slider\n   this.paneslider = null; // the slider to adjust the pane split\n   this.lessbutton = null; // the top/left scroll button\n   this.morebutton = null; // the bottom/right scroll button\n   this.scrollarea = null; // the area between the scroll buttons\n   this.thumb = null; // the sliding thing in the scrollarea\n\n   // computed position values:\n\n   this.controlborder = null; // left or top screen position for vertical or horizontal control\n   this.endcapstart = null; // top or left screen position for vertical or horizontal control\n   this.panesliderstart = null;\n   this.lessbuttonstart = null;\n   this.morebuttonstart = null;\n   this.scrollareastart = null;\n   this.scrollareaend = null;\n   this.scrollareasize = null;\n   this.thumbpos = null;\n\n   // constants:\n\n   this.controlthickness = scc.defaultTableControlThickness; // other dimension of complete control in pixels\n   this.sliderthickness = scc.defaultTCSliderThickness;\n   this.buttonthickness = scc.defaultTCButtonThickness;\n   this.thumbthickness = scc.defaultTCThumbThickness;\n   this.minscrollingpanesize = this.buttonthickness+this.buttonthickness+this.thumbthickness+20; // the 20 is to leave a little space\n\n   }\n\n// Methods:\n\nSocialCalc.TableControl.prototype.CreateTableControl = function() {return SocialCalc.CreateTableControl(this);};\nSocialCalc.TableControl.prototype.PositionTableControlElements = function() {SocialCalc.PositionTableControlElements(this);};\nSocialCalc.TableControl.prototype.ComputeTableControlPositions = function() {SocialCalc.ComputeTableControlPositions(this);};\n\n// Functions:\n\nSocialCalc.CreateTableControl = function(control) {\n\n   var s, functions, params;\n   var AssignID = SocialCalc.AssignID;\n   var setStyles = SocialCalc.setStyles;\n   var scc = SocialCalc.Constants;\n\n   var imageprefix = control.editor.imageprefix;\n   var vh = control.vertical ? \"v\" : \"h\";\n   var SCLoc = SocialCalc.LocalizeString;\n\n   control.main = document.createElement(\"div\");\n   s = control.main.style;\n   s.height = (control.vertical ? control.size : control.controlthickness)+\"px\";\n   s.width = (control.vertical ? control.controlthickness : control.size)+\"px\";\n   s.zIndex = 0;\n   setStyles(control.main, scc.TCmainStyle);\n   s.backgroundImage=\"url(\"+imageprefix+\"main-\"+vh+\".gif)\";\n   if (scc.TCmainClass) control.main.className = scc.TCmainClass;\n\n   control.main.style.display=\"none\"; // wait for layout\n\n   control.endcap = document.createElement(\"div\");\n   s = control.endcap.style;\n   s.height = control.controlthickness+\"px\";\n   s.width = control.controlthickness+\"px\";\n   s.zIndex = 1;\n   s.overflow = \"hidden\"; // IE will make the DIV at least font-size height...so use this\n   s.position = \"absolute\";\n   setStyles(control.endcap, scc.TCendcapStyle);\n   s.backgroundImage=\"url(\"+imageprefix+\"endcap-\"+vh+\".gif)\";\n   if (scc.TCendcapClass) control.endcap.className = scc.TCendcapClass;\n   AssignID(control.editor, control.endcap, \"endcap\"+vh);\n\n   control.main.appendChild(control.endcap);\n\n   control.paneslider = document.createElement(\"div\");\n   s = control.paneslider.style;\n   s.height = (control.vertical ? control.sliderthickness : control.controlthickness)+\"px\";\n   s.overflow = \"hidden\"; // IE will make the DIV at least font-size height...so use this\n   s.width = (control.vertical ? control.controlthickness : control.sliderthickness)+\"px\";\n   s.position = \"absolute\";\n   s[control.vertical?\"top\":\"left\"] = \"4px\";\n   s.zIndex = 3;\n   s.backgroundImage=\"url(\"+imageprefix+\"paneslider-\"+vh+\".gif)\";\n   if (scc.TCpanesliderClass) control.paneslider.className = scc.TCpanesliderClass;\n   AssignID(control.editor, control.paneslider, \"paneslider\"+vh);\n   control.paneslider.title = SCLoc(control.vertical ? \"Drag to lock pane horizontally\" : \"Drag to lock pane vertically\");\n\n   functions = {MouseDown:SocialCalc.TCPSDragFunctionStart,\n                    MouseMove: SocialCalc.TCPSDragFunctionMove,\n                    MouseUp: SocialCalc.TCPSDragFunctionStop,\n                    Disabled: function() {return control.editor.busy;}};\n\n   functions.control = control; // make sure this is there\n\n   // Drag pane slider - every thing but app view\n   if (SocialCalc._app != true) SocialCalc.DragRegister(control.paneslider, control.vertical, !control.vertical, functions, control.editor.toplevel);\n\n   control.main.appendChild(control.paneslider);\n\n   control.lessbutton = document.createElement(\"div\");\n   s = control.lessbutton.style;\n   s.height = (control.vertical ? control.buttonthickness : control.controlthickness)+\"px\";\n   s.width = (control.vertical ? control.controlthickness : control.buttonthickness)+\"px\";\n   s.zIndex = 2;\n   s.overflow = \"hidden\"; // IE will make the DIV at least font-size height...so use this\n   s.position = \"absolute\";\n   setStyles(control.lessbutton, scc.TClessbuttonStyle);\n   s.backgroundImage=\"url(\"+imageprefix+\"less-\"+vh+\"n.gif)\"\n   if (scc.TClessbuttonClass) control.lessbutton.className = scc.TClessbuttonClass;\n   AssignID(control.editor, control.lessbutton, \"lessbutton\"+vh);\n\n   params = {repeatwait:scc.TClessbuttonRepeatWait, repeatinterval:scc.TClessbuttonRepeatInterval,\n             normalstyle: \"backgroundImage:url(\"+imageprefix+\"less-\"+vh+\"n.gif);\",\n             downstyle: \"backgroundImage:url(\"+imageprefix+\"less-\"+vh+\"d.gif);\",\n             hoverstyle: \"backgroundImage:url(\"+imageprefix+\"less-\"+vh+\"h.gif);\"};\n   functions = {MouseDown:function(){if(!control.editor.busy) control.editor.ScrollRelative(control.vertical, -1);},\n                Repeat:function(){if(!control.editor.busy) control.editor.ScrollRelative(control.vertical, -1);},\n                Disabled: function() {return control.editor.busy;}};\n\n   SocialCalc.ButtonRegister(control.editor, control.lessbutton, params, functions);\n\n   control.main.appendChild(control.lessbutton);\n\n   control.morebutton = document.createElement(\"div\");\n   s = control.morebutton.style;\n   s.height = (control.vertical ? control.buttonthickness : control.controlthickness)+\"px\";\n   s.width = (control.vertical ? control.controlthickness : control.buttonthickness)+\"px\";\n   s.zIndex = 2;\n   s.overflow = \"hidden\"; // IE will make the DIV at least font-size height...so use this\n   s.position = \"absolute\";\n   setStyles(control.morebutton, scc.TCmorebuttonStyle);\n   s.backgroundImage=\"url(\"+imageprefix+\"more-\"+vh+\"n.gif)\"\n   if (scc.TCmorebuttonClass) control.morebutton.className = scc.TCmorebuttonClass;\n   AssignID(control.editor, control.morebutton, \"morebutton\"+vh);\n\n   params = {repeatwait:scc.TCmorebuttonRepeatWait, repeatinterval:scc.TCmorebuttonRepeatInterval,\n             normalstyle: \"backgroundImage:url(\"+imageprefix+\"more-\"+vh+\"n.gif);\",\n             downstyle: \"backgroundImage:url(\"+imageprefix+\"more-\"+vh+\"d.gif);\",\n             hoverstyle: \"backgroundImage:url(\"+imageprefix+\"more-\"+vh+\"h.gif);\"};\n   functions = {MouseDown:function(){if(!control.editor.busy) control.editor.ScrollRelative(control.vertical, +1);},\n                Repeat:function(){if(!control.editor.busy) control.editor.ScrollRelative(control.vertical, +1);},\n                Disabled: function() {return control.editor.busy;}};\n\n   SocialCalc.ButtonRegister(control.editor, control.morebutton, params, functions);\n\n   control.main.appendChild(control.morebutton);\n\n   control.scrollarea = document.createElement(\"div\");\n   s = control.scrollarea.style;\n   s.height = control.controlthickness+\"px\";\n   s.width = control.controlthickness+\"px\";\n   s.zIndex = 1;\n   s.overflow = \"hidden\"; // IE will make the DIV at least font-size height...so use this\n   s.position = \"absolute\";\n   setStyles(control.scrollarea, scc.TCscrollareaStyle);\n   s.backgroundImage=\"url(\"+imageprefix+\"scrollarea-\"+vh+\".gif)\";\n   if (scc.TCscrollareaClass) control.scrollarea.className = scc.TCscrollareaClass;\n   AssignID(control.editor, control.scrollarea, \"scrollarea\"+vh);\n\n   params = {repeatwait:scc.TCscrollareaRepeatWait, repeatinterval:scc.TCscrollareaRepeatWait};\n   functions = {MouseDown:SocialCalc.ScrollAreaClick, Repeat:SocialCalc.ScrollAreaClick,\n                Disabled: function() {return control.editor.busy;}};\n   functions.control = control;\n\n   SocialCalc.ButtonRegister(control.editor, control.scrollarea, params, functions);\n\n   control.main.appendChild(control.scrollarea);\n\n   control.thumb = document.createElement(\"div\");\n   s = control.thumb.style;\n   s.height =  (control.vertical ? control.thumbthickness : control.controlthickness)+\"px\";\n   s.width = (control.vertical ? control.controlthickness : control.thumbthickness)+\"px\";\n   s.zIndex = 2;\n   s.overflow = \"hidden\"; // IE will make the DIV at least font-size height...so use this\n   s.position = \"absolute\";\n   setStyles(control.thumb, scc.TCthumbStyle);\n   control.thumb.style.backgroundImage=\"url(\"+imageprefix+\"thumb-\"+vh+\"n.gif)\";\n   if (scc.TCthumbClass) control.thumb.className = scc.TCthumbClass;\n   AssignID(control.editor, control.thumb, \"thumb\"+vh);\n\n   functions = {MouseDown:SocialCalc.TCTDragFunctionStart,\n                MouseMove: SocialCalc.TCTDragFunctionMove,\n                MouseUp: SocialCalc.TCTDragFunctionStop,\n                Disabled: function() {return control.editor.busy;}};\n   functions.control = control; // make sure this is there\n\n   // Drag pane slider - every thing but app view\n   if (SocialCalc._app != true) SocialCalc.DragRegister(control.thumb, control.vertical, !control.vertical, functions, control.editor.toplevel);\n\n   params = {normalstyle: \"backgroundImage:url(\"+imageprefix+\"thumb-\"+vh+\"n.gif)\", name:\"Thumb\",\n             downstyle:  \"backgroundImage:url(\"+imageprefix+\"thumb-\"+vh+\"d.gif)\",\n             hoverstyle:  \"backgroundImage:url(\"+imageprefix+\"thumb-\"+vh+\"h.gif)\"};\n   SocialCalc.ButtonRegister(control.editor, control.thumb, params, null); // give it button-like visual behavior\n\n   control.main.appendChild(control.thumb);\n\n   return control.main;\n\n}\n\n//\n// ScrollAreaClick - Button function to process pageup/down clicks\n//\n\nSocialCalc.ScrollAreaClick = function(e, buttoninfo, bobj) {\n\n   var control = bobj.functionobj.control;\n   var pos = SocialCalc.GetElementPositionWithScroll(control.editor.toplevel);\n   var clickpos = control.vertical ? buttoninfo.clientY-pos.top : buttoninfo.clientX-pos.left;\n   if (control.editor.busy) { // ignore if busy - wait for next repeat\n      return;\n      }\n   control.editor.PageRelative(control.vertical, clickpos > control.thumbpos ? 1 : -1);\n\n   return;\n\n}\n\n//\n// PositionTableControlElements\n//\n\nSocialCalc.PositionTableControlElements = function(control) {\n\n   var border, realend, thumbpos;\n\n   var editor = control.editor;\n\n   if (control.vertical) {\n      border = control.controlborder+\"px\";\n      control.endcap.style.top = control.endcapstart+\"px\";\n      control.endcap.style.left = border;\n      control.paneslider.style.top = control.panesliderstart+\"px\";\n      control.paneslider.style.left = border\n      control.lessbutton.style.top = control.lessbuttonstart+\"px\";\n      control.lessbutton.style.left = border;\n      control.morebutton.style.top = control.morebuttonstart+\"px\";\n      control.morebutton.style.left = border;\n      control.scrollarea.style.top = control.scrollareastart+\"px\";\n      control.scrollarea.style.left = border;\n      control.scrollarea.style.height = control.scrollareasize+\"px\";\n      realend = Math.max(editor.context.sheetobj.attribs.lastrow, editor.firstscrollingrow+1);\n      thumbpos = ((editor.firstscrollingrow-(editor.lastnonscrollingrow+1))*(control.scrollareasize-3*control.thumbthickness))/\n         (realend-(editor.lastnonscrollingrow+1))+control.scrollareastart-1;\n      thumbpos = Math.floor(thumbpos);\n      control.thumb.style.top = thumbpos+\"px\";\n      control.thumb.style.left = border;\n      }\n   else {\n      border = control.controlborder+\"px\";\n      control.endcap.style.left = control.endcapstart+\"px\";\n      control.endcap.style.top = border;\n      control.paneslider.style.left = control.panesliderstart+\"px\";\n      control.paneslider.style.top = border\n      control.lessbutton.style.left = control.lessbuttonstart+\"px\";\n      control.lessbutton.style.top = border;\n      control.morebutton.style.left = control.morebuttonstart+\"px\";\n      control.morebutton.style.top = border;\n      control.scrollarea.style.left = control.scrollareastart+\"px\";\n      control.scrollarea.style.top = border;\n      control.scrollarea.style.width = control.scrollareasize+\"px\";\n      realend = Math.max(editor.context.sheetobj.attribs.lastcol, editor.firstscrollingcol+1);\n      thumbpos = ((editor.firstscrollingcol-(editor.lastnonscrollingcol+1))*(control.scrollareasize-control.thumbthickness))/\n         (realend-editor.lastnonscrollingcol)+control.scrollareastart-1;\n      thumbpos = Math.floor(thumbpos);\n      control.thumb.style.left = thumbpos+\"px\";\n      control.thumb.style.top = border;\n      }\n   control.thumbpos = thumbpos;\n   control.main.style.display=\"block\";\n\n   }\n\n//\n// ComputeTableControlPositions\n//\n// This routine computes the screen positions and other values needed for laying out\n// the table control elements.\n//\n\nSocialCalc.ComputeTableControlPositions = function(control) {\n\n   var editor = control.editor;\n\n   if (!editor.gridposition || !editor.headposition) throw(\"Can't compute table control positions before editor positions\");\n\n   if (control.vertical) {\n      control.controlborder = editor.gridposition.left+editor.tablewidth; // border=left position\n      control.endcapstart = editor.gridposition.top; // start=top position\n      control.panesliderstart = editor.firstscrollingrowtop-control.sliderthickness;\n      control.lessbuttonstart = editor.firstscrollingrowtop-1;\n      control.morebuttonstart = editor.gridposition.top+editor.tableheight-control.buttonthickness;\n      control.scrollareastart = editor.firstscrollingrowtop-1+control.buttonthickness;\n      control.scrollareaend = control.morebuttonstart-1;\n      control.scrollareasize = control.scrollareaend-control.scrollareastart+1;\n      }\n   else {\n      control.controlborder = editor.gridposition.top+editor.tableheight; // border=top position\n      control.endcapstart = editor.gridposition.left; // start=left position\n      control.panesliderstart = editor.firstscrollingcolleft-control.sliderthickness;\n      control.lessbuttonstart = editor.firstscrollingcolleft-1;\n      control.morebuttonstart = editor.gridposition.left+editor.tablewidth-control.buttonthickness;\n      control.scrollareastart = editor.firstscrollingcolleft-1+control.buttonthickness;\n      control.scrollareaend = control.morebuttonstart-1;\n      control.scrollareasize = control.scrollareaend-control.scrollareastart+1;\n      }\n   }\n\n////// TCPS - TableControl Pan Slider methods\n\n//\n// TCPSDragFunctionStart(event, draginfo, dobj)\n//\n// TableControlPaneSlider function for starting drag\n//\n\nSocialCalc.TCPSDragFunctionStart = function(event, draginfo, dobj) {\n\n   var editor = dobj.functionobj.control.editor;\n   var scc = SocialCalc.Constants;\n\n   SocialCalc.DragFunctionStart(event, draginfo, dobj);\n\n   draginfo.trackingline = document.createElement(\"div\");\n   draginfo.trackingline.style.height = dobj.vertical ? scc.TCPStrackinglineThickness :\n      (editor.tableheight-(editor.headposition.top-editor.gridposition.top))+\"px\";\n   draginfo.trackingline.style.width = dobj.vertical ?\n      (editor.tablewidth-(editor.headposition.left-editor.gridposition.left))+\"px\" : scc.TCPStrackinglineThickness;\n   draginfo.trackingline.style.backgroundImage=\"url(\"+editor.imageprefix+\"trackingline-\"+(dobj.vertical?\"v\":\"h\")+\".gif)\";;\n   if (scc.TCPStrackinglineClass) draginfo.trackingline.className = scc.TCPStrackinglineClass;\n   SocialCalc.setStyles(draginfo.trackingline, scc.TCPStrackinglineStyle);\n\n   if (dobj.vertical) {\n      row = SocialCalc.Lookup(draginfo.clientY+dobj.functionobj.control.sliderthickness, editor.rowpositions);\n      draginfo.trackingline.style.top = (editor.rowpositions[row] || editor.headposition.top)+\"px\";\n      draginfo.trackingline.style.left = editor.headposition.left+\"px\";\n      draginfo.trackingline.id = 'trackingline-vertical';\n      if (editor.context.rowpanes.length-1) { // has 2 already\n         editor.context.SetRowPaneFirstLast(1, editor.context.rowpanes[0].last+1, editor.context.rowpanes[0].last+1);\n         editor.FitToEditTable();\n         editor.ScheduleRender();\n         }\n      }\n   else {\n      col = SocialCalc.Lookup(draginfo.clientX+dobj.functionobj.control.sliderthickness, editor.colpositions);\n      draginfo.trackingline.style.top = editor.headposition.top+\"px\";\n      draginfo.trackingline.style.left = (editor.colpositions[col] || editor.headposition.left)+\"px\";\n      draginfo.trackingline.id = 'trackingline-horizon';\n      if (editor.context.colpanes.length-1) { // has 2 already\n         editor.context.SetColPaneFirstLast(1, editor.context.colpanes[0].last+1, editor.context.colpanes[0].last+1);\n         editor.FitToEditTable();\n         editor.ScheduleRender();\n         }\n      }\n\n   editor.griddiv.appendChild(draginfo.trackingline);\n\n   }\n\n//\n// TCPSDragFunctionMove(event, draginfo, dobj)\n//\n\nSocialCalc.TCPSDragFunctionMove = function(event, draginfo, dobj) {\n\n   var row, col, max, min;\n   var control = dobj.functionobj.control;\n   var sliderthickness = control.sliderthickness;\n   var editor = control.editor;\n\n   if (dobj.vertical) {\n      max = control.morebuttonstart - control.minscrollingpanesize - draginfo.offsetY; // restrict movement\n      if (draginfo.clientY > max) draginfo.clientY = max;\n      min = editor.headposition.top - sliderthickness - draginfo.offsetY;\n      if (draginfo.clientY < min) draginfo.clientY = min;\n\n      row = SocialCalc.Lookup(draginfo.clientY+sliderthickness, editor.rowpositions);\n\n      // Handle hidden row.\n      while (editor.context.sheetobj.rowattribs.hide[row] == \"yes\") {\n         row++;\n         }\n\n      draginfo.trackingline.style.top = (editor.rowpositions[row] || editor.headposition.top)+\"px\";\n      }\n   else {\n      max = control.morebuttonstart - control.minscrollingpanesize - draginfo.offsetX;\n      if (draginfo.clientX > max) draginfo.clientX = max;\n      min = editor.headposition.left - sliderthickness - draginfo.offsetX;\n      if (draginfo.clientX < min) draginfo.clientX = min;\n\n      col = SocialCalc.Lookup(draginfo.clientX+sliderthickness, editor.colpositions);\n\n      // Handle hidden column.\n      while (editor.context.sheetobj.colattribs.hide[SocialCalc.rcColname(col)] == \"yes\") {\n         col++;\n         }\n\n      draginfo.trackingline.style.left = (editor.colpositions[col] || editor.headposition.left)+\"px\";\n      }\n\n   SocialCalc.DragFunctionPosition(event, draginfo, dobj);\n\n   }\n\n//\n// TCPSDragFunctionStop(event, draginfo, dobj)\n//\n\nSocialCalc.TCPSDragFunctionStop = function(event, draginfo, dobj) {\n\n   var row, col, max, min, dc;\n   var control = dobj.functionobj.control;\n   var sliderthickness = control.sliderthickness;\n   var editor = control.editor;\n\n   if (dobj.vertical) {\n     max = control.morebuttonstart - control.minscrollingpanesize - draginfo.offsetY; // restrict movement\n     if (draginfo.clientY > max) draginfo.clientY = max;\n     min = editor.headposition.top - sliderthickness - draginfo.offsetY;\n     if (draginfo.clientY < min) draginfo.clientY = min;\n\n     row = SocialCalc.Lookup(draginfo.clientY+sliderthickness, editor.rowpositions);\n     if (row>editor.context.sheetobj.attribs.lastrow) row=editor.context.sheetobj.attribs.lastrow; // can't extend sheet here\n\n     // Handle hidden row.\n     while (editor.context.sheetobj.rowattribs.hide[row] == \"yes\") {\n       row++;\n     }\n\n\n     editor.EditorScheduleSheetCommands('pane row ' + row, true, false);\n   }\n   else {\n     max = control.morebuttonstart - control.minscrollingpanesize - draginfo.offsetX;\n     if (draginfo.clientX > max) draginfo.clientX = max;\n     min = editor.headposition.left - sliderthickness - draginfo.offsetX;\n     if (draginfo.clientX < min) draginfo.clientX = min;\n\n     col = SocialCalc.Lookup(draginfo.clientX+sliderthickness, editor.colpositions);\n     if (col>editor.context.sheetobj.attribs.lastcol) col=editor.context.sheetobj.attribs.lastcol; // can't extend sheet here\n\n     // Handle hidden column.\n     while (editor.context.sheetobj.colattribs.hide[SocialCalc.rcColname(col)] == \"yes\") {\n       col++;\n     }\n\n     editor.EditorScheduleSheetCommands('pane col ' + col, true, false);\n   }\n\n   }\n\n////// TCT - TableControl Thumb methods\n\n//!!!! Note: Need to make start use same code as move/stop for determining row/col, since stop will set that\n//!!!! Note: Need to make start/move/stop use positioning code that corresponds closer to\n//!!!!       ComputeTableControlPositions calculations.\n\n//\n// TCTDragFunctionStart(event, draginfo, dobj)\n//\n// TableControlThumb function for starting drag\n//\n\nSocialCalc.TCTDragFunctionStart = function(event, draginfo, dobj) {\n\n   var rowpane, colpane, row, col;\n\n   var control = dobj.functionobj.control;\n   var editor = control.editor;\n   var scc = SocialCalc.Constants;\n\n   SocialCalc.DragFunctionStart(event, draginfo, dobj);\n\n   if (draginfo.thumbstatus) { // get rid of old one if mouseup was out of window\n      if (draginfo.thumbstatus.rowmsgele) draginfo.thumbstatus.rowmsgele = null;\n      if (draginfo.thumbstatus.rowpreviewele) draginfo.thumbstatus.rowpreviewele = null;\n      editor.toplevel.removeChild(draginfo.thumbstatus);\n      draginfo.thumbstatus = null;\n      }\n\n   draginfo.thumbstatus = document.createElement(\"div\");\n\n   if (dobj.vertical) {\n      if (scc.TCTDFSthumbstatusvClass) draginfo.thumbstatus.className = scc.TCTDFSthumbstatusvClass;\n      SocialCalc.setStyles(draginfo.thumbstatus, scc.TCTDFSthumbstatusvStyle);\n      draginfo.thumbstatus.style.top = (draginfo.clientY+scc.TCTDFStopOffsetv)+\"px\";\n      draginfo.thumbstatus.style.left = (control.controlborder-10-(editor.tablewidth/2))+\"px\";\n      draginfo.thumbstatus.style.width = (editor.tablewidth/2)+\"px\";\n\n      draginfo.thumbcontext = new SocialCalc.RenderContext(editor.context.sheetobj);\n      draginfo.thumbcontext.showGrid = true;\n      draginfo.thumbcontext.rowpanes = [{first: 1, last: 1}];\n      var pane = editor.context.colpanes[editor.context.colpanes.length-1];\n      draginfo.thumbcontext.colpanes = [{first: pane.first, last: pane.last}];\n      draginfo.thumbstatus.innerHTML = '<table cellspacing=\"0\" cellpadding=\"0\"><tr><td valign=\"top\" style=\"'+\n        scc.TCTDFSthumbstatusrownumStyle+'\" class=\"'+scc.TCTDFSthumbstatusrownumClass+\n        '\"><div>msg</div></td><td valign=\"top\"><div style=\"overflow:hidden;\">preview</div></td></tr></table>';\n      draginfo.thumbstatus.rowmsgele = draginfo.thumbstatus.firstChild.firstChild.firstChild.firstChild.firstChild;\n      draginfo.thumbstatus.rowpreviewele = draginfo.thumbstatus.firstChild.firstChild.firstChild.childNodes[1].firstChild;\n      editor.toplevel.appendChild(draginfo.thumbstatus);\n      SocialCalc.TCTDragFunctionRowSetStatus(draginfo, editor, editor.firstscrollingrow || 1);\n      }\n   else {\n      if (scc.TCTDFSthumbstatushClass) draginfo.thumbstatus.className = scc.TCTDFSthumbstatushClass;\n      SocialCalc.setStyles(draginfo.thumbstatus, scc.TCTDFSthumbstatushStyle);\n      draginfo.thumbstatus.style.top = (control.controlborder+scc.TCTDFStopOffseth)+\"px\";\n      draginfo.thumbstatus.style.left = (draginfo.clientX+scc.TCTDFSleftOffseth)+\"px\";\n      editor.toplevel.appendChild(draginfo.thumbstatus);\n      draginfo.thumbstatus.innerHTML = scc.s_TCTDFthumbstatusPrefixh+SocialCalc.rcColname(editor.firstscrollingcol);\n      }\n\n   }\n\n\n//\n// SocialCalc.TCTDragFunctionRowSetStatus(draginfo, editor, row)\n//\n// Render partial row\n//\n\nSocialCalc.TCTDragFunctionRowSetStatus = function(draginfo, editor, row) {\n\n   var scc = SocialCalc.Constants;\n   var msg = scc.s_TCTDFthumbstatusPrefixv+row+\" \";\n\n   draginfo.thumbstatus.rowmsgele.innerHTML = msg;\n\n   draginfo.thumbcontext.rowpanes = [{first: row, last: row}];\n   draginfo.thumbrowshown = row;\n\n   var ele = draginfo.thumbcontext.RenderSheet(draginfo.thumbstatus.rowpreviewele.firstChild, {type: \"html\"});\n\n   }\n\n\n//\n// TCTDragFunctionMove(event, draginfo, dobj)\n//\n\nSocialCalc.TCTDragFunctionMove = function(event, draginfo, dobj) {\n\n   var first, msg;\n   var control = dobj.functionobj.control;\n   var thumbthickness = control.thumbthickness;\n   var editor = control.editor;\n   var scc = SocialCalc.Constants;\n\n   if (dobj.vertical) {\n      if (draginfo.clientY > control.scrollareaend - draginfo.offsetY - control.thumbthickness + 2)\n         draginfo.clientY = control.scrollareaend - draginfo.offsetY - control.thumbthickness + 2;\n      if (draginfo.clientY < control.scrollareastart - draginfo.offsetY - 1)\n         draginfo.clientY = control.scrollareastart - draginfo.offsetY - 1;\n      draginfo.thumbstatus.style.top = draginfo.clientY+\"px\";\n\n      first =\n         ((draginfo.clientY+draginfo.offsetY-control.scrollareastart+1)/(control.scrollareasize-control.thumbthickness))\n         * (editor.context.sheetobj.attribs.lastrow-editor.lastnonscrollingrow)\n         + editor.lastnonscrollingrow + 1;\n      first = Math.floor(first);\n      if (first <= editor.lastnonscrollingrow) first = editor.lastnonscrollingrow + 1;\n      if (first > editor.context.sheetobj.attribs.lastrow) first = editor.context.sheetobj.attribs.lastrow;\n//      msg = scc.s_TCTDFthumbstatusPrefixv+first;\n      if (first != draginfo.thumbrowshown) {\n         SocialCalc.TCTDragFunctionRowSetStatus(draginfo, editor, first);\n         }\n      }\n   else {\n      if (draginfo.clientX > control.scrollareaend - draginfo.offsetX - control.thumbthickness + 2)\n         draginfo.clientX = control.scrollareaend - draginfo.offsetX - control.thumbthickness + 2;\n      if (draginfo.clientX < control.scrollareastart - draginfo.offsetX - 1)\n         draginfo.clientX = control.scrollareastart - draginfo.offsetX - 1;\n      draginfo.thumbstatus.style.left = draginfo.clientX+\"px\";\n\n      first =\n         ((draginfo.clientX+draginfo.offsetX-control.scrollareastart+1)/(control.scrollareasize-control.thumbthickness))\n         * (editor.context.sheetobj.attribs.lastcol-editor.lastnonscrollingcol)\n         + editor.lastnonscrollingcol + 1;\n      first = Math.floor(first);\n      if (first <= editor.lastnonscrollingcol) first = editor.lastnonscrollingcol + 1;\n      if (first > editor.context.sheetobj.attribs.lastcol) first = editor.context.sheetobj.attribs.lastcol;\n      msg = scc.s_TCTDFthumbstatusPrefixh+SocialCalc.rcColname(first);\n      draginfo.thumbstatus.innerHTML = msg;\n      }\n\n   SocialCalc.DragFunctionPosition(event, draginfo, dobj);\n\n   }\n\n//\n// TCTDragFunctionStop(event, draginfo, dobj)\n//\n\nSocialCalc.TCTDragFunctionStop = function(event, draginfo, dobj) {\n\n   var first;\n   var control = dobj.functionobj.control;\n   var editor = control.editor;\n\n   if (dobj.vertical) {\n      first =\n         ((draginfo.clientY+draginfo.offsetY-control.scrollareastart+1)/(control.scrollareasize-control.thumbthickness))\n         * (editor.context.sheetobj.attribs.lastrow-editor.lastnonscrollingrow)\n         + editor.lastnonscrollingrow + 1;\n      first = Math.floor(first);\n      if (first <= editor.lastnonscrollingrow) first = editor.lastnonscrollingrow + 1;\n      if (first > editor.context.sheetobj.attribs.lastrow) first = editor.context.sheetobj.attribs.lastrow;\n\n      editor.context.SetRowPaneFirstLast(editor.context.rowpanes.length-1, first, first+1);\n      }\n   else {\n      first =\n         ((draginfo.clientX+draginfo.offsetX-control.scrollareastart+1)/(control.scrollareasize-control.thumbthickness))\n         * (editor.context.sheetobj.attribs.lastcol-editor.lastnonscrollingcol)\n         + editor.lastnonscrollingcol + 1;\n      first = Math.floor(first);\n      if (first <= editor.lastnonscrollingcol) first = editor.lastnonscrollingcol + 1;\n      if (first > editor.context.sheetobj.attribs.lastcol) first = editor.context.sheetobj.attribs.lastcol;\n\n      editor.context.SetColPaneFirstLast(editor.context.colpanes.length-1, first, first+1);\n      }\n\n   editor.FitToEditTable();\n\n   if (draginfo.thumbstatus.rowmsgele) draginfo.thumbstatus.rowmsgele = null;\n   if (draginfo.thumbstatus.rowpreviewele) draginfo.thumbstatus.rowpreviewele = null;\n   editor.toplevel.removeChild(draginfo.thumbstatus);\n   draginfo.thumbstatus = null;\n\n   editor.ScheduleRender();\n\n   }\n\n// *************************************\n//\n// Dragging functions:\n//\n// *************************************\n\nSocialCalc.DragInfo = {\n\n   // There is only one of these -- no \"new\" is done.\n   // Only one dragging operation can be active at a time.\n   // The registeredElements array is used to decide which item to drag.\n\n   // One item for each draggable thing, each an object with:\n   //    .element, .vertical, .horizontal, .functionobj, .parent\n\n   registeredElements: [],\n\n   // Items used during a drag\n\n   draggingElement: null, // item being processed (.element is the actual element)\n   startX: 0,\n   startY: 0,\n   startZ: 0,\n   clientX: 0, // modifyable version to restrict movement\n   clientY: 0,\n   offsetX: 0,\n   offsetY: 0,\n   relativeOffset: {left:0,top:0} // retrieved at drag start\n\n   }\n\n//\n// DragRegister(element, vertical, horizontal, functionobj, parent) - make element draggable\n//\n// The functionobj defaults to moving the element contrained only by vertical and horizontal settings.\n//\n\nSocialCalc.DragRegister = function(element, vertical, horizontal, functionobj, parent) {\n\n   var draginfo = SocialCalc.DragInfo;\n\n   if (!functionobj) {\n      functionobj = {MouseDown: SocialCalc.DragFunctionStart, MouseMove: SocialCalc.DragFunctionPosition,\n                     MouseUp: SocialCalc.DragFunctionPosition,\n                     Disabled: null};\n      }\n\n   draginfo.registeredElements.push(\n      {element: element, vertical: vertical, horizontal: horizontal, functionobj: functionobj, parent: parent}\n      );\n\n   if (element.addEventListener) { // DOM Level 2 -- Firefox, et al\n      element.addEventListener(\"mousedown\", SocialCalc.DragMouseDown, false);\n      }\n   else if (element.attachEvent) { // IE 5+\n      element.attachEvent(\"onmousedown\", SocialCalc.DragMouseDown);\n      }\n   else { // don't handle this\n      throw SocialCalc.Constants.s_BrowserNotSupported;\n      }\n\n   }\n\n//\n// DragUnregister(element) - remove object from list\n//\n\nSocialCalc.DragUnregister = function(element) {\n\n   var draginfo = SocialCalc.DragInfo;\n\n   var i;\n\n   if (!element) return;\n\n   for (i=0; i<draginfo.registeredElements.length; i++) {\n      if (draginfo.registeredElements[i].element == element) {\n         draginfo.registeredElements.splice(i,1);\n         if (element.removeEventListener) { // DOM Level 2 -- Firefox, et al\n            element.removeEventListener(\"mousedown\", SocialCalc.DragMouseDown, false);\n            }\n         else { // IE 5+\n            element.detachEvent(\"onmousedown\", SocialCalc.DragMouseDown);\n            }\n         return;\n         }\n      }\n\n   return; // ignore if not in list\n\n   }\n\n//\n// DragMouseDown(event)\n//\n\nSocialCalc.DragMouseDown = function(event) {\n\n   var e = event || window.event;\n\n   var draginfo = SocialCalc.DragInfo;\n\n   var dobj = SocialCalc.LookupElement(e.target || e.srcElement, draginfo.registeredElements);\n   if (!dobj) return;\n\n   if (dobj && dobj.functionobj && dobj.functionobj.Disabled) {\n      if (dobj.functionobj.Disabled(e, draginfo, dobj)) {\n         return;\n         }\n      }\n\n   draginfo.draggingElement = dobj;\n   if (dobj.parent) {\n      draginfo.relativeOffset = SocialCalc.GetElementPositionWithScroll(dobj.parent);\n      }\n   draginfo.clientX = e.clientX - draginfo.relativeOffset.left;\n   draginfo.clientY = e.clientY - draginfo.relativeOffset.top;\n   draginfo.startX = draginfo.clientX;\n   draginfo.startY = draginfo.clientY;\n   draginfo.startZ = dobj.element.style.zIndex;\n   draginfo.offsetX = 0;\n   draginfo.offsetY = 0;\n\n   dobj.element.style.zIndex = \"100\";\n   SocialCalc.SetMouseMoveUp(SocialCalc.DragMouseMove,\n\t\t\t     SocialCalc.DragMouseUp,\n\t\t\t     dobj.element,\n\t\t\t     e);\n   if (dobj && dobj.functionobj && dobj.functionobj.MouseDown) dobj.functionobj.MouseDown(e, draginfo, dobj);\n\n   return false;\n\n   }\n\n//\n// DragMouseMove(event)\n//\n\nSocialCalc.DragMouseMove = function(event) {\n\n   var e = event || window.event;\n\n   var draginfo = SocialCalc.DragInfo;\n   var dobj = draginfo.draggingElement;\n\n   draginfo.clientX = e.clientX - draginfo.relativeOffset.left;\n   draginfo.clientY = e.clientY - draginfo.relativeOffset.top;\n   SocialCalc.StopPropagation(e);\n   if (dobj && dobj.functionobj && dobj.functionobj.MouseMove) dobj.functionobj.MouseMove(e, draginfo, dobj);\n   return false;\n   }\n\n//\n// DragMouseUp(event)\n//\n\nSocialCalc.DragMouseUp = function(event) {\n\n   var e = event || window.event;\n\n   var draginfo = SocialCalc.DragInfo;\n   var dobj = draginfo.draggingElement;\n\n   draginfo.clientX = e.clientX - draginfo.relativeOffset.left;\n   draginfo.clientY = e.clientY - draginfo.relativeOffset.top;\n\n   dobj.element.style.zIndex = draginfo.startZ;\n\n   if (dobj && dobj.functionobj && dobj.functionobj.MouseUp) dobj.functionobj.MouseUp(e, draginfo, dobj);\n   SocialCalc.RemoveMouseMoveUp(SocialCalc.DragMouseMove,\n\t\t\t\tSocialCalc.DragMouseUp,\n\t\t\t\tdobj.element, e);\n   draginfo.draggingElement = null;\n   return false;\n   }\n\n//\n// DragFunctionStart(event, draginfo, dobj)\n//\n\nSocialCalc.DragFunctionStart = function(event, draginfo, dobj) {\n\n   var element = dobj.functionobj.positionobj || dobj.element;\n\n   draginfo.offsetY = parseInt(element.style.top) - draginfo.clientY;\n   draginfo.offsetX = parseInt(element.style.left) - draginfo.clientX;\n\n   }\n\n//\n// DragFunctionPosition(event, draginfo, dobj)\n//\n\nSocialCalc.DragFunctionPosition = function(event, draginfo, dobj) {\n\n   var element = dobj.functionobj.positionobj || dobj.element;\n\n   if (dobj.vertical) element.style.top = (draginfo.clientY + draginfo.offsetY)+\"px\";\n   if (dobj.horizontal) element.style.left = (draginfo.clientX + draginfo.offsetX)+\"px\";\n\n   }\n\n// *************************************\n//\n// Button functions:\n//\n// *************************************\n\nSocialCalc.ButtonInfo = {\n\n   // There is only one of these -- no \"new\" is done.\n   // Only one button operation can be active at a time.\n   // The registeredElements array is used to identify items.\n\n   // One item for each clickable element, each an object with:\n   //    .element, .normalstyle, .hoverstyle, .downstyle, .repeatinterval, .functionobj, .editor\n   //\n   // .functionobj is an object with optional function objects for:\n   //    mouseover, mouseout, mousedown, repeatinterval, mouseup, disabled\n\n   registeredElements: [],\n\n   // Items used during hover over an element, clicking, repeating, etc.\n\n   buttonElement: null, // item being processed, hover or down (.element is the actual element)\n   doingHover: false, // true if mouse is over one of our elements\n   buttonDown: false, // true if button down and buttonElement not null\n   timer: null, // timer object for repeating\n\n   // Used while processing an event\n\n   relativeOffset: null,\n   clientX: 0,\n   clientY: 0\n\n   }\n\n//\n// ButtonRegister(editor, element, paramobj, functionobj) - make element clickable\n//\n// The arguments (other than editor and element) may be null (meaning no change for style and no repeat)\n// The paramobj has the optional normalstyle, hoverstyle, downstyle, repeatwait, repeatinterval settings\n\nSocialCalc.ButtonRegister = function(editor, element, paramobj, functionobj) {\n\n   var buttoninfo = SocialCalc.ButtonInfo;\n\n   if (!paramobj) paramobj = {};\n\n   buttoninfo.registeredElements.push(\n      {name: paramobj.name, element: element, editor: editor,\n       normalstyle: paramobj.normalstyle, hoverstyle: paramobj.hoverstyle, downstyle: paramobj.downstyle,\n       repeatwait: paramobj.repeatwait, repeatinterval: paramobj.repeatinterval, functionobj: functionobj}\n      );\n\n   if (element.addEventListener) { // DOM Level 2 -- Firefox, et al\n      element.addEventListener(\"mousedown\", SocialCalc.ButtonMouseDown, false);\n      element.addEventListener(\"mouseover\", SocialCalc.ButtonMouseOver, false);\n      element.addEventListener(\"mouseout\", SocialCalc.ButtonMouseOut, false);\n      }\n   else if (element.attachEvent) { // IE 5+\n      element.attachEvent(\"onmousedown\", SocialCalc.ButtonMouseDown);\n      element.attachEvent(\"onmouseover\", SocialCalc.ButtonMouseOver);\n      element.attachEvent(\"onmouseout\", SocialCalc.ButtonMouseOut);\n      }\n   else { // don't handle this\n      throw SocialCalc.Constants.s_BrowserNotSupported;\n      }\n\n   return;\n   }\n\n//\n// ButtonMouseOver(event)\n//\n\nSocialCalc.ButtonMouseOver = function(event) {\n\n   var e = event || window.event;\n\n   var buttoninfo = SocialCalc.ButtonInfo;\n\n   var bobj = SocialCalc.LookupElement(e.target || e.srcElement, buttoninfo.registeredElements);\n\n   if (!bobj) return;\n\n   if (buttoninfo.buttonDown) {\n      if (buttoninfo.buttonElement==bobj) {\n         buttoninfo.doingHover = true; // keep track whether we are on the pressed button or not\n         }\n      return;\n      }\n\n   if (buttoninfo.buttonElement &&\n          buttoninfo.buttonElement!=bobj && buttoninfo.doingHover) { // moved to a new one, undo hover there\n      SocialCalc.setStyles(buttoninfo.buttonElement.element, buttoninfo.buttonElement.normalstyle);\n      }\n\n   buttoninfo.buttonElement = bobj; // remember this one is hovering\n   buttoninfo.doingHover = true;\n\n   SocialCalc.setStyles(bobj.element, bobj.hoverstyle); // set style (if provided)\n\n   if (bobj && bobj.functionobj && bobj.functionobj.MouseOver) bobj.functionobj.MouseOver(e, buttoninfo, bobj);\n\n   return;\n\n   }\n\n//\n// ButtonMouseOut(event)\n//\n\nSocialCalc.ButtonMouseOut = function(event) {\n\n   var e = event || window.event;\n\n   var buttoninfo = SocialCalc.ButtonInfo;\n\n   if (buttoninfo.buttonDown) {\n      buttoninfo.doingHover = false; // keep track of overs and outs\n      return;\n      }\n\n   var bobj = SocialCalc.LookupElement(e.target || e.srcElement, buttoninfo.registeredElements);\n\n   if (buttoninfo.doingHover) { // if there was a hover, undo it\n      if (buttoninfo.buttonElement)\n         SocialCalc.setStyles(buttoninfo.buttonElement.element, buttoninfo.buttonElement.normalstyle);\n      buttoninfo.buttonElement = null;\n      buttoninfo.doingHover = false;\n      }\n\n   if (bobj && bobj.functionobj && bobj.functionobj.MouseOut) bobj.functionobj.MouseOut(e, buttoninfo, bobj);\n\n   return;\n\n   }\n\n//\n// ButtonMouseDown(event)\n//\n\nSocialCalc.ButtonMouseDown = function(event) {\n\n   var e = event || window.event;\n\n   var buttoninfo = SocialCalc.ButtonInfo;\n\n   var viewportinfo = SocialCalc.GetViewportInfo();\n\n   var bobj = SocialCalc.LookupElement(e.target || e.srcElement, buttoninfo.registeredElements);\n\n   if (!bobj) return; // not one of our elements\n\n   if (bobj && bobj.functionobj && bobj.functionobj.Disabled) {\n      if (bobj.functionobj.Disabled(e, buttoninfo, bobj)) {\n         return;\n         }\n      }\n\n   buttoninfo.buttonElement = bobj;\n   buttoninfo.buttonDown = true;\n\n   SocialCalc.setStyles(bobj.element, buttoninfo.buttonElement.downstyle);\n\n   // Register event handler for mouse up\n\n   // Event code from JavaScript, Flanagan, 5th Edition, pg. 422\n   if (document.addEventListener) { // DOM Level 2 -- Firefox, et al\n      document.addEventListener(\"mouseup\", SocialCalc.ButtonMouseUp, true); // capture everywhere\n      }\n   else if (bobj.element.attachEvent) { // IE 5+\n      bobj.element.setCapture();\n      bobj.element.attachEvent(\"onmouseup\", SocialCalc.ButtonMouseUp);\n      bobj.element.attachEvent(\"onlosecapture\", SocialCalc.ButtonMouseUp);\n      }\n   SocialCalc.StopPropagation(e);\n   buttoninfo.relativeOffset = SocialCalc.GetElementPositionWithScroll(bobj.editor.toplevel);\n   buttoninfo.clientX = e.clientX - buttoninfo.relativeOffset.left;\n   buttoninfo.clientY = e.clientY - buttoninfo.relativeOffset.top;\n\n   if (bobj && bobj.functionobj && bobj.functionobj.MouseDown) bobj.functionobj.MouseDown(e, buttoninfo, bobj);\n\n   if (bobj.repeatwait) { // if a repeat wait is set, then starting waiting for first repetition\n      buttoninfo.timer = window.setTimeout(SocialCalc.ButtonRepeat, bobj.repeatwait);\n      }\n\n   return;\n\n   }\n\n//\n// ButtonMouseUp(event)\n//\n\nSocialCalc.ButtonMouseUp = function(event) {\n\n   var e = event || window.event;\n\n   var buttoninfo = SocialCalc.ButtonInfo;\n   var bobj = buttoninfo.buttonElement;\n\n   if (buttoninfo.timer) { // if repeating, cancel it\n      window.clearTimeout(buttoninfo.timer); // cancel timer\n      buttoninfo.timer = null;\n      }\n\n   if (!buttoninfo.buttonDown) return; // already did this (e.g., in IE, releaseCapture fires losecapture)\n   SocialCalc.StopPropagation(e);\n   if (document.removeEventListener) { // DOM Level 2\n      document.removeEventListener(\"mouseup\", SocialCalc.ButtonMouseUp, true);\n      }\n   else if (document.detachEvent) { // IE\n      bobj.element.detachEvent(\"onlosecapture\", SocialCalc.ButtonMouseUp);\n      bobj.element.detachEvent(\"onmouseup\", SocialCalc.ButtonMouseUp);\n      bobj.element.releaseCapture();\n      }\n\n   if (buttoninfo.buttonElement.downstyle) {\n      if (buttoninfo.doingHover)\n         SocialCalc.setStyles(bobj.element, buttoninfo.buttonElement.hoverstyle);\n      else\n         SocialCalc.setStyles(bobj.element, buttoninfo.buttonElement.normalstyle);\n      }\n\n   buttoninfo.buttonDown = false;\n\n   if (bobj && bobj.functionobj && bobj.functionobj.MouseUp) bobj.functionobj.MouseUp(e, buttoninfo, bobj);\n\n   }\n\n//\n// ButtonRepeat()\n//\n\nSocialCalc.ButtonRepeat = function() {\n\n   var buttoninfo = SocialCalc.ButtonInfo;\n   var bobj = buttoninfo.buttonElement;\n\n   if (!bobj) return;\n\n   if (bobj && bobj.functionobj && bobj.functionobj.Repeat) bobj.functionobj.Repeat(null, buttoninfo, bobj);\n\n   buttoninfo.timer = window.setTimeout(SocialCalc.ButtonRepeat, bobj.repeatinterval || 100);\n\n   }\n\n// *************************************\n//\n// MouseWheel functions:\n//\n// *************************************\n\nSocialCalc.MouseWheelInfo = {\n\n   // There is only one of these -- no \"new\" is done.\n   // The mousewheel only affects the one area the mouse pointer is over\n   // The registeredElements array is used to identify items.\n\n   // One item for each element to respond to the mousewheel, each an object with:\n   //    .element, .functionobj\n\n   registeredElements: []\n\n   }\n\n//\n// MouseWheelRegister(element, functionobj) - make element respond to mousewheel\n//\n\nSocialCalc.MouseWheelRegister = function(element, functionobj) {\n\n   var mousewheelinfo = SocialCalc.MouseWheelInfo;\n\n   mousewheelinfo.registeredElements.push(\n      {element: element, functionobj: functionobj}\n      );\n\n   if (element.addEventListener) { // DOM Level 2 -- Firefox, et al\n      element.addEventListener(\"DOMMouseScroll\", SocialCalc.ProcessMouseWheel, false);\n      element.addEventListener(\"mousewheel\", SocialCalc.ProcessMouseWheel, false); // Opera needs this\n      }\n   else if (element.attachEvent) { // IE 5+\n      element.attachEvent(\"onmousewheel\", SocialCalc.ProcessMouseWheel);\n      }\n   else { // don't handle this\n      throw SocialCalc.Constants.s_BrowserNotSupported;\n      }\n\n   return;\n\n   }\n\nSocialCalc.ProcessMouseWheel = function(e) {\n\n   var event = e || window.event;\n   var delta;\n\n   if (SocialCalc.Keyboard.passThru) return; // ignore\n\n   var mousewheelinfo = SocialCalc.MouseWheelInfo;\n   var ele = event.target || event.srcElement; // source object is often within what we want\n   var wobj;\n\n   for (wobj=null; !wobj && ele; ele=ele.parentNode) { // go up tree looking for one of our elements\n      wobj = SocialCalc.LookupElement(ele, mousewheelinfo.registeredElements);\n      }\n   if (!wobj) return; // not one of our elements\n\n   if (event.wheelDelta) {\n      delta = event.wheelDelta/120;\n      }\n   else delta = -event.detail/3;\n   if (!delta) delta = 0;\n\n   if (wobj.functionobj && wobj.functionobj.WheelMove) wobj.functionobj.WheelMove(event, delta, mousewheelinfo, wobj);\n\n   if (event.preventDefault) event.preventDefault();\n   event.returnValue = false;\n\n   }\n\n// *************************************\n//\n// Keyboard functions:\n//\n// For more information about keyboard handling, see: http://unixpapa.com/js/key.html\n//\n// *************************************\n\nSocialCalc.keyboardTables = {\n\n   specialKeysCommon: {\n      8: \"[backspace]\", 9: \"[tab]\", 13: \"[enter]\", 25: \"[tab]\", 27: \"[esc]\", 33: \"[pgup]\", 34: \"[pgdn]\",\n      35: \"[end]\", 36: \"[home]\", 37: \"[aleft]\", 38: \"[aup]\", 39: \"[aright]\", 40: \"[adown]\", 45: \"[ins]\",\n      46: \"[del]\", 113: \"[f2]\"\n      },\n\n   specialKeysIE: {\n      8: \"[backspace]\", 9: \"[tab]\", 13: \"[enter]\", 25: \"[tab]\", 27: \"[esc]\", 33: \"[pgup]\", 34: \"[pgdn]\",\n      35: \"[end]\", 36: \"[home]\", 37: \"[aleft]\", 38: \"[aup]\", 39: \"[aright]\", 40: \"[adown]\", 45: \"[ins]\",\n      46: \"[del]\", 113: \"[f2]\"\n      },\n\n   controlKeysIE: {\n      65: \"[ctrl-a]\",\n      67: \"[ctrl-c]\",\n      83: \"[ctrl-s]\",\n      86: \"[ctrl-v]\",\n      88: \"[ctrl-x]\",\n      90: \"[ctrl-z]\"\n      },\n\n   specialKeysOpera: {\n      8: \"[backspace]\", 9: \"[tab]\", 13: \"[enter]\", 25: \"[tab]\", 27: \"[esc]\", 33: \"[pgup]\", 34: \"[pgdn]\",\n      35: \"[end]\", 36: \"[home]\", 37: \"[aleft]\", 38: \"[aup]\", 39: \"[aright]\", 40: \"[adown]\",\n      45: \"[ins]\", // issues with releases before 9.5 - same as \"-\" (\"-\" changed in 9.5)\n      46: \"[del]\", // issues with releases before 9.5 - same as \".\" (\".\" changed in 9.5)\n      113: \"[f2]\"\n      },\n\n   controlKeysOpera: {\n      65: \"[ctrl-a]\",\n      67: \"[ctrl-c]\",\n      83: \"[ctrl-s]\",\n      86: \"[ctrl-v]\",\n      88: \"[ctrl-x]\",\n      90: \"[ctrl-z]\"\n      },\n\n   specialKeysSafari: {\n      8: \"[backspace]\", 9: \"[tab]\", 13: \"[enter]\", 25: \"[tab]\", 27: \"[esc]\", 63232: \"[aup]\", 63233: \"[adown]\",\n      63234: \"[aleft]\", 63235: \"[aright]\", 63272: \"[del]\", 63273: \"[home]\", 63275: \"[end]\", 63276: \"[pgup]\",\n      63277: \"[pgdn]\", 63237: \"[f2]\"\n      },\n\n   controlKeysSafari: {\n      97: \"[ctrl-a]\",\n      99: \"[ctrl-c]\",\n      115: \"[ctrl-s]\",\n      118: \"[ctrl-v]\",\n      120: \"[ctrl-x]\",\n      122: \"[ctrl-z]\"\n      },\n\n   ignoreKeysSafari: {\n      63236: \"[f1]\", 63238: \"[f3]\", 63239: \"[f4]\", 63240: \"[f5]\", 63241: \"[f6]\", 63242: \"[f7]\",\n      63243: \"[f8]\", 63244: \"[f9]\", 63245: \"[f10]\", 63246: \"[f11]\", 63247: \"[f12]\", 63289: \"[numlock]\"\n      },\n\n   specialKeysFirefox: {\n      8: \"[backspace]\", 9: \"[tab]\", 13: \"[enter]\", 25: \"[tab]\", 27: \"[esc]\", 33: \"[pgup]\", 34: \"[pgdn]\",\n      35: \"[end]\", 36: \"[home]\", 37: \"[aleft]\", 38: \"[aup]\", 39: \"[aright]\", 40: \"[adown]\", 45: \"[ins]\",\n      46: \"[del]\", 113: \"[f2]\"\n      },\n\n   controlKeysFirefox: {\n      97: \"[ctrl-a]\",\n      99: \"[ctrl-c]\",\n      115: \"[ctrl-s]\",\n      118: \"[ctrl-v]\",\n      120: \"[ctrl-x]\",\n      122: \"[ctrl-z]\"\n      },\n\n   ignoreKeysFirefox: {\n      16: \"[shift]\", 17: \"[ctrl]\", 18: \"[alt]\", 20: \"[capslock]\", 19: \"[pause]\", 44: \"[printscreen]\",\n      91: \"[windows]\", 92: \"[windows]\", 112: \"[f1]\", 114: \"[f3]\", 115: \"[f4]\", 116: \"[f5]\",\n      117: \"[f6]\", 118: \"[f7]\", 119: \"[f8]\", 120: \"[f9]\", 121: \"[f10]\", 122: \"[f11]\", 123: \"[f12]\",\n      144: \"[numlock]\", 145: \"[scrolllock]\", 224: \"[cmd]\"\n      }\n   }\n\nSocialCalc.Keyboard = {\n   areListener: false, // if true, we have been installed as a listener for keyboard events\n   focusTable: null, // the table editor object that gets keystrokes or null\n   passThru: null, // if not null, control element with focus to pass keyboard events to (has blur method), or \"true\"\n   didProcessKey: false, // did SocialCalc.ProcessKey in keydown\n   statusFromProcessKey: false, // the status from the keydown SocialCalc.ProcessKey\n   repeatingKeyPress: false, // some browsers (Opera, Gecko Mac) repeat special keys as KeyPress not KeyDown\n   chForProcessKey: \"\" // remember so can do repeat in those cases\n   };\n\nSocialCalc.KeyboardSetFocus = function(editor) {\n\n   SocialCalc.Keyboard.focusTable = editor;\n\n   if (!SocialCalc.Keyboard.areListener) {\n      document.onkeydown = SocialCalc.ProcessKeyDown;\n      document.onkeypress = SocialCalc.ProcessKeyPress;\n      SocialCalc.Keyboard.areListener = true;\n      }\n   if (SocialCalc.Keyboard.passThru) {\n      if (SocialCalc.Keyboard.passThru.blur) {\n         SocialCalc.Keyboard.passThru.blur();\n         }\n      SocialCalc.Keyboard.passThru = null;\n      }\n   window.focus();\n   }\n\nSocialCalc.KeyboardFocus = function() {\n\n   SocialCalc.Keyboard.passThru = null;\n   window.focus();\n\n   }\n\nSocialCalc.ProcessKeyDown = function(e) {\n\n   var kt = SocialCalc.keyboardTables;\n   kt.didProcessKey = false; // always start false\n   kt.statusFromProcessKey = false;\n   kt.repeatingKeyPress = false;\n\n   var ch=\"\";\n   var status=true;\n\n   if (SocialCalc._app) return; // // ignore in app - widgets need control\n   if (SocialCalc.Keyboard.passThru) return; // ignore\n\n   e = e || window.event;\n\n   if (e.which==undefined) { // IE\n      ch = kt.specialKeysCommon[e.keyCode];\n      if (!ch) {\n         if (e.ctrlKey) {\n            ch=kt.controlKeysIE[e.keyCode];\n            }\n         if (!ch)\n            return true;\n         }\n      status = SocialCalc.ProcessKey(ch, e);\n\n      if (!status) {\n         if (e.preventDefault) e.preventDefault();\n            e.returnValue = false;\n         }\n      }\n\n   else {\n      ch = kt.specialKeysCommon[e.keyCode];\n      if (!ch) {\n//         return true;\n         if (e.ctrlKey || e.metaKey) {\n            ch=kt.controlKeysIE[e.keyCode]; // this works here\n            }\n         if (!ch)\n            return true;\n         }\n\n      status = SocialCalc.ProcessKey(ch, e); // process the key\n      kt.didProcessKey = true; // remember what happened\n      kt.statusFromProcessKey = status;\n      kt.chForProcessKey = ch;\n      }\n\n   return status;\n\n   }\n\nSocialCalc.ProcessKeyPress = function(e) {\n\n   var kt = SocialCalc.keyboardTables;\n\n   var ch=\"\";\n\n   e = e || window.event;\n   if (SocialCalc._app) return; // // ignore in app - widgets need control\n\n   if (SocialCalc.Keyboard.passThru) return; // ignore\n   if (kt.didProcessKey) { // already processed this key\n      if (kt.repeatingKeyPress) {\n         return SocialCalc.ProcessKey(kt.chForProcessKey, e); // process the same key as on KeyDown\n         }\n      else {\n         kt.repeatingKeyPress = true; // see if get another KeyPress before KeyDown\n         return kt.statusFromProcessKey; // do what it said to do\n         }\n      }\n\n   if (e.which==undefined) { // IE\n      // Note: Esc and Enter will come through here, too, if not stopped at KeyDown\n      ch=String.fromCharCode(e.keyCode); // convert to a character (special chars handled at ev1)\n      }\n\n   else { // not IE\n      if (!e.which)\n         return false; // ignore - special key\n      if (e.charCode==undefined) { // Opera\n         if (e.which!=0) { // character\n            if (e.which<32 || e.which==144) { // special char (144 is numlock)\n               ch = kt.specialKeysOpera[e.which];\n               if (ch) {\n                  return true;\n                  }\n               }\n            else {\n               if (e.ctrlKey) {\n                  ch=kt.controlKeysOpera[e.keyCode];\n                  }\n               else {\n                  ch = String.fromCharCode(e.which);\n                  }\n               }\n            }\n         else { // special char\n            return true;\n            }\n         }\n\n      else if (e.keyCode==0 && e.charCode==0) { // OLPC Fn key or something\n         return; // ignore\n         }\n\n      else if (e.keyCode==e.charCode) { // Safari\n         ch = kt.specialKeysSafari[e.keyCode];\n         if (!ch) {\n            if (kt.ignoreKeysSafari[e.keyCode]) // pass this through\n               return true;\n            if (e.metaKey) {\n               ch=kt.controlKeysSafari[e.keyCode];\n               }\n            else {\n               ch = String.fromCharCode(e.which);\n               }\n            }\n         }\n\n      else { // Firefox\n         if (kt.specialKeysFirefox[e.keyCode]) {\n            return true;\n            }\n         ch = String.fromCharCode(e.which);\n         if (e.ctrlKey || e.metaKey) {\n            ch = kt.controlKeysFirefox[e.which];\n            }\n         }\n      }\n\n   var status = SocialCalc.ProcessKey(ch, e);\n\n   if (!status) {\n      if (e.preventDefault) e.preventDefault();\n      e.returnValue = false;\n      }\n\n   return status;\n\n   }\n\n//\n// status = SocialCalc.ProcessKey(ch, e)\n//\n// Take a key representation as a character string and dispatch to appropriate routine\n//\n\nSocialCalc.ProcessKey = function (ch, e) {\n   var ft = SocialCalc.Keyboard.focusTable;\n   if (!ft) return true; // we're not handling it -- let browser do default\n   return ft.EditorProcessKey(ch, e);\n   }\n\n\n\n//\n/*\n// SocialCalc Number Formatting Library\n//\n// Part of the SocialCalc package.\n//\n// (c) Copyright 2008 Socialtext, Inc.\n// All Rights Reserved.\n//\n// The contents of this file are subject to the Artistic License 2.0; you may not\n// use this file except in compliance with the License. You may obtain a copy of \n// the License at http://socialcalc.org/licenses/al-20/.\n//\n// Some of the other files in the SocialCalc package are licensed under\n// different licenses. Please note the licenses of the modules you use.\n//\n// Code History:\n//\n// Initially coded by Dan Bricklin of Software Garden, Inc., for Socialtext, Inc.\n// Based in part on the SocialCalc 1.1.0 code written in Perl.\n// The SocialCalc 1.1.0 code was:\n//    Portions (c) Copyright 2005, 2006, 2007 Software Garden, Inc.\n//    All Rights Reserved.\n//    Portions (c) Copyright 2007 Socialtext, Inc.\n//    All Rights Reserved.\n// The Perl SocialCalc started as modifications to the wikiCalc(R) program, version 1.0.\n// wikiCalc 1.0 was written by Software Garden, Inc.\n// Unless otherwise specified, referring to \"SocialCalc\" in comments refers to this\n// JavaScript version of the code, not the SocialCalc Perl code.\n//\n*/\n\n   var SocialCalc;\n   if (!SocialCalc) SocialCalc = {}; // May be used with other SocialCalc libraries or standalone\n\nSocialCalc.FormatNumber = {};\n\nSocialCalc.FormatNumber.format_definitions = {}; // Parsed formats are stored here globally\n\n// Most constants that are often customized for localization are in the SocialCalc.Constants module.\n// If you use this module standalone, provide at least the \"FormatNumber\" values.\n//\n\n// The following values may be customized externally for further localization of the format definitions themselves,\n// but that would make them incompatible with other uses and is discouraged.\n//\n\nSocialCalc.FormatNumber.separatorchar = \",\";\nSocialCalc.FormatNumber.decimalchar = \".\";\nSocialCalc.FormatNumber.daynames = [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"];\nSocialCalc.FormatNumber.daynames3 = [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"];\nSocialCalc.FormatNumber.monthnames3 = [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"];\nSocialCalc.FormatNumber.monthnames = [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\",\n                                      \"October\", \"November\", \"December\"];\n\nSocialCalc.FormatNumber.allowedcolors =\n   {BLACK: \"#000000\", BLUE: \"#0000FF\", CYAN: \"#00FFFF\", GREEN: \"#00FF00\", MAGENTA: \"#FF00FF\",\n    RED: \"#FF0000\", WHITE: \"#FFFFFF\", YELLOW: \"#FFFF00\"};\n\nSocialCalc.FormatNumber.alloweddates =\n   {H: \"h]\", M: \"m]\", MM: \"mm]\", S: \"s]\", SS: \"ss]\"};\n\n// Other constants\n\nSocialCalc.FormatNumber.commands =\n   {copy: 1, color: 2, integer_placeholder: 3, fraction_placeholder: 4, decimal: 5,\n    currency: 6, general:7, separator: 8, date: 9, comparison: 10, section: 11, style: 12};\n\nSocialCalc.FormatNumber.datevalues = {julian_offset: 2415019, seconds_in_a_day: 24 * 60 * 60, seconds_in_an_hour: 60 * 60};\n\n/* *******************\n\n result = SocialCalc.FormatNumber.formatNumberWithFormat = function(rawvalue, format_string, currency_char)\n\n************************* */\n\nSocialCalc.FormatNumber.formatNumberWithFormat = function(rawvalue, format_string, currency_char) {\n\n   var scc = SocialCalc.Constants;\n   var scfn = SocialCalc.FormatNumber;\n\n   var op, operandstr, fromend, cval, operandstrlc;\n   var startval, estartval;\n   var hrs, mins, secs, ehrs, emins, esecs, ampmstr, ymd;\n   var minOK, mpos;\n   var result=\"\";\n   var thisformat;\n   var section, gotcomparison, compop, compval, cpos, oppos;\n   var sectioninfo;\n   var i, decimalscale, scaledvalue, strvalue, strparts, integervalue, fractionvalue;\n   var integerdigits2, integerpos, fractionpos, textcolor, textstyle, separatorchar, decimalchar;\n   var value; // working copy to change sign, etc.\n\n   if (typeof(rawvalue) == \"string\" && !rawvalue.length) return \"\";\n\n   value = rawvalue-0; // make sure a number\n   if (!isFinite(value)) {\n      if (typeof(rawvalue) == \"string\") { // if original was a string, try to format it\n         return scfn.formatTextWithFormat(rawvalue, format_string);\n         }\n      else {\n         return \"NaN\";\n         }\n      }\n   rawvalue = value;\n\n   var negativevalue = value < 0 ? 1 : 0; // determine sign, etc.\n   if (negativevalue) value = -value;\n   var zerovalue = value == 0 ? 1 : 0;\n\n   currency_char = currency_char || scc.FormatNumber_DefaultCurrency;\n\n   scfn.parse_format_string(scfn.format_definitions, format_string); // make sure format is parsed\n   thisformat = scfn.format_definitions[format_string]; // Get format structure\n\n   if (!thisformat) throw \"Format not parsed error!\";\n\n   section = thisformat.sectioninfo.length - 1; // get number of sections - 1\n\n   if (thisformat.hascomparison) { // has comparisons - determine which section\n      section = 0; // set to which section we will use\n      gotcomparison = 0; // this section has no comparison\n      for (cpos=0; ;cpos++) { // scan for comparisons\n         op = thisformat.operators[cpos];\n         operandstr = thisformat.operands[cpos]; // get next operator and operand\n         if (!op) { // at end with no match\n            if (gotcomparison) { // if comparison but no match\n               format_string = \"General\"; // use default of General\n               scfn.parse_format_string(scfn.format_definitions, format_string);\n               thisformat = scfn.format_definitions[format_string];\n               section = 0;\n               }\n            break; // if no comparision, matches on this section\n            }\n         if (op == scfn.commands.section) { // end of section\n            if (!gotcomparison) { // no comparison, so it's a match\n               break;\n               }\n            gotcomparison = 0;\n            section++; // check out next one\n            continue;\n            }\n         if (op == scfn.commands.comparison) { // found a comparison - do we meet it?\n            i=operandstr.indexOf(\":\");\n            compop=operandstr.substring(0,i);\n            compval=operandstr.substring(i+1)-0;\n            if ((compop == \"<\" && rawvalue < compval) ||\n                (compop == \"<=\" && rawvalue <= compval) ||\n                (compop == \"=\" && rawvalue == compval) ||\n                (compop == \"<>\" && rawvalue != compval) ||\n                (compop == \">=\" && rawvalue >= compval) ||\n                (compop == \">\" && rawvalue > compval)) { // a match\n               break;\n               }\n            gotcomparison = 1;\n            }\n         }\n      }\n   else if (section > 0) { // more than one section (separated by \";\")\n      if (section == 1) { // two sections\n         if (negativevalue) {\n            negativevalue = 0; // sign will provided by section, not automatically\n            section = 1; // use second section for negative values\n            }\n         else {\n            section = 0; // use first for all others\n            }\n         }\n      else if (section == 2 || section == 3) { // three or four sections\n         if (negativevalue) {\n            negativevalue = 0; // sign will provided by section, not automatically\n            section = 1; // use second section for negative values\n            }\n         else if (zerovalue) {\n            section = 2; // use third section for zero values\n            }\n         else {\n            section = 0; // use first for positive\n            }\n         }\n      }\n\n   sectioninfo = thisformat.sectioninfo[section]; // look at values for our section\n\n   if (sectioninfo.commas > 0) { // scale by thousands\n      for (i=0; i<sectioninfo.commas; i++) {\n         value /= 1000;\n         }\n      }\n   if (sectioninfo.percent > 0) { // do percent scaling\n      for (i=0; i<sectioninfo.percent; i++) {\n         value *= 100;\n         }\n      }\n\n   decimalscale = 1; // cut down to required number of decimal digits\n   for (i=0; i<sectioninfo.fractiondigits; i++) {\n      decimalscale *= 10;\n      }\n   scaledvalue = Math.floor(value * decimalscale + 0.5);\n   scaledvalue = scaledvalue / decimalscale;\n\n   if (typeof scaledvalue != \"number\") return \"NaN\";\n   if (!isFinite(scaledvalue)) return \"NaN\";\n\n   strvalue = scaledvalue+\"\"; // convert to string (Number.toFixed doesn't do all we need)\n\n//   strvalue = value.toFixed(sectioninfo.fractiondigits); // cut down to required number of decimal digits\n                                                         // and convert to string\n\n   if (scaledvalue == 0 && (sectioninfo.fractiondigits || sectioninfo.integerdigits)) {\n      negativevalue = 0; // no \"-0\" unless using multiple sections or General\n      }\n\n   if (strvalue.indexOf(\"e\")>=0) { // converted to scientific notation\n      return rawvalue+\"\"; // Just return plain converted raw value\n      }\n\n   strparts=strvalue.match(/^\\+{0,1}(\\d*)(?:\\.(\\d*)){0,1}$/); // get integer and fraction parts\n   if (!strparts) return \"NaN\"; // if not a number\n   integervalue = strparts[1];\n   if (!integervalue || integervalue==\"0\") integervalue=\"\";\n   fractionvalue = strparts[2];\n   if (!fractionvalue) fractionvalue = \"\";\n\n   if (sectioninfo.hasdate) { // there are date placeholders\n      if (rawvalue < 0) { // bad date\n         return \"??-???-??&nbsp;??:??:??\";\n         }\n      startval = (rawvalue-Math.floor(rawvalue)) * scfn.datevalues.seconds_in_a_day; // get date/time parts\n      estartval = rawvalue * scfn.datevalues.seconds_in_a_day; // do elapsed time version, too\n      hrs = Math.floor(startval / scfn.datevalues.seconds_in_an_hour);\n      ehrs = Math.floor(estartval / scfn.datevalues.seconds_in_an_hour);\n      startval = startval - hrs * scfn.datevalues.seconds_in_an_hour;\n      mins = Math.floor(startval / 60);\n      emins = Math.floor(estartval / 60);\n      secs = startval - mins * 60;\n      decimalscale = 1; // round appropriately depending if there is ss.0\n      for (i=0; i<sectioninfo.fractiondigits; i++) {\n         decimalscale *= 10;\n         }\n      secs = Math.floor(secs * decimalscale + 0.5);\n      secs = secs / decimalscale;\n      esecs = Math.floor(estartval * decimalscale + 0.5);\n      esecs = esecs / decimalscale;\n      if (secs >= 60) { // handle round up into next second, minute, etc.\n         secs = 0;\n         mins++; emins++;\n         if (mins >= 60) {\n            mins = 0;\n            hrs++; ehrs++;\n            if (hrs >= 24) {\n               hrs = 0;\n               rawvalue++;\n               }\n            }\n         }\n      fractionvalue = (secs-Math.floor(secs))+\"\"; // for \"hh:mm:ss.000\"\n      fractionvalue = fractionvalue.substring(2); // skip \"0.\"\n\n      ymd = SocialCalc.FormatNumber.convert_date_julian_to_gregorian(Math.floor(rawvalue+scfn.datevalues.julian_offset));\n\n      minOK = 0; // says \"m\" can be minutes if true\n      mspos = sectioninfo.sectionstart; // m scan position in ops\n      for ( ; ; mspos++) { // scan for \"m\" and \"mm\" to see if any minutes fields, and am/pm\n         op = thisformat.operators[mspos];\n         operandstr = thisformat.operands[mspos]; // get next operator and operand\n         if (!op) break; // don't go past end\n         if (op==scfn.commands.section) break;\n         if (op==scfn.commands.date) {\n            if ((operandstr.toLowerCase()==\"am/pm\" || operandstr.toLowerCase()==\"a/p\") && !ampmstr) {\n               if (hrs >= 12) {\n                  hrs -= 12;\n                  ampmstr = operandstr.toLowerCase()==\"a/p\" ? scc.s_FormatNumber_pm1 : scc.s_FormatNumber_pm; // \"P\" : \"PM\";\n                  }\n               else {\n                  ampmstr = operandstr.toLowerCase()==\"a/p\" ? scc.s_FormatNumber_am1 : scc.s_FormatNumber_am; // \"A\" : \"AM\";\n                  }\n               if (operandstr.indexOf(ampmstr)<0)\n                  ampmstr = ampmstr.toLowerCase(); // have case match case in format\n               }\n            if (minOK && (operandstr==\"m\" || operandstr==\"mm\")) {\n               thisformat.operands[mspos] += \"in\"; // turn into \"min\" or \"mmin\"\n               }\n            if (operandstr.charAt(0)==\"h\") {\n               minOK = 1; // m following h or hh or [h] is minutes not months\n               }\n            else {\n               minOK = 0;\n               }\n            }\n         else if (op!=scfn.commands.copy) { // copying chars can be between h and m\n            minOK = 0;\n            }\n         }\n      minOK = 0;\n      for (--mspos; ; mspos--) { // scan other way for s after m\n         op = thisformat.operators[mspos];\n         operandstr = thisformat.operands[mspos]; // get next operator and operand\n         if (!op) break; // don't go past end\n         if (op==scfn.commands.section) break;\n         if (op==scfn.commands.date) {\n            if (minOK && (operandstr==\"m\" || operandstr==\"mm\")) {\n               thisformat.operands[mspos] += \"in\"; // turn into \"min\" or \"mmin\"\n               }\n            if (operandstr==\"ss\") {\n               minOK = 1; // m before ss is minutes not months\n               }\n            else {\n               minOK = 0;\n               }\n            }\n         else if (op!=scfn.commands.copy) { // copying chars can be between ss and m\n            minOK = 0;\n            }\n         }\n      }\n\n   integerdigits2 = 0; // init counters, etc.\n   integerpos = 0;\n   fractionpos = 0;\n   textcolor = \"\";\n   textstyle = \"\";\n   separatorchar = scc.FormatNumber_separatorchar;\n   if (separatorchar.indexOf(\" \")>=0) separatorchar = separatorchar.replace(/ /g, \"&nbsp;\");\n   decimalchar = scc.FormatNumber_decimalchar;\n   if (decimalchar.indexOf(\" \")>=0) decimalchar = decimalchar.replace(/ /g, \"&nbsp;\");\n\n   oppos = sectioninfo.sectionstart;\n\n   while (op = thisformat.operators[oppos]) { // execute format\n      operandstr = thisformat.operands[oppos++]; // get next operator and operand\n\n      if (op == scfn.commands.copy) { // put char in result\n         result += operandstr;\n         }\n\n      else if (op == scfn.commands.color) { // set color\n         textcolor = operandstr;\n         }\n\n      else if (op == scfn.commands.style) { // set style\n         textstyle = operandstr;\n         }\n\n      else if (op == scfn.commands.integer_placeholder) { // insert number part\n         if (negativevalue) {\n            result += \"-\";\n            negativevalue = 0;\n            }\n         integerdigits2++;\n         if (integerdigits2 == 1) { // first one\n            if (integervalue.length > sectioninfo.integerdigits) { // see if integer wider than field\n               for (;integerpos < (integervalue.length - sectioninfo.integerdigits); integerpos++) {\n                  result += integervalue.charAt(integerpos);\n                  if (sectioninfo.thousandssep) { // see if this is a separator position\n                     fromend = integervalue.length - integerpos - 1;\n                     if (fromend > 2 && fromend % 3 == 0) {\n                        result += separatorchar;\n                        }\n                     }\n                  }\n               }\n            }\n         if (integervalue.length < sectioninfo.integerdigits\n             && integerdigits2 <= sectioninfo.integerdigits - integervalue.length) { // field is wider than value\n            if (operandstr == \"0\" || operandstr == \"?\") { // fill with appropriate characters\n               result += operandstr == \"0\" ? \"0\" : \"&nbsp;\";\n               if (sectioninfo.thousandssep) { // see if this is a separator position\n                  fromend = sectioninfo.integerdigits - integerdigits2;\n                  if (fromend > 2 && fromend % 3 == 0) {\n                     result += separatorchar;\n                     }\n                  }\n               }\n            }\n         else { // normal integer digit - add it\n            result += integervalue.charAt(integerpos);\n            if (sectioninfo.thousandssep) { // see if this is a separator position\n               fromend = integervalue.length - integerpos - 1;\n               if (fromend > 2 && fromend % 3 == 0) {\n                  result += separatorchar;\n                  }\n               }\n            integerpos++;\n            }\n         }\n      else if (op == scfn.commands.fraction_placeholder) { // add fraction part of number\n         if (fractionpos >= fractionvalue.length) {\n            if (operandstr == \"0\" || operandstr == \"?\") {\n               result += operandstr == \"0\" ? \"0\" : \"&nbsp;\";\n               }\n            }\n         else {\n            result += fractionvalue.charAt(fractionpos);\n            }\n         fractionpos++;\n         }\n\n      else if (op == scfn.commands.decimal) { // decimal point\n         if (negativevalue) {\n            result += \"-\";\n            negativevalue = 0;\n            }\n         result += decimalchar;\n         }\n\n      else if (op == scfn.commands.currency) { // currency symbol\n         if (negativevalue) {\n            result += \"-\";\n            negativevalue = 0;\n            }\n         result += operandstr;\n         }\n\n      else if (op == scfn.commands.general) { // insert \"General\" conversion\n\n         // *** Cut down number of significant digits to avoid floating point artifacts:\n\n         if (value!=0) { // only if non-zero\n            var factor = Math.floor(Math.LOG10E * Math.log(value)); // get integer magnitude as a power of 10\n            factor = Math.pow(10, 13-factor); // turn into scaling factor\n            value = Math.floor(factor * value + 0.5)/factor; // scale positive value, round, undo scaling\n            if (!isFinite(value)) return \"NaN\";\n            }\n         if (negativevalue) {\n            result += \"-\";\n            }\n         strvalue = value+\"\"; // convert original value to string\n         if (strvalue.indexOf(\"e\")>=0) { // converted to scientific notation\n            result += strvalue;\n            continue;\n            }\n         strparts=strvalue.match(/^\\+{0,1}(\\d*)(?:\\.(\\d*)){0,1}$/); // get integer and fraction parts\n         integervalue = strparts[1];\n         if (!integervalue || integervalue==\"0\") integervalue=\"\";\n         fractionvalue = strparts[2];\n         if (!fractionvalue) fractionvalue = \"\";\n         integerpos = 0;\n         fractionpos = 0;\n         if (integervalue.length) {\n            for (;integerpos < integervalue.length; integerpos++) {\n               result += integervalue.charAt(integerpos);\n               if (sectioninfo.thousandssep) { // see if this is a separator position\n                  fromend = integervalue.length - integerpos - 1;\n                  if (fromend > 2 && fromend % 3 == 0) {\n                     result += separatorchar;\n                     }\n                  }\n               }\n             }\n         else {\n            result += \"0\";\n            }\n         if (fractionvalue.length) {\n            result += decimalchar;\n            for (;fractionpos < fractionvalue.length; fractionpos++) {\n               result += fractionvalue.charAt(fractionpos);\n               }\n            }\n         }\n      else if (op==scfn.commands.date) { // date placeholder\n         operandstrlc = operandstr.toLowerCase();\n         if (operandstrlc==\"y\" || operandstrlc==\"yy\") {\n            result += (ymd.year+\"\").substring(2);\n            }\n         else if (operandstrlc==\"yyyy\") {\n            result += ymd.year+\"\";\n            }\n         else if (operandstrlc==\"d\") {\n            result += ymd.day+\"\";\n            }\n         else if (operandstrlc==\"dd\") {\n            cval = 1000 + ymd.day;\n            result += (cval+\"\").substr(2);\n            }\n         else if (operandstrlc==\"ddd\") {\n            cval = Math.floor(rawvalue+6) % 7;\n            result += scc.s_FormatNumber_daynames3[cval];\n            }\n         else if (operandstrlc==\"dddd\") {\n            cval = Math.floor(rawvalue+6) % 7;\n            result += scc.s_FormatNumber_daynames[cval];\n            }\n         else if (operandstrlc==\"m\") {\n            result += ymd.month+\"\";\n            }\n         else if (operandstrlc==\"mm\") {\n            cval = 1000 + ymd.month;\n            result += (cval+\"\").substr(2);\n            }\n         else if (operandstrlc==\"mmm\") {\n            result += scc.s_FormatNumber_monthnames3[ymd.month-1];\n            }\n         else if (operandstrlc==\"mmmm\") {\n            result += scc.s_FormatNumber_monthnames[ymd.month-1];\n            }\n         else if (operandstrlc==\"mmmmm\") {\n            result += scc.s_FormatNumber_monthnames[ymd.month-1].charAt(0);\n            }\n         else if (operandstrlc==\"h\") {\n            result += hrs+\"\";\n            }\n         else if (operandstrlc==\"h]\") {\n            result += ehrs+\"\";\n            }\n         else if (operandstrlc==\"mmin\") {\n            cval = (1000 + mins)+\"\";\n            result += cval.substr(2);\n            }\n         else if (operandstrlc==\"mm]\") {\n            if (emins < 100) {\n               cval = (1000 + emins)+\"\";\n               result += cval.substr(2);\n               }\n            else {\n               result += emins+\"\";\n               }\n            }\n         else if (operandstrlc==\"min\") {\n            result += mins+\"\";\n            }\n         else if (operandstrlc==\"m]\") {\n            result += emins+\"\";\n            }\n         else if (operandstrlc==\"hh\") {\n            cval = (1000 + hrs)+\"\";\n            result += cval.substr(2);\n            }\n         else if (operandstrlc==\"s\") {\n            cval = Math.floor(secs);\n            result += cval+\"\";\n            }\n         else if (operandstrlc==\"ss\") {\n            cval = (1000 + Math.floor(secs))+\"\";\n            result += cval.substr(2);\n            }\n         else if (operandstrlc==\"am/pm\" || operandstrlc==\"a/p\") {\n            result += ampmstr;\n            }\n         else if (operandstrlc==\"ss]\") {\n            if (esecs < 100) {\n               cval = (1000 + Math.floor(esecs))+\"\";\n               result += cval.substr(2);\n               }\n            else {\n               cval = Math.floor(esecs);\n               result += cval+\"\";\n               }\n            }\n         }\n      else if (op == scfn.commands.section) { // end of section\n         break;\n         }\n\n      else if (op == scfn.commands.comparison) { // ignore\n         continue;\n         }\n\n      else {\n         result += \"!! Parse error !!\";\n         }\n      }\n\n   if (textcolor) {\n      result = '<span style=\"color:'+textcolor+';\">'+result+'</span>';\n      }\n   if (textstyle) {\n      result = '<span style=\"'+textstyle+';\">'+result+'</span>';\n      }\n\n   return result;\n\n   };\n\n/* *******************\n\n result = SocialCalc.FormatNumber.formatTextWithFormat = function(rawvalue, format_string)\n\n************************* */\n\nSocialCalc.FormatNumber.formatTextWithFormat = function(rawvalue, format_string) {\n\n   var scc = SocialCalc.Constants;\n   var scfn = SocialCalc.FormatNumber;\n   var value = rawvalue+\"\";\n   var result = \"\";\n   var section;\n   var sectioninfo;\n   var oppos;\n   var operandstr;\n   var textcolor = \"\";\n   var textstyle = \"\";\n\n   scfn.parse_format_string(scfn.format_definitions, format_string); // make sure format is parsed\n   thisformat = scfn.format_definitions[format_string]; // Get format structure\n\n   if (!thisformat) throw \"Format not parsed error!\";\n\n   section = thisformat.sectioninfo.length - 1; // get number of sections - 1\n   if (section == 0) {\n      section = 0;\n      }\n   else if (section == 3) {\n      section = 3;\n      }\n   else {\n      return value;\n      }\n\n   sectioninfo = thisformat.sectioninfo[section]; // look at values for our section\n   oppos = sectioninfo.sectionstart;\n\n   while (op = thisformat.operators[oppos]) { // execute format\n      operandstr = thisformat.operands[oppos++]; // get next operator and operand\n\n      if (op == scfn.commands.copy) { // put char in result\n         if (operandstr == \"@\") {\n            result += value;\n            }\n         else {\n            result += operandstr.replace(/ /g, \"&nbsp;\");\n            }\n         }\n\n      else if (op == scfn.commands.color) { // set color\n         textcolor = operandstr;\n         }\n\n      else if (op == scfn.commands.style) { // set style\n         textstyle = operandstr;\n         }\n      }\n\n   if (textcolor) {\n      result = '<span style=\"color:'+textcolor+';\">'+result+'</span>';\n      }\n   if (textstyle) {\n      result = '<span style=\"'+textstyle+';\">'+result+'</span>';\n      }\n\n   return result;\n\n   };\n\n/* *******************\n\n SocialCalc.FormatNumber.parse_format_string(format_defs, format_string)\n\n Takes a format string (e.g., \"#,##0.00_);(#,##0.00)\") and fills in format_defs with the parsed info\n\n format_defs\n    [\"#,##0.0\"]->{} - elements in the hash are one hash for each format\n       .operators->[] - array of operators from parsing the format string (each a number)\n       .operands->[] - array of corresponding operators (each usually a string)\n       .sectioninfo->[] - one hash for each section of the format\n          .start\n          .integerdigits\n          .fractiondigits\n          .commas\n          .percent\n          .thousandssep\n          .hasdates\n       .hascomparison - true if any section has [<100], etc.\n\n************************* */\n\nSocialCalc.FormatNumber.parse_format_string = function(format_defs, format_string) {\n\n   var scfn = SocialCalc.FormatNumber;\n\n   var thisformat, section, sectionfinfo;\n   var integerpart = 1; // start out in integer part\n   var lastwasinteger; // last char was an integer placeholder\n   var lastwasslash; // last char was a backslash - escaping following character\n   var lastwasasterisk; // repeat next char\n   var lastwasunderscore; // last char was _ which picks up following char for width\n   var inquote, quotestr; // processing a quoted string\n   var inbracket, bracketstr, bracketdata; // processing a bracketed string\n   var ingeneral, gpos; // checks for characters \"General\"\n   var ampmstr, part; // checks for characters \"A/P\" and \"AM/PM\"\n   var indate; // keeps track of date/time placeholders\n   var chpos; // character position being looked at\n   var ch; // character being looked at\n\n   if (format_defs[format_string]) return; // already defined - nothing to do\n\n   thisformat = {operators: [], operands: [], sectioninfo: [{}]}; // create info structure for this format\n   format_defs[format_string] = thisformat; // add to other format definitions\n\n   section = 0; // start with section 0\n   sectioninfo = thisformat.sectioninfo[section]; // get reference to info for current section\n   sectioninfo.sectionstart = 0; // position in operands that starts this section\n   sectioninfo.integerdigits = 0; // number of integer-part placeholders\n   sectioninfo.fractiondigits = 0; // fraction placeholders\n   sectioninfo.commas = 0; // commas encountered, to handle scaling\n   sectioninfo.percent = 0; // times to scale by 100\n\n   for (chpos=0; chpos<format_string.length; chpos++) { // parse\n      ch = format_string.charAt(chpos); // get next char to examine\n      if (inquote) {\n         if (ch == '\"') {\n            inquote = 0;\n            thisformat.operators.push(scfn.commands.copy);\n            thisformat.operands.push(quotestr);\n            continue;\n            }\n         quotestr += ch;\n         continue;\n         }\n      if (inbracket) {\n         if (ch==']') {\n            inbracket = 0;\n            bracketdata=SocialCalc.FormatNumber.parse_format_bracket(bracketstr);\n            if (bracketdata.operator==scfn.commands.separator) {\n               sectioninfo.thousandssep = 1; // explicit [,]\n               continue;\n               }\n            if (bracketdata.operator==scfn.commands.date) {\n               sectioninfo.hasdate = 1;\n               }\n            if (bracketdata.operator==scfn.commands.comparison) {\n               thisformat.hascomparison = 1;\n               }\n            thisformat.operators.push(bracketdata.operator);\n            thisformat.operands.push(bracketdata.operand);\n            continue;\n            }\n         bracketstr += ch;\n         continue;\n         }\n      if (lastwasslash) {\n         thisformat.operators.push(scfn.commands.copy);\n         thisformat.operands.push(ch);\n         lastwasslash=false;\n         continue;\n         }\n      if (lastwasasterisk) {\n         thisformat.operators.push(scfn.commands.copy);\n         thisformat.operands.push(ch+ch+ch+ch+ch); // do 5 of them since no real tabs\n         lastwasasterisk=false;\n         continue;\n         }\n      if (lastwasunderscore) {\n         thisformat.operators.push(scfn.commands.copy);\n         thisformat.operands.push(\"&nbsp;\");\n         lastwasunderscore=false;\n         continue;\n         }\n      if (ingeneral) {\n         if (\"general\".charAt(ingeneral)==ch.toLowerCase()) {\n            ingeneral++;\n            if (ingeneral == 7) {\n               thisformat.operators.push(scfn.commands.general);\n               thisformat.operands.push(ch);\n               ingeneral=0;\n               }\n            continue;\n            }\n         ingeneral = 0;\n         }\n      if (indate) { // last char was part of a date placeholder\n         if (indate.charAt(0)==ch) { // another of the same char\n            indate += ch; // accumulate it\n            continue;\n            }\n         thisformat.operators.push(scfn.commands.date); // something else, save date info\n         thisformat.operands.push(indate);\n         sectioninfo.hasdate=1;\n         indate = \"\";\n         }\n      if (ampmstr) {\n         ampmstr += ch;\n         part=ampmstr.toLowerCase();\n         if (part!=\"am/pm\".substring(0,part.length) && part!=\"a/p\".substring(0,part.length)) {\n            ampstr=\"\";\n            }\n         else if (part==\"am/pm\" || part==\"a/p\") {\n            thisformat.operators.push(scfn.commands.date);\n            thisformat.operands.push(ampmstr);\n            ampmstr = \"\";\n            }\n         continue;\n         }\n      if (ch==\"#\" || ch==\"0\" || ch==\"?\") { // placeholder\n         if (integerpart) {\n            sectioninfo.integerdigits++;\n            if (sectioninfo.commas) { // comma inside of integer placeholders\n               sectioninfo.thousandssep = 1; // any number is thousands separator\n               sectioninfo.commas = 0; // reset count of \"thousand\" factors\n               }\n            lastwasinteger = 1;\n            thisformat.operators.push(scfn.commands.integer_placeholder);\n            thisformat.operands.push(ch);\n            }\n         else {\n            sectioninfo.fractiondigits++;\n            lastwasinteger = 1;\n            thisformat.operators.push(scfn.commands.fraction_placeholder);\n            thisformat.operands.push(ch);\n            }\n         }\n      else if (ch==\".\") { // decimal point\n         lastwasinteger = 0;\n         thisformat.operators.push(scfn.commands.decimal);\n         thisformat.operands.push(ch);\n         integerpart = 0;\n         }\n      else if (ch=='$') { // currency char\n         lastwasinteger = 0;\n         thisformat.operators.push(scfn.commands.currency);\n         thisformat.operands.push(ch);\n         }\n      else if (ch==\",\") {\n         if (lastwasinteger) {\n            sectioninfo.commas++;\n            }\n         else {\n            thisformat.operators.push(scfn.commands.copy);\n            thisformat.operands.push(ch);\n            }\n         }\n      else if (ch==\"%\") {\n         lastwasinteger = 0;\n         sectioninfo.percent++;\n         thisformat.operators.push(scfn.commands.copy);\n         thisformat.operands.push(ch);\n         }\n      else if (ch=='\"') {\n         lastwasinteger = 0;\n         inquote = 1;\n         quotestr = \"\";\n         }\n      else if (ch=='[') {\n         lastwasinteger = 0;\n         inbracket = 1;\n         bracketstr = \"\";\n         }\n      else if (ch=='\\\\') {\n         lastwasslash = 1;\n         lastwasinteger = 0;\n         }\n      else if (ch=='*') {\n         lastwasasterisk = 1;\n         lastwasinteger = 0;\n         }\n      else if (ch=='_') {\n         lastwasunderscore = 1;\n         lastwasinteger = 0;\n         }\n      else if (ch==\";\") {\n         section++; // start next section\n         thisformat.sectioninfo[section] = {}; // create a new section\n         sectioninfo = thisformat.sectioninfo[section]; // get reference to info for current section\n         sectioninfo.sectionstart = 1 + thisformat.operators.length; // remember where it starts\n         sectioninfo.integerdigits = 0; // number of integer-part placeholders\n         sectioninfo.fractiondigits = 0; // fraction placeholders\n         sectioninfo.commas = 0; // commas encountered, to handle scaling\n         sectioninfo.percent = 0; // times to scale by 100\n         integerpart = 1; // reset for new section\n         lastwasinteger = 0;\n         thisformat.operators.push(scfn.commands.section);\n         thisformat.operands.push(ch);\n         }\n      else if (ch.toLowerCase()==\"g\") {\n         ingeneral = 1;\n         lastwasinteger = 0;\n         }\n      else if (ch.toLowerCase()==\"a\") {\n         ampmstr = ch;\n         lastwasinteger = 0;\n         }\n      else if (\"dmyhHs\".indexOf(ch)>=0) {\n         indate = ch;\n         }\n      else {\n         lastwasinteger = 0;\n         thisformat.operators.push(scfn.commands.copy);\n         thisformat.operands.push(ch);\n         }\n      }\n\n   if (indate) { // last char was part of unsaved date placeholder\n      thisformat.operators.push(scfn.commands.date);\n      thisformat.operands.push(indate);\n      sectioninfo.hasdate = 1;\n      }\n\n   return;\n\n   }\n\n\n/* *******************\n\n bracketdata = SocialCalc.FormatNumber.parse_format_bracket(bracketstr)\n\n Takes a bracket contents (e.g., \"RED\", \">10\") and returns an operator and operand\n\n bracketdata->{}\n    .operator\n    .operand\n\n************************* */\n\nSocialCalc.FormatNumber.parse_format_bracket = function(bracketstr) {\n\n   var scfn = SocialCalc.FormatNumber;\n   var scc = SocialCalc.Constants;\n\n   var bracketdata={};\n   var parts;\n\n   if (bracketstr.charAt(0)=='$') { // currency\n      bracketdata.operator = scfn.commands.currency;\n      parts=bracketstr.match(/^\\$(.+?)(\\-.+?){0,1}$/);\n      if (parts) {\n         bracketdata.operand = parts[1] || scc.FormatNumber_defaultCurrency || '$';\n         }\n      else {\n         bracketdata.operand = bracketstr.substring(1) || scc.FormatNumber_defaultCurrency || '$';\n         }\n      }\n   else if (bracketstr=='?$') {\n      bracketdata.operator = scfn.commands.currency;\n      bracketdata.operand = '[?$]';\n      }\n   else if (scfn.allowedcolors[bracketstr.toUpperCase()]) {\n      bracketdata.operator = scfn.commands.color;\n      bracketdata.operand = scfn.allowedcolors[bracketstr.toUpperCase()];\n      }\n   else if (parts=bracketstr.match(/^style=([^\"]*)$/)) { // [style=...]\n      bracketdata.operator = scfn.commands.style;\n      bracketdata.operand = parts[1];\n      }\n   else if (bracketstr==\",\") {\n      bracketdata.operator = scfn.commands.separator;\n      bracketdata.operand = bracketstr;\n      }\n   else if (scfn.alloweddates[bracketstr.toUpperCase()]) {\n      bracketdata.operator = scfn.commands.date;\n      bracketdata.operand = scfn.alloweddates[bracketstr.toUpperCase()];\n      }\n   else if (parts=bracketstr.match(/^[<>=]/)) { // comparison operator\n      parts=bracketstr.match(/^([<>=]+)(.+)$/); // split operator and value\n      bracketdata.operator = scfn.commands.comparison;\n      bracketdata.operand = parts[1]+\":\"+parts[2];\n      }\n   else { // unknown bracket\n      bracketdata.operator = scfn.commands.copy;\n      bracketdata.operand = \"[\"+bracketstr+\"]\";\n      }\n\n   return bracketdata;\n\n   }\n\n/* *******************\n\n juliandate = SocialCalc.FormatNumber.convert_date_gregorian_to_julian(year, month, day)\n\n From: http://aa.usno.navy.mil/faq/docs/JD_Formula.html\n Uses: Fliegel, H. F. and van Flandern, T. C. (1968). Communications of the ACM, Vol. 11, No. 10 (October, 1968).\n Translated from the FORTRAN\n\n      I= YEAR\n      J= MONTH\n      K= DAY\nC\n      JD= K-32075+1461*(I+4800+(J-14)/12)/4+367*(J-2-(J-14)/12*12)\n     2    /12-3*((I+4900+(J-14)/12)/100)/4\n\n************************* */\n\nSocialCalc.FormatNumber.convert_date_gregorian_to_julian = function(year, month, day) {\n\n   var juliandate;\n\n   juliandate = day-32075+SocialCalc.intFunc(1461*(year+4800+SocialCalc.intFunc((month-14)/12))/4);\n   juliandate += SocialCalc.intFunc(367*(month-2-SocialCalc.intFunc((month-14)/12)*12)/12);\n   juliandate = juliandate - SocialCalc.intFunc(3*SocialCalc.intFunc((year+4900+SocialCalc.intFunc((month-14)/12))/100)/4);\n\n   return juliandate;\n\n   }\n\n\n/* *******************\n\n ymd = SocialCalc.FormatNumber.convert_date_julian_to_gregorian(juliandate)\n\n ymd->{}\n    .year\n    .month\n    .day\n\n From: http://aa.usno.navy.mil/faq/docs/JD_Formula.html\n Uses: Fliegel, H. F. and van Flandern, T. C. (1968). Communications of the ACM, Vol. 11, No. 10 (October, 1968).\n Translated from the FORTRAN\n\n************************* */\n\nSocialCalc.FormatNumber.convert_date_julian_to_gregorian = function(juliandate) {\n\n   var L, N, I, J, K;\n\n   L = juliandate+68569;\n   N = Math.floor(4*L/146097);\n   L = L-Math.floor((146097*N+3)/4);\n   I = Math.floor(4000*(L+1)/1461001);\n   L = L-Math.floor(1461*I/4)+31;\n   J = Math.floor(80*L/2447);\n   K = L-Math.floor(2447*J/80);\n   L = Math.floor(J/11);\n   J = J+2-12*L;\n   I = 100*(N-49)+I+L;\n\n   return {year:I, month:J, day:K};\n\n   }\n\nSocialCalc.intFunc = function(n) {\n   if (n < 0) {\n      return -Math.floor(-n);\n      }\n   else {\n      return Math.floor(n);\n      }\n   }\n\n\n//\n//\n/*\n// SocialCalc Spreadsheet Formula Library\n//\n// Part of the SocialCalc package\n//\n// (c) Copyright 2008 Socialtext, Inc.\n// All Rights Reserved.\n//\n// The contents of this file are subject to the Artistic License 2.0; you may not\n// use this file except in compliance with the License. You may obtain a copy of \n// the License at http://socialcalc.org/licenses/al-20/.\n//\n// Some of the other files in the SocialCalc package are licensed under\n// different licenses. Please note the licenses of the modules you use.\n//\n// Code History:\n//\n// Initially coded by Dan Bricklin of Software Garden, Inc., for Socialtext, Inc.\n// Based in part on the SocialCalc 1.1.0 code written in Perl.\n// The SocialCalc 1.1.0 code was:\n//    Portions (c) Copyright 2005, 2006, 2007 Software Garden, Inc.\n//    All Rights Reserved.\n//    Portions (c) Copyright 2007 Socialtext, Inc.\n//    All Rights Reserved.\n// The Perl SocialCalc started as modifications to the wikiCalc(R) program, version 1.0.\n// wikiCalc 1.0 was written by Software Garden, Inc.\n// Unless otherwise specified, referring to \"SocialCalc\" in comments refers to this\n// JavaScript version of the code, not the SocialCalc Perl code.\n//\n*/\n\n   var SocialCalc;\n   if (!SocialCalc) SocialCalc = {}; // May be used with other SocialCalc libraries or standalone\n                                     // In any case, requires SocialCalc.Constants.\n\nSocialCalc.Formula = {};\nSocialCalc.TriggerIoAction = {}; // eddy\n\n//\n// Formula constants for parsing:\n//\n\n   SocialCalc.Formula.ParseState = {num: 1, alpha: 2, coord: 3, string: 4, stringquote: 5, numexp1: 6, numexp2: 7, alphanumeric: 8, specialvalue:9};\n\n   SocialCalc.Formula.TokenType = {num: 1, coord: 2, op: 3, name: 4, error: 5, string: 6, space: 7};\n\n   SocialCalc.Formula.CharClass = {num: 1, numstart: 2, op: 3, eof: 4, alpha: 5, incoord: 6, error: 7, quote: 8, space: 9, specialstart: 10};\n \n   SocialCalc.Formula.CharClassTable = {\n      \" \": 9, \"!\": 3, '\"': 8, \"'\": 8, \"#\": 10, \"$\":6, \"%\":3, \"&\":3, \"(\": 3, \")\": 3, \"*\": 3, \"+\": 3, \",\": 3, \"-\": 3, \".\": 2, \"/\": 3,\n       \"0\": 1, \"1\": 1, \"2\": 1, \"3\": 1, \"4\": 1, \"5\": 1, \"6\": 1, \"7\": 1, \"8\": 1, \"9\": 1,\n       \":\": 3, \"<\": 3, \"=\": 3, \">\": 3,\n       \"A\": 5, \"B\": 5, \"C\": 5, \"D\": 5, \"E\": 5, \"F\": 5, \"G\": 5, \"H\": 5, \"I\": 5, \"J\": 5, \"K\": 5, \"L\": 5, \"M\": 5, \"N\": 5,\n       \"O\": 5, \"P\": 5, \"Q\": 5, \"R\": 5, \"S\": 5, \"T\": 5, \"U\": 5, \"V\": 5, \"W\": 5, \"X\": 5, \"Y\": 5, \"Z\": 5,\n       \"^\": 3, \"_\": 5,\n       \"a\": 5, \"b\": 5, \"c\": 5, \"d\": 5, \"e\": 5, \"f\": 5, \"g\": 5, \"h\": 5, \"i\": 5, \"j\": 5, \"k\": 5, \"l\": 5, \"m\": 5, \"n\": 5,\n       \"o\": 5, \"p\": 5, \"q\": 5, \"r\": 5, \"s\": 5, \"t\": 5, \"u\": 5, \"v\": 5, \"w\": 5, \"x\": 5, \"y\": 5, \"z\": 5\n       };\n\n   SocialCalc.Formula.UpperCaseTable = {\n       \"a\": \"A\", \"b\": \"B\", \"c\": \"C\", \"d\": \"D\", \"e\": \"E\", \"f\": \"F\", \"g\": \"G\", \"h\": \"H\", \"i\": \"I\", \"j\": \"J\", \"k\": \"K\", \"l\": \"L\", \"m\": \"M\",\n       \"n\": \"N\", \"o\": \"O\", \"p\": \"P\", \"q\": \"Q\", \"r\": \"R\", \"s\": \"S\", \"t\": \"T\", \"u\": \"U\", \"v\": \"V\", \"w\": \"W\", \"x\": \"X\", \"y\": \"Y\", \"z\": \"Z\",\n       \"A\": \"A\", \"B\": \"B\", \"C\": \"C\", \"D\": \"D\", \"E\": \"E\", \"F\": \"F\", \"G\": \"G\", \"H\": \"H\", \"I\": \"I\", \"J\": \"J\", \"K\": \"K\", \"L\": \"L\", \"M\": \"M\",\n       \"N\": \"N\", \"O\": \"O\", \"P\": \"P\", \"Q\": \"Q\", \"R\": \"R\", \"S\": \"S\", \"T\": \"T\", \"U\": \"U\", \"V\": \"V\", \"W\": \"W\", \"X\": \"X\", \"Y\": \"Y\", \"Z\": \"Z\"\n       }\n\n   SocialCalc.Formula.SpecialConstants = { // names that turn into constants for name lookup\n      \"#NULL!\": \"0,e#NULL!\", \"#NUM!\": \"0,e#NUM!\", \"#DIV/0!\": \"0,e#DIV/0!\", \"#VALUE!\": \"0,e#VALUE!\",\n      \"#REF!\": \"0,e#REF!\", \"#NAME?\": \"0,e#NAME?\"};\n\n\n   // Operator Precedence table\n   //\n   // 1- !, 2- : ,, 3- M P, 4- %, 5- ^, 6- * /, 7- + -, 8- &, 9- < > = G(>=) L(<=) N(<>),\n   // Negative value means Right Associative\n\n   SocialCalc.Formula.TokenPrecedence = {\n      \"!\": 1,\n      \":\": 2, \",\": 2,\n      \"M\": -3, \"P\": -3,\n      \"%\": 4,\n      \"^\": 5,\n      \"*\": 6, \"/\": 6,\n      \"+\": 7, \"-\": 7,\n      \"&\": 8,\n      \"<\": 9, \">\": 9, \"G\": 9, \"L\": 9, \"N\": 9\n      };\n\n   // Convert one-char token text to input text:\n\n   SocialCalc.Formula.TokenOpExpansion = {'G': '>=', 'L': '<=', 'M': '-', 'N': '<>', 'P': '+'};\n\n   //\n   // Information about the resulting value types when doing operations on values (used by LookupResultType)\n   //\n   // Each object entry is an object with specific types with result type info as follows:\n   //\n   //    'type1a': '|type2a:resulta|type2b:resultb|...\n   //    Type of t* or n* matches any of those types not listed\n   //    Results may be a type or the numbers 1 or 2 specifying to return type1 or type2\n   \n\n   SocialCalc.Formula.TypeLookupTable = {\n       unaryminus: { 'n*': '|n*:1|', 'e*': '|e*:1|', 't*': '|t*:e#VALUE!|', 'b': '|b:n|'},\n       unaryplus: { 'n*': '|n*:1|', 'e*': '|e*:1|', 't*': '|t*:e#VALUE!|', 'b': '|b:n|'},\n       unarypercent: { 'n*': '|n:n%|n*:n|', 'e*': '|e*:1|', 't*': '|t*:e#VALUE!|', 'b': '|b:n|'},\n       plus: {\n                'n%': '|n%:n%|nd:n|nt:n|ndt:n|n$:n|n:n|n*:n|b:n|e*:2|t*:e#VALUE!|',\n                'nd': '|n%:n|nd:nd|nt:ndt|ndt:ndt|n$:n|n:nd|n*:n|b:n|e*:2|t*:e#VALUE!|',\n                'nt': '|n%:n|nd:ndt|nt:nt|ndt:ndt|n$:n|n:nt|n*:n|b:n|e*:2|t*:e#VALUE!|',\n                'ndt': '|n%:n|nd:ndt|nt:ndt|ndt:ndt|n$:n|n:ndt|n*:n|b:n|e*:2|t*:e#VALUE!|',\n                'n$': '|n%:n|nd:n|nt:n|ndt:n|n$:n$|n:n$|n*:n|b:n|e*:2|t*:e#VALUE!|',\n                'nl': '|n%:n|nd:n|nt:n|ndt:n|n$:n|n:n|n*:n|b:n|e*:2|t*:e#VALUE!|',\n                'n': '|n%:n|nd:nd|nt:nt|ndt:ndt|n$:n$|n:n|n*:n|b:n|e*:2|t*:e#VALUE!|',\n                'b': '|n%:n%|nd:nd|nt:nt|ndt:ndt|n$:n$|n:n|n*:n|b:n|e*:2|t*:e#VALUE!|',\n                't*': '|ni:1|n*:e#VALUE!|t*:e#VALUE!|b:e#VALUE!|e*:2|',\n                'n*': '|ni:1|e*:2|',\n                'e*': '|e*:1|n*:1|t*:1|b:1|'\n               },\n       concat: {\n                't': '|t:t|th:th|tw:tw|tl:t|tr:tr|t*:2|e*:2|',\n                'th': '|t:th|th:th|tw:t|tl:th|tr:t|t*:t|e*:2|',\n                'tw': '|t:tw|th:t|tw:tw|tl:tw|tr:tw|t*:t|e*:2|',\n                'tl': '|t:tl|th:th|tw:tw|tl:tl|tr:tr|t*:t|e*:2|',\n                't*': '|t*:t|e*:2|',\n                'e*': '|e*:1|n*:1|t*:1|'\n               },\n       oneargnumeric: { 'n*': '|n*:n|', 'e*': '|e*:1|', 't*': '|t*:e#VALUE!|', 'b': '|b:n|'},\n       twoargnumeric: { 'n*': '|n*:n|t*:e#VALUE!|e*:2|', 'e*': '|e*:1|n*:1|t*:1|', 't*': '|t*:e#VALUE!|n*:e#VALUE!|e*:2|'},\n       propagateerror: { 'n*': '|n*:2|e*:2|', 'e*': '|e*:2|', 't*': '|t*:2|e*:2|', 'b': '|b:2|e*:2|'}\n      };\n\n/* *******************\n\n parseinfo = SocialCalc.Formula.ParseFormulaIntoTokens(line)\n\n Parses a text string as if it was a spreadsheet formula\n\n This uses a simple state machine run on each character in turn.\n States remember whether a number is being gathered, etc.\n The result is parseinfo which is an array with one entry for each token:\n   parseinfo[i] = {\n     text: \"the characters making up the parsed token\",\n     type: the type of the token (a number),\n     opcode: a single character version of an operator suitable for use in the\n                  precedence table and distinguishing between unary and binary + and -.\n\n************************* */\n\nSocialCalc.Formula.ParseFormulaIntoTokens = function(line) {\n\n   var i, ch, cclass, haddecimal, last_token, last_token_type, last_token_text, t;\n\n   var scf = SocialCalc.Formula;\n   var scc = SocialCalc.Constants;\n   var parsestate = scf.ParseState;\n   var tokentype = scf.TokenType;\n   var charclass = scf.CharClass;\n   var charclasstable = scf.CharClassTable;\n   var uppercasetable = scf.UpperCaseTable; // much faster than toUpperCase function\n   var pushtoken = scf.ParsePushToken;\n   var coordregex = /^\\$?[A-Z]{1,2}\\$?[1-9]\\d*$/i;\n\n   var parseinfo = [];\n   var str = \"\";\n   var state = 0;\n   var haddecimal = false;\n   var twochrop = \"\";\n   \n  for (i=0; i<=line.length; i++) {\n      if (i<line.length) {\n         ch = line.charAt(i);\n         cclass = charclasstable[ch];\n         }\n      else {\n         ch = \"\";\n         cclass = charclass.eof;\n         }\n\n      if (state == parsestate.num) {\n         if (cclass == charclass.num) {\n            str += ch;\n            }\n         else if (cclass == charclass.numstart && !haddecimal) {\n            haddecimal = true;\n            str += ch;\n            }\n         else if (ch == \"E\" || ch == \"e\") {\n            str += ch;\n            haddecimal = false;\n            state = parsestate.numexp1;\n            }\n         else { // end of number - save it\n            pushtoken(parseinfo, str, tokentype.num, 0);\n            haddecimal = false;\n            state = 0;\n            }\n         }\n\n      if (state == parsestate.numexp1) {\n         if (cclass == parsestate.num) {\n            state = parsestate.numexp2;\n            }\n         else if ((ch == '+' || ch == '-') && (uppercasetable[str.charAt(str.length-1)] == 'E')) {\n            str += ch;\n            }\n         else if (ch == 'E' || ch == 'e') {\n            ;\n            }\n         else {\n            pushtoken(parseinfo, scc.s_parseerrexponent, tokentype.error, 0);\n            state = 0;\n            }\n         }\n\n      if (state == parsestate.numexp2) {\n         if (cclass == charclass.num) {\n            str += ch;\n            }\n         else { // end of number - save it\n            pushtoken(parseinfo, str, tokentype.num, 0);\n            state = 0;\n            }\n         }\n\n      if (state == parsestate.alpha) {\n         if (cclass == charclass.num) {\n            state = parsestate.coord;\n            }\n         else if (cclass == charclass.alpha || ch == \".\") { // alpha may be letters, numbers, \"_\", or \".\"\n            str += ch;\n            }\n         else if (cclass == charclass.incoord) {\n            state = parsestate.coord;\n            }\n         else if (cclass == charclass.op || cclass == charclass.numstart\n                || cclass == charclass.space || cclass == charclass.eof) {\n            pushtoken(parseinfo, str.toUpperCase(), tokentype.name, 0);\n            state = 0;\n            }\n         else {\n            pushtoken(parseinfo, scc.s_parseerrchar, tokentype.error, 0);\n            state = 0;\n            }\n         }\n\n      if (state == parsestate.coord) {\n         if (cclass == charclass.num) {\n            str += ch;\n            }\n         else if (cclass == charclass.incoord) {\n            str += ch;\n            }\n         else if (cclass == charclass.alpha) {\n            state = parsestate.alphanumeric;\n            }\n         else if (cclass == charclass.op || cclass == charclass.numstart ||\n                  cclass == charclass.eof || cclass == charclass.space) {\n            if (coordregex.test(str)) {\n               t = tokentype.coord;\n               }\n            else {\n               t = tokentype.name;\n               }\n            pushtoken(parseinfo, str.toUpperCase(), t, 0);\n            state = 0;\n            }\n         else {\n            pushtoken(parseinfo, scc.s_parseerrchar, tokentype.error, 0);\n            state = 0;\n           }\n         }\n\n\n      if (state == parsestate.alphanumeric) {\n         if (cclass == charclass.num || cclass == charclass.alpha) {\n            str += ch;\n            }\n         else if (cclass == charclass.op || cclass == charclass.numstart\n                || cclass == charclass.space || cclass == charclass.eof) {\n            pushtoken(parseinfo, str.toUpperCase(), tokentype.name, 0);\n            state = 0;\n            }\n         else {\n            pushtoken(parseinfo, scc.s_parseerrchar, tokentype.error, 0);\n            state = 0;\n            }\n         }\n\n      if (state == parsestate.string) {\n         if (cclass == charclass.quote) {\n            state = parsestate.stringquote; // got quote in string: is it doubled (quote in string) or by itself (end of string)?\n            }\n         else if (cclass == charclass.eof) {\n            pushtoken(parseinfo, scc.s_parseerrstring, tokentype.error, 0);\n            state = 0;\n            }\n         else {\n            str += ch;\n            }\n         }\n      else if (state == parsestate.stringquote) { // note else if here\n         if (cclass == charclass.quote) {\n            str += ch;\n            state = parsestate.string; // double quote: add one then continue getting string\n            }\n         else { // something else -- end of string\n            pushtoken(parseinfo, str, tokentype.string, 0);\n            state = 0; // drop through to process\n            }\n         }\n\n      else if (state == parsestate.specialvalue) { // special values like #REF!\n         if (str.charAt(str.length-1) == \"!\") { // done - save value as a name\n            pushtoken(parseinfo, str, tokentype.name, 0);\n            state = 0; // drop through to process\n            }\n         else if (cclass == charclass.eof) {\n            pushtoken(parseinfo, scc.s_parseerrspecialvalue, tokentype.error, 0);\n            state = 0;\n            }\n         else {\n            str += ch;\n            }\n         }\n\n      if (state == 0) {\n         if (cclass == charclass.num) {\n            str = ch;\n            state = parsestate.num;\n            }\n         else if (cclass == charclass.numstart) {\n            str = ch;\n            haddecimal = true;\n            state = parsestate.num;\n            }\n         else if (cclass == charclass.alpha || cclass == charclass.incoord) {\n            str = ch;\n            state = parsestate.alpha;\n            }\n         else if (cclass == charclass.specialstart) {\n            str = ch;\n            state = parsestate.specialvalue;\n            }\n         else if (cclass == charclass.op) {\n            str = ch;\n            if (parseinfo.length>0) {\n               last_token = parseinfo[parseinfo.length-1];\n               last_token_type = last_token.type;\n               last_token_text = last_token.text;\n               if (last_token_type == charclass.op) {\n                  twochrop = last_token_text + str;\n                  if (twochrop == '<=' || twochrop == \">=\" || twochrop == \"<>\") {\n                     str = last_token_text + str;\n                     parseinfo.pop();\n                     if (parseinfo.length>0) {\n                        last_token = parseinfo[parseinfo.length-1];\n                        last_token_type = last_token.type;\n                        last_token_text = last_token.text;\n                        }\n                     else {\n                        last_token_type = charclass.eof;\n                        last_token_text = \"EOF\";\n                        }\n                     }\n                  }\n               }\n            else {\n               last_token_type = charclass.eof;\n               last_token_text = \"EOF\";\n               }\n            t = tokentype.op;\n            if ((parseinfo.length == 0)\n                || (last_token_type == charclass.op && last_token_text != ')' && last_token_text != '%')) { // Unary operator\n               if (str == '-') { // M is unary minus\n                  str = \"M\";\n                  ch = \"M\";\n                  }\n               else if (str == '+') { // P is unary plus\n                  str = \"P\";\n                  ch = \"P\";\n                  }\n               else if (str == ')' && last_token_text == '(') { // null arg list OK\n                  ;\n                  }\n               else if (str != '(') { // binary-op open-paren OK, others no\n                  t = tokentype.error;\n                  str = scc.s_parseerrtwoops;\n                  }\n               }\n            else if (str.length > 1) {\n               if (str == '>=') { // G is >=\n                  str = \"G\";\n                  ch = \"G\";\n                  }\n               else if (str == '<=') { // L is <=\n                  str = \"L\";\n                  ch = \"L\";\n                  }\n               else if (str == '<>') { // N is <>\n                  str = \"N\";\n                  ch = \"N\";\n                  }\n               else {\n                  t = tokentype.error;\n                  str = scc.s_parseerrtwoops;\n                  }\n               }\n            pushtoken(parseinfo, str, t, ch);\n            state = 0;\n            }\n         else if (cclass == charclass.quote) { // starting a string\n            str = \"\";\n            state = parsestate.string;\n            }\n         else if (cclass == charclass.space) { // store so can reconstruct spacing\n            //pushtoken(parseinfo, \" \", tokentype.space, 0);\n            }\n         else if (cclass == charclass.eof) { // ignore -- needed to have extra loop to close out other things\n            }\n         else { // unknown class - such as unknown char\n            pushtoken(parseinfo, scc.s_parseerrchar, tokentype.error, 0);\n            }\n         }\n      }\n\n   return parseinfo;\n\n   }\n\nSocialCalc.Formula.ParsePushToken = function(parseinfo, ttext, ttype, topcode) {\n\n   parseinfo.push({text: ttext, type: ttype, opcode: topcode});\n\n   }\n\n/* *******************\n\n result = SocialCalc.Formula.evaluate_parsed_formula(parseinfo, sheet, allowrangereturn)\n\n Does the calculation expressed in a parsed formula, returning a value, its type, and error info\n returns: {value: value, type: valuetype, error: errortext}.\n\n If allowrangereturn is present and true, can return a range (e.g., \"A1:A10\" - translated from \"A1|A10|\")\n\n************************* */\n\nSocialCalc.Formula.evaluate_parsed_formula = function(parseinfo, sheet, allowrangereturn) {\n\n   var result;\n\n   var scf = SocialCalc.Formula;\n   var tokentype = scf.TokenType;\n\n   var revpolish;\n   var parsestack = [];\n\n   var errortext = \"\";\n\n   revpolish = scf.ConvertInfixToPolish(parseinfo); // result is either an array or a string with error text\n\n   result = scf.EvaluatePolish(parseinfo, revpolish, sheet, allowrangereturn);\n\n   return result;\n\n}\n\n//\n// revpolish = SocialCalc.Formula.ConvertInfixToPolish(parseinfo)\n//\n// Convert infix to reverse polish notation\n//\n// Returns revpolish array with a sequence of references to tokens by number if successful.\n// Errors return a string with the error.\n//\n// Based upon the algorithm shown in Wikipedia \"Reverse Polish notation\" article\n// and then enhanced for additional spreadsheet things\n//\n\nSocialCalc.Formula.ConvertInfixToPolish = function(parseinfo) {\n\n   var scf = SocialCalc.Formula;\n   var scc = SocialCalc.Constants;\n   var tokentype = scf.TokenType;\n   var token_precedence = scf.TokenPrecedence;\n\n   var revpolish = [];\n   var parsestack = [];\n\n   var errortext = \"\";\n\n   var function_start = -1;\n\n   var i, pii, ttype, ttext, tprecedence, tstackprecedence;\n\n   for (i=0; i<parseinfo.length; i++) {\n      pii = parseinfo[i];\n      ttype = pii.type;\n      ttext = pii.text;\n      if (ttype == tokentype.num || ttype == tokentype.coord || ttype == tokentype.string) {\n         revpolish.push(i);\n         }\n      else if (ttype == tokentype.name) {\n         parsestack.push(i);\n         revpolish.push(function_start);\n         }\n      else if (ttype == tokentype.space) { // ignore\n         continue;\n         }\n      else if (ttext == ',') {\n         while (parsestack.length && parseinfo[parsestack[parsestack.length-1]].text != \"(\") {\n            revpolish.push(parsestack.pop());\n            }\n         if (parsestack.length == 0) { // no ( -- error\n            errortext = scc.s_parseerrmissingopenparen;\n            break;\n            }\n         }\n      else if (ttext == '(') {\n         parsestack.push(i);\n         }\n      else if (ttext == ')') {\n         while (parsestack.length && parseinfo[parsestack[parsestack.length-1]].text != \"(\") {\n            revpolish.push(parsestack.pop());\n            }\n         if (parsestack.length == 0) { // no ( -- error\n            errortext = scc.s_parseerrcloseparennoopen;\n            break;\n            }\n         parsestack.pop();\n         if (parsestack.length && parseinfo[parsestack[parsestack.length-1]].type == tokentype.name) {\n            revpolish.push(parsestack.pop());\n            }\n         }\n      else if (ttype == tokentype.op) {\n         if (parsestack.length && parseinfo[parsestack[parsestack.length-1]].type == tokentype.name) {\n            revpolish.push(parsestack.pop());\n            }\n         while (parsestack.length && parseinfo[parsestack[parsestack.length-1]].type == tokentype.op\n                && parseinfo[parsestack[parsestack.length-1]].text != '(') {\n            tprecedence = token_precedence[pii.opcode];\n            tstackprecedence = token_precedence[parseinfo[parsestack[parsestack.length-1]].opcode];\n            if (tprecedence >= 0 && tprecedence < tstackprecedence) {\n               break;\n               }\n            else if (tprecedence < 0) {\n               tprecedence = -tprecedence;\n               if (tstackprecedence < 0) tstackprecedence = -tstackprecedence;\n               if (tprecedence <= tstackprecedence) {\n                  break;\n                  }\n               }\n            revpolish.push(parsestack.pop());\n            }\n         parsestack.push(i);\n         }\n      else if (ttype == tokentype.error) {\n         errortext = ttext;\n         break;\n         }\n      else {\n         errortext = \"Internal error while processing parsed formula. \";\n         break;\n         }\n      }\n   while (parsestack.length>0) {\n      if (parseinfo[parsestack[parsestack.length-1]].text == '(') {\n         errortext = scc.s_parseerrmissingcloseparen;\n         break;\n         }\n      revpolish.push(parsestack.pop());\n      }\n\n   if (errortext) {\n      return errortext;\n      }\n\n   return revpolish;\n\n   }\n\n\n// DebugLog\n// display logged objects in the audit tab of the spreadsheet control\nif(typeof SocialCalc.debug_log === 'undefined') SocialCalc.debug_log = [];\n\nSocialCalc.DebugLog = function(logObject) {\t\n//\tSocialCalc.debug_log.push(logObject);\n}\n\n\n//\n// result = SocialCalc.Formula.EvaluatePolish(parseinfo, revpolish, sheet, allowrangereturn)\n//\n// Execute reverse polish representation of formula\n//\n// Operand values are objects in the operand array with a \"type\" and an optional \"value\".\n// Type can have these values (many are type and sub-type as two or more letters):\n//    \"tw\", \"th\", \"t\", \"n\", \"nt\", \"coord\", \"range\", \"start\", \"eErrorType\", \"b\" (blank)\n// The value of a coord is in the form A57 or A57!sheetname\n// The value of a range is coord|coord|number where number starts at 0 and is\n// the offset of the next item to fetch if you are going through the range one by one\n// The number starts as a null string (\"A1|B3|\")\n//\n\nSocialCalc.Formula.EvaluatePolish = function(parseinfo, revpolish, sheet, allowrangereturn) {\n\n   var scf = SocialCalc.Formula;\n   var scc = SocialCalc.Constants;\n   var tokentype = scf.TokenType;\n   var lookup_result_type = scf.LookupResultType;\n   var typelookup = scf.TypeLookupTable;\n   var operand_as_number = scf.OperandAsNumber;\n   var operand_as_text = scf.OperandAsText;\n   var operand_value_and_type = scf.OperandValueAndType;\n   var operands_as_coord_on_sheet = scf.OperandsAsCoordOnSheet;\n   var format_number_for_display = SocialCalc.format_number_for_display || function(v, t, f) {return v+\"\";};\n\n   var errortext = \"\";\n   var function_start = -1;\n   var missingOperandError = {value: \"\", type: \"e#VALUE!\", error: scc.s_parseerrmissingoperand};\n\n   var operand = [];\n   var PushOperand = function(t, v) {operand.push({type: t, value: v});};\n\n   var i, rii, prii, ttype, ttext, value1, value2, tostype, tostype2, resulttype, valuetype, cond, vmatch, smatch;\n\n   if (!parseinfo.length || (! (revpolish instanceof Array))) {\n      return ({value: \"\", type: \"e#VALUE!\", error: (typeof revpolish == \"string\" ? revpolish : \"\")});\n      }\n\n\t  \n\t  // eddy EvaluatePolish { \n    //    SocialCalc.DebugLog({ revpolish: revpolish});\n    //    SocialCalc.DebugLog({ revpolish: revpolish});\n\t  // }\n\n\t// eddy EvaluatePolish {\n\t\n\t// e.g parameterInfo: [ {'text':'E1','type':2,'opcode':0}, ... ] \n    var parameterInfo = [];\n    // }\t\n\t  \n\t  \n   for (i=0; i<revpolish.length; i++) {\n      rii = revpolish[i];\n      if (rii == function_start) { // Remember the start of a function argument list\n         PushOperand(\"start\", 0);\n         continue;\n         }\n\n      prii = parseinfo[rii];\n      ttype = prii.type;\n      ttext = prii.text;\n\t  // eddy EvaluatePolish {\n\t  parameterInfo.push(prii);\n\t  // }\n\t  \n      if (ttype == tokentype.num) {\n         PushOperand(\"n\", ttext-0);\n         }\n\n      else if (ttype == tokentype.coord) {\n         PushOperand(\"coord\", ttext);\n\t\t \n         }\n\n      else if (ttype == tokentype.string) {\n         PushOperand(\"t\", ttext);\n         }\n\n      else if (ttype == tokentype.op) {\n         if (operand.length <= 0) { // Nothing on the stack...\n            return missingOperandError;\n            break; // done\n            }\n\n         // Unary minus\n\n         if (ttext == 'M') {\n            value1 = operand_as_number(sheet, operand);\n            resulttype = lookup_result_type(value1.type, value1.type, typelookup.unaryminus);\n            PushOperand(resulttype, -value1.value);\n            }\n\n         // Unary plus\n\n         else if (ttext == 'P') {\n            value1 = operand_as_number(sheet, operand);\n            resulttype = lookup_result_type(value1.type, value1.type, typelookup.unaryplus);\n            PushOperand(resulttype, value1.value);\n            }\n\n         // Unary % - percent, left associative\n\n         else if (ttext == '%') {\n            value1 = operand_as_number(sheet, operand);\n            resulttype = lookup_result_type(value1.type, value1.type, typelookup.unarypercent);\n            PushOperand(resulttype, 0.01*value1.value);\n            }\n\n         // & - string concatenate\n\n         else if (ttext == '&') {\n            if (operand.length <= 1) { // Need at least two things on the stack...\n               return missingOperandError;\n               }\n            value2 = operand_as_text(sheet, operand);\n            value1 = operand_as_text(sheet, operand);\n            resulttype = lookup_result_type(value1.type, value1.type, typelookup.concat);\n            PushOperand(resulttype, value1.value + value2.value);\n            }\n\n         // : - Range constructor\n\n         else if (ttext == ':') {\n            if (operand.length <= 1) { // Need at least two things on the stack...\n               return missingOperandError;\n               }\n            value1 = scf.OperandsAsRangeOnSheet(sheet, operand); // get coords even if use name on other sheet\n            if (value1.error) { // not available\n               errortext = errortext || value1.error;\n               }\n            PushOperand(value1.type, value1.value); // push sheetname with range on that sheet\n            }\n\n         // ! - sheetname!coord\n\n         else if (ttext == '!') {\n            if (operand.length <= 1) { // Need at least two things on the stack...\n               return missingOperandError;\n               }\n            value1 = operands_as_coord_on_sheet(sheet, operand); // get coord even if name on other sheet\n            if (value1.error) { // not available\n               errortext = errortext || value1.error;\n               }\n            PushOperand(value1.type, value1.value); // push sheetname with coord or range on that sheet\n            }\n\n         // Comparison operators: < L = G > N (< <= = >= > <>)\n\n         else if (ttext == \"<\" || ttext == \"L\" || ttext == \"=\" || ttext == \"G\" || ttext == \">\" || ttext == \"N\") {\n            if (operand.length <= 1) { // Need at least two things on the stack...\n               errortext = scc.s_parseerrmissingoperand; // remember error\n               break;\n               }\n            value2 = operand_value_and_type(sheet, operand);\n            value1 = operand_value_and_type(sheet, operand);\n            if (value1.type.charAt(0) == \"n\" && value2.type.charAt(0) == \"n\") { // compare two numbers\n               cond = 0;\n               if (ttext == \"<\") { cond = value1.value < value2.value ? 1 : 0; }\n               else if (ttext == \"L\") { cond = value1.value <= value2.value ? 1 : 0; }\n               else if (ttext == \"=\") { cond = value1.value == value2.value ? 1 : 0; }\n               else if (ttext == \"G\") { cond = value1.value >= value2.value ? 1 : 0; }\n               else if (ttext == \">\") { cond = value1.value > value2.value ? 1 : 0; }\n               else if (ttext == \"N\") { cond = value1.value != value2.value ? 1 : 0; }\n               PushOperand(\"nl\", cond);\n               }\n            else if (value1.type.charAt(0) == \"e\") { // error on left\n               PushOperand(value1.type, 0);\n               }               \n            else if (value2.type.charAt(0) == \"e\") { // error on right\n               PushOperand(value2.type, 0);\n               }               \n            else { // text maybe mixed with numbers or blank\n               tostype = value1.type.charAt(0);\n               tostype2 = value2.type.charAt(0);\n               if (tostype == \"n\") {\n                  value1.value = format_number_for_display(value1.value, \"n\", \"\");\n                  }\n               else if (tostype == \"b\") {\n                  value1.value = \"\";\n                  }\n               if (tostype2 == \"n\") {\n                  value2.value = format_number_for_display(value2.value, \"n\", \"\");\n                  }\n               else if (tostype2 == \"b\") {\n                  value2.value = \"\";\n                  }\n               cond = 0;\n               value1.value = value1.value.toLowerCase(); // ignore case\n               value2.value = value2.value.toLowerCase();\n               if (ttext == \"<\") { cond = value1.value < value2.value ? 1 : 0; }\n               else if (ttext == \"L\") { cond = value1.value <= value2.value ? 1 : 0; }\n               else if (ttext == \"=\") { cond = value1.value == value2.value ? 1 : 0; }\n               else if (ttext == \"G\") { cond = value1.value >= value2.value ? 1 : 0; }\n               else if (ttext == \">\") { cond = value1.value > value2.value ? 1 : 0; }\n               else if (ttext == \"N\") { cond = value1.value != value2.value ? 1 : 0; }\n               PushOperand(\"nl\", cond);\n               }\n            }\n\n         // Normal infix arithmethic operators: +, -. *, /, ^\n\n         else { // what's left are the normal infix arithmetic operators\n            if (operand.length <= 1) { // Need at least two things on the stack...\n               errortext = scc.s_parseerrmissingoperand; // remember error\n               break;\n               }\n            if (ttext == '+') {\n               value2 = operand_value_and_type(sheet, operand);\n               value1 = operand_value_and_type(sheet, operand); // allow + to append style formula to widget\n               resulttype = lookup_result_type(value1.type, value2.type, typelookup.plus);\n               PushOperand(resulttype, value1.value + value2.value);\n               } \n            else {\n              value2 = operand_as_number(sheet, operand);\n              value1 = operand_as_number(sheet, operand);              \n              }\n              \n            if (ttext == '-') {\n               resulttype = lookup_result_type(value1.type, value2.type, typelookup.plus);\n               PushOperand(resulttype, value1.value - value2.value);\n               }\n            else if (ttext == '*') {\n               resulttype = lookup_result_type(value1.type, value2.type, typelookup.plus);\n               PushOperand(resulttype, value1.value * value2.value);\n               }\n            else if (ttext == '/') {\n               if (value2.value != 0) {\n                  PushOperand(\"n\", value1.value / value2.value); // gives plain numeric result type\n                  }\n               else {\n                  PushOperand(\"e#DIV/0!\", 0);\n                  }\n               }\n            else if (ttext == '^') {\n               value1.value = Math.pow(value1.value, value2.value);\n               value1.type = \"n\"; // gives plain numeric result type\n               if (isNaN(value1.value)) {\n                  value1.value = 0;\n                  value1.type = \"e#NUM!\";\n                  }\n               PushOperand(value1.type, value1.value);\n               }\n            }\n         }\n\n      // function or name\n\n      else if (ttype == tokentype.name) {\n\t  \n//         errortext = scf.CalculateFunction(ttext, operand, sheet);\n         errortext = scf.CalculateFunction(ttext, operand, sheet, parseinfo.coord); // eddy also pass the cell id\n\t\t \n         if (errortext) break;\n\t\t \n\t\t \n         }\n\n\t\t \n      else {\n         errortext = scc.s_InternalError+\"Unknown token \"+ttype+\" (\"+ttext+\"). \";\n         break;\n         }\n      }\n\n   // look at final value and handle special cases\n\n   value = operand[0] ? operand[0].value : \"\";\n   tostype = operand[0] ? operand[0].type : \"\";\n\n   if (tostype == \"name\") { // name - expand it\n      value1 = SocialCalc.Formula.LookupName(sheet, value);\n      value = value1.value;\n      tostype = value1.type;\n      errortext = errortext || value1.error;\n      }\n\n   if (tostype == \"coord\") { // the value is a coord reference, get its value and type\n      value1 = operand_value_and_type(sheet, operand);\n      value = value1.value;\n      tostype = value1.type;\n      if (tostype == \"b\") {\n         tostype = \"n\";\n         value = 0;\n         }\n      }\n\n   if (operand.length > 1 && !errortext) { // something left - error\n      errortext += scc.s_parseerrerrorinformula;\n      }\n\n   // set return type\n\n   valuetype = tostype;\n\n   if (tostype.charAt(0) == \"e\") { // error value\n      errortext = errortext || tostype.substring(1) || scc.s_calcerrerrorvalueinformula;\n      }\n   else if (tostype == \"range\") {\n      vmatch = value.match(/^(.*)\\|(.*)\\|/);\n      smatch = vmatch[1].indexOf(\"!\");\n      if (smatch>=0) { // swap sheetname\n         vmatch[1] = vmatch[1].substring(smatch+1) + \"!\" + vmatch[1].substring(0, smatch).toUpperCase();\n         }\n      else {\n         vmatch[1] = vmatch[1].toUpperCase();\n         }\n      value = vmatch[1] + \":\" + vmatch[2].toUpperCase();\n      if (!allowrangereturn) {\n         errortext = scc.s_formularangeresult+\" \"+value;\n         }\n      }\n\n   if (errortext && valuetype.charAt(0) != \"e\") {\n      value = errortext;\n      valuetype = \"e\";\n     }\n\n   // look for overflow\n\n   if (valuetype.charAt(0) == \"n\" && (isNaN(value) || !isFinite(value))) {\n      value = 0;\n      valuetype = \"e#NUM!\";\n      errortext = isNaN(value) ? scc.s_calcerrnumericnan: scc.s_calcerrnumericoverflow;\n      }\n\n   return ({value: value, type: valuetype, error: errortext});\n\n   }\n\n\n/*\n#\n# resulttype = SocialCalc.Formula.LookupResultType(type1, type2, typelookup);\n#\n# typelookup has values of the following form:\n#\n#    typelookup{\"typespec1\"} = \"|typespec2A:resultA|typespec2B:resultB|...\"\n#\n# First type1 is looked up. If no match, then the first letter (major type) of type1 plus \"*\" is looked up\n# resulttype is type1 if result is \"1\", type2 if result is \"2\", otherwise the value of result.\n#\n*/\n\nSocialCalc.Formula.LookupResultType = function(type1, type2, typelookup) {\n\n   var pos1, pos2, result;\n\n   var table1 = typelookup[type1];\n\n   if (!table1) {\n      table1 = typelookup[type1.charAt(0)+'*'];\n      if (!table1) {\n         return \"e#VALUE! (internal error, missing LookupResultType \"+type1.charAt(0)+\"*)\"; // missing from table -- please add it\n         }\n      }\n   pos1 = table1.indexOf(\"|\"+type2+\":\");\n   if (pos1 >= 0) {\n      pos2 = table1.indexOf(\"|\", pos1+1);\n      if (pos2<0) return \"e#VALUE! (internal error, incorrect LookupResultType \"+table1+\")\";\n      result = table1.substring(pos1+type2.length+2, pos2);\n      if (result == \"1\") return type1;\n      if (result == \"2\") return type2;\n      return result;\n      }\n   pos1 = table1.indexOf(\"|\"+type2.charAt(0)+\"*:\");\n   if (pos1 >= 0) {\n      pos2 = table1.indexOf(\"|\", pos1+1);\n      if (pos2<0) return \"e#VALUE! (internal error, incorrect LookupResultType \"+table1+\")\";\n      result = table1.substring(pos1+4, pos2);\n      if (result == \"1\") return type1;\n      if (result == \"2\") return type2;\n      return result;\n      }\n   return \"e#VALUE!\";\n\n   }\n\n/*\n#\n# operandinfo = SocialCalc.Formula.TopOfStackValueAndType(sheet, operand)\n#\n# Returns top of stack value and type and then pops the stack.\n# The result is {value: value, type: type, error: \"only if bad error\"}\n#\n*/\n\nSocialCalc.Formula.TopOfStackValueAndType = function(sheet, operand) {\n\n   var cellvtype, cell, pos, coordsheet;\n   var scf = SocialCalc.Formula;\n\n   var result = {type: \"\", value: \"\"};\n\n   var stacklen = operand.length;\n\n   if (!stacklen) { // make sure something is there\n      result.error = SocialCalc.Constants.s_InternalError+\"no operand on stack\";\n      return result;\n      }\n\n   result.value = operand[stacklen-1].value; // get top of stack\n   result.type = operand[stacklen-1].type;\n   operand.pop(); // we have data - pop stack\n\n   if (result.type == \"name\") {\n      result = scf.LookupName(sheet, result.value);\n      }\n\n   return result;\n\n   }\n\n\n/*\n#\n# operandinfo = OperandAsNumber(sheet, operand)\n#\n# Uses operand_value_and_type to get top of stack and pops it.\n# Returns numeric value and type.\n# Text values are treated as 0 if they can't be converted somehow.\n#\n*/\n\nSocialCalc.Formula.OperandAsNumber = function(sheet, operand) {\n\n   var t, valueinfo;\n   var operandinfo = SocialCalc.Formula.OperandValueAndType(sheet, operand);\n\n   t = operandinfo.type.charAt(0);\n\n   if (t == \"n\") {\n      operandinfo.value = operandinfo.value-0;\n      }\n   else if (t == \"b\") { // blank cell\n      operandinfo.type = \"n\";\n      operandinfo.value = 0;\n      }\n   else if (t == \"e\") { // error\n      operandinfo.value = 0;\n      }\n   else {\n      valueinfo = SocialCalc.DetermineValueType ? SocialCalc.DetermineValueType(operandinfo.value) :\n                                                    {value: operandinfo.value-0, type: \"n\"}; // if without rest of SocialCalc\n      if (valueinfo.type.charAt(0) == \"n\") {\n         operandinfo.value = valueinfo.value-0;\n         operandinfo.type = valueinfo.type;\n         }\n      else {\n         operandinfo.value = 0;\n         operandinfo.type = valueinfo.type;\n         }\n      }\n\n   return operandinfo;\n\n   }\n\n/*\n#\n# operandinfo = OperandAsText(sheet, operand)\n#\n# Uses operand_value_and_type to get top of stack and pops it.\n# Returns text value, preserving sub-type.\n#\n*/\n\nSocialCalc.Formula.OperandAsText = function(sheet, operand) {\n\n   var t, valueinfo;\n   var operandinfo = SocialCalc.Formula.OperandValueAndType(sheet, operand);\n\n   t = operandinfo.type.charAt(0);\n\n   if (t ==  \"t\") { // any flavor of text returns as is\n      ;\n      }\n   else if (t == \"n\") {\n      operandinfo.value = SocialCalc.format_number_for_display ?\n                             SocialCalc.format_number_for_display(operandinfo.value, operandinfo.type, \"\") :\n                             operandinfo.value = operandinfo.value+\"\";\n      operandinfo.type = \"t\";\n      }\n   else if (t == \"b\") { // blank\n      operandinfo.value = \"\";\n      operandinfo.type = \"t\";\n      }\n   else if (t == \"e\") { // error\n      operandinfo.value = \"\";\n      }\n   else {\n      operand.value = operandinfo.value + \"\";\n      operand.type = \"t\";\n      }\n\n   return operandinfo;\n\n   }\n\n/*\n#\n# result = SocialCalc.Formula.OperandValueAndType(sheet, operand)\n#\n# Pops the top of stack and returns it, following a coord reference if necessary.\n# The result is {value: value, type: type, error: \"only if bad error\"}\n# Ranges are returned as if they were pushed onto the stack first coord first\n# Also sets type with \"t\", \"n\", \"th\", etc., as appropriate\n#\n*/\n\nSocialCalc.Formula.OperandValueAndType = function(sheet, operand) {\n\n   var cellvtype, cell, pos, coordsheet;\n   var scf = SocialCalc.Formula;\n\n   var result = {type: \"\", value: \"\"};\n\n   var stacklen = operand.length;\n\n   if (!stacklen) { // make sure something is there\n      result.error = SocialCalc.Constants.s_InternalError+\"no operand on stack\";\n      return result;\n      }\n\n   result.value = operand[stacklen-1].value; // get top of stack\n   result.type = operand[stacklen-1].type;\n   operand.pop(); // we have data - pop stack\n\n   if (result.type == \"name\") {\n      result = scf.LookupName(sheet, result.value);\n      }\n\n   if (result.type == \"range\") {\n      result = scf.StepThroughRangeDown(operand, result.value);\n      }\n\n   if (result.type == \"coord\") { // value is a coord reference\n      coordsheet = sheet;\n      pos = result.value.indexOf(\"!\");\n      if (pos != -1) { // sheet reference\n         coordsheet = scf.FindInSheetCache(result.value.substring(pos+1)); // get other sheet\n         if (coordsheet == null) { // unavailable\n            result.type = \"e#REF!\";\n            result.error = SocialCalc.Constants.s_sheetunavailable+\" \"+result.value.substring(pos+1);\n            result.value = 0;\n            return result;\n            }\n         result.value = result.value.substring(0, pos); // get coord part\n         }\n\n      if (coordsheet) {\n         cell = coordsheet.cells[SocialCalc.Formula.PlainCoord(result.value)];\n         if (cell) {\n            cellvtype = cell.valuetype; // get type of value in the cell it points to\n            result.value = cell.datavalue;\n            }\n         else {\n            cellvtype = \"b\";\n            }\n         }\n      else {\n         cellvtype = \"e#N/A\";\n         result.value = 0;\n         }\n      result.type = cellvtype || \"b\";\n      if (result.type == \"b\") { // blank\n         result.value = 0;\n         }\n      }\n\n   return result;\n\n   }\n\n/*\n#\n# operandinfo = SocialCalc.Formula.OperandAsCoord(sheet, operand)\n#\n# Gets top of stack and pops it.\n# Returns coord value. All others are treated as an error.\n#\n*/\n\n\nSocialCalc.Formula.OperandAsCoord = function(sheet, operand) {\n\treturn SocialCalc.Formula.OperandAsType(sheet, operand, \"coord\");\n}\n\n\n/*\n#\n# operandinfo = SocialCalc.Formula.OperandAsRange(sheet, operand)\n#\n# Gets top of stack and pops it.\n# Returns coord value. All others are treated as an error.\n#\n*/\n\nSocialCalc.Formula.OperandAsRange = function(sheet, operand) {\n\treturn SocialCalc.Formula.OperandAsType(sheet, operand, \"range\");\n}\n\n/*\n#\n# operandinfo = SocialCalc.Formula.OperandAsType(sheet, operand, operandtype)\n#\n# Gets top of stack and pops it.\n# Returns operandtype value. All others are treated as an error.\n#\n*/\nSocialCalc.Formula.OperandAsType = function(sheet, operand, operandtype) {\n\n   var scf = SocialCalc.Formula;\n\n   var result = {type: \"\", value: \"\"};\n\n   var stacklen = operand.length;\n\n   result.value = operand[stacklen-1].value; // get top of stack\n   result.type = operand[stacklen-1].type;\n   operand.pop(); // we have data - pop stack\n   if (result.type == \"name\") {\n      result = SocialCalc.Formula.LookupName(sheet, result.value);\n      }\n   if (result.type == operandtype) { // value is a coord reference\n      return result;\n      }\n   else {\n      result.value = SocialCalc.Constants.s_calcerrcellrefmissing;\n      result.type = \"e#REF!\";\n      return result;\n      }\n}\n\n\n/*\n#\n# result = SocialCalc.Formula.OperandsAsCoordOnSheet(sheet, operand)\n#\n# Gets 2 at top of stack and pops them, treating them as sheetname!coord-or-name.\n# Returns stack-style coord value (coord!sheetname, or coord!sheetname|coord|) with\n# a type of coord or range. All others are treated as an error.\n# If sheetname not available, sets result.error.\n#\n*/\n\nSocialCalc.Formula.OperandsAsCoordOnSheet = function(sheet, operand) {\n\n   var sheetname, othersheet, pos1, pos2;\n   var value1 = {};\n   var result = {};\n   var scf = SocialCalc.Formula;\n\n   var stacklen = operand.length;\n   value1.value = operand[stacklen-1].value; // get top of stack - coord or name\n   value1.type = operand[stacklen-1].type;\n   operand.pop(); // we have data - pop stack\n\n   sheetname = scf.OperandAsSheetName(sheet, operand); // get sheetname as text\n   othersheet = scf.FindInSheetCache(sheetname.value);\n   if (othersheet == null) { // unavailable\n      result.type = \"e#REF!\";\n      result.value = 0;\n      result.error = SocialCalc.Constants.s_sheetunavailable+\" \"+sheetname.value;\n      return result;\n      }\n\n   if (value1.type == \"name\") {\n      value1 = scf.LookupName(othersheet, value1.value);\n      }\n   result.type = value1.type;\n   if (value1.type == \"coord\") { // value is a coord reference\n      result.value = value1.value + \"!\" + sheetname.value; // return in the format as used on stack\n      }\n   else if (value1.type == \"range\") { // value is a range reference\n      pos1 = value1.value.indexOf(\"|\");\n      pos2 = value1.value.indexOf(\"|\", pos1+1);\n      result.value = value1.value.substring(0, pos1) + \"!\" + sheetname.value +\n                    \"|\" + value1.value.substring(pos1+1, pos2) + \"|\";\n      }\n   else if (value1.type.charAt(0)==\"e\") {\n      result.value = value1.value;\n      }\n   else {\n      result.error = SocialCalc.Constants.s_calcerrcellrefmissing;\n      result.type = \"e#REF!\";\n      result.value = 0;\n      }\n   return result;\n   \n   }\n\n/*\n#\n# result = SocialCalc.Formula.OperandsAsRangeOnSheet(sheet, operand)\n#\n# Gets 2 at top of stack and pops them, treating them as coord2-or-name:coord1.\n# Name is evaluated on sheet of coord1.\n# Returns result with \"value\" of stack-style range value (coord!sheetname|coord|) and\n# \"type\" of \"range\". All others are treated as an error.\n#\n*/\n\nSocialCalc.Formula.OperandsAsRangeOnSheet = function(sheet, operand) {\n\n   var value1, othersheet, pos1, pos2;\n   var value2 = {};\n   var scf = SocialCalc.Formula;\n   var scc = SocialCalc.Constants;\n\n   var stacklen = operand.length;\n   value2.value = operand[stacklen-1].value; // get top of stack - coord or name for \"right\" side\n   value2.type = operand[stacklen-1].type;\n   operand.pop(); // we have data - pop stack\n\n   value1 = scf.OperandAsCoord(sheet, operand); // get \"left\" coord\n   if (value1.type != \"coord\") { // not a coord, which it must be\n      return {value: 0, type: \"e#REF!\"};\n      }\n\n   othersheet = sheet;\n   pos1 = value1.value.indexOf(\"!\");\n   if (pos1 != -1) { // sheet reference\n      pos2 = value1.value.indexOf(\"|\", pos1+1);\n      if (pos2 < 0) pos2 = value1.value.length;\n      othersheet = scf.FindInSheetCache(value1.value.substring(pos1+1,pos2)); // get other sheet\n      if (othersheet == null) { // unavailable\n         return {value: 0, type: \"e#REF!\", errortext: scc.s_sheetunavailable+\" \"+value1.value.substring(pos1+1,pos2)};\n         }\n      }\n\n   if (value2.type == \"name\") { // coord:name is allowed, if name is just one cell\n      value2 = scf.LookupName(othersheet, value2.value, \"end\");\n      }\n\n   if (value2.type == \"coord\") { // value is a coord reference, so return the combined range\n      return {value: value1.value+\"|\"+value2.value+\"|\", type: \"range\"}; // return range in the format as used on stack\n      }\n   else { // bad form\n      return {value: scc.s_calcerrcellrefmissing, type: \"e#REF!\"};\n      }\n   }\n\n\n/*\n#\n# result = SocialCalc.Formula.OperandAsSheetName(sheet, operand)\n#\n# Gets top of stack and pops it.\n# Returns sheetname value. All others are treated as an error.\n# Accepts text, cell reference, and named value which is one of those two.\n#\n*/\n\nSocialCalc.Formula.OperandAsSheetName = function(sheet, operand) {\n\n   var nvalue, cell;\n\n   var scf = SocialCalc.Formula;\n\n   var result = {type: \"\", value: \"\"};\n\n   var stacklen = operand.length;\n\n   result.value = operand[stacklen-1].value; // get top of stack\n   result.type = operand[stacklen-1].type;\n   operand.pop(); // we have data - pop stack\n   if (result.type == \"name\") {\n      nvalue = SocialCalc.Formula.LookupName(sheet, result.value);\n      if (!nvalue.value) { // not a known name - return bare name as the name value\n         return result;\n         }\n      result.value = nvalue.value;\n      result.type = nvalue.type;\n      }\n   if (result.type == \"coord\") { // value is a coord reference, follow it to find sheet name\n      cell = sheet.cells[SocialCalc.Formula.PlainCoord(result.value)];\n      if (cell) {\n         result.value = cell.datavalue;\n         result.type = cell.valuetype;\n         }\n      else {\n         result.value = \"\";\n         result.type = \"b\";\n         }\n      }\n   if (result.type.charAt(0) == \"t\") { // value is a string which could be a sheet name\n      return result;\n      }\n   else {\n      result.value = \"\";\n      result.error = SocialCalc.Constants.s_calcerrsheetnamemissing;\n      return result;\n      }\n\n   }\n\n//\n// value = SocialCalc.Formula.LookupName(sheet, name)\n//\n// Returns value and type of a named value\n// Names are case insensitive\n// Names may have a definition which is a coord (A1), a range (A1:B7), or a formula (=OFFSET(A1,0,0,5,1))\n// Note: The range must not have sheet names (\"!\") in them.\n//\n\nSocialCalc.Formula.LookupName = function(sheet, name, isEnd) {\n\n   var pos, specialc, parseinfo;\n   var names = sheet.names;\n   var value = {};\n   var startedwalk = false;\n\n   if (names[name.toUpperCase()]) { // is name defined?\n\n      value.value = names[name.toUpperCase()].definition; // yes\n\n      if (value.value.charAt(0) == \"=\") { // formula\n         if (!sheet.checknamecirc) { // are we possibly walking the name tree?\n            sheet.checknamecirc = {}; // not yet\n            startedwalk = true; // remember we are the reference that started it\n            }\n         else {\n            if (sheet.checknamecirc[name]) { // circular reference\n               value.type = \"e#NAME?\";\n               value.error = SocialCalc.Constants.s_circularnameref+' \"' + name + '\".';\n               return value;\n               }\n            }\n         sheet.checknamecirc[name] = true;\n\n         parseinfo = SocialCalc.Formula.ParseFormulaIntoTokens(value.value.substring(1));\n         value = SocialCalc.Formula.evaluate_parsed_formula(parseinfo, sheet, 1); // parse formula, allowing range return\n\n         delete sheet.checknamecirc[name]; // done with us\n         if (startedwalk) {\n            delete sheet.checknamecirc; // done with walk\n            }\n\n         if (value.type != \"range\") {\n            return value;\n            }\n         }\n\n      pos = value.value.indexOf(\":\");\n      if (pos != -1) { // range\n         value.type = \"range\";\n         value.value = value.value.substring(0, pos) + \"|\" + value.value.substring(pos+1)+\"|\";\n         value.value = value.value.toUpperCase();\n         }\n      else {\n         value.type = \"coord\";\n         value.value = value.value.toUpperCase();\n         }\n      return value;\n      }\n   else if (specialc=SocialCalc.Formula.SpecialConstants[name.toUpperCase()]) { // special constant, like #REF!\n      pos = specialc.indexOf(\",\");\n      value.value = specialc.substring(0,pos)-0;\n      value.type = specialc.substring(pos+1);\n      return value;\n      }\n   else if (/^[a-zA-Z][a-zA-Z]?$/.test(name)) {\n      value.type = \"coord\";\n      value.value = name.toUpperCase() + (isEnd ? sheet.attribs.lastrow : 1);\n      return value;\n   }\n   else {\n      value.value = \"\";\n      value.type = \"e#NAME?\";\n      value.error = SocialCalc.Constants.s_calcerrunknownname+' \"'+name+'\"';\n      return value;\n      }\n   }\n\n/*\n#\n# coord = SocialCalc.Formula.StepThroughRangeDown(operand, rangevalue)\n#\n# Returns next coord in a range, keeping track on the operand stack\n# Goes from upper left across and down to bottom right.\n#\n*/\n\nSocialCalc.Formula.StepThroughRangeDown = function(operand, rangevalue) {\n\n   var value1, value2, sequence, pos1, pos2, sheet1, rp, c, r, count;\n   var scf = SocialCalc.Formula;\n\n   pos1 = rangevalue.indexOf(\"|\");\n   pos2 = rangevalue.indexOf(\"|\", pos1+1);\n   value1 = rangevalue.substring(0, pos1);\n   value2 = rangevalue.substring(pos1+1, pos2);\n   sequence = rangevalue.substring(pos2+1) - 0;\n\n   pos1 = value1.indexOf(\"!\");\n   if (pos1 != -1) {\n      sheet1 = value1.substring(pos1);\n      value1 = value1.substring(0, pos1);\n      }\n   else {\n      sheet1 = \"\";\n      }\n   pos1 = value2.indexOf(\"!\");\n   if (pos1 != -1) {\n      value2 = value2.substring(0, pos1);\n      }\n\n   rp = scf.OrderRangeParts(value1, value2);\n   \n   count = 0;\n   for (r=rp.r1; r<=rp.r2; r++) {\n      for (c=rp.c1; c<=rp.c2; c++) {\n         count++;\n         if (count > sequence) {\n            if (r!=rp.r2 || c!=rp.c2) { // keep on stack until done\n               scf.PushOperand(operand, \"range\", value1+sheet1+\"|\"+value2+\"|\"+count);\n               }\n            return {value: SocialCalc.crToCoord(c, r)+sheet1, type: \"coord\"};\n            }\n         }\n      }\n   }\n\n/*\n#\n# result = SocialCalc.Formula.DecodeRangeParts(sheetdata, range)\n#\n# Returns sheetdata for the sheet where the range is, as well as\n# the number of the first column in the range, the number of columns,\n# and equivalent row information:\n#\n# {sheetdata: sheet, sheetname: name-or-\"\", col1num: n, ncols: n, row1num: n, nrows: n}\n#\n# If any errors, a null result is returned.\n#\n*/\n\nSocialCalc.Formula.DecodeRangeParts = function(sheetdata, range) {\n\n   var value1, value2, pos1, pos2, sheet1, coordsheetdata, rp;\n\n   var scf = SocialCalc.Formula;\n\n   pos1 = range.indexOf(\"|\");\n   pos2 = range.indexOf(\"|\", pos1+1);\n   value1 = range.substring(0, pos1);\n   value2 = range.substring(pos1+1, pos2);\n\n   pos1 = value1.indexOf(\"!\");\n   if (pos1 != -1) {\n      sheet1 = value1.substring(pos1+1);\n      value1 = value1.substring(0, pos1);\n      }\n   else {\n      sheet1 = \"\";\n      }\n   pos1 = value2.indexOf(\"!\");\n   if (pos1 != -1) {\n      value2 = value2.substring(0, pos1);\n      }\n\n   coordsheetdata = sheetdata;\n   if (sheet1) { // sheet reference\n      coordsheetdata = scf.FindInSheetCache(sheet1);\n      if (coordsheetdata == null) { // unavailable\n         return null;\n         }\n      }\n\n   rp = scf.OrderRangeParts(value1, value2);\n\n   return {sheetdata: coordsheetdata, sheetname: sheet1, col1num: rp.c1, ncols: rp.c2-rp.c1+1, row1num: rp.r1, nrows: rp.r2-rp.r1+1}\n\n   }\n\n\n\n//*********************\n//\n// Function Handling\n//\n//*********************\n\n// List of functions -- Define after functions are defined\n//\n// SocialCalc.Formula.FunctionList[\"function_name\"] = [function_subroutine, number_of_arguments, arg_def, func_def, func_class, cell_html, io_parameters]\n//   function_subroutine takes arguments (fname, operand, foperand, sheet), returns\n//      errortext or null, pushing result on operand stack.\n//   number_of_arguments is:\n//      0 = no arguments\n//      >0 = exactly that many arguments\n//      <0 = that many arguments (abs value) or more\n//      100 = don't check\n//\n//   arg_def, if present, is the name of the element in SocialCalc.Formula.FunctionArgDefs.\n//   func_def, if present, is a string explaining the function. If not, looked up in SocialCalc.Constants.\n//   func_class, if present, is the comma-separated names of the elements in SocialCalc.Formula.FunctionClasses.\n//   cell_html, if present, is the HTML to display in the cell. will find and replace these <%=cell_reference%>, <%=displayvalue%> see SocialCalc.FormatValueForDisplay\n//   io_parameters, if present, \n//        \"ParameterList\" is used with =CopyValue() etc, used to collect parameters of the formula, for use trigger/action formulas, \n//        \"EventTree\" is used with =Button() etc, used to store trigger cell lookup table\n//        \"Input\" store copy of value in formdata sheet -- for input style GUI widgets - textbox/radio buttons etc - \n//        \"TimeTrigger\" like button, but triggers an action at a time,  rather than on click\n//\n// To add a function, just add it to this object.\n\n   if (!SocialCalc.Formula.FunctionList) { // make sure it is defined (could have been in another module)\n      SocialCalc.Formula.FunctionList = {};\n      }\n\n   // FunctionClasses[classname] = {name: full-name-string, items: [sorted list of function names]};\n   // filled in by SocialCalc.Formula.FillFunctionInfo\n\n   SocialCalc.Formula.FunctionClasses = null; // start null to say needs filling in\n\n   // FunctionArgDef[argname] = explicit-string-for-arg-list;\n   // filled in by SocialCalc.Formula.FillFunctionInfo\n\n   SocialCalc.Formula.FunctionArgDefs = {};\n\n\n   \n\n/*\n#\n# SocialCalc.Formula.StoreIoEventFormula(function_name, coord, operand_reverse, sheet, io_parameters)\n# \n# store forumla parameters of io event formulas\n#\n# enable lookup of ioForumalas when a trigger formula is activated \n# store formula details in sheet.ioEventTree  and sheet.ioParameterList \n#\n*/\n// eddy StoreIoEventFormula\nSocialCalc.Formula.StoreIoEventFormula = function(function_name, coord, operand_reverse, sheet, io_parameters) {\n\tvar operand = [];\n\tSocialCalc.Formula.Clone(operand,operand_reverse);\n    operand.reverse(); // normal parameter order\n    if(operand.length == 0) return;\n\t\n\t\n\n  if(typeof sheet.ioEventTree === 'undefined') sheet.ioEventTree = {};\t// action formulas - e.g. COPYVALUE, COPYFORMULA  - these action formulas are triggered by a trigger formula \n  if(typeof sheet.ioParameterList === 'undefined') sheet.ioParameterList = {}; // widget parameters - e.g. BUTTON, TEXTBOX - this is updated when the widget state changes\n  if(typeof sheet.ioTimeTriggerList === 'undefined') sheet.ioTimeTriggerList = {}; // \n  if(typeof sheet.radioGroupList === 'undefined') sheet.radioGroupList = {}; // \n\n  // store parameters of each action formulas \n  if(typeof sheet.ioParameterList[coord] === 'undefined') sheet.ioParameterList[coord] = {};\n  sheet.ioParameterList[coord] = operand;\n  sheet.ioParameterList[coord].function_name = function_name;\n  \n  // add radio buttons to list - so radio group can be updated\n//  if(function_name == \"RADIOBUTTON\") {\n//    \n//    if(operand.length > 1) {\n//      if (sheet.radioGroupList[]) {\n//        sheet.radioGroup.push()\n//      } else {\n//        \n//      } \n//    }\n//  }\n\n  \n  // send trigger times to server if changed\n  if(io_parameters == \"TimeTrigger\") { // timer trigger formula exists   \n    // function to push cell time into array\n    var PushTriggerTime = function(list, coordA1, sheetData) {\n      var cell = sheetData.cells[coordA1];   \n      if (typeof cell !== 'undefined' && cell.valuetype.charAt(0) == \"n\") { // if not blank and is number\n        list.push(cell.datavalue);\n      }\n    };\n\n    var triggerTimeCellId = SocialCalc.Formula.PlainCoord(operand[0].value); // strip dollar signs\n    \n    var currentTriggerTimeList = [];\n    \n    if(operand[0].type == \"range\" )  {      \n      var rangeinfo = SocialCalc.Formula.DecodeRangeParts(sheet, triggerTimeCellId);\n      for (var i=0; i<rangeinfo.ncols; i++) {\n        for (var j=0; j<rangeinfo.nrows; j++) {\n          var cellCoord = SocialCalc.crToCoord(rangeinfo.col1num + i, rangeinfo.row1num + j);\n          PushTriggerTime(currentTriggerTimeList, cellCoord, sheet);\n        }\n      }\n    }\n    \n    if(operand[0].type == \"coord\" ) {      \n      PushTriggerTime(currentTriggerTimeList, triggerTimeCellId, sheet);\n    }\n    \n    if (operand[0].type.charAt(0) == \"n\") {\n      currentTriggerTimeList.push(operand[0].value);      \n    }\n\n    // if time triggers changed then set changed times in ioTimeTrigger and schedule      \n    if(typeof sheet.ioTimeTriggerList[coord] === 'undefined' || SocialCalc.Formula.ArrayValuesEqual(sheet.ioTimeTriggerList[coord], currentTriggerTimeList) == false) {\n      // set the time+cell in ioTimeTrigger\n      sheet.ioTimeTriggerList[coord] = currentTriggerTimeList;\n      // schedule the set Time Trigger // sheet.ScheduleSheetCommands('...    \n      var timeZoneOffsetMins = (new Date()).getTimezoneOffset();\n      var start_1_1_1970 = 25569; // Day number of 1/1/1970 starting with 1/1/1900 as 1      \n      var triggerUTCTimeList = []; /// EPOCH in Mins - Mins since 1/1/1970 GMT\n      for(var index = 0; index < currentTriggerTimeList.length; ++index) triggerUTCTimeList[index] = Math.floor(((currentTriggerTimeList[index] - start_1_1_1970 ) *24 * 60) + timeZoneOffsetMins);\n      sheet.ScheduleSheetCommands('settimetrigger '+coord+' '+triggerUTCTimeList.toString());       \n    }\n  }\n  \n\t// store trigger lookup table\n  if(io_parameters == \"EventTree\"\t&& (operand[0].type == \"coord\" || operand[0].type == \"range\")) { // trigger cell exists   \n  \t// create a list of action formulas for each trigger cell  \n    var triggerCellId = operand[0].value.replace(/\\$/g,''); // strip dollar signs\n    var PushTriggerCord = function(list, index, v) {\n        if(typeof list[index] === 'undefined') list[index] = {};\n        list[index][v] = v;\n    };\n\n\n    if(operand[0].type == \"range\" )  {      \n\t      var rangeinfo = SocialCalc.Formula.DecodeRangeParts(sheet, triggerCellId);\n      for (var i=0; i<rangeinfo.ncols; i++) {\n         for (var j=0; j<rangeinfo.nrows; j++) {\n            var cellcr = SocialCalc.crToCoord(rangeinfo.col1num + i, rangeinfo.row1num + j);\n                          PushTriggerCord(sheet.ioEventTree, cellcr, coord); \n                          \n         }\n      }\n    }\n    if(operand[0].type == \"coord\" ) {\n        PushTriggerCord(sheet.ioEventTree, triggerCellId, coord); \n    }                \n  }\n\n  \n  //IF GUI widget is \"Input\"\n  if(io_parameters == \"Input\" ) {\n    var formDataViewer = (SocialCalc.CurrentSpreadsheetControlObject != null) \n          ? SocialCalc.CurrentSpreadsheetControlObject.formDataViewer \n          : SocialCalc.CurrentSpreadsheetViewerObject.formDataViewer;\n    \n    if(formDataViewer != null && formDataViewer.loaded == true) {\n      \n      // IF formFields  not loaded - load formFields  \n      if( formDataViewer.formFields == null) SocialCalc.Formula.LoadFormFields();\n      //  get formFieldName\n      var formFieldName = (function_name+coord).toLowerCase();\n      //  if formFieldName not in formFields  \n      var sheetCmd = null;\n      if(formDataViewer.formFields[formFieldName] == null) {\n        //    store formFieldName of gui input widget \n        //    add formFieldName  to formFields  \n        var col = formDataViewer.formFields[formFieldName] = formDataViewer.formFieldsLength++ + 2;\n        //    add formFieldName to next empty cell (starting with B1)\n        var headerCoord = SocialCalc.crToCoord(col, 1);\n        sheetCmd = \"set \"+headerCoord+\" text t \"+SocialCalc.encodeForSave(function_name.toLowerCase()+coord);\n      }\n      if(operand[0].type.charAt(0) == \"t\" || operand[0].type.charAt(0) == \"n\") {       \n        var valueCoord = SocialCalc.crToCoord(formDataViewer.formFields[formFieldName], 2);\n        if(formDataViewer.sheet.cells[valueCoord] == null ||  formDataViewer.sheet.cells[valueCoord].datavalue != operand[0].value) {\n          var sheetCmdTwo = \"set \"+valueCoord+\" text t \"+SocialCalc.encodeForSave(operand[0].value);\n          if (sheetCmd != null) sheetCmd = sheetCmd + \"\\n\" + sheetCmdTwo; else sheetCmd = sheetCmdTwo;        \n        }\n  \n      }\n      if (sheetCmd != null) formDataViewer.sheet.ScheduleSheetCommands(sheetCmd, false);    \n    }    \n  }    \n        \n\n\t//SocialCalc.DebugLog({ ioEventTree: sheet.ioEventTree});\n\t//SocialCalc.DebugLog({ ioParameterList: sheet.ioParameterList});\n}   \n   \n\n/**\n * ArrayValuesEqual\n * \n * Warning - nested vales are NOT tested.\n * returns true if both arrays contain the same values\n */    \nSocialCalc.Formula.ArrayValuesEqual = function(a, b) {\n  var i = a.length;\n  if (i != b.length) return false;\n  while (i--) {\n      if (a[i] !== b[i]) return false;\n  }\n  return true;\n};\n\nSocialCalc.Formula.Clone =   function(destination, source) {\n        for (var property in source) {\n            if (typeof source[property] === \"object\" && source[property] !== null && destination[property]) { \n                SocialCalc.Formula.Clone(destination[property], source[property]);\n            } else {\n                destination[property] = source[property];\n            }\n        }\n    };   \n\n/**\n * LoadFormFields\n * \n * Load the fieldNames of the form \n *  Cell A1 contains \"FieldName:\" and cells B1 to n contain field names\n *  Cell A2 contains \"Pending\" - pending data row. The pending row is moved to row 3 by inseting a new row 2 onSubmit \n *  Put the fieldNames into an array for fast lookup and position information\n */    \n    \nSocialCalc.Formula.LoadFormFields =   function() {\n  var formDataViewer = (SocialCalc.CurrentSpreadsheetControlObject != null) \n    ? SocialCalc.CurrentSpreadsheetControlObject.formDataViewer \n    : SocialCalc.CurrentSpreadsheetViewerObject.formDataViewer;\n\n  formDataViewer.formFields = {};\n\n  \n  //IF cell A1 is blank - Adds \"FieldName:\" to A1\n  if(formDataViewer.sheet.cells.A1 == null ) {\n    formDataViewer.sheet.ScheduleSheetCommands(\"set A1 text t \"+SocialCalc.encodeForSave(\"FieldName:\"), false);       \n  }\n  \n  if(formDataViewer.sheet.cells.A2 == null ) {\n    formDataViewer.sheet.ScheduleSheetCommands(\"set A2 text t \"+SocialCalc.encodeForSave(\"Pending:\"), false);       \n  }\n\n  \n  //  For each cell in row 1, from B1 to 1st blank cell\n  var col = 2;\n  while(true) {\n    var coord = SocialCalc.crToCoord(col, 1);\n    var cell=formDataViewer.sheet.cells[coord];\n    if (!cell) break;\n    //    Put cell value into formFields  \n    formDataViewer.formFields[cell.datavalue.toLowerCase()] = col;\n    col ++;\n  }\n  formDataViewer.formFieldsLength = col -2;\n\n}    \n   \n/*\n#\n# errortext = SocialCalc.Formula.CalculateFunction(fname, operand, sheet)\n#\n# Dispatches for function fname.\n#\n*/\n\nSocialCalc.Formula.CalculateFunction = function(fname, operand, sheet, coord) {\n\n   var fobj, foperand, ffunc, argnum, ttext;\n   var scf = SocialCalc.Formula;\n   var ok = 1;\n   var errortext = \"\";\n\n   fobj = scf.FunctionList[fname];\n\n   if (fobj) {\n   \n\n      foperand = [];\n      ffunc = fobj[0];\n      argnum = fobj[1];\n      scf.CopyFunctionArgs(operand, foperand);\n\n\t  // eddy CalculateFunction {\n   if(fobj[6] && fobj[6] != \"\") {\t  \n\t   SocialCalc.DebugLog(\"action:\"+fname);\t\t\n\t\t scf.StoreIoEventFormula(fname, coord, foperand, sheet, fobj[6]);\n\t\t\n\t  }\n\t  // }\n\t  \n      if (argnum != 100) {\n         if (argnum < 0) {\n            if (foperand.length < -argnum) {\n               errortext = scf.FunctionArgsError(fname, operand);\n               return errortext;\n               }\n            }\n         else {\n            if (foperand.length != argnum) {\n               errortext = scf.FunctionArgsError(fname, operand);\n               return errortext;\n               }\n            }\n         }\n\n\t\t \n\t  \n      errortext = ffunc(fname, operand, foperand, sheet, coord);\n      }\n\n   else {\n         ttext = fname;\n\n         if (operand.length && operand[operand.length-1].type == \"start\") { // no arguments - name or zero arg function\n            operand.pop();\n            scf.PushOperand(operand, \"name\", ttext);\n            }\n\n         else {\n            errortext = SocialCalc.Constants.s_sheetfuncunknownfunction+\" \" + ttext +\". \";\n            }\n      }\n\n   return errortext;\n\n}\n\n//\n// SocialCalc.Formula.PushOperand(operand, t, v)\n//\n// Pushes the type and value onto the operand stack\n//\n\nSocialCalc.Formula.PushOperand = function(operand, t, v) {\n\n   operand.push({type: t, value: v});\n\n   }\n\n//\n// SocialCalc.Formula.CopyFunctionArgs(operand, foperand)\n//\n// Pops operands from operand and pushes on foperand up to function start\n// reversing order in the process.\n//\n\nSocialCalc.Formula.CopyFunctionArgs = function(operand, foperand) {\n\n   var fobj, foperand, ffunc, argnum;\n   var scf = SocialCalc.Formula;\n   var ok = 1;\n   var errortext = null;\n\n   while (operand.length>0 && operand[operand.length-1].type != \"start\") { // get each arg\n      foperand.push(operand.pop()); // copy it\n      }\n   operand.pop(); // get rid of \"start\"\n\n   return;\n\n   }\n\n//\n// errortext = SocialCalc.Formula.FunctionArgsError(fname, operand)\n//\n// Pushes appropriate error on operand stack and returns errortext, including fname\n//\n\nSocialCalc.Formula.FunctionArgsError = function(fname, operand) {\n\n   var errortext = SocialCalc.Constants.s_calcerrincorrectargstofunction+\" \" + fname + \". \";\n   SocialCalc.Formula.PushOperand(operand, \"e#VALUE!\", errortext);\n\n   return errortext;\n\n   }\n\n\n//\n// errortext = SocialCalc.Formula.FunctionSpecificError(fname, operand, errortype, errortext)\n//\n// Pushes specified error and text on operand stack.\n//\n\nSocialCalc.Formula.FunctionSpecificError = function(fname, operand, errortype, errortext) {\n\n   SocialCalc.Formula.PushOperand(operand, errortype, errortext);\n\n   return errortext;\n\n   }\n\n//\n// haserror = SocialCalc.Formula.CheckForErrorValue(operand, v)\n//\n// If v.type is an error, push it on operand stack and return true, otherwise return false.\n//\n\nSocialCalc.Formula.CheckForErrorValue = function(operand, v) {\n\n   if (v.type.charAt(0) == \"e\") {\n      operand.push(v);\n      return true;\n      }\n   else {\n      return false;\n      }\n\n   }\n\n/////////////////////////\n//\n// FUNCTION INFORMATION ROUTINES\n//\n\n//\n// SocialCalc.Formula.FillFunctionInfo()\n//\n// Goes through function definitions and fills out FunctionArgDefs and FunctionClasses.\n// Execute this after any changes to SocialCalc.Constants but before UI is used.\n//\n\nSocialCalc.Formula.FillFunctionInfo = function() {\n\n   var scf = SocialCalc.Formula;\n   var scc = SocialCalc.Constants;\n\n   var fname, f, classes, cname, i;\n\n   if (scf.FunctionClasses) { // only do once\n      return;\n      }\n\n   for (fname in scf.FunctionList) {\n      f = scf.FunctionList[fname];\n      if (f[2]) { // has an arg def\n         scf.FunctionArgDefs[f[2]] = scc[\"s_farg_\"+f[2]] || \"\"; // get it from constants\n         }\n      if (!f[3]) { // no text def, see if in constants\n         if (scc[\"s_fdef_\"+fname]) {\n            scf.FunctionList[fname][3] = scc[\"s_fdef_\"+fname];\n            }\n         }\n      }\n\n   scf.FunctionClasses = {};\n \n   for (i=0; i<scc.function_classlist.length; i++) {\n      cname = scc.function_classlist[i];\n      scf.FunctionClasses[cname] = {name: scc[\"s_fclass_\"+cname], items: []};\n      }\n\n   for (fname in scf.FunctionList) {\n      f = scf.FunctionList[fname];\n      classes = f[4] ? f[4].split(\",\") : []; // get classes\n      classes.push(\"all\");\n      for (i=0; i<classes.length; i++) {\n         cname = classes[i];\n         scf.FunctionClasses[cname].items.push(fname);\n         }\n      }\n   for (cname in scf.FunctionClasses) {\n      scf.FunctionClasses[cname].items.sort();\n      }\n\n   }\n\n//\n// str = SocialCalc.Formula.FunctionArgString(fname)\n//\n// Returns a string representing the arguments to function fname.\n//\n\nSocialCalc.Formula.FunctionArgString = function(fname) {\n\n   var scf = SocialCalc.Formula;\n   var fdata = scf.FunctionList[fname];\n   var nargs, i, str;\n\n   var adef = fdata[2];\n\n   if (!adef) {\n      nargs = fdata[1];\n      if (nargs == 0) {\n         adef = \" \";\n         }\n      else if (nargs > 0) {\n         str = \"v1\";\n         for (i=2; i<=nargs; i++) {\n            str += \", v\"+i;\n            }\n         return str;\n         }\n      else if (nargs < 0) {\n         str = \"v1\";\n         for (i=2; i<-nargs; i++) {\n            str += \", v\"+i;\n            }\n         return str+\", ...\";\n         }\n      else {\n         return \"nargs: \"+nargs;\n         }\n      }\n\n   str = scf.FunctionArgDefs[adef] || adef;\n\n   return str;\n\n   }\n\n\n/////////////////////////\n//\n// FUNCTION DEFINITIONS\n//\n// The standard function definitions follow.\n//\n// Note that some need SocialCalc.DetermineValueType to be defined.\n//\n\n/*\n#\n# AVERAGE(v1,c1:c2,...)\n# CONCAT(value_or_range,...)\n# CONCATENATE(value_or_range,...)\n# COUNT(v1,c1:c2,...)\n# COUNTA(v1,c1:c2,...)\n# COUNTBLANK(v1,c1:c2,...)\n# MAX(v1,c1:c2,...)\n# MIN(v1,c1:c2,...)\n# PRODUCT(v1,c1:c2,...)\n# STDEV(v1,c1:c2,...)\n# STDEVP(v1,c1:c2,...)\n# SUM(v1,c1:c2,...)\n# VAR(v1,c1:c2,...)\n# VARP(v1,c1:c2,...)\n#\n# Calculate all of these and then return the desired one (overhead is in accessing not calculating)\n# If this routine is changed, check the dseries_functions, too.\n#\n*/\n\nSocialCalc.Formula.SeriesFunctions = function(fname, operand, foperand, sheet) {\n\n   var value1, t, v1;\n\n   var scf = SocialCalc.Formula;\n   var operand_value_and_type = scf.OperandValueAndType;\n   var lookup_result_type = scf.LookupResultType;\n   var typelookupplus = scf.TypeLookupTable.plus;\n\n   var PushOperand = function(t, v) {operand.push({type: t, value: v});};\n\n\n   var concat = \"\";\n   var sum = 0;\n   var resulttypesum = \"\";\n   var count = 0;\n   var counta = 0;\n   var countblank = 0;\n   var product = 1;\n   var maxval;\n   var minval;\n   var mk, sk, mk1, sk1; // For variance, etc.: M sub k, k-1, and S sub k-1\n                         // as per Knuth \"The Art of Computer Programming\" Vol. 2 3rd edition, page 232\n\n   while (foperand.length > 0) {\n      value1 = operand_value_and_type(sheet, foperand);\n      t = value1.type.charAt(0);\n      if (t == \"n\") count += 1;\n      if (t != \"b\") counta += 1;\n      if (t == \"b\") countblank += 1;\n      if (t != \"e\" && t != \"b\") concat = concat + value1.value;\n\n      if (t == \"n\") {\n         v1 = value1.value-0; // get it as a number\n         sum += v1;\n         product *= v1;\n         maxval = (maxval!=undefined) ? (v1 > maxval ? v1 : maxval) : v1;\n         minval = (minval!=undefined) ? (v1 < minval ? v1 : minval) : v1;\n         if (count == 1) { // initialize with first values for variance used in STDEV, VAR, etc.\n            mk1 = v1;\n            sk1 = 0;\n            }\n         else { // Accumulate S sub 1 through n as per Knuth noted above\n            mk = mk1 + (v1 - mk1) / count;\n            sk = sk1 + (v1 - mk1) * (v1 - mk);\n            sk1 = sk;\n            mk1 = mk;\n            }\n         resulttypesum = lookup_result_type(value1.type, resulttypesum || value1.type, typelookupplus);\n         }\n      else if (t == \"e\" && resulttypesum.charAt(0) != \"e\") {\n         resulttypesum = value1.type;\n         }\n      }\n\n   resulttypesum = resulttypesum || \"n\";\n\n   switch (fname) {\n      case \"CONCAT\":\n      case \"CONCATENATE\":\n        PushOperand(\"t\", concat);\n        break;\n\n      case \"SUM\":\n         PushOperand(resulttypesum, sum);\n         break;\n\n      case \"PRODUCT\": // may handle cases with text differently than some other spreadsheets\n         PushOperand(resulttypesum, product);\n         break;\n\n      case \"MIN\":\n         PushOperand(resulttypesum, minval || 0);\n         break;\n\n      case \"MAX\":\n         PushOperand(resulttypesum, maxval || 0);\n         break;\n\n      case \"COUNT\":\n         PushOperand(\"n\", count);\n         break;\n\n      case \"COUNTA\":\n         PushOperand(\"n\", counta);\n         break;\n\n      case \"COUNTBLANK\":\n         PushOperand(\"n\", countblank);\n         break;\n\n      case \"AVERAGE\":\n         if (count > 0) {\n            PushOperand(resulttypesum, sum/count);\n            }\n         else {\n            PushOperand(\"e#DIV/0!\", 0);\n            }\n         break;\n\n      case \"STDEV\":\n         if (count > 1) {\n            PushOperand(resulttypesum, Math.sqrt(sk / (count - 1))); // sk is never negative according to Knuth\n            }\n         else {\n            PushOperand(\"e#DIV/0!\", 0);\n            }\n         break;\n\n      case \"STDEVP\":\n         if (count > 1) {\n            PushOperand(resulttypesum, Math.sqrt(sk / count));\n            }\n         else {\n            PushOperand(\"e#DIV/0!\", 0);\n            }\n         break;\n\n      case \"VAR\":\n         if (count > 1) {\n            PushOperand(resulttypesum, sk / (count - 1));\n            }\n         else {\n            PushOperand(\"e#DIV/0!\", 0);\n            }\n         break;\n\n      case \"VARP\":\n         if (count > 1) {\n            PushOperand(resulttypesum, sk / count);\n            }\n         else {\n            PushOperand(\"e#DIV/0!\", 0);\n            }\n         break;\n      }\n\n   return null;\n\n   }\n\n//*********************\n//\n// Docs see - Function Handling - ~line 1560\n// \n//*********************\n\n// Add to function list\nSocialCalc.Formula.FunctionList[\"AVERAGE\"] = [SocialCalc.Formula.SeriesFunctions, -1, \"vn\", null, \"stat\"];\nSocialCalc.Formula.FunctionList[\"CONCAT\"] = [SocialCalc.Formula.SeriesFunctions, -1, \"vn\", null, \"text\"];\nSocialCalc.Formula.FunctionList[\"CONCATENATE\"] = [SocialCalc.Formula.SeriesFunctions, -1, \"vn\", null, \"text\"];\nSocialCalc.Formula.FunctionList[\"COUNT\"] = [SocialCalc.Formula.SeriesFunctions, -1, \"vn\", null, \"stat\"];\nSocialCalc.Formula.FunctionList[\"COUNTA\"] = [SocialCalc.Formula.SeriesFunctions, -1, \"vn\", null, \"stat\"];\nSocialCalc.Formula.FunctionList[\"COUNTBLANK\"] = [SocialCalc.Formula.SeriesFunctions, -1, \"vn\", null, \"stat\"];\nSocialCalc.Formula.FunctionList[\"MAX\"] = [SocialCalc.Formula.SeriesFunctions, -1, \"vn\", null, \"stat\"];\nSocialCalc.Formula.FunctionList[\"MIN\"] = [SocialCalc.Formula.SeriesFunctions, -1, \"vn\", null, \"stat\"];\nSocialCalc.Formula.FunctionList[\"PRODUCT\"] = [SocialCalc.Formula.SeriesFunctions, -1, \"vn\", null, \"stat\"];\nSocialCalc.Formula.FunctionList[\"STDEV\"] = [SocialCalc.Formula.SeriesFunctions, -1, \"vn\", null, \"stat\"];\nSocialCalc.Formula.FunctionList[\"STDEVP\"] = [SocialCalc.Formula.SeriesFunctions, -1, \"vn\", null, \"stat\"];\nSocialCalc.Formula.FunctionList[\"SUM\"] = [SocialCalc.Formula.SeriesFunctions, -1, \"vn\", null, \"stat\"];\nSocialCalc.Formula.FunctionList[\"VAR\"] = [SocialCalc.Formula.SeriesFunctions, -1, \"vn\", null, \"stat\"];\nSocialCalc.Formula.FunctionList[\"VARP\"] = [SocialCalc.Formula.SeriesFunctions, -1, \"vn\", null, \"stat\"];\n\n/*\n#\n# SUMPRODUCT(range1, range2, ...)\n#\n*/\n\nSocialCalc.Formula.SumProductFunction = function(fname, operand, foperand, sheet) {\n  \n   var range, products = [], sum = 0;\n   var scf = SocialCalc.Formula;\n   var ncols = 0, nrows = 0;\n\n   var PushOperand = function(t, v) {operand.push({type: t, value: v});};\n\n   while (foperand.length > 0) {\n      range = scf.TopOfStackValueAndType(sheet, foperand);\n      if (range.type != \"range\") {\n         PushOperand(\"e#VALUE!\", 0);\n         return;\n         }\n      rangeinfo = scf.DecodeRangeParts(sheet, range.value);\n      if (!ncols) ncols = rangeinfo.ncols;\n      else if (ncols != rangeinfo.ncols) {\n         PushOperand(\"e#VALUE!\", 0);\n         return;\n         }\n      if (!nrows) nrows = rangeinfo.nrows;\n      else if (nrows != rangeinfo.nrows) {\n         PushOperand(\"e#VALUE!\", 0);\n         return;\n         }\n      for (i=0; i<rangeinfo.ncols; i++) {\n         for (j=0; j<rangeinfo.nrows; j++) {\n            k = i * rangeinfo.nrows + j;\n            cellcr = SocialCalc.crToCoord(rangeinfo.col1num + i, rangeinfo.row1num + j);\n            cell = rangeinfo.sheetdata.GetAssuredCell(cellcr);\n            value = cell.valuetype == \"n\" ? cell.datavalue : 0;\n            products[k] = ((typeof products[k] !== 'undefined')? products[k] : 1) * value;\n            }\n         }\n      }\n   for (i=0; i<products.length; i++) {\n      sum += products[i];\n      }\n   PushOperand(\"n\", sum);\n\n   return;\n\n   }\n\nSocialCalc.Formula.FunctionList[\"SUMPRODUCT\"] = [SocialCalc.Formula.SumProductFunction, -1, \"rangen\", \"\", \"stat\"];\n\n/*\n#\n# DAVERAGE(databaserange, fieldname, criteriarange)\n# DCOUNT(databaserange, fieldname, criteriarange)\n# DCOUNTA(databaserange, fieldname, criteriarange)\n# DGET(databaserange, fieldname, criteriarange)\n# DMAX(databaserange, fieldname, criteriarange)\n# DMIN(databaserange, fieldname, criteriarange)\n# DPRODUCT(databaserange, fieldname, criteriarange)\n# DSTDEV(databaserange, fieldname, criteriarange)\n# DSTDEVP(databaserange, fieldname, criteriarange)\n# DSUM(databaserange, fieldname, criteriarange)\n# DVAR(databaserange, fieldname, criteriarange)\n# DVARP(databaserange, fieldname, criteriarange)\n#\n# Calculate all of these and then return the desired one (overhead is in accessing not calculating)\n# If this routine is changed, check the series_functions, too.\n#\n*/\n\nSocialCalc.Formula.DSeriesFunctions = function(fname, operand, foperand, sheet) {\n\n   var value1, tostype, cr, dbrange, fieldname, criteriarange, dbinfo, criteriainfo;\n   var fieldasnum, targetcol, i, j, k, cell, criteriafieldnums;\n   var testok, criteriacr, criteria, testcol, testcr;\n   var t;\n\n   var scf = SocialCalc.Formula;\n   var operand_value_and_type = scf.OperandValueAndType;\n   var lookup_result_type = scf.LookupResultType;\n   var typelookupplus = scf.TypeLookupTable.plus;\n\n   var PushOperand = function(t, v) {operand.push({type: t, value: v});};\n\n   var value1 = {};\n\n   var sum = 0;\n   var resulttypesum = \"\";\n   var count = 0;\n   var counta = 0;\n   var countblank = 0;\n   var countmatches = 0;   \n   var product = 1;\n   var maxval;\n   var minval;\n   var mk, sk, mk1, sk1; // For variance, etc.: M sub k, k-1, and S sub k-1\n                         // as per Knuth \"The Art of Computer Programming\" Vol. 2 3rd edition, page 232\n\n   dbrange = scf.TopOfStackValueAndType(sheet, foperand); // get a range\n   fieldname = scf.OperandValueAndType(sheet, foperand); // get a value\n   criteriarange = scf.TopOfStackValueAndType(sheet, foperand); // get a range\n\n   if (dbrange.type != \"range\" || criteriarange.type != \"range\") {\n      return scf.FunctionArgsError(fname, operand);\n      }\n\n   dbinfo = scf.DecodeRangeParts(sheet, dbrange.value);\n   criteriainfo = scf.DecodeRangeParts(sheet, criteriarange.value);\n\n   fieldasnum = scf.FieldToColnum(dbinfo.sheetdata, dbinfo.col1num, dbinfo.ncols, dbinfo.row1num, fieldname.value, fieldname.type);\n   if (fieldasnum <= 0) {\n      PushOperand(\"e#VALUE!\", 0);\n      return;\n      }\n\n   targetcol = dbinfo.col1num + fieldasnum - 1;\n   criteriafieldnums = [];\n\n   for (i=0; i<criteriainfo.ncols; i++) { // get criteria field colnums\n      cell = criteriainfo.sheetdata.GetAssuredCell(SocialCalc.crToCoord(criteriainfo.col1num + i, criteriainfo.row1num));\n      criterianum = scf.FieldToColnum(dbinfo.sheetdata, dbinfo.col1num, dbinfo.ncols, dbinfo.row1num, cell.datavalue, cell.valuetype);\n      if (criterianum <= 0) {\n         PushOperand(\"e#VALUE!\", 0);\n         return;\n         }\n      criteriafieldnums.push(dbinfo.col1num + criterianum - 1);\n      }\n\n   for (i=1; i<dbinfo.nrows; i++) { // go through each row of the database\n      testok = false;\nCRITERIAROW:\n      for (j=1; j<criteriainfo.nrows; j++) { // go through each criteria row\n         for (k=0; k<criteriainfo.ncols; k++) { // look at each column\n            criteriacr = SocialCalc.crToCoord(criteriainfo.col1num + k, criteriainfo.row1num + j); // where criteria is\n            cell = criteriainfo.sheetdata.GetAssuredCell(criteriacr);\n            criteria = cell.datavalue;\n            if (typeof criteria == \"string\" && criteria.length == 0) continue; // blank items are OK\n            testcol = criteriafieldnums[k];\n            testcr = SocialCalc.crToCoord(testcol, dbinfo.row1num + i); // cell to check\n            cell = dbinfo.sheetdata.GetAssuredCell(testcr); // get cell to check from dbinfo sheet\n            if (!scf.TestCriteria(cell.datavalue, cell.valuetype || \"b\", criteria)) {\n               continue CRITERIAROW; // does not meet criteria - check next row\n               }\n            }\n         testok = true; // met all the criteria\n         break CRITERIAROW;\n         }\n      if (!testok) {\n         continue;\n         }\n\n      cr = SocialCalc.crToCoord(targetcol, dbinfo.row1num + i); // get cell of this row to do the function on\n      cell = dbinfo.sheetdata.GetAssuredCell(cr);\n\n      value1.value = cell.datavalue;\n      value1.type = cell.valuetype;\n      t = value1.type.charAt(0);\n      countmatches += 1;\n      if (t == \"n\") count += 1;\n      if (t != \"b\") counta += 1;\n      if (t == \"b\") countblank += 1;\n\n      if (t == \"n\") {\n         v1 = value1.value-0; // get it as a number\n         sum += v1;\n         product *= v1;\n         maxval = (maxval!=undefined) ? (v1 > maxval ? v1 : maxval) : v1;\n         minval = (minval!=undefined) ? (v1 < minval ? v1 : minval) : v1;\n         if (count == 1) { // initialize with first values for variance used in STDEV, VAR, etc.\n            mk1 = v1;\n            sk1 = 0;\n            }\n         else { // Accumulate S sub 1 through n as per Knuth noted above\n            mk = mk1 + (v1 - mk1) / count;\n            sk = sk1 + (v1 - mk1) * (v1 - mk);\n            sk1 = sk;\n            mk1 = mk;\n            }\n         resulttypesum = lookup_result_type(value1.type, resulttypesum || value1.type, typelookupplus);\n         }\n      else if (t == \"e\" && resulttypesum.charAt(0) != \"e\") {\n         resulttypesum = value1.type;\n         }\n      }\n\n   resulttypesum = resulttypesum || \"n\";\n\n   switch (fname) {\n      case \"DSUM\":\n         PushOperand(resulttypesum, sum);\n         break;\n\n      case \"DPRODUCT\": // may handle cases with text differently than some other spreadsheets\n         PushOperand(resulttypesum, product);\n         break;\n\n      case \"DMIN\":\n         PushOperand(resulttypesum, minval || 0);\n         break;\n\n      case \"DMAX\":\n         PushOperand(resulttypesum, maxval || 0);\n         break;\n\n      case \"DCOUNT\":\n         PushOperand(\"n\", count);\n         break;\n\n      case \"DCOUNTA\":\n         PushOperand(\"n\", counta);\n         break;\n\n      case \"DAVERAGE\":\n         if (count > 0) {\n            PushOperand(resulttypesum, sum/count);\n            }\n         else {\n            PushOperand(\"e#DIV/0!\", 0);\n            }\n         break;\n\n      case \"DSTDEV\":\n         if (count > 1) {\n            PushOperand(resulttypesum, Math.sqrt(sk / (count - 1))); // sk is never negative according to Knuth\n            }\n         else {\n            PushOperand(\"e#DIV/0!\", 0);\n            }\n         break;\n\n      case \"DSTDEVP\":\n         if (count > 1) {\n            PushOperand(resulttypesum, Math.sqrt(sk / count));\n            }\n         else {\n            PushOperand(\"e#DIV/0!\", 0);\n            }\n         break;\n\n      case \"DVAR\":\n         if (count > 1) {\n            PushOperand(resulttypesum, sk / (count - 1));\n            }\n         else {\n            PushOperand(\"e#DIV/0!\", 0);\n            }\n         break;\n\n      case \"DVARP\":\n         if (count > 1) {\n            PushOperand(resulttypesum, sk / count);\n            }\n         else {\n            PushOperand(\"e#DIV/0!\", 0);\n            }\n         break;\n\n      case \"DGET\":\n         if (countmatches == 1) {\n            PushOperand(value1.type, value1.value);\n            }\n         else if (countmatches == 0) {\n            PushOperand(\"e#VALUE!\", 0);\n            }\n         else {\n            PushOperand(\"e#NUM!\", 0);\n            }\n         break;\n\n      }\n\n   return;\n\n   }\n\n//*********************\n//\n// Docs see - Function Handling - ~line 1560\n// \n//*********************\n\nSocialCalc.Formula.FunctionList[\"DAVERAGE\"] = [SocialCalc.Formula.DSeriesFunctions, 3, \"dfunc\", \"\", \"stat\"];\nSocialCalc.Formula.FunctionList[\"DCOUNT\"] = [SocialCalc.Formula.DSeriesFunctions, 3, \"dfunc\", \"\", \"stat\"];\nSocialCalc.Formula.FunctionList[\"DCOUNTA\"] = [SocialCalc.Formula.DSeriesFunctions, 3, \"dfunc\", \"\", \"stat\"];\nSocialCalc.Formula.FunctionList[\"DGET\"] = [SocialCalc.Formula.DSeriesFunctions, 3, \"dfunc\", \"\", \"stat\"];\nSocialCalc.Formula.FunctionList[\"DMAX\"] = [SocialCalc.Formula.DSeriesFunctions, 3, \"dfunc\", \"\", \"stat\"];\nSocialCalc.Formula.FunctionList[\"DMIN\"] = [SocialCalc.Formula.DSeriesFunctions, 3, \"dfunc\", \"\", \"stat\"];\nSocialCalc.Formula.FunctionList[\"DPRODUCT\"] = [SocialCalc.Formula.DSeriesFunctions, 3, \"dfunc\", \"\", \"stat\"];\nSocialCalc.Formula.FunctionList[\"DSTDEV\"] = [SocialCalc.Formula.DSeriesFunctions, 3, \"dfunc\", \"\", \"stat\"];\nSocialCalc.Formula.FunctionList[\"DSTDEVP\"] = [SocialCalc.Formula.DSeriesFunctions, 3, \"dfunc\", \"\", \"stat\"];\nSocialCalc.Formula.FunctionList[\"DSUM\"] = [SocialCalc.Formula.DSeriesFunctions, 3, \"dfunc\", \"\", \"stat\"];\nSocialCalc.Formula.FunctionList[\"DVAR\"] = [SocialCalc.Formula.DSeriesFunctions, 3, \"dfunc\", \"\", \"stat\"];\nSocialCalc.Formula.FunctionList[\"DVARP\"] = [SocialCalc.Formula.DSeriesFunctions, 3, \"dfunc\", \"\", \"stat\"];\n\n/*\n#\n# colnum = SocialCalc.Formula.FieldToColnum(sheet, col1num, ncols, row1num, fieldname, fieldtype)\n#\n# If fieldname is a number, uses it, otherwise looks up string in cells in row to find field number\n#\n# If not found, returns 0.\n#\n*/\n\nSocialCalc.Formula.FieldToColnum = function(sheet, col1num, ncols, row1num, fieldname, fieldtype) {\n\n   var colnum, cell, value;\n\n   if (fieldtype.charAt(0) == \"n\") { // number - return it if legal\n      colnum = fieldname - 0; // make sure a number\n      if (colnum <= 0 || colnum > ncols) {\n         return 0;\n         }\n      return Math.floor(colnum);\n      }\n\n   if (fieldtype.charAt(0) != \"t\") { // must be text otherwise\n      return 0;\n      }\n\n   fieldname = fieldname ? fieldname.toLowerCase() : \"\";\n\n   for (colnum=0; colnum < ncols; colnum++) { // look through column headers for a match\n      cell = sheet.GetAssuredCell(SocialCalc.crToCoord(col1num+colnum, row1num));\n      value = cell.datavalue;\n      value = (value+\"\").toLowerCase(); // ignore case\n      if (value == fieldname) { // match\n         return colnum+1;\n         }         \n      }\n   return 0; // looked at all and no match\n\n   }\n\n\n/*\n#\n# HLOOKUP(value, range, row, [rangelookup])\n# VLOOKUP(value, range, col, [rangelookup])\n# MATCH(value, range, [rangelookup])\n#\n*/\n\nSocialCalc.Formula.LookupFunctions = function(fname, operand, foperand, sheet) {\n\n   var lookupvalue, range, offset, rangelookup, offsetvalue, rangeinfo;\n   var c, r, cincr, rincr, previousOK, csave, rsave, cell, value, valuetype, cr, lookupvalue;\n\n   var scf = SocialCalc.Formula;\n   var operand_value_and_type = scf.OperandValueAndType;\n   var lookup_result_type = scf.LookupResultType;\n   var typelookupplus = scf.TypeLookupTable.plus;\n\n   var PushOperand = function(t, v) {operand.push({type: t, value: v});};\n\n   lookupvalue = operand_value_and_type(sheet, foperand);\n   if (typeof lookupvalue.value == \"string\") {\n      lookupvalue.value = lookupvalue.value.toLowerCase();\n      }\n\n   range = scf.TopOfStackValueAndType(sheet, foperand);\n\n   rangelookup = 1; // default to true or 1\n   if (fname == \"MATCH\") {\n      if (foperand.length) {\n         rangelookup = scf.OperandAsNumber(sheet, foperand);\n         if (rangelookup.type.charAt(0) != \"n\") {\n            PushOperand(\"e#VALUE!\", 0);\n            return;\n            }\n         if (foperand.length) {\n            scf.FunctionArgsError(fname, operand);\n            return 0;\n            }\n         rangelookup = rangelookup.value - 0;\n         }\n      }\n   else {\n      offsetvalue = scf.OperandAsNumber(sheet, foperand);\n      if (offsetvalue.type.charAt(0) != \"n\") {\n         PushOperand(\"e#VALUE!\", 0);\n         return;\n         }\n      offsetvalue = Math.floor(offsetvalue.value);\n      if (foperand.length) {\n         rangelookup = scf.OperandAsNumber(sheet, foperand);\n         if (rangelookup.type.charAt(0) != \"n\") {\n            PushOperand(\"e#VALUE!\", 0);\n            return;\n            }\n         if (foperand.length) {\n            scf.FunctionArgsError(fname, operand);\n            return 0;\n            }\n         rangelookup = rangelookup.value ? 1 : 0; // convert to 1 or 0\n         }\n      }\n   lookupvalue.type = lookupvalue.type.charAt(0); // only deal with general type\n   if (lookupvalue.type == \"n\") { // if number, make sure a number\n      lookupvalue.value = lookupvalue.value - 0;\n      }\n\n   if (range.type != \"range\") {\n      scf.FunctionArgsError(fname, operand);\n      return 0;\n      }\n\n   rangeinfo = scf.DecodeRangeParts(sheet, range.value, range.type);\n   if (!rangeinfo) {\n      PushOperand(\"e#REF!\", 0);\n      return;\n      }\n\n   c = 0;\n   r = 0;\n   cincr = 0;\n   rincr = 0;\n   if (fname == \"HLOOKUP\") {\n      cincr = 1;\n      if (offsetvalue > rangeinfo.nrows) {\n         PushOperand(\"e#REF!\", 0);\n         return;\n         }\n      }\n   else if (fname == \"VLOOKUP\") {\n      rincr = 1;\n      if (offsetvalue > rangeinfo.ncols) {\n         PushOperand(\"e#REF!\", 0);\n         return;\n         }\n      }\n   else if (fname == \"MATCH\") {\n      if (rangeinfo.ncols > 1) {\n         if (rangeinfo.nrows > 1) {\n            PushOperand(\"e#N/A\", 0);\n            return;\n            }\n         cincr = 1;\n         }\n      else {\n         rincr = 1;\n         }\n      }\n   else {\n      scf.FunctionArgsError(fname, operand);\n      return 0;\n      }\n   if (offsetvalue < 1 && fname != \"MATCH\") {\n      PushOperand(\"e#VALUE!\", 0);\n      return 0;\n      }\n\n   previousOK; // if 1, previous test was <. If 2, also this one wasn't\n\n   while (1) {\n      cr = SocialCalc.crToCoord(rangeinfo.col1num + c, rangeinfo.row1num + r);\n      cell = rangeinfo.sheetdata.GetAssuredCell(cr);\n      value = cell.datavalue;\n      valuetype = cell.valuetype ? cell.valuetype.charAt(0) : \"b\"; // only deal with general types\n      if (valuetype == \"n\") {\n         value = value - 0; // make sure number\n         }\n      if (rangelookup) { // rangelookup type 1 or -1: look for within brackets for matches\n         if (lookupvalue.type == \"n\" && valuetype == \"n\") {\n            if (lookupvalue.value == value) { // match\n               break;\n               }\n            if ((rangelookup > 0 && lookupvalue.value > value)\n                || (rangelookup < 0 && lookupvalue.value < value)) { // possible match: wait and see\n               previousOK = 1;\n               csave = c; // remember col and row of last OK\n               rsave = r;\n               }\n            else if (previousOK) { // last one was OK, this one isn't\n               previousOK = 2;\n               break;\n               }\n            }\n\n         else if (lookupvalue.type == \"t\" && valuetype == \"t\") {\n            value = typeof value == \"string\" ? value.toLowerCase() : \"\";\n            if (lookupvalue.value == value) { // match\n               break;\n               }\n            if ((rangelookup > 0 && lookupvalue.value > value)\n                || (rangelookup < 0 && lookupvalue.value < value)) { // possible match: wait and see\n               previousOK = 1;\n               csave = c;\n               rsave = r;\n               }\n            else if (previousOK) { // last one was OK, this one isn't\n               previousOK = 2;\n               break;\n               }\n            }\n         }\n      else { // exact value matches\n         if (lookupvalue.type == \"n\" && valuetype == \"n\") {\n            if (lookupvalue.value == value) { // match\n               break;\n               }\n            }\n         else if (lookupvalue.type == \"t\" && valuetype == \"t\") {\n            value = typeof value == \"string\" ? value.toLowerCase() : \"\";\n            if (lookupvalue.value == value) { // match\n               break;\n               }\n            }\n         }\n\n      r += rincr;\n      c += cincr;\n      if (r >= rangeinfo.nrows || c >= rangeinfo.ncols) { // end of range to check, no exact match\n         if (previousOK) { // at least one could have been OK\n            previousOK = 2;\n            break;\n            }\n         PushOperand(\"e#N/A\", 0);\n         return;\n         }\n      }\n\n   if (previousOK == 2) { // back to last OK\n      r = rsave;\n      c = csave;\n      }\n\n   if (fname == \"MATCH\") {\n      value = c + r + 1; // only one may be <> 0\n      valuetype = \"n\";\n      }\n   else {\n      cr = SocialCalc.crToCoord(rangeinfo.col1num+c+(fname == \"VLOOKUP\" ? offsetvalue-1 : 0), rangeinfo.row1num+r+(fname == \"HLOOKUP\" ? offsetvalue-1 : 0));\n      cell = rangeinfo.sheetdata.GetAssuredCell(cr);\n      value = cell.datavalue;\n      valuetype = cell.valuetype;\n      }\n   PushOperand(valuetype, value);\n\n   return;\n\n   }\n\nSocialCalc.Formula.FunctionList[\"HLOOKUP\"] = [SocialCalc.Formula.LookupFunctions, -3, \"hlookup\", \"\", \"lookup\"];\nSocialCalc.Formula.FunctionList[\"MATCH\"] = [SocialCalc.Formula.LookupFunctions, -2, \"match\", \"\", \"lookup\"];\nSocialCalc.Formula.FunctionList[\"VLOOKUP\"] = [SocialCalc.Formula.LookupFunctions, -3, \"vlookup\", \"\", \"lookup\"];\n\n/*\n#\n# INDEX(range, rownum, colnum)\n#\n*/\n\nSocialCalc.Formula.IndexFunction = function(fname, operand, foperand, sheet) {\n\n   var range, sheetname, indexinfo, rowindex, colindex, result, resulttype;\n\n   var scf = SocialCalc.Formula;\n\n   var PushOperand = function(t, v) {operand.push({type: t, value: v});};\n\n   range = scf.TopOfStackValueAndType(sheet, foperand); // get range\n   if (range.type != \"range\") {\n      scf.FunctionArgsError(fname, operand);\n      return 0;\n      }\n   indexinfo = scf.DecodeRangeParts(sheet, range.value, range.type);\n   if (indexinfo.sheetname) {\n      sheetname = \"!\" + indexinfo.sheetname;\n      }\n   else {\n      sheetname = \"\";\n      }\n\n   rowindex = {value:0};\n   colindex = {value:0};\n\n   if (foperand.length) { // look for row number\n      rowindex = scf.OperandAsNumber(sheet, foperand);\n      if (rowindex.type.charAt(0) != \"n\" || rowindex.value < 0) {\n         PushOperand(\"e#VALUE!\", 0);\n         return;\n         }\n      if (foperand.length) { // look for col number\n         colindex = scf.OperandAsNumber(sheet, foperand);\n         if (colindex.type.charAt(0) != \"n\" || colindex.value < 0) {\n            PushOperand(\"e#VALUE!\", 0);\n            return;\n            }\n         if (foperand.length) {\n            scf.FunctionArgsError(fname, operand);\n            return 0;\n            }\n         }\n      else { // col number missing\n         if (indexinfo.nrows == 1) { // if only one row, then rowindex is really colindex\n            colindex.value = rowindex.value;\n            rowindex.value = 0;\n            }\n         }\n      }\n\n   if (rowindex.value > indexinfo.nrows || colindex.value > indexinfo.ncols) {\n      PushOperand(\"e#REF!\", 0);\n      return;\n      }\n\n   if (rowindex.value == 0) {\n      if (colindex.value == 0) {\n         if (indexinfo.nrows == 1 && indexinfo.ncols == 1) {\n            result = SocialCalc.crToCoord(indexinfo.col1num, indexinfo.row1num) + sheetname;\n            resulttype = \"coord\";\n            }\n         else {\n            result = SocialCalc.crToCoord(indexinfo.col1num, indexinfo.row1num) + sheetname + \"|\" +\n                     SocialCalc.crToCoord(indexinfo.col1num+indexinfo.ncols-1, indexinfo.row1num+indexinfo.nrows-1) + \n                     \"|\";\n            resulttype = \"range\";\n            }\n         }\n      else {\n         if (indexinfo.nrows == 1) {\n            result = SocialCalc.crToCoord(indexinfo.col1num+colindex.value-1, indexinfo.row1num) + sheetname;\n            resulttype = \"coord\";\n            }\n         else {\n            result = SocialCalc.crToCoord(indexinfo.col1num+colindex.value-1, indexinfo.row1num) + sheetname + \"|\" +\n                     SocialCalc.crToCoord(indexinfo.col1num+colindex.value-1, indexinfo.row1num+indexinfo.nrows-1) +\n                     \"|\";\n            resulttype = \"range\";\n            }\n         }\n      }\n   else {\n      if (colindex.value == 0) {\n         if (indexinfo.ncols == 1) {\n            result = SocialCalc.crToCoord(indexinfo.col1num, indexinfo.row1num+rowindex.value-1) + sheetname;\n            resulttype = \"coord\";\n            }\n         else {\n            result = SocialCalc.crToCoord(indexinfo.col1num, indexinfo.row1num+rowindex.value-1) + sheetname + \"|\" +\n                     SocialCalc.crToCoord(indexinfo.col1num+indexinfo.ncols-1, indexinfo.row1num+rowindex.value-1) +\n                     \"|\";\n            resulttype = \"range\";\n            }\n         }\n      else {\n         result = SocialCalc.crToCoord(indexinfo.col1num+colindex.value-1, indexinfo.row1num+rowindex.value-1) + sheetname;\n         resulttype = \"coord\";\n         }\n      }\n\n   PushOperand(resulttype, result);\n\n   return;\n\n   }\n\nSocialCalc.Formula.FunctionList[\"INDEX\"] = [SocialCalc.Formula.IndexFunction, -1, \"index\", \"\", \"lookup\"];\n\n/*\n#\n# COUNTIF(c1:c2,\"criteria\")\n# SUMIF(c1:c2,\"criteria\",[range2])\n#\n*/\n\nSocialCalc.Formula.CountifSumifFunctions = function(fname, operand, foperand, sheet) {\n\n   var range, criteria, sumrange, f2operand, result, resulttype, value1, value2;\n   var sum = 0;\n   var resulttypesum = \"\";\n   var count = 0;\n\n   var scf = SocialCalc.Formula;\n   var operand_value_and_type = scf.OperandValueAndType;\n   var lookup_result_type = scf.LookupResultType;\n   var typelookupplus = scf.TypeLookupTable.plus;\n\n   var PushOperand = function(t, v) {operand.push({type: t, value: v});};\n\n   range = scf.TopOfStackValueAndType(sheet, foperand); // get range or coord\n   criteria = scf.OperandAsText(sheet, foperand); // get criteria\n   if (fname == \"SUMIF\") {\n      if (foperand.length == 1) { // three arg form of SUMIF\n         sumrange = scf.TopOfStackValueAndType(sheet, foperand);\n         }\n      else if (foperand.length == 0) { // two arg form\n         sumrange = {value: range.value, type: range.type};\n         }\n      else {\n         scf.FunctionArgsError(fname, operand);\n         return 0;\n         }\n      }\n   else {\n      sumrange = {value: range.value, type: range.type};\n      }\n\n   if (criteria.type.charAt(0) == \"n\") {\n      criteria.value = criteria.value + \"\"; // make text\n      }\n   else if (criteria.type.charAt(0) == \"e\") { // error\n      criteria.value = null;\n      }\n   else if (criteria.type.charAt(0) == \"b\") { // blank here is undefined\n      criteria.value = null;\n      }\n\n   if (range.type != \"coord\" && range.type != \"range\") {\n      scf.FunctionArgsError(fname, operand);\n      return 0;\n      }\n\n   if (fname == \"SUMIF\" && sumrange.type != \"coord\" && sumrange.type != \"range\") {\n      scf.FunctionArgsError(fname, operand);\n      return 0;\n      }\n\n   foperand.push(range);\n   f2operand = []; // to allow for 3 arg form\n   f2operand.push(sumrange);\n\n   while (foperand.length) {\n      value1 = operand_value_and_type(sheet, foperand);\n      value2 = operand_value_and_type(sheet, f2operand);\n      if (!scf.TestCriteria(value1.value, value1.type, criteria.value)) {\n         continue;\n         }\n\n      count += 1;\n\n      if (value2.type.charAt(0) == \"n\") {\n         sum += value2.value-0;\n         resulttypesum = lookup_result_type(value2.type, resulttypesum || value2.type, typelookupplus);\n         }\n      else if (value2.type.charAt(0) == \"e\" && resulttypesum.charAt(0) != \"e\") {\n         resulttypesum = value2.type;\n         }\n      }\n\n   resulttypesum = resulttypesum || \"n\";\n\n   if (fname == \"SUMIF\") {\n      PushOperand(resulttypesum, sum);\n      }\n   else if (fname == \"COUNTIF\") {\n      PushOperand(\"n\", count);\n      }\n\n   return;\n\n   }\n\nSocialCalc.Formula.FunctionList[\"COUNTIF\"] = [SocialCalc.Formula.CountifSumifFunctions, 2, \"rangec\", \"\", \"stat\"];\nSocialCalc.Formula.FunctionList[\"SUMIF\"] = [SocialCalc.Formula.CountifSumifFunctions, -2, \"sumif\", \"\", \"stat\"];\n\n/*\n#\n# SUMIFS(c1:c2, c3:c4,\"criteria\", [c5:c6,\"criteria\", ...])\n#\n*/\n\nSocialCalc.Formula.SumifsFunction = function(fname, operand, foperand, sheet) {\n   var range, criteria, sumrange, f2operand, result, resulttype, value1, value2;\n   var sum = 0;\n   var resulttypesum = \"\";\n   var count = 0;\n\n   var scf = SocialCalc.Formula;\n   var operand_value_and_type = scf.OperandValueAndType;\n   var lookup_result_type = scf.LookupResultType;\n   var typelookupplus = scf.TypeLookupTable.plus;\n\n   var PushOperand = function(t, v) {operand.push({type: t, value: v});};\n\n   sumrange = scf.TopOfStackValueAndType(sheet, foperand);\n   if (sumrange.type != \"coord\" && sumrange.type != \"range\") {\n      scf.FunctionArgsError(fname, operand);\n      return 0;\n      }\n\n   var ranges = [], criterias = [];\n   while (foperand.length) {\n      range = scf.TopOfStackValueAndType(sheet, foperand); // get range or coord\n      criteria = scf.OperandAsText(sheet, foperand); // get criteria\n      if (criteria.type.charAt(0) == \"n\") {\n         criteria.value = criteria.value + \"\"; // make text\n         }\n      else if (criteria.type.charAt(0) == \"e\") { // error\n         criteria.value = null;\n         }\n      else if (criteria.type.charAt(0) == \"b\") { // blank here is undefined\n         criteria.value = null;\n         }\n      if (range.type != \"coord\" && range.type != \"range\") {\n         scf.FunctionArgsError(fname, operand);\n         return 0;\n         }\n      ranges.push([range]);\n      criterias.push(criteria);\n      }\n\n      f2operand = [];\n      f2operand.push(sumrange);\n\n   while (f2operand.length) {\n      value2 = operand_value_and_type(sheet, f2operand);\n\n      var all_good = true;\n      for (var i=0; i < ranges.length; i++) {\n         value1 = operand_value_and_type(sheet, ranges[i]); // get next condition - note this function increases the test range index\n         if (!all_good) { continue; }  // skip test, but move to next cell in test range\n         if (!scf.TestCriteria(value1.value, value1.type, criterias[i].value)) {\n            all_good = false;\n            }\n         }\n      if (!all_good) { continue; }\n\n      if (value2.type.charAt(0) == \"n\") {\n         sum += value2.value-0;\n         resulttypesum = lookup_result_type(value2.type, resulttypesum || value2.type, typelookupplus);\n         }\n      else if (value2.type.charAt(0) == \"e\" && resulttypesum.charAt(0) != \"e\") {\n         resulttypesum = value2.type;\n         }\n      }\n\n   resulttypesum = resulttypesum || \"n\";\n   PushOperand(resulttypesum, sum);\n   return;\n\n   }\n\n\nSocialCalc.Formula.FunctionList[\"SUMIFS\"] = [SocialCalc.Formula.SumifsFunction, -3, \"sum_range, criteria_range1, criteria1, [criteria_range2, criteria2, ... criteria_range_n, criteria_n]\", \"\", \"stat\"];\n\n/*\n#\n# IF(cond,truevalue,falsevalue)\n#\n*/\n\nSocialCalc.Formula.IfFunction = function(fname, operand, foperand, sheet) {\n\n   var cond, t;\n\n   var scf = SocialCalc.Formula;\n\n   cond = SocialCalc.Formula.OperandValueAndType(sheet, foperand);\n   t = cond.type.charAt(0);\n   if (t != \"n\" && t != \"b\") {\n      operand.push({type: \"e#VALUE!\", value: 0});\n      return;\n      }\n\n   var op1, op2;\n\n   op1 = foperand.pop();\n   if (foperand.length == 1) {\n      op2 = foperand.pop();\n      }\n   else if (foperand.length == 0) {\n      op2 = {type: \"n\", value: 0};\n      }\n   else {\n      scf.FunctionArgsError(fname, operand);\n      return;\n   }\n\n   operand.push(cond.value ? op1 : op2);\n\n   }\n\n// Add to function list\nSocialCalc.Formula.FunctionList[\"IF\"] = [SocialCalc.Formula.IfFunction, -2, \"iffunc\", \"\", \"test\"];\n\n/*\n#\n# DATE(year,month,day)\n#\n*/\n\nSocialCalc.Formula.DateFunction = function(fname, operand, foperand, sheet) {\n\n   var scf = SocialCalc.Formula;\n   var result = 0;\n   var year = scf.OperandAsNumber(sheet, foperand);\n   var month = scf.OperandAsNumber(sheet, foperand);\n   var day = scf.OperandAsNumber(sheet, foperand);\n   var resulttype = scf.LookupResultType(year.type, month.type, scf.TypeLookupTable.twoargnumeric);\n   resulttype = scf.LookupResultType(resulttype, day.type, scf.TypeLookupTable.twoargnumeric);\n   if (resulttype.charAt(0) == \"n\") {\n      result = SocialCalc.FormatNumber.convert_date_gregorian_to_julian(\n                  Math.floor(year.value), Math.floor(month.value), Math.floor(day.value)\n                  ) - SocialCalc.FormatNumber.datevalues.julian_offset;\n      resulttype = \"nd\";\n      }\n   scf.PushOperand(operand, resulttype, result);\n   return;\n\n   }\n\nSocialCalc.Formula.FunctionList[\"DATE\"] = [SocialCalc.Formula.DateFunction, 3, \"date\", \"\", \"datetime\"];\n\n/*\n#\n# TIME(hour,minute,second)\n#\n*/\n\nSocialCalc.Formula.TimeFunction = function(fname, operand, foperand, sheet) {\n\n   var scf = SocialCalc.Formula;\n   var result = 0;\n   var hours = scf.OperandAsNumber(sheet, foperand);\n   var minutes = scf.OperandAsNumber(sheet, foperand);\n   var seconds = scf.OperandAsNumber(sheet, foperand);\n   var resulttype = scf.LookupResultType(hours.type, minutes.type, scf.TypeLookupTable.twoargnumeric);\n   resulttype = scf.LookupResultType(resulttype, seconds.type, scf.TypeLookupTable.twoargnumeric);\n   if (resulttype.charAt(0) == \"n\") {\n      result = ((hours.value * 60 * 60) + (minutes.value * 60) + seconds.value) / (24*60*60);\n      resulttype = \"nt\";\n      }\n   scf.PushOperand(operand, resulttype, result);\n   return;\n\n   }\n\nSocialCalc.Formula.FunctionList[\"TIME\"] = [SocialCalc.Formula.TimeFunction, 3, \"hms\", \"\", \"datetime\"];\n\n/*\n#\n# DAY(date)\n# MONTH(date)\n# YEAR(date)\n# WEEKDAY(date, [type])\n#\n*/\n\nSocialCalc.Formula.DMYFunctions = function(fname, operand, foperand, sheet) {\n\n   var ymd, dtype, doffset;\n   var scf = SocialCalc.Formula;\n   var result = 0;\n\n   var datevalue = scf.OperandAsNumber(sheet, foperand);\n   var resulttype = scf.LookupResultType(datevalue.type, datevalue.type, scf.TypeLookupTable.oneargnumeric);\n\n   if (resulttype.charAt(0) == \"n\") {\n      ymd = SocialCalc.FormatNumber.convert_date_julian_to_gregorian(\n               Math.floor(datevalue.value + SocialCalc.FormatNumber.datevalues.julian_offset));\n      switch (fname) {\n         case \"DAY\":\n            result = ymd.day;\n            break;\n\n         case \"MONTH\":\n            result = ymd.month;\n            break;\n\n         case \"YEAR\":\n            result = ymd.year;\n            break;\n\n         case \"WEEKDAY\":\n            dtype = {value: 1};\n            if (foperand.length) { // get type if present\n               dtype = scf.OperandAsNumber(sheet, foperand);\n               if (dtype.type.charAt(0) != \"n\" || dtype.value < 1 || dtype.value > 3) {\n                  scf.PushOperand(operand, \"e#VALUE!\", 0);\n                  return;\n                  }\n               if (foperand.length) { // extra args\n                  scf.FunctionArgsError(fname, operand);\n                  return;\n                  }\n               }\n            doffset = 6;\n            if (dtype.value > 1) {\n               doffset -= 1;\n               }\n            result = Math.floor(datevalue.value+doffset) % 7 + (dtype.value < 3 ? 1 : 0);\n            break;\n         }\n      }\n\n   scf.PushOperand(operand, resulttype, result);\n   return;\n\n   }\n\nSocialCalc.Formula.FunctionList[\"DAY\"] = [SocialCalc.Formula.DMYFunctions, 1, \"v\", \"\", \"datetime\"];\nSocialCalc.Formula.FunctionList[\"MONTH\"] = [SocialCalc.Formula.DMYFunctions, 1, \"v\", \"\", \"datetime\"];\nSocialCalc.Formula.FunctionList[\"YEAR\"] = [SocialCalc.Formula.DMYFunctions, 1, \"v\", \"\", \"datetime\"];\nSocialCalc.Formula.FunctionList[\"WEEKDAY\"] = [SocialCalc.Formula.DMYFunctions, -1, \"weekday\", \"\", \"datetime\"];\n\n/*\n#\n# HOUR(datetime)\n# MINUTE(datetime)\n# SECOND(datetime)\n#\n*/\n\nSocialCalc.Formula.HMSFunctions = function(fname, operand, foperand, sheet) {\n\n   var hours, minutes, seconds, fraction;\n   var scf = SocialCalc.Formula;\n   var result = 0;\n\n   var datetime = scf.OperandAsNumber(sheet, foperand);\n   var resulttype = scf.LookupResultType(datetime.type, datetime.type, scf.TypeLookupTable.oneargnumeric);\n\n   if (resulttype.charAt(0) == \"n\") {\n      if (datetime.value < 0) {\n         scf.PushOperand(operand, \"e#NUM!\", 0); // must be non-negative\n         return;\n         }\n      fraction = datetime.value - Math.floor(datetime.value); // fraction of a day\n      fraction *= 24;\n      hours = Math.floor(fraction);\n      fraction -= Math.floor(fraction);\n      fraction *= 60;\n      minutes = Math.floor(fraction);\n      fraction -= Math.floor(fraction);\n      fraction *= 60;\n      seconds = Math.floor(fraction + (datetime.value >= 0 ? 0.5: -0.5));\n      if (fname == \"HOUR\") {\n         result = hours;\n         }\n      else if (fname == \"MINUTE\") {\n         result = minutes;\n         }\n      else if (fname == \"SECOND\") {\n         result = seconds;\n         }\n      }\n\n   scf.PushOperand(operand, resulttype, result);\n   return;\n\n   }\n\nSocialCalc.Formula.FunctionList[\"HOUR\"] = [SocialCalc.Formula.HMSFunctions, 1, \"v\", \"\", \"datetime\"];\nSocialCalc.Formula.FunctionList[\"MINUTE\"] = [SocialCalc.Formula.HMSFunctions, 1, \"v\", \"\", \"datetime\"];\nSocialCalc.Formula.FunctionList[\"SECOND\"] = [SocialCalc.Formula.HMSFunctions, 1, \"v\", \"\", \"datetime\"];\n\n/*\n#\n# EXACT(v1,v2)\n#\n*/\n\nSocialCalc.Formula.ExactFunction = function(fname, operand, foperand, sheet) {\n\n   var scf = SocialCalc.Formula;\n   var result = 0;\n   var resulttype = \"nl\";\n\n   var value1 = scf.OperandValueAndType(sheet, foperand);\n   var v1type = value1.type.charAt(0);\n   var value2 = scf.OperandValueAndType(sheet, foperand);\n   var v2type = value2.type.charAt(0);\n\n   if (v1type == \"t\") {\n      if (v2type == \"t\") {\n         result = value1.value == value2.value ? 1 : 0;\n         }\n      else if (v2type == \"b\") {\n         result = value1.value.length ? 0 : 1;\n         }\n      else if (v2type == \"n\") {\n         result = value1.value == value2.value+\"\" ? 1 : 0;\n         }\n      else if (v2type == \"e\") {\n         result = value2.value;\n         resulttype = value2.type;\n         }\n      else {\n         result = 0;\n         }\n      }\n   else if (v1type == \"n\") {\n      if (v2type == \"n\") {\n         result = value1.value-0 == value2.value-0 ? 1 : 0;\n         }\n      else if (v2type == \"b\") {\n         result = 0;\n         }\n      else if (v2type == \"t\") {\n         result = value1.value+\"\" == value2.value ? 1 : 0;\n         }\n      else if (v2type == \"e\") {\n         result = value2.value;\n         resulttype = value2.type;\n         }\n      else {\n         result = 0;\n         }\n      }\n   else if (v1type == \"b\") {\n      if (v2type == \"t\") {\n         result = value2.value.length ? 0 : 1;\n         }\n      else if (v2type == \"b\") {\n         result = 1;\n         }\n      else if (v2type == \"n\") {\n         result = 0;\n         }\n      else if (v2type == \"e\") {\n         result = value2.value;\n         resulttype = value2.type;\n         }\n      else {\n         result = 0;\n         }\n      }\n   else if (v1type == \"e\") {\n      result = value1.value;\n      resulttype = value1.type;\n      }\n\n   scf.PushOperand(operand, resulttype, result);\n   return;\n\n   }\n\nSocialCalc.Formula.FunctionList[\"EXACT\"] = [SocialCalc.Formula.ExactFunction, 2, \"\", \"\", \"text\"];\n\n/*\n#\n# FIND(key,string,[start])\n# LEFT(string,[length])\n# LEN(string)\n# LOWER(string)\n# MID(string,start,length)\n# PROPER(string)\n# REPLACE(string,start,length,new)\n# REPT(string,count)\n# RIGHT(string,[length])\n# SUBSTITUTE(string,old,new,[which])\n# TRIM(string)\n# HEXCODE(string)\n# UPPER(string)\n#\n*/\n\n// SocialCalc.Formula.ArgList has an array for each function, one entry for each possible arg (up to max).\n// Min args are specified in SocialCalc.Formula.FunctionList.\n// If array element is 1 then it's a text argument, if it's 0 then it's numeric, if -1 then just get whatever's there\n// Text values are manipulated as UTF-8, converting from and back to byte strings\n\nSocialCalc.Formula.ArgList = {\n                FIND: [1, 1, 0],\n                LEFT: [1, 0],\n                LEN: [1],\n                LOWER: [1],\n                MID: [1, 0, 0],\n                PROPER: [1],\n                REPLACE: [1, 0, 0, 1],\n                REPT: [1, 0],\n                RIGHT: [1, 0],\n                SUBSTITUTE: [1, 1, 1, 0],\n                TRIM: [1],\n                HEXCODE: [1],\n                UPPER: [1]\n               };\n\nSocialCalc.Formula.StringFunctions = function(fname, operand, foperand, sheet) {\n\n   var i, value, offset, len, start, count;\n   var scf = SocialCalc.Formula;\n   var result = 0;\n   var resulttype = \"e#VALUE!\";\n\n   var numargs = foperand.length;\n   var argdef = scf.ArgList[fname];\n   var operand_value = [];\n   var operand_type = [];\n\n   for (i=1; i <= numargs; i++) { // go through each arg, get value and type, and check for errors\n      if (i > argdef.length) { // too many args\n         scf.FunctionArgsError(fname, operand);\n         return;\n         }\n      if (argdef[i-1] == 0) {\n         value = scf.OperandAsNumber(sheet, foperand);\n         }\n      else if (argdef[i-1] == 1) {\n         value = scf.OperandAsText(sheet, foperand);\n         }\n      else if (argdef[i-1] == -1) {\n         value = scf.OperandValueAndType(sheet, foperand);\n         }\n      operand_value[i] = value.value;\n      operand_type[i] = value.type;\n      if (value.type.charAt(0) == \"e\") {\n         scf.PushOperand(operand, value.type, result);\n         return;\n         }\n      }\n\n   switch (fname) {\n      case \"FIND\":\n         offset = operand_type[3] ? operand_value[3]-1 : 0;\n         if (offset < 0) {\n            result = \"Start is before string\"; // !! not displayed, no need to translate\n            }\n         else {\n            result = operand_value[2].indexOf(operand_value[1], offset); // (null string matches first char)\n            if (result >= 0) {\n               result += 1;\n               resulttype = \"n\";\n               }\n            else {\n               result = \"Not found\"; // !! not displayed, error is e#VALUE!\n               }\n            }\n         break;\n\n      case \"LEFT\":\n         len = operand_type[2] ? operand_value[2]-0 : 1;\n         if (len < 0) {\n            result = \"Negative length\";\n            }\n         else {\n            result = operand_value[1].substring(0, len);\n            resulttype = \"t\";\n            }\n         break;\n\n      case \"LEN\":\n         result = operand_value[1].length;\n         resulttype = \"n\";\n         break;\n\n      case \"LOWER\":\n         result = operand_value[1].toLowerCase();\n         resulttype = \"t\";\n         break;\n\n      case \"MID\":\n         start = operand_value[2]-0;\n         len = operand_value[3]-0;\n         if (len < 1 || start < 1) {\n            result = \"Bad arguments\";\n            }\n         else {\n            result = operand_value[1].substring(start-1, start+len-1);\n            resulttype = \"t\";\n            }\n         break;\n\n      case \"PROPER\":\n         result = operand_value[1].replace(/\\b\\w+\\b/g, function(word) {\n                     return word.substring(0,1).toUpperCase() + \n                        word.substring(1);\n                     }); // uppercase first character of words (see JavaScript, Flanagan, 5th edition, page 704)\n         resulttype = \"t\";\n         break;\n\n      case \"REPLACE\":\n         start = operand_value[2]-0;\n         len = operand_value[3]-0;\n         if (len < 0 || start < 1) {\n            result = \"Bad arguments\";\n            }\n         else {\n            result = operand_value[1].substring(0, start-1) + operand_value[4] + \n               operand_value[1].substring(start-1+len);\n            resulttype = \"t\";\n            }\n         break;\n\n      case \"REPT\":\n         count = operand_value[2]-0;\n         if (count < 0) {\n            result = \"Negative count\";\n            }\n         else {\n            result = \"\";\n            for (; count > 0; count--) {\n               result += operand_value[1];\n               }\n            resulttype = \"t\";\n            }\n         break;\n\n      case \"RIGHT\":\n         len = operand_type[2] ? operand_value[2]-0 : 1;\n         if (len < 0) {\n            result = \"Negative length\";\n            }\n         else {\n            result = operand_value[1].slice(-len);\n            resulttype = \"t\";\n            }\n         break;\n\n      case \"SUBSTITUTE\":\n         fulltext = operand_value[1];\n         oldtext = operand_value[2];\n         newtext = operand_value[3];\n         if (operand_value[4] != null) {\n            which = operand_value[4]-0;\n            if (which <= 0) {\n               result = \"Non-positive instance number\";\n               break;\n               }\n            }\n         else {\n            which = 0;\n            }\n         count = 0;\n         oldpos = 0;\n         result = \"\";\n         while (true) {\n            pos = fulltext.indexOf(oldtext, oldpos);\n            if (pos >= 0) {\n               count++; //!!!!!! old test just in case: if (count>1000) {alert(pos); break;}\n               result += fulltext.substring(oldpos, pos);\n               if (which==0) {\n                  result += newtext; // substitute\n                  }\n               else if (which==count) {\n                  result += newtext + fulltext.substring(pos+oldtext.length);\n                  break;\n                  }\n               else {\n                  result += oldtext; // leave as was\n                  }\n               oldpos = pos + oldtext.length;\n               }\n            else { // no more\n               result += fulltext.substring(oldpos);\n               break;\n               }\n            }\n         resulttype = \"t\";\n         break;\n\n      case \"TRIM\":\n         result = operand_value[1];\n         result = result.replace(/^ */, \"\");\n         result = result.replace(/ *$/, \"\");\n         result = result.replace(/ +/g, \" \");\n         resulttype = \"t\";\n         break;\n\n      case \"HEXCODE\":\n         result = String(operand_value[1]);\n         var code = result.charCodeAt(0);\n         if (0xD800 <= code && code <= 0xDBFF) {\n             var next = result.charCodeAt(1);\n             if (0xDC00 <= next && next <= 0xDFFF) {\n                 code = ((code - 0xD800) * 0x400) + (next - 0xDC00) + 0x10000;\n             }\n         }\n         result = code.toString(16).toUpperCase();\n         resulttype = \"t\";\n         break;\n\n      case \"UPPER\":\n         result = operand_value[1].toUpperCase();\n         resulttype = \"t\";\n         break;\n\n      }\n\n   scf.PushOperand(operand, resulttype, result);\n   return;\n\n   }\n\nSocialCalc.Formula.FunctionList[\"FIND\"] = [SocialCalc.Formula.StringFunctions, -2, \"find\", \"\", \"text\"];\nSocialCalc.Formula.FunctionList[\"LEFT\"] = [SocialCalc.Formula.StringFunctions, -2, \"tc\", \"\", \"text\"];\nSocialCalc.Formula.FunctionList[\"LEN\"] = [SocialCalc.Formula.StringFunctions, 1, \"txt\", \"\", \"text\"];\nSocialCalc.Formula.FunctionList[\"LOWER\"] = [SocialCalc.Formula.StringFunctions, 1, \"txt\", \"\", \"text\"];\nSocialCalc.Formula.FunctionList[\"MID\"] = [SocialCalc.Formula.StringFunctions, 3, \"mid\", \"\", \"text\"];\nSocialCalc.Formula.FunctionList[\"PROPER\"] = [SocialCalc.Formula.StringFunctions, 1, \"v\", \"\", \"text\"];\nSocialCalc.Formula.FunctionList[\"REPLACE\"] = [SocialCalc.Formula.StringFunctions, 4, \"replace\", \"\", \"text\"];\nSocialCalc.Formula.FunctionList[\"REPT\"] = [SocialCalc.Formula.StringFunctions, 2, \"tc\", \"\", \"text\"];\nSocialCalc.Formula.FunctionList[\"RIGHT\"] = [SocialCalc.Formula.StringFunctions, -1, \"tc\", \"\", \"text\"];\nSocialCalc.Formula.FunctionList[\"SUBSTITUTE\"] = [SocialCalc.Formula.StringFunctions, -3, \"subs\", \"\", \"text\"];\nSocialCalc.Formula.FunctionList[\"TRIM\"] = [SocialCalc.Formula.StringFunctions, 1, \"v\", \"\", \"text\"];\nSocialCalc.Formula.FunctionList[\"HEXCODE\"] = [SocialCalc.Formula.StringFunctions, 1, \"v\", \"\", \"text\"];\nSocialCalc.Formula.FunctionList[\"UPPER\"] = [SocialCalc.Formula.StringFunctions, 1, \"v\", \"\", \"text\"];\n\n/*\n#\n# is_functions:\n#\n# ISBLANK(value)\n# ISERR(value)\n# ISERROR(value)\n# ISLOGICAL(value)\n# ISNA(value)\n# ISNONTEXT(value)\n# ISNUMBER(value)\n# ISTEXT(value)\n#\n*/\n\nSocialCalc.Formula.IsFunctions = function(fname, operand, foperand, sheet) {\n\n   var scf = SocialCalc.Formula;\n   var result = 0;\n   var resulttype = \"nl\";\n\n   var value = scf.OperandValueAndType(sheet, foperand);\n   var t = value.type.charAt(0);\n\n   switch (fname) {\n\n      case \"ISBLANK\":\n         result = value.type == \"b\" ? 1 : 0;\n         break;\n\n      case \"ISERR\":\n         result = t == \"e\" ? (value.type == \"e#N/A\" ? 0 : 1) : 0;\n         break;\n\n      case \"ISERROR\":\n         result = t == \"e\" ? 1 : 0;\n         break;\n\n      case \"ISLOGICAL\":\n         result = value.type == \"nl\" ? 1 : 0;\n         break;\n\n      case \"ISNA\":\n         result = value.type == \"e#N/A\" ? 1 : 0;\n         break;\n\n      case \"ISNONTEXT\":\n         result = t == \"t\" ? 0 : 1;\n         break;\n\n      case \"ISNUMBER\":\n         result = t == \"n\" ? 1 : 0;\n         break;\n\n      case \"ISTEXT\":\n         result = t == \"t\" ? 1 : 0;\n         break;\n      }\n\n   scf.PushOperand(operand, resulttype, result);\n\n   return;\n\n   }\n\nSocialCalc.Formula.FunctionList[\"ISBLANK\"] = [SocialCalc.Formula.IsFunctions, 1, \"v\", \"\", \"test\"];\nSocialCalc.Formula.FunctionList[\"ISERR\"] = [SocialCalc.Formula.IsFunctions, 1, \"v\", \"\", \"test\"];\nSocialCalc.Formula.FunctionList[\"ISERROR\"] = [SocialCalc.Formula.IsFunctions, 1, \"v\", \"\", \"test\"];\nSocialCalc.Formula.FunctionList[\"ISLOGICAL\"] = [SocialCalc.Formula.IsFunctions, 1, \"v\", \"\", \"test\"];\nSocialCalc.Formula.FunctionList[\"ISNA\"] = [SocialCalc.Formula.IsFunctions, 1, \"v\", \"\", \"test\"];\nSocialCalc.Formula.FunctionList[\"ISNONTEXT\"] = [SocialCalc.Formula.IsFunctions, 1, \"v\", \"\", \"test\"];\nSocialCalc.Formula.FunctionList[\"ISNUMBER\"] = [SocialCalc.Formula.IsFunctions, 1, \"v\", \"\", \"test\"];\nSocialCalc.Formula.FunctionList[\"ISTEXT\"] = [SocialCalc.Formula.IsFunctions, 1, \"v\", \"\", \"test\"];\n\n/*\n#\n# ntv_functions:\n#\n# N(value)\n# T(value)\n# VALUE(value)\n#\n*/\n\nSocialCalc.Formula.NTVFunctions = function(fname, operand, foperand, sheet) {\n\n   var scf = SocialCalc.Formula;\n   var result = 0;\n   var resulttype = \"e#VALUE!\";\n\n   var value = scf.OperandValueAndType(sheet, foperand);\n   var t = value.type.charAt(0);\n\n   switch (fname) {\n\n      case \"N\":\n         result = t == \"n\" ? value.value-0 : 0;\n         resulttype = \"n\";\n         break;\n\n      case \"T\":\n         result = t == \"t\" ? value.value+\"\" : \"\";\n         resulttype = \"t\";\n         break;\n\n      case \"VALUE\":\n         if (t == \"n\" || t == \"b\") {\n            result = value.value || 0;\n            resulttype = \"n\";\n            }\n         else if (t == \"t\") {\n            value = SocialCalc.DetermineValueType(value.value);\n            if (value.type.charAt(0) != \"n\") {\n               result = 0;\n               resulttype = \"e#VALUE!\";\n               }\n            else {\n               result = value.value-0;\n               resulttype = \"n\";\n               }\n            }\n         break;\n      }\n\n   if (t == \"e\") { // error trumps\n      resulttype = value.type;\n      }\n\n   scf.PushOperand(operand, resulttype, result);\n\n   return;\n\n   }\n\nSocialCalc.Formula.FunctionList[\"N\"] = [SocialCalc.Formula.NTVFunctions, 1, \"v\", \"\", \"math\"];\nSocialCalc.Formula.FunctionList[\"T\"] = [SocialCalc.Formula.NTVFunctions, 1, \"v\", \"\", \"text\"];\nSocialCalc.Formula.FunctionList[\"VALUE\"] = [SocialCalc.Formula.NTVFunctions, 1, \"v\", \"\", \"text\"];\n\n/*\n#\n# ABS(value)\n# ACOS(value)\n# ASIN(value)\n# ATAN(value)\n# COS(value)\n# DEGREES(value)\n# EVEN(value)\n# EXP(value)\n# FACT(value)\n# INT(value)\n# LN(value)\n# LOG10(value)\n# ODD(value)\n# RADIANS(value)\n# SIN(value)\n# SQRT(value)\n# TAN(value)\n#\n*/\n\nSocialCalc.Formula.Math1Functions = function(fname, operand, foperand, sheet) {\n\n   var v1, value, f;\n   var result = {};\n\n   var scf = SocialCalc.Formula;\n\n   v1 = scf.OperandAsNumber(sheet, foperand);\n   value = v1.value;\n   result.type = scf.LookupResultType(v1.type, v1.type, scf.TypeLookupTable.oneargnumeric);\n\n   if (result.type == \"n\") {\n      switch (fname) {\n         case \"ABS\":\n            value = Math.abs(value);\n            break;\n\n         case \"ACOS\":\n            if (value >= -1 && value <= 1) {\n               value = Math.acos(value);\n               }\n            else {\n               result.type = \"e#NUM!\";\n               }\n            break;\n\n         case \"ASIN\":\n            if (value >= -1 && value <= 1) {\n               value = Math.asin(value);\n               }\n            else {\n               result.type = \"e#NUM!\";\n               }\n            break;\n\n         case \"ATAN\":\n            value = Math.atan(value);\n            break;\n\n         case \"COS\":\n            value = Math.cos(value);\n            break;\n\n         case \"DEGREES\":\n            value = value * 180/Math.PI;\n            break;\n\n         case \"EVEN\":\n            value = value < 0 ? -value : value;\n            if (value != Math.floor(value)) {\n               value = Math.floor(value + 1) + (Math.floor(value + 1) % 2);\n               }\n            else { // integer\n               value = value + (value % 2);\n               }\n            if (v1.value < 0) value = -value;\n            break;\n\n         case \"EXP\":\n            value = Math.exp(value);\n            break;\n\n         case \"FACT\":\n            f = 1;\n            value = Math.floor(value);\n            for (;value>0;value--) {\n               f *= value;\n               }\n            value = f;\n            break;\n\n         case \"INT\":\n            value = Math.floor(value); // spreadsheet INT is floor(), not int()\n            break;\n\n         case \"LN\":\n            if (value <= 0) {\n               result.type = \"e#NUM!\";\n               result.error = SocialCalc.Constants.s_sheetfunclnarg;\n               }\n            value = Math.log(value);\n            break;\n\n         case \"LOG10\":\n            if (value <= 0) {\n               result.type = \"e#NUM!\";\n               result.error = SocialCalc.Constants.s_sheetfunclog10arg;\n               }\n            value = Math.log(value)/Math.log(10);\n            break;\n\n         case \"ODD\":\n            value = value < 0 ? -value : value;\n            if (value != Math.floor(value)) {\n               value = Math.floor(value + 1) + (1 - (Math.floor(value + 1) % 2));\n               }\n            else { // integer\n               value = value + (1 - (value % 2));\n               }\n            if (v1.value < 0) value = -value;\n            break;\n\n         case \"RADIANS\":\n            value = value * Math.PI/180;\n            break;\n\n         case \"SIN\":\n            value = Math.sin(value);\n            break;\n\n         case \"SQRT\":\n            if (value >= 0) {\n               value = Math.sqrt(value);\n               }\n            else {\n               result.type = \"e#NUM!\";\n               }\n            break;\n\n         case \"TAN\":\n            if (Math.cos(value) != 0) {\n               value = Math.tan(value);\n               }\n            else {\n               result.type = \"e#NUM!\";\n               }\n            break;\n         }\n      }\n\n   result.value = value;\n   operand.push(result);\n\n   return null;\n\n   }\n\n// Add to function list\nSocialCalc.Formula.FunctionList[\"ABS\"] = [SocialCalc.Formula.Math1Functions, 1, \"v\", \"\", \"math\"];\nSocialCalc.Formula.FunctionList[\"ACOS\"] = [SocialCalc.Formula.Math1Functions, 1, \"v\", \"\", \"math\"];\nSocialCalc.Formula.FunctionList[\"ASIN\"] = [SocialCalc.Formula.Math1Functions, 1, \"v\", \"\", \"math\"];\nSocialCalc.Formula.FunctionList[\"ATAN\"] = [SocialCalc.Formula.Math1Functions, 1, \"v\", \"\", \"math\"];\nSocialCalc.Formula.FunctionList[\"COS\"] = [SocialCalc.Formula.Math1Functions, 1, \"v\", \"\", \"math\"];\nSocialCalc.Formula.FunctionList[\"DEGREES\"] = [SocialCalc.Formula.Math1Functions, 1, \"v\", \"\", \"math\"];\nSocialCalc.Formula.FunctionList[\"EVEN\"] = [SocialCalc.Formula.Math1Functions, 1, \"v\", \"\", \"math\"];\nSocialCalc.Formula.FunctionList[\"EXP\"] = [SocialCalc.Formula.Math1Functions, 1, \"v\", \"\", \"math\"];\nSocialCalc.Formula.FunctionList[\"FACT\"] = [SocialCalc.Formula.Math1Functions, 1, \"v\", \"\", \"math\"];\nSocialCalc.Formula.FunctionList[\"INT\"] = [SocialCalc.Formula.Math1Functions, 1, \"v\", \"\", \"math\"];\nSocialCalc.Formula.FunctionList[\"LN\"] = [SocialCalc.Formula.Math1Functions, 1, \"v\", \"\", \"math\"];\nSocialCalc.Formula.FunctionList[\"LOG10\"] = [SocialCalc.Formula.Math1Functions, 1, \"v\", \"\", \"math\"];\nSocialCalc.Formula.FunctionList[\"ODD\"] = [SocialCalc.Formula.Math1Functions, 1, \"v\", \"\", \"math\"];\nSocialCalc.Formula.FunctionList[\"RADIANS\"] = [SocialCalc.Formula.Math1Functions, 1, \"v\", \"\", \"math\"];\nSocialCalc.Formula.FunctionList[\"SIN\"] = [SocialCalc.Formula.Math1Functions, 1, \"v\", \"\", \"math\"];\nSocialCalc.Formula.FunctionList[\"SQRT\"] = [SocialCalc.Formula.Math1Functions, 1, \"v\", \"\", \"math\"];\nSocialCalc.Formula.FunctionList[\"TAN\"] = [SocialCalc.Formula.Math1Functions, 1, \"v\", \"\", \"math\"];\n\n\n/*\n#\n# ATAN2(x, y)\n# MOD(a, b)\n# POWER(a, b)\n# TRUNC(value, precision)\n#\n*/\n\nSocialCalc.Formula.Math2Functions = function(fname, operand, foperand, sheet) {\n\n   var xval, yval, value, quotient, decimalscale, i;\n   var result = {};\n\n   var scf = SocialCalc.Formula;\n\n   xval = scf.OperandAsNumber(sheet, foperand);\n   yval = scf.OperandAsNumber(sheet, foperand);\n   value = 0;\n   result.type = scf.LookupResultType(xval.type, yval.type, scf.TypeLookupTable.twoargnumeric);\n\n   if (result.type == \"n\") {\n      switch (fname) {\n         case \"ATAN2\":\n            if (xval.value == 0 && yval.value == 0) {\n               result.type = \"e#DIV/0!\";\n               }\n            else {\n               result.value = Math.atan2(yval.value, xval.value);\n               }\n            break;\n\n         case \"POWER\":\n            result.value = Math.pow(xval.value, yval.value);\n            if (isNaN(result.value)) {\n               result.value = 0;\n               result.type = \"e#NUM!\";\n               }\n            break;\n\n         case \"MOD\": // en.wikipedia.org/wiki/Modulo_operation, etc.\n            if (yval.value == 0) {\n               result.type = \"e#DIV/0!\";\n               }\n            else {\n               quotient = xval.value/yval.value;\n               quotient = Math.floor(quotient);\n               result.value = xval.value - (quotient * yval.value);\n               }\n            break;\n\n         case \"TRUNC\":\n            decimalscale = 1; // cut down to required number of decimal digits\n            if (yval.value >= 0) {\n               yval.value = Math.floor(yval.value);\n               for (i=0; i<yval.value; i++) {\n                  decimalscale *= 10;\n                  }\n               result.value = Math.floor(Math.abs(xval.value) * decimalscale) / decimalscale;\n               }\n            else if (yval.value < 0) {\n               yval.value = Math.floor(-yval.value);\n               for (i=0; i<yval.value; i++) {\n                  decimalscale *= 10;\n                  }\n               result.value = Math.floor(Math.abs(xval.value) / decimalscale) * decimalscale;\n               }\n            if (xval.value < 0) {\n               result.value = -result.value;\n               }\n            }\n         }\n \n   operand.push(result);\n\n   return null;\n\n   }\n\n// Add to function list\nSocialCalc.Formula.FunctionList[\"ATAN2\"] = [SocialCalc.Formula.Math2Functions, 2, \"xy\", \"\", \"math\"];\nSocialCalc.Formula.FunctionList[\"MOD\"] = [SocialCalc.Formula.Math2Functions, 2, \"\", \"\", \"math\"];\nSocialCalc.Formula.FunctionList[\"POWER\"] = [SocialCalc.Formula.Math2Functions, 2, \"\", \"\", \"math\"];\nSocialCalc.Formula.FunctionList[\"TRUNC\"] = [SocialCalc.Formula.Math2Functions, 2, \"valpre\", \"\", \"math\"];\n\n/*\n#\n# LOG(value,[base])\n#\n*/\n\nSocialCalc.Formula.LogFunction = function(fname, operand, foperand, sheet) {\n\n   var value, value2;\n   var result = {};\n\n   var scf = SocialCalc.Formula;\n\n   result.value = 0;\n\n   value = scf.OperandAsNumber(sheet, foperand);\n   result.type = scf.LookupResultType(value.type, value.type, scf.TypeLookupTable.oneargnumeric);\n   if (foperand.length == 1) {\n      value2 = scf.OperandAsNumber(sheet, foperand);\n      if (value2.type.charAt(0) != \"n\" || value2.value <= 0) {\n         scf.FunctionSpecificError(fname, operand, \"e#NUM!\", SocialCalc.Constants.s_sheetfunclogsecondarg);\n         return 0;\n         }\n      }\n   else if (foperand.length != 0) {\n      scf.FunctionArgsError(fname, operand);\n      return 0;\n      }\n   else {\n      value2 = {value: Math.E, type: \"n\"};\n      }\n\n   if (result.type == \"n\") {\n      if (value.value <= 0) {\n         scf.FunctionSpecificError(fname, operand, \"e#NUM!\", SocialCalc.Constants.s_sheetfunclogfirstarg);\n         return 0;\n         }\n      result.value = Math.log(value.value)/Math.log(value2.value);\n      }\n\n   operand.push(result);\n\n   return;\n\n   }\n\nSocialCalc.Formula.FunctionList[\"LOG\"] = [SocialCalc.Formula.LogFunction, -1, \"log\", \"\", \"math\"];\n\n\n/*\n#\n# ROUND(value,[precision])\n#\n*/\n\nSocialCalc.Formula.RoundFunction = function(fname, operand, foperand, sheet) {\n\n   var value2, decimalscale, scaledvalue, i;\n\n   var scf = SocialCalc.Formula;\n   var result = 0;\n   var resulttype = \"e#VALUE!\";\n\n   var value = scf.OperandValueAndType(sheet, foperand);\n   var resulttype = scf.LookupResultType(value.type, value.type, scf.TypeLookupTable.oneargnumeric);\n\n   if (foperand.length == 1) {\n      value2 = scf.OperandValueAndType(sheet, foperand);\n      if (value2.type.charAt(0) != \"n\") {\n         scf.FunctionSpecificError(fname, operand, \"e#NUM!\", SocialCalc.Constants.s_sheetfuncroundsecondarg);\n         return 0;\n         }\n      }\n   else if (foperand.length != 0) {\n      scf.FunctionArgsError(fname, operand);\n      return 0;\n      }\n   else {\n      value2 = {value: 0, type: \"n\"}; // if no second arg, assume 0 for simple round\n      }\n\n   if (resulttype == \"n\") {\n      value2.value = value2.value-0;\n      if (value2.value == 0) {\n         result = Math.round(value.value);\n         }\n      else if (value2.value > 0) {\n         decimalscale = 1; // cut down to required number of decimal digits\n         value2.value = Math.floor(value2.value);\n         for (i=0; i<value2.value; i++) {\n            decimalscale *= 10;\n            }\n         scaledvalue = Math.round(value.value * decimalscale);\n         result = scaledvalue / decimalscale;\n         }\n      else if (value2.value < 0) {\n         decimalscale = 1; // cut down to required number of decimal digits\n         value2.value = Math.floor(-value2.value);\n         for (i=0; i<value2.value; i++) {\n            decimalscale *= 10;\n            }\n         scaledvalue = Math.round(value.value / decimalscale);\n         result = scaledvalue * decimalscale;\n         }\n      }\n\n   scf.PushOperand(operand, resulttype, result);\n\n   return;\n\n   }\n\nSocialCalc.Formula.FunctionList[\"ROUND\"] = [SocialCalc.Formula.RoundFunction, -1, \"vp\", \"\", \"math\"];\n\n/*\n#\n# CEILING(value, [significance])\n# FLOOR(value, [significance])\n#\n*/\n\nSocialCalc.Formula.CeilingFloorFunctions = function(fname, operand, foperand, sheet) {\n\n   var scf = SocialCalc.Formula;\n   var val, sig, t;\n\n   var PushOperand = function(t, v) {operand.push({type: t, value: v});};\n\n   val = scf.OperandValueAndType(sheet, foperand);\n   t = val.type.charAt(0);\n   if (t != \"n\") {\n      PushOperand(\"e#VALUE!\", 0);\n      return;\n      }\n   if (val.value == 0) {\n      PushOperand(\"n\", 0);\n      return;\n      }\n\n   if (foperand.length == 1) {\n      sig = scf.OperandValueAndType(sheet, foperand);\n      t = val.type.charAt(0);\n      if (t != \"n\") {\n         PushOperand(\"e#VALUE!\", 0);\n         return;\n         }\n      }\n   else if (foperand.length == 0) {\n      sig = {type: \"n\", value: val.value > 0 ? 1 : -1};\n      }\n   else {\n      PushOperand(\"e#VALUE!\", 0);\n      return;\n      }\n   if (sig.value == 0) {\n      PushOperand(\"n\", 0);\n      return;\n      }\n   if (sig.value * val.value < 0) {\n      PushOperand(\"e#NUM!\", 0);\n      return;\n      }\n\n   switch (fname) {\n      case \"CEILING\":\n         PushOperand(\"n\", Math.ceil(val.value / sig.value) * sig.value);\n         break;\n      case \"FLOOR\":\n         PushOperand(\"n\", Math.floor(val.value / sig.value) * sig.value);\n         break;\n      }\n\n   return;\n\n   }\n\nSocialCalc.Formula.FunctionList[\"CEILING\"] = [SocialCalc.Formula.CeilingFloorFunctions, -1, \"vsig\", \"\", \"math\"];\nSocialCalc.Formula.FunctionList[\"FLOOR\"] = [SocialCalc.Formula.CeilingFloorFunctions, -1, \"vsig\", \"\", \"math\"];\n\n/*\n#\n# AND(v1,c1:c2,...)\n# OR(v1,c1:c2,...)\n#\n*/\n\nSocialCalc.Formula.AndOrFunctions = function(fname, operand, foperand, sheet) {\n\n   var value1, result;\n\n   var scf = SocialCalc.Formula;\n   var resulttype = \"\";\n\n   if (fname == \"AND\") {\n      result = 1;\n      }\n   else if (fname == \"OR\") {\n      result = 0;\n      }\n\n   while (foperand.length) {\n      value1 = scf.OperandValueAndType(sheet, foperand);\n      if (value1.type.charAt(0) == \"n\") {\n         value1.value = value1.value-0;\n         if (fname == \"AND\") {\n            result = value1.value != 0 ? result : 0;\n            }\n         else if (fname == \"OR\") {\n            result = value1.value != 0 ? 1 : result;\n            }\n         resulttype = scf.LookupResultType(value1.type, resulttype || \"nl\", scf.TypeLookupTable.propagateerror);\n         }\n      else if (value1.type.charAt(0) == \"e\" && resulttype.charAt(0) != \"e\") {\n         resulttype = value1.type;\n         }\n      }\n   if (resulttype.length < 1) {\n      resulttype = \"e#VALUE!\";\n      result = 0;\n      }\n\n   scf.PushOperand(operand, resulttype, result);\n\n   return;\n\n   }\n\nSocialCalc.Formula.FunctionList[\"AND\"] = [SocialCalc.Formula.AndOrFunctions, -1, \"vn\", \"\", \"test\"];\nSocialCalc.Formula.FunctionList[\"OR\"] = [SocialCalc.Formula.AndOrFunctions, -1, \"vn\", \"\", \"test\"];\n\n/*\n#\n# NOT(value)\n#\n*/\n\nSocialCalc.Formula.NotFunction = function(fname, operand, foperand, sheet) {\n\n   var result = 0;\n   var scf = SocialCalc.Formula;\n   var value = scf.OperandValueAndType(sheet, foperand);\n   var resulttype = scf.LookupResultType(value.type, value.type, scf.TypeLookupTable.propagateerror);\n\n   if (value.type.charAt(0) == \"n\" || value.type == \"b\") {\n      result = value.value-0 != 0 ? 0 : 1; // do the \"not\" operation\n      resulttype = \"nl\";\n      }\n   else if (value.type.charAt(0) == \"t\") {\n      resulttype = \"e#VALUE!\";\n      }\n\n   scf.PushOperand(operand, resulttype, result);\n\n   return;\n\n   }\n\nSocialCalc.Formula.FunctionList[\"NOT\"] = [SocialCalc.Formula.NotFunction, 1, \"v\", \"\", \"test\"];\n\n/*\n#\n# CHOOSE(index,value1,value2,...)\n#\n*/\n\nSocialCalc.Formula.ChooseFunction = function(fname, operand, foperand, sheet) {\n\n   var resulttype, count, value1;\n   var result = 0;\n   var scf = SocialCalc.Formula;\n\n   var cindex = scf.OperandAsNumber(sheet, foperand);\n\n   if (cindex.type.charAt(0) != \"n\") {\n      cindex.value = 0;\n      }\n   cindex.value = Math.floor(cindex.value);\n\n   count = 0;\n   while (foperand.length) {\n      value1 = scf.TopOfStackValueAndType(sheet, foperand);\n      count += 1;\n      if (cindex.value == count) {\n         result = value1.value;\n         resulttype = value1.type;\n         break;\n         }\n      }\n   if (resulttype) { // found something\n      scf.PushOperand(operand, resulttype, result);\n      }\n   else {\n      scf.PushOperand(operand, \"e#VALUE!\", 0);\n      }\n\n   return;\n\n   }\n\nSocialCalc.Formula.FunctionList[\"CHOOSE\"] = [SocialCalc.Formula.ChooseFunction, -2, \"choose\", \"\", \"lookup\"];\n\n/*\n#\n# COLUMNS(c1:c2)\n# ROWS(c1:c2)\n#\n*/\n\nSocialCalc.Formula.ColumnsRowsFunctions = function(fname, operand, foperand, sheet) {\n\n   var resulttype, rangeinfo;\n   var result = 0;\n   var scf = SocialCalc.Formula;\n\n   var value1 = scf.TopOfStackValueAndType(sheet, foperand);\n\n   if (value1.type == \"coord\") {\n      result = 1;\n      resulttype = \"n\";\n      }\n\n   else if (value1.type == \"range\") {\n      rangeinfo = scf.DecodeRangeParts(sheet, value1.value);\n      if (fname == \"COLUMNS\") {\n         result = rangeinfo.ncols;\n         }\n      else if (fname == \"ROWS\") {\n         result = rangeinfo.nrows;\n         }\n      resulttype = \"n\";\n      }\n   else {\n      result = 0;\n      resulttype = \"e#VALUE!\";\n      }\n\n   scf.PushOperand(operand, resulttype, result);\n\n   return;\n\n   }\n\nSocialCalc.Formula.FunctionList[\"COLUMNS\"] = [SocialCalc.Formula.ColumnsRowsFunctions, 1, \"range\", \"\", \"lookup\"];\nSocialCalc.Formula.FunctionList[\"ROWS\"] = [SocialCalc.Formula.ColumnsRowsFunctions, 1, \"range\", \"\", \"lookup\"];\n\n\n/*\n#\n# FALSE()\n# NA()\n# NOW()\n# PI()\n# TODAY()\n# TRUE()\n# RAND()\n#\n*/\n\nSocialCalc.Formula.ZeroArgFunctions = function(fname, operand, foperand, sheet) {\n\n   var startval, tzoffset, start_1_1_1970, seconds_in_a_day, nowdays;\n   var result = {value: 0};\n   \n   switch (fname) {\n      case \"FALSE\":\n         result.type = \"nl\";\n         result.value = 0;\n         break;\n\n      case \"NA\":\n         result.type = \"e#N/A\";\n         break;\n\n      case \"NOW\":\n         startval = new Date();\n         tzoffset = startval.getTimezoneOffset();\n         startval = startval.getTime() / 1000; // convert to seconds\n         start_1_1_1970 = 25569; // Day number of 1/1/1970 starting with 1/1/1900 as 1\n         seconds_in_a_day = 24 * 60 * 60;\n         nowdays = start_1_1_1970 + startval / seconds_in_a_day - tzoffset/(24*60);\n         result.value = nowdays;\n         result.type = \"ndt\";\n         SocialCalc.Formula.FreshnessInfo.volatile.NOW = true; // remember\n         break;\n\n      case \"PI\":\n         result.type = \"n\";\n         result.value = Math.PI;\n         break;\n\n      case \"TODAY\":\n         startval = new Date();\n         tzoffset = startval.getTimezoneOffset();\n         startval = startval.getTime() / 1000; // convert to seconds\n         start_1_1_1970 = 25569; // Day number of 1/1/1970 starting with 1/1/1900 as 1\n         seconds_in_a_day = 24 * 60 * 60;\n         nowdays = start_1_1_1970 + startval / seconds_in_a_day - tzoffset/(24*60);\n         result.value = Math.floor(nowdays);\n         result.type = \"nd\";\n         SocialCalc.Formula.FreshnessInfo.volatile.TODAY = true; // remember\n         break;\n\n      case \"TRUE\":\n         result.type = \"nl\";\n         result.value = 1;\n         break;\n\n      case \"RAND\":\n         result.type = \"n\";\n         result.value = Math.random();\n         SocialCalc.Formula.FreshnessInfo.volatile.RAND = true; // remember\n         break;\n\n      }\n\n\n   operand.push(result);\n\n   return null;\n\n}\n\n// Add to function list\nSocialCalc.Formula.FunctionList[\"FALSE\"] = [SocialCalc.Formula.ZeroArgFunctions, 0, \"\", \"\", \"test\"];\nSocialCalc.Formula.FunctionList[\"NA\"] = [SocialCalc.Formula.ZeroArgFunctions, 0, \"\", \"\", \"test\"];\nSocialCalc.Formula.FunctionList[\"NOW\"] = [SocialCalc.Formula.ZeroArgFunctions, 0, \"\", \"\", \"datetime\"];\nSocialCalc.Formula.FunctionList[\"RAND\"] = [SocialCalc.Formula.ZeroArgFunctions, 0, \"\", \"\", \"math\"];\nSocialCalc.Formula.FunctionList[\"PI\"] = [SocialCalc.Formula.ZeroArgFunctions, 0, \"\", \"\", \"math\"];\nSocialCalc.Formula.FunctionList[\"TODAY\"] = [SocialCalc.Formula.ZeroArgFunctions, 0, \"\", \"\", \"datetime\"];\nSocialCalc.Formula.FunctionList[\"TRUE\"] = [SocialCalc.Formula.ZeroArgFunctions, 0, \"\", \"\", \"test\"];\n\n//\n// * * * * * FINANCIAL FUNCTIONS * * * * *\n//\n\n/*\n#\n# DDB(cost,salvage,lifetime,period,[method])\n#\n# Depreciation, method defaults to 2 for double-declining balance\n# See: http://en.wikipedia.org/wiki/Depreciation\n#\n*/\n\nSocialCalc.Formula.DDBFunction = function(fname, operand, foperand, sheet) {\n\n   var method, depreciation, accumulateddepreciation, i;\n   var scf = SocialCalc.Formula;\n\n   var cost = scf.OperandAsNumber(sheet, foperand);\n   var salvage = scf.OperandAsNumber(sheet, foperand);\n   var lifetime = scf.OperandAsNumber(sheet, foperand);\n   var period = scf.OperandAsNumber(sheet, foperand);\n\n   if (scf.CheckForErrorValue(operand, cost)) return;\n   if (scf.CheckForErrorValue(operand, salvage)) return;\n   if (scf.CheckForErrorValue(operand, lifetime)) return;\n   if (scf.CheckForErrorValue(operand, period)) return;\n\n   if (lifetime.value < 1) {\n      scf.FunctionSpecificError(fname, operand, \"e#NUM!\", SocialCalc.Constants.s_sheetfuncddblife);\n      return 0;\n      }\n\n   method = {value: 2, type: \"n\"};\n   if (foperand.length > 0 ) {\n      method = scf.OperandAsNumber(sheet, foperand);\n      }\n   if (foperand.length != 0) {\n      scf.FunctionArgsError(fname, operand);\n      return 0;\n      }\n   if (scf.CheckForErrorValue(operand, method)) return;\n\n   depreciation = 0; // calculated for each period\n   accumulateddepreciation = 0; // accumulated by adding each period's\n\n   for (i=1; i<=period.value-0 && i<=lifetime.value; i++) { // calculate for each period based on net from previous\n      depreciation = (cost.value - accumulateddepreciation) * (method.value / lifetime.value);\n      if (cost.value - accumulateddepreciation - depreciation < salvage.value) { // don't go lower than salvage value\n         depreciation = cost.value - accumulateddepreciation - salvage.value;\n         }\n      accumulateddepreciation += depreciation;\n      }\n\n   scf.PushOperand(operand, 'n$', depreciation);\n\n   return;\n\n   }\n\nSocialCalc.Formula.FunctionList[\"DDB\"] = [SocialCalc.Formula.DDBFunction, -4, \"ddb\", \"\", \"financial\"];\n\n/*\n#\n# SLN(cost,salvage,lifetime)\n#\n# Depreciation for each period by straight-line method\n# See: http://en.wikipedia.org/wiki/Depreciation\n#\n*/\n\nSocialCalc.Formula.SLNFunction = function(fname, operand, foperand, sheet) {\n\n   var depreciation;\n   var scf = SocialCalc.Formula;\n\n   var cost = scf.OperandAsNumber(sheet, foperand);\n   var salvage = scf.OperandAsNumber(sheet, foperand);\n   var lifetime = scf.OperandAsNumber(sheet, foperand);\n\n   if (scf.CheckForErrorValue(operand, cost)) return;\n   if (scf.CheckForErrorValue(operand, salvage)) return;\n   if (scf.CheckForErrorValue(operand, lifetime)) return;\n\n   if (lifetime.value < 1) {\n      scf.FunctionSpecificError(fname, operand, \"e#NUM!\", SocialCalc.Constants.s_sheetfuncslnlife);\n      return 0;\n      }\n\n   depreciation = (cost.value - salvage.value) / lifetime.value;\n\n   scf.PushOperand(operand, 'n$', depreciation);\n\n   return;\n\n   }\n\nSocialCalc.Formula.FunctionList[\"SLN\"] = [SocialCalc.Formula.SLNFunction, 3, \"csl\", \"\", \"financial\"];\n\n/*\n#\n# SYD(cost,salvage,lifetime,period)\n#\n# Depreciation by Sum of Year's Digits method\n#\n*/\n\nSocialCalc.Formula.SYDFunction = function(fname, operand, foperand, sheet) {\n\n   var depreciation, sumperiods;\n   var scf = SocialCalc.Formula;\n\n   var cost = scf.OperandAsNumber(sheet, foperand);\n   var salvage = scf.OperandAsNumber(sheet, foperand);\n   var lifetime = scf.OperandAsNumber(sheet, foperand);\n   var period = scf.OperandAsNumber(sheet, foperand);\n\n   if (scf.CheckForErrorValue(operand, cost)) return;\n   if (scf.CheckForErrorValue(operand, salvage)) return;\n   if (scf.CheckForErrorValue(operand, lifetime)) return;\n   if (scf.CheckForErrorValue(operand, period)) return;\n\n   if (lifetime.value < 1 || period.value <= 0) {\n      scf.PushOperand(operand, \"e#NUM!\", 0);\n      return 0;\n      }\n\n   sumperiods = ((lifetime.value + 1) * lifetime.value)/2; // add up 1 through lifetime\n   depreciation = (cost.value - salvage.value) * (lifetime.value - period.value + 1) / sumperiods; // calc depreciation\n\n   scf.PushOperand(operand, 'n$', depreciation);\n\n   return;\n\n   }\n\nSocialCalc.Formula.FunctionList[\"SYD\"] = [SocialCalc.Formula.SYDFunction, 4, \"cslp\", \"\", \"financial\"];\n\n/*\n#\n# FV(rate, n, payment, [pv, [paytype]])\n# NPER(rate, payment, pv, [fv, [paytype]])\n# PMT(rate, n, pv, [fv, [paytype]])\n# PV(rate, n, payment, [fv, [paytype]])\n# RATE(n, payment, pv, [fv, [paytype, [guess]]])\n#\n# Following the Open Document Format formula specification:\n#\n#    PV = - Fv - (Payment * Nper) [if rate equals 0]\n#    Pv*(1+Rate)^Nper + Payment * (1 + Rate*PaymentType) * ( (1+Rate)^nper -1)/Rate + Fv = 0\n#\n# For each function, the formulas are solved for the appropriate value (transformed using\n# basic algebra).\n#\n*/\n\nSocialCalc.Formula.InterestFunctions = function(fname, operand, foperand, sheet) {\n\n   var resulttype, result, dval, eval, fval;\n   var pv, fv, rate, n, payment, paytype, guess, part1, part2, part3, part4, part5;\n   var olddelta, maxloop, tries, deltaepsilon, rate, oldrate, m;\n\n   var scf = SocialCalc.Formula;\n\n   var aval = scf.OperandAsNumber(sheet, foperand);\n   var bval = scf.OperandAsNumber(sheet, foperand);\n   var cval = scf.OperandAsNumber(sheet, foperand);\n\n   resulttype = scf.LookupResultType(aval.type, bval.type, scf.TypeLookupTable.twoargnumeric);\n   resulttype = scf.LookupResultType(resulttype, cval.type, scf.TypeLookupTable.twoargnumeric);\n   if (foperand.length) { // optional arguments\n      dval = scf.OperandAsNumber(sheet, foperand);\n      resulttype = scf.LookupResultType(resulttype, dval.type, scf.TypeLookupTable.twoargnumeric);\n      if (foperand.length) { // optional arguments\n         eval = scf.OperandAsNumber(sheet, foperand);\n         resulttype = scf.LookupResultType(resulttype, eval.type, scf.TypeLookupTable.twoargnumeric);\n         if (foperand.length) { // optional arguments\n            if (fname != \"RATE\") { // only rate has 6 possible args\n               scf.FunctionArgsError(fname, operand);\n               return 0;\n               }\n            fval = scf.OperandAsNumber(sheet, foperand);\n            resulttype = scf.LookupResultType(resulttype, fval.type, scf.TypeLookupTable.twoargnumeric);\n            }\n         }\n      }\n\n   if (resulttype == \"n\") {\n      switch (fname) {\n         case \"FV\": // FV(rate, n, payment, [pv, [paytype]])\n            rate = aval.value;\n            n = bval.value;\n            payment = cval.value;\n            pv = dval!=null ? dval.value : 0; // get value if present, or use default\n            paytype = eval!=null ? (eval.value ? 1 : 0) : 0;\n            if (rate == 0) { // simple calculation if no interest\n               fv = -pv - (payment * n);\n               }\n            else {\n               fv = -(pv*Math.pow(1+rate,n) + payment * (1 + rate*paytype) * ( Math.pow(1+rate,n) -1)/rate);\n               }\n            result = fv;\n            resulttype = 'n$';\n            break;\n\n         case \"NPER\": // NPER(rate, payment, pv, [fv, [paytype]])\n            rate = aval.value;\n            payment = bval.value;\n            pv = cval.value;\n            fv = dval!=null ? dval.value : 0;\n            paytype = eval!=null ? (eval.value ? 1 : 0) : 0;\n            if (rate == 0) { // simple calculation if no interest\n               if (payment == 0) {\n                  scf.PushOperand(operand, \"e#NUM!\", 0);\n                  return;\n                  }\n               n = (pv + fv)/(-payment);\n               }\n            else {\n               part1 = payment * (1 + rate * paytype) / rate;\n               part2 = pv + part1;\n               if (part2 == 0 || rate <= -1) {\n                  scf.PushOperand(operand, \"e#NUM!\", 0);\n                  return;\n                  }\n               part3 = (part1 - fv) / part2;\n               if (part3 <= 0) {\n                  scf.PushOperand(operand, \"e#NUM!\", 0);\n                  return;\n                  }\n               part4 = Math.log(part3);\n               part5 = Math.log(1 + rate); // rate > -1\n               n = part4/part5;\n               }\n            result = n;\n            resulttype = 'n';\n            break;\n\n         case \"PMT\": // PMT(rate, n, pv, [fv, [paytype]])\n            rate = aval.value;\n            n = bval.value;\n            pv = cval.value;\n            fv = dval!=null ? dval.value : 0;\n            paytype = eval!=null ? (eval.value ? 1 : 0) : 0;\n            if (n == 0) {\n               scf.PushOperand(operand, \"e#NUM!\", 0);\n               return;\n               }\n            else if (rate == 0) { // simple calculation if no interest\n               payment = (fv - pv)/n;\n               }\n            else {\n               payment = (0 - fv - pv*Math.pow(1+rate,n))/((1 + rate*paytype) * ( Math.pow(1+rate,n) -1)/rate);\n               }\n            result = payment;\n            resulttype = 'n$';\n            break;\n\n         case \"PV\": // PV(rate, n, payment, [fv, [paytype]])\n            rate = aval.value;\n            n = bval.value;\n            payment = cval.value;\n            fv = dval!=null ? dval.value : 0;\n            paytype = eval!=null ? (eval.value ? 1 : 0) : 0;\n            if (rate == -1) {\n               scf.PushOperand(operand, \"e#DIV/0!\", 0);\n               return;\n               }\n            else if (rate == 0) { // simple calculation if no interest\n               pv = -fv - (payment * n);\n               }\n            else {\n               pv = (-fv - payment * (1 + rate*paytype) * ( Math.pow(1+rate,n) -1)/rate)/(Math.pow(1+rate,n));\n               }\n            result = pv;\n            resulttype = 'n$';\n            break;\n\n            case \"RATE\": // RATE(n, payment, pv, [fv, [paytype, [guess]]])\n               n = aval.value;\n               payment = bval.value;\n               pv = cval.value;\n               fv = dval!=null ? dval.value : 0;\n               paytype = eval!=null ? (eval.value ? 1 : 0) : 0;\n               guess = fval!=null ? fval.value : 0.1;\n\n               // rate is calculated by repeated approximations\n               // The deltas are used to calculate new guesses\n\n               maxloop = 100;\n               tries = 0;\n               delta = 1;\n               epsilon = 0.0000001; // this is close enough\n               rate = guess || 0.00000001; // zero is not allowed\n               while ((delta >= 0 ? delta : -delta) > epsilon && (rate != oldrate)) {\n                  delta = fv + pv*Math.pow(1+rate,n) + payment * (1 + rate*paytype) * ( Math.pow(1+rate,n) -1)/rate;\n                  if (olddelta!=null) {\n                     m = (delta - olddelta)/(rate - oldrate) || .001; // get slope (not zero)\n                     oldrate = rate;\n                     rate = rate - delta / m; // look for zero crossing\n                     olddelta = delta;\n                     }\n                  else { // first time - no old values\n                     oldrate = rate;\n                     rate = 1.1 * rate;\n                     olddelta = delta;\n                     }\n                  tries++;\n                  if (tries >= maxloop) { // didn't converge yet\n                     scf.PushOperand(operand, \"e#NUM!\", 0);\n                     return;\n                     }\n                  }\n               result = rate;\n               resulttype = 'n%';\n               break;\n         }\n      }\n \n   scf.PushOperand(operand, resulttype, result);\n\n   return;\n\n   }\n\nSocialCalc.Formula.FunctionList[\"FV\"] = [SocialCalc.Formula.InterestFunctions, -3, \"fv\", \"\", \"financial\"];\nSocialCalc.Formula.FunctionList[\"NPER\"] = [SocialCalc.Formula.InterestFunctions, -3, \"nper\", \"\", \"financial\"];\nSocialCalc.Formula.FunctionList[\"PMT\"] = [SocialCalc.Formula.InterestFunctions, -3, \"pmt\", \"\", \"financial\"];\nSocialCalc.Formula.FunctionList[\"PV\"] = [SocialCalc.Formula.InterestFunctions, -3, \"pv\", \"\", \"financial\"];\nSocialCalc.Formula.FunctionList[\"RATE\"] = [SocialCalc.Formula.InterestFunctions, -3, \"rate\", \"\", \"financial\"];\n\n/*\n#\n# NPV(rate,v1,v2,c1:c2,...)\n#\n*/\n\nSocialCalc.Formula.NPVFunction = function(fname, operand, foperand, sheet) {\n\n   var resulttypenpv, rate, sum, factor, value1;\n\n   var scf = SocialCalc.Formula;\n\n   var rate = scf.OperandAsNumber(sheet, foperand);\n   if (scf.CheckForErrorValue(operand, rate)) return;\n\n   sum = 0;\n   resulttypenpv = \"n\";\n   factor = 1;\n\n   while (foperand.length) {\n      value1 = scf.OperandValueAndType(sheet, foperand);\n      if (value1.type.charAt(0) == \"n\") {\n         factor *= (1 + rate.value);\n         if (factor == 0) {\n            scf.PushOperand(operand, \"e#DIV/0!\", 0);\n            return;\n            }\n         sum += value1.value / factor;\n         resulttypenpv = scf.LookupResultType(value1.type, resulttypenpv || value1.type, scf.TypeLookupTable.plus);\n         }\n      else if (value1.type.charAt(0) == \"e\" && resulttypenpv.charAt(0) != \"e\") {\n         resulttypenpv = value1.type;\n         break;\n         }\n      }\n\n   if (resulttypenpv.charAt(0) == \"n\") {\n      resulttypenpv = 'n$';\n      }\n\n   scf.PushOperand(operand, resulttypenpv, sum);\n\n   return;\n\n   }\n\nSocialCalc.Formula.FunctionList[\"NPV\"] = [SocialCalc.Formula.NPVFunction, -2, \"npv\", \"\", \"financial\"];\n\n/*\n#\n# IRR(c1:c2,[guess])\n#\n*/\n\nSocialCalc.Formula.IRRFunction = function(fname, operand, foperand, sheet) {\n\n   var value1, guess, oldsum, maxloop, tries, epsilon, rate, oldrate, m, sum, factor, i;\n   var rangeoperand = [];\n   var cashflows = [];\n\n   var scf = SocialCalc.Formula;\n\n   rangeoperand.push(foperand.pop()); // first operand is a range\n\n   while (rangeoperand.length) { // get values from range so we can do iterative approximations\n      value1 = scf.OperandValueAndType(sheet, rangeoperand);\n      if (value1.type.charAt(0) == \"n\") {\n         cashflows.push(value1.value);\n         }\n      else if (value1.type.charAt(0) == \"e\") {\n         scf.PushOperand(operand, \"e#VALUE!\", 0);\n         return;\n         }\n      }\n\n   if (!cashflows.length) {\n      scf.PushOperand(operand, \"e#NUM!\", 0);\n      return;\n      }\n\n   guess = {value: 0};\n\n   if (foperand.length) { // guess is provided\n      guess = scf.OperandAsNumber(sheet, foperand);\n      if (guess.type.charAt(0) != \"n\" && guess.type.charAt(0) != \"b\") {\n         scf.PushOperand(operand, \"e#VALUE!\", 0);\n         return;\n         }\n      if (foperand.length) { // should be no more args\n         scf.FunctionArgsError(fname, operand);\n         return;\n         }\n      }\n\n   guess.value = guess.value || 0.1;\n\n   // rate is calculated by repeated approximations\n   // The deltas are used to calculate new guesses\n\n   maxloop = 20;\n   tries = 0;\n   epsilon = 0.0000001; // this is close enough\n   rate = guess.value;\n   sum = 1;\n\n   while ((sum >= 0 ? sum : -sum) > epsilon && (rate != oldrate)) {\n      sum = 0;\n      factor = 1;\n      for (i=0; i<cashflows.length; i++) {\n         factor *= (1 + rate);\n         if (factor == 0) {\n            scf.PushOperand(operand, \"e#DIV/0!\", 0);\n            return;\n            }\n         sum += cashflows[i] / factor;\n         }\n\n      if (oldsum!=null) {\n         m = (sum - oldsum)/(rate - oldrate); // get slope\n         oldrate = rate;\n         rate = rate - sum / m; // look for zero crossing\n         oldsum = sum;\n         }\n      else { // first time - no old values\n         oldrate = rate;\n         rate = 1.1 * rate;\n         oldsum = sum;\n         }\n      tries++;\n      if (tries >= maxloop) { // didn't converge yet\n         scf.PushOperand(operand, \"e#NUM!\", 0);\n         return;\n         }\n      }\n\n   scf.PushOperand(operand, 'n%', rate);\n\n   return;\n\n   }\n\nSocialCalc.Formula.FunctionList[\"IRR\"] = [SocialCalc.Formula.IRRFunction, -1, \"irr\", \"\", \"financial\"];\n\n\n\n// -----------------------------------------\n// eddy  BUTTON COPYVALUE COPYFORMULA {\n// -----------------------------------------\n\n/*\n#\n# BUTTON(string) // \n# IMAGEBUTTON(string) \n# TEXTBOX(string) // \n# AUTOCOMPLETE(string, range)\n# SELECT(string, range [,size [,multiple]])\n# CHECKBOX(string) // \n# RADIOBUTTON(string,groupname)\n# COPYVALUE(range, destinationCell, value_or_range) // \n# COPYFORMULA(range, destinationCell, formula_range)) // \n# INSERT(trigger_cell, destination_range [,formula_range,value_range,formula_range, ...])\n# DELETEIF(trigger_cell, criteria , test_range) \n# COMMAND(trigger_cell, commands)\n# COMMANDIF(trigger_cell, condition, commands) \n# PANEL(indices_or_csv, panel1_range [, panel2_range , ...])  \n# SPLASH(splash_panel_range)  // shows splash screen (range) - shows while loading dependant sheets from server  \n# STYLE(css)  \n#\n*/\n\n\nSocialCalc.Formula.IoFunctions = function(fname, operand, foperand, sheet, coord) {\n\n  \n// ArgList has an array for each function, one entry for each possible arg (up to max).\n// Min args are specified in SocialCalc.Formula.FunctionList.\n// Minus values are repeated parameters\n//  -1 to -15  - repeated parameters\n//  -1 - [number, ...]  - e.g. [2,-1,-2]  means (text, [number, text, number, text, ... ] - repeated parameters\n//  1 - number \n//  2 - text \n//  3 - text | number \n//  4 - coord \n//  5 - coord | number \n//  6 - coord | text \n//  7 - coord | text | number \n//  8 - range \n//  9 - range | number \n//  10 - range | text 11 - range | text | number \n//  12 - range | coord \n//  13 - range | coord | number \n//  14 - range | coord | text \n//  15 - range | coord | text | number \n\n\n\n   var argList = {\n\t\t\t\t BUTTON: [2]\n        ,IMAGEBUTTON: [2]\n   \t\t\t,EMAIL: [14, 14, 14, 14]\n\t\t\t\t,EMAILIF: [13, 14, 14, 14, 14]\n\t\t\t\t,EMAILONEDIT: [14, 14, 14, 14, 14]\n\t\t\t\t,EMAILAT: [13, 14, 14, 14, 14]\n\t\t\t\t,EMAILONEDITIF: [14, 13, 14, 14, 14, 14]\n\t\t\t\t,EMAILATIF: [13, 13, 14, 14, 14, 14]\n        ,SUBMIT: [2]\n        ,TEXTBOX: [2]\n        ,AUTOCOMPLETE: [2, 14]\n        ,SELECT: [2, 14, 1, 1]   // # SELECT(string, range [,size [,multiple]])\n        ,CHECKBOX: [3]\n        ,RADIOBUTTON: [2, 2]\n\t\t\t\t,COPYVALUE: [4, 12, 15]\n\t\t\t\t,COPYFORMULA: [4, 12, 12]\n        ,INSERT: [4, 8, -12, -15]  // change code to allow unlimited \n        ,DELETEIF: [4,7,8]\n        ,COMMAND: [4, 14]\n        ,COMMANDIF: [4, 13, 14]\n        ,PANEL:[15, -12] // # PANEL(indices_or_csv, panel1_range [, panel2_range , ...])  \n        ,SPLASH:[12]  // SPLASH(splash_panel_range)  // shows splash screen (range)\n        ,STYLE:[6] // # STYLE(css)  \n   };\n   \n   var i, parameter, offset, len, start, count;\n   var scf = SocialCalc.Formula;\n   var result = 0;\n   var resulttype = \"e#VALUE!\";\n\n   var numargs = foperand.length;\n   var argdef = argList[fname];\n   var operand_value = [];\n   var operand_type = [];\n\n   var repeatCount = -1;  // number of repeated parameters\n   var repeatIndex;  // index of begining of repeated parameters\n   var wantedType;\n   \n   for (i=1; i <= numargs; i++) { // go through each arg, get value and type, and check for errors\n      //   IF started repeat parameters section \n      if(repeatCount != -1) {\n        //     SET typeWanted = get type - adjust for repeted parameters\n        wantedType = Math.abs(argdef[ repeatIndex + (( (i-1) - repeatIndex) % repeatCount) ]);\n      } else {\n        \n        if (i > argdef.length) { // too many args\n          scf.FunctionArgsError(fname, operand);\n          return;\n          }\n        \n        //     typeWanted = type wanted list [ parameterIndex ]\n        wantedType = argdef[i-1];\n        \n        //     IF typeWanted < 0 && repeatCount == -1\n        if(wantedType < 0 ) {\n          //       SET repeatCount = wanted list length - parameterIndex\n          repeatCount = argdef.length - (i-1);\n          //       SET repeatIndex =  parameterIndex\n          repeatIndex = (i-1);\n          //       wantedType = Math.abs(wantedType )          \n          wantedType = Math.abs(wantedType );\n        }  //     END IF\n      \n      } //   END IF\n\n      if(wantedType == 1) { // 1 - number \n        parameter = scf.OperandAsNumber(sheet, foperand);\n        \n      } else if(wantedType == 2) { // 2 - text \n        parameter = scf.OperandAsText(sheet, foperand);\n      } else if(wantedType == 3) { // 3 - text | number \n        parameter = scf.OperandValueAndType(sheet, foperand);\n      } else { //  typeWanted > 3  && < 16  - else invalid        \n        //        SET parameterType = type\n        var parameterType = foperand[foperand.length -1].type; // param is end of stack\n        \n        //        SET validType = false  \n        var validParameterType = false;\n        \n        //        IF type = number && wanted type == number || type = text && wanted type == text THEN\n        //                  1 - number   2 - text \n        if( (parameterType.charAt(0) == \"n\" && (wantedType & 1) != 0) || (parameterType.charAt(0) == \"t\" && (wantedType & 2) != 0)) {\n          //           valid\n          validParameterType = true;\n          //           get number type and value \n          parameter = scf.OperandValueAndType(sheet, foperand);\n        }  //        END IF\n        \n        //        IF type = coord && wanted type == coord THEN\n        if( parameterType == \"coord\" && (wantedType & 4) != 0) {  //  4 - coord \n          //          valid\n          validParameterType = true;\n          parameter = scf.OperandAsCoord(sheet, foperand);\n          parameter.value = SocialCalc.Formula.PlainCoord(parameter.value); // remove absolute reference\n        } //        END IF\n        //        IF type = range && wanted type == range THEN\n        if( parameterType == \"range\" && (wantedType & 8) != 0) { // 8 - range \n          //           valid\n          validParameterType = true;\n          // get range\n          parameter = scf.OperandAsRange(sheet, foperand);          \n          parameter.value = SocialCalc.Formula.PlainCoord(parameter.value);  // remove absolute reference\n        } //        END IF\n        \n        //        IF invalid param type\n        if(validParameterType == false) {\n          scf.FunctionArgsError(fname, operand);\n          return;          \n        }  //        END IF\n        \n      }\n      \n      \n      // value or range, e.g. \"C9|C11\"\n      operand_value[i] = parameter.value;\n      // type e.g. \"t\", \"range\"\n      operand_type[i] = parameter.type;\n      if (parameter.type.charAt(0) == \"e\") {\n         scf.PushOperand(operand, parameter.type, result);\n         return;\n      }\n   }\n\n   \n   switch (fname) {\n     case \"STYLE\":  \n       var parameters = sheet.ioParameterList[coord];\n       if(parameters) {\n         var css = SocialCalc.Formula.getStandardizedList(sheet, {value: operand_value[1], type: operand_type[1]});\n         if(css.length > 0 ) {\n           parameters.css = css[0];\n           parameters.cssParameter = (operand_type[1] == \"t\") ? '\"'+operand_value[1]+'\"' : operand_value[1];\n         }\n         result = \"\"; // ensure return value does not get changed by style - will add this empty string to number or string\n         resulttype = \"ni\"; // important - allows widgets to keep type - use: TEXTBOX(\"\")+STYLE(css)  - must add style to widget \n       }\n       break;\n     case \"SELECT\":  // # SELECT(string, range [,size [,multiple]])\n         var parameters = sheet.ioParameterList[coord];\n         var optionSource = SocialCalc.Formula.getStandardizedList(sheet, parameters[1]);\n         \n         parameters.html = [];        \n         parameters.html[0] = (operand_value[4] == true) ? \"multiple\" : \"\"\n         parameters.html[1] = (operand_value[3]) ? \"\"+operand_value[3] : \"1\"\n         if(optionSource.length > 0 ) {\n           var options = \"<option>\" + optionSource.join(\"</option><option>\") + \"</option>\";\n           var optionRegExp = new RegExp(\"<option>\"+operand_value[1],'');\n           parameters.html[2] = options.replace(optionRegExp, \"<option selected>\"+operand_value[1] ); // select default, if any\n         }\n         result = operand_value[1];\n         resulttype = \"ti\"+fname;\n         break;\n     case \"SUBMIT\":\n       result = \"Submit\";\n     case \"BUTTON\":\n     case \"IMAGEBUTTON\":\n     case \"TEXTBOX\":\n     case \"AUTOCOMPLETE\":\n         if (numargs>0) result = operand_value[1];\n         resulttype = \"ti\"+fname; // (t)ext value with (i)nterface (BUTTON,IMAGEBUTTON,TEXTBOX,AUTOCOMPLETE, SELECT) \n         break;\n\n      case \"EMAIL\":\n      case \"EMAILIF\":\n          resulttype = \"ti\"+fname; // (t)ext value with (i)nterface (,) \n          result = \"Send\";\n          break;\n      case \"EMAILONEDIT\":\n      case \"EMAILONEDITIF\":\n//    \t  sheet.editEventCells === 'undefined') return;\t\n//    \t  if(typeof sheet.ioParameterList === 'undefined') return;\n\n    \t  \n      case \"EMAILAT\":\n      case \"EMAILATIF\":\n          resulttype = \"ti\"+fname; // (t)ext value with (i)nterface (,) \n          result = \"Send Now\";\n          break;\n\t\t \n      case \"CHECKBOX\":\n      case \"RADIOBUTTON\":\n\t     if(operand_type[1].charAt(0) == 't') {\n\t\t\tresult = (operand_value[1].toUpperCase() == 'TRUE') ? 1 : 0;\n\t\t\t} else {\n\t\t\tresult = (operand_value[1] == 0) ? 0 : 1;\n\t\t\t}\n\t\t//result = \"true\"; \n         resulttype = \"ni\"+fname; // (n)umber value with (i)nterface (CHECKBOX, RADIOBUTTON)\n\n         break;\n\t\t \n\t\t \n      case \"COPYVALUE\":\n      case \"COPYFORMULA\":\n      case \"INSERT\":\n      case \"DELETEIF\":\n      case \"COMMAND\":\n      case \"COMMANDIF\":\n         var cell = sheet.cells[operand_value[1]];\n         if(typeof cell === 'undefined') break; // invalid trigger cell, return error\n         result = cell.datavalue; // get trigger cell value\n         \n         result = String(result).split(\"/\");  // Clean up - if image button trigger then show only image name \n         result = result[result.length-1]; \n         resulttype = \"t\";\n         break;\n      case \"PANEL\":\n      case \"SPLASH\":\n        \n        //  - code to show/hide panel\n        //  --- get list of panels to show - \"showindex_or_csv\" \n        //  --- get param details \n        var showindices;\n        var firstPanelIndex = 2;\n        if(fname == \"SPLASH\") {\n          result = \"SPLASH:\"+ operand_value[1]; \n          resulttype = \"t\";\n          if (sheet.splashdone == true) break; // show splash scree onload, then skip\n          sheet.splashdone = true;\n          firstPanelIndex = 1;\n          showindices = [0]; // show panel at param 0 of splash formula\n          \n        } else {\n          // panel formula\n          showindices = SocialCalc.Formula.getStandardizedList(sheet, {value: operand_value[1], type: operand_type[1]});\n          result = fname+\":\"+ showindices; \n        }\n        //  --- SET list of showrows TO empty\n        //  --- SET list of showcols TO empty\n        resulttype = \"t\";\n        if(SocialCalc._app) { // panel only works in live app\n          var showrows = [], showcols = [];\n          //  --- FOR each panel to show\n          for (var parameterIndex = firstPanelIndex; parameterIndex < operand_value.length; ++parameterIndex) { \n            // show panel if its index is in the showindices list \n            var showPanelFound = false;\n            for(var showIndex in showindices ) { \n              if (showindices[showIndex] == parameterIndex-1) {\n                showPanelFound = true;\n                break;\n              }\n            }\n            if(showPanelFound === false) continue;\n            \n          \n            //  ----- get panel range rows & cols only\n            var panelCoordData = SocialCalc.Formula.getStandardizedCoords(sheet, {value: operand_value[parameterIndex], type: operand_type[parameterIndex]});\n            //  ----- FOR each row/col -- create function to do the loop\n            for (var i=0; i<panelCoordData.ncols; i++) {\n              //  ------- set showrows/col row/col to true\n              showcols[panelCoordData.col1num + i] = true;\n            }  //  ----- END FOR                        \n            for (var j=0; j<panelCoordData.nrows; j++) {\n              //  ------- set showrows/col row/col to true\n              showrows[panelCoordData.row1num + j] = true;\n            }\n          }   //  --- END FOR\n          \n          var spreadsheet =  window.spreadsheet;\n          if (spreadsheet == null) spreadsheet = window.ss\n\n          var forceRender = false;\n          var lastShowDimension = 0;\n          var showGridDimension =  function(sheet, lastIndex, sheetHideList, showList, getIndexOf) {\n            //  --- hide all rows/col    up to sheet.attribs.lastrow/col         \n            //  --- FOR each row/col -- create function to do the loop          \n            for(var arrayIndex = 1; arrayIndex <= lastIndex; arrayIndex ++ ) { // start at col/row 1\n              //  ----- IF row hide/show state need updating\n              var sheetHideIndex = getIndexOf(arrayIndex); // gets col name if col\n              if(typeof sheetHideList[sheetHideIndex] == 'undefined') { \n                // row/col is visible\n                if(showList[arrayIndex] !== true) { // if hide\n                  //  ------- SET the row state  \n                  sheetHideList[sheetHideIndex] =\"yes\";                \n                  //  ------- SET repaint flag\n                  forceRender = true;\n                } else {lastShowDimension = arrayIndex;}\n              } else {\n                // row/col is hidden \n                if(showList[arrayIndex] === true) { // if show \n                  //  ------- SET the row state  \n                  delete sheetHideList[sheetHideIndex];                \n                  //  ------- SET repaint flag\n                  forceRender = true;\n                  lastShowDimension = arrayIndex;\n                }\n              }              \n              \n            }            \n          };\n\n          \n          var getRowIndex = function(row) { return row };\n          showGridDimension(sheet,  sheet.attribs.lastrow,  sheet.rowattribs.hide, showrows, getRowIndex);\n          lastShowDimension = 0;\n          showGridDimension(sheet,  sheet.attribs.lastcol,  sheet.colattribs.hide, showcols, SocialCalc.rcColname );\n          // control width of html - for mobile app - as better to use native scroll rather than SocialCalc scroll bar - colpanes[length].last = usermaxcol - see FitToEditTable\n          sheet.attribs.usermaxcol = lastShowDimension;\n          \n          if(forceRender) {\n            sheet.renderneeded = true;\n            sheet.widgetsClean = false; //  force widgets to repaint - update cell reference in widget HTML    \n            spreadsheet.editor.context.rowpanes[0].first = 1; // reset scroll bar to first row  \n            spreadsheet.editor.context.CalculateColWidthData();\n            \n            spreadsheet.width = spreadsheet.editor.context.totalwidth;\n            spreadsheet.height = 2500;\n            spreadsheet.editor.ResizeTableEditor(spreadsheet.editor.context.totalwidth,2500);  // 2500 is page height constant - fix issue with mobile device - Used constant because could not see an easy way to pre-calculate height \n          }\n          \n        }\n         \n      }\n\n   scf.PushOperand(operand, resulttype, result);\n   return;\n\n   }\n\n//*********************\n//\n// Docs see - Function Handling - ~line 1560\n// \n//*********************\n\n\n\nSocialCalc.Formula.FunctionList[\"BUTTON\"] = [SocialCalc.Formula.IoFunctions, 1, \"label\", \"\", \"gui\", \"<button type='button' onclick=\\\"SocialCalc.TriggerIoAction.Button('<%=cell_reference%>');\\\"><%=formated_value%></button>\" , \"ParameterList\" ];\nSocialCalc.Formula.FunctionList[\"IMAGEBUTTON\"] = [SocialCalc.Formula.IoFunctions, 1, \"imageurl\", \"\", \"gui\", \"<input type='image' src='<%=display_value%>' alt='Submit' onclick=\\\"SocialCalc.TriggerIoAction.Button('<%=cell_reference%>');\\\">\", \"ParameterList\"  ];\nSocialCalc.Formula.FunctionList[\"EMAIL\"] = [SocialCalc.Formula.IoFunctions, -3, \"to_range subject_range, body_range\", \"\", \"action\", \"<button type='button' onclick=\\\"SocialCalc.TriggerIoAction.Email('<%=cell_reference%>');\\\"><%=formated_value%></button>\", \"ParameterList\" ];\nSocialCalc.Formula.FunctionList[\"EMAILIF\"] = [SocialCalc.Formula.IoFunctions, -4, \"condition_range, to_range subject_range, body_range\", \"\", \"action\", \"<button type='button' onclick=\\\"SocialCalc.TriggerIoAction.Email('<%=cell_reference%>');\\\"><%=formated_value%></button>\", \"ParameterList\" ];\nSocialCalc.Formula.FunctionList[\"EMAILONEDIT\"] = [SocialCalc.Formula.IoFunctions, -4, \"editRange, to_range subject_range, body_range\", \"\", \"action\", \"<button type='button' onclick=\\\"SocialCalc.TriggerIoAction.Email('<%=cell_reference%>');\\\"><%=formated_value%></button>\", \"EventTree\"];\nSocialCalc.Formula.FunctionList[\"EMAILAT\"] = [SocialCalc.Formula.IoFunctions, -4, \"datetime_value, to_range subject_range, body_range\", \"\", \"action\", \"<button type='button' onclick=\\\"SocialCalc.TriggerIoAction.Email('<%=cell_reference%>');\\\"><%=formated_value%></button>\", \"TimeTrigger\" ];\nSocialCalc.Formula.FunctionList[\"EMAILONEDITIF\"] = [SocialCalc.Formula.IoFunctions, -5, \"editRange, condition, to_range subject_range, body_range\", \"\", \"action\", \"<button type='button' onclick=\\\"SocialCalc.TriggerIoAction.Email('<%=cell_reference%>');\\\"><%=formated_value%></button>\", \"EventTree\" ];\nSocialCalc.Formula.FunctionList[\"EMAILATIF\"] = [SocialCalc.Formula.IoFunctions, -5, \"datetime_value, condition, to_range subject_range, body_range\", \"\", \"action\", \"<button type='button' onclick=\\\"SocialCalc.TriggerIoAction.Email('<%=cell_reference%>');\\\"><%=formated_value%></button>\", \"TimeTrigger\" ];\nSocialCalc.Formula.FunctionList[\"SUBMIT\"] = [SocialCalc.Formula.IoFunctions, 100, \"[label]\", \"\", \"action\", \"<button type='button' onclick=\\\"SocialCalc.TriggerIoAction.Submit('<%=cell_reference%>');\\\"><%=formated_value%></button>\", \"ParameterList\" ];\nSocialCalc.Formula.FunctionList[\"TEXTBOX\"] = [SocialCalc.Formula.IoFunctions, 1, \"value\", \"\", \"gui\", \"<input type='text' id='TEXTBOX_<%=cell_reference%>' onblur='SocialCalc.CmdGotFocus(null);' oninput=\\\"SocialCalc.TriggerIoAction.TextBox('<%=cell_reference%>')\\\" value='<%=display_value%>' >\", \"Input\" ];\nSocialCalc.Formula.FunctionList[\"AUTOCOMPLETE\"] = [SocialCalc.Formula.IoFunctions, 2, \"value, range or csv_text\", \"\", \"gui\", \"<input type='text' id='AUTOCOMPLETE_<%=cell_reference%>' onfocus=\\\"SocialCalc.TriggerIoAction.AddAutocomplete('<%=cell_reference%>');\\\" onblur='SocialCalc.CmdGotFocus(null);' value='<%=display_value%>' >\", \"Input\" ];\nSocialCalc.Formula.FunctionList[\"SELECT\"] = [SocialCalc.Formula.IoFunctions, -2, \"value, range or csv_text [,size]\", \"\", \"gui\", \"<select size='<%=html1_value%>' id='SELECT_<%=cell_reference%>' onchange=\\\"SocialCalc.TriggerIoAction.SelectList('<%=cell_reference%>')\\\" <%=html0_value%>><%=html2_value%></select>\", \"Input\" ];\nSocialCalc.Formula.FunctionList[\"CHECKBOX\"] = [SocialCalc.Formula.IoFunctions, 1, \"value\", \"\", \"gui\", \"<input type='checkbox' id='CHECKBOX_<%=cell_reference%>' <%=checked%> onblur='SocialCalc.CmdGotFocus(null);' onchange=\\\"SocialCalc.TriggerIoAction.CheckBox('<%=cell_reference%>')\\\" >\", \"Input\" ];\nSocialCalc.Formula.FunctionList[\"RADIOBUTTON\"] = [SocialCalc.Formula.IoFunctions, 2, \"value, groupname\", \"\", \"gui\", \"<input type='radio' value='<%=cell_reference%>' id='RADIOBUTTON_<%=cell_reference%>' <%=checked%> name='<%=parameter1_value%>' onblur=\\\"SocialCalc.CmdGotFocus(null);\\\" onclick=\\\"SocialCalc.TriggerIoAction.RadioButton('<%=parameter1_value%>');\\\" >\", \"Input\" ];\n\nSocialCalc.Formula.FunctionList[\"COPYVALUE\"] = [SocialCalc.Formula.IoFunctions, 3, \"trigger_cell, destinationCell, value_or_range\", \"\", \"action\", \"\", \"EventTree\"];\nSocialCalc.Formula.FunctionList[\"COPYFORMULA\"] = [SocialCalc.Formula.IoFunctions, 3, \"trigger_cell, destinationCell, formula_range\", \"\", \"action\", \"\", \"EventTree\"];\nSocialCalc.Formula.FunctionList[\"INSERT\"] = [SocialCalc.Formula.IoFunctions, -2, \"trigger_cell, destination_range [,formula_range,value_or_range,formula_range, ...]\", \"\", \"action\", \"\", \"EventTree\"];\nSocialCalc.Formula.FunctionList[\"DELETEIF\"] = [SocialCalc.Formula.IoFunctions, -1, \"trigger_cell, criteria , test_range\", \"\", \"action\", \"\", \"EventTree\"];\nSocialCalc.Formula.FunctionList[\"COMMAND\"] = [SocialCalc.Formula.IoFunctions, -1, \"trigger_cell, commands\", \"\", \"action\", \"\", \"EventTree\"];\nSocialCalc.Formula.FunctionList[\"COMMANDIF\"] = [SocialCalc.Formula.IoFunctions, -1, \"trigger_cell, conditions, commands\", \"\", \"action\", \"\", \"EventTree\"];\n\nSocialCalc.Formula.FunctionList[\"PANEL\"] = [SocialCalc.Formula.IoFunctions, -1, \"showindices_range_or_csv, panel1_range [, panel2_range , ...]\", \"\", \"gui\", \"\"];\nSocialCalc.Formula.FunctionList[\"SPLASH\"] = [SocialCalc.Formula.IoFunctions, -1, \"splash_panel_range\", \"\", \"gui\", \"\"];\n\nSocialCalc.Formula.FunctionList[\"STYLE\"] = [SocialCalc.Formula.IoFunctions, -1, \"css\", \"\", \"gui\", \"\"];\n\n// on enter input box refresh the auto complete list\nSocialCalc.TriggerIoAction.AddAutocomplete = function(triggerCellId) {\n  var spreadsheet =  window.spreadsheet;\n  if (spreadsheet == null) spreadsheet = window.ss\n  var sheet = spreadsheet.sheet;\n  var scf = SocialCalc.Formula; \n  \n  var parameters = sheet.ioParameterList[triggerCellId];\n  if(typeof parameters === 'undefined') return;\n  \n  var autocompleteSource = SocialCalc.Formula.getStandardizedList(sheet, parameters[1])\n\n  //Overrides the default autocomplete filter function to search only from the beginning of the string\n  $.ui.autocomplete.filter = function (array, term) {\n    // * RegEx Unit Test - https://regex101.com/r/kO6eC4/1\n    var matcher = new RegExp(\"\\\\b\" + $.ui.autocomplete.escapeRegex(term), \"i\");\n    return $.grep(array, function (value) {\n        return matcher.test(value.label || value.value || value);\n    });\n  };\n\n  \n  $(\"#AUTOCOMPLETE_\"+triggerCellId).autocomplete({\n    source: autocompleteSource,\n    minLength: 1,\n    autoFocus: true,\n    select: function(event, ui) {\n      $(this).val(ui.item.label);\n      SocialCalc.TriggerIoAction.AutoComplete(triggerCellId);\n    },\n    change: function (event, ui) {\n      if (ui.item === null) {\n          $(this).val('');\n      }\n      SocialCalc.TriggerIoAction.AutoComplete(triggerCellId);\n    }\n  });  \n}\n// Event triggered, e.g. button/imagebutton clicked. - call linked action formulas \n// eddy TriggerIoAction {\nSocialCalc.TriggerIoAction.Button = function(triggerCellId) {\n var spreadsheet =  window.spreadsheet;\n if (spreadsheet == null) spreadsheet = window.ss\n var sheet = spreadsheet.sheet;\n var scf = SocialCalc.Formula; \n //spreadsheet.editor.EditorScheduleSheetCommands('set A2 value n 10',  true, false);\n \n //spreadsheet.editor.EditorScheduleSheetCommands('sendemail to eddy.nihon',  false, false); \n \n if(typeof sheet.ioEventTree === 'undefined') return;\t\n if(typeof sheet.ioParameterList === 'undefined') return;\n if( sheet.ioEventTree[triggerCellId] === 'undefined' ) return;\n \n for(var actionCellId in sheet.ioEventTree[triggerCellId]) {\n \n\tvar parameters = sheet.ioParameterList[actionCellId];\n\tvar conditionsParameter = null;\n\t\n\tswitch(parameters.function_name) {\n\t  \n\t  case \"COPYVALUE\" :\t    \n\t    var parameterdata = SocialCalc.Formula.getStandardizedValues(sheet, parameters[2]);\n\n      // get row and col of dest cell\n   \t  var destcr = SocialCalc.coordToCr(parameters[1].value);\n   \t  \n   \t  var sheetCommandList = SocialCalc.TriggerIoAction.CopyValueToRange(parameterdata, destcr);\n   \t  spreadsheet.editor.EditorScheduleSheetCommands(sheetCommandList,  true, false);   \t  \n   \t \n\t    break;\n\t  case \"COPYFORMULA\" : \n      var parameterdata = SocialCalc.Formula.getStandardizedValues(sheet, parameters[2]);\n\n      // get row and col of dest cell\n      var destcr = SocialCalc.coordToCr(parameters[1].value);\n      \n      var sheetCommandList = SocialCalc.TriggerIoAction.CopyFormulaToRange(parameterdata, destcr);\n        \n      spreadsheet.editor.EditorScheduleSheetCommands(sheetCommandList,  true, false);\n      break;\n    case \"INSERT\" :  \n      //       # INSERT(trigger_cell, destination_range ,formula_range,value_range,formula_range, ...) // \n      //       insertrow A1      \n      //       insertcol A1\n      var parameterdata = SocialCalc.Formula.getStandardizedValues(sheet, parameters[1]); // destination_range\n      if(parameterdata.type != \"range\") break; // invalid insert, requires range\n      var insertCommand;\n      var colOffset, rowOffset;\n      if (parameterdata.ncols > 1) {  // insert column\n        colOffset = 1;\n        rowOffset = 0;\n        insertCommand = \"insertcol\";\n      }\n      if (parameterdata.nrows > 1) {  // insert row\n        colOffset = 0;\n        rowOffset = 1;\n        insertCommand = \"insertrow\";\n      }\n      var insertcellCoord = parameterdata.cellcoord[colOffset][rowOffset];\n      var sheetCommandList = insertCommand + \" \" + insertcellCoord;\n      var destcr = SocialCalc.coordToCr(insertcellCoord);\n      var sourceDataIndex = 2; \n      while(sourceDataIndex < parameters.length ) {\n        \n        if(parameters[sourceDataIndex].type == \"range\" || parameters[sourceDataIndex].type == \"coord\" || sourceDataIndex % 2 == 1) {\n          copyCellRange = SocialCalc.Formula.getStandardizedValues(sheet, parameters[sourceDataIndex]); // formulas to insert\n          \n          if (sourceDataIndex % 2 == 0) {\n            sheetCommandList = sheetCommandList + \"\\n\" + SocialCalc.TriggerIoAction.CopyFormulaToRange(copyCellRange, destcr);\n          } else {\n            sheetCommandList = sheetCommandList + \"\\n\" + SocialCalc.TriggerIoAction.CopyValueToRange(copyCellRange, destcr);            \n          }\n          if (parameterdata.nrows > 1) destcr.col += copyCellRange.ncols;\n          if (parameterdata.ncols > 1) destcr.row += copyCellRange.nrows;\n          \n        }        \n        sourceDataIndex ++;\n        \n      }\n      spreadsheet.editor.EditorScheduleSheetCommands(sheetCommandList,  true, false);        \n      \n   \t\t break;\n    case \"DELETEIF\" :  //     # DELETEIF(trigger_cell, criteria , test_range) // \n      var criteriaParameter = SocialCalc.Formula.getStandardizedValues(sheet, parameters[1]); // criteria \n      var testRangeParameter = SocialCalc.Formula.getStandardizedValues(sheet, parameters[2]); // test_range - ignore first and last, as it would produce ref error\n\n      // set command list to empty\n      var sheetCommandList = \"\";\n\n      var colOffset, rowOffset, deleteCommand;\n      if (testRangeParameter.ncols > 1 && testRangeParameter.nrows > 1) return; // error invalid range, only one cell wide/high\n      if (testRangeParameter.ncols > 1) {  // delete column\n        colOffset = 1;\n        rowOffset = 0;\n        deleteCommand = \"deletecol\";\n      }\n      if (testRangeParameter.nrows > 1) {  // delete row\n        colOffset = 0;\n        rowOffset = 1;\n        deleteCommand = \"deleterow\";\n      }\n      \n      var criteriaValue = criteriaParameter.celldata[0][0].datavalue;\n      // FOR each source cell\n      for (var i=(testRangeParameter.ncols - colOffset) - 1; i>=colOffset; i--) {  // ignore first and last cell, as it would produce ref error\n        for (var j=(testRangeParameter.nrows - rowOffset) -1 ; j>=rowOffset; j--) {\n          \n          // IF after first source cell THEN  add new line to command list\n      \n          var cell = testRangeParameter.celldata[i][j];\n          if(SocialCalc.Formula.TestCriteria(cell.datavalue, cell.valuetype, criteriaValue) == true) {\n            if (sheetCommandList != \"\" ) sheetCommandList = sheetCommandList + \"\\n\";\n            sheetCommandList = sheetCommandList + deleteCommand + \" \" + testRangeParameter.cellcoord[i][j]; // Note cell.coord becomes invalid when row/coll are inserted/deleted\n          }\n        }\n      }\n      \n      if (sheetCommandList != \"\" ) spreadsheet.editor.EditorScheduleSheetCommands(sheetCommandList,  true, false);        \n      \n      break;\n    case \"COMMANDIF\" :  //    # COMMANDIF(trigger_cell, condition, commands) \n      conditionsParameter = SocialCalc.Formula.getStandardizedValues(sheet, parameters[1]); // commands \n\n      \n    case \"COMMAND\" :  // COMMAND(trigger_cell, commands) \n      var commandsParameter;\n      // set command list to empty\n      var sheetCommandList = \"\";\n      if( conditionsParameter != null) {\n        var commandsParameter = SocialCalc.Formula.getStandardizedValues(sheet, parameters[2]); // commands \n        if (conditionsParameter.ncols != commandsParameter.ncols || conditionsParameter.nrows != commandsParameter.nrows) break;\n      } else {\n        commandsParameter = SocialCalc.Formula.getStandardizedValues(sheet, parameters[1]); // commands         \n      }\n      \n      for (var i=0; i<commandsParameter.ncols; i++) {\n        for (var j=0; j<commandsParameter.nrows; j++) {\n\n          if( conditionsParameter != null) {\n            var conditionCell = conditionsParameter.celldata[i][j];\n            if(conditionCell.datavalue == false) continue;\n          }\n          if (sheetCommandList != \"\" ) sheetCommandList = sheetCommandList + \"\\n\";\n          var cellCommand = commandsParameter.celldata[i][j];  \n          sheetCommandList = sheetCommandList + cellCommand.datavalue.toString().trim();\n          \n        }\n      }\n      if (sheetCommandList != \"\" ) spreadsheet.editor.EditorScheduleSheetCommands(sheetCommandList,  true, false);        \n\n      break;\n      \n  }\n\n } \n\n}\n\n\n/******************************\n * CopyFormulaToRange\n *   copy a range of cells to a destination. Copy the formulas, adjusting any cell references\n * \n * @destcr col and row - destcr = { col:n, row:n }\n * @sourceData  range data - datatype of param must match getStandardizedParameter() return type\n * @return commands to execute to do the copy.  - String of sheet commands, \\n between each command -  \n *   \n ******************************/\n\n/*\n * set B8 text t william              ... coord: \"B8\",  datavalue: \"william\",     datatype: \"t\", formula: \"\",          valuetype: \"t\"\n * set B10 constant nd 41307 2013/2/2 ... coord: \"B10\", datavalue: 41307,         datatype: \"c\", formula: \"2013/2/2\",  valuetype: \"nd\"\n * set B11 value n 1                  ... coord: \"B11\", datavalue: 1,             datatype: \"v\", formula: \"\",          valuetype: \"n\"\n *\n * set B7 formula \"test\"&B3   ... coord: \"B7\",  datavalue: \"testwilliam\", datatype: \"f\", formula: \"\"test\"&B3\", valuetype: \"t\"\n * set C8 formula B8       ... coord: \"C8\",  datavalue: \"william\",     datatype: \"f\", formula: \"B8\",        valuetype: \"t\"\n * set C10 formula B10     ... coord: \"C10\", datavalue: 41307,         datatype: \"f\", formula: \"B10\",       valuetype: \"nd\"\n * set C11 formula B11     ... coord: \"C11\", datavalue: 1,             datatype: \"f\", formula: \"B11\",       valuetype: \"n\"\n *  set B3  formula TEXTBOX(\"\")             ... coord: \"B3\", datavalue: \"william\", datatype: \"f\", formula: \"TEXTBOX(\"william\")\", valuetype: \"tiTEXTBOX\"\n */\n\nSocialCalc.TriggerIoAction.CopyFormulaToRange = function(formulaData, destcr) {\n\n  // set command list to empty\n  var sheetCommandList = \"\";\n  var sheetCommand;\n  \n  // FOR each source cell\n  for (var i=0; i<formulaData.ncols; i++) {\n    for (var j=0; j<formulaData.nrows; j++) {\n  \n      var cell = formulaData.celldata[i][j];\n      // destination cell coord\n      var destCellCoord = SocialCalc.crToCoord(destcr.col + i, destcr.row + j);\n  \n  \n      // IF after first source cell THEN  add new line to command list\n      if (i != 0 || j != 0 ) sheetCommandList = sheetCommandList + \"\\n\";\n  \n  \n      if (typeof cell !== 'undefined' && cell.valuetype != 'b') { // if not blank get cell data\n        var cellDataType = cell.datatype;\n        var cellValueType = cell.valuetype;     \n        var cellDataValue = cell.datavalue;   \n        var cellFormula = cell.formula;\n        \n        if(cellDataType == 'f') {\n          cellFormula = SocialCalc.OffsetFormulaCoords(cellFormula, destcr.col -  formulaData.col1num, destcr.row -  formulaData.row1num);\n          cellDataValue = \"\";\n          cellValueType = \"\";  \n        } else { \n          if(cellDataType != \"c\") cellFormula = \"\";  // clear text and number types   but not constant type like date/time      \n        }\n        \n        sheetCommand = 'set '+destCellCoord+ ' ' + SocialCalc.Constants.cellDataType[cellDataType] + ' ' +cellValueType + ' '+ SocialCalc.encodeForSave(cellDataValue) + ' ' + cellFormula;            \n      } else { \n        sheetCommand = 'set '+destCellCoord+ ' empty';        \n      }          \n      sheetCommandList += sheetCommand.trim();\n    }\n  }\n\n  return sheetCommandList;\n\n}\n\n/******************************\n * CopyValueToRange\n *   copy a range of cells to a destination. Copy only the values\n * \n * @destcr col and row - destcr = { col:n, row:n }\n * @sourceData  range data - datatype of param must match getStandardizedParameter() return type\n * @return commands to execute to do the copy.  - String of sheet commands, \\n between each command -  \n *   \n ******************************/\nSocialCalc.TriggerIoAction.CopyValueToRange = function(sourceData, destcr) {\n\n\n    //----------------------\n    // set command list to empty\n    var sheetCommandList = \"\";\n    var sheetCommand;\n    \n    // FOR each source cell\n    for (var i=0; i<sourceData.ncols; i++) {\n      for (var j=0; j<sourceData.nrows; j++) {\n    \n        var cell = sourceData.celldata[i][j];\n        // destination cell coord\n        var destCellCoord = SocialCalc.crToCoord(destcr.col + i, destcr.row + j);\n    \n    \n        // IF after first source cell THEN  add new line to command list\n        if (i != 0 || j != 0 ) sheetCommandList = sheetCommandList + \"\\n\";\n    \n    \n        // copyvalue to set command\n        // take the cell from copyvalue source and convert it to a set command to set the destination\n        // e.g. set D3 text t push me \n        // e.g. set D3 value v 10   \n        // e.g. set D5 constant n% 0.1 10%\n        // e.g. set D6 constant nd 41922 10/10/2014\n        if (typeof cell !== 'undefined' && cell.valuetype != 'b') { // if not blank get cell data\n          var cellDataType = cell.datatype;\n          var cellValueType = cell.valuetype;     \n          var cellDataValue = cell.datavalue;   \n          var cellFormula = cell.formula;\n          \n          if(cellDataType == 'f') {\n            cellFormula = \"\";\n            cellDataType = cellValueType;\n            if(cellValueType != \"n\" && cellValueType.charAt(0) != \"t\") {\n              cellDataType = \"c\"; // for Date type etc \n              cellFormula = cell.displaystring;\n            }\n            if(cellValueType.charAt(0) == \"t\") cellDataType = \"t\";          \n          } else {\n            if(cellDataType != \"c\") cellFormula = \"\";  // clear text and number types   but not constant type like date/time      \n          }\n          \n    \n          sheetCommand = 'set '+destCellCoord+ ' ' + SocialCalc.Constants.cellDataType[cellDataType] + ' ' +cellValueType + ' '+ SocialCalc.encodeForSave(cellDataValue) + ' ' + cellFormula;\n          \n      } else { \n        sheetCommand = 'set '+destCellCoord+ ' empty';        \n      }\n      sheetCommandList += sheetCommand.trim();\n    }\n  }\n  \n  return sheetCommandList;  \n\n}\n//----------------------\n\n\n// optionalTriggerCellId - edited cell - used by EMAILONEDIT and EMAILONEDITIF\n//onClick=EMAIL \nSocialCalc.TriggerIoAction.Email = function(emailFormulaCellId, optionalTriggerCellId) {\n     optionalTriggerCellId = typeof optionalTriggerCellId !== 'undefined' ? optionalTriggerCellId : null;\n\t var scf = SocialCalc.Formula;\t\n\t var spreadsheet =  window.spreadsheet;\n\t if (spreadsheet == null) spreadsheet = window.ss\n\n\t var sheet = spreadsheet.sheet;\n\t var cell = sheet.cells[emailFormulaCellId];\n\t \n\t if(typeof sheet.ioParameterList === 'undefined') return;\n\t \n\t var parameters = sheet.ioParameterList[emailFormulaCellId];\n   if(typeof parameters === 'undefined') return;\n   //var debugLog = \"debug TriggerIoAction.Email\\n\"; //eddy\n\n\t //spreadsheet.editor.EditorScheduleSheetCommands('sendemail to eddy.nihon',  false, false); \n\t // grab array for TO, SUBJECT and BODY \n\t var parameterValues = [];\n\t var parameterCellRefs = []; // OnEdit uses to workout what row/col was edited\n\t var maxRangeSize = 1;\n\t for(var index=0; index < parameters.length; index ++) {\n\t\t if(parameters[index].type.charAt(0) == 't') {\n\t\t\t parameterValues[index] = [String(parameters[index].value).replace(/ /g, \"%20\")];\n\t\t }\n\t\t if(parameters[index].type == 'coord') {\n\t\t\t parameterValues[index] = [String(sheet.GetAssuredCell(parameters[index].value).datavalue).replace(/ /g, \"%20\")];\n\n\t\t }\n\t\t if(parameters[index].type == 'range') {\n\t\t      var rangeinfo = scf.DecodeRangeParts(sheet, parameters[index].value);\n\t\t      parameterValues[index] = [];\n\t\t      parameterCellRefs[index] = [];\n\t\t      var rangeSizeCounter = 0;\n\t\t      for (var i=0; i<rangeinfo.ncols; i++) {\n\t\t         for (var j=0; j<rangeinfo.nrows; j++) {\n\n\t\t            var cellcr = SocialCalc.crToCoord(rangeinfo.col1num + i, rangeinfo.row1num + j);\n\t\t            var cell = rangeinfo.sheetdata.GetAssuredCell(cellcr);\n\t\t            parameterValues[index].push(cell.datavalue.toString().replace(/ /g, \"%20\"));\n\t\t            parameterCellRefs[index].push(cellcr);\n\t\t            rangeSizeCounter++;\n\t\t         }\n\t\t      }\n\t\t      if(rangeSizeCounter > maxRangeSize) maxRangeSize = rangeSizeCounter;\t\t\t \n\t\t }\n\t }\n\n\t \n    var conditionIndex = -1; // check if email formula is conditional, -1 = not conditional \n    var toAddressParamOffset = 0;\n    switch (parameters.function_name) {\n\n      case \"EMAILIF\":\n    \t  conditionIndex = 0;\n      case \"EMAILAT\":\n      case \"EMAILONEDIT\":\n    \t  toAddressParamOffset = 1;\n    \t  break;\n      case \"EMAILONEDITIF\":\n      case \"EMAILATIF\":\n       \t  conditionIndex = 1;\n    \t  toAddressParamOffset = 2;\n    \t  break;\n    \t  \n      case \"EMAIL\":\n    \t  break;\n    }\t \n\n    \n    switch (parameters.function_name) {\n        case \"EMAILONEDIT\":\n        case \"EMAILONEDITIF\":\n\t       if(optionalTriggerCellId && parameters[0].type == 'coord' && parameters[0].value == optionalTriggerCellId ) optionalTriggerCellId = null;\n\t       break;\n\t   default :\n\t\t   optionalTriggerCellId = null;\n    }\n\n     var setStatusBarMessage = false;\n\n   var emailContentsList = [];\n\n\t for(var rangeIndex = maxRangeSize -1; rangeIndex > -1; rangeIndex-- ) {\n\t\t \n\t\t // if email formula is conditional && condition is false then skip \n\t\t if(conditionIndex != -1) {\n\t\t\t var conditionRangeIndex = (rangeIndex >= parameterValues[conditionIndex].length) ? 0 : rangeIndex;\n\t\t\t if(parameterValues[conditionIndex][conditionRangeIndex] == false) continue;\t\t\t \n\t\t }\n\n\t\t if(optionalTriggerCellId && optionalTriggerCellId != parameterCellRefs[0][rangeIndex]) continue;\n\t\t // send: to, subject, body to server \t\t \n\t\t var toaddressRangeIndex = (rangeIndex >= parameterValues[toAddressParamOffset].length) ? 0 : rangeIndex;\n\t\t var subjectsRangeIndex = (rangeIndex >= parameterValues[toAddressParamOffset+1].length) ? 0 : rangeIndex;\n\t\t var bodyRangeIndex = (rangeIndex >= parameterValues[toAddressParamOffset+2].length) ? 0 : rangeIndex;\n\t\t \n\t\t var emailContents = parameterValues[toAddressParamOffset][toaddressRangeIndex]+' '+parameterValues[toAddressParamOffset+1][subjectsRangeIndex]+' '+parameterValues[toAddressParamOffset+2][bodyRangeIndex];\n\t\t setStatusBarMessage = true;\n\t\t sheet.ScheduleSheetCommands('sendemail '+emailContents,  false); \n\t\t // cron job email - ignores ScheduleSheetCommands so send via return value\n\t\t emailContentsList.push([parameterValues[toAddressParamOffset][toaddressRangeIndex], parameterValues[toAddressParamOffset+1][subjectsRangeIndex], parameterValues[toAddressParamOffset+2][bodyRangeIndex]]);\n\t\t //debugLog = debugLog + \"emailContents \"+emailContents+\"\\n\"; //eddy\n\t\t \n\t }\n\t //console.log( \"log formula1.js Email\");\n\t // update status bar to indicate email is being sent\n\t if(setStatusBarMessage) SocialCalc.EditorSheetStatusCallback(null, \"emailing\", null, spreadsheet.editor);\t \n   return emailContentsList; // cron job email\n\n}\n\n/*\n * creates command on form: submitform \\rtimestamp\\rB2value\\rC2value ...\n */\n\nSocialCalc.TriggerIoAction.Submit = function(triggerCellId) {\n  var formDataViewer = (SocialCalc.CurrentSpreadsheetControlObject != null) \n  ? SocialCalc.CurrentSpreadsheetControlObject.formDataViewer \n  : SocialCalc.CurrentSpreadsheetViewerObject.formDataViewer;\n\n  if(formDataViewer != null && formDataViewer.loaded == true) {\n\n    var spreadsheet =  window.spreadsheet;\n    if (spreadsheet == null) spreadsheet = window.ss\n    var sheet = spreadsheet.sheet;\n    \n    \n    var date = new Date();\n    var formDataValues = \"\"+date.getFullYear()  + \"-\" + (date.getMonth() +1 )    + \"-\" +  date.getDate() \n       + \" \" +  date.getHours()     + \":\" +  date.getMinutes()     + \":\" +  date.getSeconds();\n    \n    for(var colIndex = 2; colIndex <= formDataViewer.formFieldsLength +1 ; colIndex++) {\n      var valueCoord = SocialCalc.crToCoord(colIndex, 2);\n      formDataValues += \"\\r\" + formDataViewer.sheet.cells[valueCoord].datavalue;\n    }  \n    \n    sheet.ScheduleSheetCommands('submitform \\r'+formDataValues,  false);\n  }\n}\n\n//onChange=select tag (combobox) \nSocialCalc.TriggerIoAction.SelectList = function(selectListCellId) {\n  var getHTMLselectListCellValue = function( selectListWidget ) { return selectListWidget.value; };\n  var function_name = \"SELECT\";\n  SocialCalc.TriggerIoAction.updateInputWidgetFormula(function_name, selectListCellId, getHTMLselectListCellValue );\n}\n\n//onKeyUp=AutoComplete\nSocialCalc.TriggerIoAction.AutoComplete = function(autoCompleteCellId) {\n  var getHTMLAutoCompleteCellValue = function( autoCompleteWidget ) { return autoCompleteWidget.value; };\n  var function_name = \"AUTOCOMPLETE\";\n  SocialCalc.TriggerIoAction.updateInputWidgetFormula(function_name, autoCompleteCellId, getHTMLAutoCompleteCellValue );\n}\n\n// onKeyUp=TextBox \nSocialCalc.TriggerIoAction.TextBox = function(textBoxCellId) {\n  var getHTMLTextBoxCellValue = function( textBoxWidget ) { return textBoxWidget.value; };\n  var function_name = \"TEXTBOX\";\n  SocialCalc.TriggerIoAction.updateInputWidgetFormula(function_name, textBoxCellId, getHTMLTextBoxCellValue );\n}\n\n//onKeyUp=CheckBox \nSocialCalc.TriggerIoAction.CheckBox = function(checkBoxCellId) {\n  var getHTMLCheckBoxCellValue = function( checkBoxWidget ) { return (checkBoxWidget.checked ? \"TRUE\" : \"FALSE\") };\n  var function_name = \"CHECKBOX\"\n  SocialCalc.TriggerIoAction.updateInputWidgetFormula(function_name, checkBoxCellId, getHTMLCheckBoxCellValue );\n}\n\n//Radio Button state changed\n// onclick when selected\n// update true/false in formula param\nSocialCalc.TriggerIoAction.RadioButton = function(radioButtonGroupName) {\n  var getHTMLRadioButtonValue = function( radioButtonWidget ) { return (radioButtonWidget.checked ? \"TRUE\" : \"FALSE\") };\n  var function_name = \"RADIOBUTTON\"\n  // for each radio button in group\n  $('input[name=\"'+radioButtonGroupName+'\"]').each(function () {\n     SocialCalc.TriggerIoAction.updateInputWidgetFormula(function_name,  $(this).attr('id').replace(/RADIOBUTTON_/,''), getHTMLRadioButtonValue );\n  });\n}\n\n\nSocialCalc.TriggerIoAction.updateInputWidgetFormula = function(function_name, widgetCellId, getHTMLWidgetCellValue ) {\n\n var spreadsheet =  window.spreadsheet;\n if (spreadsheet == null) spreadsheet = window.ss\n var sheet = spreadsheet.sheet;\n var cell = sheet.cells[widgetCellId];\n var parameters = sheet.ioParameterList[widgetCellId];\n if(typeof parameters === 'undefined') return;\n \n var cell_widget=document.getElementById(function_name+'_'+widgetCellId);\n var inputValue = getHTMLWidgetCellValue(cell_widget);\n inputValue = SocialCalc.encodeForSave(inputValue);\n\n var sheetCommand = 'set '+widgetCellId+ ' formula '+ function_name+'(\"' +inputValue+'\"';\n for(var paramIndex = 1; paramIndex < parameters.length; paramIndex++) {\n   if(parameters[paramIndex].type.charAt(0) == 'n') {\n     sheetCommand += ',' + parameters[paramIndex].value;\n   }\n   if(parameters[paramIndex].type.charAt(0) == 't') {\n     sheetCommand += ',\"' + parameters[paramIndex].value + '\"';\n   }\n   if(parameters[paramIndex].type == 'range') {\n     // convert:     E5!TO0DB4GSXZJ3|E8|   -> TO0DB4GSXZJ3!E5:E8\n     // convert:     E5|E8|   -> E5:E8\n     \n     // * RegEx Unit Test **  https://regex101.com/r/zF1dA8/1\n     sheetCommand += ',' + parameters[paramIndex].value.toString().replace(/(\\$?[A-Z]+\\$?[0-9]+)([!]?)([^|]*)[|](\\$?[A-Z]+\\$?[0-9]+)[|]/i,\"$3$2$1:$4\"); ;\n   }\n   if(parameters[paramIndex].type == 'coord') {\n     sheetCommand += ',' + parameters[paramIndex].value;\n   }   \n }\n\n   // for(var parseIndex = 3; parseIndex < cell.parseinfo.length -1; parseIndex++) {\n//   if(cell.parseinfo[parseIndex].type == 6)   sheetCommand += '\"' + cell.parseinfo[parseIndex].text + '\"';\n//   else sheetCommand +=  cell.parseinfo[parseIndex].text ;\n// }\n sheetCommand += ')';\n // add style formula if css has been added\n if(parameters.cssParameter) {\n   sheetCommand += \"+style(\"+  parameters.cssParameter+ \")\"; \n }\n //SocialCalc.CmdGotFocus(cell_widget);\n\n spreadsheet.editor.EditorScheduleSheetCommands(sheetCommand,  true, false);\n \n SocialCalc.TriggerIoAction.UpdateFormDataSheet(function_name, widgetCellId, inputValue);\n}\n\n// On edit of Form Input widget - Update form data sheet \nSocialCalc.TriggerIoAction.UpdateFormDataSheet = function(function_name, formCellId, inputValue) {\n  var formDataViewer = (SocialCalc.CurrentSpreadsheetControlObject != null) \n       ? SocialCalc.CurrentSpreadsheetControlObject.formDataViewer \n       : SocialCalc.CurrentSpreadsheetViewerObject.formDataViewer; \n  if (formDataViewer == null) return;\n\n  var formFieldName = (function_name+formCellId).toLowerCase();\n  if(formDataViewer.formFields[formFieldName] != null) {       \n    var valueCoord = SocialCalc.crToCoord(formDataViewer.formFields[formFieldName], 2);\n    formDataViewer.sheet.ScheduleSheetCommands(\"set \"+valueCoord+\" text t \"+inputValue, false);    \n  }\n}\n\n\n\n//getStandardizedValues(parameterData)  \n// gets cell data of range/coord OR param value as cell data - also get coord data as cell.coord is invalid when rows deleted\n// CALL getProcessedParameter  with request for values \nSocialCalc.Formula.getStandardizedValues = function(sheet, parameterData) {\n  return SocialCalc.Formula.getStandardizedParameter(sheet, parameterData, true, true);\n}  \n\n\n// getStandardizedCoords(parameterData)  // gets coord(s) of range/coord\n// CALL getProcessedParameter  with request for coord info\nSocialCalc.Formula.getStandardizedCoords = function(sheet, parameterData) {\n  return SocialCalc.Formula.getStandardizedParameter(sheet, parameterData, true, false);\n}  \n\n/***************\n * getStandardizedList\n * @sheet spreadsheet sheet\n * @listParameter csv or array or single value - convert into single array\n * @return array of values - one dimension\n ****************/\nSocialCalc.Formula.getStandardizedList = function(sheet, listParameter) {\n  \n  var listValues = [];\n  var parameterdata = SocialCalc.Formula.getStandardizedValues(sheet, listParameter);\n  \n  if(parameterdata.ncols == 1 && parameterdata.nrows == 1) {\n    listValues = String(parameterdata.celldata[0][0].datavalue).split(',');\n  } else {\n    for (var i=0; i<parameterdata.ncols; i++) {\n      for (var j=0; j<parameterdata.nrows; j++) {\n         var cell = parameterdata.celldata[i][j];\n         listValues.push(cell.datavalue.toString());\n      }\n   }    \n  }\n  return listValues;\n}\n\n/**************************\n * getStandardizedParameter(parameterData, includeCellCoord, includeCellData)\n *\n * Convert formula parameter to standard data structure and return it.\n * \n * Formula parameters can be value/string/coord/range\n * value/string: convert to celldata:  [[coord:A1, datatype:t/c/v/f, valuetype:t/nd/n/b, datavalue:string/value , formula:\"test\"&B3]] \n * coord/range: get celldata from cell\n * \n *  return:\n ******  data structure returned\n  { \n     value:A1:B2/A1/string/value,\n     type:range/coord/t/n/b/eErrorType,\n     celldata: [][] = {coord:invalid, datatype:t/c/v/f, valuetype:t/nd/n/b, datavalue:string/value , formula:\"sum(A1)\"},  // coord is invalid after insert/delete row/col\n     cellcoord: [][] = A1,   // if requested\n     ncols:n,\n     nrows:n\n     col1num:n\n     row1num:n\n   }\n\n *\n * ------------------- type ----------------- \n * From docs for SocialCalc.Formula.EvaluatePolish  \n * type: can have these values (many are type and sub-type as two or more letters):\n *   \"tw\", \"th\", \"t\", \"n\", \"nt\", \"coord\", \"range\", \"eErrorType\", \"b\" (blank) - removed: \"start\"\n * valuetype: is set to type if the parameter is constant and not a cell reference\n * ------------------------------------------\n *\n *\n *******************************/\nSocialCalc.Formula.getStandardizedParameter = function(sheet, parameterData, includeCellCoord, includeCellData) {\n  \n  //SET result = {}\n  //SET store param values in result (.value .type)\n  var result = { type: parameterData.type, value:parameterData.value};\n  if(includeCellData) result.celldata = [];\n           \n  //IF parameter is not a cell reference i.e.  type is: \"tw\", \"th\", \"t\", \"n\", \"nt\"  THEN    \n  if(parameterData.type != 'coord' && parameterData.type != 'range') {\n    // Setup dummy cell reference information\n    // SET rows and cols to 1 cell   \n    result.ncols = 1;\n    result.nrows = 1;\n    result.col1num = 1;\n    result.row1num = 1;\n    \n    // IF requested: cell coord value THEN\n    if(includeCellCoord) {\n      // SET coord to default empty value - \n      result.cellcoord = null; \n    } // END IF\n    \n    // IF requested: cell data  THEN\n    if(includeCellData) {\n      // SET data values to dummy cell data using parameter \n      // result.celldata = [[ \n      //   coord to default null value - as illegal request\n      //   datatype  - t/v  - const can only have 2 value types\n      //   valuetype (n/b/e/t)  - set to same as parameterData.type - check date/time types don't cause issue\n      //   datavalue set to parameterData.type \n      //   formula set to empty -  because not range/coord\n      // ] ] \n      result.celldata[0] = [];\n      var constantDatatype = (parameterData.type==\"n\") ? \"v\" : ((parameterData.type==\"t\") ? parameterData.type : \"c\");\n      result.celldata[0][0] = {coord:null,datatype:constantDatatype,valuetype: parameterData.type,datavalue:parameterData.value };\n    } // END IF\n    \n  } else {\n    // param type is \"coord\" or \"range\" \n\n    var scf = SocialCalc.Formula; \n    \n    var sourcerangeinfo;\n    if(parameterData.type == 'coord') { \n      var sourceCoord = SocialCalc.Formula.PlainCoord(parameterData.value);\n      sourcerangeinfo = scf.DecodeRangeParts(sheet, sourceCoord + \"|\"+ sourceCoord +\"|\" );\n    }\n    \n    if(parameterData.type == 'range') {\n      sourcerangeinfo = scf.DecodeRangeParts(sheet, parameterData.value);\n    }\n    \n    // if coords requested,  init coord array\n    if(includeCellCoord) result.cellcoord = []; \n    \n    for (var i=0; i<sourcerangeinfo.ncols; i++) {\n        for (var j=0; j<sourcerangeinfo.nrows; j++) {\n          var cellcoord = SocialCalc.crToCoord(sourcerangeinfo.col1num + i, sourcerangeinfo.row1num + j);\n           // IF requested: cell coord value THEN\n          if(includeCellCoord) {           \n             // SET coord in array to coord of cell\n            if(typeof result.cellcoord[i] === 'undefined') result.cellcoord[i] = [];            \n            result.cellcoord[i][j] = cellcoord;            \n          } // END IF\n\n          // IF requested: cell data  THEN\n          if(includeCellData) {\n          \n            // SET get cell from sheet and store values \n            if(typeof result.celldata[i] === 'undefined') result.celldata[i] = [];                        \n            var cell = sourcerangeinfo.sheetdata.GetAssuredCell(cellcoord);\n            result.celldata[i][j] = cell; \n          } // END IF\n        }\n    }\n    // SET rows and cols to range - i.e. sourcerangeinfo -   ncols:n,       nrows:n       col1num:n      row1num:n\n    result.ncols = sourcerangeinfo.ncols;\n    result.nrows = sourcerangeinfo.nrows;\n    result.col1num = sourcerangeinfo.col1num;\n    result.row1num = sourcerangeinfo.row1num;\n    \n  }  //END IF\n    \n  //RETURN \n  return result;\n}\n\n\n\n\n\n\n// -----------------------------------------\n// }\n// -----------------------------------------\n\n\n\n\n//\n// SHEET CACHE\n//\n\nSocialCalc.Formula.SheetCache = {\n\n   // Sheet data: Attributes are each sheet in the cache with values of an object with:\n   //\n   //    sheet: sheet-obj (or null, meaning not found)\n   //    recalcstate: constants.asloaded = as loaded\n   //                 constants.recalcing = being recalced now\n   //                 constants.recalcdone = recalc done\n   //    name: name of sheet (in case just have object and don't know name)\n   //\n\n   sheets: {},\n\n   // Waiting for loading:\n   // If sheet is not in cache, this is set to the sheetname being loaded\n   // so it can be tested in the recalc loop to start load and then wait until restarted.\n   // Reset to null before restarting.\n\n   waitingForLoading: null,\n\n   // Constants to use for setting sheets[*].recalcstate:\n\n   constants: {asloaded: 0, recalcing: 1, recalcdone: 2},\n\n   loadsheet: null // (deprecated - use SocialCalc.RecalcInfo.LoadSheet)\n\n   };\n\n//\n// othersheet = SocialCalc.Formula.FindInSheetCache(sheetname)\n//\n// Returns a SocialCalc.Sheet object corresponding to string sheetname\n// or null if the sheet is not available or in error.\n//\n// Each sheet is loaded only once and then stored in a cache.\n// Loading is handled elsewhere, e.g., in the recalc loop.\n//\n\nSocialCalc.Formula.FindInSheetCache = function(sheetname) {\n\n   var str;\n   var sfsc = SocialCalc.Formula.SheetCache;\n\n   var nsheetname = SocialCalc.Formula.NormalizeSheetName(sheetname); // normalize different versions\n\n   if (sfsc.sheets[nsheetname]) { // a sheet by that name is in the cache already\n      return sfsc.sheets[nsheetname].sheet; // return it.\n      }\n\n   if (sfsc.waitingForLoading) { // waiting already - only queue up one\n      return null; // return not found\n      }\n\n   if (sfsc.loadsheet) { // Deprecated old format synchronous callback\nalert(\"Using SocialCalc.Formula.SheetCache.loadsheet - deprecated\");\n      return SocialCalc.Formula.AddSheetToCache(nsheetname, sfsc.loadsheet(nsheetname));\n      }\n\n   sfsc.waitingForLoading = nsheetname; // let recalc loop know that we have a sheet to load\n\n   return null; // return not found\n\n   }\n\n//\n// newsheet = SocialCalc.Formula.AddSheetToCache(sheetname, str, live)\n//\n// Adds a new sheet to the sheet cache.\n// Returns the sheet object filled out with the str (a saved sheet).\n//\n\nSocialCalc.Formula.AddSheetToCache = function(sheetname, str, live) {\n\n   var newsheet = null;\n   var sfsc = SocialCalc.Formula.SheetCache;\n   var sfscc = sfsc.constants;\n   var newsheetname = SocialCalc.Formula.NormalizeSheetName(sheetname);\n\n   if (str) {\n      newsheet = new SocialCalc.Sheet();\n      newsheet.ParseSheetSave(str);\n      }\n\n   sfsc.sheets[newsheetname] = {sheet: newsheet, recalcstate: sfscc.asloaded, name: newsheetname};\n\n   SocialCalc.Formula.FreshnessInfo.sheets[newsheetname] = (typeof(live) == \"undefined\" || live === false);\n\n   return newsheet;\n\n   }\n\n//\n// nsheet = SocialCalc.Formula.NormalizeSheetName(sheetname)\n//\n\nSocialCalc.Formula.NormalizeSheetName = function(sheetname) {\n\n   if (SocialCalc.Callbacks.NormalizeSheetName) {\n      return SocialCalc.Callbacks.NormalizeSheetName(sheetname);\n      }\n   else {\n      return sheetname.toLowerCase();\n      }\n   }\n\n//\n// REMOTE FUNCTION INFO\n//\n\nSocialCalc.Formula.RemoteFunctionInfo = {\n\n   // Waiting for server:\n   // If waiting for an XHR response from the server, this is set to some non-blank status text\n   // so it can be tested in the recalc loop to start load and then wait until restarted.\n   // Reset to null before restarting.\n\n   waitingForServer: null\n\n   };\n\n//\n// FRESHNESS INFO\n//\n// This information is generated during recalc.\n// It may be used to help determine when the recalc data in a spreadsheet\n// may be out of date.\n// For example, it may be used to display a message like:\n// \"Dependent on sheet 'FOO' which was updated more recently than this printout\"\n\nSocialCalc.Formula.FreshnessInfo = {\n\n   // For each external sheet referenced successfully an attribute of that name with value true to keep the sheet cached.\n   // Value false means the sheet is reloaded at each recalc.\n\n   sheets: {},\n\n   // For each volatile function that is called an attribute of that name with value true.\n\n   volatile: {},\n\n   // Set to false when started and true when recalc completes\n\n   recalc_completed: false\n\n   };\n\nSocialCalc.Formula.FreshnessInfoReset = function() {\n\n   var scffi = SocialCalc.Formula.FreshnessInfo;\n   var scfsc = SocialCalc.Formula.SheetCache;\n\n   // Loop through sheets freshness, deleting cached sheets that should be reloaded.\n\n   for (var sheet in scffi.sheets) {\n      if (scffi.sheets[sheet] === false) {\n         delete scfsc.sheets[sheet];\n         }\n      }\n   \n   // Reset freshness info.\n\n   scffi.sheets = {};\n   scffi.volatile = {};\n   scffi.recalc_completed = false;\n\n   }\n\n//\n// MISC ROUTINES\n//\n\n//\n// result = SocialCalc.Formula.PlainCoord(coord)\n//\n// Returns: coord without any $'s\n//\n\nSocialCalc.Formula.PlainCoord = function(coord) {\n\n   if (coord.indexOf(\"$\") == -1) return coord;\n\n   return coord.replace(/\\$/g, \"\"); // remove any $'s\n\n   }\n\n//\n// result = SocialCalc.Formula.OrderRangeParts(coord1, coord2)\n//\n// Returns: {c1: col, r1: row, c2: col, r2 = row} with c1/r1 upper left\n//\n\nSocialCalc.Formula.OrderRangeParts = function(coord1, coord2) {\n\n   var cr1, cr2;\n   var result = {};\n\n   cr1 = SocialCalc.coordToCr(coord1);\n   cr2 = SocialCalc.coordToCr(coord2);\n   if (cr1.col > cr2.col) { result.c1 = cr2.col; result.c2 = cr1.col; }\n   else { result.c1 = cr1.col; result.c2 = cr2.col; }\n   if (cr1.row > cr2.row) { result.r1 = cr2.row; result.r2 = cr1.row; }\n   else { result.r1 = cr1.row; result.r2 = cr2.row; }\n\n   return result;\n\n   }\n\n//\n// cond = SocialCalc.Formula.TestCriteria(value, type, criteria)\n//\n// Determines whether a value/type meets the criteria.\n// A criteria can be a numeric value, text beginning with <, <=, =, >=, >, <>, text by itself is start of text to match.\n// Used by a variety of functions, including the \"D\" functions (DSUM, etc.).\n//\n// Returns true or false\n//\n\nSocialCalc.Formula.TestCriteria = function(value, type, criteria) {\n\n   var comparitor, basestring, basevalue, cond, testvalue;\n\n   if (criteria == null) { // undefined (e.g., error value) is always false\n      return false;\n      }\n\n   criteria = criteria + \"\";\n   comparitor = criteria.charAt(0); // look for comparitor\n   if (comparitor == \"=\" || comparitor == \"<\" || comparitor == \">\") {\n      basestring = criteria.substring(1);\n      }\n   else {\n      // check for '*' or '?' in search string - wildcard\n      if (criteria.search(/([^~]\\*|^\\*)/) != -1 || criteria.search(/([^~]\\?|^\\?)/) != -1) {\n         comparitor = \"regex\";\n         if (criteria == \"*\") {\n            // \"*\" means cell contains 'anything'\n            basestring = \".+\";\n         } else {\n             // convert Excel syntax to regex syntax. * -> .*    ? -> .?    ~* -> \\*    ~? -> \\?\n             // there are no negative lookbehinds in Javascript. Reverse the string and do negative lookaheads on ~? and ~*\n             basestring = criteria.split(\"\").reverse().join(\"\");\n             basestring = basestring.replace(/\\?(?=[^~])|\\?$/g, \"?.\").replace(/\\?~/g, \"?\\\\\").replace(/\\*(?=[^~])|\\*$/g, \"*.\").replace(/\\*~/, \"*\\\\\");\n             basestring = basestring.split(\"\").reverse().join(\"\");\n         }\n         basestring = \"^\" + basestring + \"$\";\n      } else {\n          comparitor = criteria.substring(0,2);\n          if (comparitor == \"<=\" || comparitor == \"<>\" || comparitor == \">=\") {\n             basestring = criteria.substring(2);\n          } else {\n             comparitor = \"none\";\n             basestring = criteria;\n          }\n      }\n   }\n\n   basevalue = SocialCalc.DetermineValueType(basestring); // get type of value being compared\n   if (!basevalue.type) { // no criteria base value given\n      if (comparitor == \"none\") { // blank criteria matches nothing\n         return false;\n         }\n      if (type.charAt(0) == \"b\") { // comparing to empty cell\n         if (comparitor == \"=\") { // empty equals empty\n            return true;\n            }\n         }\n      else {\n         if (comparitor == \"<>\") { // \"something\" does not equal empty\n            return true;\n            }\n         }\n      return false; // otherwise false\n      }\n\n   cond = false;\n\n   if (basevalue.type.charAt(0) == \"n\" && type.charAt(0) == \"t\") { // criteria is number, but value is text\n      testvalue = SocialCalc.DetermineValueType(value);\n      if (testvalue.type.charAt(0) == \"n\") { // could be number - make it one\n         value = testvalue.value;\n         type = testvalue.type;\n         }\n      }\n\n   if (type.charAt(0) == \"n\" && basevalue.type.charAt(0) == \"n\") { // compare two numbers\n      value = value - 0; // make sure numbers\n      basevalue.value = basevalue.value - 0;\n      switch (comparitor) {\n         case \"<\":\n            cond = value < basevalue.value;\n            break;\n\n         case \"<=\":\n            cond = value <= basevalue.value;\n            break;\n\n         case \"=\":\n         case \"none\":\n            cond = value == basevalue.value;\n            break;\n\n         case \">=\":\n            cond = value >= basevalue.value;\n            break;\n\n         case \">\":\n            cond = value > basevalue.value;\n            break;\n\n         case \"<>\":\n            cond = value != basevalue.value;\n            break;\n         }\n      }\n\n   else if (type.charAt(0) == \"e\") { // error on left\n      cond = false;\n      }\n\n   else if (basevalue.type.charAt(0) == \"e\") { // error on right\n      cond = false;\n      }\n\n   else { // text, maybe mixed with number or blank\n      if (type.charAt(0) == \"n\") {\n         value = SocialCalc.format_number_for_display(value, \"n\", \"\");\n         }\n      if (basevalue.type.charAt(0) == \"n\") {\n         return false; // if number and didn't match already, isn't a match\n         }\n\n      value = value ? value.toLowerCase() : \"\";\n      basevalue.value = basevalue.value ? basevalue.value.toLowerCase() : \"\";\n\n      switch (comparitor) {\n         case \"<\":\n            cond = value < basevalue.value;\n            break;\n\n         case \"<=\":\n            cond = value <= basevalue.value;\n            break;\n\n         case \"=\":\n            cond = value == basevalue.value;\n            break;\n\n         case \"none\":\n            cond = value.substring(0, basevalue.value.length) == basevalue.value;\n            break;\n\n         case \">=\":\n            cond = value >= basevalue.value;\n            break;\n\n         case \">\":\n            cond = value > basevalue.value;\n            break;\n\n         case \"<>\":\n            cond = value != basevalue.value;\n            break;\n\n         case \"regex\":\n            try {\n              cond = value.search(new RegExp(basevalue.value)) != -1;\n            } catch(e) {\n              cond = false; // regex invalid (e.g., error value) is always false\n            }\n            break;\n         }\n      }\n\n   return cond;\n\n   }\n\n//\n/*\n// The module of the SocialCalc package for the optional popup menus in socialcalcspreadsheetcontrol.js\n//\n// (c) Copyright 2009 Socialtext, Inc.\n// All Rights Reserved.\n//\n// The contents of this file are subject to the Artistic License 2.0; you may not\n// use this file except in compliance with the License. You may obtain a copy of \n// the License at http://socialcalc.org/licenses/al-20/.\n//\n// Some of the other files in the SocialCalc package are licensed under\n// different licenses. Please note the licenses of the modules you use.\n//\n// Code History:\n//\n// Initially coded by Dan Bricklin of Software Garden, Inc., for Socialtext, Inc.\n//\n*/\n\n   var SocialCalc; // All values are stored in the master SocialCalc object\n   if (!SocialCalc) {\n      SocialCalc = {};\n      }\n\n   // The main Popup data -- there is only one set\n\n   SocialCalc.Popup = {};\n\n   // Routines and values for each type of control, indexed by type name\n   // The value for each is an object constructed as follows:\n   //\n   //    Create = function(type, id, attribs)\n   //    Initialize = function(type, id, data)\n   //    SetValue = function(type, id, value)\n   //    GetValue = function(type, id) returns value\n   //    SetDisabled = function(type, id, t/f)\n   //    Show = function(type, id)\n   //    Hide = function(type, id)\n   //    Cancel = function(type, id)\n   //    Reset = function(type)\n   //\n   //    data = object to hold type-specific data\n   //\n\n   SocialCalc.Popup.Types = {};\n\n   // Definitions for each individual control, indexed by id\n   // The value for each is an object constructed as follows:\n   //\n   //    type: type name of the control\n   //    value: current value of the control (usually a string, but can depend on type)\n   //    data: object with type-specific items\n   //\n\n   SocialCalc.Popup.Controls = {};\n\n   // System-wide values of currently active control\n   //\n   //    id: id of current control or null\n   //\n\n   SocialCalc.Popup.Current = {};\n\n   // Override this for localization\n\n   SocialCalc.Popup.LocalizeString = function(str) {return str;};\n\n\n// * * * * * * * * * * * * * * * *\n//\n// GENERAL ROUTINES\n//\n// * * * * * * * * * * * * * * * *\n\n//\n// SocialCalc.Popup.Create(type, id, attribs)\n//\n// Creates a control of type \"type\" as the children of document element \"id\" using \"attribs\"\n//\n\nSocialCalc.Popup.Create = function(type, id, attribs) {\n\n   var pt = SocialCalc.Popup.Types[type];\n   if (pt && pt.Create) {\n      pt.Create(type, id, attribs);\n      }\n\n   SocialCalc.Popup.imagePrefix = SocialCalc.Constants.defaultImagePrefix; // image prefix\n\n   }\n\n\n//\n// SocialCalc.Popup.SetValue(id, value)\n//\n// Sets the value of control.\n//\n\nSocialCalc.Popup.SetValue = function(id, value) {\n\n   var sp = SocialCalc.Popup;\n   var spt = sp.Types;\n   var spc = sp.Controls;\n\n   if (!spc[id]) {alert(\"Unknown control \"+id);return;}\n\n   var type = spc[id].type;\n   var pt = spt[type];\n   var spcdata = spc[id].data;\n\n   if (pt && pt.Create) {\n      pt.SetValue(type, id, value);\n      if (spcdata.attribs && spcdata.attribs.changedcallback) {\n         spcdata.attribs.changedcallback(spcdata.attribs, id, value);\n         }\n      }\n\n   }\n\n\n//\n// SocialCalc.Popup.SetDisabled(id, disabled)\n//\n// Sets whether the control is disabled (true) or not (false).\n//\n\nSocialCalc.Popup.SetDisabled = function(id, disabled) {\n\n   var sp = SocialCalc.Popup;\n   var spt = sp.Types;\n   var spc = sp.Controls;\n\n   if (!spc[id]) {alert(\"Unknown control \"+id);return;}\n\n   var type = spc[id].type;\n\n   var pt = spt[type];\n   if (pt && pt.Create) {\n      if (sp.Current.id && id == sp.Current.id) {\n         pt.Hide(type, sp.Current.id);\n         sp.Current.id = null;\n         }\n      pt.SetDisabled(type, id, disabled);\n      }\n\n   }\n\n\n//\n// SocialCalc.Popup.GetValue(id)\n//\n// Returns the value of control.\n//\n\nSocialCalc.Popup.GetValue = function(id) {\n\n   var sp = SocialCalc.Popup;\n   var spt = sp.Types;\n   var spc = sp.Controls;\n\n   if (!spc[id]) {alert(\"Unknown control \"+id);return;}\n\n   var type = spc[id].type;\n\n   var pt = spt[type];\n   if (pt && pt.Create) {\n      return pt.GetValue(type, id);\n      }\n\n   return null;\n\n   }\n\n\n//\n// SocialCalc.Popup.Initialize(id, data)\n//\n// Gives \"data\" to the appropriate initialization code.\n//\n\nSocialCalc.Popup.Initialize = function(id, data) {\n\n   var sp = SocialCalc.Popup;\n   var spt = sp.Types;\n   var spc = sp.Controls;\n\n   if (!spc[id]) {alert(\"Unknown control \"+id);return;}\n\n   var type = spc[id].type;\n\n   var pt = spt[type];\n   if (pt && pt.Initialize) {\n      pt.Initialize(type, id, data);\n      }\n\n   }\n\n\n//\n// SocialCalc.Popup.Reset(type)\n//\n// Resets Popup, such as when turning to page.\n//\n\nSocialCalc.Popup.Reset = function(type) {\n\n   var sp = SocialCalc.Popup;\n   var spt = sp.Types;\n   var spc = sp.Controls;\n\n   if (spt[type].Reset) spt[type].Reset(type);\n\n   }\n\n\n//\n// SocialCalc.Popup.CClick(id)\n//\n// Should be called when the user clicks on a control to do the popup\n//\n\nSocialCalc.Popup.CClick = function(id) {\n\n   var sp = SocialCalc.Popup;\n   var spt = sp.Types;\n   var spc = sp.Controls;\n\n   if (!spc[id]) {alert(\"Unknown control \"+id);return;}\n\n   if (spc[id].data && spc[id].data.disabled) return;\n\n   var type = spc[id].type;\n\n   var pt = spt[type];\n\n   if (sp.Current.id) {\n      spt[spc[sp.Current.id].type].Hide(type, sp.Current.id);\n      if (id == sp.Current.id) { // same one - done\n         sp.Current.id = null;\n         return;\n         }\n      }\n\n   if (pt && pt.Show) {\n      pt.Show(type, id);\n      }\n\n   sp.Current.id = id;\n\n   }\n\n\n//\n// SocialCalc.Popup.Close()\n//\n// Used to close any open popup.\n//\n\nSocialCalc.Popup.Close = function() {\n\n   var sp = SocialCalc.Popup;\n   var spt = sp.Types;\n   var spc = sp.Controls;\n\n   if (!sp.Current.id) return;\n\n   sp.CClick(sp.Current.id);\n\n   }\n\n//\n// SocialCalc.Popup.Cancel()\n//\n// Closes Popup and restores old value\n//\n\nSocialCalc.Popup.Cancel = function() {\n\n   var sp = SocialCalc.Popup;\n   var spt = sp.Types;\n   var spc = sp.Controls;\n\n   if (!sp.Current.id) return;\n\n   var type = spc[sp.Current.id].type;\n\n   var pt = spt[type];\n\n   pt.Cancel(type, sp.Current.id);\n\n   sp.Current.id = null;\n\n   }\n\n//\n// ele = SocialCalc.Popup.CreatePopupDiv(id, attribs)\n//\n// Utility function to create the main popup div of width attribs.width.\n// If attribs.title, create one with that text, and optionally attribs.moveable.\n//\n\nSocialCalc.Popup.CreatePopupDiv = function(id, attribs) {\n\n   var pos, ele;\n\n   var sp = SocialCalc.Popup;\n   var spc = sp.Controls;\n   var spcdata = spc[id].data;\n\n   var main = document.createElement(\"div\");\n   main.style.position = \"absolute\";\n\n   pos = SocialCalc.GetElementPosition(spcdata.mainele);\n\n   main.style.top = (pos.top+spcdata.mainele.offsetHeight)+\"px\";\n   main.style.left = pos.left+\"px\";\n   main.style.zIndex = 100;\n   main.style.backgroundColor = \"#FFF\";\n   main.style.border = \"1px solid black\";\n\n   if (attribs.width) {\n      main.style.width = attribs.width;\n      }\n\n   spcdata.mainele.appendChild(main);\n\n   if (attribs.title) {\n      main.innerHTML = '<table cellspacing=\"0\" cellpadding=\"0\" style=\"border-bottom:1px solid black;\"><tr>'+\n         '<td style=\"font-size:10px;cursor:default;width:100%;background-color:#999;color:#FFF;\">'+attribs.title+'</td>'+\n         '<td style=\"font-size:10px;cursor:default;color:#666;\" onclick=\"SocialCalc.Popup.Cancel();\">&nbsp;X&nbsp;</td></tr></table>';\n\n      if (attribs.moveable) {\n         spcdata.dragregistered = main.firstChild.firstChild.firstChild.firstChild;\n         SocialCalc.DragRegister(spcdata.dragregistered, true, true, \n                    {MouseDown: SocialCalc.DragFunctionStart, \n                     MouseMove: SocialCalc.DragFunctionPosition,\n                     MouseUp: SocialCalc.DragFunctionPosition,\n                     Disabled: null, positionobj: main},\n                     spcdata.mainele);\n         }\n      }\n\n   return main;\n\n   }\n\n//\n// SocialCalc.Popup.EnsurePosition(id, container)\n//\n// Utility function to make sure popup is positioned completely within container (both element objects)\n// and appropriate with respect to the main element controlling the popup.\n//\n\nSocialCalc.Popup.EnsurePosition = function(id, container) {\n\n   var sp = SocialCalc.Popup;\n   var spc = sp.Controls;\n   var spcdata = spc[id].data;\n\n   var main = spcdata.mainele.firstChild;\n   if (!main) {alert(\"No main popup element firstChild.\");return};\n   var popup = spcdata.popupele;\n\n   function GetLayoutValues(ele) {\n      var r = SocialCalc.GetElementPosition(ele);\n      r.height = ele.offsetHeight;\n      r.width = ele.offsetWidth;\n      r.bottom = r.top+r.height;\n      r.right = r.left+r.width;\n      return r;\n      }\n\n   var p = GetLayoutValues(popup);\n   var c = GetLayoutValues(container);\n   var m = GetLayoutValues(main);\n   var t = 0; // type of placement\n//addmsg(\"popup t/r/b/l/h/w= \"+p.top+\"/\"+p.right+\"/\"+p.bottom+\"/\"+p.left+\"/\"+p.height+\"/\"+p.width);\n//addmsg(\"container t/r/b/l/h/w= \"+c.top+\"/\"+c.right+\"/\"+c.bottom+\"/\"+c.left+\"/\"+c.height+\"/\"+c.width);\n//addmsg(\"main t/r/b/l/h/w= \"+m.top+\"/\"+m.right+\"/\"+m.bottom+\"/\"+m.left+\"/\"+m.height+\"/\"+m.width);\n\n   // Check various layout cases in priority order\n\n   if (m.bottom+p.height < c.bottom && m.left+p.width < c.right) { // normal case: room on bottom and right\n      popup.style.top = m.bottom + \"px\";\n      popup.style.left = m.left + \"px\";\n      t = 1;\n      }\n\n   else if (m.top-p.height > c.top && m.left+p.width < c.right) { // room on top and right\n      popup.style.top = (m.top-p.height) + \"px\";\n      popup.style.left = m.left + \"px\";\n      t = 2;\n      }\n\n   else if (m.bottom+p.height < c.bottom && m.right-p.width > c.left) { // room on bottom and left\n      popup.style.top = m.bottom + \"px\";\n      popup.style.left = (m.right-p.width) + \"px\";\n      t = 3;\n      }\n\n   else if (m.top-p.height > c.top && m.right-p.width > c.left) { // room on top and left\n      popup.style.top = (m.top-p.height) + \"px\";\n      popup.style.left = (m.right-p.width) + \"px\";\n      t = 4;\n      }\n\n   else if (m.bottom+p.height < c.bottom && p.width < c.width) { // room on bottom and middle\n      popup.style.top = m.bottom + \"px\";\n      popup.style.left = (c.left+Math.floor((c.width-p.width)/2)) + \"px\";\n      t = 5;\n      }\n\n   else if (m.top-p.height > c.top && p.width < c.width) { // room on top and middle\n      popup.style.top = (m.top-p.height) + \"px\";\n      popup.style.left = (c.left+Math.floor((c.width-p.width)/2)) + \"px\";\n      t = 6;\n      }\n\n   else if (p.height < c.height && m.right+p.width < c.right) { // room on middle and right\n      popup.style.top = (c.top+Math.floor((c.height-p.height)/2)) + \"px\";\n      popup.style.left = m.right + \"px\";\n      t = 7;\n      }\n\n   else if (p.height < c.height && m.left-p.width > c.left) { // room on middle and left\n      popup.style.top = (c.top+Math.floor((c.height-p.height)/2)) + \"px\";\n      popup.style.left = (m.left-p.width) + \"px\";\n      t = 8;\n      }\n\n   else { // nothing works, so leave as it is\n      }\n//addmsg(\"Popup layout \"+t);\n\n}\n\n//\n// ele = SocialCalc.Popup.DestroyPopupDiv(ele, dragregistered)\n//\n// Utility function to get rid of the main popup div.\n//\n\nSocialCalc.Popup.DestroyPopupDiv = function(ele, dragregistered) {\n\n   if (!ele) return;\n\n   ele.innerHTML = \"\";\n\n   SocialCalc.DragUnregister(dragregistered); // OK to do this even if not registered\n\n   if (ele.parentNode) {\n      ele.parentNode.removeChild(ele);\n      }\n\n   }\n\n//\n// Color Utility Functions\n//\n\nSocialCalc.Popup.RGBToHex = function(val) {\n\n   var sp = SocialCalc.Popup;\n\n   if (val==\"\") {\n      return \"000000\";\n      }\n   var rgbvals = val.match(/(\\d+)\\D+(\\d+)\\D+(\\d+)/);\n   if (rgbvals) {\n      return sp.ToHex(rgbvals[1])+sp.ToHex(rgbvals[2])+sp.ToHex(rgbvals[3]);\n      }\n   else {\n      return \"000000\";\n      }\n   }\n\nSocialCalc.Popup.HexDigits=\"0123456789ABCDEF\";\n\nSocialCalc.Popup.ToHex = function(num) {\n   var sp = SocialCalc.Popup;\n   var first=Math.floor(num / 16);\n   var second=num % 16;\n   return sp.HexDigits.charAt(first)+sp.HexDigits.charAt(second);\n   }\n\nSocialCalc.Popup.FromHex = function(str) {\n\n   var sp = SocialCalc.Popup;\n   var first = sp.HexDigits.indexOf(str.charAt(0).toUpperCase());\n   var second = sp.HexDigits.indexOf(str.charAt(1).toUpperCase());\n   return ((first>=0)?first:0)*16+((second>=0)?second:0);\n   }\n\nSocialCalc.Popup.HexToRGB = function(val) {\n\n   var sp = SocialCalc.Popup;\n\n   return \"rgb(\"+sp.FromHex(val.substring(1,3))+\",\"+sp.FromHex(val.substring(3,5))+\",\"+sp.FromHex(val.substring(5,7))+\")\";\n\n   }\n\nSocialCalc.Popup.makeRGB = function(r, g, b) {\n   return \"rgb(\"+(r>0?r:0)+\",\"+(g>0?g:0)+\",\"+(b>0?b:0)+\")\";\n   }\n\nSocialCalc.Popup.splitRGB = function(rgb) {\n   var parts = rgb.match(/(\\d+)\\D+(\\d+)\\D+(\\d+)\\D/);\n   if (!parts) {\n      return {r:0, g:0, b:0};\n      }\n   else {\n      return {r: parts[1]-0, g: parts[2]-0, b: parts[3]-0};\n      }\n   }\n\n// * * * * * * * * * * * * * * * *\n//\n// ROUTINES FOR EACH TYPE\n//\n// * * * * * * * * * * * * * * * *\n\n//\n// List\n//\n// type: List\n// value: value of control,\n// display: \"value to display\",\n// custom: true if custom value,\n// disabled: t/f,\n// attribs: {\n//    title: \"popup title string\",\n//    moveable: t/f,\n//    width: optional width, e.g., \"100px\",\n//    ensureWithin: optional element object to ensure popup fits within if possible\n//    changedcallback: optional function(attribs, id, newvalue),\n//    ...\n//    }\n// data: {\n//    ncols: calculated number of columns\n//    options: [\n//       {o: option-name, v: value-to-return,\n//        a: {option attribs} // optional: {skip: true, custom: true, cancel: true, newcol: true}\n//       },\n//       ...]\n//    }\n//\n// popupele: gets popup element object when created\n// contentele: gets element created with all the content\n// listdiv: gets div with list of items\n// customele: gets input element with custom value\n// dragregistered: gets element, if any, registered as draggable\n//\n\nSocialCalc.Popup.Types.List = {};\n\nSocialCalc.Popup.Types.List.Create = function(type, id, attribs) {\n\n   var sp = SocialCalc.Popup;\n   var spt = sp.Types;\n   var spc = sp.Controls;\n\n   var spcid = {type: type, value: \"\", display: \"\", data: {}};\n   //if (spc[id]) {alert(\"Already created \"+id); return;}\n   spc[id] = spcid;\n   var spcdata = spcid.data;\n\n   spcdata.attribs = attribs || {};\n\n   var ele = document.getElementById(id);\n   if (!ele) {alert(\"Missing element \"+id); return;}\n\n   spcdata.mainele = ele;\n\n   ele.innerHTML = '<input style=\"cursor:pointer;width:100px;font-size:smaller;\" onfocus=\"this.blur();\" onclick=\"SocialCalc.Popup.CClick(\\''+id+'\\');\" value=\"\">';\n\n   spcdata.options = []; // set to nothing - use Initialize to fill\n\n   }\n\nSocialCalc.Popup.Types.List.SetValue = function(type, id, value) {\n\n   var i;\n\n   var sp = SocialCalc.Popup;\n   var spt = sp.Types;\n   var spc = sp.Controls;\n   var spcdata = spc[id].data;\n\n   spcdata.value = value;\n   spcdata.custom = false;\n\n   for (i=0; i<spcdata.options.length; i++) {\n      o = spcdata.options[i];\n      if (o.a) {\n         if (o.a.skip || o.a.custom || o.a.cancel) {\n            continue;\n            }\n         }\n      if (o.v == spcdata.value) { // matches value\n         spcdata.display = o.o;\n         break;\n         }\n      }\n   if (i==spcdata.options.length) { // none found\n      spcdata.display = \"Custom\";\n      spcdata.custom = true;\n      }\n\n   if (spcdata.mainele && spcdata.mainele.firstChild) {\n      spcdata.mainele.firstChild.value = spcdata.display;\n      }\n\n   }\n\n\nSocialCalc.Popup.Types.List.SetDisabled = function(type, id, disabled) {\n\n   var i;\n\n   var sp = SocialCalc.Popup;\n   var spt = sp.Types;\n   var spc = sp.Controls;\n   var spcdata = spc[id].data;\n\n   spcdata.disabled = disabled;\n\n   if (spcdata.mainele && spcdata.mainele.firstChild) {\n      spcdata.mainele.firstChild.disabled = disabled;\n      }\n\n   }\n\n\nSocialCalc.Popup.Types.List.GetValue = function(type, id) {\n\n   var sp = SocialCalc.Popup;\n   var spt = sp.Types;\n   var spc = sp.Controls;\n   var spcdata = spc[id].data;\n\n   return spcdata.value;\n\n   }\n\n\n// data is: {value: initial value, attribs: {attribs stuff}, options: [{o: option-name, v: value-to-return, a: optional-attribs}, ...]}\n\nSocialCalc.Popup.Types.List.Initialize = function(type, id, data) {\n\n   var a;\n\n   var sp = SocialCalc.Popup;\n   var spt = sp.Types;\n   var spc = sp.Controls;\n   var spcdata = spc[id].data;\n\n   for (a in data.attribs) {\n      spcdata.attribs[a] = data.attribs[a];\n      }\n\n   spcdata.options = data ? data.options : [];\n\n   if (data.value) { // if has a value, set to it\n      sp.SetValue(id, data.value);\n      }\n\n   }\n\n\nSocialCalc.Popup.Types.List.Reset = function(type) {\n\n   var sp = SocialCalc.Popup;\n   var spt = sp.Types;\n   var spc = sp.Controls;\n\n   if (sp.Current.id && spc[sp.Current.id].type == type) { // we have a popup\n      spt[type].Hide(type, sp.Current.id);\n      sp.Current.id = null;\n      }\n\n   }\n\n\nSocialCalc.Popup.Types.List.Show = function(type, id) {\n\n   var i, ele, o, bg;\n\n   var sp = SocialCalc.Popup;\n   var spt = sp.Types;\n   var spc = sp.Controls;\n   var spcdata = spc[id].data\n\n   var str = \"\";\n\n   spcdata.popupele = sp.CreatePopupDiv(id, spcdata.attribs);\n\n   if (spcdata.custom) {\n      str = SocialCalc.Popup.Types.List.MakeCustom(type, id);\n\n      ele = document.createElement(\"div\");\n      ele.innerHTML = '<div style=\"cursor:default;padding:4px;background-color:#CCC;\">'+str+'</div>';\n\n      spcdata.customele = ele.firstChild.firstChild.childNodes[1];\n      spcdata.listdiv = null;\n      spcdata.contentele = ele;\n      }\n   else {\n      str = SocialCalc.Popup.Types.List.MakeList(type, id);\n\n      ele = document.createElement(\"div\");\n      ele.innerHTML = '<div style=\"cursor:default;padding:4px;\">'+str+'</div>';\n\n      spcdata.customele = null;\n      spcdata.listdiv = ele.firstChild;\n      spcdata.contentele = ele;\n      }\n\n   if (spcdata.mainele && spcdata.mainele.firstChild) {\n      spcdata.mainele.firstChild.disabled = true;\n      }\n\n   spcdata.popupele.appendChild(ele);\n\n   if (spcdata.attribs.ensureWithin) {\n      SocialCalc.Popup.EnsurePosition(id, spcdata.attribs.ensureWithin);\n      }\n\n   }\n\n\nSocialCalc.Popup.Types.List.MakeList = function(type, id) {\n\n   var i, ele, o, bg;\n\n   var sp = SocialCalc.Popup;\n   var spt = sp.Types;\n   var spc = sp.Controls;\n   var spcdata = spc[id].data\n\n   var str = '<table cellspacing=\"0\" cellpadding=\"0\"><tr>';\n   var td = '<td style=\"vertical-align:top;\">';\n\n   str += td;\n\n   spcdata.ncols = 1;\n\n   for (i=0; i<spcdata.options.length; i++) {\n      o = spcdata.options[i];\n      if (o.a) {\n         if ( o.a.newcol) {\n            str += '</td>'+td+\"&nbsp;&nbsp;&nbsp;&nbsp;\"+'</td>'+td;\n            spcdata.ncols += 1;\n            continue;\n            }\n         if (o.a.skip) {\n            str += '<div style=\"font-size:x-small;white-space:nowrap;\">'+o.o+'</div>';\n            continue;\n            }\n         }\n      if (o.v == spcdata.value && !(o.a && (o.a.custom || o.a.cancel))) { // matches value\n         bg = \"background-color:#DDF;\";\n         }\n      else {\n         bg = \"\";\n         }\n      str += '<div style=\"font-size:x-small;white-space:nowrap;'+bg+'\" onclick=\"SocialCalc.Popup.Types.List.ItemClicked(\\''+id+'\\',\\''+i+'\\');\" onmousemove=\"SocialCalc.Popup.Types.List.MouseMove(\\''+id+'\\',this);\">'+o.o+'</div>';\n      }\n\n   str += \"</td></tr></table>\";\n\n   return str;\n\n   }\n\n\nSocialCalc.Popup.Types.List.MakeCustom = function(type, id) {\n\n   var SPLoc = SocialCalc.Popup.LocalizeString;\n\n   var i, ele, o, bg;\n\n   var sp = SocialCalc.Popup;\n   var spt = sp.Types;\n   var spc = sp.Controls;\n   var spcdata = spc[id].data;\n\n   var style = 'style=\"font-size:smaller;\"';\n\n   var str = \"\";\n\n   var val = spcdata.value;\n   val = SocialCalc.special_chars(val);\n\n   str = '<div style=\"white-space:nowrap;\"><br>'+\n         '<input id=\"customvalue\" value=\"'+val+'\"><br><br>'+\n         '<input '+style+' type=\"button\" value=\"'+SPLoc(\"OK\")+'\" onclick=\"SocialCalc.Popup.Types.List.CustomOK(\\''+id+'\\');return false;\">'+\n         '<input '+style+' type=\"button\" value=\"'+SPLoc(\"List\")+'\" onclick=\"SocialCalc.Popup.Types.List.CustomToList(\\''+id+'\\');\">'+\n         '<input '+style+' type=\"button\" value=\"'+SPLoc(\"Cancel\")+'\" onclick=\"SocialCalc.Popup.Close();\">'+\n         '<br></div>';\n\n   return str;\n\n   }\n\n\nSocialCalc.Popup.Types.List.ItemClicked = function(id, num) {\n\n   var oele, str, nele;\n   var sp = SocialCalc.Popup;\n   var spt = sp.Types;\n   var spc = sp.Controls;\n   var spcdata = spc[id].data;\n\n   var a = spcdata.options[num].a;\n\n   if (a && a.custom) {\n      oele = spcdata.contentele;\n      str = SocialCalc.Popup.Types.List.MakeCustom(\"List\", id);\n      nele = document.createElement(\"div\");\n      nele.innerHTML = '<div style=\"cursor:default;padding:4px;background-color:#CCC;\">'+str+'</div>';\n      spcdata.customele = nele.firstChild.firstChild.childNodes[1];\n      spcdata.listdiv = null;\n      spcdata.contentele = nele;\n      spcdata.popupele.replaceChild(nele, oele);\n      if (spcdata.attribs.ensureWithin) {\n         SocialCalc.Popup.EnsurePosition(id, spcdata.attribs.ensureWithin);\n         }\n      return;\n      }\n\n   if (a && a.cancel) {\n      SocialCalc.Popup.Close();\n      return;\n      }\n\n   SocialCalc.Popup.SetValue(id, spcdata.options[num].v);\n\n   SocialCalc.Popup.Close();\n   \n   }\n\n\nSocialCalc.Popup.Types.List.CustomToList = function(id) {\n\n   var oele, str, nele;\n   var sp = SocialCalc.Popup;\n   var spt = sp.Types;\n   var spc = sp.Controls;\n   var spcdata = spc[id].data;\n\n   oele = spcdata.contentele;\n   str = SocialCalc.Popup.Types.List.MakeList(\"List\", id);\n   nele = document.createElement(\"div\");\n   nele.innerHTML = '<div style=\"cursor:default;padding:4px;\">'+str+'</div>';\n   spcdata.customele = null;\n   spcdata.listdiv = nele.firstChild;\n   spcdata.contentele = nele;\n   spcdata.popupele.replaceChild(nele, oele);\n   \n   if (spcdata.attribs.ensureWithin) {\n      SocialCalc.Popup.EnsurePosition(id, spcdata.attribs.ensureWithin);\n      }\n   }\n\n\nSocialCalc.Popup.Types.List.CustomOK = function(id) {\n\n   var i, c;\n   var sp = SocialCalc.Popup;\n   var spt = sp.Types;\n   var spc = sp.Controls;\n   var spcdata = spc[id].data;\n\n   SocialCalc.Popup.SetValue(id, spcdata.customele.value);\n\n   SocialCalc.Popup.Close();\n   \n   }\n\n\nSocialCalc.Popup.Types.List.MouseMove = function(id, ele) {\n\n   var col, i, c;\n   var sp = SocialCalc.Popup;\n   var spt = sp.Types;\n   var spc = sp.Controls;\n   var spcdata = spc[id].data;\n\n   var list = spcdata.listdiv;\n\n   if (!list) return;\n\n   var rowele = list.firstChild.firstChild.firstChild; // div.table.tbody.tr\n\n   for (col=0; col<spcdata.ncols; col++) {\n      for (i=0; i<rowele.childNodes[col*2].childNodes.length; i++) {\n         rowele.childNodes[col*2].childNodes[i].style.backgroundColor = \"#FFF\";\n         }\n      }\n\n   ele.style.backgroundColor = \"#DDF\";\n   \n   }\n\nSocialCalc.Popup.Types.List.Hide = function(type, id) {\n\n   var sp = SocialCalc.Popup;\n   var spt = sp.Types;\n   var spc = sp.Controls;\n   var spcdata = spc[id].data;\n\n   sp.DestroyPopupDiv(spcdata.popupele, spcdata.dragregistered);\n   spcdata.popupele = null;\n\n   if (spcdata.mainele && spcdata.mainele.firstChild) {\n      spcdata.mainele.firstChild.disabled = false;\n      }\n\n   }\n\nSocialCalc.Popup.Types.List.Cancel = function(type, id) {\n\n   SocialCalc.Popup.Types.List.Hide(type, id);\n\n   }\n\n\n//\n// ColorChooser\n//\n// type: ColorChooser\n// value: value of control as \"rgb(r,g,b)\" or \"\" if default,\n// oldvalue: starting value to reset to on close,\n// display: \"value to display\" as hex color value,\n// custom: true if custom value,\n// disabled: t/f,\n// attribs: {\n//    title: \"popup title string\",\n//    moveable: t/f,\n//    width: optional width, e.g., \"100px\", of popup chooser\n//    ensureWithin: optional element object to ensure popup fits within if possible\n//    sampleWidth: optional width, e.g., \"20px\",\n//    sampleHeight: optional height, e.g., \"20px\",\n//    backgroundImage: optional background image for sample (transparent where want to show current color), e.g., \"colorbg.gif\"\n//    backgroundImageDefault: optional background image for sample when default (transparent shows white)\n//    backgroundImageDisabled: optional background image for sample when disabled (transparent shows gray)\n//    changedcallback: optional function(attribs, id, newvalue),\n//    ...\n//    }\n// data: {\n//    }\n//\n// popupele: gets popup element object when created\n// contentele: gets element created with all the content\n// customele: gets input element with custom value\n//\n\nSocialCalc.Popup.Types.ColorChooser = {};\n\nSocialCalc.Popup.Types.ColorChooser.Create = function(type, id, attribs) {\n\n   var sp = SocialCalc.Popup;\n   var spt = sp.Types;\n   var spc = sp.Controls;\n\n   var spcid = {type: type, value: \"\", display: \"\", data: {}};\n   //if (spc[id]) {alert(\"Already created \"+id); return;}\n   spc[id] = spcid;\n   var spcdata = spcid.data;\n\n   spcdata.attribs = attribs || {};\n   var spca = spcdata.attribs;\n\n   spcdata.value = \"\";\n\n   var ele = document.getElementById(id);\n   if (!ele) {alert(\"Missing element \"+id); return;}\n\n   spcdata.mainele = ele;\n\n   ele.innerHTML = '<div style=\"cursor:pointer;border:1px solid black;vertical-align:top;width:'+\n                   (spca.sampleWidth || '15px')+';height:'+(spca.sampleHeight || '15px')+\n                   ';\" onclick=\"SocialCalc.Popup.Types.ColorChooser.ControlClicked(\\''+id+'\\');\">&nbsp;</div>';\n\n   }\n\nSocialCalc.Popup.Types.ColorChooser.SetValue = function(type, id, value) {\n\n   var i, img, pos;\n\n   var sp = SocialCalc.Popup;\n   var spt = sp.Types;\n   var spc = sp.Controls;\n   var spcdata = spc[id].data;\n   var spca = spcdata.attribs;\n\n   spcdata.value = value;\n   spcdata.custom = false;\n\n   if (spcdata.mainele && spcdata.mainele.firstChild) {\n      if (spcdata.value) {\n         spcdata.mainele.firstChild.style.backgroundColor = spcdata.value;\n         if (spca.backgroundImage) {\n            img = \"url(\"+sp.imagePrefix+spca.backgroundImage+\")\";\n            }\n         else {\n            img = \"\";\n            }\n         pos = \"center center\";\n         }\n      else {\n         spcdata.mainele.firstChild.style.backgroundColor = \"#FFF\";\n         if (spca.backgroundImageDefault) {\n            img = \"url(\"+sp.imagePrefix+spca.backgroundImageDefault+\")\";\n            pos = \"center center\";\n            }\n         else {\n            img = \"url(\"+sp.imagePrefix+\"defaultcolor.gif)\";\n            pos = \"left top\";\n            }\n         }\n      spcdata.mainele.firstChild.style.backgroundPosition = pos;\n      spcdata.mainele.firstChild.style.backgroundImage = img;\n      }\n\n   }\n\n\nSocialCalc.Popup.Types.ColorChooser.SetDisabled = function(type, id, disabled) {\n\n   var i;\n\n   var sp = SocialCalc.Popup;\n   var spt = sp.Types;\n   var spc = sp.Controls;\n   var spcdata = spc[id].data;\n   var spca = spcdata.attribs;\n\n   spcdata.disabled = disabled;\n\n   if (spcdata.mainele && spcdata.mainele.firstChild) {\n      if (disabled) {\n         spcdata.mainele.firstChild.style.backgroundColor = \"#DDD\";\n         if (spca.backgroundImageDisabled) {\n            img = \"url(\"+sp.imagePrefix+spca.backgroundImageDisabled+\")\";\n            pos = \"center center\";\n            }\n         else {\n            img = \"url(\"+sp.imagePrefix+\"defaultcolor.gif)\";\n            pos = \"left top\";\n            }\n         spcdata.mainele.firstChild.style.backgroundPosition = pos;\n         spcdata.mainele.firstChild.style.backgroundImage = img;\n         }\n      else {\n         sp.SetValue(id, spcdata.value);\n         }\n      }\n\n   }\n\n\nSocialCalc.Popup.Types.ColorChooser.GetValue = function(type, id) {\n\n   var sp = SocialCalc.Popup;\n   var spt = sp.Types;\n   var spc = sp.Controls;\n   var spcdata = spc[id].data;\n\n   return spcdata.value;\n\n   }\n\n\nSocialCalc.Popup.Types.ColorChooser.Initialize = function(type, id, data) {\n\n   var a;\n\n   var sp = SocialCalc.Popup;\n   var spt = sp.Types;\n   var spc = sp.Controls;\n   var spcdata = spc[id].data;\n\n   for (a in data.attribs) {\n      spcdata.attribs[a] = data.attribs[a];\n      }\n\n   if (data.value) { // if has a value, set to it\n      sp.SetValue(id, data.value);\n      }\n\n   }\n\n\nSocialCalc.Popup.Types.ColorChooser.Reset = function(type) {\n\n   var sp = SocialCalc.Popup;\n   var spt = sp.Types;\n   var spc = sp.Controls;\n\n   if (sp.Current.id && spc[sp.Current.id].type == type) { // we have a popup\n      spt[type].Hide(type, sp.Current.id);\n      sp.Current.id = null;\n      }\n\n   }\n\n\nSocialCalc.Popup.Types.ColorChooser.Show = function(type, id) {\n\n   var i, ele, mainele;\n\n   var sp = SocialCalc.Popup;\n   var spt = sp.Types;\n   var spc = sp.Controls;\n   var spcdata = spc[id].data\n\n   var str = \"\";\n\n   spcdata.oldvalue = spcdata.value; // remember starting value\n\n   spcdata.popupele = sp.CreatePopupDiv(id, spcdata.attribs);\n\n   if (spcdata.custom) {\n      str = SocialCalc.Popup.Types.ColorChooser.MakeCustom(type, id);\n\n      ele = document.createElement(\"div\");\n      ele.innerHTML = '<div style=\"cursor:default;padding:4px;background-color:#CCC;\">'+str+'</div>';\n\n      spcdata.customele = ele.firstChild.firstChild.childNodes[2];\n      spcdata.contentele = ele;\n      }\n   else {\n      mainele = SocialCalc.Popup.Types.ColorChooser.CreateGrid(type, id);\n\n      ele = document.createElement(\"div\");\n      ele.style.padding = \"3px\";\n      ele.style.backgroundColor = \"#CCC\";\n      ele.appendChild(mainele);\n\n      spcdata.customele = null;\n      spcdata.contentele = ele;\n      }\n\n   spcdata.popupele.appendChild(ele);\n\n   if (spcdata.attribs.ensureWithin) {\n      SocialCalc.Popup.EnsurePosition(id, spcdata.attribs.ensureWithin);\n      }\n\n   }\n\n\nSocialCalc.Popup.Types.ColorChooser.MakeCustom = function(type, id) {\n\n   var i, ele, o, bg;\n\n   var sp = SocialCalc.Popup;\n   var spt = sp.Types;\n   var spc = sp.Controls;\n   var spcdata = spc[id].data;\n\n   var SPLoc = sp.LocalizeString;\n\n   var style = 'style=\"font-size:smaller;\"';\n\n   var str = \"\";\n\n   str = '<div style=\"white-space:nowrap;\"><br>'+\n         '#<input id=\"customvalue\" style=\"width:75px;\" value=\"'+spcdata.value+'\"><br><br>'+\n         '<input '+style+' type=\"button\" value=\"'+SPLoc(\"OK\")+'\" onclick=\"SocialCalc.Popup.Types.ColorChooser.CustomOK(\\''+id+'\\');return false;\">'+\n         '<input '+style+' type=\"button\" value=\"'+SPLoc(\"Grid\")+'\" onclick=\"SocialCalc.Popup.Types.ColorChooser.CustomToGrid(\\''+id+'\\');\">'+\n         '<br></div>';\n\n   return str;\n\n   }\n\n\nSocialCalc.Popup.Types.ColorChooser.ItemClicked = function(id, num) {\n\n   var oele, str, nele;\n   var sp = SocialCalc.Popup;\n   var spt = sp.Types;\n   var spc = sp.Controls;\n   var spcdata = spc[id].data;\n\n   SocialCalc.Popup.Close();\n   \n   }\n\n\nSocialCalc.Popup.Types.ColorChooser.CustomToList = function(id) {\n\n   var oele, str, nele;\n   var sp = SocialCalc.Popup;\n   var spt = sp.Types;\n   var spc = sp.Controls;\n   var spcdata = spc[id].data;\n\n   }\n\n\nSocialCalc.Popup.Types.ColorChooser.CustomOK = function(id) {\n\n   var i, c;\n   var sp = SocialCalc.Popup;\n   var spt = sp.Types;\n   var spc = sp.Controls;\n   var spcdata = spc[id].data;\n\n   sp.SetValue(id, spcdata.customele.value);\n\n   sp.Close();\n   \n   }\n\n\nSocialCalc.Popup.Types.ColorChooser.Hide = function(type, id) {\n\n   var sp = SocialCalc.Popup;\n   var spt = sp.Types;\n   var spc = sp.Controls;\n   var spcdata = spc[id].data;\n\n   sp.DestroyPopupDiv(spcdata.popupele, spcdata.dragregistered);\n   spcdata.popupele = null;\n\n   }\n\n\nSocialCalc.Popup.Types.ColorChooser.Cancel = function(type, id) {\n\n   var sp = SocialCalc.Popup;\n   var spt = sp.Types;\n   var spc = sp.Controls;\n   var spcdata = spc[id].data;\n\n   sp.SetValue(id, spcdata.oldvalue); // reset to old value\n\n   SocialCalc.Popup.Types.ColorChooser.Hide(type, id);\n\n   }\n\n\nSocialCalc.Popup.Types.ColorChooser.CreateGrid = function (type, id) {\n\n   var ele, pos, row, rowele, col, g;\n\n   var sp = SocialCalc.Popup;\n   var spt = sp.Types;\n   var spc = sp.Controls;\n   var SPLoc = sp.LocalizeString;\n   var spcdata = spc[id].data;\n   spcdata.grid = {};\n   var grid = spcdata.grid;\n\n   var mainele = document.createElement(\"div\");\n\n   ele = document.createElement(\"table\");\n   ele.cellSpacing = 0;\n   ele.cellPadding = 0;\n   ele.style.width = \"100px\";\n   grid.table = ele;\n\n   ele = document.createElement(\"tbody\");\n   grid.table.appendChild(ele);\n   grid.tbody = ele;\n\n   for (row=0; row<16; row++) {\n      rowele = document.createElement(\"tr\");\n      for (col=0; col<5; col++) {\n         g = {};\n         grid[row+\",\"+col] = g;\n         ele = document.createElement(\"td\");\n         ele.style.fontSize = \"1px\";\n         ele.innerHTML = \"&nbsp;\";\n         ele.style.height = \"10px\";\n         if (col<=1) {\n            ele.style.width = \"17px\";\n            ele.style.borderRight = \"3px solid white\";\n            }\n         else {\n            ele.style.width = \"20px\";\n            ele.style.backgroundRepeat = \"no-repeat\";\n            }\n         rowele.appendChild(ele);\n         g.ele = ele;\n         }\n      grid.tbody.appendChild(rowele);\n      }\n   mainele.appendChild(grid.table);\n\n   ele = document.createElement(\"div\");\n   ele.style.marginTop = \"3px\";\n   ele.innerHTML = '<table cellspacing=\"0\" cellpadding=\"0\"><tr>'+\n      '<td style=\"width:17px;background-color:#FFF;background-image:url('+sp.imagePrefix+'defaultcolor.gif);height:16px;font-size:10px;cursor:pointer;\" title=\"'+SPLoc(\"Default\")+'\">&nbsp;</td>'+\n      '<td style=\"width:23px;height:16px;font-size:10px;text-align:center;cursor:pointer;\" title=\"'+SPLoc(\"Custom\")+'\">#</td>'+\n      '<td style=\"width:60px;height:16px;font-size:10px;text-align:center;cursor:pointer;\">'+SPLoc(\"OK\")+'</td>'+\n      '</tr></table>';\n   grid.defaultbox = ele.firstChild.firstChild.firstChild.childNodes[0];\n   grid.defaultbox.onclick = spt.ColorChooser.DefaultClicked;\n   grid.custom = ele.firstChild.firstChild.firstChild.childNodes[1];\n   grid.custom.onclick = spt.ColorChooser.CustomClicked;\n   grid.msg = ele.firstChild.firstChild.firstChild.childNodes[2];\n   grid.msg.onclick = spt.ColorChooser.CloseOK;\n   mainele.appendChild(ele);\n\n   grid.table.onmousedown = spt.ColorChooser.GridMouseDown;\n\n   spt.ColorChooser.DetermineColors(id);\n   spt.ColorChooser.SetColors(id);\n\n   return mainele;\n\n   }\n\nSocialCalc.Popup.Types.ColorChooser.gridToG = function(grid, row, col) {\n\n   return grid[row+\",\"+col];\n\n   }\n\nSocialCalc.Popup.Types.ColorChooser.DetermineColors = function(id) {\n\n   var sp = SocialCalc.Popup;\n   var spt = sp.Types;\n   var sptc = spt.ColorChooser;\n   var spc = sp.Controls;\n   var spcdata = spc[id].data;\n   var grid = spcdata.grid;\n\n   var col, row;\n   var rgb = sp.splitRGB(spcdata.value);\n   var color;\n\n   col = 2;\n   row = 16-Math.floor((rgb.r+16)/16);\n   grid[\"selectedrow\"+col] = row;\n   for (row=0; row<16; row++) {\n      sptc.gridToG(grid,row,col).rgb = sp.makeRGB(17*(15-row),0,0);\n      }\n\n   col = 3;\n   row = 16-Math.floor((rgb.g+16)/16);\n   grid[\"selectedrow\"+col] = row;\n   for (row=0; row<16; row++) {\n      sptc.gridToG(grid,row,col).rgb = sp.makeRGB(0,17*(15-row),0);\n      }\n\n   col = 4;\n   row = 16-Math.floor((rgb.b+16)/16);\n   grid[\"selectedrow\"+col] = row;\n   for (row=0; row<16; row++) {\n      sptc.gridToG(grid,row,col).rgb = sp.makeRGB(0,0,17*(15-row));\n      }\n\n   col = 1;\n   for (row=0; row<16; row++) {\n      sptc.gridToG(grid,row,col).rgb = sp.makeRGB(17*(15-row),17*(15-row),17*(15-row));\n      }\n\n   col = 0;\n   var steps = [0, 68, 153, 204, 255];\n   var commonrgb = [\"400\", \"310\", \"420\", \"440\", \"442\", \"340\", \"040\", \"042\", \"032\", \"044\", \"024\", \"004\", \"204\", \"314\", \"402\", \"414\"];\n   var x;\n   for (row=0; row<16; row++) {\n      x = commonrgb[row];\n      sptc.gridToG(grid,row,col).rgb = \"rgb(\"+steps[x.charAt(0)-0]+\",\"+steps[x.charAt(1)-0]+\",\"+steps[x.charAt(2)-0]+\")\";\n      }\n\n   }\n\nSocialCalc.Popup.Types.ColorChooser.SetColors = function(id) {\n\n   var row, col, g, ele, rgb;\n\n   var sp = SocialCalc.Popup;\n   var spt = sp.Types;\n   var sptc = spt.ColorChooser;\n   var spc = sp.Controls;\n   var spcdata = spc[id].data;\n   var grid = spcdata.grid;\n\n   for (row=0; row<16; row++) {\n      for (col=0; col<5; col++) {\n         g = sptc.gridToG(grid,row, col);\n         g.ele.style.backgroundColor = g.rgb;\n         g.ele.title = sp.RGBToHex(g.rgb);\n         if (grid[\"selectedrow\"+col]==row) {\n            g.ele.style.backgroundImage = \"url(\"+sp.imagePrefix+\"chooserarrow.gif)\";\n            }\n         else {\n            g.ele.style.backgroundImage = \"\";\n            }\n         }\n      }\n\n   sp.SetValue(id, spcdata.value);\n\n   grid.msg.style.backgroundColor = spcdata.value;\n   rgb = sp.splitRGB(spcdata.value || \"rgb(255,255,255)\");\n   if (rgb.r+rgb.g+rgb.b < 220) {\n      grid.msg.style.color = \"#FFF\";\n      }\n   else {\n      grid.msg.style.color = \"#000\";\n      }\n   if (!spcdata.value) { // default\n      grid.msg.style.backgroundColor = \"#FFF\";\n      grid.msg.style.backgroundImage = \"url(\"+sp.imagePrefix+\"defaultcolor.gif)\";\n      grid.msg.title = \"Default\";\n      }\n   else {\n      grid.msg.style.backgroundImage = \"\";\n      grid.msg.title = sp.RGBToHex(spcdata.value);\n      }\n\n   }\n\nSocialCalc.Popup.Types.ColorChooser.GridMouseDown = function(e) {\n\n   var event = e || window.event;\n\n   var sp = SocialCalc.Popup;\n   var spt = sp.Types;\n   var sptc = spt.ColorChooser;\n   var spc = sp.Controls;\n\n   var id = sp.Current.id;\n   if (!id) return;\n\n   var spcdata = spc[id].data;\n   var grid = spcdata.grid;\n\n   switch (event.type) {\n      case \"mousedown\":\n         grid.mousedown = true;\n         break;\n      case \"mouseup\":\n         grid.mousedown = false;\n         break;\n      case \"mousemove\":\n         if (!grid.mousedown) {\n            return;\n            }\n         break;\n      }\n\n   var pos = SocialCalc.GetElementPositionWithScroll(spcdata.mainele);\n   var clientX = event.clientX - pos.left;\n   var clientY = event.clientY - pos.top;\n   var gpos = SocialCalc.GetElementPositionWithScroll(grid.table);\n   gpos.left -= pos.left;\n   gpos.top -= pos.top\n   var row = Math.floor((clientY-gpos.top-2)/10); // -2 is to split the diff btw IE & FF\n   row = row < 0 ? 0 : row;\n   var col = Math.floor((clientX-gpos.left)/20);\n   row = row < 0 ? 0 : (row > 15 ? 15 : row);\n   col = col < 0 ? 0 : (col > 4 ? 4 : col);\n   var color = sptc.gridToG(grid,row,col).ele.style.backgroundColor;\n   var newrgb = sp.splitRGB(color);\n   var oldrgb = sp.splitRGB(spcdata.value);\n\n   switch (col) {\n      case 2:\n         spcdata.value = sp.makeRGB(newrgb.r, oldrgb.g, oldrgb.b);\n         break;\n      case 3:\n         spcdata.value = sp.makeRGB(oldrgb.r, newrgb.g, oldrgb.b);\n         break;\n      case 4:\n         spcdata.value = sp.makeRGB(oldrgb.r, oldrgb.g, newrgb.b);\n         break;\n      case 0:\n      case 1:\n         spcdata.value = color;\n      }\n\n   sptc.DetermineColors(id);\n   sptc.SetColors(id);\n\n   }\n\n\nSocialCalc.Popup.Types.ColorChooser.ControlClicked = function(id) {\n\n   var sp = SocialCalc.Popup;\n   var spt = sp.Types;\n   var sptc = spt.ColorChooser;\n   var spc = sp.Controls;\n\n   var cid = sp.Current.id;\n   if (!cid || id != cid) {\n      sp.CClick(id);\n      return;\n      }\n\n   sptc.CloseOK();\n\n   }\n\nSocialCalc.Popup.Types.ColorChooser.DefaultClicked = function(e) {\n\n   var event = e || window.event;\n\n   var sp = SocialCalc.Popup;\n   var spt = sp.Types;\n   var sptc = spt.ColorChooser;\n   var spc = sp.Controls;\n\n   var id = sp.Current.id;\n   if (!id) return;\n\n   var spcdata = spc[id].data;\n\n   spcdata.value = \"\";\n   SocialCalc.Popup.SetValue(id, spcdata.value);\n\n   SocialCalc.Popup.Close();\n\n   }\n\nSocialCalc.Popup.Types.ColorChooser.CustomClicked = function(e) {\n\n   var event = e || window.event;\n\n   var sp = SocialCalc.Popup;\n   var spt = sp.Types;\n   var sptc = spt.ColorChooser;\n   var spc = sp.Controls;\n\n   var id = sp.Current.id;\n   if (!id) return;\n\n   var spcdata = spc[id].data;\n\n   var oele, str, nele;\n\n   oele = spcdata.contentele;\n   str = SocialCalc.Popup.Types.ColorChooser.MakeCustom(\"ColorChooser\", id);\n   nele = document.createElement(\"div\");\n   nele.innerHTML = '<div style=\"cursor:default;padding:4px;background-color:#CCC;\">'+str+'</div>';\n   spcdata.customele = nele.firstChild.firstChild.childNodes[2];\n   spcdata.contentele = nele;\n   spcdata.popupele.replaceChild(nele, oele);\n\n   spcdata.customele.value = sp.RGBToHex(spcdata.value);\n\n   if (spcdata.attribs.ensureWithin) {\n      SocialCalc.Popup.EnsurePosition(id, spcdata.attribs.ensureWithin);\n      }\n\n   }\n\n\n\nSocialCalc.Popup.Types.ColorChooser.CustomToGrid = function(id) {\n\n   var oele, str, nele;\n   var sp = SocialCalc.Popup;\n   var spt = sp.Types;\n   var spc = sp.Controls;\n   var spcdata = spc[id].data;\n\n   SocialCalc.Popup.SetValue(id, sp.HexToRGB(\"#\"+spcdata.customele.value));\n\n   var oele, mainele, nele;\n\n   oele = spcdata.contentele;\n   mainele = SocialCalc.Popup.Types.ColorChooser.CreateGrid(\"ColorChooser\", id);\n   nele = document.createElement(\"div\");\n   nele.style.padding = \"3px\";\n   nele.style.backgroundColor = \"#CCC\";\n   nele.appendChild(mainele);\n   spcdata.customele = null;\n   spcdata.contentele = nele;\n   spcdata.popupele.replaceChild(nele, oele);\n   \n   if (spcdata.attribs.ensureWithin) {\n      SocialCalc.Popup.EnsurePosition(id, spcdata.attribs.ensureWithin);\n      }\n   }\n\n\nSocialCalc.Popup.Types.ColorChooser.CustomOK = function(id) {\n\n   var i, c;\n   var sp = SocialCalc.Popup;\n   var spt = sp.Types;\n   var spc = sp.Controls;\n   var spcdata = spc[id].data;\n\n   SocialCalc.Popup.SetValue(id, sp.HexToRGB(\"#\"+spcdata.customele.value));\n\n   SocialCalc.Popup.Close();\n   \n   }\n\nSocialCalc.Popup.Types.ColorChooser.CloseOK = function(e) {\n\n   var event = e || window.event;\n\n   var sp = SocialCalc.Popup;\n   var spt = sp.Types;\n   var sptc = spt.ColorChooser;\n   var spc = sp.Controls;\n\n   var id = sp.Current.id;\n   if (!id) return;\n\n   var spcdata = spc[id].data;\n\n   SocialCalc.Popup.SetValue(id, spcdata.value);\n\n   SocialCalc.Popup.Close();\n\n   }\n\n\n//\n// SocialCalcSpreadsheetControl\n//\n/*\n// The code module of the SocialCalc package that lets you embed a spreadsheet\n// control with toolbar, etc., into a web page.\n//\n// (c) Copyright 2008, 2009, 2010 Socialtext, Inc.\n// All Rights Reserved.\n//\n\n\n/*\n\nLEGAL NOTICES REQUIRED BY THE COMMON PUBLIC ATTRIBUTION LICENSE:\n\nEXHIBIT A. Common Public Attribution License Version 1.0.\n\nThe contents of this file are subject to the Common Public Attribution License Version 1.0 (the \n\"License\"); you may not use this file except in compliance with the License. You may obtain a copy \nof the License at http://socialcalc.org. The License is based on the Mozilla Public License Version 1.1 but \nSections 14 and 15 have been added to cover use of software over a computer network and provide for \nlimited attribution for the Original Developer. In addition, Exhibit A has been modified to be \nconsistent with Exhibit B.\n\nSoftware distributed under the License is distributed on an \"AS IS\" basis, WITHOUT WARRANTY OF ANY \nKIND, either express or implied. See the License for the specific language governing rights and \nlimitations under the License.\n\nThe Original Code is SocialCalc JavaScript SpreadsheetControl.\n\nThe Original Developer is the Initial Developer.\n\nThe Initial Developer of the Original Code is Socialtext, Inc. All portions of the code written by \nSocialtext, Inc., are Copyright (c) Socialtext, Inc. All Rights Reserved.\n\nContributor: Dan Bricklin.\n\n\nEXHIBIT B. Attribution Information\n\nWhen the SpreadsheetControl is producing and/or controlling the display the Graphic Image must be\ndisplayed on the screen visible to the user in a manner comparable to that in the \nOriginal Code. The Attribution Phrase must be displayed as a \"tooltip\" or \"hover-text\" for\nthat image. The image must be linked to the Attribution URL so as to access that page\nwhen clicked. If the user interface includes a prominent \"about\" display which includes\nfactual prominent attribution in a form similar to that in the \"about\" display included\nwith the Original Code, including Socialtext copyright notices and URLs, then the image\nneed not be linked to the Attribution URL but the \"tool-tip\" is still required.\n\nAttribution Copyright Notice:\n\n Copyright (C) 2010 Socialtext, Inc.\n All Rights Reserved.\n\nAttribution Phrase (not exceeding 10 words): SocialCalc\n\nAttribution URL: http://www.socialcalc.org/\n\nGraphic Image: The contents of the sc-logo.gif file in the Original Code or\na suitable replacement from http://www.socialcalc.org/licenses specified as\nbeing for SocialCalc.\n\nDisplay of Attribution Information is required in Larger Works which are defined \nin the CPAL as a work which combines Covered Code or portions thereof with code \nnot governed by the terms of the CPAL.\n\n*/\n\n//\n// Some of the other files in the SocialCalc package are licensed under\n// different licenses. Please note the licenses of the modules you use.\n//\n// Code History:\n//\n// Initially coded by Dan Bricklin of Software Garden, Inc., for Socialtext, Inc.\n// Unless otherwise specified, referring to \"SocialCalc\" in comments refers to this\n// JavaScript version of the code, not the SocialCalc Perl code.\n//\n\n/*\n\nSee the comments in the main SocialCalc code module file of the SocialCalc package.\n\n*/\n\n   var SocialCalc;\n   if (!SocialCalc) {\n      alert(\"Main SocialCalc code module needed\");\n      SocialCalc = {};\n      }\n   if (!SocialCalc.TableEditor) {\n      alert(\"SocialCalc TableEditor code module needed\");\n      }\n\n// *************************************\n//\n// SpreadsheetControl class:\n//\n// *************************************\n\n// Global constants:\n\n   SocialCalc.CurrentSpreadsheetControlObject = null; // right now there can only be one active at a time\n\n\n// Constructor:\n\nSocialCalc.SpreadsheetControl = function(idPrefix) {\n\n   var scc = SocialCalc.Constants;\n\n   // Properties:\n\n   this.parentNode = null;\n   this.spreadsheetDiv = null;\n   this.requestedHeight = 0;\n   this.requestedWidth = 0;\n   this.requestedSpaceBelow = 0;\n   this.height = 0;\n   this.width = 0;\n   this.viewheight = 0; // calculated amount for views below toolbar, etc.\n\n   // Tab definitions: An array where each tab is an object of the form:\n   //\n   //    name: \"name\",\n   //    text: \"text-on-tab\",\n   //    html: \"html-to-create div\",\n   //       replacements:\n   //         \"%s.\": \"SocialCalc\", \"%id.\": spreadsheet.idPrefix, \"%tbt.\": spreadsheet.toolbartext\n   //         Other replacements from spreadsheet.tabreplacements:\n   //            replacementname: {regex: regular-expression-to-match-with-g, replacement: string}\n   //    view: \"viewname\", // view to show when selected; \"sheet\" or missing/null is spreadsheet\n   //    oncreate: function(spreadsheet, tab-name), // called when first created to initialize\n   //    onclick: function(spreadsheet, tab-name), missing/null is sheet default\n   //    onclickFocus: text, // spreadsheet.idPrefix+text is given the focus if present instead of normal KeyboardFocus\n   //       or if text isn't a string, that value (e.g., true) is used for SocialCalc.CmdGotFocus\n   //    onunclick: function(spreadsheet, tab-name), missing/null is sheet default\n\n   this.tabs = [];\n   this.tabnums = {}; // when adding tabs, add tab-name: array-index to this object\n   this.tabreplacements = {}; // see use above\n   this.currentTab = -1; // currently selected tab index in this.tabs or -1 (maintained by SocialCalc.SetTab)\n\n   // View definitions: An object where each view is an object of the form:\n   //\n   //    name: \"name\", // localized when first set using SocialCalc.LocalizeString\n   //    element: node-in-the-dom, // filled in when initialized\n   //    replacements: {}, // see below\n   //    html: \"html-to-create div\",\n   //       replacements:\n   //         \"%s.\": \"SocialCalc\", \"%id.\": spreadsheet.idPrefix, \"%tbt.\": spreadsheet.toolbartext, \"%img.\": spreadsheet.imagePrefix,\n   //         SocialCalc.LocalizeSubstring replacements (\"%loc!string!\" and \"%ssc!constant-name!\")\n   //         Other replacements from viewobject.replacements:\n   //            replacementname: {regex: regular-expression-to-match-with-g, replacement: string}\n   //    divStyle: attributes for sheet div (SocialCalc.setStyles format)\n   //    oncreate: function(spreadsheet, viewobject), // called when first created to initialize\n   //    needsresize: true/false/null, // if true, do resize calc after displaying\n   //    onresize: function(spreadsheet, viewobject), // called if needs resize\n   //    values: {} // optional values to share with onclick handlers, etc.\n   //\n   // There is always a \"sheet\" view.\n\n   this.views = {}; // {viewname: view-object, ...}\n\n   // Dynamic properties:\n\n   this.sheet = null;\n   this.context = null;\n   this.editor = null;\n\n   this.spreadsheetDiv = null;\n   this.editorDiv = null;\n\n   this.sortrange = \"\"; // remembered range for sort tab\n\n   this.moverange = \"\"; // remembered range from movefrom used by movepaste/moveinsert\n\n   // Constants:\n\n   this.idPrefix = idPrefix || \"SocialCalc-\"; // prefix added to element ids used here, should end in \"-\"\n   this.multipartBoundary = \"SocialCalcSpreadsheetControlSave\"; // boundary used by SpreadsheetControlCreateSpreadsheetSave\n   this.imagePrefix = scc.defaultImagePrefix; // prefix added to img src\n\n   this.toolbarbackground = scc.SCToolbarbackground;\n   this.tabbackground = scc.SCTabbackground; // \"background-color:#CCC;\";\n   this.tabselectedCSS = scc.SCTabselectedCSS;\n   this.tabplainCSS = scc.SCTabplainCSS;\n   this.toolbartext = scc.SCToolbartext;\n\n   this.formulabarheight = scc.SCFormulabarheight; // in pixels, will contain a text input box\n\n   this.statuslineheight = scc.SCStatuslineheight; // in pixels\n   this.statuslineCSS = scc.SCStatuslineCSS;\n\n   // Callbacks:\n\n   this.ExportCallback = null; // a function called for Clipboard Export button: this.ExportCallback(spreadsheet_control_object)\n\n   // Initialization Code:\n\n   // eddy Initialization {\n   if(typeof SocialCalc.debug_log === 'undefined') SocialCalc.debug_log = [];   \n   // }   \n   \n   this.sheet = new SocialCalc.Sheet();\n   this.context = new SocialCalc.RenderContext(this.sheet);\n   this.context.showGrid=true;\n   this.context.showRCHeaders=true;\n   this.editor = new SocialCalc.TableEditor(this.context);\n   this.editor.StatusCallback.statusline =\n      {func: SocialCalc.SpreadsheetControlStatuslineCallback,\n       params: {statuslineid: this.idPrefix+\"statusline\",\n                recalcid1: this.idPrefix+\"divider_recalc\",\n                recalcid2: this.idPrefix+\"button_recalc\"}};\n\n   SocialCalc.CurrentSpreadsheetControlObject = this; // remember this for rendezvousing on events\n\n   this.editor.MoveECellCallback.movefrom = function(editor) {\n      var cr;\n      var spreadsheet = SocialCalc.GetSpreadsheetControlObject();\n      spreadsheet.context.cursorsuffix = \"\";\n      if (editor.range2.hasrange && !editor.cellhandles.noCursorSuffix) {\n         if (editor.ecell.row==editor.range2.top && (editor.ecell.col<editor.range2.left || editor.ecell.col>editor.range2.right+1)) {\n            spreadsheet.context.cursorsuffix = \"insertleft\";\n            }\n         if (editor.ecell.col==editor.range2.left && (editor.ecell.row<editor.range2.top || editor.ecell.row>editor.range2.bottom+1)) {\n            spreadsheet.context.cursorsuffix = \"insertup\";\n            }\n         }\n      };\n\n   // formula bar buttons\n\n   this.formulabuttons = {\n      formulafunctions: {image: \"insertformula.png\", tooltip: \"Functions\", // tooltips are localized when set below\n                         command: SocialCalc.SpreadsheetControl.DoFunctionList},\n      multilineinput: {image: \"listbox.png\", tooltip: \"Multi-line Input Box\",\n                         command: SocialCalc.SpreadsheetControl.DoMultiline},\n      link: {image: \"inserthyperlink.png\", tooltip: \"Link Input Box\",\n                         command: SocialCalc.SpreadsheetControl.DoLink},\n      sum: {image: \"autosum.png\", tooltip: \"Auto Sum\",\n                         command: SocialCalc.SpreadsheetControl.DoSum}\n      }\n   \n   // find buttons\n   this.findbuttons = {\n       last: {image: 'upsearch.png', tooltip: 'Find Previous',\n              command: SocialCalc.SpreadsheetControl.SearchUp},\n       next: {image: 'downsearch.png', tooltip: 'Find Next', \n              command: SocialCalc.SpreadsheetControl.SearchDown}\n   }\n\n   // Default tabs:\n\n   // Edit\n\n   this.tabnums.edit = this.tabs.length;\n   this.tabs.push({name: \"edit\", text: \"Edit\", html:\n     ' <div id=\"%id.edittools\" style=\"padding:10px 0px 0px 0px;\">'+\n'&nbsp;<img id=\"%id.button_undo\" src=\"%img.undo.png\" style=\"vertical-align:bottom;\">'+\n' <img id=\"%id.button_redo\" src=\"%img.redo.png\" style=\"vertical-align:bottom;\">'+\n' &nbsp;<img src=\"%img.divider1.png\" style=\"vertical-align:bottom;\">&nbsp; '+\n'<img id=\"%id.button_copy\" src=\"%img.copy.png\" style=\"vertical-align:bottom;\">'+\n' <img id=\"%id.button_cut\" src=\"%img.cut.png\" style=\"vertical-align:bottom;\">'+\n' <img id=\"%id.button_paste\" src=\"%img.paste.png\" style=\"vertical-align:bottom;\">'+\n' &nbsp;<img src=\"%img.divider1.png\" style=\"vertical-align:bottom;\">&nbsp; '+\n'<img id=\"%id.button_delete\" src=\"%img.delete.png\" style=\"vertical-align:bottom;\">'+\n' <img id=\"%id.button_pasteformats\" src=\"%img.formatpaintbrush.png\" style=\"vertical-align:bottom;\">'+\n' &nbsp;<img src=\"%img.divider1.png\" style=\"vertical-align:bottom;\">&nbsp; '+\n' <span id=\"%id.locktools\"><img id=\"%id.button_lock\" src=\"%img.lock.png\" style=\"vertical-align:bottom;\">'+\n' <img id=\"%id.button_unlock\" src=\"%img.unlock.png\" style=\"vertical-align:bottom;\">'+\n' &nbsp;<img src=\"%img.divider1.png\" style=\"vertical-align:bottom;\">&nbsp;</span> '+\n'<img id=\"%id.button_filldown\" src=\"%img.filldown.png\" style=\"vertical-align:bottom;\">'+\n' <img id=\"%id.button_fillright\" src=\"%img.fillright.png\" style=\"vertical-align:bottom;\">'+\n' &nbsp;<img src=\"%img.divider1.png\" style=\"vertical-align:bottom;\">&nbsp; '+\n'<img id=\"%id.button_movefrom\" src=\"%img.movefromoff.gif\" style=\"vertical-align:bottom;\">'+\n' <img id=\"%id.button_movepaste\" src=\"%img.movepasteoff.gif\" style=\"vertical-align:bottom;\">'+\n' <img id=\"%id.button_moveinsert\" src=\"%img.moveinsertoff.gif\" style=\"vertical-align:bottom;\">'+\n' &nbsp;<img src=\"%img.divider1.png\" style=\"vertical-align:bottom;\">&nbsp; '+\n'<img id=\"%id.button_alignleft\" src=\"%img.alignleft.png\" style=\"vertical-align:bottom;\">'+\n' <img id=\"%id.button_aligncenter\" src=\"%img.aligncenter.png\" style=\"vertical-align:bottom;\">'+\n' <img id=\"%id.button_alignright\" src=\"%img.alignright.png\" style=\"vertical-align:bottom;\">'+\n' &nbsp;<img src=\"%img.divider1.png\" style=\"vertical-align:bottom;\">&nbsp; '+\n'<img id=\"%id.button_borderon\" src=\"%img.borderson.png\" style=\"vertical-align:bottom;\"> '+\n' <img id=\"%id.button_borderoff\" src=\"%img.bordersoff.png\" style=\"vertical-align:bottom;\"> '+\n' <img id=\"%id.button_swapcolors\" src=\"%img.swapcolors.png\" style=\"vertical-align:bottom;\"> '+\n' &nbsp;<img src=\"%img.divider1.png\" style=\"vertical-align:bottom;\">&nbsp; '+\n'<img id=\"%id.button_merge\" src=\"%img.mergecells.png\" style=\"vertical-align:bottom;\"> '+\n' &nbsp;<img src=\"%img.divider1.png\" style=\"vertical-align:bottom;\">&nbsp; '+\n'<img id=\"%id.button_insertrow\" src=\"%img.insertrows.png\" style=\"vertical-align:bottom;\"> '+\n' <img id=\"%id.button_insertcol\" src=\"%img.insertcolumns.png\" style=\"vertical-align:bottom;\"> '+\n' <img id=\"%id.button_deleterow\" src=\"%img.deleterows.png\" style=\"vertical-align:bottom;\"> '+\n' <img id=\"%id.button_deletecol\" src=\"%img.deletecolumns.png\" style=\"vertical-align:bottom;\"> '+\n' <img id=\"%id.button_hiderow\" src=\"%img.hiderow.png\" style=\"vertical-align:bottom;\"> '+\n' <img id=\"%id.button_hidecol\" src=\"%img.hidecol.png\" style=\"vertical-align:bottom;\"> '+\n' &nbsp;<img id=\"%id.divider_recalc\" src=\"%img.divider1.png\" style=\"vertical-align:bottom;\">&nbsp; '+\n'<img id=\"%id.button_recalc\" src=\"%img.recalc.png\" style=\"vertical-align:bottom;\"> '+\n      ' </div>',\n      oncreate: null, //function(spreadsheet, viewobject) {SocialCalc.DoCmd(null, \"fill-rowcolstuff\");},\n      onclick: null});\n\n   // Settings (Format)\n\n   this.tabnums.settings = this.tabs.length;\n   this.tabs.push({name: \"settings\", text: \"Format\", html:\n      '<div id=\"%id.settingstools\" style=\"display:none;\">'+\n      ' <div id=\"%id.sheetsettingstoolbar\" style=\"display:none;\">'+\n      '  <table cellspacing=\"0\" cellpadding=\"0\"><tr><td>'+\n      '   <div style=\"%tbt.\">%loc!SHEET SETTINGS!:</div>'+\n      '   </td></tr><tr><td>'+\n      '   <input id=\"%id.settings-savesheet\" type=\"button\" value=\"%loc!Save!\" onclick=\"SocialCalc.SettingsControlSave(\\'sheet\\');\">'+\n      '   <input type=\"button\" value=\"%loc!Cancel!\" onclick=\"SocialCalc.SettingsControlSave(\\'cancel\\');\">'+\n      '   <input type=\"button\" value=\"%loc!Show Cell Settings!\" onclick=\"SocialCalc.SpreadsheetControlSettingsSwitch(\\'cell\\');return false;\">'+\n      '   </td></tr></table>'+\n      ' </div>'+\n      ' <div id=\"%id.cellsettingstoolbar\" style=\"display:none;\">'+\n      '  <table cellspacing=\"0\" cellpadding=\"0\"><tr><td>'+\n      '   <div style=\"%tbt.\">%loc!CELL SETTINGS!: <span id=\"%id.settingsecell\">&nbsp;</span></div>'+\n      '   </td></tr><tr><td>'+\n      '  <input id=\"%id.settings-savecell\" type=\"button\" value=\"%loc!Save!\" onclick=\"SocialCalc.SettingsControlSave(\\'cell\\');\">'+\n      '  <input type=\"button\" value=\"%loc!Cancel!\" onclick=\"SocialCalc.SettingsControlSave(\\'cancel\\');\">'+\n      '  <input type=\"button\" value=\"%loc!Show Sheet Settings!\" onclick=\"SocialCalc.SpreadsheetControlSettingsSwitch(\\'sheet\\');return false;\">'+\n      '  </td></tr></table>'+\n      ' </div>'+\n      '</div>',\n      view: \"settings\",\n      onclick: function(s, t) {\n         SocialCalc.SettingsControls.idPrefix = s.idPrefix; // used to get color chooser div\n         SocialCalc.SettingControlReset();\n         var sheetattribs = s.sheet.EncodeSheetAttributes();\n         var cellattribs = s.sheet.EncodeCellAttributes(s.editor.ecell.coord);\n         SocialCalc.SettingsControlLoadPanel(s.views.settings.values.sheetspanel, sheetattribs);\n         SocialCalc.SettingsControlLoadPanel(s.views.settings.values.cellspanel, cellattribs);\n         document.getElementById(s.idPrefix+\"settingsecell\").innerHTML = s.editor.ecell.coord;\n         SocialCalc.SpreadsheetControlSettingsSwitch(\"cell\");\n         s.views.settings.element.style.height = s.viewheight+\"px\";\n         s.views.settings.element.firstChild.style.height = s.viewheight+\"px\";\n\n         var range;  // set save message\n         if (s.editor.range.hasrange) {\n            range = SocialCalc.crToCoord(s.editor.range.left, s.editor.range.top) + \":\" +\n               SocialCalc.crToCoord(s.editor.range.right, s.editor.range.bottom);\n            }\n         else {\n            range = s.editor.ecell.coord;\n            }\n         document.getElementById(s.idPrefix+\"settings-savecell\").value = SocialCalc.LocalizeString(\"Save to\")+\": \"+range;\n         },\n      onclickFocus: true\n         });\n\n   this.views[\"settings\"] = {name: \"settings\", values: {},\n      oncreate: function(s, viewobj) {\n         var scc = SocialCalc.Constants;\n\n         viewobj.values.sheetspanel = {\n//            name: \"sheet\",\n            colorchooser: {id: s.idPrefix+\"scolorchooser\"},\n            formatnumber: {setting: \"numberformat\", type: \"PopupList\", id: s.idPrefix+\"formatnumber\",\n               initialdata: scc.SCFormatNumberFormats},\n            formattext: {setting: \"textformat\", type: \"PopupList\", id: s.idPrefix+\"formattext\",\n               initialdata: scc.SCFormatTextFormats},\n            fontfamily: {setting: \"fontfamily\", type: \"PopupList\", id: s.idPrefix+\"fontfamily\",\n               initialdata: scc.SCFormatFontfamilies},\n            fontlook: {setting: \"fontlook\", type: \"PopupList\", id: s.idPrefix+\"fontlook\",\n               initialdata: scc.SCFormatFontlook},\n            fontsize: {setting: \"fontsize\", type: \"PopupList\", id: s.idPrefix+\"fontsize\",\n               initialdata: scc.SCFormatFontsizes},\n            textalignhoriz: {setting: \"textalignhoriz\", type: \"PopupList\", id: s.idPrefix+\"textalignhoriz\",\n               initialdata: scc.SCFormatTextAlignhoriz},\n            numberalignhoriz: {setting: \"numberalignhoriz\", type: \"PopupList\", id: s.idPrefix+\"numberalignhoriz\",\n               initialdata: scc.SCFormatNumberAlignhoriz},\n            alignvert: {setting: \"alignvert\", type: \"PopupList\", id: s.idPrefix+\"alignvert\",\n               initialdata: scc.SCFormatAlignVertical},\n            textcolor: {setting: \"textcolor\", type: \"ColorChooser\", id: s.idPrefix+\"textcolor\"},\n            bgcolor: {setting: \"bgcolor\", type: \"ColorChooser\", id: s.idPrefix+\"bgcolor\"},\n            padtop: {setting: \"padtop\", type: \"PopupList\", id: s.idPrefix+\"padtop\",\n               initialdata: scc.SCFormatPadsizes},\n            padright: {setting: \"padright\", type: \"PopupList\", id: s.idPrefix+\"padright\",\n               initialdata: scc.SCFormatPadsizes},\n            padbottom: {setting: \"padbottom\", type: \"PopupList\", id: s.idPrefix+\"padbottom\",\n               initialdata: scc.SCFormatPadsizes},\n            padleft: {setting: \"padleft\", type: \"PopupList\", id: s.idPrefix+\"padleft\",\n               initialdata: scc.SCFormatPadsizes},\n            colwidth: {setting: \"colwidth\", type: \"PopupList\", id: s.idPrefix+\"colwidth\",\n               initialdata: scc.SCFormatColwidth},\n            recalc: {setting: \"recalc\", type: \"PopupList\", id: s.idPrefix+\"recalc\",\n               initialdata: scc.SCFormatRecalc},\n            usermaxcol: {setting: \"usermaxcol\", type: \"PopupList\", id: s.idPrefix+\"usermaxcol\",\n               initialdata: scc.SCFormatUserMaxCol},\n            usermaxrow: {setting: \"usermaxrow\", type: \"PopupList\", id: s.idPrefix+\"usermaxrow\",\n               initialdata: scc.SCFormatUserMaxRow}\n\n            };\n         viewobj.values.cellspanel = {\n            name: \"cell\",\n            colorchooser: {id: s.idPrefix+\"scolorchooser\"},\n            cformatnumber: {setting: \"numberformat\", type: \"PopupList\", id: s.idPrefix+\"cformatnumber\",\n               initialdata: scc.SCFormatNumberFormats},\n            cformattext: {setting: \"textformat\", type: \"PopupList\", id: s.idPrefix+\"cformattext\",\n               initialdata: scc.SCFormatTextFormats},\n            cfontfamily: {setting: \"fontfamily\", type: \"PopupList\", id: s.idPrefix+\"cfontfamily\",\n               initialdata: scc.SCFormatFontfamilies},\n            cfontlook: {setting: \"fontlook\", type: \"PopupList\", id: s.idPrefix+\"cfontlook\",\n               initialdata: scc.SCFormatFontlook},\n            cfontsize: {setting: \"fontsize\", type: \"PopupList\", id: s.idPrefix+\"cfontsize\",\n               initialdata: scc.SCFormatFontsizes},\n            calignhoriz: {setting: \"alignhoriz\", type: \"PopupList\", id: s.idPrefix+\"calignhoriz\",\n               initialdata: scc.SCFormatTextAlignhoriz},\n            calignvert: {setting: \"alignvert\", type: \"PopupList\", id: s.idPrefix+\"calignvert\",\n               initialdata: scc.SCFormatAlignVertical},\n            ctextcolor: {setting: \"textcolor\", type: \"ColorChooser\", id: s.idPrefix+\"ctextcolor\"},\n            cbgcolor: {setting: \"bgcolor\", type: \"ColorChooser\", id: s.idPrefix+\"cbgcolor\"},\n            cbt: {setting: \"bt\", type: \"BorderSide\", id: s.idPrefix+\"cbt\"},\n            cbr: {setting: \"br\", type: \"BorderSide\", id: s.idPrefix+\"cbr\"},\n            cbb: {setting: \"bb\", type: \"BorderSide\", id: s.idPrefix+\"cbb\"},\n            cbl: {setting: \"bl\", type: \"BorderSide\", id: s.idPrefix+\"cbl\"},\n            cpadtop: {setting: \"padtop\", type: \"PopupList\", id: s.idPrefix+\"cpadtop\",\n               initialdata: scc.SCFormatPadsizes},\n            cpadright: {setting: \"padright\", type: \"PopupList\", id: s.idPrefix+\"cpadright\",\n               initialdata: scc.SCFormatPadsizes},\n            cpadbottom: {setting: \"padbottom\", type: \"PopupList\", id: s.idPrefix+\"cpadbottom\",\n               initialdata: scc.SCFormatPadsizes},\n            cpadleft: {setting: \"padleft\", type: \"PopupList\", id: s.idPrefix+\"cpadleft\",\n               initialdata: scc.SCFormatPadsizes}\n            };\n\n         SocialCalc.SettingsControlInitializePanel(viewobj.values.sheetspanel);\n         SocialCalc.SettingsControlInitializePanel(viewobj.values.cellspanel);\n         },\n      replacements: {\n         itemtitle: {regex: /\\%itemtitle\\./g, replacement: 'style=\"padding:12px 10px 0px 10px;font-weight:bold;text-align:right;vertical-align:top;font-size:small;\"'},\n         sectiontitle: {regex: /\\%sectiontitle\\./g, replacement: 'style=\"padding:16px 10px 0px 0px;font-weight:bold;vertical-align:top;font-size:small;color:#C00;\"'},\n         parttitle: {regex: /\\%parttitle\\./g, replacement: 'style=\"font-weight:bold;font-size:x-small;padding:0px 0px 3px 0px;\"'},\n         itembody: {regex: /\\%itembody\\./g, replacement: 'style=\"padding:12px 0px 0px 0px;vertical-align:top;font-size:small;\"'},\n         bodypart: {regex: /\\%bodypart\\./g, replacement: 'style=\"padding:0px 10px 0px 0px;font-size:small;vertical-align:top;\"'}\n         },\n      divStyle: \"border:1px solid black;overflow:auto;\",\n      html:\n '<div id=\"%id.scolorchooser\" style=\"display:none;position:absolute;z-index:20;\"></div>'+\n'<table cellspacing=\"0\" cellpadding=\"0\">'+\n' <tr><td style=\"vertical-align:top;\">'+\n'<table id=\"%id.sheetsettingstable\" style=\"display:none;\" cellspacing=\"0\" cellpadding=\"0\">'+\n'<tr>'+\n' <td %itemtitle.><br>%loc!Default Format!:</td>'+\n' <td %itembody.>'+\n'   <table cellspacing=\"0\" cellpadding=\"0\"><tr>'+\n'    <td %bodypart.>'+\n'     <div %parttitle.>%loc!Number!</div>'+\n'     <span id=\"%id.formatnumber\"></span>'+\n'    </td>'+\n'    <td %bodypart.>'+\n'     <div %parttitle.>%loc!Text!</div>'+\n'     <span id=\"%id.formattext\"></span>'+\n'    </td>'+\n'   </tr></table>'+\n' </td>'+\n'</tr>'+\n'<tr>'+\n' <td %itemtitle.><br>%loc!Default Alignment!:</td>'+\n' <td %itembody.>'+\n'   <table cellspacing=\"0\" cellpadding=\"0\"><tr>'+\n'    <td %bodypart.>'+\n'     <div %parttitle.>%loc!Text Horizontal!</div>'+\n'     <span id=\"%id.textalignhoriz\"></span>'+\n'    </td>'+\n'    <td %bodypart.>'+\n'     <div %parttitle.>%loc!Number Horizontal!</div>'+\n'     <span id=\"%id.numberalignhoriz\"></span>'+\n'    </td>'+\n'    <td %bodypart.>'+\n'     <div %parttitle.>%loc!Vertical!</div>'+\n'     <span id=\"%id.alignvert\"></span>'+\n'    </td>'+\n'   </tr></table>'+\n' </td>'+\n'</tr>'+\n'<tr>'+\n' <td %itemtitle.><br>%loc!Default Font!:</td>'+\n' <td %itembody.>'+\n'   <table cellspacing=\"0\" cellpadding=\"0\"><tr>'+\n'    <td %bodypart.>'+\n'     <div %parttitle.>%loc!Family!</div>'+\n'     <span id=\"%id.fontfamily\"></span>'+\n'    </td>'+\n'    <td %bodypart.>'+\n'     <div %parttitle.>%loc!Bold &amp; Italics!</div>'+\n'     <span id=\"%id.fontlook\"></span>'+\n'    </td>'+\n'    <td %bodypart.>'+\n'     <div %parttitle.>%loc!Size!</div>'+\n'     <span id=\"%id.fontsize\"></span>'+\n'    </td>'+\n'    <td %bodypart.>'+\n'     <div %parttitle.>%loc!Color!</div>'+\n'     <div id=\"%id.textcolor\"></div>'+\n'    </td>'+\n'    <td %bodypart.>'+\n'     <div %parttitle.>%loc!Background!</div>'+\n'     <div id=\"%id.bgcolor\"></div>'+\n'    </td>'+\n'   </tr></table>'+\n' </td>'+\n'</tr>'+\n'<tr>'+\n' <td %itemtitle.><br>%loc!Default Padding!:</td>'+\n' <td %itembody.>'+\n'   <table cellspacing=\"0\" cellpadding=\"0\"><tr>'+\n'    <td %bodypart.>'+\n'     <div %parttitle.>%loc!Top!</div>'+\n'     <span id=\"%id.padtop\"></span>'+\n'    </td>'+\n'    <td %bodypart.>'+\n'     <div %parttitle.>%loc!Right!</div>'+\n'     <span id=\"%id.padright\"></span>'+\n'    </td>'+\n'    <td %bodypart.>'+\n'     <div %parttitle.>%loc!Bottom!</div>'+\n'     <span id=\"%id.padbottom\"></span>'+\n'    </td>'+\n'    <td %bodypart.>'+\n'     <div %parttitle.>%loc!Left!</div>'+\n'     <span id=\"%id.padleft\"></span>'+\n'    </td>'+\n'   </tr></table>'+\n' </td>'+\n'</tr>'+\n'<tr>'+\n' <td %itemtitle.><br>%loc!Default Column Width!:</td>'+\n' <td %itembody.>'+\n'   <table cellspacing=\"0\" cellpadding=\"0\"><tr>'+\n'    <td %bodypart.>'+\n'     <div %parttitle.>&nbsp;</div>'+\n'     <span id=\"%id.colwidth\"></span>'+\n'    </td>'+\n'   </tr></table>'+\n' </td>'+\n'</tr>'+\n'<tr>'+\n' <td %itemtitle.><br>%loc!Recalculation!:</td>'+\n' <td %itembody.>'+\n'   <table cellspacing=\"0\" cellpadding=\"0\"><tr>'+\n'    <td %bodypart.>'+\n'     <div %parttitle.>&nbsp;</div>'+\n'     <span id=\"%id.recalc\"></span>'+\n'    </td>'+\n'   </tr></table>'+\n' </td>'+\n'</tr>'+\n'<tr>'+\n' <td %itemtitle.><br>%loc!Dimensions!:</td>'+\n' <td %itembody.>'+\n'   <table cellspacing=\"0\" cellpadding=\"0\"><tr>'+\n'    <td %bodypart.>'+\n'     <div %parttitle.>%loc!Columns!</div>'+\n'     <span id=\"%id.usermaxcol\"></span>'+\n'    </td>'+\n'    <td %bodypart.>'+\n'     <div %parttitle.>%loc!Rows!</div>'+\n'     <span id=\"%id.usermaxrow\"></span>'+\n'    </td>'+\n'   </tr></table>'+\n' </td>'+\n'</tr>'+\n'</table>'+\n'<table id=\"%id.cellsettingstable\" cellspacing=\"0\" cellpadding=\"0\">'+\n'<tr>'+\n' <td %itemtitle.><br>%loc!Format!:</td>'+\n' <td %itembody.>'+\n'   <table cellspacing=\"0\" cellpadding=\"0\"><tr>'+\n'    <td %bodypart.>'+\n'     <div %parttitle.>%loc!Number!</div>'+\n'     <span id=\"%id.cformatnumber\"></span>'+\n'    </td>'+\n'    <td %bodypart.>'+\n'     <div %parttitle.>%loc!Text!</div>'+\n'     <span id=\"%id.cformattext\"></span>'+\n'    </td>'+\n'   </tr></table>'+\n' </td>'+\n'</tr>'+\n'<tr>'+\n' <td %itemtitle.><br>%loc!Alignment!:</td>'+\n' <td %itembody.>'+\n'   <table cellspacing=\"0\" cellpadding=\"0\"><tr>'+\n'    <td %bodypart.>'+\n'     <div %parttitle.>%loc!Horizontal!</div>'+\n'     <span id=\"%id.calignhoriz\"></span>'+\n'    </td>'+\n'    <td %bodypart.>'+\n'     <div %parttitle.>%loc!Vertical!</div>'+\n'     <span id=\"%id.calignvert\"></span>'+\n'    </td>'+\n'   </tr></table>'+\n' </td>'+\n'</tr>'+\n'<tr>'+\n' <td %itemtitle.><br>%loc!Font!:</td>'+\n' <td %itembody.>'+\n'   <table cellspacing=\"0\" cellpadding=\"0\"><tr>'+\n'    <td %bodypart.>'+\n'     <div %parttitle.>%loc!Family!</div>'+\n'     <span id=\"%id.cfontfamily\"></span>'+\n'    </td>'+\n'    <td %bodypart.>'+\n'     <div %parttitle.>%loc!Bold &amp; Italics!</div>'+\n'     <span id=\"%id.cfontlook\"></span>'+\n'    </td>'+\n'    <td %bodypart.>'+\n'     <div %parttitle.>%loc!Size!</div>'+\n'     <span id=\"%id.cfontsize\"></span>'+\n'    </td>'+\n'    <td %bodypart.>'+\n'     <div %parttitle.>%loc!Color!</div>'+\n'     <div id=\"%id.ctextcolor\"></div>'+\n'    </td>'+\n'    <td %bodypart.>'+\n'     <div %parttitle.>%loc!Background!</div>'+\n'     <div id=\"%id.cbgcolor\"></div>'+\n'    </td>'+\n'   </tr></table>'+\n' </td>'+\n'</tr>'+\n'<tr>'+\n' <td %itemtitle.><br>%loc!Borders!:</td>'+\n' <td %itembody.>'+\n'   <table cellspacing=\"0\" cellpadding=\"0\">'+\n'    <tr><td %bodypart. colspan=\"3\"><div %parttitle.>%loc!Top Border!</div></td>'+\n'     <td %bodypart. colspan=\"3\"><div %parttitle.>%loc!Right Border!</div></td>'+\n'     <td %bodypart. colspan=\"3\"><div %parttitle.>%loc!Bottom Border!</div></td>'+\n'     <td %bodypart. colspan=\"3\"><div %parttitle.>%loc!Left Border!</div></td>'+\n'    </tr><tr>'+\n'    <td %bodypart.>'+\n'     <input id=\"%id.cbt-onoff-bcb\" onclick=\"SocialCalc.SettingsControlOnchangeBorder(this);\" type=\"checkbox\">'+\n'    </td>'+\n'    <td %bodypart.>'+\n'     <div id=\"%id.cbt-color\"></div>'+\n'    </td>'+\n'    <td>&nbsp;&nbsp;&nbsp;&nbsp;</td>'+\n'    <td %bodypart.>'+\n'     <input id=\"%id.cbr-onoff-bcb\" onclick=\"SocialCalc.SettingsControlOnchangeBorder(this);\" type=\"checkbox\">'+\n'    </td>'+\n'    <td %bodypart.>'+\n'     <div id=\"%id.cbr-color\"></div>'+\n'    </td>'+\n'    <td>&nbsp;&nbsp;&nbsp;&nbsp;</td>'+\n'    <td %bodypart.>'+\n'     <input id=\"%id.cbb-onoff-bcb\" onclick=\"SocialCalc.SettingsControlOnchangeBorder(this);\" type=\"checkbox\">'+\n'    </td>'+\n'    <td %bodypart.>'+\n'     <div id=\"%id.cbb-color\"></div>'+\n'    </td>'+\n'    <td>&nbsp;&nbsp;&nbsp;&nbsp;</td>'+\n'    <td %bodypart.>'+\n'     <input id=\"%id.cbl-onoff-bcb\" onclick=\"SocialCalc.SettingsControlOnchangeBorder(this);\" type=\"checkbox\">'+\n'    </td>'+\n'    <td %bodypart.>'+\n'     <div id=\"%id.cbl-color\"></div>'+\n'    </td>'+\n'    <td>&nbsp;&nbsp;&nbsp;&nbsp;</td>'+\n'   </tr></table>'+\n' </td>'+\n'</tr>'+\n'<tr>'+\n' <td %itemtitle.><br>%loc!Padding!:</td>'+\n' <td %itembody.>'+\n'   <table cellspacing=\"0\" cellpadding=\"0\"><tr>'+\n'    <td %bodypart.>'+\n'     <div %parttitle.>%loc!Top!</div>'+\n'     <span id=\"%id.cpadtop\"></span>'+\n'    </td>'+\n'    <td %bodypart.>'+\n'     <div %parttitle.>%loc!Right!</div>'+\n'     <span id=\"%id.cpadright\"></span>'+\n'    </td>'+\n'    <td %bodypart.>'+\n'     <div %parttitle.>%loc!Bottom!</div>'+\n'     <span id=\"%id.cpadbottom\"></span>'+\n'    </td>'+\n'    <td %bodypart.>'+\n'     <div %parttitle.>%loc!Left!</div>'+\n'     <span id=\"%id.cpadleft\"></span>'+\n'    </td>'+\n'   </tr></table>'+\n' </td>'+\n'</tr>'+\n'</table>'+\n' </td><td style=\"vertical-align:top;padding:12px 0px 0px 12px;\">'+\n'  <div style=\"width:100px;height:100px;overflow:hidden;border:1px solid black;background-color:#EEE;padding:6px;\">'+\n'   <table cellspacing=\"0\" cellpadding=\"0\"><tr>'+\n'    <td id=\"sample-text\" style=\"height:100px;width:100px;\"><div>%loc!This is a<br>sample!</div><div>-1234.5</div></td>'+\n'   </tr></table>'+\n'  </div>'+\n' </td></tr></table>'+\n'<br>'\n      };\n\n   // Sort\n\n   this.tabnums.sort = this.tabs.length;\n   this.tabs.push({name: \"sort\", text: \"Sort\", html:\n      ' <div id=\"%id.sorttools\" style=\"display:none;\">'+\n      '  <table cellspacing=\"0\" cellpadding=\"0\"><tr>'+\n      '   <td style=\"vertical-align:top;padding-right:4px;width:160px;\">'+\n      '    <div style=\"%tbt.\">%loc!Set Cells To Sort!</div>'+\n      '    <select id=\"%id.sortlist\" size=\"1\" onfocus=\"%s.CmdGotFocus(this);\"><option selected>[select range]</option><option value=\"all\">Sort All</option></select>'+\n      '    <input type=\"button\" value=\"%loc!OK!\" onclick=\"%s.DoCmd(this, \\'ok-setsort\\');\" style=\"font-size:x-small;\">'+\n      '   </td>'+\n      '   <td style=\"vertical-align:middle;padding-right:16px;width:100px;text-align:right;\">'+\n      '    <div style=\"%tbt.\">&nbsp;</div>'+\n      '    <input type=\"button\" id=\"%id.sortbutton\" value=\"%loc!Sort Cells! A1:A1\" onclick=\"%s.DoCmd(this, \\'dosort\\');\" style=\"visibility:hidden;\">'+\n      '   </td>'+\n      '   <td style=\"vertical-align:top;padding-right:16px;\">'+\n      '    <table cellspacing=\"0\" cellpadding=\"0\"><tr>'+\n      '     <td style=\"vertical-align:top;\">'+\n      '      <div style=\"%tbt.\">%loc!Major Sort!</div>'+\n      '      <select id=\"%id.majorsort\" size=\"1\" onfocus=\"%s.CmdGotFocus(this);\"></select>'+\n      '     </td><td>'+\n      '      <input type=\"radio\" name=\"majorsort\" id=\"%id.majorsortup\" value=\"up\" checked><span style=\"font-size:x-small;color:#555753;\">%loc!Up!</span><br>'+\n      '      <input type=\"radio\" name=\"majorsort\" id=\"%id.majorsortdown\" value=\"down\"><span style=\"font-size:x-small;color:#555753;\">%loc!Down!</span>'+\n      '     </td>'+\n      '    </tr></table>'+\n      '   </td>'+\n      '   <td style=\"vertical-align:top;padding-right:16px;\">'+\n      '    <table cellspacing=\"0\" cellpadding=\"0\"><tr>'+\n      '     <td style=\"vertical-align:top;\">'+\n      '      <div style=\"%tbt.\">%loc!Minor Sort!</div>'+\n      '      <select id=\"%id.minorsort\" size=\"1\" onfocus=\"%s.CmdGotFocus(this);\"></select>'+\n      '     </td><td>'+\n      '      <input type=\"radio\" name=\"minorsort\" id=\"%id.minorsortup\" value=\"up\" checked><span style=\"font-size:x-small;color:#555753;\">%loc!Up!</span><br>'+\n      '      <input type=\"radio\" name=\"minorsort\" id=\"%id.minorsortdown\" value=\"down\"><span style=\"font-size:x-small;color:#555753;\">%loc!Down!</span>'+\n      '     </td>'+\n      '    </tr></table>'+\n      '   </td>'+\n      '   <td style=\"vertical-align:top;padding-right:16px;\">'+\n      '    <table cellspacing=\"0\" cellpadding=\"0\"><tr>'+\n      '     <td style=\"vertical-align:top;\">'+\n      '      <div style=\"%tbt.\">%loc!Last Sort!</div>'+\n      '      <select id=\"%id.lastsort\" size=\"1\" onfocus=\"%s.CmdGotFocus(this);\"></select>'+\n      '     </td><td>'+\n      '      <input type=\"radio\" name=\"lastsort\" id=\"%id.lastsortup\" value=\"up\" checked><span style=\"font-size:x-small;color:#555753;\">%loc!Up!</span><br>'+\n      '      <input type=\"radio\" name=\"lastsort\" id=\"%id.lastsortdown\" value=\"down\"><span style=\"font-size:x-small;color:#555753;\">%loc!Down!</span>'+\n      '     </td>'+\n      '    </tr></table>'+\n      '   </td>'+\n      '  </tr></table>'+\n      ' </div>',\n      onclick: SocialCalc.SpreadsheetControlSortOnclick});\n   this.editor.SettingsCallbacks.sort = {save: SocialCalc.SpreadsheetControlSortSave, load: SocialCalc.SpreadsheetControlSortLoad};\n\n   // Audit\n\n   this.tabnums.audit = this.tabs.length;\n   this.tabs.push({name: \"audit\", text: \"Audit\", html:\n      '<div id=\"%id.audittools\" style=\"display:none;\">'+\n      ' <div style=\"%tbt.\">&nbsp;</div>'+\n      '</div>',\n      view: \"audit\",\n      onclick:\n         function(s, t) {\n            var SCLoc = SocialCalc.LocalizeString;\n            var i, j;\n            var str = '<table cellspacing=\"0\" cellpadding=\"0\" style=\"margin-bottom:10px;\"><tr><td style=\"font-size:small;padding:6px;\"><b>'+SCLoc(\"Audit Trail This Session\")+':</b><br><br>';\n            var stack = s.sheet.changes.stack;\n            var tos = s.sheet.changes.tos;\n            for (i=0; i<stack.length; i++) {\n               if (i==tos+1) str += '<br></td></tr><tr><td style=\"font-size:small;background-color:#EEE;padding:6px;\">'+SCLoc(\"UNDONE STEPS\")+':<br>';\n               for (j=0; j<stack[i].command.length; j++) {\n                  str += SocialCalc.special_chars(stack[i].command[j]) + \"<br>\";\n                  }\n               }\n\t\t\t// --------------------------------------------   \n \t\t    // eddy log {\n\n\t\t\t// --------------------------------------------   \n\t\t\tvar ObjToSource = function(o){\n\t\t\t\tif (typeof(o) == \"string\") return o;\n\t\t\t\tif (!o) return 'null';\n\t\t\t\tif (typeof(o) == \"object\") {\n\t\t\t\t\tif (!ObjToSource.check) ObjToSource.check = new Array();\n\t\t\t\t\tfor (var i=0, k=ObjToSource.check.length ; i<k ; ++i) {\n\t\t\t\t\t\tif (ObjToSource.check[i] == o) {return '{}';}\n\t\t\t\t\t}\n\t\t\t\t\tObjToSource.check.push(o);\n\t\t\t\t}\n\t\t\t\tvar k=\"\",na=typeof(o.length)==\"undefined\"?1:0,str=\"\";\n\t\t\t\tfor(var p in o){\n\t\t\t\t\tif (na) k = \"'\"+p+ \"':\";\n\t\t\t\t\tif (typeof o[p] == \"string\") str += k + \"'\" + o[p]+\"',\";\n\t\t\t\t\telse if (typeof o[p] == \"object\") str += k + ObjToSource(o[p])+\",\";\n\t\t\t\t\telse str += k + o[p] + \",\";\n\t\t\t\t}\n\t\t\t\tif (typeof(o) == \"object\") ObjToSource.check.pop();\n\t\t\t\tif (na) return \"{\"+str.slice(0,-1)+\"}\";\n\t\t\t\telse return \"[\"+str.slice(0,-1)+\"]\";\n\t\t\t}\n\t\t\t\n\t\t\t// --------------------------------------------   \n\t\t\t\n\t\t    if(typeof SocialCalc.debug_log != 'undefined') {\n\t\t\t\tfor(var index in SocialCalc.debug_log) { \n\t\t\t\t\tstr += ObjToSource(SocialCalc.debug_log[index]) + \"<br>\";\n\t\t\t\t}\n\t\t\t}\n\t\t    // }   \n\t\t\t// --------------------------------------------   \n\t\t\t   \n            s.views.audit.element.innerHTML = str+\"</td></tr></table>\";\n            SocialCalc.CmdGotFocus(true);\n            },\n      onclickFocus: true\n         });\n\n   this.views[\"audit\"] = {name: \"audit\",\n      divStyle: \"border:1px solid black;overflow:auto;\",\n      html: 'Audit Trail'\n      };\n\n   // Comment\n\n   this.tabnums.comment = this.tabs.length;\n   this.tabs.push({name: \"comment\", text: \"Comment\", html:\n      '<div id=\"%id.commenttools\" style=\"display:none;\">'+\n      '<table cellspacing=\"0\" cellpadding=\"0\"><tr><td>'+\n      '<textarea id=\"%id.commenttext\" style=\"font-size:small;height:32px;width:600px;overflow:auto;\" onfocus=\"%s.CmdGotFocus(this);\"></textarea>'+\n      '</td><td style=\"vertical-align:top;\">'+\n      '&nbsp;<input type=\"button\" value=\"%loc!Save!\" onclick=\"%s.SpreadsheetControlCommentSet();\" style=\"font-size:x-small;\">'+\n      '</td></tr></table>'+\n      '</div>',\n      view: \"sheet\",\n      onclick: SocialCalc.SpreadsheetControlCommentOnclick,\n      onunclick: SocialCalc.SpreadsheetControlCommentOnunclick\n      });\n\n   // Names\n\n   this.tabnums.names = this.tabs.length;\n   this.tabs.push({name: \"names\", text: \"Names\", html:\n      '<div id=\"%id.namestools\" style=\"display:none;\">'+\n      '  <table cellspacing=\"0\" cellpadding=\"0\"><tr>'+\n      '   <td style=\"vertical-align:top;padding-right:24px;\">'+\n      '    <div style=\"%tbt.\">%loc!Existing Names!</div>'+\n      '    <select id=\"%id.nameslist\" size=\"1\" onchange=\"%s.SpreadsheetControlNamesChangedName();\" onfocus=\"%s.CmdGotFocus(this);\"><option selected>[New]</option></select>'+\n      '   </td>'+\n      '   <td style=\"vertical-align:top;padding-right:6px;\">'+\n      '    <div style=\"%tbt.\">%loc!Name!</div>'+\n      '    <input type=\"text\" id=\"%id.namesname\" style=\"font-size:x-small;width:75px;\" onfocus=\"%s.CmdGotFocus(this);\">'+\n      '   </td>'+\n      '   <td style=\"vertical-align:top;padding-right:6px;\">'+\n      '    <div style=\"%tbt.\">%loc!Description!</div>'+\n      '    <input type=\"text\" id=\"%id.namesdesc\" style=\"font-size:x-small;width:150px;\" onfocus=\"%s.CmdGotFocus(this);\">'+\n      '   </td>'+\n      '   <td style=\"vertical-align:top;padding-right:6px;\">'+\n      '    <div style=\"%tbt.\">%loc!Value!</div>'+\n      '    <input type=\"text\" id=\"%id.namesvalue\" width=\"16\" style=\"font-size:x-small;width:100px;\" onfocus=\"%s.CmdGotFocus(this);\">'+\n      '   </td>'+\n      '   <td style=\"vertical-align:top;padding-right:12px;width:100px;\">'+\n      '    <div style=\"%tbt.\">%loc!Set Value To!</div>'+\n      '    <input type=\"button\" id=\"%id.namesrangeproposal\" value=\"A1\" onclick=\"%s.SpreadsheetControlNamesSetValue();\" style=\"font-size:x-small;\">'+\n      '   </td>'+\n      '   <td style=\"vertical-align:top;padding-right:6px;\">'+\n      '    <div style=\"%tbt.\">&nbsp;</div>'+\n      '    <input type=\"button\" value=\"%loc!Save!\" onclick=\"%s.SpreadsheetControlNamesSave();\" style=\"font-size:x-small;\">'+\n      '    <input type=\"button\" value=\"%loc!Delete!\" onclick=\"%s.SpreadsheetControlNamesDelete()\" style=\"font-size:x-small;\">'+\n      '   </td>'+\n      '  </tr></table>'+\n      '</div>',\n      view: \"sheet\",\n      onclick: SocialCalc.SpreadsheetControlNamesOnclick,\n      onunclick: SocialCalc.SpreadsheetControlNamesOnunclick\n      });\n\n   // Clipboard\n\n   this.tabnums.clipboard = this.tabs.length;\n   this.tabs.push({name: \"clipboard\", text: \"Clipboard\", html:\n      '<div id=\"%id.clipboardtools\" style=\"display:none;\">'+\n      '  <table cellspacing=\"0\" cellpadding=\"0\"><tr>'+\n      '   <td style=\"vertical-align:top;padding-right:24px;\">'+\n      '    <div style=\"%tbt.\">'+\n      '     &nbsp;'+\n      '    </div>'+\n      '   </td>'+\n      '  </tr></table>'+\n      '</div>',\n      view: \"clipboard\",\n      onclick: SocialCalc.SpreadsheetControlClipboardOnclick,\n      onclickFocus: \"clipboardtext\"\n      });\n\n   this.views[\"clipboard\"] = {name: \"clipboard\", divStyle: \"overflow:auto;\", html:\n      ' <div style=\"font-size:x-small;padding:5px 0px 10px 0px;\">'+\n      '  <b>%loc!Display Clipboard in!:</b>'+\n      '  <input type=\"radio\" id=\"%id.clipboardformat-tab\" name=\"%id.clipboardformat\" checked onclick=\"%s.SpreadsheetControlClipboardFormat(\\'tab\\');\"> %loc!Tab-delimited format! &nbsp;'+\n      '  <input type=\"radio\" id=\"%id.clipboardformat-csv\" name=\"%id.clipboardformat\" onclick=\"%s.SpreadsheetControlClipboardFormat(\\'csv\\');\"> %loc!CSV format! &nbsp;'+\n      '  <input type=\"radio\" id=\"%id.clipboardformat-scsave\" name=\"%id.clipboardformat\" onclick=\"%s.SpreadsheetControlClipboardFormat(\\'scsave\\');\"> %loc!SocialCalc-save format!'+\n      ' </div>'+\n      ' <input type=\"button\" value=\"%loc!Load SocialCalc Clipboard With This!\" style=\"font-size:x-small;\" onclick=\"%s.SpreadsheetControlClipboardLoad();\">&nbsp; '+\n      ' <input type=\"button\" value=\"%loc!Clear SocialCalc Clipboard!\" style=\"font-size:x-small;\" onclick=\"%s.SpreadsheetControlClipboardClear();\">&nbsp; '+\n      ' <br>'+\n      ' <textarea id=\"%id.clipboardtext\" style=\"font-size:small;height:350px;width:800px;overflow:auto;\" onfocus=\"%s.CmdGotFocus(this);\"></textarea>'\n      };\n\n   return;\n\n   }\n\n   \n// Methods:\n\nSocialCalc.SpreadsheetControl.prototype.InitializeSpreadsheetControl =\n   function(node, height, width, spacebelow) {return SocialCalc.InitializeSpreadsheetControl(this, node, height, width, spacebelow);};\nSocialCalc.SpreadsheetControl.prototype.DoOnResize = function() {return SocialCalc.DoOnResize(this);};\nSocialCalc.SpreadsheetControl.prototype.SizeSSDiv = function() {return SocialCalc.SizeSSDiv(this);};\nSocialCalc.SpreadsheetControl.prototype.ExecuteCommand = \n   function(combostr, sstr) {return SocialCalc.SpreadsheetControlExecuteCommand(this, combostr, sstr);};\nSocialCalc.SpreadsheetControl.prototype.CreateSheetHTML = \n   function() {return SocialCalc.SpreadsheetControlCreateSheetHTML(this);};\nSocialCalc.SpreadsheetControl.prototype.CreateSpreadsheetSave = \n   function(otherparts) {return SocialCalc.SpreadsheetControlCreateSpreadsheetSave(this, otherparts);};\nSocialCalc.SpreadsheetControl.prototype.DecodeSpreadsheetSave = \n   function(str) {return SocialCalc.SpreadsheetControlDecodeSpreadsheetSave(this, str);};\nSocialCalc.SpreadsheetControl.prototype.CreateCellHTML = \n   function(coord) {return SocialCalc.SpreadsheetControlCreateCellHTML(this, coord);};\nSocialCalc.SpreadsheetControl.prototype.CreateCellHTMLSave = \n   function(range) {return SocialCalc.SpreadsheetControlCreateCellHTMLSave(this, range);};\n\n\n// Sheet Methods to make things a little easier:\n\nSocialCalc.SpreadsheetControl.prototype.ParseSheetSave = function(str) {return this.sheet.ParseSheetSave(str);};\nSocialCalc.SpreadsheetControl.prototype.CreateSheetSave = function() {return this.sheet.CreateSheetSave();};\n\n\n// Functions:\n\n//\n// InitializeSpreadsheetControl(spreadsheet, node, height, width, spacebelow)\n//\n// Creates the control elements and makes them the child of node (string or element).\n// If present, height and width specify size.\n// If either is 0 or null (missing), the maximum that fits on the screen\n// (taking spacebelow into account) is used.\n//\n// Displays the tabs and creates the views (other than \"sheet\").\n// The first tab is set as selected, but onclick is not invoked.\n//\n// You should do a redisplay or recalc (which redisplays) after running this.\n//\n\nSocialCalc.InitializeSpreadsheetControl = function(spreadsheet, node, height, width, spacebelow) {\n\n   var scc = SocialCalc.Constants;\n   var SCLoc = SocialCalc.LocalizeString;\n   var SCLocSS = SocialCalc.LocalizeSubstrings;\n\n   var html, child, i, vname, v, style, button, bele;\n   var tabs = spreadsheet.tabs;\n   var views = spreadsheet.views;\n\n   spreadsheet.requestedHeight = height;\n   spreadsheet.requestedWidth = width;\n   spreadsheet.requestedSpaceBelow = spacebelow;\n\n   if (typeof node == \"string\") node = document.getElementById(node);\n\n   if (node == null) {\n      alert(\"SocialCalc.SpreadsheetControl not given parent node.\");\n      }\n\n   spreadsheet.parentNode = node;\n\n   // create node to hold spreadsheet control\n\n   spreadsheet.spreadsheetDiv = document.createElement(\"div\");\n\n   spreadsheet.SizeSSDiv(); // calculate and fill in the size values\n\n   for (child=node.firstChild; child!=null; child=node.firstChild) {\n      node.removeChild(child);\n      }\n\n   // create the tabbed UI at the top\n\n   html = '<div>'\n   html += '<div style=\"'+spreadsheet.tabbackground+'\">'+\n      '<table cellpadding=\"0\" cellspacing=\"0\"><tr>';\n\n   for (i=0; i<tabs.length; i++) {\n      html += '  <td id=\"%id.' + tabs[i].name + 'tab\" style=\"' +\n         (i==0 ? spreadsheet.tabselectedCSS : spreadsheet.tabplainCSS) +\n         '\" onclick=\"%s.SetTab(this);\">' + SCLoc(tabs[i].text) + '</td>';\n      }\n\n   html += ' </tr></table></div>'\n   html += '<div style=\"'+spreadsheet.toolbarbackground+'padding:12px 10px 10px 4px;\">';\n\n   for (i=0; i<tabs.length; i++) {\n      html += tabs[i].html;\n      }\n\n   html += '</div>'\n   html += '</div>';\n\n   spreadsheet.currentTab = 0; // this is where we started\n\n   for (style in spreadsheet.tabreplacements) {\n      html = html.replace(spreadsheet.tabreplacements[style].regex, spreadsheet.tabreplacements[style].replacement);\n      }\n   html = html.replace(/\\%s\\./g, \"SocialCalc.\");\n   html = html.replace(/\\%id\\./g, spreadsheet.idPrefix);\n   html = html.replace(/\\%tbt\\./g, spreadsheet.toolbartext);\n   html = html.replace(/\\%img\\./g, spreadsheet.imagePrefix);\n\n   html = SCLocSS(html); // localize with %loc!string! and %scc!constant!\n\n   spreadsheet.spreadsheetDiv.innerHTML = html;\n\n   node.appendChild(spreadsheet.spreadsheetDiv);\n\n   // Initialize SocialCalc buttons\n\nspreadsheet.Buttons = {\n   button_undo: {tooltip: \"Undo\", command: \"undo\"},\n   button_redo: {tooltip: \"Redo\", command: \"redo\"},\n   button_copy: {tooltip: \"Copy\", command: \"copy\"},\n   button_cut: {tooltip: \"Cut\", command: \"cut\"},\n   button_paste: {tooltip: \"Paste\", command: \"paste\"},\n   button_pasteformats: {tooltip: \"Paste Formats\", command: \"pasteformats\"},\n   button_lock: {tooltip: \"Lock Cell\", command: \"lock\"},\n   button_unlock: {tooltip: \"Unlock Cell\", command: \"unlock\"},\n   button_delete: {tooltip: \"Delete Cell Contents\", command: \"delete\"},\n   button_filldown: {tooltip: \"Fill Down\", command: \"filldown\"},\n   button_fillright: {tooltip: \"Fill Right\", command: \"fillright\"},\n   button_movefrom: {tooltip: \"Set/Clear Move From\", command: \"movefrom\"},\n   button_movepaste: {tooltip: \"Move Paste\", command: \"movepaste\"},\n   button_moveinsert: {tooltip: \"Move Insert\", command: \"moveinsert\"},\n   button_alignleft: {tooltip: \"Align Left\", command: \"align-left\"},\n   button_aligncenter: {tooltip: \"Align Center\", command: \"align-center\"},\n   button_alignright: {tooltip: \"Align Right\", command: \"align-right\"},\n   button_borderon: {tooltip: \"Borders On\", command: \"borderon\"},\n   button_borderoff: {tooltip: \"Borders Off\", command: \"borderoff\"},\n   button_swapcolors: {tooltip: \"Swap Colors\", command: \"swapcolors\"},\n   button_merge: {tooltip: \"Merge/Unmerge Cells\", command: \"merge\"},\n   button_insertrow: {tooltip: \"Insert Row Before\", command: \"insertrow\"},\n   button_insertcol: {tooltip: \"Insert Column Before\", command: \"insertcol\"},\n   button_deleterow: {tooltip: \"Delete Row\", command: \"deleterow\"},\n   button_deletecol: {tooltip: \"Delete Column\", command: \"deletecol\"},\n   button_hiderow: {tooltip: \"Hide Row\", command: \"hiderow\"},\n   button_hidecol: {tooltip: \"Hide Column\", command: \"hidecol\"},\n   button_recalc: {tooltip: \"Recalculate\", command: \"recalc\"}\n   }\n\n   for (button in spreadsheet.Buttons) {\n      bele = document.getElementById(spreadsheet.idPrefix+button);\n      if (!bele) {alert(\"Button \"+(spreadsheet.idPrefix+button)+\" missing\"); continue;}\n      bele.style.border = \"1px solid \"+scc.ISCButtonBorderNormal;\n      bele.title = SCLoc(spreadsheet.Buttons[button].tooltip);\n      SocialCalc.ButtonRegister(spreadsheet.editor, bele,\n         {normalstyle: \"border:1px solid \"+scc.ISCButtonBorderNormal+\";background-color:\"+scc.ISCButtonNormalBackground+\";\",\n          hoverstyle: \"border:1px solid \"+scc.ISCButtonBorderHover+\";background-color:\"+scc.ISCButtonHoverBackground+\";\",\n          downstyle: \"border:1px solid \"+scc.ISCButtonBorderDown+\";background-color:\"+scc.ISCButtonDownBackground+\";\"}, \n         {MouseDown: SocialCalc.DoButtonCmd, command: spreadsheet.Buttons[button].command});\n      }\n\n   // create formula bar\n\n   spreadsheet.formulabarDiv = document.createElement(\"div\");\n   //spreadsheet.formulabarDiv.style.height = spreadsheet.formulabarheight + \"px\"; // Allow line wrapping\n   spreadsheet.formulabarDiv.innerHTML = '<input type=\"text\" size=\"60\" value=\"\">&nbsp;'; //'<textarea rows=\"4\" cols=\"60\" style=\"z-index:5;background-color:white;position:relative;\"></textarea>&nbsp;';\n   spreadsheet.spreadsheetDiv.appendChild(spreadsheet.formulabarDiv);\n   var inputbox = new SocialCalc.InputBox(spreadsheet.formulabarDiv.firstChild, spreadsheet.editor);\n   \n   for (button in spreadsheet.formulabuttons) {\n      bele = document.createElement(\"img\");\n      bele.id = spreadsheet.idPrefix+button;\n      bele.src = (spreadsheet.formulabuttons[button].skipImagePrefix ? \"\" : spreadsheet.imagePrefix)+spreadsheet.formulabuttons[button].image;\n      bele.style.verticalAlign = \"middle\";\n      bele.style.border = \"1px solid #FFF\";\n      bele.style.marginLeft = \"4px\";\n      bele.title = SCLoc(spreadsheet.formulabuttons[button].tooltip);\n      SocialCalc.ButtonRegister(spreadsheet.editor, bele,\n         {normalstyle: \"border:1px solid #FFF;backgroundColor:#FFF;\",\n          hoverstyle: \"border:1px solid #CCC;backgroundColor:#FFF;\",\n          downstyle: \"border:1px solid #000;backgroundColor:#FFF;\"}, \n         {MouseDown: spreadsheet.formulabuttons[button].command, Disabled: function() {return spreadsheet.editor.ECellReadonly();}});\n   spreadsheet.formulabarDiv.appendChild(bele);\n   }\n\n   var input = $(\"<input id='searchbarinput' value='' placeholder='Search sheet…'>\");\n   var searchBar = $(\"<span id='searchbar'></span>\");\n   searchBar.append(\"<div id='searchstatus'></div>\");\n   searchBar.append(input);\n\n   // find buttons (right of formula bar)\n   for (button in spreadsheet.findbuttons) {\n      bele = document.createElement(\"img\");\n      bele.id = spreadsheet.idPrefix+button;\n      bele.src = (spreadsheet.imagePrefix)+spreadsheet.findbuttons[button].image;\n      bele.style.verticalAlign = \"middle\";\n      bele.style.border = \"1px solid #FFF\";\n      bele.title = SCLoc(spreadsheet.findbuttons[button].tooltip);\n      SocialCalc.ButtonRegister(spreadsheet.editor, bele,\n         {normalstyle: \"border:1px solid #FFF;backgroundColor:#FFF;\",\n          hoverstyle: \"border:1px solid #CCC;backgroundColor:#FFF;\",\n          downstyle: \"border:1px solid #000;backgroundColor:#FFF;\"}, \n         {MouseDown: spreadsheet.findbuttons[button].command, Disabled: function() {return false;}});\n      searchBar[0].appendChild(bele);\n   } \n   input.on('input', SocialCalc.SpreadsheetControl.FindInSheet);\n   input.on('focus', function() {\n        SocialCalc.Keyboard.passThru = true;\n   });\n   input.on('blur', function() {\n        SocialCalc.Keyboard.passThru = false;\n   });\n   input.keyup(function (e) {\n        if (e.keyCode == 13) {\n           // search down when enter is pressed\n           if (e.shiftKey) {\n               SocialCalc.SpreadsheetControl.SearchUp();\n           } else {\n               SocialCalc.SpreadsheetControl.SearchDown();\n           }\n        }\n   });\n   spreadsheet.formulabarDiv.appendChild(searchBar[0]);\n   \n   // initialize tabs that need it\n\n   for (i=0; i<tabs.length; i++) { // execute any tab-specific initialization code\n      if (tabs[i].oncreate) {\n         tabs[i].oncreate(spreadsheet, tabs[i].name);\n         }\n      }\n\n   // create sheet view and others\n\n   // InitializeSpreadsheetControl eddy {\n   SocialCalc.CalculateSheetNonViewHeight(spreadsheet);\n   // } InitializeSpreadsheetControl\n   spreadsheet.viewheight = spreadsheet.height-spreadsheet.nonviewheight;\n   spreadsheet.editorDiv=spreadsheet.editor.CreateTableEditor(spreadsheet.width, spreadsheet.viewheight);\n\n// eddy test add input \n   var appViewDiv = document.createElement(\"div\");\n   appViewDiv.id = \"te_appView\";\n   \n   appViewDiv.appendChild(spreadsheet.editorDiv)\n   spreadsheet.editorDiv = appViewDiv;\n\n   var formDataDiv = document.createElement(\"div\");\n   formDataDiv.id = \"te_formData\";\n   //formDataDiv.style.visibility = \"hidden\";\n   formDataDiv.style.display = \"none\";\n   //formDataDiv.style.display = \"inline\";\n   \n  // spreadsheet.spreadsheetDiv.appendChild(formDataDiv);   \n   spreadsheet.editorDiv.appendChild(formDataDiv);\n       \n// }\n      \n   spreadsheet.spreadsheetDiv.appendChild(spreadsheet.editorDiv);\n\n// form data sheet - all input formulas set values in this sheet as well as the loaded sheet\n   spreadsheet.formDataViewer = new SocialCalc.SpreadsheetViewer(\"te_FormData-\"); // should end with -\n   spreadsheet.formDataViewer.InitializeSpreadsheetViewer(formDataDiv.id, 180, 0, 200);\n   spreadsheet.formDataViewer.editor.ignoreRender = true; // formDataViewer is used for ExecuteSheetCommand only - no need to render\n// end\n   \n   for (vname in views) {\n      html = views[vname].html;\n      for (style in views[vname].replacements) {\n         html = html.replace(views[vname].replacements[style].regex, views[vname].replacements[style].replacement);\n         }\n      html = html.replace(/\\%s\\./g, \"SocialCalc.\");\n      html = html.replace(/\\%id\\./g, spreadsheet.idPrefix);\n      html = html.replace(/\\%tbt\\./g, spreadsheet.toolbartext);\n      html = html.replace(/\\%img\\./g, spreadsheet.imagePrefix);\n      v = document.createElement(\"div\");\n      SocialCalc.setStyles(v, views[vname].divStyle);\n      v.style.display = \"none\";\n      v.style.width = spreadsheet.width + \"px\";\n      v.style.height = spreadsheet.viewheight + \"px\";\n      v.id = spreadsheet.idPrefix + views[vname].name + \"view\";\n\n      html = SCLocSS(html); // localize with %loc!string!, etc.\n\n      v.innerHTML = html;\n      spreadsheet.spreadsheetDiv.appendChild(v);\n      views[vname].element = v;\n      if (views[vname].oncreate) {\n         views[vname].oncreate(spreadsheet, views[vname]);\n         }\n      }\n\n   views.sheet = {name: \"sheet\", element: spreadsheet.editorDiv};\n\n   // create statusline\n\n   spreadsheet.statuslineDiv = document.createElement(\"div\");\n   spreadsheet.statuslineDiv.style.cssText = spreadsheet.statuslineCSS;\n   spreadsheet.statuslineDiv.style.height = spreadsheet.statuslineheight -\n      (spreadsheet.statuslineDiv.style.paddingTop.slice(0,-2)-0) -\n      (spreadsheet.statuslineDiv.style.paddingBottom.slice(0,-2)-0) + \"px\";\n   spreadsheet.statuslineDiv.id = spreadsheet.idPrefix+\"statusline\";\n   spreadsheet.spreadsheetDiv.appendChild(spreadsheet.statuslineDiv);\n\n   // set current control object based on mouseover\n\n   if (spreadsheet.spreadsheetDiv.addEventListener) { // DOM Level 2 -- Firefox, et al\n      spreadsheet.spreadsheetDiv.addEventListener(\"mousedown\", function() { SocialCalc.SetSpreadsheetControlObject(spreadsheet); }, false);\n      spreadsheet.spreadsheetDiv.addEventListener(\"mouseover\", function() { SocialCalc.SetSpreadsheetControlObject(spreadsheet); }, false);\n      }\n   else if (spreadsheet.spreadsheetDiv.attachEvent) { // IE 5+\n      spreadsheet.spreadsheetDiv.attachEvent(\"onmousedown\", function() { SocialCalc.SetSpreadsheetControlObject(spreadsheet); });\n      spreadsheet.spreadsheetDiv.attachEvent(\"onmouseover\", function() { SocialCalc.SetSpreadsheetControlObject(spreadsheet); });\n      }\n   else { // don't handle this\n      throw SocialCalc.Constants.s_BrowserNotSupported;\n      }\n\n   // done - refresh screen needed\n\n   return;\n\n   }\n\n\n// eddy CalculateSheetNonViewHeight {\nSocialCalc.CalculateSheetNonViewHeight = function(spreadsheet) {\n  spreadsheet.nonviewheight = spreadsheet.statuslineheight;\n  for(var nodeIndex = 0;  nodeIndex < spreadsheet.spreadsheetDiv.childNodes.length;  nodeIndex++ ) {\n    if(spreadsheet.spreadsheetDiv.childNodes[nodeIndex].id == \"SocialCalc-statusline\") continue;\n    spreadsheet.nonviewheight += spreadsheet.spreadsheetDiv.childNodes[nodeIndex].offsetHeight;\n  }\n  \n}\n\n// }\n\n\n//\n// outstr = SocialCalc.LocalizeString(str)\n//\n// SocialCalc function to make localization easier.\n// If str is \"Text to localize\", it returns\n// SocialCalc.Constants.s_loc_text_to_localize if\n// it exists, or else with just \"Text to localize\".\n// Note that spaces are replaced with \"_\" and other special\n// chars with \"X\" in the name of the constant (e.g., \"A & B\"\n// would look for SocialCalc.Constants.s_loc_a_X_b.\n//\n\nSocialCalc.LocalizeString = function(str) {\n   var cstr = SocialCalc.LocalizeStringList[str]; // found already this session?\n   if (!cstr) { // no - look up\n      cstr = SocialCalc.Constants[\"s_loc_\"+str.toLowerCase().replace(/\\s/g, \"_\").replace(/\\W/g, \"X\")] || str;\n      SocialCalc.LocalizeStringList[str] = cstr;\n      }\n   return cstr;\n   }\n\n\n\nSocialCalc.LocalizeStringList = {}; // a list of strings to localize accumulated by the routine\n\n//\n// outstr = SocialCalc.LocalizeSubstrings(str)\n//\n// SocialCalc function to make localization easier using %loc and %scc.\n//\n// Replaces sections of str with:\n//    %loc!Text to localize!\n// with SocialCalc.Constants.s_loc_text_to_localize if\n// it exists, or else with just \"Text to localize\".\n// Note that spaces are replaced with \"_\" and other special\n// chars with \"X\" in the name of the constant (e.g., %loc!A & B!\n// would look for SocialCalc.Constants.s_loc_a_X_b.\n// Uses SocialCalc.LocalizeString for this.\n//\n// Replaces sections of str with:\n//    %ssc!constant-name!\n// with SocialCalc.Constants.constant-name.\n// If the constant doesn't exist, throws and alert.\n//\n\nSocialCalc.LocalizeSubstrings = function(str) {\n\n   var SCLoc = SocialCalc.LocalizeString;\n\n   return str.replace(/%(loc|ssc)!(.*?)!/g, function(a, t, c) {\n      if (t==\"ssc\") {\n         return SocialCalc.Constants[c] || alert(\"Missing constant: \"+c);\n         }\n      else {\n         return SCLoc(c);\n         }\n      });\n\n   }\n\n//\n// obj = GetSpreadsheetControlObject()\n//\n// Returns the current spreadsheet control object\n//\n\nSocialCalc.GetSpreadsheetControlObject = function() {\n\n  // if in viewer mode return CurrentSpreadsheetViewerObject because CurrentSpreadsheetControlObject is null (bug fix) \n   var csco = (SocialCalc.CurrentSpreadsheetControlObject != null) \n   ? SocialCalc.CurrentSpreadsheetControlObject : SocialCalc.CurrentSpreadsheetViewerObject;\n   if (csco) return csco;\n\n//   throw (\"No current SpreadsheetControl object.\");\n\n   }\n\n//\n// SetSpreadsheetControlObject(spreadsheet)\n//\n\nSocialCalc.SetSpreadsheetControlObject = function(spreadsheet) {\n\n   SocialCalc.CurrentSpreadsheetControlObject = spreadsheet;\n\n   if (SocialCalc.Keyboard.focusTable && spreadsheet) {\n      SocialCalc.Keyboard.focusTable = spreadsheet.editor;\n      }\n\n   }\n\n\n//\n// SocialCalc.DoOnResize(spreadsheet)\n//\n// Processes an onResize event, setting the different views.\n//\n\nSocialCalc.DoOnResize = function(spreadsheet) {\n\n   var v;\n   var views = spreadsheet.views;\n\n   var needresize = spreadsheet.SizeSSDiv();\n   if (!needresize) return;\n\n   for (vname in views) {\n      v = views[vname].element;\n      v.style.width = spreadsheet.width + \"px\";\n      v.style.height = (spreadsheet.height-spreadsheet.nonviewheight) + \"px\";\n      }\n\n   spreadsheet.editor.ResizeTableEditor(spreadsheet.width, spreadsheet.height-spreadsheet.nonviewheight);\n\n   }\n\n\n//\n// resized = SocialCalc.SizeSSDiv(spreadsheet)\n//\n// Figures out a reasonable size for the spreadsheet, given any requested values and viewport.\n// Sets ssdiv to that.\n// Return true if different than existing values.\n//\n\nSocialCalc.SizeSSDiv = function(spreadsheet) {\n\n   var sizes, pos, resized, nodestyle, newval;\n   var fudgefactorX = 10; // for IE\n   var fudgefactorY = 10;\n\n   resized = false;\n\n   sizes = SocialCalc.GetViewportInfo();\n   pos = SocialCalc.GetElementPosition(spreadsheet.parentNode);\n   pos.bottom = 0;\n   pos.right = 0;\n\n   nodestyle = spreadsheet.parentNode.style;\n\n   if (nodestyle.marginTop) {\n      pos.top += nodestyle.marginTop.slice(0,-2)-0;\n      }\n   if (nodestyle.marginBottom) {\n      pos.bottom += nodestyle.marginBottom.slice(0,-2)-0;\n      }\n   if (nodestyle.marginLeft) {\n      pos.left += nodestyle.marginLeft.slice(0,-2)-0;\n      }\n   if (nodestyle.marginRight) {\n      pos.right += nodestyle.marginRight.slice(0,-2)-0;\n      }\n\n   newval = spreadsheet.requestedHeight ||\n            sizes.height - (pos.top + pos.bottom + fudgefactorY) -\n               (spreadsheet.requestedSpaceBelow || 0);\n   if (spreadsheet.height != newval) {\n      spreadsheet.height = newval;\n      spreadsheet.spreadsheetDiv.style.height = newval + \"px\";\n      resized = true;\n      }\n   newval = spreadsheet.requestedWidth ||\n            sizes.width - (pos.left + pos.right + fudgefactorX) || 700;\n   if (spreadsheet.width != newval) {\n      spreadsheet.width = newval;\n      spreadsheet.spreadsheetDiv.style.width = newval + \"px\";\n      resized = true;\n      }\n\n   spreadsheet.spreadsheetDiv.style.position = \"relative\";\n\n   return resized;\n\n   }\n\n\n//\n// SocialCalc.SetTab(obj)\n//\n// The obj argument is either a string with the tab name or a DOM element with an ID\n//\n\nSocialCalc.SetTab = function(obj) {\n\n   var newtab, tname, newtabnum, newview, i, vname, ele;\n   var menutabs = {};\n   var tools = {};\n   var spreadsheet = SocialCalc.GetSpreadsheetControlObject();\n   var tabs = spreadsheet.tabs;\n   var views = spreadsheet.views;\n\n   if (typeof obj == \"string\") {\n      newtab = obj;\n      }\n   else {\n      newtab = obj.id.slice(spreadsheet.idPrefix.length,-3);\n      }\n\n   if (spreadsheet.editor.busy && // if busy and switching from \"sheet\", ignore\n         (!tabs[spreadsheet.currentTab].view || tabs[spreadsheet.currentTab].view==\"sheet\")) {\n      for (i=0; i<tabs.length; i++) {\n         if(tabs[i].name==newtab && (tabs[i].view && tabs[i].view!=\"sheet\")) {\n            return;\n            }\n         }\n      }\n\n   if (spreadsheet.tabs[spreadsheet.currentTab].onunclick) {\n      spreadsheet.tabs[spreadsheet.currentTab].onunclick(spreadsheet, spreadsheet.tabs[spreadsheet.currentTab].name);\n      }\n\n   for (i=0; i<tabs.length; i++) {\n      tname = tabs[i].name;\n      menutabs[tname] = document.getElementById(spreadsheet.idPrefix+tname+\"tab\");\n      tools[tname] = document.getElementById(spreadsheet.idPrefix+tname+\"tools\");\n      if (tname==newtab) {\n         newtabnum = i;\n         tools[tname].style.display = \"block\";\n         menutabs[tname].style.cssText = spreadsheet.tabselectedCSS;\n         }\n      else {\n         tools[tname].style.display = \"none\";\n         menutabs[tname].style.cssText = spreadsheet.tabplainCSS;\n         }\n      }\n\n   spreadsheet.currentTab = newtabnum;\n\n   if (tabs[newtabnum].onclick) {\n      tabs[newtabnum].onclick(spreadsheet, newtab);\n      }\n\n   for (vname in views) {\n      if ((!tabs[newtabnum].view && vname == \"sheet\") || tabs[newtabnum].view == vname) {\n         views[vname].element.style.display = \"block\";\n         newview = vname;\n         }\n      else {\n         views[vname].element.style.display = \"none\";\n         }\n      }\n\n   if (tabs[newtabnum].onclickFocus) {\n      ele = tabs[newtabnum].onclickFocus;\n      if (typeof ele == \"string\") {\n         ele = document.getElementById(spreadsheet.idPrefix+ele);\n         ele.focus();\n         }\n      SocialCalc.CmdGotFocus(ele);\n      }\n   else {\n      SocialCalc.KeyboardFocus();\n      }\n\n   if (views[newview].needsresize && views[newview].onresize) {\n      views[newview].needsresize = false;\n      views[newview].onresize(spreadsheet, views[newview]);\n      }\n\n   if (newview == \"sheet\") {\n      spreadsheet.statuslineDiv.style.display = \"block\";\n      spreadsheet.editor.ScheduleRender();\n      }\n   else {\n      spreadsheet.statuslineDiv.style.display = \"none\";\n      }\n\n   return;\n\n   }\n\n//\n// SocialCalc.SpreadsheetControlStatuslineCallback\n//\n\nSocialCalc.SpreadsheetControlStatuslineCallback = function(editor, status, arg, params) {\n\n   var rele1, rele2;\n\n   var ele = document.getElementById(params.statuslineid);\n\n   if (ele) {\n      ele.innerHTML = editor.GetStatuslineString(status, arg, params);\n      }\n\n   switch (status) {\n      case \"cmdendnorender\":\n      case \"calcfinished\":\n      case \"doneposcalc\":\n         rele1 = document.getElementById(params.recalcid1);\n         rele2 = document.getElementById(params.recalcid2);\n         if (!rele1 || !rele2) break;\n         if (editor.context.sheetobj.attribs.needsrecalc==\"yes\") {\n            rele1.style.display = \"inline\";\n            rele2.style.display = \"inline\";\n            }\n         else {\n            rele1.style.display = \"none\";\n            rele2.style.display = \"none\";\n            }\n         break;\n\n      default:\n         break;\n      }\n\n   }\n\n\n//\n// SocialCalc.UpdateSortRangeProposal(editor)\n//\n// Updates sort range proposed in the UI in element idPrefix+sortlist\n//\n\nSocialCalc.UpdateSortRangeProposal = function(editor) {\n\n   var ele = document.getElementById(SocialCalc.GetSpreadsheetControlObject().idPrefix+\"sortlist\");\n   if (editor.range.hasrange) {\n      ele.options[0].text = SocialCalc.crToCoord(editor.range.left, editor.range.top) + \":\" +\n                            SocialCalc.crToCoord(editor.range.right, editor.range.bottom);\n      }\n   else {\n      ele.options[0].text = SocialCalc.LocalizeString(\"[select range]\");\n      }\n\n   }\n\n//\n// SocialCalc.LoadColumnChoosers(spreadsheet)\n//\n// Updates list of columns for choosing which to sort for Major, Minor, and Last sort\n//\n\nSocialCalc.LoadColumnChoosers = function(spreadsheet) {\n\n   var SCLoc = SocialCalc.LocalizeString;\n\n   var sortrange, nrange, rparts, col, colname, sele, oldindex;\n\n   if (spreadsheet.sortrange && spreadsheet.sortrange.indexOf(\":\")==-1) { // sortrange is a named range\n      nrange = SocialCalc.Formula.LookupName(spreadsheet.sheet, spreadsheet.sortrange || \"\");\n      if (nrange.type == \"range\") {\n         rparts = nrange.value.match(/^(.*)\\|(.*)\\|$/);\n         sortrange = rparts[1] + \":\" + rparts[2];\n         }\n      else {\n         sortrange = \"A1:A1\";\n         }\n      }\n   else {\n      sortrange = spreadsheet.sortrange;\n      }\n   var range = SocialCalc.ParseRange(sortrange);\n   sele = document.getElementById(spreadsheet.idPrefix+\"majorsort\");\n   oldindex = sele.selectedIndex;\n   sele.options.length = 0;\n   sele.options[sele.options.length] = new Option(SCLoc(\"[None]\"), \"\");\n   for (var col=range.cr1.col; col<=range.cr2.col; col++) {\n      colname = SocialCalc.rcColname(col);\n      sele.options[sele.options.length] = new Option(SCLoc(\"Column \")+colname, colname);\n      }\n   sele.selectedIndex = oldindex > 1 && oldindex <= (range.cr2.col-range.cr1.col+1) ? oldindex : 1; // restore what was there if reasonable\n   sele = document.getElementById(spreadsheet.idPrefix+\"minorsort\");\n   oldindex = sele.selectedIndex;\n   sele.options.length = 0;\n   sele.options[sele.options.length] = new Option(SCLoc(\"[None]\"), \"\");\n   for (var col=range.cr1.col; col<=range.cr2.col; col++) {\n      colname = SocialCalc.rcColname(col);\n      sele.options[sele.options.length] = new Option(colname, colname);\n      }\n   sele.selectedIndex = oldindex > 0 && oldindex <= (range.cr2.col-range.cr1.col+1) ? oldindex : 0; // default to [none]\n   sele = document.getElementById(spreadsheet.idPrefix+\"lastsort\");\n   oldindex = sele.selectedIndex;\n   sele.options.length = 0;\n   sele.options[sele.options.length] = new Option(SCLoc(\"[None]\"), \"\");\n   for (var col=range.cr1.col; col<=range.cr2.col; col++) {\n      colname = SocialCalc.rcColname(col);\n      sele.options[sele.options.length] = new Option(colname, colname);\n      }\n   sele.selectedIndex = oldindex > 0 && oldindex <= (range.cr2.col-range.cr1.col+1) ? oldindex : 0; // default to [none]\n\n   }\n\n//\n// SocialCalc.CmdGotFocus(obj)\n//\n// Sets SocialCalc.Keyboard.passThru: obj should be element with focus or \"true\"\n//\n\nSocialCalc.CmdGotFocus = function(obj) {\n\n   SocialCalc.Keyboard.passThru = obj;\n\n   }\n\n\n//\n// SocialCalc.DoButtonCmd(e, buttoninfo, bobj)\n//\n\nSocialCalc.DoButtonCmd = function(e, buttoninfo, bobj) {\n\n   SocialCalc.DoCmd(bobj.element, bobj.functionobj.command);\n\n   }\n\n//\n// SocialCalc.DoCmd(obj, which)\n//\n// xxx\n//\n\nSocialCalc.DoCmd = function(obj, which) {\n\n   var combostr, sstr, cl, i, clele, slist, slistele, str, sele, rele, lele, ele, sortrange, nrange, rparts;\n   var sheet, cell, color, bgcolor, defaultcolor, defaultbgcolor;\n\n   var spreadsheet = SocialCalc.GetSpreadsheetControlObject();\n   var editor = spreadsheet.editor;\n\n   switch (which) {\n      case \"undo\":\n         spreadsheet.ExecuteCommand(\"undo\", \"\");\n         break;\n\n      case \"redo\":\n         spreadsheet.ExecuteCommand(\"redo\", \"\");\n         break;\n\n      case \"fill-rowcolstuff\":\n      case \"fill-text\":\n         cl = which.substring(5);\n         clele = document.getElementById(spreadsheet.idPrefix+cl+\"list\");\n         clele.length = 0;\n         for (i=0; i<SocialCalc.SpreadsheetCmdTable[cl].length; i++) {\n            clele.options[i] = new Option(SocialCalc.SpreadsheetCmdTable[cl][i].t);\n            }\n         which = \"changed-\"+cl; // fall through to changed code\n\n      case \"changed-rowcolstuff\":\n      case \"changed-text\":\n         cl = which.substring(8);\n         clele = document.getElementById(spreadsheet.idPrefix+cl+\"list\");\n         slist = SocialCalc.SpreadsheetCmdTable.slists[SocialCalc.SpreadsheetCmdTable[cl][clele.selectedIndex].s]; // get sList for this command\n         slistele = document.getElementById(spreadsheet.idPrefix+cl+\"slist\");\n         slistele.length = 0; // reset\n         for (i=0; i<(slist.length||0); i++) {\n            slistele.options[i] = new Option(slist[i].t, slist[i].s);\n            }\n         return; // nothing else to do\n\n      case \"ok-rowcolstuff\":\n      case \"ok-text\":\n         cl = which.substring(3);\n         clele = document.getElementById(spreadsheet.idPrefix+cl+\"list\");\n         slistele = document.getElementById(spreadsheet.idPrefix+cl+\"slist\");\n         combostr = SocialCalc.SpreadsheetCmdTable[cl][clele.selectedIndex].c;\n         sstr = slistele[slistele.selectedIndex].value;\n         SocialCalc.SpreadsheetControlExecuteCommand(obj, combostr, sstr);\n         break;\n\n      case \"ok-setsort\":\n         lele = document.getElementById(spreadsheet.idPrefix+\"sortlist\");\n         if (lele.selectedIndex==0) {\n            if (editor.range.hasrange) {\n               spreadsheet.sortrange = SocialCalc.crToCoord(editor.range.left, editor.range.top) + \":\" +\n                          SocialCalc.crToCoord(editor.range.right, editor.range.bottom);\n               }\n            else {\n               spreadsheet.sortrange = editor.ecell.coord+\":\"+editor.ecell.coord;\n               }\n            }\n         else {\n            var val = lele.options[lele.selectedIndex].value;\n            if (val == 'all') {\n                var cells = spreadsheet.sheet.cells; \n                var min_col = -1, max_col = -1, min_row = -1, max_row = -1;\n                for (var cell_id in cells) {\n                    var cr = SocialCalc.coordToCr(cell_id);\n                    if (min_row == -1 || cr.row < min_row) {\n                        min_row = cr.row;\n                    }\n                    if (min_col == -1 || cr.col < min_col) {\n                        min_col = cr.col;\n                    }\n                    if (max_row == -1 || cr.row > max_row) {\n                        max_row = cr.row;\n                    }\n                    if (max_col == -1 || cr.col > max_col) {\n                        max_col = cr.col;\n                    }\n                } \n                spreadsheet.sortrange = SocialCalc.crToCoord(min_col, min_row) + \":\" + SocialCalc.crToCoord(max_col, max_row); \n                lele.options[lele.selectedIndex].text += \" (\" + spreadsheet.sortrange + \")\";\n            } else { \n                spreadsheet.sortrange = lele.options[lele.selectedIndex].value;\n            }\n         }\n         ele = document.getElementById(spreadsheet.idPrefix+\"sortbutton\");\n         ele.value = SocialCalc.LocalizeString(\"Sort \")+spreadsheet.sortrange;\n         ele.style.visibility = \"visible\";\n         SocialCalc.LoadColumnChoosers(spreadsheet);\n         if (obj && obj.blur) obj.blur();\n         SocialCalc.KeyboardFocus();   \n         return;\n\n      case \"dosort\":\n         if (spreadsheet.sortrange && spreadsheet.sortrange.indexOf(\":\")==-1) { // sortrange is a named range\n            nrange = SocialCalc.Formula.LookupName(spreadsheet.sheet, spreadsheet.sortrange || \"\");\n            if (nrange.type != \"range\") return;\n            rparts = nrange.value.match(/^(.*)\\|(.*)\\|$/);\n            sortrange = rparts[1] + \":\" + rparts[2];\n            }\n         else {\n            sortrange = spreadsheet.sortrange;\n            }\n         if (sortrange == \"A1:A1\") return;\n         str = \"sort \"+sortrange+\" \";\n         sele = document.getElementById(spreadsheet.idPrefix+\"majorsort\");\n         rele = document.getElementById(spreadsheet.idPrefix+\"majorsortup\");\n         str += sele.options[sele.selectedIndex].value + (rele.checked ? \" up\" : \" down\");\n         sele = document.getElementById(spreadsheet.idPrefix+\"minorsort\");\n         if (sele.selectedIndex>0) {\n           rele = document.getElementById(spreadsheet.idPrefix+\"minorsortup\");\n           str += \" \"+sele.options[sele.selectedIndex].value + (rele.checked ? \" up\" : \" down\");\n           }\n         sele = document.getElementById(spreadsheet.idPrefix+\"lastsort\");\n         if (sele.selectedIndex>0) {\n           rele = document.getElementById(spreadsheet.idPrefix+\"lastsortup\");\n           str += \" \"+sele.options[sele.selectedIndex].value + (rele.checked ? \" up\" : \" down\");\n           }\n         spreadsheet.ExecuteCommand(str, \"\");\n         break;\n\n      case \"merge\":\n         combostr = SocialCalc.SpreadsheetCmdLookup[which] || \"\";\n         sstr = SocialCalc.SpreadsheetCmdSLookup[which] || \"\";\n         spreadsheet.ExecuteCommand(combostr, sstr);\n         if (editor.range.hasrange) { // set ecell to upper left\n            editor.MoveECell(SocialCalc.crToCoord(editor.range.left, editor.range.top));\n            editor.RangeRemove();\n            }\n         break;\n\n      case \"movefrom\":\n         if (editor.range2.hasrange) { // toggle if already there\n            spreadsheet.context.cursorsuffix = \"\";\n            editor.Range2Remove();\n            spreadsheet.ExecuteCommand(\"redisplay\", \"\");\n            }\n         else if (editor.range.hasrange) { // set range2 to range or one cell\n            editor.range2.top = editor.range.top;\n            editor.range2.right = editor.range.right;\n            editor.range2.bottom = editor.range.bottom;\n            editor.range2.left = editor.range.left;\n            editor.range2.hasrange = true;\n            editor.MoveECell(SocialCalc.crToCoord(editor.range.left, editor.range.top));\n            }\n         else {\n            editor.range2.top = editor.ecell.row;\n            editor.range2.right = editor.ecell.col;\n            editor.range2.bottom = editor.ecell.row;\n            editor.range2.left = editor.ecell.col;\n            editor.range2.hasrange = true;\n            }\n         str = editor.range2.hasrange ? \"\" : \"off\";\n         ele = document.getElementById(spreadsheet.idPrefix+\"button_movefrom\");\n         ele.src=spreadsheet.imagePrefix+\"movefrom\"+str+\".gif\";\n         ele = document.getElementById(spreadsheet.idPrefix+\"button_movepaste\");\n         ele.src=spreadsheet.imagePrefix+\"movepaste\"+str+\".gif\";\n         ele = document.getElementById(spreadsheet.idPrefix+\"button_moveinsert\");\n         ele.src=spreadsheet.imagePrefix+\"moveinsert\"+str+\".gif\";\n         if (editor.range2.hasrange) editor.RangeRemove();\n         break;\n\n      case \"movepaste\":\n      case \"moveinsert\":\n         if (editor.range2.hasrange) {\n            spreadsheet.context.cursorsuffix = \"\";\n            combostr = which+\" \"+\n               SocialCalc.crToCoord(editor.range2.left, editor.range2.top) + \":\" +\n               SocialCalc.crToCoord(editor.range2.right, editor.range2.bottom)\n               +\" \"+editor.ecell.coord;\n            spreadsheet.ExecuteCommand(combostr, \"\");\n            editor.Range2Remove();\n            ele = document.getElementById(spreadsheet.idPrefix+\"button_movefrom\");\n            ele.src=spreadsheet.imagePrefix+\"movefromoff.gif\";\n            ele = document.getElementById(spreadsheet.idPrefix+\"button_movepaste\");\n            ele.src=spreadsheet.imagePrefix+\"movepasteoff.gif\";\n            ele = document.getElementById(spreadsheet.idPrefix+\"button_moveinsert\");\n            ele.src=spreadsheet.imagePrefix+\"moveinsertoff.gif\";\n            }\n         break;\n\n      case \"swapcolors\":\n         sheet = spreadsheet.sheet;\n         cell = sheet.GetAssuredCell(editor.ecell.coord);\n         defaultcolor = sheet.attribs.defaultcolor ? sheet.colors[sheet.attribs.defaultcolor] : \"rgb(0,0,0)\";\n         defaultbgcolor = sheet.attribs.defaultbgcolor ? sheet.colors[sheet.attribs.defaultbgcolor] : \"rgb(255,255,255)\";\n         color = cell.color ? sheet.colors[cell.color] : defaultcolor; // get color\n         if (color == defaultbgcolor) color = \"\"; // going to swap, so if same as background default, use default\n         bgcolor = cell.bgcolor ? sheet.colors[cell.bgcolor] : defaultbgcolor;\n         if (bgcolor == defaultcolor) bgcolor = \"\"; // going to swap, so if same as foreground default, use default\n         spreadsheet.ExecuteCommand(\"set %C color \"+bgcolor+\"%Nset %C bgcolor \"+color, \"\");\n         break;\n\n      default:\n         combostr = SocialCalc.SpreadsheetCmdLookup[which] || \"\";\n         sstr = SocialCalc.SpreadsheetCmdSLookup[which] || \"\";\n         spreadsheet.ExecuteCommand(combostr, sstr);\n         break;\n      }\n\n   if (obj && obj.blur) obj.blur();\n   SocialCalc.KeyboardFocus();   \n\n   }\n\nSocialCalc.SpreadsheetCmdLookup = {\n 'copy': 'copy %C all',\n 'cut': 'cut %C all',\n 'paste': 'paste %C all',\n 'pasteformats': 'paste %C formats',\n 'lock': 'set %C readonly yes',\n 'unlock': 'set %C readonly no',\n 'delete': 'erase %C formulas',\n 'filldown': 'filldown %C all',\n 'fillright': 'fillright %C all',\n 'erase': 'erase %C all',\n 'borderon': 'set %C bt %S%Nset %C br %S%Nset %C bb %S%Nset %C bl %S',\n 'borderoff': 'set %C bt %S%Nset %C br %S%Nset %C bb %S%Nset %C bl %S',\n 'merge': 'merge %C',\n 'unmerge': 'unmerge %C',\n 'align-left': 'set %C cellformat left',\n 'align-center': 'set %C cellformat center',\n 'align-right': 'set %C cellformat right',\n 'align-default': 'set %C cellformat',\n 'insertrow': 'insertrow %C',\n 'insertcol': 'insertcol %C',\n 'deleterow': 'deleterow %C',\n 'deletecol': 'deletecol %C',\n 'hiderow': 'set %H hide yes',\n 'hidecol': 'set %W hide yes',\n 'undo': 'undo',\n 'redo': 'redo',\n 'recalc': 'recalc'\n }\n\nSocialCalc.SpreadsheetCmdSLookup = {\n 'borderon': '1px solid rgb(0,0,0)',\n 'borderoff': ''\n }\n\n/******* NO LONGER USED\n\nSocialCalc.SpreadsheetCmdTable = {\n cmd: [\n  {t:\"Fill Right\", s:\"ffal\", c:\"fillright %C %S\"},\n  {t:\"Fill Down\", s:\"ffal\", c:\"filldown %C %S\"},\n  {t:\"Copy\", s:\"all\", c:\"copy %C %S\"},\n  {t:\"Cut\", s:\"all\", c:\"cut %C %S\"},\n  {t:\"Paste\", s:\"ffal\", c:\"paste %C %S\"},\n  {t:\"Erase\", s:\"ffal\", c:\"erase %C %S\"},\n  {t:\"Insert\", s:\"rowcol\", c:\"insert%S %C\"},\n  {t:\"Delete\", s:\"rowcol\", c:\"delete%S %C\"},\n  {t:\"Merge Cells\", s:\"none\", c:\"merge %C\"},\n  {t:\"Unmerge\", s:\"none\", c:\"unmerge %C\"},\n  {t:\"Sort\", s:\"sortcol\", c:\"sort %R %S\"},\n  {t:\"Cell Color\", s:\"colors\", c:\"set %C color %S\"},\n  {t:\"Cell Background\", s:\"colors\", c:\"set %C bgcolor %S\"},\n  {t:\"Cell Number Format\", s:\"ntvf\", c:\"set %C nontextvalueformat %S\"},\n  {t:\"Cell Font\", s:\"fonts\", c:\"set %C font %S\"},\n  {t:\"Cell Align\", s:\"cellformat\", c:\"set %C cellformat %S\"},\n  {t:\"Cell Borders\", s:\"borderOnOff\", c:\"set %C bt %S%Nset %C br %S%Nset %C bb %S%Nset %C bl %S\"},\n  {t:\"Column Width\", s:\"colWidths\", c:\"set %W width %S\"},\n  {t:\"Default Color\", s:\"colors\", c:\"set sheet defaultcolor %S\"},\n  {t:\"Default Background\", s:\"colors\", c:\"set sheet defaultbgcolor %S\"},\n  {t:\"Default Number Format\", s:\"ntvf\", c:\"set sheet defaultnontextvalueformat %S\"},\n  {t:\"Default Font\", s:\"fonts\", c:\"set sheet defaultfont %S\"},\n  {t:\"Default Text Align\", s:\"cellformat\", c:\"set sheet defaulttextformat %S\"},\n  {t:\"Default Number Align\", s:\"cellformat\", c:\"set sheet defaultnontextformat %S\"},\n  {t:\"Default Column Width\", s:\"colWidths\", c:\"set sheet defaultcolwidth %S\"}\n  ],\n rowcolstuff: [\n  {t:\"Insert\", s:\"rowcol\", c:\"insert%S %C\"},\n  {t:\"Delete\", s:\"rowcol\", c:\"delete%S %C\"},\n  {t:\"Paste\", s:\"ffal\", c:\"paste %C %S\"},\n  {t:\"Erase\", s:\"ffal\", c:\"erase %C %S\"},\n  {t:\"Fill Right\", s:\"ffal\", c:\"fillright %C %S\"},\n  {t:\"Fill Down\", s:\"ffal\", c:\"filldown %C %S\"}\n  ],\n text: [\n  {t:\"Cell Color\", s:\"colors\", c:\"set %C color %S\"},\n  {t:\"Cell Background\", s:\"colors\", c:\"set %C bgcolor %S\"},\n  {t:\"Cell Number Format\", s:\"ntvf\", c:\"set %C nontextvalueformat %S\"},\n  {t:\"Cell Text Format\", s:\"tvf\", c:\"set %C textvalueformat %S\"},\n  {t:\"Cell Font\", s:\"fonts\", c:\"set %C font %S\"},\n  {t:\"Cell Align\", s:\"cellformat\", c:\"set %C cellformat %S\"},\n  {t:\"Default Color\", s:\"colors\", c:\"set sheet defaultcolor %S\"},\n  {t:\"Default Background\", s:\"colors\", c:\"set sheet defaultbgcolor %S\"},\n  {t:\"Default Number Format\", s:\"ntvf\", c:\"set sheet defaultnontextvalueformat %S\"},\n  {t:\"Default Text Format\", s:\"tvf\", c:\"set sheet defaulttextvalueformat %S\"},\n  {t:\"Default Font\", s:\"fonts\", c:\"set sheet defaultfont %S\"},\n  {t:\"Default Text Align\", s:\"cellformat\", c:\"set sheet defaulttextformat %S\"},\n  {t:\"Default Number Align\", s:\"cellformat\", c:\"set sheet defaultnontextformat %S\"}\n  ],\n slists: {\n  \"colors\": [\n   {t:\"Default\", s:\"\"},\n   {t:\"Black\", s:\"rgb(0,0,0)\"},\n   {t:\"Dark Gray\", s:\"rgb(102,102,102)\"}, // #666\n   {t:\"Gray\", s:\"rgb(204,204,204)\"}, // #CCC\n   {t:\"White\", s:\"rgb(255,255,255)\"},\n   {t:\"Red\", s:\"rgb(255,0,0)\"},\n   {t:\"Dark Red\", s:\"rgb(153,0,0)\"},\n   {t:\"Orange\", s:\"rgb(255,153,0)\"},\n   {t:\"Yellow\", s:\"rgb(255,255,0)\"},\n   {t:\"Light Yellow\", s:\"rgb(255,255,204)\"},\n   {t:\"Green\", s:\"rgb(0,255,0)\"},\n   {t:\"Dark Green\", s:\"rgb(0,153,0)\"},\n   {t:\"Blue\", s:\"rgb(0,0,255)\"},\n   {t:\"Dark Blue\", s:\"rgb(0,0,153)\"},\n   {t:\"Light Blue\", s:\"rgb(204,204,255)\"}\n   ],\n  \"fonts\": [ // style weight size family\n   {t:\"Default\", s:\"\"},\n   {t:\"Bold\", s:\"normal bold * *\"},\n   {t:\"Italic\", s:\"italic normal * *\"},\n   {t:\"Small\", s:\"* small *\"},\n   {t:\"Medium\", s:\"* medium *\"},\n   {t:\"Large\", s:\"* large *\"},\n   {t:\"Bold Small\", s:\"normal bold small *\"},\n   {t:\"Bold Medium\", s:\"normal bold medium *\"},\n   {t:\"Bold Large\", s:\"normal bold large *\"}\n   ],\n  \"cellformat\": [\n   {t:\"Default\", s:\"\"},\n   {t:\"Left\", s:\"left\"},\n   {t:\"Right\", s:\"right\"},\n   {t:\"Center\", s:\"center\"}\n   ],\n  \"borderOnOff\": [\n   {t:\"On\", s:\"1px solid rgb(0,0,0)\"},\n   {t:\"Off\", s:\"\"}\n   ],\n  \"colWidths\": [\n   {t:\"Default\", s:\"\"},\n   {t:\"20\", s:\"20\"},\n   {t:\"40\", s:\"40\"},\n   {t:\"60\", s:\"60\"},\n   {t:\"80\", s:\"80\"},\n   {t:\"100\", s:\"100\"},\n   {t:\"120\", s:\"120\"},\n   {t:\"140\", s:\"140\"},\n   {t:\"160\", s:\"160\"},\n   {t:\"180\", s:\"180\"},\n   {t:\"200\", s:\"200\"},\n   {t:\"220\", s:\"220\"},\n   {t:\"240\", s:\"240\"},\n   {t:\"260\", s:\"260\"},\n   {t:\"280\", s:\"280\"},\n   {t:\"300\", s:\"300\"}\n   ],\n  \"ntvf\": [\n   {t:\"Default\", s:\"\"},\n   {t:\"1234\", s:\"0\"},\n   {t:\"1,234\", s:\"#,##0\"},\n   {t:\"1,234.5\", s:\"#,##0.0\"},\n   {t:\"1,234.56\", s:\"#,##0.00\"},\n   {t:\"1,234.567\", s:\"#,##0.000\"},\n   {t:\"1,234%\", s:\"#,##0%\"},\n   {t:\"1,234.5%\", s:\"#,##0.0%\"},\n   {t:\"(1,234)\", s:\"#,##0_);(#,##0)\"},\n   {t:\"(1,234.5)\", s:\"#,##0.0_);(#,##0.0)\"},\n   {t:\"(1,234.56)\", s:\"#,##0.00_);(#,##0.00)\"},\n   {t:\"00\", s:\"00\"},\n   {t:\"000\", s:\"000\"},\n   {t:\"0000\", s:\"0000\"},\n   {t:\"$1,234.56\", s:\"$#,##0.00\"},\n   {t:\"2006-01-04\", s:\"yyyy-mm-dd\"},\n   {t:\"01:23:45\", s:\"hh:mm:ss\"},\n   {t:\"2006-01-04 01:23:45\", s:\"yyyy-mm-dd hh:mm:ss\"},\n   {t:\"Hidden\", s:\"hidden\"}\n   ],\n  \"tvf\": [\n   {t:\"Default\", s:\"\"},\n   {t:\"Automatic\", s:\"general\"},\n   {t:\"Plain Text\", s:\"text-plain\"},\n   {t:\"HTML\", s:\"text-html\"},\n   {t:\"Wiki\", s:\"text-wiki\"},\n   {t:\"Hidden\", s:\"hidden\"}\n   ],\n  \"ffal\": [ // Formulas, Formats, All\n   {t:\"All\", s:\"all\"},\n   {t:\"Contents\", s:\"formulas\"},\n   {t:\"Formats\", s:\"formats\"}\n   ],\n  \"all\": [ // All\n   {t:\"All\", s:\"all\"}\n   ],\n  \"rowcol\": [\n   {t:\"Row\", s:\"row\"},\n   {t:\"Column\", s:\"col\"}\n   ],\n  \"sortcol\": [\n   {t:\"A up\", s:\"A up\"},\n   {t:\"B up\", s:\"B up\"},\n   {t:\"C up\", s:\"C up\"},\n   {t:\"A down\", s:\"A down\"},\n   {t:\"B down\", s:\"B down\"},\n   {t:\"C down\", s:\"C down\"},\n   {t:\"A, B, C up\", s:\"A up B up C up\"}\n   ],\n  \"none\": [ // nothing\n   {t:\" \", s:\" \"}\n   ]\n  }\n }\n*********/\n\n//\n// SocialCalc.SpreadsheetControlExecuteCommand(obj, combostr, sstr)\n//\n// xxx\n//\n\nSocialCalc.SpreadsheetControlExecuteCommand = function(obj, combostr, sstr) {\n\n   var i, commands;\n   var spreadsheet = SocialCalc.GetSpreadsheetControlObject();\n   var eobj = spreadsheet.editor;\n\n   var str = {};\n   str.P = \"%\";\n   str.N = \"\\n\"\n   if (eobj.range.hasrange) {\n      str.R = SocialCalc.crToCoord(eobj.range.left, eobj.range.top)+\n             \":\"+SocialCalc.crToCoord(eobj.range.right, eobj.range.bottom);\n      str.C = str.R;\n      str.W = SocialCalc.rcColname(eobj.range.left) + \":\" + SocialCalc.rcColname(eobj.range.right);\n      str.H = eobj.range.top + \":\" + eobj.range.bottom;\n      }\n   else if (eobj.ecell) {\n      str.C = eobj.ecell.coord;\n      str.R = eobj.ecell.coord+\":\"+eobj.ecell.coord;\n      str.W = SocialCalc.rcColname(SocialCalc.coordToCr(eobj.ecell.coord).col);\n      str.H = SocialCalc.coordToCr(eobj.ecell.coord).row;\n      }\n   else {\n      str.C = 'A1'\n      str.R = 'A1:A1'\n      str.W = SocialCalc.rcColname(SocialCalc.coordToCr('A1').col);\n      str.H = SocialCalc.coordToCr('A1').row;\n      }\n   str.S = sstr;\n   combostr = combostr.replace(/%C/g, str.C);\n   combostr = combostr.replace(/%R/g, str.R);\n   combostr = combostr.replace(/%N/g, str.N);\n   combostr = combostr.replace(/%S/g, str.S);\n   combostr = combostr.replace(/%W/g, str.W);\n   combostr = combostr.replace(/%H/g, str.H);\n   combostr = combostr.replace(/%P/g, str.P);\n\n   eobj.EditorScheduleSheetCommands(combostr, true, false);\n\n   }\n\n//\n// result = SocialCalc.SpreadsheetControlCreateSheetHTML(spreadsheet)\n//\n// Returns the HTML representation of the whole spreadsheet\n//\n\nSocialCalc.SpreadsheetControlCreateSheetHTML = function(spreadsheet) {\n\n   var context, div, ele;\n\n   var result = \"\";\n\n   context = new SocialCalc.RenderContext(spreadsheet.sheet);\n   div = document.createElement(\"div\");\n   ele = context.RenderSheet(null, {type: \"html\"});\n   div.appendChild(ele);\n   delete context;\n   result = div.innerHTML;\n   delete ele;\n   delete div;\n   return result;\n\n   }\n\n//\n// result = SocialCalc.SpreadsheetControlCreateCellHTML(spreadsheet, coord, linkstyle)\n//\n// Returns the HTML representation of a cell. Blank is \"\", not \"&nbsp;\".\n//\n\nSocialCalc.SpreadsheetControlCreateCellHTML = function(spreadsheet, coord, linkstyle) {\n\n   var result = \"\";\n   var cell = spreadsheet.sheet.cells[coord];\n\n   if (!cell) return \"\";\n\n   if (cell.displaystring == undefined) {\n      result = SocialCalc.FormatValueForDisplay(spreadsheet.sheet, cell.datavalue, coord, (linkstyle || spreadsheet.context.defaultHTMLlinkstyle));\n      }\n   else {\n      result = cell.displaystring;\n      }\n\n   if (result == \"&nbsp;\") result = \"\";\n\n   return result;\n\n   }\n\n//\n// result = SocialCalc.SpreadsheetControlCreateCellHTMLSave(spreadsheet, range, linkstyle)\n//\n// Returns the HTML representation of a range of cells, or the whole sheet if range is null.\n// The form is:\n//    version:1.0\n//    coord:cell-HTML\n//    coord:cell-HTML\n//    ...\n//\n// Empty cells are skipped. The cell-HTML is encoded with \":\"=>\"\\c\", newline=>\"\\n\", and \"\\\"=>\"\\b\".\n//\n\nSocialCalc.SpreadsheetControlCreateCellHTMLSave = function(spreadsheet, range, linkstyle) {\n\n   var cr1, cr2, row, col, coord, cell, cellHTML;\n   var result = [];\n   var prange;\n\n   if (range) {\n      prange = SocialCalc.ParseRange(range);\n      }\n   else {\n      prange = {cr1: {row: 1, col:1},\n                cr2: {row: spreadsheet.sheet.attribs.lastrow, col: spreadsheet.sheet.attribs.lastcol}};\n      }\n   cr1 = prange.cr1;\n   cr2 = prange.cr2;\n\n   result.push(\"version:1.0\");\n\n   for (row=cr1.row; row <= cr2.row; row++) {\n      for (col=cr1.col; col <= cr2.col; col++) {\n         coord = SocialCalc.crToCoord(col, row);\n         cell=spreadsheet.sheet.cells[coord];\n         if (!cell) continue;\n         if (cell.displaystring == undefined) {\n            cellHTML = SocialCalc.FormatValueForDisplay(spreadsheet.sheet, cell.datavalue, coord, (linkstyle || spreadsheet.context.defaultHTMLlinkstyle));\n            }\n         else {\n            cellHTML = cell.displaystring;\n            }\n         if (cellHTML == \"&nbsp;\") continue;\n         result.push(coord+\":\"+SocialCalc.encodeForSave(cellHTML));\n         }\n      }\n\n   result.push(\"\"); // one extra to get extra \\n\n   return result.join(\"\\n\");\n   }\n\n//\n// Formula Bar Button Routines\n//\n\nSocialCalc.SpreadsheetControl.DoFunctionList = function() {\n\n   var i, cname, str, f, ele;\n\n   var scf = SocialCalc.Formula;\n   var scc = SocialCalc.Constants;\n   var fcl = scc.function_classlist;\n\n   var spreadsheet = SocialCalc.GetSpreadsheetControlObject();\n   var idp = spreadsheet.idPrefix+\"function\";\n\n   ele = document.getElementById(idp+\"dialog\");\n   if (ele) return; // already have one\n\n   scf.FillFunctionInfo();\n\n   str = '<table><tr><td><span style=\"font-size:x-small;font-weight:bold\">%loc!Category!</span><br>'+\n      '<select id=\"'+idp+'class\" size=\"'+fcl.length+'\" style=\"width:120px;\" onchange=\"SocialCalc.SpreadsheetControl.FunctionClassChosen(this.options[this.selectedIndex].value);\">';\n   for (i=0; i<fcl.length; i++) {\n      str += '<option value=\"'+fcl[i]+'\"'+(i==0?' selected>':'>')+SocialCalc.special_chars(scf.FunctionClasses[fcl[i]].name)+'</option>';\n      }\n   str += '</select></td><td>&nbsp;&nbsp;</td><td id=\"'+idp+'list\"><span style=\"font-size:x-small;font-weight:bold\">%loc!Functions!</span><br>'+\n      '<select id=\"'+idp+'name\" size=\"'+fcl.length+'\" style=\"width:240px;\" '+\n      'onchange=\"SocialCalc.SpreadsheetControl.FunctionChosen(this.options[this.selectedIndex].value);\" ondblclick=\"SocialCalc.SpreadsheetControl.DoFunctionPaste();\">';\n   str += SocialCalc.SpreadsheetControl.GetFunctionNamesStr(\"all\");\n   str += '</td></tr><tr><td colspan=\"3\">'+\n          '<div id=\"'+idp+'desc\" style=\"width:380px;height:80px;overflow:auto;font-size:x-small;\">'+SocialCalc.SpreadsheetControl.GetFunctionInfoStr(scf.FunctionClasses[fcl[0]].items[0])+'</div>'+\n          '<div style=\"width:380px;text-align:right;padding-top:6px;font-size:small;\">'+\n          '<input type=\"button\" value=\"%loc!Paste!\" style=\"font-size:smaller;\" onclick=\"SocialCalc.SpreadsheetControl.DoFunctionPaste();\">&nbsp;'+\n          '<input type=\"button\" value=\"%loc!Cancel!\" style=\"font-size:smaller;\" onclick=\"SocialCalc.SpreadsheetControl.HideFunctions();\"></div>'+\n          '</td></tr></table>';\n\n   var main = document.createElement(\"div\");\n   main.id = idp+\"dialog\";\n\n   main.style.position = \"absolute\";\n\n   var vp = SocialCalc.GetViewportInfo();\n   var pos = SocialCalc.GetElementPositionWithScroll(spreadsheet.spreadsheetDiv);\n\n   main.style.top = ((vp.height/3)-pos.top)+\"px\";\n   main.style.left = ((vp.width/3)-pos.left)+\"px\";\n   main.style.zIndex = 100;\n   main.style.backgroundColor = \"#FFF\";\n   main.style.border = \"1px solid black\";\n\n   main.style.width = \"400px\";\n\n   str = '<table cellspacing=\"0\" cellpadding=\"0\" style=\"border-bottom:1px solid black;\"><tr>'+\n      '<td style=\"font-size:10px;cursor:default;width:100%;background-color:#999;color:#FFF;\">'+\"&nbsp;%loc!Function List!\"+'</td>'+\n      '<td style=\"font-size:10px;cursor:default;color:#666;\" onclick=\"SocialCalc.SpreadsheetControl.HideFunctions();\">&nbsp;X&nbsp;</td></tr></table>'+\n      '<div style=\"background-color:#DDD;\">'+str+'</div>';\n\n   str = SocialCalc.LocalizeSubstrings(str);\n\n   main.innerHTML = str;\n\n   SocialCalc.DragRegister(main.firstChild.firstChild.firstChild.firstChild, true, true,\n                 {MouseDown: SocialCalc.DragFunctionStart, \n                  MouseMove: SocialCalc.DragFunctionPosition,\n                  MouseUp: SocialCalc.DragFunctionPosition,\n                  Disabled: null, positionobj: main},\n                  spreadsheet.spreadsheetDiv);\n\n   spreadsheet.spreadsheetDiv.appendChild(main);\n\n   ele = document.getElementById(idp+\"name\");\n   ele.focus();\n   SocialCalc.CmdGotFocus(ele);\n//!!! need to do keyboard handling: if esc, hide; if All, letter scrolls to there\n\n   }\n\nSocialCalc.SpreadsheetControl.GetFunctionNamesStr = function(cname) {\n\n   var i, f;\n   var scf = SocialCalc.Formula;\n   var str = \"\";\n\n   f = scf.FunctionClasses[cname];\n   for (i=0; i<f.items.length; i++) {\n      str += '<option value=\"'+f.items[i]+'\"'+(i==0?' selected>':'>')+f.items[i]+'</option>';\n      }\n\n   return str;\n\n   }\n\nSocialCalc.SpreadsheetControl.FillFunctionNames = function(cname, ele) {\n\n   var i, f;\n   var scf = SocialCalc.Formula;\n\n   ele.length = 0;\n   f = scf.FunctionClasses[cname];\n   for (i=0; i<f.items.length; i++) {\n      ele.options[i] = new Option(f.items[i], f.items[i]);\n      if (i==0) {\n         ele.options[i].selected = true;\n         }\n      }\n   }\n\nSocialCalc.SpreadsheetControl.GetFunctionInfoStr = function(fname) {\n   \n   var scf = SocialCalc.Formula;\n   var f = scf.FunctionList[fname];\n   var scsc = SocialCalc.special_chars;\n\n   var str = \"<b>\"+fname+\"(\"+scsc(scf.FunctionArgString(fname))+\")</b><br>\";\n   str += scsc(f[3]);\n\n   return str;\n\n   }\n\nSocialCalc.SpreadsheetControl.FunctionClassChosen = function(cname) {\n\n   var spreadsheet = SocialCalc.GetSpreadsheetControlObject();\n   var idp = spreadsheet.idPrefix+\"function\";\n   var scf = SocialCalc.Formula;\n\n   SocialCalc.SpreadsheetControl.FillFunctionNames(cname, document.getElementById(idp+\"name\"));\n\n   SocialCalc.SpreadsheetControl.FunctionChosen(scf.FunctionClasses[cname].items[0]);\n\n   }\n\nSocialCalc.SpreadsheetControl.FunctionChosen = function(fname) {\n\n   var spreadsheet = SocialCalc.GetSpreadsheetControlObject();\n   var idp = spreadsheet.idPrefix+\"function\";\n\n   document.getElementById(idp+\"desc\").innerHTML = SocialCalc.SpreadsheetControl.GetFunctionInfoStr(fname);\n\n   }\n\nSocialCalc.SpreadsheetControl.HideFunctions = function() {\n\n   var spreadsheet = SocialCalc.GetSpreadsheetControlObject();\n\n   var ele = document.getElementById(spreadsheet.idPrefix+\"functiondialog\");\n   ele.innerHTML = \"\";\n\n   SocialCalc.DragUnregister(ele);\n\n   SocialCalc.KeyboardFocus();\n\n   if (ele.parentNode) {\n      ele.parentNode.removeChild(ele);\n      }\n\n   }\n\nSocialCalc.SpreadsheetControl.DoFunctionPaste = function() {\n\n   var spreadsheet = SocialCalc.GetSpreadsheetControlObject();\n   var editor = spreadsheet.editor;\n   var ele = document.getElementById(spreadsheet.idPrefix+\"functionname\");\n   var mele = document.getElementById(spreadsheet.idPrefix+\"multilinetextarea\");\n\n   var text = ele.value+\"(\";\n\n   SocialCalc.SpreadsheetControl.HideFunctions();\n\n   if (mele) { // multi-line editing is in progress\n      mele.value += text;\n      mele.focus();\n      SocialCalc.CmdGotFocus(mele);\n      }\n   else {\n      editor.EditorAddToInput(text, \"=\");\n      }\n\n   }\n\n\nSocialCalc.SpreadsheetControl.DoMultiline = function() {\n\n   var SCLocSS = SocialCalc.LocalizeSubstrings;\n\n   var str, ele, text;\n\n   var scc = SocialCalc.Constants;\n   var spreadsheet = SocialCalc.GetSpreadsheetControlObject();\n   var editor = spreadsheet.editor;\n   var wval = editor.workingvalues;\n\n   var spreadsheet = SocialCalc.GetSpreadsheetControlObject();\n   var idp = spreadsheet.idPrefix+\"multiline\";\n\n   ele = document.getElementById(idp+\"dialog\");\n   if (ele) return; // already have one\n\n   switch (editor.state) {\n      case \"start\":\n         wval.ecoord = editor.ecell.coord;\n         wval.erow = editor.ecell.row;\n         wval.ecol = editor.ecell.col;\n         editor.RangeRemove();\n         text = SocialCalc.GetCellContents(editor.context.sheetobj, wval.ecoord);\n         break;\n\n      case \"input\":\n      case \"inputboxdirect\":\n         text = editor.inputBox.GetText();\n         break;\n      }\n\n   editor.inputBox.element.disabled = true;\n\n   text = SocialCalc.special_chars(text);\n\n   str = '<textarea id=\"'+idp+'textarea\" style=\"width:380px;height:120px;margin:10px 0px 0px 6px;\">'+text+'</textarea>'+\n         '<div style=\"width:380px;text-align:right;padding:6px 0px 4px 6px;font-size:small;\">'+\n         SCLocSS('<input type=\"button\" value=\"%loc!Set Cell Contents!\" style=\"font-size:smaller;\" onclick=\"SocialCalc.SpreadsheetControl.DoMultilinePaste();\">&nbsp;'+\n         '<input type=\"button\" value=\"%loc!Clear!\" style=\"font-size:smaller;\" onclick=\"SocialCalc.SpreadsheetControl.DoMultilineClear();\">&nbsp;'+\n         '<input type=\"button\" value=\"%loc!Cancel!\" style=\"font-size:smaller;\" onclick=\"SocialCalc.SpreadsheetControl.HideMultiline();\"></div>'+\n         '</div>');\n\n   var main = document.createElement(\"div\");\n   main.id = idp+\"dialog\";\n\n   main.style.position = \"absolute\";\n\n   var vp = SocialCalc.GetViewportInfo();\n   var pos = SocialCalc.GetElementPositionWithScroll(spreadsheet.spreadsheetDiv);\n\n   main.style.top = ((vp.height/3)-pos.top)+\"px\";\n   main.style.left = ((vp.width/3)-pos.left)+\"px\";\n   main.style.zIndex = 100;\n   main.style.backgroundColor = \"#FFF\";\n   main.style.border = \"1px solid black\";\n\n   main.style.width = \"400px\";\n\n   main.innerHTML = '<table cellspacing=\"0\" cellpadding=\"0\" style=\"border-bottom:1px solid black;\"><tr>'+\n      '<td style=\"font-size:10px;cursor:default;width:100%;background-color:#999;color:#FFF;\">'+\n      SCLocSS(\"&nbsp;%loc!Multi-line Input Box!\")+'</td>'+\n      '<td style=\"font-size:10px;cursor:default;color:#666;\" onclick=\"SocialCalc.SpreadsheetControl.HideMultiline();\">&nbsp;X&nbsp;</td></tr></table>'+\n      '<div style=\"background-color:#DDD;\">'+str+'</div>';\n\n   SocialCalc.DragRegister(main.firstChild.firstChild.firstChild.firstChild, true, true, \n                 {MouseDown: SocialCalc.DragFunctionStart, \n                  MouseMove: SocialCalc.DragFunctionPosition,\n                  MouseUp: SocialCalc.DragFunctionPosition,\n                  Disabled: null, positionobj: main},\n                  spreadsheet.spreadsheetDiv);\n\n   spreadsheet.spreadsheetDiv.appendChild(main);\n\n   ele = document.getElementById(idp+\"textarea\");\n   ele.focus();\n   SocialCalc.CmdGotFocus(ele);\n//!!! need to do keyboard handling: if esc, hide?\n\n   }\n\n\nSocialCalc.SpreadsheetControl.HideMultiline = function() {\n\n   var scc = SocialCalc.Constants;\n   var spreadsheet = SocialCalc.GetSpreadsheetControlObject();\n   var editor = spreadsheet.editor;\n\n   var ele = document.getElementById(spreadsheet.idPrefix+\"multilinedialog\");\n   ele.innerHTML = \"\";\n\n   SocialCalc.DragUnregister(ele);\n\n   SocialCalc.KeyboardFocus();\n\n   if (ele.parentNode) {\n      ele.parentNode.removeChild(ele);\n      }\n\n   switch (editor.state) {\n      case \"start\":\n         editor.inputBox.DisplayCellContents(null);\n         break;\n\n      case \"input\":\n      case \"inputboxdirect\":\n         editor.inputBox.element.disabled = false;\n         editor.inputBox.Focus();\n         break;\n      }\n\n   }\n\nSocialCalc.SpreadsheetControl.DoMultilineClear = function() {\n\n   var spreadsheet = SocialCalc.GetSpreadsheetControlObject();\n\n   var ele = document.getElementById(spreadsheet.idPrefix+\"multilinetextarea\");\n\n   ele.value = \"\";\n   ele.focus();\n\n   }\n\n\nSocialCalc.SpreadsheetControl.DoMultilinePaste = function() {\n\n   var spreadsheet = SocialCalc.GetSpreadsheetControlObject();\n   var editor = spreadsheet.editor;\n   var wval = editor.workingvalues;\n\n   var ele = document.getElementById(spreadsheet.idPrefix+\"multilinetextarea\");\n\n   var text = ele.value;\n\n   SocialCalc.SpreadsheetControl.HideMultiline();\n\n   switch (editor.state) {\n      case \"start\":\n         wval.partialexpr = \"\";\n         wval.ecoord = editor.ecell.coord;\n         wval.erow = editor.ecell.row;\n         wval.ecol = editor.ecell.col;\n         break;\n      case \"input\":\n      case \"inputboxdirect\":\n         editor.inputBox.Blur();\n         editor.inputBox.ShowInputBox(false);\n         editor.state = \"start\";\n         break;\n      }\n\n   editor.EditorSaveEdit(text);\n\n   }\n\n\nSocialCalc.SpreadsheetControl.DoLink = function() {\n\n   var SCLoc = SocialCalc.LocalizeString;\n\n   var str, ele, text, cell, setformat, popup;\n\n   var scc = SocialCalc.Constants;\n   var spreadsheet = SocialCalc.GetSpreadsheetControlObject();\n   var editor = spreadsheet.editor;\n   var wval = editor.workingvalues;\n\n   var spreadsheet = SocialCalc.GetSpreadsheetControlObject();\n   var idp = spreadsheet.idPrefix+\"link\";\n\n   ele = document.getElementById(idp+\"dialog\");\n   if (ele) return; // already have one\n\n   switch (editor.state) {\n      case \"start\":\n         wval.ecoord = editor.ecell.coord;\n         wval.erow = editor.ecell.row;\n         wval.ecol = editor.ecell.col;\n         editor.RangeRemove();\n         text = SocialCalc.GetCellContents(editor.context.sheetobj, wval.ecoord);\n         break;\n\n      case \"input\":\n      case \"inputboxdirect\":\n         text = editor.inputBox.GetText();\n         break;\n      }\n\n   editor.inputBox.element.disabled = true;\n\n   if (text.charAt(0)==\"'\") {\n      text = text.slice(1);\n      }\n\n   var parts = SocialCalc.ParseCellLinkText(text);\n\n   text = SocialCalc.special_chars(text);\n\n   cell = spreadsheet.sheet.cells[editor.ecell.coord];\n   if (!cell || !cell.textvalueformat) { // set to link format, but don't override\n      setformat = \" checked\";\n      }\n   else {\n      setformat = \"\";\n      }\n\n   popup = parts.newwin ? \" checked\" : \"\";\n\n   str = '<div style=\"padding:6px 0px 4px 6px;\">'+\n         '<span style=\"font-size:smaller;\">'+SCLoc(\"Description\")+'</span><br>'+\n         '<input type=\"text\" id=\"'+idp+'desc\" style=\"width:380px;\" value=\"'+SocialCalc.special_chars(parts.desc)+'\"><br>'+\n         '<span style=\"font-size:smaller;\">'+SCLoc(\"URL\")+'</span><br>'+\n         '<input type=\"text\" id=\"'+idp+'url\" style=\"width:380px;\" value=\"'+SocialCalc.special_chars(parts.url)+'\"><br>';\n   if (SocialCalc.Callbacks.MakePageLink) { // only show if handling pagenames here\n      str += '<span style=\"font-size:smaller;\">'+SCLoc(\"Page Name\")+'</span><br>'+\n             '<input type=\"text\" id=\"'+idp+'pagename\" style=\"width:380px;\" value=\"'+SocialCalc.special_chars(parts.pagename)+'\"><br>'+\n             '<span style=\"font-size:smaller;\">'+SCLoc(\"Workspace\")+'</span><br>'+\n             '<input type=\"text\" id=\"'+idp+'workspace\" style=\"width:380px;\" value=\"'+SocialCalc.special_chars(parts.workspace)+'\"><br>';\n      }\n   str += SocialCalc.LocalizeSubstrings('<input type=\"checkbox\" id=\"'+idp+'format\"'+setformat+'>&nbsp;'+\n         '<span style=\"font-size:smaller;\">%loc!Set to Link format!</span><br>'+\n         '<input type=\"checkbox\" id=\"'+idp+'popup\"'+popup+'>&nbsp;'+\n         '<span style=\"font-size:smaller;\">%loc!Show in new browser window!</span>'+\n         '</div>'+\n         '<div style=\"width:380px;text-align:right;padding:6px 0px 4px 6px;font-size:small;\">'+\n         '<input type=\"button\" value=\"%loc!Set Cell Contents!\" style=\"font-size:smaller;\" onclick=\"SocialCalc.SpreadsheetControl.DoLinkPaste();\">&nbsp;'+\n         '<input type=\"button\" value=\"%loc!Clear!\" style=\"font-size:smaller;\" onclick=\"SocialCalc.SpreadsheetControl.DoLinkClear();\">&nbsp;'+\n         '<input type=\"button\" value=\"%loc!Cancel!\" style=\"font-size:smaller;\" onclick=\"SocialCalc.SpreadsheetControl.HideLink();\"></div>'+\n         '</div>');\n\n   var main = document.createElement(\"div\");\n   main.id = idp+\"dialog\";\n\n   main.style.position = \"absolute\";\n\n   var vp = SocialCalc.GetViewportInfo();\n   var pos = SocialCalc.GetElementPositionWithScroll(spreadsheet.spreadsheetDiv);\n\n   main.style.top = ((vp.height/3)-pos.top)+\"px\";\n   main.style.left = ((vp.width/3)-pos.left)+\"px\";\n   main.style.zIndex = 100;\n   main.style.backgroundColor = \"#FFF\";\n   main.style.border = \"1px solid black\";\n\n   main.style.width = \"400px\";\n\n   main.innerHTML = '<table cellspacing=\"0\" cellpadding=\"0\" style=\"border-bottom:1px solid black;\"><tr>'+\n      '<td style=\"font-size:10px;cursor:default;width:100%;background-color:#999;color:#FFF;\">'+\"&nbsp;\"+SCLoc(\"Link Input Box\")+'</td>'+\n      '<td style=\"font-size:10px;cursor:default;color:#666;\" onclick=\"SocialCalc.SpreadsheetControl.HideLink();\">&nbsp;X&nbsp;</td></tr></table>'+\n      '<div style=\"background-color:#DDD;\">'+str+'</div>';\n\n   SocialCalc.DragRegister(main.firstChild.firstChild.firstChild.firstChild, true, true, \n                 {MouseDown: SocialCalc.DragFunctionStart, \n                  MouseMove: SocialCalc.DragFunctionPosition,\n                  MouseUp: SocialCalc.DragFunctionPosition,\n                  Disabled: null, positionobj: main},\n                  spreadsheet.spreadsheetDiv);\n\n   spreadsheet.spreadsheetDiv.appendChild(main);\n\n   ele = document.getElementById(idp+\"url\");\n   ele.focus();\n   SocialCalc.CmdGotFocus(ele);\n//!!! need to do keyboard handling: if esc, hide?\n\n   }\n\n\nSocialCalc.SpreadsheetControl.HideLink = function() {\n\n   var scc = SocialCalc.Constants;\n   var spreadsheet = SocialCalc.GetSpreadsheetControlObject();\n   var editor = spreadsheet.editor;\n\n   var ele = document.getElementById(spreadsheet.idPrefix+\"linkdialog\");\n   ele.innerHTML = \"\";\n\n   SocialCalc.DragUnregister(ele);\n\n   SocialCalc.KeyboardFocus();\n\n   if (ele.parentNode) {\n      ele.parentNode.removeChild(ele);\n      }\n\n   switch (editor.state) {\n      case \"start\":\n         editor.inputBox.DisplayCellContents(null);\n         break;\n\n      case \"input\":\n      case \"inputboxdirect\":\n         editor.inputBox.element.disabled = false;\n         editor.inputBox.Focus();\n         break;\n      }\n\n   }\n\nSocialCalc.SpreadsheetControl.DoLinkClear = function() {\n\n   var spreadsheet = SocialCalc.GetSpreadsheetControlObject();\n\n   document.getElementById(spreadsheet.idPrefix+\"linkdesc\").value = \"\";\n   document.getElementById(spreadsheet.idPrefix+\"linkpagename\").value = \"\";\n   document.getElementById(spreadsheet.idPrefix+\"linkworkspace\").value = \"\";\n\n   var ele = document.getElementById(spreadsheet.idPrefix+\"linkurl\");\n   ele.value = \"\";\n   ele.focus();\n\n   }\n\n\nSocialCalc.SpreadsheetControl.DoLinkPaste = function() {\n\n   var spreadsheet = SocialCalc.GetSpreadsheetControlObject();\n   var editor = spreadsheet.editor;\n   var wval = editor.workingvalues;\n\n   var descele = document.getElementById(spreadsheet.idPrefix+\"linkdesc\");\n   var urlele = document.getElementById(spreadsheet.idPrefix+\"linkurl\");\n   var pagenameele = document.getElementById(spreadsheet.idPrefix+\"linkpagename\");\n   var workspaceele = document.getElementById(spreadsheet.idPrefix+\"linkworkspace\");\n   var formatele = document.getElementById(spreadsheet.idPrefix+\"linkformat\");\n   var popupele = document.getElementById(spreadsheet.idPrefix+\"linkpopup\");\n\n   var text = \"\";\n\n   var ltsym, gtsym, obsym, cbsym;\n\n   if (popupele.checked) {\n      ltsym = \"<<\"; gtsym = \">>\"; obsym = \"[[\"; cbsym = \"]]\";\n      }\n   else {\n      ltsym = \"<\"; gtsym = \">\"; obsym = \"[\"; cbsym = \"]\";\n      }\n\n   if (pagenameele && pagenameele.value) {\n      if (workspaceele.value) {\n         text = descele.value+\"{\"+workspaceele.value+obsym+pagenameele.value+cbsym+\"}\";\n         }\n      else {\n         text = descele.value+obsym+pagenameele.value+cbsym;\n         }\n      }\n   else {\n      text = descele.value+ltsym+urlele.value+gtsym;\n      }\n\n   SocialCalc.SpreadsheetControl.HideLink();\n\n   switch (editor.state) {\n      case \"start\":\n         wval.partialexpr = \"\";\n         wval.ecoord = editor.ecell.coord;\n         wval.erow = editor.ecell.row;\n         wval.ecol = editor.ecell.col;\n         break;\n      case \"input\":\n      case \"inputboxdirect\":\n         editor.inputBox.Blur();\n         editor.inputBox.ShowInputBox(false);\n         editor.state = \"start\";\n         break;\n      }\n\n   if (formatele.checked) {\n      SocialCalc.SpreadsheetControlExecuteCommand(null, \"set %C textvalueformat text-link\", \"\");\n      }\n\n   editor.EditorSaveEdit(text);\n\n   }\n\nSocialCalc.SpreadsheetControl.DoSum = function() {\n\n   var cmd, cell, row, col, sel, cr, foundvalue;\n\n   var spreadsheet = SocialCalc.GetSpreadsheetControlObject();\n   var editor = spreadsheet.editor;\n   var sheet = editor.context.sheetobj;\n\n   if (editor.range.hasrange) {\n      sel = SocialCalc.crToCoord(editor.range.left, editor.range.top)+\n         \":\"+SocialCalc.crToCoord(editor.range.right, editor.range.bottom);\n      cmd = \"set \"+SocialCalc.crToCoord(editor.range.right, editor.range.bottom+1)+\n         \" formula sum(\"+sel+\")\";\n      }\n   else {\n      row = editor.ecell.row - 1;\n      col = editor.ecell.col;\n      if (row<=1) {\n         cmd = \"set \"+editor.ecell.coord+\" constant e#REF! 0 #REF!\";\n         }\n      else {\n         foundvalue = false;\n         while (row>0) {\n            cr = SocialCalc.crToCoord(col, row);\n            cell = sheet.GetAssuredCell(cr);\n            if (!cell.datatype || cell.datatype==\"t\") {\n               if (foundvalue) {\n                  row++;\n                  break;\n                  }\n               }\n            else {\n               foundvalue = true;\n               }\n            row--;\n            }\n         cmd = \"set \"+editor.ecell.coord+\" formula sum(\"+\n            SocialCalc.crToCoord(col,row)+\":\"+SocialCalc.crToCoord(col, editor.ecell.row-1)+\")\";\n         }\n      }\n\n   editor.EditorScheduleSheetCommands(cmd, true, false);\n\n   }\n\nSocialCalc.SpreadsheetControl.FindInSheet = function() {\n    var searchstatus = $(\"#searchstatus\");\n    var spreadsheet = SocialCalc.GetSpreadsheetControlObject();\n    if (!this.value.length) {\n        searchstatus.text(\"\");\n        spreadsheet.sheet.search_cells = [];\n        spreadsheet.sheet.selected_search_cell = undefined;\n        return;\n    }\n    var cells = spreadsheet.sheet.cells;\n    var regex = new RegExp(this.value, 'im');\n    var cell, cellvalue;\n    var search_cells = [];\n    for (var cell_id in cells) {\n        cell = cells[cell_id];\n        var cr = SocialCalc.coordToCr(cell_id);\n        if (spreadsheet.sheet.rowattribs.hide[cr.row] === 'yes' || spreadsheet.sheet.colattribs.hide[SocialCalc.rcColname(cr.col)] === 'yes') {\n            continue;\n        }\n        if (cell.datatype === 'c') {\n            cellvalue = cell.displaystring;\n        } else {\n            cellvalue = String(cell.datavalue);\n        }\n        if (cellvalue !== undefined && cellvalue.match(regex)) {\n           search_cells.push(cell_id);\n        } \n    }\n    spreadsheet.sheet.search_cells = search_cells;\n    if (search_cells.length) {\n        spreadsheet.sheet.selected_search_cell = 0;\n        spreadsheet.editor.MoveECell(search_cells[0]);\n        searchstatus.text(\"1 of \" + search_cells.length); \n    } else {\n        spreadsheet.sheet.selected_search_cell = undefined;\n        searchstatus.text(\"No Matches\");\n    }\n        \n}\n\nSocialCalc.SpreadsheetControl.SearchSheet = function(direction) {\n    var spreadsheet = SocialCalc.GetSpreadsheetControlObject();\n    var sheet = spreadsheet.sheet;\n    var cells = sheet.search_cells;\n    if (!cells.length) {\n        return;\n    }\n    var selected_cell = sheet.selected_search_cell;\n    if (selected_cell === (direction === 0 ? 0 : cells.length-1)) {\n        selected_cell = (direction === 0 ? cells.length-1 : 0);\n    } else {\n        selected_cell += (direction === 0 ? -1 : 1);\n    }\n    var new_cell = cells[selected_cell];\n    sheet.selected_search_cell = selected_cell; \n    spreadsheet.editor.MoveECell(new_cell);\n    document.getElementById(\"searchstatus\").textContent = String(selected_cell+1) + \" of \" + cells.length;\n}\n \nSocialCalc.SpreadsheetControl.SearchUp = function() {\n    SocialCalc.SpreadsheetControl.SearchSheet(0);    \n}\n\nSocialCalc.SpreadsheetControl.SearchDown = function() {\n    SocialCalc.SpreadsheetControl.SearchSheet(1);\n}\n\n//\n// TAB Routines\n//\n\n// Sort\n\nSocialCalc.SpreadsheetControlSortOnclick = function(s, t) {\n\n   var name, i;\n   var namelist = [];\n   var nl = document.getElementById(s.idPrefix+\"sortlist\");\n   SocialCalc.LoadColumnChoosers(s);\n   s.editor.RangeChangeCallback.sort = SocialCalc.UpdateSortRangeProposal;\n\n   for (name in s.sheet.names) {\n      namelist.push(name);\n      }\n   namelist.sort();\n   nl.length = 0;\n   nl.options[0] = new Option(SocialCalc.LocalizeString(\"[select range]\"));\n   nl.options[1] = new Option(SocialCalc.LocalizeString(\"Sort All\"), \"all\");\n   n_options = nl.options.length;\n\n   for (i=0; i<namelist.length; i++) {\n      name = namelist[i];\n      nl.options[i+n_options] = new Option(name, name);\n      if (name == s.sortrange) {\n         nl.options[i+n_options].selected = true;\n         }\n      }\n   if (s.sortrange == \"\") {\n      nl.options[0].selected = true;\n      }\n\n   SocialCalc.UpdateSortRangeProposal(s.editor);\n   SocialCalc.KeyboardFocus();\n   return;\n\n   }\n\nSocialCalc.SpreadsheetControlSortSave = function(editor, setting) {\n   // Format is:\n   //    sort:sortrange:major:up/down:minor:up/down:last:up/down\n\n   var spreadsheet = SocialCalc.GetSpreadsheetControlObject();\n   var str, sele, rele;\n\n   str = \"sort:\"+SocialCalc.encodeForSave(spreadsheet.sortrange)+\":\";\n   sele = document.getElementById(spreadsheet.idPrefix+\"majorsort\");\n   rele = document.getElementById(spreadsheet.idPrefix+\"majorsortup\");\n   str += sele.selectedIndex + (rele.checked ? \":up\" : \":down\");\n   sele = document.getElementById(spreadsheet.idPrefix+\"minorsort\");\n   if (sele.selectedIndex>0) {\n      rele = document.getElementById(spreadsheet.idPrefix+\"minorsortup\");\n      str += \":\"+sele.selectedIndex + (rele.checked ? \":up\" : \":down\");\n      }\n   else {\n      str += \"::\";\n      }\n   sele = document.getElementById(spreadsheet.idPrefix+\"lastsort\");\n   if (sele.selectedIndex>0) {\n      rele = document.getElementById(spreadsheet.idPrefix+\"lastsortup\");\n      str += \":\"+sele.selectedIndex + (rele.checked ? \":up\" : \":down\");\n      }\n    else {\n      str += \"::\";\n      }\n   return str+\"\\n\";\n   }\n\nSocialCalc.SpreadsheetControlSortLoad = function(editor, setting, line, flags) {\n   var parts, ele;\n\n   var spreadsheet = SocialCalc.GetSpreadsheetControlObject();\n\n   parts = line.split(\":\");\n   spreadsheet.sortrange = SocialCalc.decodeFromSave(parts[1]);\n   ele = document.getElementById(spreadsheet.idPrefix+\"sortbutton\");\n   if (spreadsheet.sortrange) {\n      ele.value = SocialCalc.LocalizeString(\"Sort \")+spreadsheet.sortrange;\n      ele.style.visibility = \"visible\";\n      }\n   else {\n      ele.style.visibility = \"hidden\";\n      }\n   SocialCalc.LoadColumnChoosers(spreadsheet);\n\n   sele = document.getElementById(spreadsheet.idPrefix+\"majorsort\");\n   sele.selectedIndex = parts[2]-0;\n   document.getElementById(spreadsheet.idPrefix+\"majorsort\"+parts[3]).checked = true;\n   sele = document.getElementById(spreadsheet.idPrefix+\"minorsort\");\n   if (parts[4]) {\n      sele.selectedIndex = parts[4]-0;\n      document.getElementById(spreadsheet.idPrefix+\"minorsort\"+parts[5]).checked = true;\n      }\n   else {\n      sele.selectedIndex = 0;\n      document.getElementById(spreadsheet.idPrefix+\"minorsortup\").checked = true;\n      }\n   sele = document.getElementById(spreadsheet.idPrefix+\"lastsort\");\n   if (parts[6]) {\n      sele.selectedIndex = parts[6]-0;\n      document.getElementById(spreadsheet.idPrefix+\"lastsort\"+parts[7]).checked = true;\n      }\n    else {\n      sele.selectedIndex = 0;\n      document.getElementById(spreadsheet.idPrefix+\"lastsortup\").checked = true;\n      }\n\n   return true;\n   }\n\n// Comment\n\nSocialCalc.SpreadsheetControlCommentOnclick = function(s, t) {\n   s.editor.MoveECellCallback.comment = SocialCalc.SpreadsheetControlCommentMoveECell;\n   SocialCalc.SpreadsheetControlCommentDisplay(s, t);\n   SocialCalc.KeyboardFocus();\n   return;\n   }\n\nSocialCalc.SpreadsheetControlCommentDisplay = function(s, t) {\n   var c = \"\";\n   if (s.editor.ecell && s.editor.ecell.coord && s.sheet.cells[s.editor.ecell.coord]) {\n      c = s.sheet.cells[s.editor.ecell.coord].comment || \"\";\n      }\n   document.getElementById(s.idPrefix+\"commenttext\").value = c;\n   }\n\nSocialCalc.SpreadsheetControlCommentMoveECell = function(editor) {\n   SocialCalc.SpreadsheetControlCommentDisplay(SocialCalc.GetSpreadsheetControlObject(), \"comment\");\n   }\n\nSocialCalc.SpreadsheetControlCommentSet = function() {\n   var s=SocialCalc.GetSpreadsheetControlObject();\n   s.ExecuteCommand(\"set %C comment \"+SocialCalc.encodeForSave(document.getElementById(s.idPrefix+\"commenttext\").value));\n   var cell=SocialCalc.GetEditorCellElement(s.editor, s.editor.ecell.row, s.editor.ecell.col);\n   if (!s.editor.ECellReadonly()) {\n      cell.element.title = document.getElementById(s.idPrefix+\"commenttext\").value;\n      s.editor.UpdateCellCSS(cell, s.editor.ecell.row, s.editor.ecell.col);\n      }\n   SocialCalc.KeyboardFocus();\n   }\n\nSocialCalc.SpreadsheetControlCommentOnunclick = function(s, t) {\n   delete s.editor.MoveECellCallback.comment;\n   }\n\n// Names\n\nSocialCalc.SpreadsheetControlNamesOnclick = function(s, t) {\n   document.getElementById(s.idPrefix+\"namesname\").value = \"\";\n   document.getElementById(s.idPrefix+\"namesdesc\").value = \"\";\n   document.getElementById(s.idPrefix+\"namesvalue\").value = \"\";\n   s.editor.RangeChangeCallback.names = SocialCalc.SpreadsheetControlNamesRangeChange;\n   s.editor.MoveECellCallback.names = SocialCalc.SpreadsheetControlNamesRangeChange;\n   SocialCalc.SpreadsheetControlNamesRangeChange(s.editor);\n   SocialCalc.SpreadsheetControlNamesFillNameList();\n   SocialCalc.SpreadsheetControlNamesChangedName();\n   }\n\nSocialCalc.SpreadsheetControlNamesFillNameList = function() {\n   var SCLoc = SocialCalc.LocalizeString;\n   var name, i;\n   var namelist = [];\n   var s=SocialCalc.GetSpreadsheetControlObject();\n   var nl = document.getElementById(s.idPrefix+\"nameslist\");\n   var currentname = document.getElementById(s.idPrefix+\"namesname\").value.toUpperCase().replace(/[^A-Z0-9_\\.]/g, \"\");\n   for (name in s.sheet.names) {\n      namelist.push(name);\n      }\n   namelist.sort();\n   nl.length = 0;\n   if (namelist.length > 0) {\n      nl.options[0] = new Option(SCLoc(\"[New]\"));\n      }\n   else {\n      nl.options[0] = new Option(SCLoc(\"[None]\"));\n      }\n   for (i=0; i<namelist.length; i++) {\n      name = namelist[i];\n      nl.options[i+1] = new Option(name, name);\n      if (name == currentname) {\n         nl.options[i+1].selected = true;\n         }\n      }\n   if (currentname == \"\") {\n      nl.options[0].selected = true;\n      }\n   }\n\nSocialCalc.SpreadsheetControlNamesChangedName = function() {\n   var s=SocialCalc.GetSpreadsheetControlObject();\n   var nl = document.getElementById(s.idPrefix+\"nameslist\");\n   var name = nl.options[nl.selectedIndex].value;\n   if (s.sheet.names[name]) {\n      document.getElementById(s.idPrefix+\"namesname\").value = name;\n      document.getElementById(s.idPrefix+\"namesdesc\").value = s.sheet.names[name].desc || \"\";\n      document.getElementById(s.idPrefix+\"namesvalue\").value = s.sheet.names[name].definition || \"\";\n      }\n   else {\n      document.getElementById(s.idPrefix+\"namesname\").value = \"\";\n      document.getElementById(s.idPrefix+\"namesdesc\").value = \"\";\n      document.getElementById(s.idPrefix+\"namesvalue\").value = \"\";\n      }\n   }\n\nSocialCalc.SpreadsheetControlNamesRangeChange = function(editor) {\n   var s = SocialCalc.GetSpreadsheetControlObject();\n   var ele = document.getElementById(s.idPrefix+\"namesrangeproposal\");\n   if (editor.range.hasrange) {\n      ele.value = SocialCalc.crToCoord(editor.range.left, editor.range.top) + \":\" +\n                            SocialCalc.crToCoord(editor.range.right, editor.range.bottom);\n      }\n   else {\n      ele.value = editor.ecell.coord;\n      }\n   }\n\nSocialCalc.SpreadsheetControlNamesOnunclick = function(s, t) {\n   delete s.editor.RangeChangeCallback.names;\n   delete s.editor.MoveECellCallback.names;\n   }\n\nSocialCalc.SpreadsheetControlNamesSetValue = function() {\n   var s = SocialCalc.GetSpreadsheetControlObject();\n   document.getElementById(s.idPrefix+\"namesvalue\").value = document.getElementById(s.idPrefix+\"namesrangeproposal\").value;\n   SocialCalc.KeyboardFocus();\n   }\n\nSocialCalc.SpreadsheetControlNamesSave = function() {\n   var s = SocialCalc.GetSpreadsheetControlObject();\n   var name = document.getElementById(s.idPrefix+\"namesname\").value;\n   SocialCalc.SetTab(s.tabs[0].name); // return to first tab\n   SocialCalc.KeyboardFocus();\n   if (name != \"\") {\n      s.ExecuteCommand(\"name define \"+name+\" \"+document.getElementById(s.idPrefix+\"namesvalue\").value+\"\\n\"+\n         \"name desc \"+name+\" \"+document.getElementById(s.idPrefix+\"namesdesc\").value);\n      }\n   }\n\nSocialCalc.SpreadsheetControlNamesDelete = function() {\n   var s = SocialCalc.GetSpreadsheetControlObject();\n   var name = document.getElementById(s.idPrefix+\"namesname\").value;\n   SocialCalc.SetTab(s.tabs[0].name); // return to first tab\n   SocialCalc.KeyboardFocus();\n   if (name != \"\") {\n      s.ExecuteCommand(\"name delete \"+name);\n//      document.getElementById(s.idPrefix+\"namesname\").value = \"\";\n//      document.getElementById(s.idPrefix+\"namesvalue\").value = \"\";\n//      document.getElementById(s.idPrefix+\"namesdesc\").value = \"\";\n//      SocialCalc.SpreadsheetControlNamesFillNameList();\n      }\n   SocialCalc.KeyboardFocus();\n   }\n\n// Clipboard\n\nSocialCalc.SpreadsheetControlClipboardOnclick = function(s, t) {\n   var s = SocialCalc.GetSpreadsheetControlObject();\n   clipele = document.getElementById(s.idPrefix+\"clipboardtext\");\n   document.getElementById(s.idPrefix+\"clipboardformat-tab\").checked = true;\n\n   try {\n      clipele.value = SocialCalc.ConvertSaveToOtherFormat(SocialCalc.Clipboard.clipboard, \"tab\");\n   } catch (err) {\n      console.error(err);\n   }\n\n   return;\n   }\n\nSocialCalc.SpreadsheetControlClipboardFormat = function(which) {\n   var s = SocialCalc.GetSpreadsheetControlObject();\n   clipele = document.getElementById(s.idPrefix+\"clipboardtext\");\n   clipele.value = SocialCalc.ConvertSaveToOtherFormat(SocialCalc.Clipboard.clipboard, which);\n   }\n\nSocialCalc.SpreadsheetControlClipboardLoad = function() {\n   var s = SocialCalc.GetSpreadsheetControlObject();\n   var savetype = \"tab\";\n   SocialCalc.SetTab(s.tabs[0].name); // return to first tab\n   SocialCalc.KeyboardFocus();\n   if (document.getElementById(s.idPrefix+\"clipboardformat-csv\").checked) {\n      savetype = \"csv\";\n      }\n   else if (document.getElementById(s.idPrefix+\"clipboardformat-scsave\").checked) {\n      savetype = \"scsave\";\n      }\n   // control+v ignores ignore windows clipboard - see ctrlkeyFunction(editor, charname)\n   s.editor.pastescclipboard = true;\n   s.editor.EditorScheduleSheetCommands(\"loadclipboard \"+\n      SocialCalc.encodeForSave(\n         SocialCalc.ConvertOtherFormatToSave(document.getElementById(s.idPrefix+\"clipboardtext\").value, savetype)), true, false);\n   }\n\nSocialCalc.SpreadsheetControlClipboardClear = function() {\n   var s = SocialCalc.GetSpreadsheetControlObject();\n   var clipele = document.getElementById(s.idPrefix+\"clipboardtext\");\n   clipele.value = \"\";\n   s.editor.EditorScheduleSheetCommands(\"clearclipboard\", true, false);\n   clipele.focus();\n   }\n\nSocialCalc.SpreadsheetControlClipboardExport = function() {\n   var s = SocialCalc.GetSpreadsheetControlObject();\n   if (s.ExportCallback) {\n      s.ExportCallback(s);\n      }\n   SocialCalc.SetTab(s.tabs[0].name); // return to first tab\n   SocialCalc.KeyboardFocus();\n   }\n\n// Settings\n\nSocialCalc.SpreadsheetControlSettingsSwitch = function(target) {\n   SocialCalc.SettingControlReset();\n   var s = SocialCalc.GetSpreadsheetControlObject();\n   var sheettable = document.getElementById(s.idPrefix+\"sheetsettingstable\");\n   var celltable = document.getElementById(s.idPrefix+\"cellsettingstable\");\n   var sheettoolbar = document.getElementById(s.idPrefix+\"sheetsettingstoolbar\");\n   var celltoolbar = document.getElementById(s.idPrefix+\"cellsettingstoolbar\");\n   if (target==\"sheet\") {\n      sheettable.style.display = \"block\";\n      celltable.style.display = \"none\";\n      sheettoolbar.style.display = \"block\";\n      celltoolbar.style.display = \"none\";\n      SocialCalc.SettingsControlSetCurrentPanel(s.views.settings.values.sheetspanel);\n      }\n   else {\n      sheettable.style.display = \"none\";\n      celltable.style.display = \"block\";\n      sheettoolbar.style.display = \"none\";\n      celltoolbar.style.display = \"block\";\n      SocialCalc.SettingsControlSetCurrentPanel(s.views.settings.values.cellspanel);\n      }\n   }\n\nSocialCalc.SettingsControlSave = function(target) {\n   var range, cmdstr;\n   var s = SocialCalc.GetSpreadsheetControlObject();\n   var sc = SocialCalc.SettingsControls;\n   var panelobj = sc.CurrentPanel;\n   var attribs = SocialCalc.SettingsControlUnloadPanel(panelobj);\n\n   SocialCalc.SetTab(s.tabs[0].name); // return to first tab\n   SocialCalc.KeyboardFocus();\n\n   if (target==\"sheet\") {\n      cmdstr = s.sheet.DecodeSheetAttributes(attribs);\n      }\n   else if (target==\"cell\") {\n      if (s.editor.range.hasrange) {\n         range = SocialCalc.crToCoord(s.editor.range.left, s.editor.range.top) + \":\" +\n            SocialCalc.crToCoord(s.editor.range.right, s.editor.range.bottom);\n         }\n      cmdstr = s.sheet.DecodeCellAttributes(s.editor.ecell.coord, attribs, range);\n      }\n   else { // Cancel\n      }\n   if (cmdstr) {\n      s.editor.EditorScheduleSheetCommands(cmdstr, true, false);\n      }\n   }\n\n///////////////////////\n//\n// SAVE / LOAD ROUTINES\n//\n///////////////////////\n\n//\n// result = SocialCalc.SpreadsheetControlCreateSpreadsheetSave(spreadsheet, otherparts)\n//\n// Saves the spreadsheet's sheet data, editor settings, and audit trail (redo stack).\n// The serialized data strings are concatenated together in multi-part MIME format.\n// The first part lists the types of the subsequent parts (e.g., \"sheet\", \"editor\", and \"audit\")\n// in this format:\n//   # comments\n//   version:1.0\n//   part:type1\n//   part:type2\n//   ...\n//\n// If otherparts is non-null, it is an object with:\n//   partname1: \"part contents - should end with \\n\",\n//   partname2: \"part contents - should end with \\n\"\n//\n\n\nSocialCalc.SpreadsheetControlCreateSpreadsheetSave = function(spreadsheet, otherparts) {\n\n   var result;\n\n   var otherpartsstr = \"\";\n   var otherpartsnames = \"\";\n   var partname, extranl;\n\n   if (otherparts) {\n      for (partname in otherparts) {\n         if (otherparts[partname].charAt(otherparts[partname]-1) != \"\\n\") {\n            extranl = \"\\n\";\n            }\n         else {\n            extranl = \"\";\n            }\n         otherpartsstr += \"--\" + spreadsheet.multipartBoundary + \"\\nContent-type: text/plain; charset=UTF-8\\n\\n\" +\n            otherparts[partname] + extranl;\n         otherpartsnames += \"part:\"+partname + \"\\n\";\n         }\n      }\n\n   result = \"socialcalc:version:1.0\\n\" +\n      \"MIME-Version: 1.0\\nContent-Type: multipart/mixed; boundary=\"+\n      spreadsheet.multipartBoundary + \"\\n\" +\n      \"--\" + spreadsheet.multipartBoundary + \"\\nContent-type: text/plain; charset=UTF-8\\n\\n\" +\n      \"# SocialCalc Spreadsheet Control Save\\nversion:1.0\\npart:sheet\\npart:edit\\npart:audit\\n\" + otherpartsnames +\n      \"--\" + spreadsheet.multipartBoundary + \"\\nContent-type: text/plain; charset=UTF-8\\n\\n\" +\n      spreadsheet.CreateSheetSave() +\n      \"--\" + spreadsheet.multipartBoundary + \"\\nContent-type: text/plain; charset=UTF-8\\n\\n\" +\n      spreadsheet.editor.SaveEditorSettings() +\n      \"--\" + spreadsheet.multipartBoundary + \"\\nContent-type: text/plain; charset=UTF-8\\n\\n\" +\n      spreadsheet.sheet.CreateAuditString() +\n      otherpartsstr +\n      \"--\" + spreadsheet.multipartBoundary + \"--\\n\";\n\n   return result;\n\n   }\n\n\n//\n// parts = SocialCalc.SpreadsheetControlDecodeSpreadsheetSave(spreadsheet, str)\n//\n// Separates the parts from a spreadsheet save string, returning an object with the sub-strings.\n//\n//    {type1: {start: startpos, end: endpos}, type2:...}\n//\n\nSocialCalc.SpreadsheetControlDecodeSpreadsheetSave = function(spreadsheet, str) {\n\n   var pos1, mpregex, searchinfo, boundary, boundaryregex, blanklineregex, start, ending, lines, i, lines, p, pnun;\n   var parts = {};\n   var partlist = [];\n\n   pos1 = str.search(/^MIME-Version:\\s1\\.0/mi);\n   if (pos1 < 0) return parts;\n\n   mpregex = /^Content-Type:\\s*multipart\\/mixed;\\s*boundary=(\\S+)/mig;\n   mpregex.lastIndex = pos1;\n\n   searchinfo = mpregex.exec(str);\n   if (mpregex.lastIndex <= 0) return parts;\n   boundary = searchinfo[1];\n\n   boundaryregex = new RegExp(\"^--\"+boundary+\"(?:\\r\\n|\\n)\", \"mg\");\n   boundaryregex.lastIndex = mpregex.lastIndex;\n\n   searchinfo = boundaryregex.exec(str); // find header top boundary\n   blanklineregex = /(?:\\r\\n|\\n)(?:\\r\\n|\\n)/gm;\n   blanklineregex.lastIndex = boundaryregex.lastIndex;\n   searchinfo = blanklineregex.exec(str); // skip to after blank line\n   if (!searchinfo) return parts;\n   start = blanklineregex.lastIndex;\n   boundaryregex.lastIndex = start;\n   searchinfo = boundaryregex.exec(str); // find end of header\n   if (!searchinfo) return parts;\n   ending = searchinfo.index;\n\n   lines = str.substring(start, ending).split(/\\r\\n|\\n/); // get header as lines\n   for (i=0;i<lines.length;i++) {\n      line=lines[i];\n      p = line.split(\":\");\n      switch (p[0]) {\n         case \"version\":\n            break;\n         case \"part\":\n            partlist.push(p[1]);\n            break;\n         }\n      }\n\n   for (pnum=0; pnum<partlist.length; pnum++) { // get each part\n      blanklineregex.lastIndex = ending;\n      searchinfo = blanklineregex.exec(str); // find blank line ending mime-part header\n      if (!searchinfo) return parts;\n      start = blanklineregex.lastIndex;\n      if (pnum==partlist.length-1) { // last one has different boundary\n         boundaryregex = new RegExp(\"^--\"+boundary+\"--$\", \"mg\");\n         }\n      boundaryregex.lastIndex = start;\n      searchinfo = boundaryregex.exec(str); // find ending boundary\n      if (!searchinfo) return parts;\n      ending = searchinfo.index;\n      parts[partlist[pnum]] = {start: start, end: ending}; // return position within full string\n      }\n\n   return parts;\n\n   }\n\n\n/*\n* SettingsControls\n*\n* Each settings panel has an object in the following form:\n*\n*    {ctrl-name1: {setting: setting-nameA, type: ctrl-type, id: id-component},\n*     ctrl-name2: {setting: setting-nameB, type: ctrl-type, id: id-component, initialdata: optional-initialdata-override},\n*     ...}\n*\n* The ctrl-types are names that correspond to:\n*\n*    SocialCalc.SettingsControls.Controls = {\n*       ctrl-type1: {\n*          SetValue: function(panel-obj, ctrl-name, {def: true/false, val: value}) {...;},\n*          ColorValues: if true, Onchanged converts between hex and RGB\n*          GetValue: function(panel-obj, ctrl-name) {...return {def: true/false, val: value};},\n*          Initialize: function(panel-obj, ctrl-name) {...;}, // used to fill dropdowns, etc.\n*          InitialData: control-dependent, // used by Initialize (if no panel ctrlname.initialdata)\n*          OnReset: function(ctrl-name) {...;}, // called to put down popups, etc.\n*          ChangedCallback: function(ctrl-name) {...;} // if not null, called by control when user changes value\n*       }\n*\n*/\n\nSocialCalc.SettingsControls = {\n   Controls: {},\n   CurrentPanel: null // panel object to search on events\n   };\n\n//\n// SocialCalc.SettingsControlSetCurrentPanel(panel-object)\n//\n\nSocialCalc.SettingsControlSetCurrentPanel = function(panelobj) {\n\n   SocialCalc.SettingsControls.CurrentPanel = panelobj;\n\n   SocialCalc.SettingsControls.PopupChangeCallback({panelobj: panelobj}, \"\", null);\n\n   }\n\n\n//\n// SocialCalc.SettingsControlInitializePanel(panel-object)\n//\n\nSocialCalc.SettingsControlInitializePanel = function(panelobj) {\n\n   var ctrlname;\n   var sc = SocialCalc.SettingsControls;\n\n   for (ctrlname in panelobj) {\n      if (ctrlname==\"name\") continue;\n      ctrl = sc.Controls[panelobj[ctrlname].type];\n      if (ctrl && ctrl.Initialize) ctrl.Initialize(panelobj, ctrlname);\n      }\n\n   }\n\n\n//\n// SocialCalc.SettingsControlLoadPanel(panel-object, attribs)\n//\n\nSocialCalc.SettingsControlLoadPanel = function(panelobj, attribs) {\n\n   var ctrlname;\n   var sc = SocialCalc.SettingsControls;\n\n   for (ctrlname in panelobj) {\n      if (ctrlname==\"name\") continue;\n      ctrl = sc.Controls[panelobj[ctrlname].type];\n      if (ctrl && ctrl.SetValue) ctrl.SetValue(panelobj, ctrlname, attribs[panelobj[ctrlname].setting]);\n      }\n\n   }\n\n//\n// attribs = SocialCalc.SettingsControlUnloadPanel(panel-object)\n//\n\nSocialCalc.SettingsControlUnloadPanel = function(panelobj) {\n\n   var ctrlname;\n   var sc = SocialCalc.SettingsControls;\n   var attribs = {};\n\n   for (ctrlname in panelobj) {\n      if (ctrlname==\"name\") continue;\n      ctrl = sc.Controls[panelobj[ctrlname].type];\n      if (ctrl && ctrl.GetValue) attribs[panelobj[ctrlname].setting] = ctrl.GetValue(panelobj, ctrlname);\n      }\n\n   return attribs;\n\n   }\n\n//\n// SocialCalc.SettingsControls.PopupChangeCallback\n//\n\nSocialCalc.SettingsControls.PopupChangeCallback = function(attribs, id, value) {\n\n   var sc = SocialCalc.Constants;\n\n   var ele = document.getElementById(\"sample-text\");\n\n   if (!ele || !attribs || !attribs.panelobj) return;\n\n   var idPrefix = SocialCalc.CurrentSpreadsheetControlObject.idPrefix;\n\n   var c = attribs.panelobj.name == \"cell\" ? \"c\" : \"\";\n\n   var v, a, parts, str1, str2, i;\n\n   parts = sc.defaultCellLayout.match(/^padding.(\\S+) (\\S+) (\\S+) (\\S+).vertical.align.(\\S+);$/) || [];\n\n   var cv = {color: [\"textcolor\"], backgroundColor: [\"bgcolor\", \"#FFF\"],\n             fontSize: [\"fontsize\", sc.defaultCellFontSize], fontFamily: [\"fontfamily\"],\n             paddingTop: [\"padtop\", parts[1]], paddingRight: [\"padright\", parts[2]],\n             paddingBottom: [\"padbottom\", parts[3]], paddingLeft: [\"padleft\", parts[4]],\n             verticalAlign: [\"alignvert\", parts[5]]};\n\n   for (a in cv) {\n      v = SocialCalc.Popup.GetValue(idPrefix+c+cv[a][0]) || cv[a][1] || \"\";\n      ele.style[a] = v;\n      }\n\n   if (c==\"c\") {\n      cv = {borderTop: \"cbt\", borderRight: \"cbr\", borderBottom: \"cbb\", borderLeft: \"cbl\"};\n      for (a in cv) {\n         v = SocialCalc.SettingsControls.BorderSideGetValue(attribs.panelobj, cv[a]);\n         ele.style[a] = v ? (v.val || \"\") : \"\";\n         }\n      v = SocialCalc.Popup.GetValue(idPrefix+\"calignhoriz\");\n      ele.style.textAlign = v || \"left\";\n      ele.childNodes[1].style.textAlign = v || \"right\";\n      }\n   else {\n      ele.style.border = \"\";\n      v = SocialCalc.Popup.GetValue(idPrefix+\"textalignhoriz\");\n      ele.style.textAlign = v || \"left\";\n      v = SocialCalc.Popup.GetValue(idPrefix+\"numberalignhoriz\");\n      ele.childNodes[1].style.textAlign = v || \"right\";\n      }\n\n   v = SocialCalc.Popup.GetValue(idPrefix+c+\"fontlook\");\n   parts = v ? (v.match(/^(\\S+) (\\S+)$/) || []) : [];\n   ele.style.fontStyle = parts[1] || \"\";\n   ele.style.fontWeight = parts[2] || \"\";\n\n   v = SocialCalc.Popup.GetValue(idPrefix+c+\"formatnumber\") || \"General\";\n   str1 = SocialCalc.FormatNumber.formatNumberWithFormat(9.8765, v, \"\");\n   str2 = SocialCalc.FormatNumber.formatNumberWithFormat(-1234.5, v, \"\");\n   if (str2 != \"??-???-??&nbsp;??:??:??\") { // not bad date from negative number\n      str1 += \"<br>\"+str2;\n      }\n      \n   ele.childNodes[1].innerHTML = str1;\n\n   }\n\n//\n// PopupList Control\n//\n\nSocialCalc.SettingsControls.PopupListSetValue = function(panelobj, ctrlname, value) {\n\n   if (!value) {alert(ctrlname+\" no value\"); return;}\n\n   var sp = SocialCalc.Popup;\n\n   if (!value.def) {\n      sp.SetValue(panelobj[ctrlname].id, value.val);\n      }\n   else {\n      sp.SetValue(panelobj[ctrlname].id, \"\");\n      }\n\n   }\n\n//\n// SocialCalc.SettingsControls.PopupListGetValue\n//\n\nSocialCalc.SettingsControls.PopupListGetValue = function(panelobj, ctrlname) {\n\n   var ctl = panelobj[ctrlname];\n   if (!ctl) return null;\n\n   var value = SocialCalc.Popup.GetValue(ctl.id);\n   if (value) {\n      return {def: false, val: value};\n      }\n   else {\n      return {def: true, val: 0};\n      }\n\n   }\n\n//\n// SocialCalc.SettingsControls.PopupListInitialize\n//\n\nSocialCalc.SettingsControls.PopupListInitialize = function(panelobj, ctrlname) {\n\n   var i, val, pos, otext;\n   var sc = SocialCalc.SettingsControls;\n   var initialdata = panelobj[ctrlname].initialdata || sc.Controls[panelobj[ctrlname].type].InitialData || \"\";\n   initialdata = SocialCalc.LocalizeSubstrings(initialdata);\n   var optionvals = initialdata.split(/\\|/);\n\n   var options = [];\n\n   for (i=0; i<(optionvals.length||0); i++) {\n      val = optionvals[i];\n      pos = val.indexOf(\":\");\n      otext = val.substring(0, pos);\n      if (otext.indexOf(\"\\\\\")!=-1) { // escape any colons\n         otext = otext.replace(/\\\\c/g,\":\");\n         otext = otext.replace(/\\\\b/g,\"\\\\\");\n\n         }\n      otext = SocialCalc.special_chars(otext);\n      if (otext == \"[custom]\") {\n         options[i] = {o: SocialCalc.Constants.s_PopupListCustom, v: val.substring(pos+1), a:{custom: true}};\n         }\n      else if (otext == \"[cancel]\") {\n         options[i] = {o: SocialCalc.Constants.s_PopupListCancel, v: \"\", a:{cancel: true}};\n         }\n      else if (otext == \"[break]\") {\n         options[i] = {o: \"-----\", v: \"\", a:{skip: true}};\n         }\n      else if (otext == \"[newcol]\") {\n         options[i] = {o: \"\", v: \"\", a:{newcol: true}};\n         }\n      else {\n         options[i] = {o: otext, v: val.substring(pos+1)};\n         }\n      }\n\n   SocialCalc.Popup.Create(\"List\", panelobj[ctrlname].id, {});\n   SocialCalc.Popup.Initialize(panelobj[ctrlname].id, \n      {options: options, \n       attribs:{changedcallback: SocialCalc.SettingsControls.PopupChangeCallback, panelobj: panelobj}});\n\n   }\n\n\n//\n// SocialCalc.SettingsControls.PopupListReset\n//\n\nSocialCalc.SettingsControls.PopupListReset = function(ctrlname) {\n\n   SocialCalc.Popup.Reset(\"List\");\n\n   }\n\nSocialCalc.SettingsControls.Controls.PopupList = {\n   SetValue: SocialCalc.SettingsControls.PopupListSetValue,\n   GetValue: SocialCalc.SettingsControls.PopupListGetValue,\n   Initialize: SocialCalc.SettingsControls.PopupListInitialize,\n   OnReset: SocialCalc.SettingsControls.PopupListReset,\n   ChangedCallback: null\n   }\n\n//\n// ColorChooser Control\n//\n\nSocialCalc.SettingsControls.ColorChooserSetValue = function(panelobj, ctrlname, value) {\n\n   if (!value) {alert(ctrlname+\" no value\"); return;}\n\n   var sp = SocialCalc.Popup;\n\n   if (!value.def) {\n      sp.SetValue(panelobj[ctrlname].id, value.val);\n      }\n   else {\n      sp.SetValue(panelobj[ctrlname].id, \"\");\n      }\n\n   }\n\n//\n// SocialCalc.SettingsControls.ColorChooserGetValue\n//\n\nSocialCalc.SettingsControls.ColorChooserGetValue = function(panelobj, ctrlname) {\n\n   var value = SocialCalc.Popup.GetValue(panelobj[ctrlname].id);\n   if (value) {\n      return {def: false, val: value};\n      }\n   else {\n      return {def: true, val: 0};\n      }\n\n   }\n\n//\n// SocialCalc.SettingsControls.ColorChooserInitialize\n//\n\nSocialCalc.SettingsControls.ColorChooserInitialize = function(panelobj, ctrlname) {\n\n   var i, val, pos, otext;\n   var sc = SocialCalc.SettingsControls;\n\n   SocialCalc.Popup.Create(\"ColorChooser\", panelobj[ctrlname].id, {});\n   SocialCalc.Popup.Initialize(panelobj[ctrlname].id,\n      {attribs:{title: \"&nbsp;\", moveable: true, width: \"106px\",\n                changedcallback: SocialCalc.SettingsControls.PopupChangeCallback, panelobj: panelobj}});\n\n   }\n\n\n//\n// SocialCalc.SettingsControls.ColorChooserReset\n//\n\nSocialCalc.SettingsControls.ColorChooserReset = function(ctrlname) {\n\n   SocialCalc.Popup.Reset(\"ColorChooser\");\n\n   }\n\nSocialCalc.SettingsControls.Controls.ColorChooser = {\n   SetValue: SocialCalc.SettingsControls.ColorChooserSetValue,\n   GetValue: SocialCalc.SettingsControls.ColorChooserGetValue,\n   Initialize: SocialCalc.SettingsControls.ColorChooserInitialize,\n   OnReset: SocialCalc.SettingsControls.ColorChooserReset,\n   ChangedCallback: null\n   }\n\n\n//\n// SocialCalc.SettingsControls.BorderSideSetValue\n//\n\nSocialCalc.SettingsControls.BorderSideSetValue = function(panelobj, ctrlname, value) {\n\n   var sc = SocialCalc.SettingsControls;\n   var ele, found, idname, parts;\n   var idstart = panelobj[ctrlname].id;\n\n   if (!value) {alert(ctrlname+\" no value\"); return;}\n\n   ele = document.getElementById(idstart+\"-onoff-bcb\"); // border checkbox\n   if (!ele) return;\n\n   if (value.val) { // border does not use default: it looks only to the value currently\n      ele.checked = true;\n      ele.value = value.val;\n      parts = value.val.match(/(\\S+)\\s+(\\S+)\\s+(\\S.+)/);\n      idname = idstart+\"-color\";\n      SocialCalc.Popup.SetValue(idname, parts[3]);\n      SocialCalc.Popup.SetDisabled(idname, false);\n      }\n   else {\n      ele.checked = false;\n      ele.value = value.val;\n      idname = idstart+\"-color\";\n      SocialCalc.Popup.SetValue(idname, \"\");\n      SocialCalc.Popup.SetDisabled(idname, true);\n      }\n\n   }\n\n//\n// SocialCalc.SettingsControls.BorderSideGetValue\n//\n\nSocialCalc.SettingsControls.BorderSideGetValue = function(panelobj, ctrlname) {\n\n   var sc = SocialCalc.SettingsControls;\n   var ele, value;\n   var idstart = panelobj[ctrlname].id;\n\n   ele = document.getElementById(idstart+\"-onoff-bcb\"); // border checkbox\n   if (!ele) return;\n\n\n   if (ele.checked) { // on\n      value = SocialCalc.Popup.GetValue(idstart+\"-color\");\n      value = \"1px solid \" + (value || \"rgb(0,0,0)\");\n      return {def: false, val: value};\n      }\n   else { // off\n      return {def: false, val: \"\"};\n      }\n\n   }\n\n//\n// SocialCalc.SettingsControls.BorderSideInitialize\n//\n\nSocialCalc.SettingsControls.BorderSideInitialize = function(panelobj, ctrlname) {\n\n   var sc = SocialCalc.SettingsControls;\n   var idstart = panelobj[ctrlname].id;\n\n   SocialCalc.Popup.Create(\"ColorChooser\", idstart+\"-color\", {});\n   SocialCalc.Popup.Initialize(idstart+\"-color\",\n      {attribs:{title: \"&nbsp;\", width: \"106px\", moveable: true,\n                changedcallback: SocialCalc.SettingsControls.PopupChangeCallback, panelobj: panelobj}});\n\n   }\n\n\n//\n// SocialCalc.SettingsControlOnchangeBorder = function(ele)\n//\n\nSocialCalc.SettingsControlOnchangeBorder = function(ele) {\n\n   var idname, value, found, ele2;\n   var sc = SocialCalc.SettingsControls;\n   var panelobj = sc.CurrentPanel;\n\n   var nameparts = ele.id.match(/(^.*\\-)(\\w+)\\-(\\w+)\\-(\\w+)$/);\n   if (!nameparts) return;\n   var prefix = nameparts[1];\n   var ctrlname = nameparts[2];\n   var ctrlsubid = nameparts[3]\n   var ctrlidsuffix = nameparts[4];\n   var ctrltype = panelobj[ctrlname].type;\n\n   switch (ctrlidsuffix) {\n      case \"bcb\": // border checkbox\n         if (ele.checked) {\n            sc.Controls[ctrltype].SetValue(sc.CurrentPanel, ctrlname, {def: false, val: ele.value || \"1px solid rgb(0,0,0)\"});\n            }\n         else {\n            sc.Controls[ctrltype].SetValue(sc.CurrentPanel, ctrlname, {def: false, val: \"\"});\n            }\n         break;\n      }\n\n   }\n\n\nSocialCalc.SettingsControls.Controls.BorderSide = {\n   SetValue: SocialCalc.SettingsControls.BorderSideSetValue,\n   GetValue: SocialCalc.SettingsControls.BorderSideGetValue,\n   OnClick: SocialCalc.SettingsControls.ColorComboOnClick,\n   Initialize: SocialCalc.SettingsControls.BorderSideInitialize,\n   InitialData: {thickness: \"1 pixel:1px\", style: \"Solid:solid\"},\n   ChangedCallback: null\n   }\n\n\nSocialCalc.SettingControlReset = function() {\n\n   var sc = SocialCalc.SettingsControls;\n   var ctrlname;\n\n   for (ctrlname in sc.Controls) {\n      if (sc.Controls[ctrlname].OnReset) sc.Controls[ctrlname].OnReset(ctrlname);\n      }\n   }\n\n\n/**********************\n*\n* CtrlSEditor implementation for editing SocialCalc.OtherSaveParts\n*\n*/\n\nSocialCalc.OtherSaveParts = {}; // holds other parts to save - must be set when loaded if you want to keep\n\nSocialCalc.CtrlSEditor = function(whichpart) {\n\n   var strtoedit, partname;\n   if (whichpart.length > 0) {\n      strtoedit = SocialCalc.special_chars(SocialCalc.OtherSaveParts[whichpart] || \"\");\n      }\n   else {\n      strtoedit = \"Listing of Parts\\n\";\n      for (partname in SocialCalc.OtherSaveParts) {\n         strtoedit += SocialCalc.special_chars(\"\\nPart: \"+partname+\"\\n=====\\n\"+SocialCalc.OtherSaveParts[partname]+\"\\n\");\n         }\n      }\n   var editbox = document.createElement(\"div\");\n   editbox.style.cssText = \"position:absolute;z-index:500;width:300px;height:300px;left:100px;top:200px;border:1px solid black;background-color:#EEE;text-align:center;\";\n   editbox.id = \"socialcalc-editbox\";\n   editbox.innerHTML = whichpart+'<br><br><textarea id=\"socialcalc-editbox-textarea\" style=\"width:250px;height:200px;\">'+\n      strtoedit + '</textarea><br><br><input type=button ' +\n      'onclick=\"SocialCalc.CtrlSEditorDone (\\'socialcalc-editbox\\', \\''+whichpart+'\\');\" value=\"OK\">';\n   document.body.appendChild(editbox);\n\n   var ebta = document.getElementById(\"socialcalc-editbox-textarea\");\n   ebta.focus();\n   SocialCalc.CmdGotFocus(ebta);\n\n   }\n\nSocialCalc.CtrlSEditorDone = function(idprefix, whichpart) {\n\n   var edittextarea = document.getElementById(idprefix+\"-textarea\");\n   var text = edittextarea.value;\n   if (whichpart.length > 0) {\n      if (text.length > 0) {\n         SocialCalc.OtherSaveParts[whichpart] = text;\n         }\n      else {\n         delete SocialCalc.OtherSaveParts[whichpart];\n         }\n      }\n\n   var editbox = document.getElementById(idprefix);\n   SocialCalc.KeyboardFocus();\n   editbox.parentNode.removeChild(editbox);\n\n   }\n\n\n//\n// SocialCalcViewer\n//\n/*\n// The code module of the SocialCalc package that lets you embed a spreadsheet viewer\n// with an optional simple toolbar into a web page.\n//\n// (c) Copyright 2008, 2009, 2010 Socialtext, Inc.\n// All Rights Reserved.\n//\n*/\n\n/*\n\nLEGAL NOTICES REQUIRED BY THE COMMON PUBLIC ATTRIBUTION LICENSE:\n\nEXHIBIT A. Common Public Attribution License Version 1.0.\n\nThe contents of this file are subject to the Common Public Attribution License Version 1.0 (the \n\"License\"); you may not use this file except in compliance with the License. You may obtain a copy \nof the License at http://socialcalc.org. The License is based on the Mozilla Public License Version 1.1 but \nSections 14 and 15 have been added to cover use of software over a computer network and provide for \nlimited attribution for the Original Developer. In addition, Exhibit A has been modified to be \nconsistent with Exhibit B.\n\nSoftware distributed under the License is distributed on an \"AS IS\" basis, WITHOUT WARRANTY OF ANY \nKIND, either express or implied. See the License for the specific language governing rights and \nlimitations under the License.\n\nThe Original Code is SocialCalc JavaScript SpreadsheetViewer.\n\nThe Original Developer is the Initial Developer.\n\nThe Initial Developer of the Original Code is Socialtext, Inc. All portions of the code written by \nSocialtext, Inc., are Copyright (c) Socialtext, Inc. All Rights Reserved.\n\nContributor: Dan Bricklin.\n\n\nEXHIBIT B. Attribution Information\n\nWhen the SpreadsheetViewer is producing and/or controlling the display the Graphic Image must be\ndisplayed on the screen visible to the user in a manner comparable to that in the \nOriginal Code. The Attribution Phrase must be displayed as a \"tooltip\" or \"hover-text\" for\nthat image. The image must be linked to the Attribution URL so as to access that page\nwhen clicked. If the user interface includes a prominent \"about\" display which includes\nfactual prominent attribution in a form similar to that in the \"about\" display included\nwith the Original Code, including Socialtext copyright notices and URLs, then the image\nneed not be linked to the Attribution URL but the \"tool-tip\" is still required.\n\nAttribution Copyright Notice:\n\n Copyright (C) 2010 Socialtext, Inc.\n All Rights Reserved.\n\nAttribution Phrase (not exceeding 10 words): SocialCalc\n\nAttribution URL: http://www.socialcalc.org/\n\nGraphic Image: The contents of the sc-logo.gif file in the Original Code or\na suitable replacement from http://www.socialcalc.org/licenses specified as\nbeing for SocialCalc.\n\nDisplay of Attribution Information is required in Larger Works which are defined \nin the CPAL as a work which combines Covered Code or portions thereof with code \nnot governed by the terms of the CPAL.\n\n*/\n\n//\n// Some of the other files in the SocialCalc package are licensed under\n// different licenses. Please note the licenses of the modules you use.\n//\n// Code History:\n//\n// Initially coded by Dan Bricklin of Software Garden, Inc., for Socialtext, Inc.\n// Unless otherwise specified, referring to \"SocialCalc\" in comments refers to this\n// JavaScript version of the code, not the SocialCalc Perl code.\n//\n\n/*\n\nSee the comments in the main SocialCalc code module file of the SocialCalc package.\n\n*/\n\n   var SocialCalc;\n   if (!SocialCalc) {\n      alert(\"Main SocialCalc code module needed\");\n      SocialCalc = {};\n      }\n   if (!SocialCalc.TableEditor) {\n      alert(\"SocialCalc TableEditor code module needed\");\n      }\n\n// *************************************\n//\n// SpreadsheetViewer class:\n//\n// *************************************\n\n// Global constants:\n\n   SocialCalc.CurrentSpreadsheetViewerObject = null; // right now there can only be one active at a time\n\n\n// Constructor:\n\nSocialCalc.SpreadsheetViewer = function(idPrefix) {\n\n   var scc = SocialCalc.Constants;\n\n   // Properties:\n\n   this.parentNode = null;\n   this.spreadsheetDiv = null;\n   this.requestedHeight = 0;\n   this.requestedWidth = 0;\n   this.requestedSpaceBelow = 0;\n   this.height = 0;\n   this.width = 0;\n   this.viewheight = 0; // calculated amount for views below toolbar, etc.\n\n   // Dynamic properties:\n\n   this.sheet = null;\n   this.context = null;\n   this.editor = null;\n\n   this.spreadsheetDiv = null;\n   this.editorDiv = null;\n\n   this.sortrange = \"\"; // remembered range for sort tab\n\n   // Constants:\n\n   this.idPrefix = idPrefix || \"SocialCalc-\"; // prefix added to element ids used here, should end in \"-\"\n   this.imagePrefix = scc.defaultImagePrefix; // prefix added to img src\n\n   this.statuslineheight = scc.SVStatuslineheight; // in pixels\n   this.statuslineCSS = scc.SVStatuslineCSS;\n\n   // Callbacks:\n\n   // Initialization Code:\n\n   this.sheet = new SocialCalc.Sheet();\n   this.context = new SocialCalc.RenderContext(this.sheet);\n   // eddy SpreadsheetViewer {\n   if(SocialCalc._app == true || SocialCalc._view == true) scc.defaultImagePrefix = this.imagePrefix = \"../\"+ this.imagePrefix;\n   if(SocialCalc._app == true) {\n     this.context.showGrid= false; \n     this.context.showRCHeaders= false;\n     this.context.highlightTypes.range.style = \"\"; // no cell highlighting in app mode\n     \n     // Loading Message - add to cell A1 - shows when app is loading a large sheet or from a slow server\n     this.context.sheetobj.cells[\"A1\"] = new SocialCalc.Cell(\"A1\");\n     this.context.sheetobj.cells[\"A1\"].displaystring = \"Loading ... \"; // will display until recalc issues a render request - auto reset by recalc on load\n     \n   } else {\n     this.context.showGrid= true; \n     this.context.showRCHeaders= true;     \n   }\n   // } SpreadsheetViewer\n   this.editor = new SocialCalc.TableEditor(this.context);\n   this.editor.noEdit = true;\n   this.editor.StatusCallback.statusline =\n      {func: SocialCalc.SpreadsheetViewerStatuslineCallback,\n       params: {}};\n   this.hasStatusLine = true; // default\n//   this.statuslineHTML = '<table cellspacing=\"0\" cellpadding=\"0\"><tr><td width=\"100%\" style=\"overflow:hidden;\">{status}</td><td><a href=\"\">Will&nbsp;be&nbsp;link</a></td></tr></table>';\n   this.statuslineHTML = '<table cellspacing=\"0\" cellpadding=\"0\"><tr><td width=\"100%\" style=\"overflow:hidden;\">{status}</td><td>&nbsp;</td></tr></table>';\n   this.statuslineFull = true;\n   this.noRecalc = true; // don't do a recalc when loaded, so no need for external sheet routines\n\n   // Repeating macro info\n\n   this.repeatingMacroTimer = null;\n   this.repeatingMacroInterval = 60; // default to 60 seconds\n   this.repeatingMacroCommands = \"\"; // what to execute\n\n\n   SocialCalc.CurrentSpreadsheetViewerObject = this; // remember this for rendezvousing on events\n\n   return;\n\n   }\n\n// Methods:\n\nSocialCalc.SpreadsheetViewer.prototype.InitializeSpreadsheetViewer =\n   function(node, height, width, spacebelow) {return SocialCalc.InitializeSpreadsheetViewer(this, node, height, width, spacebelow);};\nSocialCalc.SpreadsheetViewer.prototype.LoadSave = function(str) {return SocialCalc.SpreadsheetViewerLoadSave(this, str);};\nSocialCalc.SpreadsheetViewer.prototype.DoOnResize = function() {return SocialCalc.DoOnResize(this);};\nSocialCalc.SpreadsheetViewer.prototype.SizeSSDiv = function() {return SocialCalc.SizeSSDiv(this);};\nSocialCalc.SpreadsheetViewer.prototype.DecodeSpreadsheetSave = \n   function(str) {return SocialCalc.SpreadsheetViewerDecodeSpreadsheetSave(this, str);};\n\n// Sheet Methods to make things a little easier:\n\nSocialCalc.SpreadsheetViewer.prototype.ParseSheetSave = function(str) {return this.sheet.ParseSheetSave(str);};\n\n\n// Functions:\n\n//\n// InitializeSpreadsheetViewer(spreadsheet, node, height, width, spacebelow)\n//\n// Creates the control elements and makes them the child of node (string or element).\n// If present, height and width specify size.\n// If either is 0 or null (missing), the maximum that fits on the screen\n// (taking spacebelow into account) is used.\n//\n// You should do a redisplay or recalc (which redisplays) after running this.\n//\n\nSocialCalc.InitializeSpreadsheetViewer = function(spreadsheet, node, height, width, spacebelow) {\n\n   var scc = SocialCalc.Constants;\n   var SCLoc = SocialCalc.LocalizeString;\n   var SCLocSS = SocialCalc.LocalizeSubstrings;\n\n   var html, child, i, vname, v, style, button, bele;\n   var tabs = spreadsheet.tabs;\n   var views = spreadsheet.views;\n\n   spreadsheet.requestedHeight = height;\n   spreadsheet.requestedWidth = width;\n   spreadsheet.requestedSpaceBelow = spacebelow;\n\n   if (typeof node == \"string\") node = document.getElementById(node);\n\n   if (node == null) {\n      alert(\"SocialCalc.SpreadsheetControl not given parent node.\");\n      }\n\n   spreadsheet.parentNode = node;\n\n   // create node to hold spreadsheet view\n\n   spreadsheet.spreadsheetDiv = document.createElement(\"div\");\n\n   spreadsheet.SizeSSDiv(); // calculate and fill in the size values\n\n   for (child=node.firstChild; child!=null; child=node.firstChild) {\n      node.removeChild(child);\n      }\n\n   node.appendChild(spreadsheet.spreadsheetDiv);\n\n   // create sheet div\n\n   spreadsheet.nonviewheight = spreadsheet.hasStatusLine ? spreadsheet.statuslineheight : 0;\n   spreadsheet.viewheight = spreadsheet.height-spreadsheet.nonviewheight;\n   spreadsheet.editorDiv=spreadsheet.editor.CreateTableEditor(spreadsheet.width, spreadsheet.viewheight);\n\n   spreadsheet.spreadsheetDiv.appendChild(spreadsheet.editorDiv);\n\n   // create statusline\n\n   if (spreadsheet.hasStatusLine) {\n      spreadsheet.statuslineDiv = document.createElement(\"div\");\n      spreadsheet.statuslineDiv.style.cssText = spreadsheet.statuslineCSS;\n      spreadsheet.statuslineDiv.style.height = spreadsheet.statuslineheight -\n         (spreadsheet.statuslineDiv.style.paddingTop.slice(0,-2)-0) -\n         (spreadsheet.statuslineDiv.style.paddingBottom.slice(0,-2)-0) + \"px\";\n      spreadsheet.statuslineDiv.id = spreadsheet.idPrefix+\"statusline\";\n      spreadsheet.spreadsheetDiv.appendChild(spreadsheet.statuslineDiv);\n      spreadsheet.editor.StatusCallback.statusline =\n         {func: SocialCalc.SpreadsheetViewerStatuslineCallback,\n          params: {spreadsheetobj:spreadsheet}};\n      }\n\n   // eddy InitializeSpreadsheetViewer {\n   if(SocialCalc._app == true) {\n     spreadsheet.formDataViewer = new SocialCalc.SpreadsheetViewer(\"te_FormData-\");\n     // remove callback to stop drawing of table.\n     spreadsheet.formDataViewer.sheet.statuscallback = null;\n     // setup app viewer object\n     SocialCalc.CurrentSpreadsheetViewerObject = spreadsheet;\n   }\n   \n   // done - refresh screen needed\n\n   return;\n\n   }\n\nSocialCalc.SpreadsheetViewerLoadSave = function(spreadsheet, savestr) {\n\n   var rmstr, pos, t, t2;\n\n   var parts = spreadsheet.DecodeSpreadsheetSave(savestr);\n   if (parts) {\n      if (parts.sheet) {\n         spreadsheet.sheet.ResetSheet();\n         spreadsheet.sheet.ParseSheetSave(savestr.substring(parts.sheet.start, parts.sheet.end));\n         }\n      if (parts.edit) {\n         spreadsheet.editor.LoadEditorSettings(savestr.substring(parts.edit.start, parts.edit.end));\n         }\n      if (parts.startupmacro) { // executed now\n         spreadsheet.editor.EditorScheduleSheetCommands(savestr.substring(parts.startupmacro.start, parts.startupmacro.end), false, true);\n         }\n      if (parts.repeatingmacro) { // first line tells how many seconds before first execution. Last cmd must be \"cmdextension repeatmacro delay\" to continue repeating.\n         rmstr = savestr.substring(parts.repeatingmacro.start, parts.repeatingmacro.end);\n         rmstr = rmstr.replace(\"\\r\", \"\"); // make sure no CR, only LF\n         pos = rmstr.indexOf(\"\\n\");\n         if (pos > 0) {\n            t = rmstr.substring(0, pos)-0; // get number\n            t2 = t;\n//            if (!(t > 0)) t = 60; // handles NAN, too\n            spreadsheet.repeatingMacroInterval = t;\n            spreadsheet.repeatingMacroCommands = rmstr.substring(pos+1);\n            if (t2 > 0) { // zero means don't start yet\n               spreadsheet.repeatingMacroTimer = window.setTimeout(SocialCalc.SpreadsheetViewerDoRepeatingMacro, spreadsheet.repeatingMacroInterval * 1000);\n               }\t\n            }\n         }\n      }\n   if (spreadsheet.editor.context.sheetobj.attribs.recalc==\"off\" || spreadsheet.noRecalc) {\n      spreadsheet.editor.ScheduleRender();\n      }\n   else {\n      spreadsheet.editor.EditorScheduleSheetCommands(\"recalc\");\n      }\n   }\n\n//\n// SocialCalc.SpreadsheetViewerDoRepeatingMacro\n//\n// Called by a timer. Executes repeatingMacroCommands once.\n// Use the \"startcmdextension repeatmacro delay\" command last to schedule this again.\n//\n\nSocialCalc.SpreadsheetViewerDoRepeatingMacro = function() {\n\n   var spreadsheet = SocialCalc.GetSpreadsheetViewerObject();\n   var editor = spreadsheet.editor;\n\n   spreadsheet.repeatingMacroTimer = null;\n\n   SocialCalc.SheetCommandInfo.CmdExtensionCallbacks.repeatmacro = {func:SocialCalc.SpreadsheetViewerRepeatMacroCommand, data:null};\n\n   editor.EditorScheduleSheetCommands(spreadsheet.repeatingMacroCommands);\n\n}\n\nSocialCalc.SpreadsheetViewerRepeatMacroCommand = function(name, data, sheet, cmd, saveundo) {\n\n   var spreadsheet = SocialCalc.GetSpreadsheetViewerObject();\n\n   var rest = cmd.RestOfString();\n   var t = rest-0; // get number\n   if (!(t > 0)) t = spreadsheet.repeatingMacroInterval; // handles NAN, too, using last value\n   spreadsheet.repeatingMacroInterval = t;\n\n   spreadsheet.repeatingMacroTimer = window.setTimeout(SocialCalc.SpreadsheetViewerDoRepeatingMacro, spreadsheet.repeatingMacroInterval * 1000);\n\n}\n\nSocialCalc.SpreadsheetViewerStopRepeatingMacro = function() {\n\n   var spreadsheet = SocialCalc.GetSpreadsheetViewerObject();\n\n   if (spreadsheet.repeatingMacroTimer) {\n      window.clearTimeout(spreadsheet.repeatingMacroTimer);\n      spreadsheet.repeatingMacroTimer = null;\n      }\n}\n\n//\n// SocialCalc.SpreadsheetViewerDoButtonCmd(e, buttoninfo, bobj)\n//\n// xxx\n//\n\nSocialCalc.SpreadsheetViewerDoButtonCmd = function(e, buttoninfo, bobj) {\n\n   var obj = bobj.element;\n   var which = bobj.functionobj.command;\n\n   var spreadsheet = SocialCalc.GetSpreadsheetViewerObject();\n   var editor = spreadsheet.editor;\n\n   switch (which) {\n      case \"recalc\":\n         editor.EditorScheduleSheetCommands(\"recalc\");\n         break;\n\n      default:\n         break;\n      }\n\n   if (obj && obj.blur) obj.blur();\n   SocialCalc.KeyboardFocus();   \n\n   }\n\n\n//\n// outstr = SocialCalc.LocalizeString(str)\n//\n// SocialCalc function to make localization easier.\n// If str is \"Text to localize\", it returns\n// SocialCalc.Constants.s_loc_text_to_localize if\n// it exists, or else with just \"Text to localize\".\n// Note that spaces are replaced with \"_\" and other special\n// chars with \"X\" in the name of the constant (e.g., \"A & B\"\n// would look for SocialCalc.Constants.s_loc_a_X_b.\n//\n\nSocialCalc.LocalizeString = function(str) {\n   var cstr = SocialCalc.LocalizeStringList[str]; // found already this session?\n   if (!cstr) { // no - look up\n      cstr = SocialCalc.Constants[\"s_loc_\"+str.toLowerCase().replace(/\\s/g, \"_\").replace(/\\W/g, \"X\")] || str;\n      SocialCalc.LocalizeStringList[str] = cstr;\n      }\n   return cstr;\n   }\n\nSocialCalc.LocalizeStringList = {}; // a list of strings to localize accumulated by the routine\n\n//\n// outstr = SocialCalc.LocalizeSubstrings(str)\n//\n// SocialCalc function to make localization easier using %loc and %scc.\n//\n// Replaces sections of str with:\n//    %loc!Text to localize!\n// with SocialCalc.Constants.s_loc_text_to_localize if\n// it exists, or else with just \"Text to localize\".\n// Note that spaces are replaced with \"_\" and other special\n// chars with \"X\" in the name of the constant (e.g., %loc!A & B!\n// would look for SocialCalc.Constants.s_loc_a_X_b.\n// Uses SocialCalc.LocalizeString for this.\n//\n// Replaces sections of str with:\n//    %ssc!constant-name!\n// with SocialCalc.Constants.constant-name.\n// If the constant doesn't exist, throws and alert.\n//\n\nSocialCalc.LocalizeSubstrings = function(str) {\n\n   var SCLoc = SocialCalc.LocalizeString;\n\n   return str.replace(/%(loc|ssc)!(.*?)!/g, function(a, t, c) {\n      if (t==\"ssc\") {\n         return SocialCalc.Constants[c] || alert(\"Missing constant: \"+c);\n         }\n      else {\n         return SCLoc(c);\n         }\n      });\n\n   }\n\n//\n// obj = GetSpreadsheetViewerObject()\n//\n// Returns the current spreadsheet view object\n//\n\nSocialCalc.GetSpreadsheetViewerObject = function() {\n\n   var csvo = SocialCalc.CurrentSpreadsheetViewerObject;\n   if (csvo) return csvo;\n\n   throw (\"No current SpreadsheetViewer object.\");\n\n   }\n\n\n//\n// SocialCalc.DoOnResize(spreadsheet)\n//\n// Processes an onResize event, setting the different views.\n//\n\nSocialCalc.DoOnResize = function(spreadsheet) {\n\n   var v;\n   var views = spreadsheet.views;\n\n   var needresize = spreadsheet.SizeSSDiv();\n   if (!needresize) return;\n\n   for (vname in views) {\n      v = views[vname].element;\n      v.style.width = spreadsheet.width + \"px\";\n      v.style.height = (spreadsheet.height-spreadsheet.nonviewheight) + \"px\";\n      }\n\n   if(SocialCalc._app) return; // app has no scroll bars and keep normal HTML style page scroll - for mobile\n   spreadsheet.editor.ResizeTableEditor(spreadsheet.width, spreadsheet.height-spreadsheet.nonviewheight);\n\n   }\n\n\n//\n// resized = SocialCalc.SizeSSDiv(spreadsheet)\n//\n// Figures out a reasonable size for the spreadsheet, given any requested values and viewport.\n// Sets ssdiv to that.\n// Return true if different than existing values.\n//\n\nSocialCalc.SizeSSDiv = function(spreadsheet) {\n\n   var sizes, pos, resized, nodestyle, newval;\n   var fudgefactorX = 10; // for IE\n   var fudgefactorY = 10;\n\n   resized = false;\n\n   sizes = SocialCalc.GetViewportInfo();\n   pos = SocialCalc.GetElementPosition(spreadsheet.parentNode);\n   pos.bottom = 0;\n   pos.right = 0;\n\n   nodestyle = spreadsheet.parentNode.style;\n\n   if (nodestyle.marginTop) {\n      pos.top += nodestyle.marginTop.slice(0,-2)-0;\n      }\n   if (nodestyle.marginBottom) {\n      pos.bottom += nodestyle.marginBottom.slice(0,-2)-0;\n      }\n   if (nodestyle.marginLeft) {\n      pos.left += nodestyle.marginLeft.slice(0,-2)-0;\n      }\n   if (nodestyle.marginRight) {\n      pos.right += nodestyle.marginRight.slice(0,-2)-0;\n      }\n\n   newval = spreadsheet.requestedHeight ||\n            sizes.height - (pos.top + pos.bottom + fudgefactorY) -\n               (spreadsheet.requestedSpaceBelow || 0);\n   if (spreadsheet.height != newval) {\n      spreadsheet.height = newval;\n      spreadsheet.spreadsheetDiv.style.height = newval + \"px\";\n      resized = true;\n      }\n   newval = spreadsheet.requestedWidth ||\n            sizes.width - (pos.left + pos.right + fudgefactorX) || 700;\n   if (spreadsheet.width != newval) {\n      spreadsheet.width = newval;\n      spreadsheet.spreadsheetDiv.style.width = newval + \"px\";\n      resized = true;\n      }\n\n   spreadsheet.spreadsheetDiv.style.position = \"relative\";\n\n   return resized;\n\n   }\n\n\n//\n// SocialCalc.SpreadsheetViewerStatuslineCallback\n//\n\nSocialCalc.SpreadsheetViewerStatuslineCallback = function(editor, status, arg, params) {\n\n   var spreadsheet = params.spreadsheetobj;\n   var slstr = \"\";\n\n   if (spreadsheet && spreadsheet.statuslineDiv) {\n      if (spreadsheet.statuslineFull) {\n         slstr = editor.GetStatuslineString(status, arg, params);\n         }\n      else {\n         slstr = editor.ecell.coord;\n         }\n      slstr = spreadsheet.statuslineHTML.replace(/\\{status\\}/, slstr);\n      spreadsheet.statuslineDiv.innerHTML = slstr;\n      }\n\n   switch (status) {\n      case \"cmdendnorender\":\n      case \"calcfinished\":\n      case \"doneposcalc\":\n         break; // not updating Recalc button since no toolbar\n\n      default:\n         break;\n      }\n\n   }\n\n\n//\n// SocialCalc.CmdGotFocus(obj)\n//\n// Sets SocialCalc.Keyboard.passThru: obj should be element with focus or \"true\"\n//\n\nSocialCalc.CmdGotFocus = function(obj) {\n\n   SocialCalc.Keyboard.passThru = obj;\n\n   }\n\n\n//\n// result = SocialCalc.SpreadsheetViewerCreateSheetHTML(spreadsheet)\n//\n// Returns the HTML representation of the whole spreadsheet\n//\n\nSocialCalc.SpreadsheetViewerCreateSheetHTML = function(spreadsheet) {\n\n   var context, div, ele;\n\n   var result = \"\";\n\n   context = new SocialCalc.RenderContext(spreadsheet.sheet);\n   div = document.createElement(\"div\");\n   ele = context.RenderSheet(null, {type: \"html\"});\n   div.appendChild(ele);\n   delete context;\n   result = div.innerHTML;\n   delete ele;\n   delete div;\n   return result;\n\n   }\n\n\n///////////////////////\n//\n// LOAD ROUTINE\n//\n///////////////////////\n\n//\n// parts = SocialCalc.SpreadsheetViewerDecodeSpreadsheetSave(spreadsheet, str)\n//\n// Separates the parts from a spreadsheet save string, returning an object with the sub-strings.\n//\n//    {type1: {start: startpos, end: endpos}, type2:...}\n//\n\nSocialCalc.SpreadsheetViewerDecodeSpreadsheetSave = function(spreadsheet, str) {\n\n   var pos1, mpregex, searchinfo, boundary, boundaryregex, blanklineregex, start, ending, lines, i, lines, p, pnun;\n   var parts = {};\n   var partlist = [];\n\nvar hasreturnonly = /[^\\n]\\r[^\\n]/;\nif (hasreturnonly.test(str)) {\nstr = str.replace(/([^\\n])\\r([^\\n])/g, \"$1\\r\\n$2\");\n}\n   pos1 = str.search(/^MIME-Version:\\s1\\.0/mi);\n   if (pos1 < 0) return parts;\n\n   mpregex = /^Content-Type:\\s*multipart\\/mixed;\\s*boundary=(\\S+)/mig;\n   mpregex.lastIndex = pos1;\n\n   searchinfo = mpregex.exec(str);\n   if (mpregex.lastIndex <= 0) return parts;\n   boundary = searchinfo[1];\n\n   boundaryregex = new RegExp(\"^--\"+boundary+\"(?:\\r\\n|\\n)\", \"mg\");\n   boundaryregex.lastIndex = mpregex.lastIndex;\n\n   searchinfo = boundaryregex.exec(str); // find header top boundary\n   blanklineregex = /(?:\\r\\n|\\n)(?:\\r\\n|\\n)/gm;\n   blanklineregex.lastIndex = boundaryregex.lastIndex;\n   searchinfo = blanklineregex.exec(str); // skip to after blank line\n   if (!searchinfo) return parts;\n   start = blanklineregex.lastIndex;\n   boundaryregex.lastIndex = start;\n   searchinfo = boundaryregex.exec(str); // find end of header\n   if (!searchinfo) return parts;\n   ending = searchinfo.index;\n\n   lines = str.substring(start, ending).split(/\\r\\n|\\n/); // get header as lines\n   for (i=0;i<lines.length;i++) {\n      line=lines[i];\n      p = line.split(\":\");\n      switch (p[0]) {\n         case \"version\":\n            break;\n         case \"part\":\n            partlist.push(p[1]);\n            break;\n         }\n      }\n\n   for (pnum=0; pnum<partlist.length; pnum++) { // get each part\n      blanklineregex.lastIndex = ending;\n      searchinfo = blanklineregex.exec(str); // find blank line ending mime-part header\n      if (!searchinfo) return parts;\n      start = blanklineregex.lastIndex;\n      if (pnum==partlist.length-1) { // last one has different boundary\n         boundaryregex = new RegExp(\"^--\"+boundary+\"--$\", \"mg\");\n         }\n      boundaryregex.lastIndex = start;\n      searchinfo = boundaryregex.exec(str); // find ending boundary\n      if (!searchinfo) return parts;\n      ending = searchinfo.index;\n      parts[partlist[pnum]] = {start: start, end: ending}; // return position within full string\n      }\n\n   return parts;\n\n   }\n\n\n// END OF FILE\n\n\nif('undefined' === typeof document) {\n    // We don't really need a DOM-based presentation layer on the server\n    SocialCalc.GetEditorCellElement = function () {};\n    SocialCalc.ReplaceCell = function () {};\n    SocialCalc.EditorRenderSheet = function () {};\n    SocialCalc.SpreadsheetControlSortSave = function () { return \"\"; };\n    SocialCalc.SpreadsheetControlStatuslineCallback = function () {};\n    SocialCalc.DoPositionCalculations = function (editor) {\n        SocialCalc.EditorSheetStatusCallback(\n            null, \"doneposcalc\", null, editor\n        );\n    };\n}\n\n// Compatibility with webworker-threads\nif (typeof self !== 'undefined' && self.thread) {\n    window.setTimeout = function (cb, ms) {\n        if (ms <= 1) { self.thread.nextTick(cb); }\n    };\n    window.clearTimeout = function () {};\n}\n\n    // Just return a value to define the module export.\n    return SocialCalc;\n}));\n","(function() {\n\nClass = function(classDefinition, classWrapper) {\n    if (!classDefinition) throw(\"Class requires a class definition string as its first argument\");\n    if (!classWrapper) throw(\"Class requires a class wrapper function as its second argument\");\n\n    if (! classDefinition.match(/^([\\w\\.]+)(?:\\(\\s*([\\w\\.]+)\\s*\\))?(?:\\s+(.*?)\\s*)?$/))\n        throw(\"Can't parse Class Definition: '\" + classDefinition + \"'\");\n    var className = RegExp.$1;\n    var baseClassName = RegExp.$2 || '';\n    var options = [];\n    if (RegExp.$3) {\n        options = RegExp.$3.split(/\\s+/);\n    }\n    var incValues = [];\n    var strict = true;\n    for (var i = 0, l = options.length; i < l; i++) {\n        var option = options[i];\n        if (option == '-nostrict') {\n            strict = false;\n        }\n        if (option.match(/^-inc=(.+)$/)) {\n            incValues = RegExp.$1.split(',');\n        }\n    }\n\n    var parts = className.split('.');\n    var klass = Class.global;\n    for (var i = 0; i < parts.length; i++) {\n        if (! klass[parts[i]]) {\n            klass[parts[i]] = function() {\n                try { this.init() } catch(e) {}\n            };\n        }\n        klass = klass[parts[i]];\n    }\n    klass.className = className;\n\n    klass.isa = function(baseName) {\n        klass.baseClassName = baseName;\n        if (baseName) {\n            klass.prototype = eval('new ' + baseName + '()');\n            klass.prototype.superFunc = function(name) {\n                return eval(baseName).prototype[name];\n            }\n        }\n    };\n    klass.isa(baseClassName);\n\n    klass.global = Class.global;\n\n    klass.addGlobal = function() {\n        this.newGlobals++;\n        return Class.global;\n    }\n\n    klass.extend = function(pairs) {\n        if (typeof pairs != 'object') {\n            throw(\"extend requires an object of name:value pairs\");\n        }\n        for (var name in pairs) {\n            klass.prototype[name] = pairs[name];\n        }\n    }\n\n    for (var ii = 0, ll = incValues.length; ii < ll; ii++) {\n        var value = incValues[ii];\n        if (value == 'proto') {\n            incValues[ii] = klass.prototype;\n        }\n        else if (value == 'this') {\n            incValues[ii] = klass;\n        }\n        else {\n            incValues[ii] = Class.global[value];\n        }\n    }\n\n    if (strict) {\n        Class.eval_strict(classWrapper, klass, incValues);\n    }\n    else {\n        classWrapper.apply(klass, incValues);\n    }\n\n    return klass;\n};\n\n})();\n\nClass.global = this;\n\nClass.eval_strict = function(classWrapper, klass, incValues) {\n    var globals = 0;\n    var last_key;\n\n    for (var k in Class.global) {\n        globals++;\n        last_key = k;\n    }\n\n    klass.newGlobals = 0;\n\n    classWrapper.apply(klass, incValues);\n\n    var globals_after = 0;\n    for (var k in Class.global) {\n        globals_after++;\n    }\n\n    if (globals + klass.newGlobals != globals_after) {\n        throw(\"Class '\" + klass.className + \"' defines \" + (globals_after - globals) + \" new global JavaScript variables without using this.addGlobal()\");\n    }\n\n    delete klass.newGlobals;\n};\n\n","Class('Document.Emitter', function() {\n\nvar proto = this.prototype;\nproto.className = 'Document.Emitter';\n\nproto.instantiate = function() {\n    return eval('new ' + this.className + '()');\n}\n\nproto.init = function() {\n    this.output = '';\n}\n\nproto.content = function() {\n    return this.output;\n}\n\nproto.insert = function(receiver) {\n    this.output += receiver.output;\n}\n\n});\n","Class('Document.Emitter.HTML(Document.Emitter)', function() {\n\nvar proto = this.prototype;\nproto.className = 'Document.Emitter.HTML';\n\nproto.begin_node = function(node) {\n    var tag = node.type;\n    switch (tag) {\n        case 'asis': case 'line': return;\n        case 'br': case 'hr': {\n            this.output += '<'+tag+' />';\n            return;\n        }\n        case 'html': {\n            this.output += '<span class=\"wafl\">Raw HTML section. Edit in Wiki Text mode.</span>';\n            return;\n        }\n        case 'waflparagraph': case 'waflphrase': case 'im': {\n            if (node._wafl.match(/^image:\\s*(\\S+)(?:\\s+size=(\\w+))?/)) {\n                var onload = \"if (typeof(ss) != 'undefined' && ss.editor) { var recalc = function () { try { ss.editor.DoPositionCalculations() } catch (e) { setTimeout(recalc, 500) } }; recalc() } if (!window.image_dimension_cache) window.image_dimension_cache = {};window.image_dimension_cache['/data/wafl/\"+node._label.replace(/&/g,\"&amp;\").replace(/\"/g,\"&quot;\").replace(/</g, \"&lt;\").replace(/>/g, \"&gt;\").replace(/'/g, \"\\\\'\").replace(/\\\\/g, \"\\\\\\\\\")+\"'] = [ this.offsetWidth, this.offsetHeight ]; this.style.width = this.offsetWidth + 'px'; this.style.height = this.offsetHeight + 'px'\";\n\n                var imageName = RegExp.$1;\n                var width = RegExp.$2;\n                switch (width) {\n                    case 'small':  { width = '100'; break; }\n                    case 'medium': { width = '300'; break; }\n                    case 'large':  { width = '600'; break; }\n                }\n                if (width) {\n                    width = ' width=\"'+width+'\"';\n                }\n                this.output += '<img src=\"'+imageName.replace(/&/g,\"&amp;\").replace(/\"/g,\"&quot;\").replace(/</g, \"&lt;\").replace(/>/g, \"&gt;\")+'\" onload=\"'+onload+'\"'+width+' />';\n                return;\n            }\n            this.output += '<span class=\"wafl\">'+node._label.replace(/&/g,\"&amp;\").replace(/\"/g,\"&quot;\").replace(/</g, \"&lt;\").replace(/>/g, \"&gt;\").replace(/'/g, \"\\\\'\").replace(/\\\\/g, \"\\\\\\\\\")+'</span>';\n\n            return;\n        }\n        case 'a': case 'wikilink': {\n            this.output += '<a href=\"'+encodeURI(node._href)+'\">';\n            return;\n        }\n        case 'file': {\n            this.output += '<a title=\"(network resource)\" href=\"'+encodeURI(node._href)+'\">';\n            return;\n        }\n        case 'ul': case 'ol': case 'table': case 'tr': {\n            this.output += '<'+tag+\">\\n\";\n            return;\n        }\n        default: {\n            this.output += '<'+tag+'>';\n            return;\n        }\n    }\n}\n\nproto.end_node = function(node) {\n    var tag = node.type;\n    switch (tag) {\n        case 'asis': case 'br': case 'hr': case 'html': case 'waflparagraph': case 'waflphrase': case 'im': return;\n        case 'line': {\n            this.output += '<br />';\n            return;\n        }\n        case 'file': case 'wikilink': {\n            this.output += '</a>';\n            return;\n        }\n        default: {\n            if (tag.search(/^(?:p|ul|ol|li|h\\d|table|tr|td)$/) == 0) {\n                this.output += '</'+tag+\">\\n\";\n            }\n            else {\n                this.output += '</'+tag+'>';\n            }\n            return;\n        }\n    }\n    return;\n}\n\nproto.text_node = function(text) {\n    this.output += text\n        .replace(/&/g, '&amp;')\n        .replace(/>/g, '&gt;')\n        .replace(/</g, '&lt;')\n        .replace(/\"/g, '&quot;')\n        .replace(/'/g, '&apos;');\n}\n\n});\n","Class('Document.Parser', function() {\n\nvar proto = this.prototype;\n\nproto.className = 'Document.Parser';\n\nproto.init = function() {}\n\nproto.parse = function(input, receiver) {\n    this.input = (input.search(/\\n$/) == -1) ? input+\"\\n\" : input;\n    if (receiver) this.receiver = receiver;\n    this.receiver.init();\n    this.grammar = this.create_grammar();\n    this.parse_blocks('top');\n    return this.receiver.content();\n}\n\nproto.create_grammar = function() {\n    throw \"Please define create_grammar in a derived class of Document.Parser.\";\n};\n\n//------------------------------------------------------------------------------\n// Parse input into a series of blocks. With each iteration the parser must\n// match a block at position 0 of the text, and remove that block from the\n// input reparse it further. This continues until there is no input left.\n//------------------------------------------------------------------------------\nproto.parse_blocks = function(container_type) {\n    var types = this.grammar[container_type].blocks; // Document.contains[container_type];\n    if (!types) return;\n    while (this.input.length) {\n        var length = this.input.length;\n        for (var i = 0; i < types.length; i++) {\n            var type = types[i];\n            var matched = this.find_match('matched_block', type);\n            if (matched) {\n                this.input = this.input.substr(matched.end);\n                this.handle_match(type, matched);\n                break;\n            }\n        }\n        if (this.input.length >= length)\n            throw this.classname + ': Reduction error for:\\n' + this.input +\n            '\\n' + JSON.stringify(this);\n    }\n    return;\n}\n\nproto.handle_match = function(type, match) {\n    var grammar = this.grammar[type];\n    var parse = grammar.blocks ? 'parse_blocks' : 'parse_phrases';\n    // console.log(\"Subparsing \" + parse + '(' + type + '): ');\n    // console.log(match);\n    this.subparse(parse, match, type, grammar.filter);\n}\n\nproto.find_match = function(matched_func, type) {\n    var re = this.grammar[type].match;\n    if (!re) throw 'no regexp for type: ' + type;\n    var capture = this.input.match(re);\n    if (capture) {\n        // console.log(\"Found match \" + type + \" - \" + matched_func);\n        var match = this[matched_func].call(this, capture, this.grammar[type].lookbehind);\n        match.type = this.grammar[type].type || type;\n        // console.log(match);\n        return match;\n    }\n    return;\n};\n\n//------------------------------------------------------------------------------\n// This code parses a chunk into interleaved pieces of plain text and\n// phrases. It repeatedly tries to match every possible phrase and\n// then takes the match closest to the start. Everything before a\n// match is written as text. Matched phrases are subparsed according\n// to their rules. This continues until the input is all eaten.\n//------------------------------------------------------------------------------\nproto.parse_phrases = function(container_type) {\n    var types = this.grammar[container_type].phrases;\n    if (!types) { this.receiver.text_node(this.input || ''); return }\n    // console.log(\"INPUT: \" + this.input);\n    while (this.input.length) {\n        var match = null;\n        for (var i = 0; i < types.length; i++) {\n            var type = types[i];\n            var matched = this.find_match('matched_phrase', type);\n            if (! matched) continue;\n\n            if (!match || (matched.begin < match.begin)) {\n                match = matched;\n                if (match.begin == 0) break;\n            }\n        }\n        if (!match) {\n            // console.log(\"NO MATCH: \" + this.input);\n            this.receiver.text_node(this.input || '');\n            break;\n        }\n        if (match.begin != 0) {\n            // console.log(\"MATCH OFFSET:\" + this.input + \" (\" + match.type + \")\" + match.begin);\n            this.receiver.text_node(this.input.substr(0, match.begin) || '');\n            }\n        this.input = this.input.substr(match.end);\n        this.handle_match(match.type, match);\n    }\n    return;\n}\n\nproto.subparse = function(func, match, type, filter) {\n    /* The call could cause side effects to the match object. */\n    match.type = this.grammar[type].type;\n    if (match.type == null) match.type = type;\n\n    var filtered_text = filter ? filter(match) : null;\n\n    if (match.type) this.receiver.begin_node(match);\n\n    var parser = eval('new ' + this.className + '()');\n\n    parser.input = (filtered_text == null) ? match.text : filtered_text;\n    parser.grammar = this.grammar;\n    parser.receiver = this.receiver.instantiate();\n    // console.log(\"SEEDED: (\" + type + \")\" + parser.input);\n    parser[func].call(parser, type);\n    this.receiver.insert(parser.receiver);\n\n    if (match.type) this.receiver.end_node(match);\n}\n\n//------------------------------------------------------------------------------\n// Helper functions\n//\n// These are the odds and ends called by the code above.\n//------------------------------------------------------------------------------\n\n/* Blocks has no lookbehinds, so:\n * All match begins at 0. The first capture is text; the next ones are various parts.\n */\nproto.matched_block = function(capture) {\n    return {\n        begin: capture.index,\n        text: capture[1],\n        end: capture[0].length,\n        1: capture[2],\n        2: capture[3],\n        3: capture[4]\n    };\n}\n\n/* The first capture in a Phrases is the lookbehind. So:\n */\nproto.matched_phrase = function(capture, lookbehind) {\n    if (lookbehind) {\n        var text = capture[2];\n        var begin = this.input.indexOf(capture[1]);\n        return {\n            text: text,\n            begin: begin,\n            end: (begin + capture[1].length),\n            1: RegExp.$2,\n            2: RegExp.$3,\n            3: RegExp.$4\n        };\n    }\n\n    return {\n        begin: capture.index,\n        text: capture[1],\n        end: capture.index + capture[0].length,\n        1: capture[2],\n        2: capture[3],\n        3: capture[4]\n    };\n}\n\n});\n","Class('Document.Parser.Wikitext(Document.Parser)', function() {\n\nvar proto = this.prototype;\nproto.className = 'Document.Parser.Wikitext';\n\nproto.init = function() {}\n\nproto.create_grammar = function() {\n    var all_blocks = ['pre', 'html', 'hr', 'hx', 'waflparagraph', 'ul', 'ol', 'blockquote', 'p', 'empty', 'else'];\n\n    // Phrase TODO: im\n    var all_phrases = ['waflphrase', 'asis', 'wikilink', 'wikilink2', 'a', 'im', 'mail', 'file', 'tt', 'b', 'i', 'del', 'a'];\n\n    var re_huggy = function(brace1, brace2) {\n        brace2 = '\\\\' + (brace2 || brace1);\n        brace1 = '\\\\' + brace1;\n        return {\n            match: new RegExp('(?:^|[^'+brace1+'\\\\w])('+brace1+'(?=\\\\S)(?!'+brace2+')(.*?)'+brace2+'(?=[^'+brace2+'\\\\w]|$))'),\n            phrases: (brace1 == '\\\\`') ? null : all_phrases,\n            lookbehind: true\n        };\n    };\n\n    var im_types = {\n        yahoo: 'yahoo',\n        ymsgr: 'yahoo',\n        callto: 'callto',\n        callme: 'callto',\n        skype: 'callto',\n        aim: 'aim'\n    };\n\n    var im_label = {\n        aim: \"AIM: %1\",\n        yahoo: \"Yahoo: %1\",\n        callto: \"Skype: %1\"\n    };\n\n    var im_re = '(\\\\b(';\n    for (var key in im_types) {\n        im_re += key + '|';\n    }\n    im_re = im_re.replace(/\\|$/, ')\\\\:([^\\\\s\\\\>\\\\)]+))');\n\n    var re_list = function(bullet, filter_out) {\n        var exclusion = new RegExp('(^|\\n)' + filter_out + '\\ *', 'g');\n        return {\n            match: new RegExp(\n                \"^(\" + bullet + \"+\\ .*\\n\" +\n                \"(?:[\\*\\-\\+\\#]+\\ .*\\n)*\" +\n                \")(?:\\s*\\n)?\"\n            ),\n            blocks: ['ul', 'ol', 'subl', 'li'],\n            filter: function(node) {\n                return node.text.replace(exclusion, '$1');\n            }\n        };\n    };\n\n    return {\n        _all_blocks: all_blocks,\n        _all_phrases: all_phrases,\n        top: { blocks: all_blocks },\n        ol: re_list('#', '[*#]'),\n        ul: re_list('[-+*]', '[-+*#]'),\n        blockquote: {\n            match: /^((?:>[^\\n]*\\n)+)(?:\\s*\\n)?/,\n            blocks: ['blockquote', 'line'],\n            filter: function(node) { return node.text.replace(/(^|\\n)>\\ ?/g, '$1') }\n        },\n        line: {\n            match: /([^\\n]*)\\n/,\n            phrases: all_phrases\n        },\n        subl: {\n            type: 'li',\n            match: /^(([^\\n]*)\\n[*#]+\\ [^\\n]*\\n(?:[*#]+\\ [^\\n]*\\n)*)(?:\\s*\\n)?/,\n            blocks: ['ul', 'ol', 'li2']\n        },\n        li: {\n            match: /([^\\n]*)\\n/,\n            phrases: all_phrases\n        },\n        li2: {\n            type: '', // Do not emit begin/end node; just reparse\n            match: /([^\\n]*)\\n/,\n            phrases: all_phrases\n        },\n        html: {\n            match: /^(\\.html\\ *\\n(?:[^\\n]*\\n)*?\\.html)\\ *\\n(?:\\s*\\n)?/,\n            filter: function(node) {\n                node._html = node.text;\n                return '';\n            }\n        },\n        pre: { match: /^\\.pre\\ *\\n((?:[^\\n]*\\n)*?)\\.pre\\ *\\n(?:\\s*\\n)?/ },\n        hr: { match: /^--+(?:\\s*\\n)?/ },\n        hx: {\n            match: /^((\\^+) *([^\\n]*?)(\\s+=+)?\\s*?\\n+)/,\n            phrases: all_phrases,\n            filter: function(node) {\n                node.type = 'h' + node['1'].length;\n                return node[2];\n            }\n        },\n        p: {\n            match: /^((?:(?!(?:(?:\\^+|\\#+|\\*+|\\-+) |\\>|\\.\\w+\\s*\\n|\\{[^\\}]+\\}\\s*\\n))[^\\n]*\\S[^\\n]*\\n)+(?:(?=^|\\n)\\s*\\n)*)/,\n            phrases: all_phrases,\n            filter: function(node) { return node.text.replace(/\\n$/, '') }\n        },\n        empty: {\n            match: /^(\\s*\\n)/,\n            filter: function(node) { node.type = '' }\n        },\n        'else': {\n            match: /^(([^\\n]*)\\n)/,\n            phrases: [],\n            filter: function(node) {\n                node.type = 'p';\n            }\n        },\n        waflparagraph: {\n            match: /^\\{(.*)\\}[\\ \\t]*\\n(?:\\s*\\n)?/,\n            filter: function(node) {\n                node._wafl = node._label = node.text;\n                // node._function = node._wafl.replace(/[: ].*/, '');;\n                // node._options = node._wafl.replace(/^[^: ]*[: ]?/, '');\n                return '';\n            }\n        },\n        waflphrase: {\n            match: /(?:^|[\\s\\-])((?:\"([^\\n]+?)\")?\\{([\\w-]+(?=[\\:\\ \\}])(?:\\s*:)?\\s*[^\\n]*?\\s*)\\}(?=[\\W_]|$))/,\n            filter: function(node) {\n                node._wafl = node[2];\n                node._label = node[1] || node._wafl;\n                // node._function = node._wafl.replace(/[: ].*/, '');;\n                // node._options = node._wafl.replace(/^[^: ]*[: ]?/, '');\n                return '';\n            },\n            lookbehind: true\n        },\n        asis: {\n            match: /(\\{\\{([^\\n]*?)\\}\\}(\\}*))/,\n            filter: function(node) {\n                node.type = '';\n                return(node[1] + node[2]);\n            }\n        },\n        wikilink: {\n            match: /(?:^|[_\\W])(\\[()(?=[^\\s\\[\\]])(.*?)\\](?=[_\\W]|$))/,\n            filter: function(node) {\n                node._href = '?' + node[2];\n                return(node.text || node[2]);\n            },\n            lookbehind: true\n        },\n        wikilink2: {\n            type: 'wikilink',\n            match: /(?:\"([^\"]*)\"\\s*)(\\[(?=[^\\s\\[\\]])(.*?)\\](?=[_\\W]|$))/,\n            filter: function(node) {\n                node._href = '?' + node[2];\n                return(node[1] || node[2]);\n            }\n        },\n        a: {\n            match: /((?:\"([^\"]*)\"\\s*)?<?((?:http|https|ftp|irc|file):(?:\\/\\/)?[\\;\\/\\?\\:\\@\\&\\=\\+\\$\\,\\[\\]\\#A-Za-z0-9\\-\\_\\.\\!\\~\\*\\'\\(\\)]+[A-Za-z0-9\\/#])>?)/,\n            filter: function(node) {\n                node._href = node[2];\n                return(node[1] || node[2]);\n            }\n        },\n        file: {\n            match: /((?:\"([^\"]*)\")?<(\\\\\\\\[^\\s\\>\\)]+)>)/,\n            filter: function(node) {\n                var href = node[2].replace(/^\\\\\\\\/, '');\n                node._href = \"file://\" + href.replace(/\\\\/g, '/');\n                return(node['1'] || href);\n            }\n        },\n        im: {\n            match: (new RegExp(im_re)),\n            filter: function(node) {\n                node._wafl = node[1] + ': ' + node[2];\n                node._label = (im_label[im_types[node[1]]] || '%1').replace(/%1/g, node[2]);\n                return '';\n            }\n        },\n        mail: {\n            match: /([\\w+%\\-\\.]+@(?:[\\w\\-]+\\.)+[\\w\\-]+)/,\n            filter: function(node) {\n                node.type = 'a';\n                node._href = \"mailto:\" + node.text.replace(/%/g, '%25');\n            }\n        },\n        tt: re_huggy('`'), // Special-cased in re_huggy above to disallow subphrases\n        b: re_huggy('*'),\n        i: re_huggy('_'),\n        del: re_huggy('-')\n    };\n};\n\n});\n","/*! jQuery v1.11.0 | (c) 2005, 2014 jQuery Foundation, Inc. | jquery.org/license */\n!function(a,b){\"object\"==typeof module&&\"object\"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error(\"jQuery requires a window with a document\");return b(a)}:b(a)}(\"undefined\"!=typeof window?window:this,function(a,b){var c=[],d=c.slice,e=c.concat,f=c.push,g=c.indexOf,h={},i=h.toString,j=h.hasOwnProperty,k=\"\".trim,l={},m=\"1.11.0\",n=function(a,b){return new n.fn.init(a,b)},o=/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g,p=/^-ms-/,q=/-([\\da-z])/gi,r=function(a,b){return b.toUpperCase()};n.fn=n.prototype={jquery:m,constructor:n,selector:\"\",length:0,toArray:function(){return d.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:d.call(this)},pushStack:function(a){var b=n.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a,b){return n.each(this,a,b)},map:function(a){return this.pushStack(n.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(d.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor(null)},push:f,sort:c.sort,splice:c.splice},n.extend=n.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for(\"boolean\"==typeof g&&(j=g,g=arguments[h]||{},h++),\"object\"==typeof g||n.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(e=arguments[h]))for(d in e)a=g[d],c=e[d],g!==c&&(j&&c&&(n.isPlainObject(c)||(b=n.isArray(c)))?(b?(b=!1,f=a&&n.isArray(a)?a:[]):f=a&&n.isPlainObject(a)?a:{},g[d]=n.extend(j,f,c)):void 0!==c&&(g[d]=c));return g},n.extend({expando:\"jQuery\"+(m+Math.random()).replace(/\\D/g,\"\"),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return\"function\"===n.type(a)},isArray:Array.isArray||function(a){return\"array\"===n.type(a)},isWindow:function(a){return null!=a&&a==a.window},isNumeric:function(a){return a-parseFloat(a)>=0},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},isPlainObject:function(a){var b;if(!a||\"object\"!==n.type(a)||a.nodeType||n.isWindow(a))return!1;try{if(a.constructor&&!j.call(a,\"constructor\")&&!j.call(a.constructor.prototype,\"isPrototypeOf\"))return!1}catch(c){return!1}if(l.ownLast)for(b in a)return j.call(a,b);for(b in a);return void 0===b||j.call(a,b)},type:function(a){return null==a?a+\"\":\"object\"==typeof a||\"function\"==typeof a?h[i.call(a)]||\"object\":typeof a},globalEval:function(b){b&&n.trim(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(p,\"ms-\").replace(q,r)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b,c){var d,e=0,f=a.length,g=s(a);if(c){if(g){for(;f>e;e++)if(d=b.apply(a[e],c),d===!1)break}else for(e in a)if(d=b.apply(a[e],c),d===!1)break}else if(g){for(;f>e;e++)if(d=b.call(a[e],e,a[e]),d===!1)break}else for(e in a)if(d=b.call(a[e],e,a[e]),d===!1)break;return a},trim:k&&!k.call(\"\\ufeff\\xa0\")?function(a){return null==a?\"\":k.call(a)}:function(a){return null==a?\"\":(a+\"\").replace(o,\"\")},makeArray:function(a,b){var c=b||[];return null!=a&&(s(Object(a))?n.merge(c,\"string\"==typeof a?[a]:a):f.call(c,a)),c},inArray:function(a,b,c){var d;if(b){if(g)return g.call(b,a,c);for(d=b.length,c=c?0>c?Math.max(0,d+c):c:0;d>c;c++)if(c in b&&b[c]===a)return c}return-1},merge:function(a,b){var c=+b.length,d=0,e=a.length;while(c>d)a[e++]=b[d++];if(c!==c)while(void 0!==b[d])a[e++]=b[d++];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,f=0,g=a.length,h=s(a),i=[];if(h)for(;g>f;f++)d=b(a[f],f,c),null!=d&&i.push(d);else for(f in a)d=b(a[f],f,c),null!=d&&i.push(d);return e.apply([],i)},guid:1,proxy:function(a,b){var c,e,f;return\"string\"==typeof b&&(f=a[b],b=a,a=f),n.isFunction(a)?(c=d.call(arguments,2),e=function(){return a.apply(b||this,c.concat(d.call(arguments)))},e.guid=a.guid=a.guid||n.guid++,e):void 0},now:function(){return+new Date},support:l}),n.each(\"Boolean Number String Function Array Date RegExp Object Error\".split(\" \"),function(a,b){h[\"[object \"+b+\"]\"]=b.toLowerCase()});function s(a){var b=a.length,c=n.type(a);return\"function\"===c||n.isWindow(a)?!1:1===a.nodeType&&b?!0:\"array\"===c||0===b||\"number\"==typeof b&&b>0&&b-1 in a}var t=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s=\"sizzle\"+-new Date,t=a.document,u=0,v=0,w=eb(),x=eb(),y=eb(),z=function(a,b){return a===b&&(j=!0),0},A=\"undefined\",B=1<<31,C={}.hasOwnProperty,D=[],E=D.pop,F=D.push,G=D.push,H=D.slice,I=D.indexOf||function(a){for(var b=0,c=this.length;c>b;b++)if(this[b]===a)return b;return-1},J=\"checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped\",K=\"[\\\\x20\\\\t\\\\r\\\\n\\\\f]\",L=\"(?:\\\\\\\\.|[\\\\w-]|[^\\\\x00-\\\\xa0])+\",M=L.replace(\"w\",\"w#\"),N=\"\\\\[\"+K+\"*(\"+L+\")\"+K+\"*(?:([*^$|!~]?=)\"+K+\"*(?:(['\\\"])((?:\\\\\\\\.|[^\\\\\\\\])*?)\\\\3|(\"+M+\")|)|)\"+K+\"*\\\\]\",O=\":(\"+L+\")(?:\\\\(((['\\\"])((?:\\\\\\\\.|[^\\\\\\\\])*?)\\\\3|((?:\\\\\\\\.|[^\\\\\\\\()[\\\\]]|\"+N.replace(3,8)+\")*)|.*)\\\\)|)\",P=new RegExp(\"^\"+K+\"+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)\"+K+\"+$\",\"g\"),Q=new RegExp(\"^\"+K+\"*,\"+K+\"*\"),R=new RegExp(\"^\"+K+\"*([>+~]|\"+K+\")\"+K+\"*\"),S=new RegExp(\"=\"+K+\"*([^\\\\]'\\\"]*?)\"+K+\"*\\\\]\",\"g\"),T=new RegExp(O),U=new RegExp(\"^\"+M+\"$\"),V={ID:new RegExp(\"^#(\"+L+\")\"),CLASS:new RegExp(\"^\\\\.(\"+L+\")\"),TAG:new RegExp(\"^(\"+L.replace(\"w\",\"w*\")+\")\"),ATTR:new RegExp(\"^\"+N),PSEUDO:new RegExp(\"^\"+O),CHILD:new RegExp(\"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\\\(\"+K+\"*(even|odd|(([+-]|)(\\\\d*)n|)\"+K+\"*(?:([+-]|)\"+K+\"*(\\\\d+)|))\"+K+\"*\\\\)|)\",\"i\"),bool:new RegExp(\"^(?:\"+J+\")$\",\"i\"),needsContext:new RegExp(\"^\"+K+\"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\\\(\"+K+\"*((?:-\\\\d)?\\\\d*)\"+K+\"*\\\\)|)(?=[^-]|$)\",\"i\")},W=/^(?:input|select|textarea|button)$/i,X=/^h\\d$/i,Y=/^[^{]+\\{\\s*\\[native \\w/,Z=/^(?:#([\\w-]+)|(\\w+)|\\.([\\w-]+))$/,$=/[+~]/,_=/'|\\\\/g,ab=new RegExp(\"\\\\\\\\([\\\\da-f]{1,6}\"+K+\"?|(\"+K+\")|.)\",\"ig\"),bb=function(a,b,c){var d=\"0x\"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)};try{G.apply(D=H.call(t.childNodes),t.childNodes),D[t.childNodes.length].nodeType}catch(cb){G={apply:D.length?function(a,b){F.apply(a,H.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function db(a,b,d,e){var f,g,h,i,j,m,p,q,u,v;if((b?b.ownerDocument||b:t)!==l&&k(b),b=b||l,d=d||[],!a||\"string\"!=typeof a)return d;if(1!==(i=b.nodeType)&&9!==i)return[];if(n&&!e){if(f=Z.exec(a))if(h=f[1]){if(9===i){if(g=b.getElementById(h),!g||!g.parentNode)return d;if(g.id===h)return d.push(g),d}else if(b.ownerDocument&&(g=b.ownerDocument.getElementById(h))&&r(b,g)&&g.id===h)return d.push(g),d}else{if(f[2])return G.apply(d,b.getElementsByTagName(a)),d;if((h=f[3])&&c.getElementsByClassName&&b.getElementsByClassName)return G.apply(d,b.getElementsByClassName(h)),d}if(c.qsa&&(!o||!o.test(a))){if(q=p=s,u=b,v=9===i&&a,1===i&&\"object\"!==b.nodeName.toLowerCase()){m=ob(a),(p=b.getAttribute(\"id\"))?q=p.replace(_,\"\\\\$&\"):b.setAttribute(\"id\",q),q=\"[id='\"+q+\"'] \",j=m.length;while(j--)m[j]=q+pb(m[j]);u=$.test(a)&&mb(b.parentNode)||b,v=m.join(\",\")}if(v)try{return G.apply(d,u.querySelectorAll(v)),d}catch(w){}finally{p||b.removeAttribute(\"id\")}}}return xb(a.replace(P,\"$1\"),b,d,e)}function eb(){var a=[];function b(c,e){return a.push(c+\" \")>d.cacheLength&&delete b[a.shift()],b[c+\" \"]=e}return b}function fb(a){return a[s]=!0,a}function gb(a){var b=l.createElement(\"div\");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function hb(a,b){var c=a.split(\"|\"),e=a.length;while(e--)d.attrHandle[c[e]]=b}function ib(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||B)-(~a.sourceIndex||B);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function jb(a){return function(b){var c=b.nodeName.toLowerCase();return\"input\"===c&&b.type===a}}function kb(a){return function(b){var c=b.nodeName.toLowerCase();return(\"input\"===c||\"button\"===c)&&b.type===a}}function lb(a){return fb(function(b){return b=+b,fb(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function mb(a){return a&&typeof a.getElementsByTagName!==A&&a}c=db.support={},f=db.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?\"HTML\"!==b.nodeName:!1},k=db.setDocument=function(a){var b,e=a?a.ownerDocument||a:t,g=e.defaultView;return e!==l&&9===e.nodeType&&e.documentElement?(l=e,m=e.documentElement,n=!f(e),g&&g!==g.top&&(g.addEventListener?g.addEventListener(\"unload\",function(){k()},!1):g.attachEvent&&g.attachEvent(\"onunload\",function(){k()})),c.attributes=gb(function(a){return a.className=\"i\",!a.getAttribute(\"className\")}),c.getElementsByTagName=gb(function(a){return a.appendChild(e.createComment(\"\")),!a.getElementsByTagName(\"*\").length}),c.getElementsByClassName=Y.test(e.getElementsByClassName)&&gb(function(a){return a.innerHTML=\"<div class='a'></div><div class='a i'></div>\",a.firstChild.className=\"i\",2===a.getElementsByClassName(\"i\").length}),c.getById=gb(function(a){return m.appendChild(a).id=s,!e.getElementsByName||!e.getElementsByName(s).length}),c.getById?(d.find.ID=function(a,b){if(typeof b.getElementById!==A&&n){var c=b.getElementById(a);return c&&c.parentNode?[c]:[]}},d.filter.ID=function(a){var b=a.replace(ab,bb);return function(a){return a.getAttribute(\"id\")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(ab,bb);return function(a){var c=typeof a.getAttributeNode!==A&&a.getAttributeNode(\"id\");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return typeof b.getElementsByTagName!==A?b.getElementsByTagName(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if(\"*\"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){return typeof b.getElementsByClassName!==A&&n?b.getElementsByClassName(a):void 0},p=[],o=[],(c.qsa=Y.test(e.querySelectorAll))&&(gb(function(a){a.innerHTML=\"<select t=''><option selected=''></option></select>\",a.querySelectorAll(\"[t^='']\").length&&o.push(\"[*^$]=\"+K+\"*(?:''|\\\"\\\")\"),a.querySelectorAll(\"[selected]\").length||o.push(\"\\\\[\"+K+\"*(?:value|\"+J+\")\"),a.querySelectorAll(\":checked\").length||o.push(\":checked\")}),gb(function(a){var b=e.createElement(\"input\");b.setAttribute(\"type\",\"hidden\"),a.appendChild(b).setAttribute(\"name\",\"D\"),a.querySelectorAll(\"[name=d]\").length&&o.push(\"name\"+K+\"*[*^$|!~]?=\"),a.querySelectorAll(\":enabled\").length||o.push(\":enabled\",\":disabled\"),a.querySelectorAll(\"*,:x\"),o.push(\",.*:\")})),(c.matchesSelector=Y.test(q=m.webkitMatchesSelector||m.mozMatchesSelector||m.oMatchesSelector||m.msMatchesSelector))&&gb(function(a){c.disconnectedMatch=q.call(a,\"div\"),q.call(a,\"[s!='']:x\"),p.push(\"!=\",O)}),o=o.length&&new RegExp(o.join(\"|\")),p=p.length&&new RegExp(p.join(\"|\")),b=Y.test(m.compareDocumentPosition),r=b||Y.test(m.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},z=b?function(a,b){if(a===b)return j=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===e||a.ownerDocument===t&&r(t,a)?-1:b===e||b.ownerDocument===t&&r(t,b)?1:i?I.call(i,a)-I.call(i,b):0:4&d?-1:1)}:function(a,b){if(a===b)return j=!0,0;var c,d=0,f=a.parentNode,g=b.parentNode,h=[a],k=[b];if(!f||!g)return a===e?-1:b===e?1:f?-1:g?1:i?I.call(i,a)-I.call(i,b):0;if(f===g)return ib(a,b);c=a;while(c=c.parentNode)h.unshift(c);c=b;while(c=c.parentNode)k.unshift(c);while(h[d]===k[d])d++;return d?ib(h[d],k[d]):h[d]===t?-1:k[d]===t?1:0},e):l},db.matches=function(a,b){return db(a,null,null,b)},db.matchesSelector=function(a,b){if((a.ownerDocument||a)!==l&&k(a),b=b.replace(S,\"='$1']\"),!(!c.matchesSelector||!n||p&&p.test(b)||o&&o.test(b)))try{var d=q.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return db(b,l,null,[a]).length>0},db.contains=function(a,b){return(a.ownerDocument||a)!==l&&k(a),r(a,b)},db.attr=function(a,b){(a.ownerDocument||a)!==l&&k(a);var e=d.attrHandle[b.toLowerCase()],f=e&&C.call(d.attrHandle,b.toLowerCase())?e(a,b,!n):void 0;return void 0!==f?f:c.attributes||!n?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},db.error=function(a){throw new Error(\"Syntax error, unrecognized expression: \"+a)},db.uniqueSort=function(a){var b,d=[],e=0,f=0;if(j=!c.detectDuplicates,i=!c.sortStable&&a.slice(0),a.sort(z),j){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return i=null,a},e=db.getText=function(a){var b,c=\"\",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if(\"string\"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=db.selectors={cacheLength:50,createPseudo:fb,match:V,attrHandle:{},find:{},relative:{\">\":{dir:\"parentNode\",first:!0},\" \":{dir:\"parentNode\"},\"+\":{dir:\"previousSibling\",first:!0},\"~\":{dir:\"previousSibling\"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(ab,bb),a[3]=(a[4]||a[5]||\"\").replace(ab,bb),\"~=\"===a[2]&&(a[3]=\" \"+a[3]+\" \"),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),\"nth\"===a[1].slice(0,3)?(a[3]||db.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*(\"even\"===a[3]||\"odd\"===a[3])),a[5]=+(a[7]+a[8]||\"odd\"===a[3])):a[3]&&db.error(a[0]),a},PSEUDO:function(a){var b,c=!a[5]&&a[2];return V.CHILD.test(a[0])?null:(a[3]&&void 0!==a[4]?a[2]=a[4]:c&&T.test(c)&&(b=ob(c,!0))&&(b=c.indexOf(\")\",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(ab,bb).toLowerCase();return\"*\"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=w[a+\" \"];return b||(b=new RegExp(\"(^|\"+K+\")\"+a+\"(\"+K+\"|$)\"))&&w(a,function(a){return b.test(\"string\"==typeof a.className&&a.className||typeof a.getAttribute!==A&&a.getAttribute(\"class\")||\"\")})},ATTR:function(a,b,c){return function(d){var e=db.attr(d,a);return null==e?\"!=\"===b:b?(e+=\"\",\"=\"===b?e===c:\"!=\"===b?e!==c:\"^=\"===b?c&&0===e.indexOf(c):\"*=\"===b?c&&e.indexOf(c)>-1:\"$=\"===b?c&&e.slice(-c.length)===c:\"~=\"===b?(\" \"+e+\" \").indexOf(c)>-1:\"|=\"===b?e===c||e.slice(0,c.length+1)===c+\"-\":!1):!0}},CHILD:function(a,b,c,d,e){var f=\"nth\"!==a.slice(0,3),g=\"last\"!==a.slice(-4),h=\"of-type\"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?\"nextSibling\":\"previousSibling\",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),t=!i&&!h;if(q){if(f){while(p){l=b;while(l=l[p])if(h?l.nodeName.toLowerCase()===r:1===l.nodeType)return!1;o=p=\"only\"===a&&!o&&\"nextSibling\"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&t){k=q[s]||(q[s]={}),j=k[a]||[],n=j[0]===u&&j[1],m=j[0]===u&&j[2],l=n&&q.childNodes[n];while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if(1===l.nodeType&&++m&&l===b){k[a]=[u,n,m];break}}else if(t&&(j=(b[s]||(b[s]={}))[a])&&j[0]===u)m=j[1];else while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if((h?l.nodeName.toLowerCase()===r:1===l.nodeType)&&++m&&(t&&((l[s]||(l[s]={}))[a]=[u,m]),l===b))break;return m-=e,m===d||m%d===0&&m/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||db.error(\"unsupported pseudo: \"+a);return e[s]?e(b):e.length>1?(c=[a,a,\"\",b],d.setFilters.hasOwnProperty(a.toLowerCase())?fb(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=I.call(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:fb(function(a){var b=[],c=[],d=g(a.replace(P,\"$1\"));return d[s]?fb(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),!c.pop()}}),has:fb(function(a){return function(b){return db(a,b).length>0}}),contains:fb(function(a){return function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:fb(function(a){return U.test(a||\"\")||db.error(\"unsupported lang: \"+a),a=a.replace(ab,bb).toLowerCase(),function(b){var c;do if(c=n?b.lang:b.getAttribute(\"xml:lang\")||b.getAttribute(\"lang\"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+\"-\");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===m},focus:function(a){return a===l.activeElement&&(!l.hasFocus||l.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return\"input\"===b&&!!a.checked||\"option\"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return X.test(a.nodeName)},input:function(a){return W.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return\"input\"===b&&\"button\"===a.type||\"button\"===b},text:function(a){var b;return\"input\"===a.nodeName.toLowerCase()&&\"text\"===a.type&&(null==(b=a.getAttribute(\"type\"))||\"text\"===b.toLowerCase())},first:lb(function(){return[0]}),last:lb(function(a,b){return[b-1]}),eq:lb(function(a,b,c){return[0>c?c+b:c]}),even:lb(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:lb(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:lb(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:lb(function(a,b,c){for(var d=0>c?c+b:c;++d<b;)a.push(d);return a})}},d.pseudos.nth=d.pseudos.eq;for(b in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})d.pseudos[b]=jb(b);for(b in{submit:!0,reset:!0})d.pseudos[b]=kb(b);function nb(){}nb.prototype=d.filters=d.pseudos,d.setFilters=new nb;function ob(a,b){var c,e,f,g,h,i,j,k=x[a+\" \"];if(k)return b?0:k.slice(0);h=a,i=[],j=d.preFilter;while(h){(!c||(e=Q.exec(h)))&&(e&&(h=h.slice(e[0].length)||h),i.push(f=[])),c=!1,(e=R.exec(h))&&(c=e.shift(),f.push({value:c,type:e[0].replace(P,\" \")}),h=h.slice(c.length));for(g in d.filter)!(e=V[g].exec(h))||j[g]&&!(e=j[g](e))||(c=e.shift(),f.push({value:c,type:g,matches:e}),h=h.slice(c.length));if(!c)break}return b?h.length:h?db.error(a):x(a,i).slice(0)}function pb(a){for(var b=0,c=a.length,d=\"\";c>b;b++)d+=a[b].value;return d}function qb(a,b,c){var d=b.dir,e=c&&\"parentNode\"===d,f=v++;return b.first?function(b,c,f){while(b=b[d])if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j=[u,f];if(g){while(b=b[d])if((1===b.nodeType||e)&&a(b,c,g))return!0}else while(b=b[d])if(1===b.nodeType||e){if(i=b[s]||(b[s]={}),(h=i[d])&&h[0]===u&&h[1]===f)return j[2]=h[2];if(i[d]=j,j[2]=a(b,c,g))return!0}}}function rb(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function sb(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(!c||c(f,d,e))&&(g.push(f),j&&b.push(h));return g}function tb(a,b,c,d,e,f){return d&&!d[s]&&(d=tb(d)),e&&!e[s]&&(e=tb(e,f)),fb(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||wb(b||\"*\",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:sb(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=sb(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?I.call(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=sb(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):G.apply(g,r)})}function ub(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],i=g||d.relative[\" \"],j=g?1:0,k=qb(function(a){return a===b},i,!0),l=qb(function(a){return I.call(b,a)>-1},i,!0),m=[function(a,c,d){return!g&&(d||c!==h)||((b=c).nodeType?k(a,c,d):l(a,c,d))}];f>j;j++)if(c=d.relative[a[j].type])m=[qb(rb(m),c)];else{if(c=d.filter[a[j].type].apply(null,a[j].matches),c[s]){for(e=++j;f>e;e++)if(d.relative[a[e].type])break;return tb(j>1&&rb(m),j>1&&pb(a.slice(0,j-1).concat({value:\" \"===a[j-2].type?\"*\":\"\"})).replace(P,\"$1\"),c,e>j&&ub(a.slice(j,e)),f>e&&ub(a=a.slice(e)),f>e&&pb(a))}m.push(c)}return rb(m)}function vb(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,i,j,k){var m,n,o,p=0,q=\"0\",r=f&&[],s=[],t=h,v=f||e&&d.find.TAG(\"*\",k),w=u+=null==t?1:Math.random()||.1,x=v.length;for(k&&(h=g!==l&&g);q!==x&&null!=(m=v[q]);q++){if(e&&m){n=0;while(o=a[n++])if(o(m,g,i)){j.push(m);break}k&&(u=w)}c&&((m=!o&&m)&&p--,f&&r.push(m))}if(p+=q,c&&q!==p){n=0;while(o=b[n++])o(r,s,g,i);if(f){if(p>0)while(q--)r[q]||s[q]||(s[q]=E.call(j));s=sb(s)}G.apply(j,s),k&&!f&&s.length>0&&p+b.length>1&&db.uniqueSort(j)}return k&&(u=w,h=t),r};return c?fb(f):f}g=db.compile=function(a,b){var c,d=[],e=[],f=y[a+\" \"];if(!f){b||(b=ob(a)),c=b.length;while(c--)f=ub(b[c]),f[s]?d.push(f):e.push(f);f=y(a,vb(e,d))}return f};function wb(a,b,c){for(var d=0,e=b.length;e>d;d++)db(a,b[d],c);return c}function xb(a,b,e,f){var h,i,j,k,l,m=ob(a);if(!f&&1===m.length){if(i=m[0]=m[0].slice(0),i.length>2&&\"ID\"===(j=i[0]).type&&c.getById&&9===b.nodeType&&n&&d.relative[i[1].type]){if(b=(d.find.ID(j.matches[0].replace(ab,bb),b)||[])[0],!b)return e;a=a.slice(i.shift().value.length)}h=V.needsContext.test(a)?0:i.length;while(h--){if(j=i[h],d.relative[k=j.type])break;if((l=d.find[k])&&(f=l(j.matches[0].replace(ab,bb),$.test(i[0].type)&&mb(b.parentNode)||b))){if(i.splice(h,1),a=f.length&&pb(i),!a)return G.apply(e,f),e;break}}}return g(a,m)(f,b,!n,e,$.test(a)&&mb(b.parentNode)||b),e}return c.sortStable=s.split(\"\").sort(z).join(\"\")===s,c.detectDuplicates=!!j,k(),c.sortDetached=gb(function(a){return 1&a.compareDocumentPosition(l.createElement(\"div\"))}),gb(function(a){return a.innerHTML=\"<a href='#'></a>\",\"#\"===a.firstChild.getAttribute(\"href\")})||hb(\"type|href|height|width\",function(a,b,c){return c?void 0:a.getAttribute(b,\"type\"===b.toLowerCase()?1:2)}),c.attributes&&gb(function(a){return a.innerHTML=\"<input/>\",a.firstChild.setAttribute(\"value\",\"\"),\"\"===a.firstChild.getAttribute(\"value\")})||hb(\"value\",function(a,b,c){return c||\"input\"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),gb(function(a){return null==a.getAttribute(\"disabled\")})||hb(J,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),db}(a);n.find=t,n.expr=t.selectors,n.expr[\":\"]=n.expr.pseudos,n.unique=t.uniqueSort,n.text=t.getText,n.isXMLDoc=t.isXML,n.contains=t.contains;var u=n.expr.match.needsContext,v=/^<(\\w+)\\s*\\/?>(?:<\\/\\1>|)$/,w=/^.[^:#\\[\\.,]*$/;function x(a,b,c){if(n.isFunction(b))return n.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return n.grep(a,function(a){return a===b!==c});if(\"string\"==typeof b){if(w.test(b))return n.filter(b,a,c);b=n.filter(b,a)}return n.grep(a,function(a){return n.inArray(a,b)>=0!==c})}n.filter=function(a,b,c){var d=b[0];return c&&(a=\":not(\"+a+\")\"),1===b.length&&1===d.nodeType?n.find.matchesSelector(d,a)?[d]:[]:n.find.matches(a,n.grep(b,function(a){return 1===a.nodeType}))},n.fn.extend({find:function(a){var b,c=[],d=this,e=d.length;if(\"string\"!=typeof a)return this.pushStack(n(a).filter(function(){for(b=0;e>b;b++)if(n.contains(d[b],this))return!0}));for(b=0;e>b;b++)n.find(a,d[b],c);return c=this.pushStack(e>1?n.unique(c):c),c.selector=this.selector?this.selector+\" \"+a:a,c},filter:function(a){return this.pushStack(x(this,a||[],!1))},not:function(a){return this.pushStack(x(this,a||[],!0))},is:function(a){return!!x(this,\"string\"==typeof a&&u.test(a)?n(a):a||[],!1).length}});var y,z=a.document,A=/^(?:\\s*(<[\\w\\W]+>)[^>]*|#([\\w-]*))$/,B=n.fn.init=function(a,b){var c,d;if(!a)return this;if(\"string\"==typeof a){if(c=\"<\"===a.charAt(0)&&\">\"===a.charAt(a.length-1)&&a.length>=3?[null,a,null]:A.exec(a),!c||!c[1]&&b)return!b||b.jquery?(b||y).find(a):this.constructor(b).find(a);if(c[1]){if(b=b instanceof n?b[0]:b,n.merge(this,n.parseHTML(c[1],b&&b.nodeType?b.ownerDocument||b:z,!0)),v.test(c[1])&&n.isPlainObject(b))for(c in b)n.isFunction(this[c])?this[c](b[c]):this.attr(c,b[c]);return this}if(d=z.getElementById(c[2]),d&&d.parentNode){if(d.id!==c[2])return y.find(a);this.length=1,this[0]=d}return this.context=z,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):n.isFunction(a)?\"undefined\"!=typeof y.ready?y.ready(a):a(n):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),n.makeArray(a,this))};B.prototype=n.fn,y=n(z);var C=/^(?:parents|prev(?:Until|All))/,D={children:!0,contents:!0,next:!0,prev:!0};n.extend({dir:function(a,b,c){var d=[],e=a[b];while(e&&9!==e.nodeType&&(void 0===c||1!==e.nodeType||!n(e).is(c)))1===e.nodeType&&d.push(e),e=e[b];return d},sibling:function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c}}),n.fn.extend({has:function(a){var b,c=n(a,this),d=c.length;return this.filter(function(){for(b=0;d>b;b++)if(n.contains(this,c[b]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=u.test(a)||\"string\"!=typeof a?n(a,b||this.context):0;e>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&n.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?n.unique(f):f)},index:function(a){return a?\"string\"==typeof a?n.inArray(this[0],n(a)):n.inArray(a.jquery?a[0]:a,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(n.unique(n.merge(this.get(),n(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function E(a,b){do a=a[b];while(a&&1!==a.nodeType);return a}n.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return n.dir(a,\"parentNode\")},parentsUntil:function(a,b,c){return n.dir(a,\"parentNode\",c)},next:function(a){return E(a,\"nextSibling\")},prev:function(a){return E(a,\"previousSibling\")},nextAll:function(a){return n.dir(a,\"nextSibling\")},prevAll:function(a){return n.dir(a,\"previousSibling\")},nextUntil:function(a,b,c){return n.dir(a,\"nextSibling\",c)},prevUntil:function(a,b,c){return n.dir(a,\"previousSibling\",c)},siblings:function(a){return n.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return n.sibling(a.firstChild)},contents:function(a){return n.nodeName(a,\"iframe\")?a.contentDocument||a.contentWindow.document:n.merge([],a.childNodes)}},function(a,b){n.fn[a]=function(c,d){var e=n.map(this,b,c);return\"Until\"!==a.slice(-5)&&(d=c),d&&\"string\"==typeof d&&(e=n.filter(d,e)),this.length>1&&(D[a]||(e=n.unique(e)),C.test(a)&&(e=e.reverse())),this.pushStack(e)}});var F=/\\S+/g,G={};function H(a){var b=G[a]={};return n.each(a.match(F)||[],function(a,c){b[c]=!0}),b}n.Callbacks=function(a){a=\"string\"==typeof a?G[a]||H(a):n.extend({},a);var b,c,d,e,f,g,h=[],i=!a.once&&[],j=function(l){for(c=a.memory&&l,d=!0,f=g||0,g=0,e=h.length,b=!0;h&&e>f;f++)if(h[f].apply(l[0],l[1])===!1&&a.stopOnFalse){c=!1;break}b=!1,h&&(i?i.length&&j(i.shift()):c?h=[]:k.disable())},k={add:function(){if(h){var d=h.length;!function f(b){n.each(b,function(b,c){var d=n.type(c);\"function\"===d?a.unique&&k.has(c)||h.push(c):c&&c.length&&\"string\"!==d&&f(c)})}(arguments),b?e=h.length:c&&(g=d,j(c))}return this},remove:function(){return h&&n.each(arguments,function(a,c){var d;while((d=n.inArray(c,h,d))>-1)h.splice(d,1),b&&(e>=d&&e--,f>=d&&f--)}),this},has:function(a){return a?n.inArray(a,h)>-1:!(!h||!h.length)},empty:function(){return h=[],e=0,this},disable:function(){return h=i=c=void 0,this},disabled:function(){return!h},lock:function(){return i=void 0,c||k.disable(),this},locked:function(){return!i},fireWith:function(a,c){return!h||d&&!i||(c=c||[],c=[a,c.slice?c.slice():c],b?i.push(c):j(c)),this},fire:function(){return k.fireWith(this,arguments),this},fired:function(){return!!d}};return k},n.extend({Deferred:function(a){var b=[[\"resolve\",\"done\",n.Callbacks(\"once memory\"),\"resolved\"],[\"reject\",\"fail\",n.Callbacks(\"once memory\"),\"rejected\"],[\"notify\",\"progress\",n.Callbacks(\"memory\")]],c=\"pending\",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return n.Deferred(function(c){n.each(b,function(b,f){var g=n.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);a&&n.isFunction(a.promise)?a.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[f[0]+\"With\"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?n.extend(a,d):d}},e={};return d.pipe=d.then,n.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[1^a][2].disable,b[2][2].lock),e[f[0]]=function(){return e[f[0]+\"With\"](this===e?d:this,arguments),this},e[f[0]+\"With\"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=d.call(arguments),e=c.length,f=1!==e||a&&n.isFunction(a.promise)?e:0,g=1===f?a:n.Deferred(),h=function(a,b,c){return function(e){b[a]=this,c[a]=arguments.length>1?d.call(arguments):e,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(e>1)for(i=new Array(e),j=new Array(e),k=new Array(e);e>b;b++)c[b]&&n.isFunction(c[b].promise)?c[b].promise().done(h(b,k,c)).fail(g.reject).progress(h(b,j,i)):--f;return f||g.resolveWith(k,c),g.promise()}});var I;n.fn.ready=function(a){return n.ready.promise().done(a),this},n.extend({isReady:!1,readyWait:1,holdReady:function(a){a?n.readyWait++:n.ready(!0)},ready:function(a){if(a===!0?!--n.readyWait:!n.isReady){if(!z.body)return setTimeout(n.ready);n.isReady=!0,a!==!0&&--n.readyWait>0||(I.resolveWith(z,[n]),n.fn.trigger&&n(z).trigger(\"ready\").off(\"ready\"))}}});function J(){z.addEventListener?(z.removeEventListener(\"DOMContentLoaded\",K,!1),a.removeEventListener(\"load\",K,!1)):(z.detachEvent(\"onreadystatechange\",K),a.detachEvent(\"onload\",K))}function K(){(z.addEventListener||\"load\"===event.type||\"complete\"===z.readyState)&&(J(),n.ready())}n.ready.promise=function(b){if(!I)if(I=n.Deferred(),\"complete\"===z.readyState)setTimeout(n.ready);else if(z.addEventListener)z.addEventListener(\"DOMContentLoaded\",K,!1),a.addEventListener(\"load\",K,!1);else{z.attachEvent(\"onreadystatechange\",K),a.attachEvent(\"onload\",K);var c=!1;try{c=null==a.frameElement&&z.documentElement}catch(d){}c&&c.doScroll&&!function e(){if(!n.isReady){try{c.doScroll(\"left\")}catch(a){return setTimeout(e,50)}J(),n.ready()}}()}return I.promise(b)};var L=\"undefined\",M;for(M in n(l))break;l.ownLast=\"0\"!==M,l.inlineBlockNeedsLayout=!1,n(function(){var a,b,c=z.getElementsByTagName(\"body\")[0];c&&(a=z.createElement(\"div\"),a.style.cssText=\"border:0;width:0;height:0;position:absolute;top:0;left:-9999px;margin-top:1px\",b=z.createElement(\"div\"),c.appendChild(a).appendChild(b),typeof b.style.zoom!==L&&(b.style.cssText=\"border:0;margin:0;width:1px;padding:1px;display:inline;zoom:1\",(l.inlineBlockNeedsLayout=3===b.offsetWidth)&&(c.style.zoom=1)),c.removeChild(a),a=b=null)}),function(){var a=z.createElement(\"div\");if(null==l.deleteExpando){l.deleteExpando=!0;try{delete a.test}catch(b){l.deleteExpando=!1}}a=null}(),n.acceptData=function(a){var b=n.noData[(a.nodeName+\" \").toLowerCase()],c=+a.nodeType||1;return 1!==c&&9!==c?!1:!b||b!==!0&&a.getAttribute(\"classid\")===b};var N=/^(?:\\{[\\w\\W]*\\}|\\[[\\w\\W]*\\])$/,O=/([A-Z])/g;function P(a,b,c){if(void 0===c&&1===a.nodeType){var d=\"data-\"+b.replace(O,\"-$1\").toLowerCase();if(c=a.getAttribute(d),\"string\"==typeof c){try{c=\"true\"===c?!0:\"false\"===c?!1:\"null\"===c?null:+c+\"\"===c?+c:N.test(c)?n.parseJSON(c):c}catch(e){}n.data(a,b,c)}else c=void 0}return c}function Q(a){var b;for(b in a)if((\"data\"!==b||!n.isEmptyObject(a[b]))&&\"toJSON\"!==b)return!1;return!0}function R(a,b,d,e){if(n.acceptData(a)){var f,g,h=n.expando,i=a.nodeType,j=i?n.cache:a,k=i?a[h]:a[h]&&h;if(k&&j[k]&&(e||j[k].data)||void 0!==d||\"string\"!=typeof b)return k||(k=i?a[h]=c.pop()||n.guid++:h),j[k]||(j[k]=i?{}:{toJSON:n.noop}),(\"object\"==typeof b||\"function\"==typeof b)&&(e?j[k]=n.extend(j[k],b):j[k].data=n.extend(j[k].data,b)),g=j[k],e||(g.data||(g.data={}),g=g.data),void 0!==d&&(g[n.camelCase(b)]=d),\"string\"==typeof b?(f=g[b],null==f&&(f=g[n.camelCase(b)])):f=g,f\n}}function S(a,b,c){if(n.acceptData(a)){var d,e,f=a.nodeType,g=f?n.cache:a,h=f?a[n.expando]:n.expando;if(g[h]){if(b&&(d=c?g[h]:g[h].data)){n.isArray(b)?b=b.concat(n.map(b,n.camelCase)):b in d?b=[b]:(b=n.camelCase(b),b=b in d?[b]:b.split(\" \")),e=b.length;while(e--)delete d[b[e]];if(c?!Q(d):!n.isEmptyObject(d))return}(c||(delete g[h].data,Q(g[h])))&&(f?n.cleanData([a],!0):l.deleteExpando||g!=g.window?delete g[h]:g[h]=null)}}}n.extend({cache:{},noData:{\"applet \":!0,\"embed \":!0,\"object \":\"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\"},hasData:function(a){return a=a.nodeType?n.cache[a[n.expando]]:a[n.expando],!!a&&!Q(a)},data:function(a,b,c){return R(a,b,c)},removeData:function(a,b){return S(a,b)},_data:function(a,b,c){return R(a,b,c,!0)},_removeData:function(a,b){return S(a,b,!0)}}),n.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=n.data(f),1===f.nodeType&&!n._data(f,\"parsedAttrs\"))){c=g.length;while(c--)d=g[c].name,0===d.indexOf(\"data-\")&&(d=n.camelCase(d.slice(5)),P(f,d,e[d]));n._data(f,\"parsedAttrs\",!0)}return e}return\"object\"==typeof a?this.each(function(){n.data(this,a)}):arguments.length>1?this.each(function(){n.data(this,a,b)}):f?P(f,a,n.data(f,a)):void 0},removeData:function(a){return this.each(function(){n.removeData(this,a)})}}),n.extend({queue:function(a,b,c){var d;return a?(b=(b||\"fx\")+\"queue\",d=n._data(a,b),c&&(!d||n.isArray(c)?d=n._data(a,b,n.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||\"fx\";var c=n.queue(a,b),d=c.length,e=c.shift(),f=n._queueHooks(a,b),g=function(){n.dequeue(a,b)};\"inprogress\"===e&&(e=c.shift(),d--),e&&(\"fx\"===b&&c.unshift(\"inprogress\"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+\"queueHooks\";return n._data(a,c)||n._data(a,c,{empty:n.Callbacks(\"once memory\").add(function(){n._removeData(a,b+\"queue\"),n._removeData(a,c)})})}}),n.fn.extend({queue:function(a,b){var c=2;return\"string\"!=typeof a&&(b=a,a=\"fx\",c--),arguments.length<c?n.queue(this[0],a):void 0===b?this:this.each(function(){var c=n.queue(this,a,b);n._queueHooks(this,a),\"fx\"===a&&\"inprogress\"!==c[0]&&n.dequeue(this,a)})},dequeue:function(a){return this.each(function(){n.dequeue(this,a)})},clearQueue:function(a){return this.queue(a||\"fx\",[])},promise:function(a,b){var c,d=1,e=n.Deferred(),f=this,g=this.length,h=function(){--d||e.resolveWith(f,[f])};\"string\"!=typeof a&&(b=a,a=void 0),a=a||\"fx\";while(g--)c=n._data(f[g],a+\"queueHooks\"),c&&c.empty&&(d++,c.empty.add(h));return h(),e.promise(b)}});var T=/[+-]?(?:\\d*\\.|)\\d+(?:[eE][+-]?\\d+|)/.source,U=[\"Top\",\"Right\",\"Bottom\",\"Left\"],V=function(a,b){return a=b||a,\"none\"===n.css(a,\"display\")||!n.contains(a.ownerDocument,a)},W=n.access=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if(\"object\"===n.type(c)){e=!0;for(h in c)n.access(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,n.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(n(a),c)})),b))for(;i>h;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f},X=/^(?:checkbox|radio)$/i;!function(){var a=z.createDocumentFragment(),b=z.createElement(\"div\"),c=z.createElement(\"input\");if(b.setAttribute(\"className\",\"t\"),b.innerHTML=\"  <link/><table></table><a href='/a'>a</a>\",l.leadingWhitespace=3===b.firstChild.nodeType,l.tbody=!b.getElementsByTagName(\"tbody\").length,l.htmlSerialize=!!b.getElementsByTagName(\"link\").length,l.html5Clone=\"<:nav></:nav>\"!==z.createElement(\"nav\").cloneNode(!0).outerHTML,c.type=\"checkbox\",c.checked=!0,a.appendChild(c),l.appendChecked=c.checked,b.innerHTML=\"<textarea>x</textarea>\",l.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue,a.appendChild(b),b.innerHTML=\"<input type='radio' checked='checked' name='t'/>\",l.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,l.noCloneEvent=!0,b.attachEvent&&(b.attachEvent(\"onclick\",function(){l.noCloneEvent=!1}),b.cloneNode(!0).click()),null==l.deleteExpando){l.deleteExpando=!0;try{delete b.test}catch(d){l.deleteExpando=!1}}a=b=c=null}(),function(){var b,c,d=z.createElement(\"div\");for(b in{submit:!0,change:!0,focusin:!0})c=\"on\"+b,(l[b+\"Bubbles\"]=c in a)||(d.setAttribute(c,\"t\"),l[b+\"Bubbles\"]=d.attributes[c].expando===!1);d=null}();var Y=/^(?:input|select|textarea)$/i,Z=/^key/,$=/^(?:mouse|contextmenu)|click/,_=/^(?:focusinfocus|focusoutblur)$/,ab=/^([^.]*)(?:\\.(.+)|)$/;function bb(){return!0}function cb(){return!1}function db(){try{return z.activeElement}catch(a){}}n.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=n._data(a);if(r){c.handler&&(i=c,c=i.handler,e=i.selector),c.guid||(c.guid=n.guid++),(g=r.events)||(g=r.events={}),(k=r.handle)||(k=r.handle=function(a){return typeof n===L||a&&n.event.triggered===a.type?void 0:n.event.dispatch.apply(k.elem,arguments)},k.elem=a),b=(b||\"\").match(F)||[\"\"],h=b.length;while(h--)f=ab.exec(b[h])||[],o=q=f[1],p=(f[2]||\"\").split(\".\").sort(),o&&(j=n.event.special[o]||{},o=(e?j.delegateType:j.bindType)||o,j=n.event.special[o]||{},l=n.extend({type:o,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&n.expr.match.needsContext.test(e),namespace:p.join(\".\")},i),(m=g[o])||(m=g[o]=[],m.delegateCount=0,j.setup&&j.setup.call(a,d,p,k)!==!1||(a.addEventListener?a.addEventListener(o,k,!1):a.attachEvent&&a.attachEvent(\"on\"+o,k))),j.add&&(j.add.call(a,l),l.handler.guid||(l.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,l):m.push(l),n.event.global[o]=!0);a=null}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=n.hasData(a)&&n._data(a);if(r&&(k=r.events)){b=(b||\"\").match(F)||[\"\"],j=b.length;while(j--)if(h=ab.exec(b[j])||[],o=q=h[1],p=(h[2]||\"\").split(\".\").sort(),o){l=n.event.special[o]||{},o=(d?l.delegateType:l.bindType)||o,m=k[o]||[],h=h[2]&&new RegExp(\"(^|\\\\.)\"+p.join(\"\\\\.(?:.*\\\\.|)\")+\"(\\\\.|$)\"),i=f=m.length;while(f--)g=m[f],!e&&q!==g.origType||c&&c.guid!==g.guid||h&&!h.test(g.namespace)||d&&d!==g.selector&&(\"**\"!==d||!g.selector)||(m.splice(f,1),g.selector&&m.delegateCount--,l.remove&&l.remove.call(a,g));i&&!m.length&&(l.teardown&&l.teardown.call(a,p,r.handle)!==!1||n.removeEvent(a,o,r.handle),delete k[o])}else for(o in k)n.event.remove(a,o+b[j],c,d,!0);n.isEmptyObject(k)&&(delete r.handle,n._removeData(a,\"events\"))}},trigger:function(b,c,d,e){var f,g,h,i,k,l,m,o=[d||z],p=j.call(b,\"type\")?b.type:b,q=j.call(b,\"namespace\")?b.namespace.split(\".\"):[];if(h=l=d=d||z,3!==d.nodeType&&8!==d.nodeType&&!_.test(p+n.event.triggered)&&(p.indexOf(\".\")>=0&&(q=p.split(\".\"),p=q.shift(),q.sort()),g=p.indexOf(\":\")<0&&\"on\"+p,b=b[n.expando]?b:new n.Event(p,\"object\"==typeof b&&b),b.isTrigger=e?2:3,b.namespace=q.join(\".\"),b.namespace_re=b.namespace?new RegExp(\"(^|\\\\.)\"+q.join(\"\\\\.(?:.*\\\\.|)\")+\"(\\\\.|$)\"):null,b.result=void 0,b.target||(b.target=d),c=null==c?[b]:n.makeArray(c,[b]),k=n.event.special[p]||{},e||!k.trigger||k.trigger.apply(d,c)!==!1)){if(!e&&!k.noBubble&&!n.isWindow(d)){for(i=k.delegateType||p,_.test(i+p)||(h=h.parentNode);h;h=h.parentNode)o.push(h),l=h;l===(d.ownerDocument||z)&&o.push(l.defaultView||l.parentWindow||a)}m=0;while((h=o[m++])&&!b.isPropagationStopped())b.type=m>1?i:k.bindType||p,f=(n._data(h,\"events\")||{})[b.type]&&n._data(h,\"handle\"),f&&f.apply(h,c),f=g&&h[g],f&&f.apply&&n.acceptData(h)&&(b.result=f.apply(h,c),b.result===!1&&b.preventDefault());if(b.type=p,!e&&!b.isDefaultPrevented()&&(!k._default||k._default.apply(o.pop(),c)===!1)&&n.acceptData(d)&&g&&d[p]&&!n.isWindow(d)){l=d[g],l&&(d[g]=null),n.event.triggered=p;try{d[p]()}catch(r){}n.event.triggered=void 0,l&&(d[g]=l)}return b.result}},dispatch:function(a){a=n.event.fix(a);var b,c,e,f,g,h=[],i=d.call(arguments),j=(n._data(this,\"events\")||{})[a.type]||[],k=n.event.special[a.type]||{};if(i[0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!1){h=n.event.handlers.call(this,a,j),b=0;while((f=h[b++])&&!a.isPropagationStopped()){a.currentTarget=f.elem,g=0;while((e=f.handlers[g++])&&!a.isImmediatePropagationStopped())(!a.namespace_re||a.namespace_re.test(e.namespace))&&(a.handleObj=e,a.data=e.data,c=((n.event.special[e.origType]||{}).handle||e.handler).apply(f.elem,i),void 0!==c&&(a.result=c)===!1&&(a.preventDefault(),a.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&(!a.button||\"click\"!==a.type))for(;i!=this;i=i.parentNode||this)if(1===i.nodeType&&(i.disabled!==!0||\"click\"!==a.type)){for(e=[],f=0;h>f;f++)d=b[f],c=d.selector+\" \",void 0===e[c]&&(e[c]=d.needsContext?n(c,this).index(i)>=0:n.find(c,this,null,[i]).length),e[c]&&e.push(d);e.length&&g.push({elem:i,handlers:e})}return h<b.length&&g.push({elem:this,handlers:b.slice(h)}),g},fix:function(a){if(a[n.expando])return a;var b,c,d,e=a.type,f=a,g=this.fixHooks[e];g||(this.fixHooks[e]=g=$.test(e)?this.mouseHooks:Z.test(e)?this.keyHooks:{}),d=g.props?this.props.concat(g.props):this.props,a=new n.Event(f),b=d.length;while(b--)c=d[b],a[c]=f[c];return a.target||(a.target=f.srcElement||z),3===a.target.nodeType&&(a.target=a.target.parentNode),a.metaKey=!!a.metaKey,g.filter?g.filter(a,f):a},props:\"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which\".split(\" \"),fixHooks:{},keyHooks:{props:\"char charCode key keyCode\".split(\" \"),filter:function(a,b){return null==a.which&&(a.which=null!=b.charCode?b.charCode:b.keyCode),a}},mouseHooks:{props:\"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement\".split(\" \"),filter:function(a,b){var c,d,e,f=b.button,g=b.fromElement;return null==a.pageX&&null!=b.clientX&&(d=a.target.ownerDocument||z,e=d.documentElement,c=d.body,a.pageX=b.clientX+(e&&e.scrollLeft||c&&c.scrollLeft||0)-(e&&e.clientLeft||c&&c.clientLeft||0),a.pageY=b.clientY+(e&&e.scrollTop||c&&c.scrollTop||0)-(e&&e.clientTop||c&&c.clientTop||0)),!a.relatedTarget&&g&&(a.relatedTarget=g===a.target?b.toElement:g),a.which||void 0===f||(a.which=1&f?1:2&f?3:4&f?2:0),a}},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==db()&&this.focus)try{return this.focus(),!1}catch(a){}},delegateType:\"focusin\"},blur:{trigger:function(){return this===db()&&this.blur?(this.blur(),!1):void 0},delegateType:\"focusout\"},click:{trigger:function(){return n.nodeName(this,\"input\")&&\"checkbox\"===this.type&&this.click?(this.click(),!1):void 0},_default:function(a){return n.nodeName(a.target,\"a\")}},beforeunload:{postDispatch:function(a){void 0!==a.result&&(a.originalEvent.returnValue=a.result)}}},simulate:function(a,b,c,d){var e=n.extend(new n.Event,c,{type:a,isSimulated:!0,originalEvent:{}});d?n.event.trigger(e,null,b):n.event.dispatch.call(b,e),e.isDefaultPrevented()&&c.preventDefault()}},n.removeEvent=z.removeEventListener?function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c,!1)}:function(a,b,c){var d=\"on\"+b;a.detachEvent&&(typeof a[d]===L&&(a[d]=null),a.detachEvent(d,c))},n.Event=function(a,b){return this instanceof n.Event?(a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||void 0===a.defaultPrevented&&(a.returnValue===!1||a.getPreventDefault&&a.getPreventDefault())?bb:cb):this.type=a,b&&n.extend(this,b),this.timeStamp=a&&a.timeStamp||n.now(),void(this[n.expando]=!0)):new n.Event(a,b)},n.Event.prototype={isDefaultPrevented:cb,isPropagationStopped:cb,isImmediatePropagationStopped:cb,preventDefault:function(){var a=this.originalEvent;this.isDefaultPrevented=bb,a&&(a.preventDefault?a.preventDefault():a.returnValue=!1)},stopPropagation:function(){var a=this.originalEvent;this.isPropagationStopped=bb,a&&(a.stopPropagation&&a.stopPropagation(),a.cancelBubble=!0)},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=bb,this.stopPropagation()}},n.each({mouseenter:\"mouseover\",mouseleave:\"mouseout\"},function(a,b){n.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c,d=this,e=a.relatedTarget,f=a.handleObj;return(!e||e!==d&&!n.contains(d,e))&&(a.type=f.origType,c=f.handler.apply(this,arguments),a.type=b),c}}}),l.submitBubbles||(n.event.special.submit={setup:function(){return n.nodeName(this,\"form\")?!1:void n.event.add(this,\"click._submit keypress._submit\",function(a){var b=a.target,c=n.nodeName(b,\"input\")||n.nodeName(b,\"button\")?b.form:void 0;c&&!n._data(c,\"submitBubbles\")&&(n.event.add(c,\"submit._submit\",function(a){a._submit_bubble=!0}),n._data(c,\"submitBubbles\",!0))})},postDispatch:function(a){a._submit_bubble&&(delete a._submit_bubble,this.parentNode&&!a.isTrigger&&n.event.simulate(\"submit\",this.parentNode,a,!0))},teardown:function(){return n.nodeName(this,\"form\")?!1:void n.event.remove(this,\"._submit\")}}),l.changeBubbles||(n.event.special.change={setup:function(){return Y.test(this.nodeName)?((\"checkbox\"===this.type||\"radio\"===this.type)&&(n.event.add(this,\"propertychange._change\",function(a){\"checked\"===a.originalEvent.propertyName&&(this._just_changed=!0)}),n.event.add(this,\"click._change\",function(a){this._just_changed&&!a.isTrigger&&(this._just_changed=!1),n.event.simulate(\"change\",this,a,!0)})),!1):void n.event.add(this,\"beforeactivate._change\",function(a){var b=a.target;Y.test(b.nodeName)&&!n._data(b,\"changeBubbles\")&&(n.event.add(b,\"change._change\",function(a){!this.parentNode||a.isSimulated||a.isTrigger||n.event.simulate(\"change\",this.parentNode,a,!0)}),n._data(b,\"changeBubbles\",!0))})},handle:function(a){var b=a.target;return this!==b||a.isSimulated||a.isTrigger||\"radio\"!==b.type&&\"checkbox\"!==b.type?a.handleObj.handler.apply(this,arguments):void 0},teardown:function(){return n.event.remove(this,\"._change\"),!Y.test(this.nodeName)}}),l.focusinBubbles||n.each({focus:\"focusin\",blur:\"focusout\"},function(a,b){var c=function(a){n.event.simulate(b,a.target,n.event.fix(a),!0)};n.event.special[b]={setup:function(){var d=this.ownerDocument||this,e=n._data(d,b);e||d.addEventListener(a,c,!0),n._data(d,b,(e||0)+1)},teardown:function(){var d=this.ownerDocument||this,e=n._data(d,b)-1;e?n._data(d,b,e):(d.removeEventListener(a,c,!0),n._removeData(d,b))}}}),n.fn.extend({on:function(a,b,c,d,e){var f,g;if(\"object\"==typeof a){\"string\"!=typeof b&&(c=c||b,b=void 0);for(f in a)this.on(f,b,c,a[f],e);return this}if(null==c&&null==d?(d=b,c=b=void 0):null==d&&(\"string\"==typeof b?(d=c,c=void 0):(d=c,c=b,b=void 0)),d===!1)d=cb;else if(!d)return this;return 1===e&&(g=d,d=function(a){return n().off(a),g.apply(this,arguments)},d.guid=g.guid||(g.guid=n.guid++)),this.each(function(){n.event.add(this,a,d,c,b)})},one:function(a,b,c,d){return this.on(a,b,c,d,1)},off:function(a,b,c){var d,e;if(a&&a.preventDefault&&a.handleObj)return d=a.handleObj,n(a.delegateTarget).off(d.namespace?d.origType+\".\"+d.namespace:d.origType,d.selector,d.handler),this;if(\"object\"==typeof a){for(e in a)this.off(e,b,a[e]);return this}return(b===!1||\"function\"==typeof b)&&(c=b,b=void 0),c===!1&&(c=cb),this.each(function(){n.event.remove(this,a,c,b)})},trigger:function(a,b){return this.each(function(){n.event.trigger(a,b,this)})},triggerHandler:function(a,b){var c=this[0];return c?n.event.trigger(a,b,c,!0):void 0}});function eb(a){var b=fb.split(\"|\"),c=a.createDocumentFragment();if(c.createElement)while(b.length)c.createElement(b.pop());return c}var fb=\"abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video\",gb=/ jQuery\\d+=\"(?:null|\\d+)\"/g,hb=new RegExp(\"<(?:\"+fb+\")[\\\\s/>]\",\"i\"),ib=/^\\s+/,jb=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\\w:]+)[^>]*)\\/>/gi,kb=/<([\\w:]+)/,lb=/<tbody/i,mb=/<|&#?\\w+;/,nb=/<(?:script|style|link)/i,ob=/checked\\s*(?:[^=]|=\\s*.checked.)/i,pb=/^$|\\/(?:java|ecma)script/i,qb=/^true\\/(.*)/,rb=/^\\s*<!(?:\\[CDATA\\[|--)|(?:\\]\\]|--)>\\s*$/g,sb={option:[1,\"<select multiple='multiple'>\",\"</select>\"],legend:[1,\"<fieldset>\",\"</fieldset>\"],area:[1,\"<map>\",\"</map>\"],param:[1,\"<object>\",\"</object>\"],thead:[1,\"<table>\",\"</table>\"],tr:[2,\"<table><tbody>\",\"</tbody></table>\"],col:[2,\"<table><tbody></tbody><colgroup>\",\"</colgroup></table>\"],td:[3,\"<table><tbody><tr>\",\"</tr></tbody></table>\"],_default:l.htmlSerialize?[0,\"\",\"\"]:[1,\"X<div>\",\"</div>\"]},tb=eb(z),ub=tb.appendChild(z.createElement(\"div\"));sb.optgroup=sb.option,sb.tbody=sb.tfoot=sb.colgroup=sb.caption=sb.thead,sb.th=sb.td;function vb(a,b){var c,d,e=0,f=typeof a.getElementsByTagName!==L?a.getElementsByTagName(b||\"*\"):typeof a.querySelectorAll!==L?a.querySelectorAll(b||\"*\"):void 0;if(!f)for(f=[],c=a.childNodes||a;null!=(d=c[e]);e++)!b||n.nodeName(d,b)?f.push(d):n.merge(f,vb(d,b));return void 0===b||b&&n.nodeName(a,b)?n.merge([a],f):f}function wb(a){X.test(a.type)&&(a.defaultChecked=a.checked)}function xb(a,b){return n.nodeName(a,\"table\")&&n.nodeName(11!==b.nodeType?b:b.firstChild,\"tr\")?a.getElementsByTagName(\"tbody\")[0]||a.appendChild(a.ownerDocument.createElement(\"tbody\")):a}function yb(a){return a.type=(null!==n.find.attr(a,\"type\"))+\"/\"+a.type,a}function zb(a){var b=qb.exec(a.type);return b?a.type=b[1]:a.removeAttribute(\"type\"),a}function Ab(a,b){for(var c,d=0;null!=(c=a[d]);d++)n._data(c,\"globalEval\",!b||n._data(b[d],\"globalEval\"))}function Bb(a,b){if(1===b.nodeType&&n.hasData(a)){var c,d,e,f=n._data(a),g=n._data(b,f),h=f.events;if(h){delete g.handle,g.events={};for(c in h)for(d=0,e=h[c].length;e>d;d++)n.event.add(b,c,h[c][d])}g.data&&(g.data=n.extend({},g.data))}}function Cb(a,b){var c,d,e;if(1===b.nodeType){if(c=b.nodeName.toLowerCase(),!l.noCloneEvent&&b[n.expando]){e=n._data(b);for(d in e.events)n.removeEvent(b,d,e.handle);b.removeAttribute(n.expando)}\"script\"===c&&b.text!==a.text?(yb(b).text=a.text,zb(b)):\"object\"===c?(b.parentNode&&(b.outerHTML=a.outerHTML),l.html5Clone&&a.innerHTML&&!n.trim(b.innerHTML)&&(b.innerHTML=a.innerHTML)):\"input\"===c&&X.test(a.type)?(b.defaultChecked=b.checked=a.checked,b.value!==a.value&&(b.value=a.value)):\"option\"===c?b.defaultSelected=b.selected=a.defaultSelected:(\"input\"===c||\"textarea\"===c)&&(b.defaultValue=a.defaultValue)}}n.extend({clone:function(a,b,c){var d,e,f,g,h,i=n.contains(a.ownerDocument,a);if(l.html5Clone||n.isXMLDoc(a)||!hb.test(\"<\"+a.nodeName+\">\")?f=a.cloneNode(!0):(ub.innerHTML=a.outerHTML,ub.removeChild(f=ub.firstChild)),!(l.noCloneEvent&&l.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||n.isXMLDoc(a)))for(d=vb(f),h=vb(a),g=0;null!=(e=h[g]);++g)d[g]&&Cb(e,d[g]);if(b)if(c)for(h=h||vb(a),d=d||vb(f),g=0;null!=(e=h[g]);g++)Bb(e,d[g]);else Bb(a,f);return d=vb(f,\"script\"),d.length>0&&Ab(d,!i&&vb(a,\"script\")),d=h=e=null,f},buildFragment:function(a,b,c,d){for(var e,f,g,h,i,j,k,m=a.length,o=eb(b),p=[],q=0;m>q;q++)if(f=a[q],f||0===f)if(\"object\"===n.type(f))n.merge(p,f.nodeType?[f]:f);else if(mb.test(f)){h=h||o.appendChild(b.createElement(\"div\")),i=(kb.exec(f)||[\"\",\"\"])[1].toLowerCase(),k=sb[i]||sb._default,h.innerHTML=k[1]+f.replace(jb,\"<$1></$2>\")+k[2],e=k[0];while(e--)h=h.lastChild;if(!l.leadingWhitespace&&ib.test(f)&&p.push(b.createTextNode(ib.exec(f)[0])),!l.tbody){f=\"table\"!==i||lb.test(f)?\"<table>\"!==k[1]||lb.test(f)?0:h:h.firstChild,e=f&&f.childNodes.length;while(e--)n.nodeName(j=f.childNodes[e],\"tbody\")&&!j.childNodes.length&&f.removeChild(j)}n.merge(p,h.childNodes),h.textContent=\"\";while(h.firstChild)h.removeChild(h.firstChild);h=o.lastChild}else p.push(b.createTextNode(f));h&&o.removeChild(h),l.appendChecked||n.grep(vb(p,\"input\"),wb),q=0;while(f=p[q++])if((!d||-1===n.inArray(f,d))&&(g=n.contains(f.ownerDocument,f),h=vb(o.appendChild(f),\"script\"),g&&Ab(h),c)){e=0;while(f=h[e++])pb.test(f.type||\"\")&&c.push(f)}return h=null,o},cleanData:function(a,b){for(var d,e,f,g,h=0,i=n.expando,j=n.cache,k=l.deleteExpando,m=n.event.special;null!=(d=a[h]);h++)if((b||n.acceptData(d))&&(f=d[i],g=f&&j[f])){if(g.events)for(e in g.events)m[e]?n.event.remove(d,e):n.removeEvent(d,e,g.handle);j[f]&&(delete j[f],k?delete d[i]:typeof d.removeAttribute!==L?d.removeAttribute(i):d[i]=null,c.push(f))}}}),n.fn.extend({text:function(a){return W(this,function(a){return void 0===a?n.text(this):this.empty().append((this[0]&&this[0].ownerDocument||z).createTextNode(a))},null,a,arguments.length)},append:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=xb(this,a);b.appendChild(a)}})},prepend:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=xb(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},remove:function(a,b){for(var c,d=a?n.filter(a,this):this,e=0;null!=(c=d[e]);e++)b||1!==c.nodeType||n.cleanData(vb(c)),c.parentNode&&(b&&n.contains(c.ownerDocument,c)&&Ab(vb(c,\"script\")),c.parentNode.removeChild(c));return this},empty:function(){for(var a,b=0;null!=(a=this[b]);b++){1===a.nodeType&&n.cleanData(vb(a,!1));while(a.firstChild)a.removeChild(a.firstChild);a.options&&n.nodeName(a,\"select\")&&(a.options.length=0)}return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return n.clone(this,a,b)})},html:function(a){return W(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a)return 1===b.nodeType?b.innerHTML.replace(gb,\"\"):void 0;if(!(\"string\"!=typeof a||nb.test(a)||!l.htmlSerialize&&hb.test(a)||!l.leadingWhitespace&&ib.test(a)||sb[(kb.exec(a)||[\"\",\"\"])[1].toLowerCase()])){a=a.replace(jb,\"<$1></$2>\");try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(n.cleanData(vb(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=arguments[0];return this.domManip(arguments,function(b){a=this.parentNode,n.cleanData(vb(this)),a&&a.replaceChild(b,this)}),a&&(a.length||a.nodeType)?this:this.remove()},detach:function(a){return this.remove(a,!0)},domManip:function(a,b){a=e.apply([],a);var c,d,f,g,h,i,j=0,k=this.length,m=this,o=k-1,p=a[0],q=n.isFunction(p);if(q||k>1&&\"string\"==typeof p&&!l.checkClone&&ob.test(p))return this.each(function(c){var d=m.eq(c);q&&(a[0]=p.call(this,c,d.html())),d.domManip(a,b)});if(k&&(i=n.buildFragment(a,this[0].ownerDocument,!1,this),c=i.firstChild,1===i.childNodes.length&&(i=c),c)){for(g=n.map(vb(i,\"script\"),yb),f=g.length;k>j;j++)d=i,j!==o&&(d=n.clone(d,!0,!0),f&&n.merge(g,vb(d,\"script\"))),b.call(this[j],d,j);if(f)for(h=g[g.length-1].ownerDocument,n.map(g,zb),j=0;f>j;j++)d=g[j],pb.test(d.type||\"\")&&!n._data(d,\"globalEval\")&&n.contains(h,d)&&(d.src?n._evalUrl&&n._evalUrl(d.src):n.globalEval((d.text||d.textContent||d.innerHTML||\"\").replace(rb,\"\")));i=c=null}return this}}),n.each({appendTo:\"append\",prependTo:\"prepend\",insertBefore:\"before\",insertAfter:\"after\",replaceAll:\"replaceWith\"},function(a,b){n.fn[a]=function(a){for(var c,d=0,e=[],g=n(a),h=g.length-1;h>=d;d++)c=d===h?this:this.clone(!0),n(g[d])[b](c),f.apply(e,c.get());return this.pushStack(e)}});var Db,Eb={};function Fb(b,c){var d=n(c.createElement(b)).appendTo(c.body),e=a.getDefaultComputedStyle?a.getDefaultComputedStyle(d[0]).display:n.css(d[0],\"display\");return d.detach(),e}function Gb(a){var b=z,c=Eb[a];return c||(c=Fb(a,b),\"none\"!==c&&c||(Db=(Db||n(\"<iframe frameborder='0' width='0' height='0'/>\")).appendTo(b.documentElement),b=(Db[0].contentWindow||Db[0].contentDocument).document,b.write(),b.close(),c=Fb(a,b),Db.detach()),Eb[a]=c),c}!function(){var a,b,c=z.createElement(\"div\"),d=\"-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;padding:0;margin:0;border:0\";c.innerHTML=\"  <link/><table></table><a href='/a'>a</a><input type='checkbox'/>\",a=c.getElementsByTagName(\"a\")[0],a.style.cssText=\"float:left;opacity:.5\",l.opacity=/^0.5/.test(a.style.opacity),l.cssFloat=!!a.style.cssFloat,c.style.backgroundClip=\"content-box\",c.cloneNode(!0).style.backgroundClip=\"\",l.clearCloneStyle=\"content-box\"===c.style.backgroundClip,a=c=null,l.shrinkWrapBlocks=function(){var a,c,e,f;if(null==b){if(a=z.getElementsByTagName(\"body\")[0],!a)return;f=\"border:0;width:0;height:0;position:absolute;top:0;left:-9999px\",c=z.createElement(\"div\"),e=z.createElement(\"div\"),a.appendChild(c).appendChild(e),b=!1,typeof e.style.zoom!==L&&(e.style.cssText=d+\";width:1px;padding:1px;zoom:1\",e.innerHTML=\"<div></div>\",e.firstChild.style.width=\"5px\",b=3!==e.offsetWidth),a.removeChild(c),a=c=e=null}return b}}();var Hb=/^margin/,Ib=new RegExp(\"^(\"+T+\")(?!px)[a-z%]+$\",\"i\"),Jb,Kb,Lb=/^(top|right|bottom|left)$/;a.getComputedStyle?(Jb=function(a){return a.ownerDocument.defaultView.getComputedStyle(a,null)},Kb=function(a,b,c){var d,e,f,g,h=a.style;return c=c||Jb(a),g=c?c.getPropertyValue(b)||c[b]:void 0,c&&(\"\"!==g||n.contains(a.ownerDocument,a)||(g=n.style(a,b)),Ib.test(g)&&Hb.test(b)&&(d=h.width,e=h.minWidth,f=h.maxWidth,h.minWidth=h.maxWidth=h.width=g,g=c.width,h.width=d,h.minWidth=e,h.maxWidth=f)),void 0===g?g:g+\"\"}):z.documentElement.currentStyle&&(Jb=function(a){return a.currentStyle},Kb=function(a,b,c){var d,e,f,g,h=a.style;return c=c||Jb(a),g=c?c[b]:void 0,null==g&&h&&h[b]&&(g=h[b]),Ib.test(g)&&!Lb.test(b)&&(d=h.left,e=a.runtimeStyle,f=e&&e.left,f&&(e.left=a.currentStyle.left),h.left=\"fontSize\"===b?\"1em\":g,g=h.pixelLeft+\"px\",h.left=d,f&&(e.left=f)),void 0===g?g:g+\"\"||\"auto\"});function Mb(a,b){return{get:function(){var c=a();if(null!=c)return c?void delete this.get:(this.get=b).apply(this,arguments)}}}!function(){var b,c,d,e,f,g,h=z.createElement(\"div\"),i=\"border:0;width:0;height:0;position:absolute;top:0;left:-9999px\",j=\"-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;padding:0;margin:0;border:0\";h.innerHTML=\"  <link/><table></table><a href='/a'>a</a><input type='checkbox'/>\",b=h.getElementsByTagName(\"a\")[0],b.style.cssText=\"float:left;opacity:.5\",l.opacity=/^0.5/.test(b.style.opacity),l.cssFloat=!!b.style.cssFloat,h.style.backgroundClip=\"content-box\",h.cloneNode(!0).style.backgroundClip=\"\",l.clearCloneStyle=\"content-box\"===h.style.backgroundClip,b=h=null,n.extend(l,{reliableHiddenOffsets:function(){if(null!=c)return c;var a,b,d,e=z.createElement(\"div\"),f=z.getElementsByTagName(\"body\")[0];if(f)return e.setAttribute(\"className\",\"t\"),e.innerHTML=\"  <link/><table></table><a href='/a'>a</a><input type='checkbox'/>\",a=z.createElement(\"div\"),a.style.cssText=i,f.appendChild(a).appendChild(e),e.innerHTML=\"<table><tr><td></td><td>t</td></tr></table>\",b=e.getElementsByTagName(\"td\"),b[0].style.cssText=\"padding:0;margin:0;border:0;display:none\",d=0===b[0].offsetHeight,b[0].style.display=\"\",b[1].style.display=\"none\",c=d&&0===b[0].offsetHeight,f.removeChild(a),e=f=null,c},boxSizing:function(){return null==d&&k(),d},boxSizingReliable:function(){return null==e&&k(),e},pixelPosition:function(){return null==f&&k(),f},reliableMarginRight:function(){var b,c,d,e;if(null==g&&a.getComputedStyle){if(b=z.getElementsByTagName(\"body\")[0],!b)return;c=z.createElement(\"div\"),d=z.createElement(\"div\"),c.style.cssText=i,b.appendChild(c).appendChild(d),e=d.appendChild(z.createElement(\"div\")),e.style.cssText=d.style.cssText=j,e.style.marginRight=e.style.width=\"0\",d.style.width=\"1px\",g=!parseFloat((a.getComputedStyle(e,null)||{}).marginRight),b.removeChild(c)}return g}});function k(){var b,c,h=z.getElementsByTagName(\"body\")[0];h&&(b=z.createElement(\"div\"),c=z.createElement(\"div\"),b.style.cssText=i,h.appendChild(b).appendChild(c),c.style.cssText=\"-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;position:absolute;display:block;padding:1px;border:1px;width:4px;margin-top:1%;top:1%\",n.swap(h,null!=h.style.zoom?{zoom:1}:{},function(){d=4===c.offsetWidth}),e=!0,f=!1,g=!0,a.getComputedStyle&&(f=\"1%\"!==(a.getComputedStyle(c,null)||{}).top,e=\"4px\"===(a.getComputedStyle(c,null)||{width:\"4px\"}).width),h.removeChild(b),c=h=null)}}(),n.swap=function(a,b,c,d){var e,f,g={};for(f in b)g[f]=a.style[f],a.style[f]=b[f];e=c.apply(a,d||[]);for(f in b)a.style[f]=g[f];return e};var Nb=/alpha\\([^)]*\\)/i,Ob=/opacity\\s*=\\s*([^)]*)/,Pb=/^(none|table(?!-c[ea]).+)/,Qb=new RegExp(\"^(\"+T+\")(.*)$\",\"i\"),Rb=new RegExp(\"^([+-])=(\"+T+\")\",\"i\"),Sb={position:\"absolute\",visibility:\"hidden\",display:\"block\"},Tb={letterSpacing:0,fontWeight:400},Ub=[\"Webkit\",\"O\",\"Moz\",\"ms\"];function Vb(a,b){if(b in a)return b;var c=b.charAt(0).toUpperCase()+b.slice(1),d=b,e=Ub.length;while(e--)if(b=Ub[e]+c,b in a)return b;return d}function Wb(a,b){for(var c,d,e,f=[],g=0,h=a.length;h>g;g++)d=a[g],d.style&&(f[g]=n._data(d,\"olddisplay\"),c=d.style.display,b?(f[g]||\"none\"!==c||(d.style.display=\"\"),\"\"===d.style.display&&V(d)&&(f[g]=n._data(d,\"olddisplay\",Gb(d.nodeName)))):f[g]||(e=V(d),(c&&\"none\"!==c||!e)&&n._data(d,\"olddisplay\",e?c:n.css(d,\"display\"))));for(g=0;h>g;g++)d=a[g],d.style&&(b&&\"none\"!==d.style.display&&\"\"!==d.style.display||(d.style.display=b?f[g]||\"\":\"none\"));return a}function Xb(a,b,c){var d=Qb.exec(b);return d?Math.max(0,d[1]-(c||0))+(d[2]||\"px\"):b}function Yb(a,b,c,d,e){for(var f=c===(d?\"border\":\"content\")?4:\"width\"===b?1:0,g=0;4>f;f+=2)\"margin\"===c&&(g+=n.css(a,c+U[f],!0,e)),d?(\"content\"===c&&(g-=n.css(a,\"padding\"+U[f],!0,e)),\"margin\"!==c&&(g-=n.css(a,\"border\"+U[f]+\"Width\",!0,e))):(g+=n.css(a,\"padding\"+U[f],!0,e),\"padding\"!==c&&(g+=n.css(a,\"border\"+U[f]+\"Width\",!0,e)));return g}function Zb(a,b,c){var d=!0,e=\"width\"===b?a.offsetWidth:a.offsetHeight,f=Jb(a),g=l.boxSizing()&&\"border-box\"===n.css(a,\"boxSizing\",!1,f);if(0>=e||null==e){if(e=Kb(a,b,f),(0>e||null==e)&&(e=a.style[b]),Ib.test(e))return e;d=g&&(l.boxSizingReliable()||e===a.style[b]),e=parseFloat(e)||0}return e+Yb(a,b,c||(g?\"border\":\"content\"),d,f)+\"px\"}n.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=Kb(a,\"opacity\");return\"\"===c?\"1\":c}}}},cssNumber:{columnCount:!0,fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{\"float\":l.cssFloat?\"cssFloat\":\"styleFloat\"},style:function(a,b,c,d){if(a&&3!==a.nodeType&&8!==a.nodeType&&a.style){var e,f,g,h=n.camelCase(b),i=a.style;if(b=n.cssProps[h]||(n.cssProps[h]=Vb(i,h)),g=n.cssHooks[b]||n.cssHooks[h],void 0===c)return g&&\"get\"in g&&void 0!==(e=g.get(a,!1,d))?e:i[b];if(f=typeof c,\"string\"===f&&(e=Rb.exec(c))&&(c=(e[1]+1)*e[2]+parseFloat(n.css(a,b)),f=\"number\"),null!=c&&c===c&&(\"number\"!==f||n.cssNumber[h]||(c+=\"px\"),l.clearCloneStyle||\"\"!==c||0!==b.indexOf(\"background\")||(i[b]=\"inherit\"),!(g&&\"set\"in g&&void 0===(c=g.set(a,c,d)))))try{i[b]=\"\",i[b]=c}catch(j){}}},css:function(a,b,c,d){var e,f,g,h=n.camelCase(b);return b=n.cssProps[h]||(n.cssProps[h]=Vb(a.style,h)),g=n.cssHooks[b]||n.cssHooks[h],g&&\"get\"in g&&(f=g.get(a,!0,c)),void 0===f&&(f=Kb(a,b,d)),\"normal\"===f&&b in Tb&&(f=Tb[b]),\"\"===c||c?(e=parseFloat(f),c===!0||n.isNumeric(e)?e||0:f):f}}),n.each([\"height\",\"width\"],function(a,b){n.cssHooks[b]={get:function(a,c,d){return c?0===a.offsetWidth&&Pb.test(n.css(a,\"display\"))?n.swap(a,Sb,function(){return Zb(a,b,d)}):Zb(a,b,d):void 0},set:function(a,c,d){var e=d&&Jb(a);return Xb(a,c,d?Yb(a,b,d,l.boxSizing()&&\"border-box\"===n.css(a,\"boxSizing\",!1,e),e):0)}}}),l.opacity||(n.cssHooks.opacity={get:function(a,b){return Ob.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||\"\")?.01*parseFloat(RegExp.$1)+\"\":b?\"1\":\"\"},set:function(a,b){var c=a.style,d=a.currentStyle,e=n.isNumeric(b)?\"alpha(opacity=\"+100*b+\")\":\"\",f=d&&d.filter||c.filter||\"\";c.zoom=1,(b>=1||\"\"===b)&&\"\"===n.trim(f.replace(Nb,\"\"))&&c.removeAttribute&&(c.removeAttribute(\"filter\"),\"\"===b||d&&!d.filter)||(c.filter=Nb.test(f)?f.replace(Nb,e):f+\" \"+e)}}),n.cssHooks.marginRight=Mb(l.reliableMarginRight,function(a,b){return b?n.swap(a,{display:\"inline-block\"},Kb,[a,\"marginRight\"]):void 0}),n.each({margin:\"\",padding:\"\",border:\"Width\"},function(a,b){n.cssHooks[a+b]={expand:function(c){for(var d=0,e={},f=\"string\"==typeof c?c.split(\" \"):[c];4>d;d++)e[a+U[d]+b]=f[d]||f[d-2]||f[0];return e}},Hb.test(a)||(n.cssHooks[a+b].set=Xb)}),n.fn.extend({css:function(a,b){return W(this,function(a,b,c){var d,e,f={},g=0;if(n.isArray(b)){for(d=Jb(a),e=b.length;e>g;g++)f[b[g]]=n.css(a,b[g],!1,d);return f}return void 0!==c?n.style(a,b,c):n.css(a,b)\n},a,b,arguments.length>1)},show:function(){return Wb(this,!0)},hide:function(){return Wb(this)},toggle:function(a){return\"boolean\"==typeof a?a?this.show():this.hide():this.each(function(){V(this)?n(this).show():n(this).hide()})}});function $b(a,b,c,d,e){return new $b.prototype.init(a,b,c,d,e)}n.Tween=$b,$b.prototype={constructor:$b,init:function(a,b,c,d,e,f){this.elem=a,this.prop=c,this.easing=e||\"swing\",this.options=b,this.start=this.now=this.cur(),this.end=d,this.unit=f||(n.cssNumber[c]?\"\":\"px\")},cur:function(){var a=$b.propHooks[this.prop];return a&&a.get?a.get(this):$b.propHooks._default.get(this)},run:function(a){var b,c=$b.propHooks[this.prop];return this.pos=b=this.options.duration?n.easing[this.easing](a,this.options.duration*a,0,1,this.options.duration):a,this.now=(this.end-this.start)*b+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),c&&c.set?c.set(this):$b.propHooks._default.set(this),this}},$b.prototype.init.prototype=$b.prototype,$b.propHooks={_default:{get:function(a){var b;return null==a.elem[a.prop]||a.elem.style&&null!=a.elem.style[a.prop]?(b=n.css(a.elem,a.prop,\"\"),b&&\"auto\"!==b?b:0):a.elem[a.prop]},set:function(a){n.fx.step[a.prop]?n.fx.step[a.prop](a):a.elem.style&&(null!=a.elem.style[n.cssProps[a.prop]]||n.cssHooks[a.prop])?n.style(a.elem,a.prop,a.now+a.unit):a.elem[a.prop]=a.now}}},$b.propHooks.scrollTop=$b.propHooks.scrollLeft={set:function(a){a.elem.nodeType&&a.elem.parentNode&&(a.elem[a.prop]=a.now)}},n.easing={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2}},n.fx=$b.prototype.init,n.fx.step={};var _b,ac,bc=/^(?:toggle|show|hide)$/,cc=new RegExp(\"^(?:([+-])=|)(\"+T+\")([a-z%]*)$\",\"i\"),dc=/queueHooks$/,ec=[jc],fc={\"*\":[function(a,b){var c=this.createTween(a,b),d=c.cur(),e=cc.exec(b),f=e&&e[3]||(n.cssNumber[a]?\"\":\"px\"),g=(n.cssNumber[a]||\"px\"!==f&&+d)&&cc.exec(n.css(c.elem,a)),h=1,i=20;if(g&&g[3]!==f){f=f||g[3],e=e||[],g=+d||1;do h=h||\".5\",g/=h,n.style(c.elem,a,g+f);while(h!==(h=c.cur()/d)&&1!==h&&--i)}return e&&(g=c.start=+g||+d||0,c.unit=f,c.end=e[1]?g+(e[1]+1)*e[2]:+e[2]),c}]};function gc(){return setTimeout(function(){_b=void 0}),_b=n.now()}function hc(a,b){var c,d={height:a},e=0;for(b=b?1:0;4>e;e+=2-b)c=U[e],d[\"margin\"+c]=d[\"padding\"+c]=a;return b&&(d.opacity=d.width=a),d}function ic(a,b,c){for(var d,e=(fc[b]||[]).concat(fc[\"*\"]),f=0,g=e.length;g>f;f++)if(d=e[f].call(c,b,a))return d}function jc(a,b,c){var d,e,f,g,h,i,j,k,m=this,o={},p=a.style,q=a.nodeType&&V(a),r=n._data(a,\"fxshow\");c.queue||(h=n._queueHooks(a,\"fx\"),null==h.unqueued&&(h.unqueued=0,i=h.empty.fire,h.empty.fire=function(){h.unqueued||i()}),h.unqueued++,m.always(function(){m.always(function(){h.unqueued--,n.queue(a,\"fx\").length||h.empty.fire()})})),1===a.nodeType&&(\"height\"in b||\"width\"in b)&&(c.overflow=[p.overflow,p.overflowX,p.overflowY],j=n.css(a,\"display\"),k=Gb(a.nodeName),\"none\"===j&&(j=k),\"inline\"===j&&\"none\"===n.css(a,\"float\")&&(l.inlineBlockNeedsLayout&&\"inline\"!==k?p.zoom=1:p.display=\"inline-block\")),c.overflow&&(p.overflow=\"hidden\",l.shrinkWrapBlocks()||m.always(function(){p.overflow=c.overflow[0],p.overflowX=c.overflow[1],p.overflowY=c.overflow[2]}));for(d in b)if(e=b[d],bc.exec(e)){if(delete b[d],f=f||\"toggle\"===e,e===(q?\"hide\":\"show\")){if(\"show\"!==e||!r||void 0===r[d])continue;q=!0}o[d]=r&&r[d]||n.style(a,d)}if(!n.isEmptyObject(o)){r?\"hidden\"in r&&(q=r.hidden):r=n._data(a,\"fxshow\",{}),f&&(r.hidden=!q),q?n(a).show():m.done(function(){n(a).hide()}),m.done(function(){var b;n._removeData(a,\"fxshow\");for(b in o)n.style(a,b,o[b])});for(d in o)g=ic(q?r[d]:0,d,m),d in r||(r[d]=g.start,q&&(g.end=g.start,g.start=\"width\"===d||\"height\"===d?1:0))}}function kc(a,b){var c,d,e,f,g;for(c in a)if(d=n.camelCase(c),e=b[d],f=a[c],n.isArray(f)&&(e=f[1],f=a[c]=f[0]),c!==d&&(a[d]=f,delete a[c]),g=n.cssHooks[d],g&&\"expand\"in g){f=g.expand(f),delete a[d];for(c in f)c in a||(a[c]=f[c],b[c]=e)}else b[d]=e}function lc(a,b,c){var d,e,f=0,g=ec.length,h=n.Deferred().always(function(){delete i.elem}),i=function(){if(e)return!1;for(var b=_b||gc(),c=Math.max(0,j.startTime+j.duration-b),d=c/j.duration||0,f=1-d,g=0,i=j.tweens.length;i>g;g++)j.tweens[g].run(f);return h.notifyWith(a,[j,f,c]),1>f&&i?c:(h.resolveWith(a,[j]),!1)},j=h.promise({elem:a,props:n.extend({},b),opts:n.extend(!0,{specialEasing:{}},c),originalProperties:b,originalOptions:c,startTime:_b||gc(),duration:c.duration,tweens:[],createTween:function(b,c){var d=n.Tween(a,j.opts,b,c,j.opts.specialEasing[b]||j.opts.easing);return j.tweens.push(d),d},stop:function(b){var c=0,d=b?j.tweens.length:0;if(e)return this;for(e=!0;d>c;c++)j.tweens[c].run(1);return b?h.resolveWith(a,[j,b]):h.rejectWith(a,[j,b]),this}}),k=j.props;for(kc(k,j.opts.specialEasing);g>f;f++)if(d=ec[f].call(j,a,k,j.opts))return d;return n.map(k,ic,j),n.isFunction(j.opts.start)&&j.opts.start.call(a,j),n.fx.timer(n.extend(i,{elem:a,anim:j,queue:j.opts.queue})),j.progress(j.opts.progress).done(j.opts.done,j.opts.complete).fail(j.opts.fail).always(j.opts.always)}n.Animation=n.extend(lc,{tweener:function(a,b){n.isFunction(a)?(b=a,a=[\"*\"]):a=a.split(\" \");for(var c,d=0,e=a.length;e>d;d++)c=a[d],fc[c]=fc[c]||[],fc[c].unshift(b)},prefilter:function(a,b){b?ec.unshift(a):ec.push(a)}}),n.speed=function(a,b,c){var d=a&&\"object\"==typeof a?n.extend({},a):{complete:c||!c&&b||n.isFunction(a)&&a,duration:a,easing:c&&b||b&&!n.isFunction(b)&&b};return d.duration=n.fx.off?0:\"number\"==typeof d.duration?d.duration:d.duration in n.fx.speeds?n.fx.speeds[d.duration]:n.fx.speeds._default,(null==d.queue||d.queue===!0)&&(d.queue=\"fx\"),d.old=d.complete,d.complete=function(){n.isFunction(d.old)&&d.old.call(this),d.queue&&n.dequeue(this,d.queue)},d},n.fn.extend({fadeTo:function(a,b,c,d){return this.filter(V).css(\"opacity\",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){var e=n.isEmptyObject(a),f=n.speed(b,c,d),g=function(){var b=lc(this,n.extend({},a),f);(e||n._data(this,\"finish\"))&&b.stop(!0)};return g.finish=g,e||f.queue===!1?this.each(g):this.queue(f.queue,g)},stop:function(a,b,c){var d=function(a){var b=a.stop;delete a.stop,b(c)};return\"string\"!=typeof a&&(c=b,b=a,a=void 0),b&&a!==!1&&this.queue(a||\"fx\",[]),this.each(function(){var b=!0,e=null!=a&&a+\"queueHooks\",f=n.timers,g=n._data(this);if(e)g[e]&&g[e].stop&&d(g[e]);else for(e in g)g[e]&&g[e].stop&&dc.test(e)&&d(g[e]);for(e=f.length;e--;)f[e].elem!==this||null!=a&&f[e].queue!==a||(f[e].anim.stop(c),b=!1,f.splice(e,1));(b||!c)&&n.dequeue(this,a)})},finish:function(a){return a!==!1&&(a=a||\"fx\"),this.each(function(){var b,c=n._data(this),d=c[a+\"queue\"],e=c[a+\"queueHooks\"],f=n.timers,g=d?d.length:0;for(c.finish=!0,n.queue(this,a,[]),e&&e.stop&&e.stop.call(this,!0),b=f.length;b--;)f[b].elem===this&&f[b].queue===a&&(f[b].anim.stop(!0),f.splice(b,1));for(b=0;g>b;b++)d[b]&&d[b].finish&&d[b].finish.call(this);delete c.finish})}}),n.each([\"toggle\",\"show\",\"hide\"],function(a,b){var c=n.fn[b];n.fn[b]=function(a,d,e){return null==a||\"boolean\"==typeof a?c.apply(this,arguments):this.animate(hc(b,!0),a,d,e)}}),n.each({slideDown:hc(\"show\"),slideUp:hc(\"hide\"),slideToggle:hc(\"toggle\"),fadeIn:{opacity:\"show\"},fadeOut:{opacity:\"hide\"},fadeToggle:{opacity:\"toggle\"}},function(a,b){n.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),n.timers=[],n.fx.tick=function(){var a,b=n.timers,c=0;for(_b=n.now();c<b.length;c++)a=b[c],a()||b[c]!==a||b.splice(c--,1);b.length||n.fx.stop(),_b=void 0},n.fx.timer=function(a){n.timers.push(a),a()?n.fx.start():n.timers.pop()},n.fx.interval=13,n.fx.start=function(){ac||(ac=setInterval(n.fx.tick,n.fx.interval))},n.fx.stop=function(){clearInterval(ac),ac=null},n.fx.speeds={slow:600,fast:200,_default:400},n.fn.delay=function(a,b){return a=n.fx?n.fx.speeds[a]||a:a,b=b||\"fx\",this.queue(b,function(b,c){var d=setTimeout(b,a);c.stop=function(){clearTimeout(d)}})},function(){var a,b,c,d,e=z.createElement(\"div\");e.setAttribute(\"className\",\"t\"),e.innerHTML=\"  <link/><table></table><a href='/a'>a</a><input type='checkbox'/>\",a=e.getElementsByTagName(\"a\")[0],c=z.createElement(\"select\"),d=c.appendChild(z.createElement(\"option\")),b=e.getElementsByTagName(\"input\")[0],a.style.cssText=\"top:1px\",l.getSetAttribute=\"t\"!==e.className,l.style=/top/.test(a.getAttribute(\"style\")),l.hrefNormalized=\"/a\"===a.getAttribute(\"href\"),l.checkOn=!!b.value,l.optSelected=d.selected,l.enctype=!!z.createElement(\"form\").enctype,c.disabled=!0,l.optDisabled=!d.disabled,b=z.createElement(\"input\"),b.setAttribute(\"value\",\"\"),l.input=\"\"===b.getAttribute(\"value\"),b.value=\"t\",b.setAttribute(\"type\",\"radio\"),l.radioValue=\"t\"===b.value,a=b=c=d=e=null}();var mc=/\\r/g;n.fn.extend({val:function(a){var b,c,d,e=this[0];{if(arguments.length)return d=n.isFunction(a),this.each(function(c){var e;1===this.nodeType&&(e=d?a.call(this,c,n(this).val()):a,null==e?e=\"\":\"number\"==typeof e?e+=\"\":n.isArray(e)&&(e=n.map(e,function(a){return null==a?\"\":a+\"\"})),b=n.valHooks[this.type]||n.valHooks[this.nodeName.toLowerCase()],b&&\"set\"in b&&void 0!==b.set(this,e,\"value\")||(this.value=e))});if(e)return b=n.valHooks[e.type]||n.valHooks[e.nodeName.toLowerCase()],b&&\"get\"in b&&void 0!==(c=b.get(e,\"value\"))?c:(c=e.value,\"string\"==typeof c?c.replace(mc,\"\"):null==c?\"\":c)}}}),n.extend({valHooks:{option:{get:function(a){var b=n.find.attr(a,\"value\");return null!=b?b:n.text(a)}},select:{get:function(a){for(var b,c,d=a.options,e=a.selectedIndex,f=\"select-one\"===a.type||0>e,g=f?null:[],h=f?e+1:d.length,i=0>e?h:f?e:0;h>i;i++)if(c=d[i],!(!c.selected&&i!==e||(l.optDisabled?c.disabled:null!==c.getAttribute(\"disabled\"))||c.parentNode.disabled&&n.nodeName(c.parentNode,\"optgroup\"))){if(b=n(c).val(),f)return b;g.push(b)}return g},set:function(a,b){var c,d,e=a.options,f=n.makeArray(b),g=e.length;while(g--)if(d=e[g],n.inArray(n.valHooks.option.get(d),f)>=0)try{d.selected=c=!0}catch(h){d.scrollHeight}else d.selected=!1;return c||(a.selectedIndex=-1),e}}}}),n.each([\"radio\",\"checkbox\"],function(){n.valHooks[this]={set:function(a,b){return n.isArray(b)?a.checked=n.inArray(n(a).val(),b)>=0:void 0}},l.checkOn||(n.valHooks[this].get=function(a){return null===a.getAttribute(\"value\")?\"on\":a.value})});var nc,oc,pc=n.expr.attrHandle,qc=/^(?:checked|selected)$/i,rc=l.getSetAttribute,sc=l.input;n.fn.extend({attr:function(a,b){return W(this,n.attr,a,b,arguments.length>1)},removeAttr:function(a){return this.each(function(){n.removeAttr(this,a)})}}),n.extend({attr:function(a,b,c){var d,e,f=a.nodeType;if(a&&3!==f&&8!==f&&2!==f)return typeof a.getAttribute===L?n.prop(a,b,c):(1===f&&n.isXMLDoc(a)||(b=b.toLowerCase(),d=n.attrHooks[b]||(n.expr.match.bool.test(b)?oc:nc)),void 0===c?d&&\"get\"in d&&null!==(e=d.get(a,b))?e:(e=n.find.attr(a,b),null==e?void 0:e):null!==c?d&&\"set\"in d&&void 0!==(e=d.set(a,c,b))?e:(a.setAttribute(b,c+\"\"),c):void n.removeAttr(a,b))},removeAttr:function(a,b){var c,d,e=0,f=b&&b.match(F);if(f&&1===a.nodeType)while(c=f[e++])d=n.propFix[c]||c,n.expr.match.bool.test(c)?sc&&rc||!qc.test(c)?a[d]=!1:a[n.camelCase(\"default-\"+c)]=a[d]=!1:n.attr(a,c,\"\"),a.removeAttribute(rc?c:d)},attrHooks:{type:{set:function(a,b){if(!l.radioValue&&\"radio\"===b&&n.nodeName(a,\"input\")){var c=a.value;return a.setAttribute(\"type\",b),c&&(a.value=c),b}}}}}),oc={set:function(a,b,c){return b===!1?n.removeAttr(a,c):sc&&rc||!qc.test(c)?a.setAttribute(!rc&&n.propFix[c]||c,c):a[n.camelCase(\"default-\"+c)]=a[c]=!0,c}},n.each(n.expr.match.bool.source.match(/\\w+/g),function(a,b){var c=pc[b]||n.find.attr;pc[b]=sc&&rc||!qc.test(b)?function(a,b,d){var e,f;return d||(f=pc[b],pc[b]=e,e=null!=c(a,b,d)?b.toLowerCase():null,pc[b]=f),e}:function(a,b,c){return c?void 0:a[n.camelCase(\"default-\"+b)]?b.toLowerCase():null}}),sc&&rc||(n.attrHooks.value={set:function(a,b,c){return n.nodeName(a,\"input\")?void(a.defaultValue=b):nc&&nc.set(a,b,c)}}),rc||(nc={set:function(a,b,c){var d=a.getAttributeNode(c);return d||a.setAttributeNode(d=a.ownerDocument.createAttribute(c)),d.value=b+=\"\",\"value\"===c||b===a.getAttribute(c)?b:void 0}},pc.id=pc.name=pc.coords=function(a,b,c){var d;return c?void 0:(d=a.getAttributeNode(b))&&\"\"!==d.value?d.value:null},n.valHooks.button={get:function(a,b){var c=a.getAttributeNode(b);return c&&c.specified?c.value:void 0},set:nc.set},n.attrHooks.contenteditable={set:function(a,b,c){nc.set(a,\"\"===b?!1:b,c)}},n.each([\"width\",\"height\"],function(a,b){n.attrHooks[b]={set:function(a,c){return\"\"===c?(a.setAttribute(b,\"auto\"),c):void 0}}})),l.style||(n.attrHooks.style={get:function(a){return a.style.cssText||void 0},set:function(a,b){return a.style.cssText=b+\"\"}});var tc=/^(?:input|select|textarea|button|object)$/i,uc=/^(?:a|area)$/i;n.fn.extend({prop:function(a,b){return W(this,n.prop,a,b,arguments.length>1)},removeProp:function(a){return a=n.propFix[a]||a,this.each(function(){try{this[a]=void 0,delete this[a]}catch(b){}})}}),n.extend({propFix:{\"for\":\"htmlFor\",\"class\":\"className\"},prop:function(a,b,c){var d,e,f,g=a.nodeType;if(a&&3!==g&&8!==g&&2!==g)return f=1!==g||!n.isXMLDoc(a),f&&(b=n.propFix[b]||b,e=n.propHooks[b]),void 0!==c?e&&\"set\"in e&&void 0!==(d=e.set(a,c,b))?d:a[b]=c:e&&\"get\"in e&&null!==(d=e.get(a,b))?d:a[b]},propHooks:{tabIndex:{get:function(a){var b=n.find.attr(a,\"tabindex\");return b?parseInt(b,10):tc.test(a.nodeName)||uc.test(a.nodeName)&&a.href?0:-1}}}}),l.hrefNormalized||n.each([\"href\",\"src\"],function(a,b){n.propHooks[b]={get:function(a){return a.getAttribute(b,4)}}}),l.optSelected||(n.propHooks.selected={get:function(a){var b=a.parentNode;return b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex),null}}),n.each([\"tabIndex\",\"readOnly\",\"maxLength\",\"cellSpacing\",\"cellPadding\",\"rowSpan\",\"colSpan\",\"useMap\",\"frameBorder\",\"contentEditable\"],function(){n.propFix[this.toLowerCase()]=this}),l.enctype||(n.propFix.enctype=\"encoding\");var vc=/[\\t\\r\\n\\f]/g;n.fn.extend({addClass:function(a){var b,c,d,e,f,g,h=0,i=this.length,j=\"string\"==typeof a&&a;if(n.isFunction(a))return this.each(function(b){n(this).addClass(a.call(this,b,this.className))});if(j)for(b=(a||\"\").match(F)||[];i>h;h++)if(c=this[h],d=1===c.nodeType&&(c.className?(\" \"+c.className+\" \").replace(vc,\" \"):\" \")){f=0;while(e=b[f++])d.indexOf(\" \"+e+\" \")<0&&(d+=e+\" \");g=n.trim(d),c.className!==g&&(c.className=g)}return this},removeClass:function(a){var b,c,d,e,f,g,h=0,i=this.length,j=0===arguments.length||\"string\"==typeof a&&a;if(n.isFunction(a))return this.each(function(b){n(this).removeClass(a.call(this,b,this.className))});if(j)for(b=(a||\"\").match(F)||[];i>h;h++)if(c=this[h],d=1===c.nodeType&&(c.className?(\" \"+c.className+\" \").replace(vc,\" \"):\"\")){f=0;while(e=b[f++])while(d.indexOf(\" \"+e+\" \")>=0)d=d.replace(\" \"+e+\" \",\" \");g=a?n.trim(d):\"\",c.className!==g&&(c.className=g)}return this},toggleClass:function(a,b){var c=typeof a;return\"boolean\"==typeof b&&\"string\"===c?b?this.addClass(a):this.removeClass(a):this.each(n.isFunction(a)?function(c){n(this).toggleClass(a.call(this,c,this.className,b),b)}:function(){if(\"string\"===c){var b,d=0,e=n(this),f=a.match(F)||[];while(b=f[d++])e.hasClass(b)?e.removeClass(b):e.addClass(b)}else(c===L||\"boolean\"===c)&&(this.className&&n._data(this,\"__className__\",this.className),this.className=this.className||a===!1?\"\":n._data(this,\"__className__\")||\"\")})},hasClass:function(a){for(var b=\" \"+a+\" \",c=0,d=this.length;d>c;c++)if(1===this[c].nodeType&&(\" \"+this[c].className+\" \").replace(vc,\" \").indexOf(b)>=0)return!0;return!1}}),n.each(\"blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu\".split(\" \"),function(a,b){n.fn[b]=function(a,c){return arguments.length>0?this.on(b,null,a,c):this.trigger(b)}}),n.fn.extend({hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)},bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return 1===arguments.length?this.off(a,\"**\"):this.off(b,a||\"**\",c)}});var wc=n.now(),xc=/\\?/,yc=/(,)|(\\[|{)|(}|])|\"(?:[^\"\\\\\\r\\n]|\\\\[\"\\\\\\/bfnrt]|\\\\u[\\da-fA-F]{4})*\"\\s*:?|true|false|null|-?(?!0\\d)\\d+(?:\\.\\d+|)(?:[eE][+-]?\\d+|)/g;n.parseJSON=function(b){if(a.JSON&&a.JSON.parse)return a.JSON.parse(b+\"\");var c,d=null,e=n.trim(b+\"\");return e&&!n.trim(e.replace(yc,function(a,b,e,f){return c&&b&&(d=0),0===d?a:(c=e||b,d+=!f-!e,\"\")}))?Function(\"return \"+e)():n.error(\"Invalid JSON: \"+b)},n.parseXML=function(b){var c,d;if(!b||\"string\"!=typeof b)return null;try{a.DOMParser?(d=new DOMParser,c=d.parseFromString(b,\"text/xml\")):(c=new ActiveXObject(\"Microsoft.XMLDOM\"),c.async=\"false\",c.loadXML(b))}catch(e){c=void 0}return c&&c.documentElement&&!c.getElementsByTagName(\"parsererror\").length||n.error(\"Invalid XML: \"+b),c};var zc,Ac,Bc=/#.*$/,Cc=/([?&])_=[^&]*/,Dc=/^(.*?):[ \\t]*([^\\r\\n]*)\\r?$/gm,Ec=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Fc=/^(?:GET|HEAD)$/,Gc=/^\\/\\//,Hc=/^([\\w.+-]+:)(?:\\/\\/(?:[^\\/?#]*@|)([^\\/?#:]*)(?::(\\d+)|)|)/,Ic={},Jc={},Kc=\"*/\".concat(\"*\");try{Ac=location.href}catch(Lc){Ac=z.createElement(\"a\"),Ac.href=\"\",Ac=Ac.href}zc=Hc.exec(Ac.toLowerCase())||[];function Mc(a){return function(b,c){\"string\"!=typeof b&&(c=b,b=\"*\");var d,e=0,f=b.toLowerCase().match(F)||[];if(n.isFunction(c))while(d=f[e++])\"+\"===d.charAt(0)?(d=d.slice(1)||\"*\",(a[d]=a[d]||[]).unshift(c)):(a[d]=a[d]||[]).push(c)}}function Nc(a,b,c,d){var e={},f=a===Jc;function g(h){var i;return e[h]=!0,n.each(a[h]||[],function(a,h){var j=h(b,c,d);return\"string\"!=typeof j||f||e[j]?f?!(i=j):void 0:(b.dataTypes.unshift(j),g(j),!1)}),i}return g(b.dataTypes[0])||!e[\"*\"]&&g(\"*\")}function Oc(a,b){var c,d,e=n.ajaxSettings.flatOptions||{};for(d in b)void 0!==b[d]&&((e[d]?a:c||(c={}))[d]=b[d]);return c&&n.extend(!0,a,c),a}function Pc(a,b,c){var d,e,f,g,h=a.contents,i=a.dataTypes;while(\"*\"===i[0])i.shift(),void 0===e&&(e=a.mimeType||b.getResponseHeader(\"Content-Type\"));if(e)for(g in h)if(h[g]&&h[g].test(e)){i.unshift(g);break}if(i[0]in c)f=i[0];else{for(g in c){if(!i[0]||a.converters[g+\" \"+i[0]]){f=g;break}d||(d=g)}f=f||d}return f?(f!==i[0]&&i.unshift(f),c[f]):void 0}function Qc(a,b,c,d){var e,f,g,h,i,j={},k=a.dataTypes.slice();if(k[1])for(g in a.converters)j[g.toLowerCase()]=a.converters[g];f=k.shift();while(f)if(a.responseFields[f]&&(c[a.responseFields[f]]=b),!i&&d&&a.dataFilter&&(b=a.dataFilter(b,a.dataType)),i=f,f=k.shift())if(\"*\"===f)f=i;else if(\"*\"!==i&&i!==f){if(g=j[i+\" \"+f]||j[\"* \"+f],!g)for(e in j)if(h=e.split(\" \"),h[1]===f&&(g=j[i+\" \"+h[0]]||j[\"* \"+h[0]])){g===!0?g=j[e]:j[e]!==!0&&(f=h[0],k.unshift(h[1]));break}if(g!==!0)if(g&&a[\"throws\"])b=g(b);else try{b=g(b)}catch(l){return{state:\"parsererror\",error:g?l:\"No conversion from \"+i+\" to \"+f}}}return{state:\"success\",data:b}}n.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Ac,type:\"GET\",isLocal:Ec.test(zc[1]),global:!0,processData:!0,async:!0,contentType:\"application/x-www-form-urlencoded; charset=UTF-8\",accepts:{\"*\":Kc,text:\"text/plain\",html:\"text/html\",xml:\"application/xml, text/xml\",json:\"application/json, text/javascript\"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:\"responseXML\",text:\"responseText\",json:\"responseJSON\"},converters:{\"* text\":String,\"text html\":!0,\"text json\":n.parseJSON,\"text xml\":n.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(a,b){return b?Oc(Oc(a,n.ajaxSettings),b):Oc(n.ajaxSettings,a)},ajaxPrefilter:Mc(Ic),ajaxTransport:Mc(Jc),ajax:function(a,b){\"object\"==typeof a&&(b=a,a=void 0),b=b||{};var c,d,e,f,g,h,i,j,k=n.ajaxSetup({},b),l=k.context||k,m=k.context&&(l.nodeType||l.jquery)?n(l):n.event,o=n.Deferred(),p=n.Callbacks(\"once memory\"),q=k.statusCode||{},r={},s={},t=0,u=\"canceled\",v={readyState:0,getResponseHeader:function(a){var b;if(2===t){if(!j){j={};while(b=Dc.exec(f))j[b[1].toLowerCase()]=b[2]}b=j[a.toLowerCase()]}return null==b?null:b},getAllResponseHeaders:function(){return 2===t?f:null},setRequestHeader:function(a,b){var c=a.toLowerCase();return t||(a=s[c]=s[c]||a,r[a]=b),this},overrideMimeType:function(a){return t||(k.mimeType=a),this},statusCode:function(a){var b;if(a)if(2>t)for(b in a)q[b]=[q[b],a[b]];else v.always(a[v.status]);return this},abort:function(a){var b=a||u;return i&&i.abort(b),x(0,b),this}};if(o.promise(v).complete=p.add,v.success=v.done,v.error=v.fail,k.url=((a||k.url||Ac)+\"\").replace(Bc,\"\").replace(Gc,zc[1]+\"//\"),k.type=b.method||b.type||k.method||k.type,k.dataTypes=n.trim(k.dataType||\"*\").toLowerCase().match(F)||[\"\"],null==k.crossDomain&&(c=Hc.exec(k.url.toLowerCase()),k.crossDomain=!(!c||c[1]===zc[1]&&c[2]===zc[2]&&(c[3]||(\"http:\"===c[1]?\"80\":\"443\"))===(zc[3]||(\"http:\"===zc[1]?\"80\":\"443\")))),k.data&&k.processData&&\"string\"!=typeof k.data&&(k.data=n.param(k.data,k.traditional)),Nc(Ic,k,b,v),2===t)return v;h=k.global,h&&0===n.active++&&n.event.trigger(\"ajaxStart\"),k.type=k.type.toUpperCase(),k.hasContent=!Fc.test(k.type),e=k.url,k.hasContent||(k.data&&(e=k.url+=(xc.test(e)?\"&\":\"?\")+k.data,delete k.data),k.cache===!1&&(k.url=Cc.test(e)?e.replace(Cc,\"$1_=\"+wc++):e+(xc.test(e)?\"&\":\"?\")+\"_=\"+wc++)),k.ifModified&&(n.lastModified[e]&&v.setRequestHeader(\"If-Modified-Since\",n.lastModified[e]),n.etag[e]&&v.setRequestHeader(\"If-None-Match\",n.etag[e])),(k.data&&k.hasContent&&k.contentType!==!1||b.contentType)&&v.setRequestHeader(\"Content-Type\",k.contentType),v.setRequestHeader(\"Accept\",k.dataTypes[0]&&k.accepts[k.dataTypes[0]]?k.accepts[k.dataTypes[0]]+(\"*\"!==k.dataTypes[0]?\", \"+Kc+\"; q=0.01\":\"\"):k.accepts[\"*\"]);for(d in k.headers)v.setRequestHeader(d,k.headers[d]);if(k.beforeSend&&(k.beforeSend.call(l,v,k)===!1||2===t))return v.abort();u=\"abort\";for(d in{success:1,error:1,complete:1})v[d](k[d]);if(i=Nc(Jc,k,b,v)){v.readyState=1,h&&m.trigger(\"ajaxSend\",[v,k]),k.async&&k.timeout>0&&(g=setTimeout(function(){v.abort(\"timeout\")},k.timeout));try{t=1,i.send(r,x)}catch(w){if(!(2>t))throw w;x(-1,w)}}else x(-1,\"No Transport\");function x(a,b,c,d){var j,r,s,u,w,x=b;2!==t&&(t=2,g&&clearTimeout(g),i=void 0,f=d||\"\",v.readyState=a>0?4:0,j=a>=200&&300>a||304===a,c&&(u=Pc(k,v,c)),u=Qc(k,u,v,j),j?(k.ifModified&&(w=v.getResponseHeader(\"Last-Modified\"),w&&(n.lastModified[e]=w),w=v.getResponseHeader(\"etag\"),w&&(n.etag[e]=w)),204===a||\"HEAD\"===k.type?x=\"nocontent\":304===a?x=\"notmodified\":(x=u.state,r=u.data,s=u.error,j=!s)):(s=x,(a||!x)&&(x=\"error\",0>a&&(a=0))),v.status=a,v.statusText=(b||x)+\"\",j?o.resolveWith(l,[r,x,v]):o.rejectWith(l,[v,x,s]),v.statusCode(q),q=void 0,h&&m.trigger(j?\"ajaxSuccess\":\"ajaxError\",[v,k,j?r:s]),p.fireWith(l,[v,x]),h&&(m.trigger(\"ajaxComplete\",[v,k]),--n.active||n.event.trigger(\"ajaxStop\")))}return v},getJSON:function(a,b,c){return n.get(a,b,c,\"json\")},getScript:function(a,b){return n.get(a,void 0,b,\"script\")}}),n.each([\"get\",\"post\"],function(a,b){n[b]=function(a,c,d,e){return n.isFunction(c)&&(e=e||d,d=c,c=void 0),n.ajax({url:a,type:b,dataType:e,data:c,success:d})}}),n.each([\"ajaxStart\",\"ajaxStop\",\"ajaxComplete\",\"ajaxError\",\"ajaxSuccess\",\"ajaxSend\"],function(a,b){n.fn[b]=function(a){return this.on(b,a)}}),n._evalUrl=function(a){return n.ajax({url:a,type:\"GET\",dataType:\"script\",async:!1,global:!1,\"throws\":!0})},n.fn.extend({wrapAll:function(a){if(n.isFunction(a))return this.each(function(b){n(this).wrapAll(a.call(this,b))});if(this[0]){var b=n(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&1===a.firstChild.nodeType)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){return this.each(n.isFunction(a)?function(b){n(this).wrapInner(a.call(this,b))}:function(){var b=n(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=n.isFunction(a);return this.each(function(c){n(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){n.nodeName(this,\"body\")||n(this).replaceWith(this.childNodes)}).end()}}),n.expr.filters.hidden=function(a){return a.offsetWidth<=0&&a.offsetHeight<=0||!l.reliableHiddenOffsets()&&\"none\"===(a.style&&a.style.display||n.css(a,\"display\"))},n.expr.filters.visible=function(a){return!n.expr.filters.hidden(a)};var Rc=/%20/g,Sc=/\\[\\]$/,Tc=/\\r?\\n/g,Uc=/^(?:submit|button|image|reset|file)$/i,Vc=/^(?:input|select|textarea|keygen)/i;function Wc(a,b,c,d){var e;if(n.isArray(b))n.each(b,function(b,e){c||Sc.test(a)?d(a,e):Wc(a+\"[\"+(\"object\"==typeof e?b:\"\")+\"]\",e,c,d)});else if(c||\"object\"!==n.type(b))d(a,b);else for(e in b)Wc(a+\"[\"+e+\"]\",b[e],c,d)}n.param=function(a,b){var c,d=[],e=function(a,b){b=n.isFunction(b)?b():null==b?\"\":b,d[d.length]=encodeURIComponent(a)+\"=\"+encodeURIComponent(b)};if(void 0===b&&(b=n.ajaxSettings&&n.ajaxSettings.traditional),n.isArray(a)||a.jquery&&!n.isPlainObject(a))n.each(a,function(){e(this.name,this.value)});else for(c in a)Wc(c,a[c],b,e);return d.join(\"&\").replace(Rc,\"+\")},n.fn.extend({serialize:function(){return n.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var a=n.prop(this,\"elements\");return a?n.makeArray(a):this}).filter(function(){var a=this.type;return this.name&&!n(this).is(\":disabled\")&&Vc.test(this.nodeName)&&!Uc.test(a)&&(this.checked||!X.test(a))}).map(function(a,b){var c=n(this).val();return null==c?null:n.isArray(c)?n.map(c,function(a){return{name:b.name,value:a.replace(Tc,\"\\r\\n\")}}):{name:b.name,value:c.replace(Tc,\"\\r\\n\")}}).get()}}),n.ajaxSettings.xhr=void 0!==a.ActiveXObject?function(){return!this.isLocal&&/^(get|post|head|put|delete|options)$/i.test(this.type)&&$c()||_c()}:$c;var Xc=0,Yc={},Zc=n.ajaxSettings.xhr();a.ActiveXObject&&n(a).on(\"unload\",function(){for(var a in Yc)Yc[a](void 0,!0)}),l.cors=!!Zc&&\"withCredentials\"in Zc,Zc=l.ajax=!!Zc,Zc&&n.ajaxTransport(function(a){if(!a.crossDomain||l.cors){var b;return{send:function(c,d){var e,f=a.xhr(),g=++Xc;if(f.open(a.type,a.url,a.async,a.username,a.password),a.xhrFields)for(e in a.xhrFields)f[e]=a.xhrFields[e];a.mimeType&&f.overrideMimeType&&f.overrideMimeType(a.mimeType),a.crossDomain||c[\"X-Requested-With\"]||(c[\"X-Requested-With\"]=\"XMLHttpRequest\");for(e in c)void 0!==c[e]&&f.setRequestHeader(e,c[e]+\"\");f.send(a.hasContent&&a.data||null),b=function(c,e){var h,i,j;if(b&&(e||4===f.readyState))if(delete Yc[g],b=void 0,f.onreadystatechange=n.noop,e)4!==f.readyState&&f.abort();else{j={},h=f.status,\"string\"==typeof f.responseText&&(j.text=f.responseText);try{i=f.statusText}catch(k){i=\"\"}h||!a.isLocal||a.crossDomain?1223===h&&(h=204):h=j.text?200:404}j&&d(h,i,j,f.getAllResponseHeaders())},a.async?4===f.readyState?setTimeout(b):f.onreadystatechange=Yc[g]=b:b()},abort:function(){b&&b(void 0,!0)}}}});function $c(){try{return new a.XMLHttpRequest}catch(b){}}function _c(){try{return new a.ActiveXObject(\"Microsoft.XMLHTTP\")}catch(b){}}n.ajaxSetup({accepts:{script:\"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript\"},contents:{script:/(?:java|ecma)script/},converters:{\"text script\":function(a){return n.globalEval(a),a}}}),n.ajaxPrefilter(\"script\",function(a){void 0===a.cache&&(a.cache=!1),a.crossDomain&&(a.type=\"GET\",a.global=!1)}),n.ajaxTransport(\"script\",function(a){if(a.crossDomain){var b,c=z.head||n(\"head\")[0]||z.documentElement;return{send:function(d,e){b=z.createElement(\"script\"),b.async=!0,a.scriptCharset&&(b.charset=a.scriptCharset),b.src=a.url,b.onload=b.onreadystatechange=function(a,c){(c||!b.readyState||/loaded|complete/.test(b.readyState))&&(b.onload=b.onreadystatechange=null,b.parentNode&&b.parentNode.removeChild(b),b=null,c||e(200,\"success\"))},c.insertBefore(b,c.firstChild)},abort:function(){b&&b.onload(void 0,!0)}}}});var ad=[],bd=/(=)\\?(?=&|$)|\\?\\?/;n.ajaxSetup({jsonp:\"callback\",jsonpCallback:function(){var a=ad.pop()||n.expando+\"_\"+wc++;return this[a]=!0,a}}),n.ajaxPrefilter(\"json jsonp\",function(b,c,d){var e,f,g,h=b.jsonp!==!1&&(bd.test(b.url)?\"url\":\"string\"==typeof b.data&&!(b.contentType||\"\").indexOf(\"application/x-www-form-urlencoded\")&&bd.test(b.data)&&\"data\");return h||\"jsonp\"===b.dataTypes[0]?(e=b.jsonpCallback=n.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,h?b[h]=b[h].replace(bd,\"$1\"+e):b.jsonp!==!1&&(b.url+=(xc.test(b.url)?\"&\":\"?\")+b.jsonp+\"=\"+e),b.converters[\"script json\"]=function(){return g||n.error(e+\" was not called\"),g[0]},b.dataTypes[0]=\"json\",f=a[e],a[e]=function(){g=arguments},d.always(function(){a[e]=f,b[e]&&(b.jsonpCallback=c.jsonpCallback,ad.push(e)),g&&n.isFunction(f)&&f(g[0]),g=f=void 0}),\"script\"):void 0}),n.parseHTML=function(a,b,c){if(!a||\"string\"!=typeof a)return null;\"boolean\"==typeof b&&(c=b,b=!1),b=b||z;var d=v.exec(a),e=!c&&[];return d?[b.createElement(d[1])]:(d=n.buildFragment([a],b,e),e&&e.length&&n(e).remove(),n.merge([],d.childNodes))};var cd=n.fn.load;n.fn.load=function(a,b,c){if(\"string\"!=typeof a&&cd)return cd.apply(this,arguments);var d,e,f,g=this,h=a.indexOf(\" \");return h>=0&&(d=a.slice(h,a.length),a=a.slice(0,h)),n.isFunction(b)?(c=b,b=void 0):b&&\"object\"==typeof b&&(f=\"POST\"),g.length>0&&n.ajax({url:a,type:f,dataType:\"html\",data:b}).done(function(a){e=arguments,g.html(d?n(\"<div>\").append(n.parseHTML(a)).find(d):a)}).complete(c&&function(a,b){g.each(c,e||[a.responseText,b,a])}),this},n.expr.filters.animated=function(a){return n.grep(n.timers,function(b){return a===b.elem}).length};var dd=a.document.documentElement;function ed(a){return n.isWindow(a)?a:9===a.nodeType?a.defaultView||a.parentWindow:!1}n.offset={setOffset:function(a,b,c){var d,e,f,g,h,i,j,k=n.css(a,\"position\"),l=n(a),m={};\"static\"===k&&(a.style.position=\"relative\"),h=l.offset(),f=n.css(a,\"top\"),i=n.css(a,\"left\"),j=(\"absolute\"===k||\"fixed\"===k)&&n.inArray(\"auto\",[f,i])>-1,j?(d=l.position(),g=d.top,e=d.left):(g=parseFloat(f)||0,e=parseFloat(i)||0),n.isFunction(b)&&(b=b.call(a,c,h)),null!=b.top&&(m.top=b.top-h.top+g),null!=b.left&&(m.left=b.left-h.left+e),\"using\"in b?b.using.call(a,m):l.css(m)}},n.fn.extend({offset:function(a){if(arguments.length)return void 0===a?this:this.each(function(b){n.offset.setOffset(this,a,b)});var b,c,d={top:0,left:0},e=this[0],f=e&&e.ownerDocument;if(f)return b=f.documentElement,n.contains(b,e)?(typeof e.getBoundingClientRect!==L&&(d=e.getBoundingClientRect()),c=ed(f),{top:d.top+(c.pageYOffset||b.scrollTop)-(b.clientTop||0),left:d.left+(c.pageXOffset||b.scrollLeft)-(b.clientLeft||0)}):d},position:function(){if(this[0]){var a,b,c={top:0,left:0},d=this[0];return\"fixed\"===n.css(d,\"position\")?b=d.getBoundingClientRect():(a=this.offsetParent(),b=this.offset(),n.nodeName(a[0],\"html\")||(c=a.offset()),c.top+=n.css(a[0],\"borderTopWidth\",!0),c.left+=n.css(a[0],\"borderLeftWidth\",!0)),{top:b.top-c.top-n.css(d,\"marginTop\",!0),left:b.left-c.left-n.css(d,\"marginLeft\",!0)}}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||dd;while(a&&!n.nodeName(a,\"html\")&&\"static\"===n.css(a,\"position\"))a=a.offsetParent;return a||dd})}}),n.each({scrollLeft:\"pageXOffset\",scrollTop:\"pageYOffset\"},function(a,b){var c=/Y/.test(b);n.fn[a]=function(d){return W(this,function(a,d,e){var f=ed(a);return void 0===e?f?b in f?f[b]:f.document.documentElement[d]:a[d]:void(f?f.scrollTo(c?n(f).scrollLeft():e,c?e:n(f).scrollTop()):a[d]=e)},a,d,arguments.length,null)}}),n.each([\"top\",\"left\"],function(a,b){n.cssHooks[b]=Mb(l.pixelPosition,function(a,c){return c?(c=Kb(a,b),Ib.test(c)?n(a).position()[b]+\"px\":c):void 0})}),n.each({Height:\"height\",Width:\"width\"},function(a,b){n.each({padding:\"inner\"+a,content:b,\"\":\"outer\"+a},function(c,d){n.fn[d]=function(d,e){var f=arguments.length&&(c||\"boolean\"!=typeof d),g=c||(d===!0||e===!0?\"margin\":\"border\");return W(this,function(b,c,d){var e;return n.isWindow(b)?b.document.documentElement[\"client\"+a]:9===b.nodeType?(e=b.documentElement,Math.max(b.body[\"scroll\"+a],e[\"scroll\"+a],b.body[\"offset\"+a],e[\"offset\"+a],e[\"client\"+a])):void 0===d?n.css(b,c,g):n.style(b,c,d,g)},b,f?d:void 0,f,null)}})}),n.fn.size=function(){return this.length},n.fn.andSelf=n.fn.addBack,\"function\"==typeof define&&define.amd&&define(\"jquery\",[],function(){return n});var fd=a.jQuery,gd=a.$;return n.noConflict=function(b){return a.$===n&&(a.$=gd),b&&a.jQuery===n&&(a.jQuery=fd),n},typeof b===L&&(a.jQuery=a.$=n),n});\n","/*! vex.js, vex.dialog.js 2.0.1 */\n(function(){var a;a=function(a){var b,c;return b=!1,a(function(){var d;return d=(document.body||document.documentElement).style,b=void 0!==d.animation||void 0!==d.WebkitAnimation||void 0!==d.MozAnimation||void 0!==d.MsAnimation||void 0!==d.OAnimation,a(window).bind(\"keyup.vex\",function(a){return 27===a.keyCode?c.closeByEscape():void 0})}),c={globalID:1,animationEndEvent:\"animationend webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend\",baseClassNames:{vex:\"vex\",content:\"vex-content\",overlay:\"vex-overlay\",close:\"vex-close\",closing:\"vex-closing\",open:\"vex-open\"},defaultOptions:{content:\"\",showCloseButton:!0,escapeButtonCloses:!0,overlayClosesOnClick:!0,appendLocation:\"body\",className:\"\",css:{},overlayClassName:\"\",overlayCSS:{},contentClassName:\"\",contentCSS:{},closeClassName:\"\",closeCSS:{}},open:function(b){return b=a.extend({},c.defaultOptions,b),b.id=c.globalID,c.globalID+=1,b.$vex=a(\"<div>\").addClass(c.baseClassNames.vex).addClass(b.className).css(b.css).data({vex:b}),b.$vexOverlay=a(\"<div>\").addClass(c.baseClassNames.overlay).addClass(b.overlayClassName).css(b.overlayCSS).data({vex:b}),b.overlayClosesOnClick&&b.$vexOverlay.bind(\"click.vex\",function(b){return b.target===this?c.close(a(this).data().vex.id):void 0}),b.$vex.append(b.$vexOverlay),b.$vexContent=a(\"<div>\").addClass(c.baseClassNames.content).addClass(b.contentClassName).css(b.contentCSS).append(b.content).data({vex:b}),b.$vex.append(b.$vexContent),b.showCloseButton&&(b.$closeButton=a(\"<div>\").addClass(c.baseClassNames.close).addClass(b.closeClassName).css(b.closeCSS).data({vex:b}).bind(\"click.vex\",function(){return c.close(a(this).data().vex.id)}),b.$vexContent.append(b.$closeButton)),a(b.appendLocation).append(b.$vex),c.setupBodyClassName(b.$vex),b.afterOpen&&b.afterOpen(b.$vexContent,b),setTimeout(function(){return b.$vexContent.trigger(\"vexOpen\",b)},0),b.$vexContent},getAllVexes:function(){return a(\".\"+c.baseClassNames.vex+':not(\".'+c.baseClassNames.closing+'\") .'+c.baseClassNames.content)},getVexByID:function(b){return c.getAllVexes().filter(function(){return a(this).data().vex.id===b})},close:function(a){var b;if(!a){if(b=c.getAllVexes().last(),!b.length)return!1;a=b.data().vex.id}return c.closeByID(a)},closeAll:function(){var b;return b=c.getAllVexes().map(function(){return a(this).data().vex.id}).toArray(),(null!=b?b.length:void 0)?(a.each(b.reverse(),function(a,b){return c.closeByID(b)}),!0):!1},closeByID:function(d){var e,f,g,h,i;return f=c.getVexByID(d),f.length?(e=f.data().vex.$vex,i=a.extend({},f.data().vex),g=function(){return i.beforeClose?i.beforeClose(f,i):void 0},h=function(){return f.trigger(\"vexClose\",i),e.remove(),i.afterClose?i.afterClose(f,i):void 0},b?(g(),e.unbind(c.animationEndEvent).bind(c.animationEndEvent,function(){return h()}).addClass(c.baseClassNames.closing)):(g(),h()),!0):void 0},closeByEscape:function(){var b,d,e;return e=c.getAllVexes().map(function(){return a(this).data().vex.id}).toArray(),(null!=e?e.length:void 0)?(d=Math.max.apply(Math,e),b=c.getVexByID(d),b.data().vex.escapeButtonCloses!==!0?!1:c.closeByID(d)):!1},setupBodyClassName:function(b){return b.bind(\"vexOpen.vex\",function(){return a(\"body\").addClass(c.baseClassNames.open)}).bind(\"vexClose.vex\",function(){return c.getAllVexes().length?void 0:a(\"body\").removeClass(c.baseClassNames.open)})},hideLoading:function(){return a(\".vex-loading-spinner\").remove()},showLoading:function(){return c.hideLoading(),a(\"body\").append('<div class=\"vex-loading-spinner '+c.defaultOptions.className+'\"></div>')}}},\"function\"==typeof define&&define.amd?define([\"jquery\"],a):\"object\"==typeof exports?module.exports=a(require(\"jquery\")):window.vex=a(jQuery)}).call(this),function(){var a;a=function(a,b){var c,d;return null==b?a.error(\"Vex is required to use vex.dialog\"):(c=function(b){var c;return c={},a.each(b.serializeArray(),function(){return c[this.name]?(c[this.name].push||(c[this.name]=[c[this.name]]),c[this.name].push(this.value||\"\")):c[this.name]=this.value||\"\"}),c},d={},d.buttons={YES:{text:\"OK\",type:\"submit\",className:\"vex-dialog-button-primary\"},NO:{text:\"Cancel\",type:\"button\",className:\"vex-dialog-button-secondary\",click:function(a){return a.data().vex.value=!1,b.close(a.data().vex.id)}}},d.defaultOptions={callback:function(){},afterOpen:function(){},message:\"Message\",input:'<input name=\"vex\" type=\"hidden\" value=\"_vex-empty-value\" />',value:!1,buttons:[d.buttons.YES,d.buttons.NO],showCloseButton:!1,onSubmit:function(e){var f,g;return f=a(this),g=f.parent(),e.preventDefault(),e.stopPropagation(),g.data().vex.value=d.getFormValueOnSubmit(c(f)),b.close(g.data().vex.id)},focusFirstInput:!0},d.defaultAlertOptions={message:\"Alert\",buttons:[d.buttons.YES]},d.defaultConfirmOptions={message:\"Confirm\"},d.open=function(c){var e;return c=a.extend({},b.defaultOptions,d.defaultOptions,c),c.content=d.buildDialogForm(c),c.beforeClose=function(a){return c.callback(a.data().vex.value)},e=b.open(c),c.focusFirstInput&&e.find('input[type=\"submit\"], textarea, input[type=\"date\"], input[type=\"datetime\"], input[type=\"datetime-local\"], input[type=\"email\"], input[type=\"month\"], input[type=\"number\"], input[type=\"password\"], input[type=\"search\"], input[type=\"tel\"], input[type=\"text\"], input[type=\"time\"], input[type=\"url\"], input[type=\"week\"]').first().focus(),e},d.alert=function(b){return\"string\"==typeof b&&(b={message:b}),b=a.extend({},d.defaultAlertOptions,b),d.open(b)},d.confirm=function(b){return\"string\"==typeof b?a.error(\"dialog.confirm(options) requires options.callback.\"):(b=a.extend({},d.defaultConfirmOptions,b),d.open(b))},d.prompt=function(b){var c;return\"string\"==typeof b?a.error(\"dialog.prompt(options) requires options.callback.\"):(c={message:'<label for=\"vex\">'+(b.label||\"Prompt:\")+\"</label>\",input:'<input name=\"vex\" type=\"text\" class=\"vex-dialog-prompt-input\" placeholder=\"'+(b.placeholder||\"\")+'\"  value=\"'+(b.value||\"\")+'\" />'},b=a.extend({},c,b),d.open(b))},d.buildDialogForm=function(b){var c,e,f;return c=a('<form class=\"vex-dialog-form\" />'),f=a('<div class=\"vex-dialog-message\" />'),e=a('<div class=\"vex-dialog-input\" />'),c.append(f.append(b.message)).append(e.append(b.input)).append(d.buttonsToDOM(b.buttons)).bind(\"submit.vex\",b.onSubmit),c},d.getFormValueOnSubmit=function(a){return a.vex||\"\"===a.vex?\"_vex-empty-value\"===a.vex?!0:a.vex:a},d.buttonsToDOM=function(c){var d;return d=a('<div class=\"vex-dialog-buttons\" />'),a.each(c,function(e,f){return d.append(a('<input type=\"'+f.type+'\" />').val(f.text).addClass(f.className+\" vex-dialog-button \"+(0===e?\"vex-first \":\"\")+(e===c.length-1?\"vex-last \":\"\")).bind(\"click.vex\",function(c){return f.click?f.click(a(this).parents(\".\"+b.baseClassNames.content),c):void 0}))}),d},d)},\"function\"==typeof define&&define.amd?define([\"jquery\",\"vex\"],a):\"object\"==typeof exports?module.exports=a(require(\"jquery\"),require(\"vex\")):window.vex.dialog=a(window.jQuery,window.vex)}.call(this);","/*! jQuery UI - v1.11.4 - 2016-04-09\n* http://jqueryui.com\n* Includes: core.js, widget.js, mouse.js, position.js, draggable.js, droppable.js, resizable.js, selectable.js, sortable.js, accordion.js, autocomplete.js, button.js, datepicker.js, dialog.js, menu.js, progressbar.js, selectmenu.js, slider.js, spinner.js, tabs.js, tooltip.js\n* Copyright jQuery Foundation and other contributors; Licensed MIT */\n\n(function(t){\"function\"==typeof define&&define.amd?define([\"jquery\"],t):t(jQuery)})(function(t){function e(e,s){var n,a,o,r=e.nodeName.toLowerCase();return\"area\"===r?(n=e.parentNode,a=n.name,e.href&&a&&\"map\"===n.nodeName.toLowerCase()?(o=t(\"img[usemap='#\"+a+\"']\")[0],!!o&&i(o)):!1):(/^(input|select|textarea|button|object)$/.test(r)?!e.disabled:\"a\"===r?e.href||s:s)&&i(e)}function i(e){return t.expr.filters.visible(e)&&!t(e).parents().addBack().filter(function(){return\"hidden\"===t.css(this,\"visibility\")}).length}function s(t){for(var e,i;t.length&&t[0]!==document;){if(e=t.css(\"position\"),(\"absolute\"===e||\"relative\"===e||\"fixed\"===e)&&(i=parseInt(t.css(\"zIndex\"),10),!isNaN(i)&&0!==i))return i;t=t.parent()}return 0}function n(){this._curInst=null,this._keyEvent=!1,this._disabledInputs=[],this._datepickerShowing=!1,this._inDialog=!1,this._mainDivId=\"ui-datepicker-div\",this._inlineClass=\"ui-datepicker-inline\",this._appendClass=\"ui-datepicker-append\",this._triggerClass=\"ui-datepicker-trigger\",this._dialogClass=\"ui-datepicker-dialog\",this._disableClass=\"ui-datepicker-disabled\",this._unselectableClass=\"ui-datepicker-unselectable\",this._currentClass=\"ui-datepicker-current-day\",this._dayOverClass=\"ui-datepicker-days-cell-over\",this.regional=[],this.regional[\"\"]={closeText:\"Done\",prevText:\"Prev\",nextText:\"Next\",currentText:\"Today\",monthNames:[\"January\",\"February\",\"March\",\"April\",\"May\",\"June\",\"July\",\"August\",\"September\",\"October\",\"November\",\"December\"],monthNamesShort:[\"Jan\",\"Feb\",\"Mar\",\"Apr\",\"May\",\"Jun\",\"Jul\",\"Aug\",\"Sep\",\"Oct\",\"Nov\",\"Dec\"],dayNames:[\"Sunday\",\"Monday\",\"Tuesday\",\"Wednesday\",\"Thursday\",\"Friday\",\"Saturday\"],dayNamesShort:[\"Sun\",\"Mon\",\"Tue\",\"Wed\",\"Thu\",\"Fri\",\"Sat\"],dayNamesMin:[\"Su\",\"Mo\",\"Tu\",\"We\",\"Th\",\"Fr\",\"Sa\"],weekHeader:\"Wk\",dateFormat:\"mm/dd/yy\",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:\"\"},this._defaults={showOn:\"focus\",showAnim:\"fadeIn\",showOptions:{},defaultDate:null,appendText:\"\",buttonText:\"...\",buttonImage:\"\",buttonImageOnly:!1,hideIfNoPrevNext:!1,navigationAsDateFormat:!1,gotoCurrent:!1,changeMonth:!1,changeYear:!1,yearRange:\"c-10:c+10\",showOtherMonths:!1,selectOtherMonths:!1,showWeek:!1,calculateWeek:this.iso8601Week,shortYearCutoff:\"+10\",minDate:null,maxDate:null,duration:\"fast\",beforeShowDay:null,beforeShow:null,onSelect:null,onChangeMonthYear:null,onClose:null,numberOfMonths:1,showCurrentAtPos:0,stepMonths:1,stepBigMonths:12,altField:\"\",altFormat:\"\",constrainInput:!0,showButtonPanel:!1,autoSize:!1,disabled:!1},t.extend(this._defaults,this.regional[\"\"]),this.regional.en=t.extend(!0,{},this.regional[\"\"]),this.regional[\"en-US\"]=t.extend(!0,{},this.regional.en),this.dpDiv=a(t(\"<div id='\"+this._mainDivId+\"' class='ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all'></div>\"))}function a(e){var i=\"button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a\";return e.delegate(i,\"mouseout\",function(){t(this).removeClass(\"ui-state-hover\"),-1!==this.className.indexOf(\"ui-datepicker-prev\")&&t(this).removeClass(\"ui-datepicker-prev-hover\"),-1!==this.className.indexOf(\"ui-datepicker-next\")&&t(this).removeClass(\"ui-datepicker-next-hover\")}).delegate(i,\"mouseover\",o)}function o(){t.datepicker._isDisabledDatepicker(v.inline?v.dpDiv.parent()[0]:v.input[0])||(t(this).parents(\".ui-datepicker-calendar\").find(\"a\").removeClass(\"ui-state-hover\"),t(this).addClass(\"ui-state-hover\"),-1!==this.className.indexOf(\"ui-datepicker-prev\")&&t(this).addClass(\"ui-datepicker-prev-hover\"),-1!==this.className.indexOf(\"ui-datepicker-next\")&&t(this).addClass(\"ui-datepicker-next-hover\"))}function r(e,i){t.extend(e,i);for(var s in i)null==i[s]&&(e[s]=i[s]);return e}function h(t){return function(){var e=this.element.val();t.apply(this,arguments),this._refresh(),e!==this.element.val()&&this._trigger(\"change\")}}t.ui=t.ui||{},t.extend(t.ui,{version:\"1.11.4\",keyCode:{BACKSPACE:8,COMMA:188,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SPACE:32,TAB:9,UP:38}}),t.fn.extend({scrollParent:function(e){var i=this.css(\"position\"),s=\"absolute\"===i,n=e?/(auto|scroll|hidden)/:/(auto|scroll)/,a=this.parents().filter(function(){var e=t(this);return s&&\"static\"===e.css(\"position\")?!1:n.test(e.css(\"overflow\")+e.css(\"overflow-y\")+e.css(\"overflow-x\"))}).eq(0);return\"fixed\"!==i&&a.length?a:t(this[0].ownerDocument||document)},uniqueId:function(){var t=0;return function(){return this.each(function(){this.id||(this.id=\"ui-id-\"+ ++t)})}}(),removeUniqueId:function(){return this.each(function(){/^ui-id-\\d+$/.test(this.id)&&t(this).removeAttr(\"id\")})}}),t.extend(t.expr[\":\"],{data:t.expr.createPseudo?t.expr.createPseudo(function(e){return function(i){return!!t.data(i,e)}}):function(e,i,s){return!!t.data(e,s[3])},focusable:function(i){return e(i,!isNaN(t.attr(i,\"tabindex\")))},tabbable:function(i){var s=t.attr(i,\"tabindex\"),n=isNaN(s);return(n||s>=0)&&e(i,!n)}}),t(\"<a>\").outerWidth(1).jquery||t.each([\"Width\",\"Height\"],function(e,i){function s(e,i,s,a){return t.each(n,function(){i-=parseFloat(t.css(e,\"padding\"+this))||0,s&&(i-=parseFloat(t.css(e,\"border\"+this+\"Width\"))||0),a&&(i-=parseFloat(t.css(e,\"margin\"+this))||0)}),i}var n=\"Width\"===i?[\"Left\",\"Right\"]:[\"Top\",\"Bottom\"],a=i.toLowerCase(),o={innerWidth:t.fn.innerWidth,innerHeight:t.fn.innerHeight,outerWidth:t.fn.outerWidth,outerHeight:t.fn.outerHeight};t.fn[\"inner\"+i]=function(e){return void 0===e?o[\"inner\"+i].call(this):this.each(function(){t(this).css(a,s(this,e)+\"px\")})},t.fn[\"outer\"+i]=function(e,n){return\"number\"!=typeof e?o[\"outer\"+i].call(this,e):this.each(function(){t(this).css(a,s(this,e,!0,n)+\"px\")})}}),t.fn.addBack||(t.fn.addBack=function(t){return this.add(null==t?this.prevObject:this.prevObject.filter(t))}),t(\"<a>\").data(\"a-b\",\"a\").removeData(\"a-b\").data(\"a-b\")&&(t.fn.removeData=function(e){return function(i){return arguments.length?e.call(this,t.camelCase(i)):e.call(this)}}(t.fn.removeData)),t.ui.ie=!!/msie [\\w.]+/.exec(navigator.userAgent.toLowerCase()),t.fn.extend({focus:function(e){return function(i,s){return\"number\"==typeof i?this.each(function(){var e=this;setTimeout(function(){t(e).focus(),s&&s.call(e)},i)}):e.apply(this,arguments)}}(t.fn.focus),disableSelection:function(){var t=\"onselectstart\"in document.createElement(\"div\")?\"selectstart\":\"mousedown\";return function(){return this.bind(t+\".ui-disableSelection\",function(t){t.preventDefault()})}}(),enableSelection:function(){return this.unbind(\".ui-disableSelection\")},zIndex:function(e){if(void 0!==e)return this.css(\"zIndex\",e);if(this.length)for(var i,s,n=t(this[0]);n.length&&n[0]!==document;){if(i=n.css(\"position\"),(\"absolute\"===i||\"relative\"===i||\"fixed\"===i)&&(s=parseInt(n.css(\"zIndex\"),10),!isNaN(s)&&0!==s))return s;n=n.parent()}return 0}}),t.ui.plugin={add:function(e,i,s){var n,a=t.ui[e].prototype;for(n in s)a.plugins[n]=a.plugins[n]||[],a.plugins[n].push([i,s[n]])},call:function(t,e,i,s){var n,a=t.plugins[e];if(a&&(s||t.element[0].parentNode&&11!==t.element[0].parentNode.nodeType))for(n=0;a.length>n;n++)t.options[a[n][0]]&&a[n][1].apply(t.element,i)}};var l=0,u=Array.prototype.slice;t.cleanData=function(e){return function(i){var s,n,a;for(a=0;null!=(n=i[a]);a++)try{s=t._data(n,\"events\"),s&&s.remove&&t(n).triggerHandler(\"remove\")}catch(o){}e(i)}}(t.cleanData),t.widget=function(e,i,s){var n,a,o,r,h={},l=e.split(\".\")[0];return e=e.split(\".\")[1],n=l+\"-\"+e,s||(s=i,i=t.Widget),t.expr[\":\"][n.toLowerCase()]=function(e){return!!t.data(e,n)},t[l]=t[l]||{},a=t[l][e],o=t[l][e]=function(t,e){return this._createWidget?(arguments.length&&this._createWidget(t,e),void 0):new o(t,e)},t.extend(o,a,{version:s.version,_proto:t.extend({},s),_childConstructors:[]}),r=new i,r.options=t.widget.extend({},r.options),t.each(s,function(e,s){return t.isFunction(s)?(h[e]=function(){var t=function(){return i.prototype[e].apply(this,arguments)},n=function(t){return i.prototype[e].apply(this,t)};return function(){var e,i=this._super,a=this._superApply;return this._super=t,this._superApply=n,e=s.apply(this,arguments),this._super=i,this._superApply=a,e}}(),void 0):(h[e]=s,void 0)}),o.prototype=t.widget.extend(r,{widgetEventPrefix:a?r.widgetEventPrefix||e:e},h,{constructor:o,namespace:l,widgetName:e,widgetFullName:n}),a?(t.each(a._childConstructors,function(e,i){var s=i.prototype;t.widget(s.namespace+\".\"+s.widgetName,o,i._proto)}),delete a._childConstructors):i._childConstructors.push(o),t.widget.bridge(e,o),o},t.widget.extend=function(e){for(var i,s,n=u.call(arguments,1),a=0,o=n.length;o>a;a++)for(i in n[a])s=n[a][i],n[a].hasOwnProperty(i)&&void 0!==s&&(e[i]=t.isPlainObject(s)?t.isPlainObject(e[i])?t.widget.extend({},e[i],s):t.widget.extend({},s):s);return e},t.widget.bridge=function(e,i){var s=i.prototype.widgetFullName||e;t.fn[e]=function(n){var a=\"string\"==typeof n,o=u.call(arguments,1),r=this;return a?this.each(function(){var i,a=t.data(this,s);return\"instance\"===n?(r=a,!1):a?t.isFunction(a[n])&&\"_\"!==n.charAt(0)?(i=a[n].apply(a,o),i!==a&&void 0!==i?(r=i&&i.jquery?r.pushStack(i.get()):i,!1):void 0):t.error(\"no such method '\"+n+\"' for \"+e+\" widget instance\"):t.error(\"cannot call methods on \"+e+\" prior to initialization; \"+\"attempted to call method '\"+n+\"'\")}):(o.length&&(n=t.widget.extend.apply(null,[n].concat(o))),this.each(function(){var e=t.data(this,s);e?(e.option(n||{}),e._init&&e._init()):t.data(this,s,new i(n,this))})),r}},t.Widget=function(){},t.Widget._childConstructors=[],t.Widget.prototype={widgetName:\"widget\",widgetEventPrefix:\"\",defaultElement:\"<div>\",options:{disabled:!1,create:null},_createWidget:function(e,i){i=t(i||this.defaultElement||this)[0],this.element=t(i),this.uuid=l++,this.eventNamespace=\".\"+this.widgetName+this.uuid,this.bindings=t(),this.hoverable=t(),this.focusable=t(),i!==this&&(t.data(i,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===i&&this.destroy()}}),this.document=t(i.style?i.ownerDocument:i.document||i),this.window=t(this.document[0].defaultView||this.document[0].parentWindow)),this.options=t.widget.extend({},this.options,this._getCreateOptions(),e),this._create(),this._trigger(\"create\",null,this._getCreateEventData()),this._init()},_getCreateOptions:t.noop,_getCreateEventData:t.noop,_create:t.noop,_init:t.noop,destroy:function(){this._destroy(),this.element.unbind(this.eventNamespace).removeData(this.widgetFullName).removeData(t.camelCase(this.widgetFullName)),this.widget().unbind(this.eventNamespace).removeAttr(\"aria-disabled\").removeClass(this.widgetFullName+\"-disabled \"+\"ui-state-disabled\"),this.bindings.unbind(this.eventNamespace),this.hoverable.removeClass(\"ui-state-hover\"),this.focusable.removeClass(\"ui-state-focus\")},_destroy:t.noop,widget:function(){return this.element},option:function(e,i){var s,n,a,o=e;if(0===arguments.length)return t.widget.extend({},this.options);if(\"string\"==typeof e)if(o={},s=e.split(\".\"),e=s.shift(),s.length){for(n=o[e]=t.widget.extend({},this.options[e]),a=0;s.length-1>a;a++)n[s[a]]=n[s[a]]||{},n=n[s[a]];if(e=s.pop(),1===arguments.length)return void 0===n[e]?null:n[e];n[e]=i}else{if(1===arguments.length)return void 0===this.options[e]?null:this.options[e];o[e]=i}return this._setOptions(o),this},_setOptions:function(t){var e;for(e in t)this._setOption(e,t[e]);return this},_setOption:function(t,e){return this.options[t]=e,\"disabled\"===t&&(this.widget().toggleClass(this.widgetFullName+\"-disabled\",!!e),e&&(this.hoverable.removeClass(\"ui-state-hover\"),this.focusable.removeClass(\"ui-state-focus\"))),this},enable:function(){return this._setOptions({disabled:!1})},disable:function(){return this._setOptions({disabled:!0})},_on:function(e,i,s){var n,a=this;\"boolean\"!=typeof e&&(s=i,i=e,e=!1),s?(i=n=t(i),this.bindings=this.bindings.add(i)):(s=i,i=this.element,n=this.widget()),t.each(s,function(s,o){function r(){return e||a.options.disabled!==!0&&!t(this).hasClass(\"ui-state-disabled\")?(\"string\"==typeof o?a[o]:o).apply(a,arguments):void 0}\"string\"!=typeof o&&(r.guid=o.guid=o.guid||r.guid||t.guid++);var h=s.match(/^([\\w:-]*)\\s*(.*)$/),l=h[1]+a.eventNamespace,u=h[2];u?n.delegate(u,l,r):i.bind(l,r)})},_off:function(e,i){i=(i||\"\").split(\" \").join(this.eventNamespace+\" \")+this.eventNamespace,e.unbind(i).undelegate(i),this.bindings=t(this.bindings.not(e).get()),this.focusable=t(this.focusable.not(e).get()),this.hoverable=t(this.hoverable.not(e).get())},_delay:function(t,e){function i(){return(\"string\"==typeof t?s[t]:t).apply(s,arguments)}var s=this;return setTimeout(i,e||0)},_hoverable:function(e){this.hoverable=this.hoverable.add(e),this._on(e,{mouseenter:function(e){t(e.currentTarget).addClass(\"ui-state-hover\")},mouseleave:function(e){t(e.currentTarget).removeClass(\"ui-state-hover\")}})},_focusable:function(e){this.focusable=this.focusable.add(e),this._on(e,{focusin:function(e){t(e.currentTarget).addClass(\"ui-state-focus\")},focusout:function(e){t(e.currentTarget).removeClass(\"ui-state-focus\")}})},_trigger:function(e,i,s){var n,a,o=this.options[e];if(s=s||{},i=t.Event(i),i.type=(e===this.widgetEventPrefix?e:this.widgetEventPrefix+e).toLowerCase(),i.target=this.element[0],a=i.originalEvent)for(n in a)n in i||(i[n]=a[n]);return this.element.trigger(i,s),!(t.isFunction(o)&&o.apply(this.element[0],[i].concat(s))===!1||i.isDefaultPrevented())}},t.each({show:\"fadeIn\",hide:\"fadeOut\"},function(e,i){t.Widget.prototype[\"_\"+e]=function(s,n,a){\"string\"==typeof n&&(n={effect:n});var o,r=n?n===!0||\"number\"==typeof n?i:n.effect||i:e;n=n||{},\"number\"==typeof n&&(n={duration:n}),o=!t.isEmptyObject(n),n.complete=a,n.delay&&s.delay(n.delay),o&&t.effects&&t.effects.effect[r]?s[e](n):r!==e&&s[r]?s[r](n.duration,n.easing,a):s.queue(function(i){t(this)[e](),a&&a.call(s[0]),i()})}}),t.widget;var c=!1;t(document).mouseup(function(){c=!1}),t.widget(\"ui.mouse\",{version:\"1.11.4\",options:{cancel:\"input,textarea,button,select,option\",distance:1,delay:0},_mouseInit:function(){var e=this;this.element.bind(\"mousedown.\"+this.widgetName,function(t){return e._mouseDown(t)}).bind(\"click.\"+this.widgetName,function(i){return!0===t.data(i.target,e.widgetName+\".preventClickEvent\")?(t.removeData(i.target,e.widgetName+\".preventClickEvent\"),i.stopImmediatePropagation(),!1):void 0}),this.started=!1},_mouseDestroy:function(){this.element.unbind(\".\"+this.widgetName),this._mouseMoveDelegate&&this.document.unbind(\"mousemove.\"+this.widgetName,this._mouseMoveDelegate).unbind(\"mouseup.\"+this.widgetName,this._mouseUpDelegate)},_mouseDown:function(e){if(!c){this._mouseMoved=!1,this._mouseStarted&&this._mouseUp(e),this._mouseDownEvent=e;var i=this,s=1===e.which,n=\"string\"==typeof this.options.cancel&&e.target.nodeName?t(e.target).closest(this.options.cancel).length:!1;return s&&!n&&this._mouseCapture(e)?(this.mouseDelayMet=!this.options.delay,this.mouseDelayMet||(this._mouseDelayTimer=setTimeout(function(){i.mouseDelayMet=!0},this.options.delay)),this._mouseDistanceMet(e)&&this._mouseDelayMet(e)&&(this._mouseStarted=this._mouseStart(e)!==!1,!this._mouseStarted)?(e.preventDefault(),!0):(!0===t.data(e.target,this.widgetName+\".preventClickEvent\")&&t.removeData(e.target,this.widgetName+\".preventClickEvent\"),this._mouseMoveDelegate=function(t){return i._mouseMove(t)},this._mouseUpDelegate=function(t){return i._mouseUp(t)},this.document.bind(\"mousemove.\"+this.widgetName,this._mouseMoveDelegate).bind(\"mouseup.\"+this.widgetName,this._mouseUpDelegate),e.preventDefault(),c=!0,!0)):!0}},_mouseMove:function(e){if(this._mouseMoved){if(t.ui.ie&&(!document.documentMode||9>document.documentMode)&&!e.button)return this._mouseUp(e);if(!e.which)return this._mouseUp(e)}return(e.which||e.button)&&(this._mouseMoved=!0),this._mouseStarted?(this._mouseDrag(e),e.preventDefault()):(this._mouseDistanceMet(e)&&this._mouseDelayMet(e)&&(this._mouseStarted=this._mouseStart(this._mouseDownEvent,e)!==!1,this._mouseStarted?this._mouseDrag(e):this._mouseUp(e)),!this._mouseStarted)},_mouseUp:function(e){return this.document.unbind(\"mousemove.\"+this.widgetName,this._mouseMoveDelegate).unbind(\"mouseup.\"+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,e.target===this._mouseDownEvent.target&&t.data(e.target,this.widgetName+\".preventClickEvent\",!0),this._mouseStop(e)),c=!1,!1},_mouseDistanceMet:function(t){return Math.max(Math.abs(this._mouseDownEvent.pageX-t.pageX),Math.abs(this._mouseDownEvent.pageY-t.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),function(){function e(t,e,i){return[parseFloat(t[0])*(p.test(t[0])?e/100:1),parseFloat(t[1])*(p.test(t[1])?i/100:1)]}function i(e,i){return parseInt(t.css(e,i),10)||0}function s(e){var i=e[0];return 9===i.nodeType?{width:e.width(),height:e.height(),offset:{top:0,left:0}}:t.isWindow(i)?{width:e.width(),height:e.height(),offset:{top:e.scrollTop(),left:e.scrollLeft()}}:i.preventDefault?{width:0,height:0,offset:{top:i.pageY,left:i.pageX}}:{width:e.outerWidth(),height:e.outerHeight(),offset:e.offset()}}t.ui=t.ui||{};var n,a,o=Math.max,r=Math.abs,h=Math.round,l=/left|center|right/,u=/top|center|bottom/,c=/[\\+\\-]\\d+(\\.[\\d]+)?%?/,d=/^\\w+/,p=/%$/,f=t.fn.position;t.position={scrollbarWidth:function(){if(void 0!==n)return n;var e,i,s=t(\"<div style='display:block;position:absolute;width:50px;height:50px;overflow:hidden;'><div style='height:100px;width:auto;'></div></div>\"),a=s.children()[0];return t(\"body\").append(s),e=a.offsetWidth,s.css(\"overflow\",\"scroll\"),i=a.offsetWidth,e===i&&(i=s[0].clientWidth),s.remove(),n=e-i},getScrollInfo:function(e){var i=e.isWindow||e.isDocument?\"\":e.element.css(\"overflow-x\"),s=e.isWindow||e.isDocument?\"\":e.element.css(\"overflow-y\"),n=\"scroll\"===i||\"auto\"===i&&e.width<e.element[0].scrollWidth,a=\"scroll\"===s||\"auto\"===s&&e.height<e.element[0].scrollHeight;return{width:a?t.position.scrollbarWidth():0,height:n?t.position.scrollbarWidth():0}},getWithinInfo:function(e){var i=t(e||window),s=t.isWindow(i[0]),n=!!i[0]&&9===i[0].nodeType;return{element:i,isWindow:s,isDocument:n,offset:i.offset()||{left:0,top:0},scrollLeft:i.scrollLeft(),scrollTop:i.scrollTop(),width:s||n?i.width():i.outerWidth(),height:s||n?i.height():i.outerHeight()}}},t.fn.position=function(n){if(!n||!n.of)return f.apply(this,arguments);n=t.extend({},n);var p,m,g,v,_,b,y=t(n.of),x=t.position.getWithinInfo(n.within),w=t.position.getScrollInfo(x),k=(n.collision||\"flip\").split(\" \"),D={};return b=s(y),y[0].preventDefault&&(n.at=\"left top\"),m=b.width,g=b.height,v=b.offset,_=t.extend({},v),t.each([\"my\",\"at\"],function(){var t,e,i=(n[this]||\"\").split(\" \");1===i.length&&(i=l.test(i[0])?i.concat([\"center\"]):u.test(i[0])?[\"center\"].concat(i):[\"center\",\"center\"]),i[0]=l.test(i[0])?i[0]:\"center\",i[1]=u.test(i[1])?i[1]:\"center\",t=c.exec(i[0]),e=c.exec(i[1]),D[this]=[t?t[0]:0,e?e[0]:0],n[this]=[d.exec(i[0])[0],d.exec(i[1])[0]]}),1===k.length&&(k[1]=k[0]),\"right\"===n.at[0]?_.left+=m:\"center\"===n.at[0]&&(_.left+=m/2),\"bottom\"===n.at[1]?_.top+=g:\"center\"===n.at[1]&&(_.top+=g/2),p=e(D.at,m,g),_.left+=p[0],_.top+=p[1],this.each(function(){var s,l,u=t(this),c=u.outerWidth(),d=u.outerHeight(),f=i(this,\"marginLeft\"),b=i(this,\"marginTop\"),T=c+f+i(this,\"marginRight\")+w.width,S=d+b+i(this,\"marginBottom\")+w.height,M=t.extend({},_),C=e(D.my,u.outerWidth(),u.outerHeight());\"right\"===n.my[0]?M.left-=c:\"center\"===n.my[0]&&(M.left-=c/2),\"bottom\"===n.my[1]?M.top-=d:\"center\"===n.my[1]&&(M.top-=d/2),M.left+=C[0],M.top+=C[1],a||(M.left=h(M.left),M.top=h(M.top)),s={marginLeft:f,marginTop:b},t.each([\"left\",\"top\"],function(e,i){t.ui.position[k[e]]&&t.ui.position[k[e]][i](M,{targetWidth:m,targetHeight:g,elemWidth:c,elemHeight:d,collisionPosition:s,collisionWidth:T,collisionHeight:S,offset:[p[0]+C[0],p[1]+C[1]],my:n.my,at:n.at,within:x,elem:u})}),n.using&&(l=function(t){var e=v.left-M.left,i=e+m-c,s=v.top-M.top,a=s+g-d,h={target:{element:y,left:v.left,top:v.top,width:m,height:g},element:{element:u,left:M.left,top:M.top,width:c,height:d},horizontal:0>i?\"left\":e>0?\"right\":\"center\",vertical:0>a?\"top\":s>0?\"bottom\":\"middle\"};c>m&&m>r(e+i)&&(h.horizontal=\"center\"),d>g&&g>r(s+a)&&(h.vertical=\"middle\"),h.important=o(r(e),r(i))>o(r(s),r(a))?\"horizontal\":\"vertical\",n.using.call(this,t,h)}),u.offset(t.extend(M,{using:l}))})},t.ui.position={fit:{left:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollLeft:s.offset.left,a=s.width,r=t.left-e.collisionPosition.marginLeft,h=n-r,l=r+e.collisionWidth-a-n;e.collisionWidth>a?h>0&&0>=l?(i=t.left+h+e.collisionWidth-a-n,t.left+=h-i):t.left=l>0&&0>=h?n:h>l?n+a-e.collisionWidth:n:h>0?t.left+=h:l>0?t.left-=l:t.left=o(t.left-r,t.left)},top:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollTop:s.offset.top,a=e.within.height,r=t.top-e.collisionPosition.marginTop,h=n-r,l=r+e.collisionHeight-a-n;e.collisionHeight>a?h>0&&0>=l?(i=t.top+h+e.collisionHeight-a-n,t.top+=h-i):t.top=l>0&&0>=h?n:h>l?n+a-e.collisionHeight:n:h>0?t.top+=h:l>0?t.top-=l:t.top=o(t.top-r,t.top)}},flip:{left:function(t,e){var i,s,n=e.within,a=n.offset.left+n.scrollLeft,o=n.width,h=n.isWindow?n.scrollLeft:n.offset.left,l=t.left-e.collisionPosition.marginLeft,u=l-h,c=l+e.collisionWidth-o-h,d=\"left\"===e.my[0]?-e.elemWidth:\"right\"===e.my[0]?e.elemWidth:0,p=\"left\"===e.at[0]?e.targetWidth:\"right\"===e.at[0]?-e.targetWidth:0,f=-2*e.offset[0];0>u?(i=t.left+d+p+f+e.collisionWidth-o-a,(0>i||r(u)>i)&&(t.left+=d+p+f)):c>0&&(s=t.left-e.collisionPosition.marginLeft+d+p+f-h,(s>0||c>r(s))&&(t.left+=d+p+f))},top:function(t,e){var i,s,n=e.within,a=n.offset.top+n.scrollTop,o=n.height,h=n.isWindow?n.scrollTop:n.offset.top,l=t.top-e.collisionPosition.marginTop,u=l-h,c=l+e.collisionHeight-o-h,d=\"top\"===e.my[1],p=d?-e.elemHeight:\"bottom\"===e.my[1]?e.elemHeight:0,f=\"top\"===e.at[1]?e.targetHeight:\"bottom\"===e.at[1]?-e.targetHeight:0,m=-2*e.offset[1];0>u?(s=t.top+p+f+m+e.collisionHeight-o-a,(0>s||r(u)>s)&&(t.top+=p+f+m)):c>0&&(i=t.top-e.collisionPosition.marginTop+p+f+m-h,(i>0||c>r(i))&&(t.top+=p+f+m))}},flipfit:{left:function(){t.ui.position.flip.left.apply(this,arguments),t.ui.position.fit.left.apply(this,arguments)},top:function(){t.ui.position.flip.top.apply(this,arguments),t.ui.position.fit.top.apply(this,arguments)}}},function(){var e,i,s,n,o,r=document.getElementsByTagName(\"body\")[0],h=document.createElement(\"div\");e=document.createElement(r?\"div\":\"body\"),s={visibility:\"hidden\",width:0,height:0,border:0,margin:0,background:\"none\"},r&&t.extend(s,{position:\"absolute\",left:\"-1000px\",top:\"-1000px\"});for(o in s)e.style[o]=s[o];e.appendChild(h),i=r||document.documentElement,i.insertBefore(e,i.firstChild),h.style.cssText=\"position: absolute; left: 10.7432222px;\",n=t(h).offset().left,a=n>10&&11>n,e.innerHTML=\"\",i.removeChild(e)}()}(),t.ui.position,t.widget(\"ui.draggable\",t.ui.mouse,{version:\"1.11.4\",widgetEventPrefix:\"drag\",options:{addClasses:!0,appendTo:\"parent\",axis:!1,connectToSortable:!1,containment:!1,cursor:\"auto\",cursorAt:!1,grid:!1,handle:!1,helper:\"original\",iframeFix:!1,opacity:!1,refreshPositions:!1,revert:!1,revertDuration:500,scope:\"default\",scroll:!0,scrollSensitivity:20,scrollSpeed:20,snap:!1,snapMode:\"both\",snapTolerance:20,stack:!1,zIndex:!1,drag:null,start:null,stop:null},_create:function(){\"original\"===this.options.helper&&this._setPositionRelative(),this.options.addClasses&&this.element.addClass(\"ui-draggable\"),this.options.disabled&&this.element.addClass(\"ui-draggable-disabled\"),this._setHandleClassName(),this._mouseInit()},_setOption:function(t,e){this._super(t,e),\"handle\"===t&&(this._removeHandleClassName(),this._setHandleClassName())},_destroy:function(){return(this.helper||this.element).is(\".ui-draggable-dragging\")?(this.destroyOnClear=!0,void 0):(this.element.removeClass(\"ui-draggable ui-draggable-dragging ui-draggable-disabled\"),this._removeHandleClassName(),this._mouseDestroy(),void 0)},_mouseCapture:function(e){var i=this.options;return this._blurActiveElement(e),this.helper||i.disabled||t(e.target).closest(\".ui-resizable-handle\").length>0?!1:(this.handle=this._getHandle(e),this.handle?(this._blockFrames(i.iframeFix===!0?\"iframe\":i.iframeFix),!0):!1)},_blockFrames:function(e){this.iframeBlocks=this.document.find(e).map(function(){var e=t(this);return t(\"<div>\").css(\"position\",\"absolute\").appendTo(e.parent()).outerWidth(e.outerWidth()).outerHeight(e.outerHeight()).offset(e.offset())[0]})},_unblockFrames:function(){this.iframeBlocks&&(this.iframeBlocks.remove(),delete this.iframeBlocks)},_blurActiveElement:function(e){var i=this.document[0];if(this.handleElement.is(e.target))try{i.activeElement&&\"body\"!==i.activeElement.nodeName.toLowerCase()&&t(i.activeElement).blur()}catch(s){}},_mouseStart:function(e){var i=this.options;return this.helper=this._createHelper(e),this.helper.addClass(\"ui-draggable-dragging\"),this._cacheHelperProportions(),t.ui.ddmanager&&(t.ui.ddmanager.current=this),this._cacheMargins(),this.cssPosition=this.helper.css(\"position\"),this.scrollParent=this.helper.scrollParent(!0),this.offsetParent=this.helper.offsetParent(),this.hasFixedAncestor=this.helper.parents().filter(function(){return\"fixed\"===t(this).css(\"position\")}).length>0,this.positionAbs=this.element.offset(),this._refreshOffsets(e),this.originalPosition=this.position=this._generatePosition(e,!1),this.originalPageX=e.pageX,this.originalPageY=e.pageY,i.cursorAt&&this._adjustOffsetFromHelper(i.cursorAt),this._setContainment(),this._trigger(\"start\",e)===!1?(this._clear(),!1):(this._cacheHelperProportions(),t.ui.ddmanager&&!i.dropBehaviour&&t.ui.ddmanager.prepareOffsets(this,e),this._normalizeRightBottom(),this._mouseDrag(e,!0),t.ui.ddmanager&&t.ui.ddmanager.dragStart(this,e),!0)},_refreshOffsets:function(t){this.offset={top:this.positionAbs.top-this.margins.top,left:this.positionAbs.left-this.margins.left,scroll:!1,parent:this._getParentOffset(),relative:this._getRelativeOffset()},this.offset.click={left:t.pageX-this.offset.left,top:t.pageY-this.offset.top}},_mouseDrag:function(e,i){if(this.hasFixedAncestor&&(this.offset.parent=this._getParentOffset()),this.position=this._generatePosition(e,!0),this.positionAbs=this._convertPositionTo(\"absolute\"),!i){var s=this._uiHash();if(this._trigger(\"drag\",e,s)===!1)return this._mouseUp({}),!1;this.position=s.position}return this.helper[0].style.left=this.position.left+\"px\",this.helper[0].style.top=this.position.top+\"px\",t.ui.ddmanager&&t.ui.ddmanager.drag(this,e),!1},_mouseStop:function(e){var i=this,s=!1;return t.ui.ddmanager&&!this.options.dropBehaviour&&(s=t.ui.ddmanager.drop(this,e)),this.dropped&&(s=this.dropped,this.dropped=!1),\"invalid\"===this.options.revert&&!s||\"valid\"===this.options.revert&&s||this.options.revert===!0||t.isFunction(this.options.revert)&&this.options.revert.call(this.element,s)?t(this.helper).animate(this.originalPosition,parseInt(this.options.revertDuration,10),function(){i._trigger(\"stop\",e)!==!1&&i._clear()}):this._trigger(\"stop\",e)!==!1&&this._clear(),!1},_mouseUp:function(e){return this._unblockFrames(),t.ui.ddmanager&&t.ui.ddmanager.dragStop(this,e),this.handleElement.is(e.target)&&this.element.focus(),t.ui.mouse.prototype._mouseUp.call(this,e)},cancel:function(){return this.helper.is(\".ui-draggable-dragging\")?this._mouseUp({}):this._clear(),this},_getHandle:function(e){return this.options.handle?!!t(e.target).closest(this.element.find(this.options.handle)).length:!0},_setHandleClassName:function(){this.handleElement=this.options.handle?this.element.find(this.options.handle):this.element,this.handleElement.addClass(\"ui-draggable-handle\")},_removeHandleClassName:function(){this.handleElement.removeClass(\"ui-draggable-handle\")},_createHelper:function(e){var i=this.options,s=t.isFunction(i.helper),n=s?t(i.helper.apply(this.element[0],[e])):\"clone\"===i.helper?this.element.clone().removeAttr(\"id\"):this.element;return n.parents(\"body\").length||n.appendTo(\"parent\"===i.appendTo?this.element[0].parentNode:i.appendTo),s&&n[0]===this.element[0]&&this._setPositionRelative(),n[0]===this.element[0]||/(fixed|absolute)/.test(n.css(\"position\"))||n.css(\"position\",\"absolute\"),n},_setPositionRelative:function(){/^(?:r|a|f)/.test(this.element.css(\"position\"))||(this.element[0].style.position=\"relative\")},_adjustOffsetFromHelper:function(e){\"string\"==typeof e&&(e=e.split(\" \")),t.isArray(e)&&(e={left:+e[0],top:+e[1]||0}),\"left\"in e&&(this.offset.click.left=e.left+this.margins.left),\"right\"in e&&(this.offset.click.left=this.helperProportions.width-e.right+this.margins.left),\"top\"in e&&(this.offset.click.top=e.top+this.margins.top),\"bottom\"in e&&(this.offset.click.top=this.helperProportions.height-e.bottom+this.margins.top)},_isRootNode:function(t){return/(html|body)/i.test(t.tagName)||t===this.document[0]},_getParentOffset:function(){var e=this.offsetParent.offset(),i=this.document[0];return\"absolute\"===this.cssPosition&&this.scrollParent[0]!==i&&t.contains(this.scrollParent[0],this.offsetParent[0])&&(e.left+=this.scrollParent.scrollLeft(),e.top+=this.scrollParent.scrollTop()),this._isRootNode(this.offsetParent[0])&&(e={top:0,left:0}),{top:e.top+(parseInt(this.offsetParent.css(\"borderTopWidth\"),10)||0),left:e.left+(parseInt(this.offsetParent.css(\"borderLeftWidth\"),10)||0)}},_getRelativeOffset:function(){if(\"relative\"!==this.cssPosition)return{top:0,left:0};var t=this.element.position(),e=this._isRootNode(this.scrollParent[0]);return{top:t.top-(parseInt(this.helper.css(\"top\"),10)||0)+(e?0:this.scrollParent.scrollTop()),left:t.left-(parseInt(this.helper.css(\"left\"),10)||0)+(e?0:this.scrollParent.scrollLeft())}},_cacheMargins:function(){this.margins={left:parseInt(this.element.css(\"marginLeft\"),10)||0,top:parseInt(this.element.css(\"marginTop\"),10)||0,right:parseInt(this.element.css(\"marginRight\"),10)||0,bottom:parseInt(this.element.css(\"marginBottom\"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var e,i,s,n=this.options,a=this.document[0];return this.relativeContainer=null,n.containment?\"window\"===n.containment?(this.containment=[t(window).scrollLeft()-this.offset.relative.left-this.offset.parent.left,t(window).scrollTop()-this.offset.relative.top-this.offset.parent.top,t(window).scrollLeft()+t(window).width()-this.helperProportions.width-this.margins.left,t(window).scrollTop()+(t(window).height()||a.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top],void 0):\"document\"===n.containment?(this.containment=[0,0,t(a).width()-this.helperProportions.width-this.margins.left,(t(a).height()||a.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top],void 0):n.containment.constructor===Array?(this.containment=n.containment,void 0):(\"parent\"===n.containment&&(n.containment=this.helper[0].parentNode),i=t(n.containment),s=i[0],s&&(e=/(scroll|auto)/.test(i.css(\"overflow\")),this.containment=[(parseInt(i.css(\"borderLeftWidth\"),10)||0)+(parseInt(i.css(\"paddingLeft\"),10)||0),(parseInt(i.css(\"borderTopWidth\"),10)||0)+(parseInt(i.css(\"paddingTop\"),10)||0),(e?Math.max(s.scrollWidth,s.offsetWidth):s.offsetWidth)-(parseInt(i.css(\"borderRightWidth\"),10)||0)-(parseInt(i.css(\"paddingRight\"),10)||0)-this.helperProportions.width-this.margins.left-this.margins.right,(e?Math.max(s.scrollHeight,s.offsetHeight):s.offsetHeight)-(parseInt(i.css(\"borderBottomWidth\"),10)||0)-(parseInt(i.css(\"paddingBottom\"),10)||0)-this.helperProportions.height-this.margins.top-this.margins.bottom],this.relativeContainer=i),void 0):(this.containment=null,void 0)},_convertPositionTo:function(t,e){e||(e=this.position);var i=\"absolute\"===t?1:-1,s=this._isRootNode(this.scrollParent[0]);return{top:e.top+this.offset.relative.top*i+this.offset.parent.top*i-(\"fixed\"===this.cssPosition?-this.offset.scroll.top:s?0:this.offset.scroll.top)*i,left:e.left+this.offset.relative.left*i+this.offset.parent.left*i-(\"fixed\"===this.cssPosition?-this.offset.scroll.left:s?0:this.offset.scroll.left)*i}},_generatePosition:function(t,e){var i,s,n,a,o=this.options,r=this._isRootNode(this.scrollParent[0]),h=t.pageX,l=t.pageY;return r&&this.offset.scroll||(this.offset.scroll={top:this.scrollParent.scrollTop(),left:this.scrollParent.scrollLeft()}),e&&(this.containment&&(this.relativeContainer?(s=this.relativeContainer.offset(),i=[this.containment[0]+s.left,this.containment[1]+s.top,this.containment[2]+s.left,this.containment[3]+s.top]):i=this.containment,t.pageX-this.offset.click.left<i[0]&&(h=i[0]+this.offset.click.left),t.pageY-this.offset.click.top<i[1]&&(l=i[1]+this.offset.click.top),t.pageX-this.offset.click.left>i[2]&&(h=i[2]+this.offset.click.left),t.pageY-this.offset.click.top>i[3]&&(l=i[3]+this.offset.click.top)),o.grid&&(n=o.grid[1]?this.originalPageY+Math.round((l-this.originalPageY)/o.grid[1])*o.grid[1]:this.originalPageY,l=i?n-this.offset.click.top>=i[1]||n-this.offset.click.top>i[3]?n:n-this.offset.click.top>=i[1]?n-o.grid[1]:n+o.grid[1]:n,a=o.grid[0]?this.originalPageX+Math.round((h-this.originalPageX)/o.grid[0])*o.grid[0]:this.originalPageX,h=i?a-this.offset.click.left>=i[0]||a-this.offset.click.left>i[2]?a:a-this.offset.click.left>=i[0]?a-o.grid[0]:a+o.grid[0]:a),\"y\"===o.axis&&(h=this.originalPageX),\"x\"===o.axis&&(l=this.originalPageY)),{top:l-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+(\"fixed\"===this.cssPosition?-this.offset.scroll.top:r?0:this.offset.scroll.top),left:h-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+(\"fixed\"===this.cssPosition?-this.offset.scroll.left:r?0:this.offset.scroll.left)}\n},_clear:function(){this.helper.removeClass(\"ui-draggable-dragging\"),this.helper[0]===this.element[0]||this.cancelHelperRemoval||this.helper.remove(),this.helper=null,this.cancelHelperRemoval=!1,this.destroyOnClear&&this.destroy()},_normalizeRightBottom:function(){\"y\"!==this.options.axis&&\"auto\"!==this.helper.css(\"right\")&&(this.helper.width(this.helper.width()),this.helper.css(\"right\",\"auto\")),\"x\"!==this.options.axis&&\"auto\"!==this.helper.css(\"bottom\")&&(this.helper.height(this.helper.height()),this.helper.css(\"bottom\",\"auto\"))},_trigger:function(e,i,s){return s=s||this._uiHash(),t.ui.plugin.call(this,e,[i,s,this],!0),/^(drag|start|stop)/.test(e)&&(this.positionAbs=this._convertPositionTo(\"absolute\"),s.offset=this.positionAbs),t.Widget.prototype._trigger.call(this,e,i,s)},plugins:{},_uiHash:function(){return{helper:this.helper,position:this.position,originalPosition:this.originalPosition,offset:this.positionAbs}}}),t.ui.plugin.add(\"draggable\",\"connectToSortable\",{start:function(e,i,s){var n=t.extend({},i,{item:s.element});s.sortables=[],t(s.options.connectToSortable).each(function(){var i=t(this).sortable(\"instance\");i&&!i.options.disabled&&(s.sortables.push(i),i.refreshPositions(),i._trigger(\"activate\",e,n))})},stop:function(e,i,s){var n=t.extend({},i,{item:s.element});s.cancelHelperRemoval=!1,t.each(s.sortables,function(){var t=this;t.isOver?(t.isOver=0,s.cancelHelperRemoval=!0,t.cancelHelperRemoval=!1,t._storedCSS={position:t.placeholder.css(\"position\"),top:t.placeholder.css(\"top\"),left:t.placeholder.css(\"left\")},t._mouseStop(e),t.options.helper=t.options._helper):(t.cancelHelperRemoval=!0,t._trigger(\"deactivate\",e,n))})},drag:function(e,i,s){t.each(s.sortables,function(){var n=!1,a=this;a.positionAbs=s.positionAbs,a.helperProportions=s.helperProportions,a.offset.click=s.offset.click,a._intersectsWith(a.containerCache)&&(n=!0,t.each(s.sortables,function(){return this.positionAbs=s.positionAbs,this.helperProportions=s.helperProportions,this.offset.click=s.offset.click,this!==a&&this._intersectsWith(this.containerCache)&&t.contains(a.element[0],this.element[0])&&(n=!1),n})),n?(a.isOver||(a.isOver=1,s._parent=i.helper.parent(),a.currentItem=i.helper.appendTo(a.element).data(\"ui-sortable-item\",!0),a.options._helper=a.options.helper,a.options.helper=function(){return i.helper[0]},e.target=a.currentItem[0],a._mouseCapture(e,!0),a._mouseStart(e,!0,!0),a.offset.click.top=s.offset.click.top,a.offset.click.left=s.offset.click.left,a.offset.parent.left-=s.offset.parent.left-a.offset.parent.left,a.offset.parent.top-=s.offset.parent.top-a.offset.parent.top,s._trigger(\"toSortable\",e),s.dropped=a.element,t.each(s.sortables,function(){this.refreshPositions()}),s.currentItem=s.element,a.fromOutside=s),a.currentItem&&(a._mouseDrag(e),i.position=a.position)):a.isOver&&(a.isOver=0,a.cancelHelperRemoval=!0,a.options._revert=a.options.revert,a.options.revert=!1,a._trigger(\"out\",e,a._uiHash(a)),a._mouseStop(e,!0),a.options.revert=a.options._revert,a.options.helper=a.options._helper,a.placeholder&&a.placeholder.remove(),i.helper.appendTo(s._parent),s._refreshOffsets(e),i.position=s._generatePosition(e,!0),s._trigger(\"fromSortable\",e),s.dropped=!1,t.each(s.sortables,function(){this.refreshPositions()}))})}}),t.ui.plugin.add(\"draggable\",\"cursor\",{start:function(e,i,s){var n=t(\"body\"),a=s.options;n.css(\"cursor\")&&(a._cursor=n.css(\"cursor\")),n.css(\"cursor\",a.cursor)},stop:function(e,i,s){var n=s.options;n._cursor&&t(\"body\").css(\"cursor\",n._cursor)}}),t.ui.plugin.add(\"draggable\",\"opacity\",{start:function(e,i,s){var n=t(i.helper),a=s.options;n.css(\"opacity\")&&(a._opacity=n.css(\"opacity\")),n.css(\"opacity\",a.opacity)},stop:function(e,i,s){var n=s.options;n._opacity&&t(i.helper).css(\"opacity\",n._opacity)}}),t.ui.plugin.add(\"draggable\",\"scroll\",{start:function(t,e,i){i.scrollParentNotHidden||(i.scrollParentNotHidden=i.helper.scrollParent(!1)),i.scrollParentNotHidden[0]!==i.document[0]&&\"HTML\"!==i.scrollParentNotHidden[0].tagName&&(i.overflowOffset=i.scrollParentNotHidden.offset())},drag:function(e,i,s){var n=s.options,a=!1,o=s.scrollParentNotHidden[0],r=s.document[0];o!==r&&\"HTML\"!==o.tagName?(n.axis&&\"x\"===n.axis||(s.overflowOffset.top+o.offsetHeight-e.pageY<n.scrollSensitivity?o.scrollTop=a=o.scrollTop+n.scrollSpeed:e.pageY-s.overflowOffset.top<n.scrollSensitivity&&(o.scrollTop=a=o.scrollTop-n.scrollSpeed)),n.axis&&\"y\"===n.axis||(s.overflowOffset.left+o.offsetWidth-e.pageX<n.scrollSensitivity?o.scrollLeft=a=o.scrollLeft+n.scrollSpeed:e.pageX-s.overflowOffset.left<n.scrollSensitivity&&(o.scrollLeft=a=o.scrollLeft-n.scrollSpeed))):(n.axis&&\"x\"===n.axis||(e.pageY-t(r).scrollTop()<n.scrollSensitivity?a=t(r).scrollTop(t(r).scrollTop()-n.scrollSpeed):t(window).height()-(e.pageY-t(r).scrollTop())<n.scrollSensitivity&&(a=t(r).scrollTop(t(r).scrollTop()+n.scrollSpeed))),n.axis&&\"y\"===n.axis||(e.pageX-t(r).scrollLeft()<n.scrollSensitivity?a=t(r).scrollLeft(t(r).scrollLeft()-n.scrollSpeed):t(window).width()-(e.pageX-t(r).scrollLeft())<n.scrollSensitivity&&(a=t(r).scrollLeft(t(r).scrollLeft()+n.scrollSpeed)))),a!==!1&&t.ui.ddmanager&&!n.dropBehaviour&&t.ui.ddmanager.prepareOffsets(s,e)}}),t.ui.plugin.add(\"draggable\",\"snap\",{start:function(e,i,s){var n=s.options;s.snapElements=[],t(n.snap.constructor!==String?n.snap.items||\":data(ui-draggable)\":n.snap).each(function(){var e=t(this),i=e.offset();this!==s.element[0]&&s.snapElements.push({item:this,width:e.outerWidth(),height:e.outerHeight(),top:i.top,left:i.left})})},drag:function(e,i,s){var n,a,o,r,h,l,u,c,d,p,f=s.options,m=f.snapTolerance,g=i.offset.left,v=g+s.helperProportions.width,_=i.offset.top,b=_+s.helperProportions.height;for(d=s.snapElements.length-1;d>=0;d--)h=s.snapElements[d].left-s.margins.left,l=h+s.snapElements[d].width,u=s.snapElements[d].top-s.margins.top,c=u+s.snapElements[d].height,h-m>v||g>l+m||u-m>b||_>c+m||!t.contains(s.snapElements[d].item.ownerDocument,s.snapElements[d].item)?(s.snapElements[d].snapping&&s.options.snap.release&&s.options.snap.release.call(s.element,e,t.extend(s._uiHash(),{snapItem:s.snapElements[d].item})),s.snapElements[d].snapping=!1):(\"inner\"!==f.snapMode&&(n=m>=Math.abs(u-b),a=m>=Math.abs(c-_),o=m>=Math.abs(h-v),r=m>=Math.abs(l-g),n&&(i.position.top=s._convertPositionTo(\"relative\",{top:u-s.helperProportions.height,left:0}).top),a&&(i.position.top=s._convertPositionTo(\"relative\",{top:c,left:0}).top),o&&(i.position.left=s._convertPositionTo(\"relative\",{top:0,left:h-s.helperProportions.width}).left),r&&(i.position.left=s._convertPositionTo(\"relative\",{top:0,left:l}).left)),p=n||a||o||r,\"outer\"!==f.snapMode&&(n=m>=Math.abs(u-_),a=m>=Math.abs(c-b),o=m>=Math.abs(h-g),r=m>=Math.abs(l-v),n&&(i.position.top=s._convertPositionTo(\"relative\",{top:u,left:0}).top),a&&(i.position.top=s._convertPositionTo(\"relative\",{top:c-s.helperProportions.height,left:0}).top),o&&(i.position.left=s._convertPositionTo(\"relative\",{top:0,left:h}).left),r&&(i.position.left=s._convertPositionTo(\"relative\",{top:0,left:l-s.helperProportions.width}).left)),!s.snapElements[d].snapping&&(n||a||o||r||p)&&s.options.snap.snap&&s.options.snap.snap.call(s.element,e,t.extend(s._uiHash(),{snapItem:s.snapElements[d].item})),s.snapElements[d].snapping=n||a||o||r||p)}}),t.ui.plugin.add(\"draggable\",\"stack\",{start:function(e,i,s){var n,a=s.options,o=t.makeArray(t(a.stack)).sort(function(e,i){return(parseInt(t(e).css(\"zIndex\"),10)||0)-(parseInt(t(i).css(\"zIndex\"),10)||0)});o.length&&(n=parseInt(t(o[0]).css(\"zIndex\"),10)||0,t(o).each(function(e){t(this).css(\"zIndex\",n+e)}),this.css(\"zIndex\",n+o.length))}}),t.ui.plugin.add(\"draggable\",\"zIndex\",{start:function(e,i,s){var n=t(i.helper),a=s.options;n.css(\"zIndex\")&&(a._zIndex=n.css(\"zIndex\")),n.css(\"zIndex\",a.zIndex)},stop:function(e,i,s){var n=s.options;n._zIndex&&t(i.helper).css(\"zIndex\",n._zIndex)}}),t.ui.draggable,t.widget(\"ui.droppable\",{version:\"1.11.4\",widgetEventPrefix:\"drop\",options:{accept:\"*\",activeClass:!1,addClasses:!0,greedy:!1,hoverClass:!1,scope:\"default\",tolerance:\"intersect\",activate:null,deactivate:null,drop:null,out:null,over:null},_create:function(){var e,i=this.options,s=i.accept;this.isover=!1,this.isout=!0,this.accept=t.isFunction(s)?s:function(t){return t.is(s)},this.proportions=function(){return arguments.length?(e=arguments[0],void 0):e?e:e={width:this.element[0].offsetWidth,height:this.element[0].offsetHeight}},this._addToManager(i.scope),i.addClasses&&this.element.addClass(\"ui-droppable\")},_addToManager:function(e){t.ui.ddmanager.droppables[e]=t.ui.ddmanager.droppables[e]||[],t.ui.ddmanager.droppables[e].push(this)},_splice:function(t){for(var e=0;t.length>e;e++)t[e]===this&&t.splice(e,1)},_destroy:function(){var e=t.ui.ddmanager.droppables[this.options.scope];this._splice(e),this.element.removeClass(\"ui-droppable ui-droppable-disabled\")},_setOption:function(e,i){if(\"accept\"===e)this.accept=t.isFunction(i)?i:function(t){return t.is(i)};else if(\"scope\"===e){var s=t.ui.ddmanager.droppables[this.options.scope];this._splice(s),this._addToManager(i)}this._super(e,i)},_activate:function(e){var i=t.ui.ddmanager.current;this.options.activeClass&&this.element.addClass(this.options.activeClass),i&&this._trigger(\"activate\",e,this.ui(i))},_deactivate:function(e){var i=t.ui.ddmanager.current;this.options.activeClass&&this.element.removeClass(this.options.activeClass),i&&this._trigger(\"deactivate\",e,this.ui(i))},_over:function(e){var i=t.ui.ddmanager.current;i&&(i.currentItem||i.element)[0]!==this.element[0]&&this.accept.call(this.element[0],i.currentItem||i.element)&&(this.options.hoverClass&&this.element.addClass(this.options.hoverClass),this._trigger(\"over\",e,this.ui(i)))},_out:function(e){var i=t.ui.ddmanager.current;i&&(i.currentItem||i.element)[0]!==this.element[0]&&this.accept.call(this.element[0],i.currentItem||i.element)&&(this.options.hoverClass&&this.element.removeClass(this.options.hoverClass),this._trigger(\"out\",e,this.ui(i)))},_drop:function(e,i){var s=i||t.ui.ddmanager.current,n=!1;return s&&(s.currentItem||s.element)[0]!==this.element[0]?(this.element.find(\":data(ui-droppable)\").not(\".ui-draggable-dragging\").each(function(){var i=t(this).droppable(\"instance\");return i.options.greedy&&!i.options.disabled&&i.options.scope===s.options.scope&&i.accept.call(i.element[0],s.currentItem||s.element)&&t.ui.intersect(s,t.extend(i,{offset:i.element.offset()}),i.options.tolerance,e)?(n=!0,!1):void 0}),n?!1:this.accept.call(this.element[0],s.currentItem||s.element)?(this.options.activeClass&&this.element.removeClass(this.options.activeClass),this.options.hoverClass&&this.element.removeClass(this.options.hoverClass),this._trigger(\"drop\",e,this.ui(s)),this.element):!1):!1},ui:function(t){return{draggable:t.currentItem||t.element,helper:t.helper,position:t.position,offset:t.positionAbs}}}),t.ui.intersect=function(){function t(t,e,i){return t>=e&&e+i>t}return function(e,i,s,n){if(!i.offset)return!1;var a=(e.positionAbs||e.position.absolute).left+e.margins.left,o=(e.positionAbs||e.position.absolute).top+e.margins.top,r=a+e.helperProportions.width,h=o+e.helperProportions.height,l=i.offset.left,u=i.offset.top,c=l+i.proportions().width,d=u+i.proportions().height;switch(s){case\"fit\":return a>=l&&c>=r&&o>=u&&d>=h;case\"intersect\":return a+e.helperProportions.width/2>l&&c>r-e.helperProportions.width/2&&o+e.helperProportions.height/2>u&&d>h-e.helperProportions.height/2;case\"pointer\":return t(n.pageY,u,i.proportions().height)&&t(n.pageX,l,i.proportions().width);case\"touch\":return(o>=u&&d>=o||h>=u&&d>=h||u>o&&h>d)&&(a>=l&&c>=a||r>=l&&c>=r||l>a&&r>c);default:return!1}}}(),t.ui.ddmanager={current:null,droppables:{\"default\":[]},prepareOffsets:function(e,i){var s,n,a=t.ui.ddmanager.droppables[e.options.scope]||[],o=i?i.type:null,r=(e.currentItem||e.element).find(\":data(ui-droppable)\").addBack();t:for(s=0;a.length>s;s++)if(!(a[s].options.disabled||e&&!a[s].accept.call(a[s].element[0],e.currentItem||e.element))){for(n=0;r.length>n;n++)if(r[n]===a[s].element[0]){a[s].proportions().height=0;continue t}a[s].visible=\"none\"!==a[s].element.css(\"display\"),a[s].visible&&(\"mousedown\"===o&&a[s]._activate.call(a[s],i),a[s].offset=a[s].element.offset(),a[s].proportions({width:a[s].element[0].offsetWidth,height:a[s].element[0].offsetHeight}))}},drop:function(e,i){var s=!1;return t.each((t.ui.ddmanager.droppables[e.options.scope]||[]).slice(),function(){this.options&&(!this.options.disabled&&this.visible&&t.ui.intersect(e,this,this.options.tolerance,i)&&(s=this._drop.call(this,i)||s),!this.options.disabled&&this.visible&&this.accept.call(this.element[0],e.currentItem||e.element)&&(this.isout=!0,this.isover=!1,this._deactivate.call(this,i)))}),s},dragStart:function(e,i){e.element.parentsUntil(\"body\").bind(\"scroll.droppable\",function(){e.options.refreshPositions||t.ui.ddmanager.prepareOffsets(e,i)})},drag:function(e,i){e.options.refreshPositions&&t.ui.ddmanager.prepareOffsets(e,i),t.each(t.ui.ddmanager.droppables[e.options.scope]||[],function(){if(!this.options.disabled&&!this.greedyChild&&this.visible){var s,n,a,o=t.ui.intersect(e,this,this.options.tolerance,i),r=!o&&this.isover?\"isout\":o&&!this.isover?\"isover\":null;r&&(this.options.greedy&&(n=this.options.scope,a=this.element.parents(\":data(ui-droppable)\").filter(function(){return t(this).droppable(\"instance\").options.scope===n}),a.length&&(s=t(a[0]).droppable(\"instance\"),s.greedyChild=\"isover\"===r)),s&&\"isover\"===r&&(s.isover=!1,s.isout=!0,s._out.call(s,i)),this[r]=!0,this[\"isout\"===r?\"isover\":\"isout\"]=!1,this[\"isover\"===r?\"_over\":\"_out\"].call(this,i),s&&\"isout\"===r&&(s.isout=!1,s.isover=!0,s._over.call(s,i)))}})},dragStop:function(e,i){e.element.parentsUntil(\"body\").unbind(\"scroll.droppable\"),e.options.refreshPositions||t.ui.ddmanager.prepareOffsets(e,i)}},t.ui.droppable,t.widget(\"ui.resizable\",t.ui.mouse,{version:\"1.11.4\",widgetEventPrefix:\"resize\",options:{alsoResize:!1,animate:!1,animateDuration:\"slow\",animateEasing:\"swing\",aspectRatio:!1,autoHide:!1,containment:!1,ghost:!1,grid:!1,handles:\"e,s,se\",helper:!1,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:90,resize:null,start:null,stop:null},_num:function(t){return parseInt(t,10)||0},_isNumber:function(t){return!isNaN(parseInt(t,10))},_hasScroll:function(e,i){if(\"hidden\"===t(e).css(\"overflow\"))return!1;var s=i&&\"left\"===i?\"scrollLeft\":\"scrollTop\",n=!1;return e[s]>0?!0:(e[s]=1,n=e[s]>0,e[s]=0,n)},_create:function(){var e,i,s,n,a,o=this,r=this.options;if(this.element.addClass(\"ui-resizable\"),t.extend(this,{_aspectRatio:!!r.aspectRatio,aspectRatio:r.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:r.helper||r.ghost||r.animate?r.helper||\"ui-resizable-helper\":null}),this.element[0].nodeName.match(/^(canvas|textarea|input|select|button|img)$/i)&&(this.element.wrap(t(\"<div class='ui-wrapper' style='overflow: hidden;'></div>\").css({position:this.element.css(\"position\"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css(\"top\"),left:this.element.css(\"left\")})),this.element=this.element.parent().data(\"ui-resizable\",this.element.resizable(\"instance\")),this.elementIsWrapper=!0,this.element.css({marginLeft:this.originalElement.css(\"marginLeft\"),marginTop:this.originalElement.css(\"marginTop\"),marginRight:this.originalElement.css(\"marginRight\"),marginBottom:this.originalElement.css(\"marginBottom\")}),this.originalElement.css({marginLeft:0,marginTop:0,marginRight:0,marginBottom:0}),this.originalResizeStyle=this.originalElement.css(\"resize\"),this.originalElement.css(\"resize\",\"none\"),this._proportionallyResizeElements.push(this.originalElement.css({position:\"static\",zoom:1,display:\"block\"})),this.originalElement.css({margin:this.originalElement.css(\"margin\")}),this._proportionallyResize()),this.handles=r.handles||(t(\".ui-resizable-handle\",this.element).length?{n:\".ui-resizable-n\",e:\".ui-resizable-e\",s:\".ui-resizable-s\",w:\".ui-resizable-w\",se:\".ui-resizable-se\",sw:\".ui-resizable-sw\",ne:\".ui-resizable-ne\",nw:\".ui-resizable-nw\"}:\"e,s,se\"),this._handles=t(),this.handles.constructor===String)for(\"all\"===this.handles&&(this.handles=\"n,e,s,w,se,sw,ne,nw\"),e=this.handles.split(\",\"),this.handles={},i=0;e.length>i;i++)s=t.trim(e[i]),a=\"ui-resizable-\"+s,n=t(\"<div class='ui-resizable-handle \"+a+\"'></div>\"),n.css({zIndex:r.zIndex}),\"se\"===s&&n.addClass(\"ui-icon ui-icon-gripsmall-diagonal-se\"),this.handles[s]=\".ui-resizable-\"+s,this.element.append(n);this._renderAxis=function(e){var i,s,n,a;e=e||this.element;for(i in this.handles)this.handles[i].constructor===String?this.handles[i]=this.element.children(this.handles[i]).first().show():(this.handles[i].jquery||this.handles[i].nodeType)&&(this.handles[i]=t(this.handles[i]),this._on(this.handles[i],{mousedown:o._mouseDown})),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/^(textarea|input|select|button)$/i)&&(s=t(this.handles[i],this.element),a=/sw|ne|nw|se|n|s/.test(i)?s.outerHeight():s.outerWidth(),n=[\"padding\",/ne|nw|n/.test(i)?\"Top\":/se|sw|s/.test(i)?\"Bottom\":/^e$/.test(i)?\"Right\":\"Left\"].join(\"\"),e.css(n,a),this._proportionallyResize()),this._handles=this._handles.add(this.handles[i])},this._renderAxis(this.element),this._handles=this._handles.add(this.element.find(\".ui-resizable-handle\")),this._handles.disableSelection(),this._handles.mouseover(function(){o.resizing||(this.className&&(n=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),o.axis=n&&n[1]?n[1]:\"se\")}),r.autoHide&&(this._handles.hide(),t(this.element).addClass(\"ui-resizable-autohide\").mouseenter(function(){r.disabled||(t(this).removeClass(\"ui-resizable-autohide\"),o._handles.show())}).mouseleave(function(){r.disabled||o.resizing||(t(this).addClass(\"ui-resizable-autohide\"),o._handles.hide())})),this._mouseInit()},_destroy:function(){this._mouseDestroy();var e,i=function(e){t(e).removeClass(\"ui-resizable ui-resizable-disabled ui-resizable-resizing\").removeData(\"resizable\").removeData(\"ui-resizable\").unbind(\".resizable\").find(\".ui-resizable-handle\").remove()};return this.elementIsWrapper&&(i(this.element),e=this.element,this.originalElement.css({position:e.css(\"position\"),width:e.outerWidth(),height:e.outerHeight(),top:e.css(\"top\"),left:e.css(\"left\")}).insertAfter(e),e.remove()),this.originalElement.css(\"resize\",this.originalResizeStyle),i(this.originalElement),this},_mouseCapture:function(e){var i,s,n=!1;for(i in this.handles)s=t(this.handles[i])[0],(s===e.target||t.contains(s,e.target))&&(n=!0);return!this.options.disabled&&n},_mouseStart:function(e){var i,s,n,a=this.options,o=this.element;return this.resizing=!0,this._renderProxy(),i=this._num(this.helper.css(\"left\")),s=this._num(this.helper.css(\"top\")),a.containment&&(i+=t(a.containment).scrollLeft()||0,s+=t(a.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:i,top:s},this.size=this._helper?{width:this.helper.width(),height:this.helper.height()}:{width:o.width(),height:o.height()},this.originalSize=this._helper?{width:o.outerWidth(),height:o.outerHeight()}:{width:o.width(),height:o.height()},this.sizeDiff={width:o.outerWidth()-o.width(),height:o.outerHeight()-o.height()},this.originalPosition={left:i,top:s},this.originalMousePosition={left:e.pageX,top:e.pageY},this.aspectRatio=\"number\"==typeof a.aspectRatio?a.aspectRatio:this.originalSize.width/this.originalSize.height||1,n=t(\".ui-resizable-\"+this.axis).css(\"cursor\"),t(\"body\").css(\"cursor\",\"auto\"===n?this.axis+\"-resize\":n),o.addClass(\"ui-resizable-resizing\"),this._propagate(\"start\",e),!0},_mouseDrag:function(e){var i,s,n=this.originalMousePosition,a=this.axis,o=e.pageX-n.left||0,r=e.pageY-n.top||0,h=this._change[a];return this._updatePrevProperties(),h?(i=h.apply(this,[e,o,r]),this._updateVirtualBoundaries(e.shiftKey),(this._aspectRatio||e.shiftKey)&&(i=this._updateRatio(i,e)),i=this._respectSize(i,e),this._updateCache(i),this._propagate(\"resize\",e),s=this._applyChanges(),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),t.isEmptyObject(s)||(this._updatePrevProperties(),this._trigger(\"resize\",e,this.ui()),this._applyChanges()),!1):!1},_mouseStop:function(e){this.resizing=!1;var i,s,n,a,o,r,h,l=this.options,u=this;return this._helper&&(i=this._proportionallyResizeElements,s=i.length&&/textarea/i.test(i[0].nodeName),n=s&&this._hasScroll(i[0],\"left\")?0:u.sizeDiff.height,a=s?0:u.sizeDiff.width,o={width:u.helper.width()-a,height:u.helper.height()-n},r=parseInt(u.element.css(\"left\"),10)+(u.position.left-u.originalPosition.left)||null,h=parseInt(u.element.css(\"top\"),10)+(u.position.top-u.originalPosition.top)||null,l.animate||this.element.css(t.extend(o,{top:h,left:r})),u.helper.height(u.size.height),u.helper.width(u.size.width),this._helper&&!l.animate&&this._proportionallyResize()),t(\"body\").css(\"cursor\",\"auto\"),this.element.removeClass(\"ui-resizable-resizing\"),this._propagate(\"stop\",e),this._helper&&this.helper.remove(),!1},_updatePrevProperties:function(){this.prevPosition={top:this.position.top,left:this.position.left},this.prevSize={width:this.size.width,height:this.size.height}},_applyChanges:function(){var t={};return this.position.top!==this.prevPosition.top&&(t.top=this.position.top+\"px\"),this.position.left!==this.prevPosition.left&&(t.left=this.position.left+\"px\"),this.size.width!==this.prevSize.width&&(t.width=this.size.width+\"px\"),this.size.height!==this.prevSize.height&&(t.height=this.size.height+\"px\"),this.helper.css(t),t},_updateVirtualBoundaries:function(t){var e,i,s,n,a,o=this.options;a={minWidth:this._isNumber(o.minWidth)?o.minWidth:0,maxWidth:this._isNumber(o.maxWidth)?o.maxWidth:1/0,minHeight:this._isNumber(o.minHeight)?o.minHeight:0,maxHeight:this._isNumber(o.maxHeight)?o.maxHeight:1/0},(this._aspectRatio||t)&&(e=a.minHeight*this.aspectRatio,s=a.minWidth/this.aspectRatio,i=a.maxHeight*this.aspectRatio,n=a.maxWidth/this.aspectRatio,e>a.minWidth&&(a.minWidth=e),s>a.minHeight&&(a.minHeight=s),a.maxWidth>i&&(a.maxWidth=i),a.maxHeight>n&&(a.maxHeight=n)),this._vBoundaries=a},_updateCache:function(t){this.offset=this.helper.offset(),this._isNumber(t.left)&&(this.position.left=t.left),this._isNumber(t.top)&&(this.position.top=t.top),this._isNumber(t.height)&&(this.size.height=t.height),this._isNumber(t.width)&&(this.size.width=t.width)},_updateRatio:function(t){var e=this.position,i=this.size,s=this.axis;return this._isNumber(t.height)?t.width=t.height*this.aspectRatio:this._isNumber(t.width)&&(t.height=t.width/this.aspectRatio),\"sw\"===s&&(t.left=e.left+(i.width-t.width),t.top=null),\"nw\"===s&&(t.top=e.top+(i.height-t.height),t.left=e.left+(i.width-t.width)),t},_respectSize:function(t){var e=this._vBoundaries,i=this.axis,s=this._isNumber(t.width)&&e.maxWidth&&e.maxWidth<t.width,n=this._isNumber(t.height)&&e.maxHeight&&e.maxHeight<t.height,a=this._isNumber(t.width)&&e.minWidth&&e.minWidth>t.width,o=this._isNumber(t.height)&&e.minHeight&&e.minHeight>t.height,r=this.originalPosition.left+this.originalSize.width,h=this.position.top+this.size.height,l=/sw|nw|w/.test(i),u=/nw|ne|n/.test(i);return a&&(t.width=e.minWidth),o&&(t.height=e.minHeight),s&&(t.width=e.maxWidth),n&&(t.height=e.maxHeight),a&&l&&(t.left=r-e.minWidth),s&&l&&(t.left=r-e.maxWidth),o&&u&&(t.top=h-e.minHeight),n&&u&&(t.top=h-e.maxHeight),t.width||t.height||t.left||!t.top?t.width||t.height||t.top||!t.left||(t.left=null):t.top=null,t},_getPaddingPlusBorderDimensions:function(t){for(var e=0,i=[],s=[t.css(\"borderTopWidth\"),t.css(\"borderRightWidth\"),t.css(\"borderBottomWidth\"),t.css(\"borderLeftWidth\")],n=[t.css(\"paddingTop\"),t.css(\"paddingRight\"),t.css(\"paddingBottom\"),t.css(\"paddingLeft\")];4>e;e++)i[e]=parseInt(s[e],10)||0,i[e]+=parseInt(n[e],10)||0;return{height:i[0]+i[2],width:i[1]+i[3]}},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var t,e=0,i=this.helper||this.element;this._proportionallyResizeElements.length>e;e++)t=this._proportionallyResizeElements[e],this.outerDimensions||(this.outerDimensions=this._getPaddingPlusBorderDimensions(t)),t.css({height:i.height()-this.outerDimensions.height||0,width:i.width()-this.outerDimensions.width||0})},_renderProxy:function(){var e=this.element,i=this.options;this.elementOffset=e.offset(),this._helper?(this.helper=this.helper||t(\"<div style='overflow:hidden;'></div>\"),this.helper.addClass(this._helper).css({width:this.element.outerWidth()-1,height:this.element.outerHeight()-1,position:\"absolute\",left:this.elementOffset.left+\"px\",top:this.elementOffset.top+\"px\",zIndex:++i.zIndex}),this.helper.appendTo(\"body\").disableSelection()):this.helper=this.element},_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var i=this.originalSize,s=this.originalPosition;return{left:s.left+e,width:i.width-e}},n:function(t,e,i){var s=this.originalSize,n=this.originalPosition;return{top:n.top+i,height:s.height-i}},s:function(t,e,i){return{height:this.originalSize.height+i}},se:function(e,i,s){return t.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[e,i,s]))},sw:function(e,i,s){return t.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[e,i,s]))},ne:function(e,i,s){return t.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[e,i,s]))},nw:function(e,i,s){return t.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[e,i,s]))}},_propagate:function(e,i){t.ui.plugin.call(this,e,[i,this.ui()]),\"resize\"!==e&&this._trigger(e,i,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),t.ui.plugin.add(\"resizable\",\"animate\",{stop:function(e){var i=t(this).resizable(\"instance\"),s=i.options,n=i._proportionallyResizeElements,a=n.length&&/textarea/i.test(n[0].nodeName),o=a&&i._hasScroll(n[0],\"left\")?0:i.sizeDiff.height,r=a?0:i.sizeDiff.width,h={width:i.size.width-r,height:i.size.height-o},l=parseInt(i.element.css(\"left\"),10)+(i.position.left-i.originalPosition.left)||null,u=parseInt(i.element.css(\"top\"),10)+(i.position.top-i.originalPosition.top)||null;i.element.animate(t.extend(h,u&&l?{top:u,left:l}:{}),{duration:s.animateDuration,easing:s.animateEasing,step:function(){var s={width:parseInt(i.element.css(\"width\"),10),height:parseInt(i.element.css(\"height\"),10),top:parseInt(i.element.css(\"top\"),10),left:parseInt(i.element.css(\"left\"),10)};n&&n.length&&t(n[0]).css({width:s.width,height:s.height}),i._updateCache(s),i._propagate(\"resize\",e)}})}}),t.ui.plugin.add(\"resizable\",\"containment\",{start:function(){var e,i,s,n,a,o,r,h=t(this).resizable(\"instance\"),l=h.options,u=h.element,c=l.containment,d=c instanceof t?c.get(0):/parent/.test(c)?u.parent().get(0):c;d&&(h.containerElement=t(d),/document/.test(c)||c===document?(h.containerOffset={left:0,top:0},h.containerPosition={left:0,top:0},h.parentData={element:t(document),left:0,top:0,width:t(document).width(),height:t(document).height()||document.body.parentNode.scrollHeight}):(e=t(d),i=[],t([\"Top\",\"Right\",\"Left\",\"Bottom\"]).each(function(t,s){i[t]=h._num(e.css(\"padding\"+s))}),h.containerOffset=e.offset(),h.containerPosition=e.position(),h.containerSize={height:e.innerHeight()-i[3],width:e.innerWidth()-i[1]},s=h.containerOffset,n=h.containerSize.height,a=h.containerSize.width,o=h._hasScroll(d,\"left\")?d.scrollWidth:a,r=h._hasScroll(d)?d.scrollHeight:n,h.parentData={element:d,left:s.left,top:s.top,width:o,height:r}))},resize:function(e){var i,s,n,a,o=t(this).resizable(\"instance\"),r=o.options,h=o.containerOffset,l=o.position,u=o._aspectRatio||e.shiftKey,c={top:0,left:0},d=o.containerElement,p=!0;d[0]!==document&&/static/.test(d.css(\"position\"))&&(c=h),l.left<(o._helper?h.left:0)&&(o.size.width=o.size.width+(o._helper?o.position.left-h.left:o.position.left-c.left),u&&(o.size.height=o.size.width/o.aspectRatio,p=!1),o.position.left=r.helper?h.left:0),l.top<(o._helper?h.top:0)&&(o.size.height=o.size.height+(o._helper?o.position.top-h.top:o.position.top),u&&(o.size.width=o.size.height*o.aspectRatio,p=!1),o.position.top=o._helper?h.top:0),n=o.containerElement.get(0)===o.element.parent().get(0),a=/relative|absolute/.test(o.containerElement.css(\"position\")),n&&a?(o.offset.left=o.parentData.left+o.position.left,o.offset.top=o.parentData.top+o.position.top):(o.offset.left=o.element.offset().left,o.offset.top=o.element.offset().top),i=Math.abs(o.sizeDiff.width+(o._helper?o.offset.left-c.left:o.offset.left-h.left)),s=Math.abs(o.sizeDiff.height+(o._helper?o.offset.top-c.top:o.offset.top-h.top)),i+o.size.width>=o.parentData.width&&(o.size.width=o.parentData.width-i,u&&(o.size.height=o.size.width/o.aspectRatio,p=!1)),s+o.size.height>=o.parentData.height&&(o.size.height=o.parentData.height-s,u&&(o.size.width=o.size.height*o.aspectRatio,p=!1)),p||(o.position.left=o.prevPosition.left,o.position.top=o.prevPosition.top,o.size.width=o.prevSize.width,o.size.height=o.prevSize.height)},stop:function(){var e=t(this).resizable(\"instance\"),i=e.options,s=e.containerOffset,n=e.containerPosition,a=e.containerElement,o=t(e.helper),r=o.offset(),h=o.outerWidth()-e.sizeDiff.width,l=o.outerHeight()-e.sizeDiff.height;e._helper&&!i.animate&&/relative/.test(a.css(\"position\"))&&t(this).css({left:r.left-n.left-s.left,width:h,height:l}),e._helper&&!i.animate&&/static/.test(a.css(\"position\"))&&t(this).css({left:r.left-n.left-s.left,width:h,height:l})}}),t.ui.plugin.add(\"resizable\",\"alsoResize\",{start:function(){var e=t(this).resizable(\"instance\"),i=e.options;t(i.alsoResize).each(function(){var e=t(this);e.data(\"ui-resizable-alsoresize\",{width:parseInt(e.width(),10),height:parseInt(e.height(),10),left:parseInt(e.css(\"left\"),10),top:parseInt(e.css(\"top\"),10)})})},resize:function(e,i){var s=t(this).resizable(\"instance\"),n=s.options,a=s.originalSize,o=s.originalPosition,r={height:s.size.height-a.height||0,width:s.size.width-a.width||0,top:s.position.top-o.top||0,left:s.position.left-o.left||0};t(n.alsoResize).each(function(){var e=t(this),s=t(this).data(\"ui-resizable-alsoresize\"),n={},a=e.parents(i.originalElement[0]).length?[\"width\",\"height\"]:[\"width\",\"height\",\"top\",\"left\"];t.each(a,function(t,e){var i=(s[e]||0)+(r[e]||0);i&&i>=0&&(n[e]=i||null)}),e.css(n)})},stop:function(){t(this).removeData(\"resizable-alsoresize\")}}),t.ui.plugin.add(\"resizable\",\"ghost\",{start:function(){var e=t(this).resizable(\"instance\"),i=e.options,s=e.size;e.ghost=e.originalElement.clone(),e.ghost.css({opacity:.25,display:\"block\",position:\"relative\",height:s.height,width:s.width,margin:0,left:0,top:0}).addClass(\"ui-resizable-ghost\").addClass(\"string\"==typeof i.ghost?i.ghost:\"\"),e.ghost.appendTo(e.helper)},resize:function(){var e=t(this).resizable(\"instance\");e.ghost&&e.ghost.css({position:\"relative\",height:e.size.height,width:e.size.width})},stop:function(){var e=t(this).resizable(\"instance\");e.ghost&&e.helper&&e.helper.get(0).removeChild(e.ghost.get(0))}}),t.ui.plugin.add(\"resizable\",\"grid\",{resize:function(){var e,i=t(this).resizable(\"instance\"),s=i.options,n=i.size,a=i.originalSize,o=i.originalPosition,r=i.axis,h=\"number\"==typeof s.grid?[s.grid,s.grid]:s.grid,l=h[0]||1,u=h[1]||1,c=Math.round((n.width-a.width)/l)*l,d=Math.round((n.height-a.height)/u)*u,p=a.width+c,f=a.height+d,m=s.maxWidth&&p>s.maxWidth,g=s.maxHeight&&f>s.maxHeight,v=s.minWidth&&s.minWidth>p,_=s.minHeight&&s.minHeight>f;s.grid=h,v&&(p+=l),_&&(f+=u),m&&(p-=l),g&&(f-=u),/^(se|s|e)$/.test(r)?(i.size.width=p,i.size.height=f):/^(ne)$/.test(r)?(i.size.width=p,i.size.height=f,i.position.top=o.top-d):/^(sw)$/.test(r)?(i.size.width=p,i.size.height=f,i.position.left=o.left-c):((0>=f-u||0>=p-l)&&(e=i._getPaddingPlusBorderDimensions(this)),f-u>0?(i.size.height=f,i.position.top=o.top-d):(f=u-e.height,i.size.height=f,i.position.top=o.top+a.height-f),p-l>0?(i.size.width=p,i.position.left=o.left-c):(p=l-e.width,i.size.width=p,i.position.left=o.left+a.width-p))}}),t.ui.resizable,t.widget(\"ui.selectable\",t.ui.mouse,{version:\"1.11.4\",options:{appendTo:\"body\",autoRefresh:!0,distance:0,filter:\"*\",tolerance:\"touch\",selected:null,selecting:null,start:null,stop:null,unselected:null,unselecting:null},_create:function(){var e,i=this;\nthis.element.addClass(\"ui-selectable\"),this.dragged=!1,this.refresh=function(){e=t(i.options.filter,i.element[0]),e.addClass(\"ui-selectee\"),e.each(function(){var e=t(this),i=e.offset();t.data(this,\"selectable-item\",{element:this,$element:e,left:i.left,top:i.top,right:i.left+e.outerWidth(),bottom:i.top+e.outerHeight(),startselected:!1,selected:e.hasClass(\"ui-selected\"),selecting:e.hasClass(\"ui-selecting\"),unselecting:e.hasClass(\"ui-unselecting\")})})},this.refresh(),this.selectees=e.addClass(\"ui-selectee\"),this._mouseInit(),this.helper=t(\"<div class='ui-selectable-helper'></div>\")},_destroy:function(){this.selectees.removeClass(\"ui-selectee\").removeData(\"selectable-item\"),this.element.removeClass(\"ui-selectable ui-selectable-disabled\"),this._mouseDestroy()},_mouseStart:function(e){var i=this,s=this.options;this.opos=[e.pageX,e.pageY],this.options.disabled||(this.selectees=t(s.filter,this.element[0]),this._trigger(\"start\",e),t(s.appendTo).append(this.helper),this.helper.css({left:e.pageX,top:e.pageY,width:0,height:0}),s.autoRefresh&&this.refresh(),this.selectees.filter(\".ui-selected\").each(function(){var s=t.data(this,\"selectable-item\");s.startselected=!0,e.metaKey||e.ctrlKey||(s.$element.removeClass(\"ui-selected\"),s.selected=!1,s.$element.addClass(\"ui-unselecting\"),s.unselecting=!0,i._trigger(\"unselecting\",e,{unselecting:s.element}))}),t(e.target).parents().addBack().each(function(){var s,n=t.data(this,\"selectable-item\");return n?(s=!e.metaKey&&!e.ctrlKey||!n.$element.hasClass(\"ui-selected\"),n.$element.removeClass(s?\"ui-unselecting\":\"ui-selected\").addClass(s?\"ui-selecting\":\"ui-unselecting\"),n.unselecting=!s,n.selecting=s,n.selected=s,s?i._trigger(\"selecting\",e,{selecting:n.element}):i._trigger(\"unselecting\",e,{unselecting:n.element}),!1):void 0}))},_mouseDrag:function(e){if(this.dragged=!0,!this.options.disabled){var i,s=this,n=this.options,a=this.opos[0],o=this.opos[1],r=e.pageX,h=e.pageY;return a>r&&(i=r,r=a,a=i),o>h&&(i=h,h=o,o=i),this.helper.css({left:a,top:o,width:r-a,height:h-o}),this.selectees.each(function(){var i=t.data(this,\"selectable-item\"),l=!1;i&&i.element!==s.element[0]&&(\"touch\"===n.tolerance?l=!(i.left>r||a>i.right||i.top>h||o>i.bottom):\"fit\"===n.tolerance&&(l=i.left>a&&r>i.right&&i.top>o&&h>i.bottom),l?(i.selected&&(i.$element.removeClass(\"ui-selected\"),i.selected=!1),i.unselecting&&(i.$element.removeClass(\"ui-unselecting\"),i.unselecting=!1),i.selecting||(i.$element.addClass(\"ui-selecting\"),i.selecting=!0,s._trigger(\"selecting\",e,{selecting:i.element}))):(i.selecting&&((e.metaKey||e.ctrlKey)&&i.startselected?(i.$element.removeClass(\"ui-selecting\"),i.selecting=!1,i.$element.addClass(\"ui-selected\"),i.selected=!0):(i.$element.removeClass(\"ui-selecting\"),i.selecting=!1,i.startselected&&(i.$element.addClass(\"ui-unselecting\"),i.unselecting=!0),s._trigger(\"unselecting\",e,{unselecting:i.element}))),i.selected&&(e.metaKey||e.ctrlKey||i.startselected||(i.$element.removeClass(\"ui-selected\"),i.selected=!1,i.$element.addClass(\"ui-unselecting\"),i.unselecting=!0,s._trigger(\"unselecting\",e,{unselecting:i.element})))))}),!1}},_mouseStop:function(e){var i=this;return this.dragged=!1,t(\".ui-unselecting\",this.element[0]).each(function(){var s=t.data(this,\"selectable-item\");s.$element.removeClass(\"ui-unselecting\"),s.unselecting=!1,s.startselected=!1,i._trigger(\"unselected\",e,{unselected:s.element})}),t(\".ui-selecting\",this.element[0]).each(function(){var s=t.data(this,\"selectable-item\");s.$element.removeClass(\"ui-selecting\").addClass(\"ui-selected\"),s.selecting=!1,s.selected=!0,s.startselected=!0,i._trigger(\"selected\",e,{selected:s.element})}),this._trigger(\"stop\",e),this.helper.remove(),!1}}),t.widget(\"ui.sortable\",t.ui.mouse,{version:\"1.11.4\",widgetEventPrefix:\"sort\",ready:!1,options:{appendTo:\"parent\",axis:!1,connectWith:!1,containment:!1,cursor:\"auto\",cursorAt:!1,dropOnEmpty:!0,forcePlaceholderSize:!1,forceHelperSize:!1,grid:!1,handle:!1,helper:\"original\",items:\"> *\",opacity:!1,placeholder:!1,revert:!1,scroll:!0,scrollSensitivity:20,scrollSpeed:20,scope:\"default\",tolerance:\"intersect\",zIndex:1e3,activate:null,beforeStop:null,change:null,deactivate:null,out:null,over:null,receive:null,remove:null,sort:null,start:null,stop:null,update:null},_isOverAxis:function(t,e,i){return t>=e&&e+i>t},_isFloating:function(t){return/left|right/.test(t.css(\"float\"))||/inline|table-cell/.test(t.css(\"display\"))},_create:function(){this.containerCache={},this.element.addClass(\"ui-sortable\"),this.refresh(),this.offset=this.element.offset(),this._mouseInit(),this._setHandleClassName(),this.ready=!0},_setOption:function(t,e){this._super(t,e),\"handle\"===t&&this._setHandleClassName()},_setHandleClassName:function(){this.element.find(\".ui-sortable-handle\").removeClass(\"ui-sortable-handle\"),t.each(this.items,function(){(this.instance.options.handle?this.item.find(this.instance.options.handle):this.item).addClass(\"ui-sortable-handle\")})},_destroy:function(){this.element.removeClass(\"ui-sortable ui-sortable-disabled\").find(\".ui-sortable-handle\").removeClass(\"ui-sortable-handle\"),this._mouseDestroy();for(var t=this.items.length-1;t>=0;t--)this.items[t].item.removeData(this.widgetName+\"-item\");return this},_mouseCapture:function(e,i){var s=null,n=!1,a=this;return this.reverting?!1:this.options.disabled||\"static\"===this.options.type?!1:(this._refreshItems(e),t(e.target).parents().each(function(){return t.data(this,a.widgetName+\"-item\")===a?(s=t(this),!1):void 0}),t.data(e.target,a.widgetName+\"-item\")===a&&(s=t(e.target)),s?!this.options.handle||i||(t(this.options.handle,s).find(\"*\").addBack().each(function(){this===e.target&&(n=!0)}),n)?(this.currentItem=s,this._removeCurrentsFromItems(),!0):!1:!1)},_mouseStart:function(e,i,s){var n,a,o=this.options;if(this.currentContainer=this,this.refreshPositions(),this.helper=this._createHelper(e),this._cacheHelperProportions(),this._cacheMargins(),this.scrollParent=this.helper.scrollParent(),this.offset=this.currentItem.offset(),this.offset={top:this.offset.top-this.margins.top,left:this.offset.left-this.margins.left},t.extend(this.offset,{click:{left:e.pageX-this.offset.left,top:e.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()}),this.helper.css(\"position\",\"absolute\"),this.cssPosition=this.helper.css(\"position\"),this.originalPosition=this._generatePosition(e),this.originalPageX=e.pageX,this.originalPageY=e.pageY,o.cursorAt&&this._adjustOffsetFromHelper(o.cursorAt),this.domPosition={prev:this.currentItem.prev()[0],parent:this.currentItem.parent()[0]},this.helper[0]!==this.currentItem[0]&&this.currentItem.hide(),this._createPlaceholder(),o.containment&&this._setContainment(),o.cursor&&\"auto\"!==o.cursor&&(a=this.document.find(\"body\"),this.storedCursor=a.css(\"cursor\"),a.css(\"cursor\",o.cursor),this.storedStylesheet=t(\"<style>*{ cursor: \"+o.cursor+\" !important; }</style>\").appendTo(a)),o.opacity&&(this.helper.css(\"opacity\")&&(this._storedOpacity=this.helper.css(\"opacity\")),this.helper.css(\"opacity\",o.opacity)),o.zIndex&&(this.helper.css(\"zIndex\")&&(this._storedZIndex=this.helper.css(\"zIndex\")),this.helper.css(\"zIndex\",o.zIndex)),this.scrollParent[0]!==this.document[0]&&\"HTML\"!==this.scrollParent[0].tagName&&(this.overflowOffset=this.scrollParent.offset()),this._trigger(\"start\",e,this._uiHash()),this._preserveHelperProportions||this._cacheHelperProportions(),!s)for(n=this.containers.length-1;n>=0;n--)this.containers[n]._trigger(\"activate\",e,this._uiHash(this));return t.ui.ddmanager&&(t.ui.ddmanager.current=this),t.ui.ddmanager&&!o.dropBehaviour&&t.ui.ddmanager.prepareOffsets(this,e),this.dragging=!0,this.helper.addClass(\"ui-sortable-helper\"),this._mouseDrag(e),!0},_mouseDrag:function(e){var i,s,n,a,o=this.options,r=!1;for(this.position=this._generatePosition(e),this.positionAbs=this._convertPositionTo(\"absolute\"),this.lastPositionAbs||(this.lastPositionAbs=this.positionAbs),this.options.scroll&&(this.scrollParent[0]!==this.document[0]&&\"HTML\"!==this.scrollParent[0].tagName?(this.overflowOffset.top+this.scrollParent[0].offsetHeight-e.pageY<o.scrollSensitivity?this.scrollParent[0].scrollTop=r=this.scrollParent[0].scrollTop+o.scrollSpeed:e.pageY-this.overflowOffset.top<o.scrollSensitivity&&(this.scrollParent[0].scrollTop=r=this.scrollParent[0].scrollTop-o.scrollSpeed),this.overflowOffset.left+this.scrollParent[0].offsetWidth-e.pageX<o.scrollSensitivity?this.scrollParent[0].scrollLeft=r=this.scrollParent[0].scrollLeft+o.scrollSpeed:e.pageX-this.overflowOffset.left<o.scrollSensitivity&&(this.scrollParent[0].scrollLeft=r=this.scrollParent[0].scrollLeft-o.scrollSpeed)):(e.pageY-this.document.scrollTop()<o.scrollSensitivity?r=this.document.scrollTop(this.document.scrollTop()-o.scrollSpeed):this.window.height()-(e.pageY-this.document.scrollTop())<o.scrollSensitivity&&(r=this.document.scrollTop(this.document.scrollTop()+o.scrollSpeed)),e.pageX-this.document.scrollLeft()<o.scrollSensitivity?r=this.document.scrollLeft(this.document.scrollLeft()-o.scrollSpeed):this.window.width()-(e.pageX-this.document.scrollLeft())<o.scrollSensitivity&&(r=this.document.scrollLeft(this.document.scrollLeft()+o.scrollSpeed))),r!==!1&&t.ui.ddmanager&&!o.dropBehaviour&&t.ui.ddmanager.prepareOffsets(this,e)),this.positionAbs=this._convertPositionTo(\"absolute\"),this.options.axis&&\"y\"===this.options.axis||(this.helper[0].style.left=this.position.left+\"px\"),this.options.axis&&\"x\"===this.options.axis||(this.helper[0].style.top=this.position.top+\"px\"),i=this.items.length-1;i>=0;i--)if(s=this.items[i],n=s.item[0],a=this._intersectsWithPointer(s),a&&s.instance===this.currentContainer&&n!==this.currentItem[0]&&this.placeholder[1===a?\"next\":\"prev\"]()[0]!==n&&!t.contains(this.placeholder[0],n)&&(\"semi-dynamic\"===this.options.type?!t.contains(this.element[0],n):!0)){if(this.direction=1===a?\"down\":\"up\",\"pointer\"!==this.options.tolerance&&!this._intersectsWithSides(s))break;this._rearrange(e,s),this._trigger(\"change\",e,this._uiHash());break}return this._contactContainers(e),t.ui.ddmanager&&t.ui.ddmanager.drag(this,e),this._trigger(\"sort\",e,this._uiHash()),this.lastPositionAbs=this.positionAbs,!1},_mouseStop:function(e,i){if(e){if(t.ui.ddmanager&&!this.options.dropBehaviour&&t.ui.ddmanager.drop(this,e),this.options.revert){var s=this,n=this.placeholder.offset(),a=this.options.axis,o={};a&&\"x\"!==a||(o.left=n.left-this.offset.parent.left-this.margins.left+(this.offsetParent[0]===this.document[0].body?0:this.offsetParent[0].scrollLeft)),a&&\"y\"!==a||(o.top=n.top-this.offset.parent.top-this.margins.top+(this.offsetParent[0]===this.document[0].body?0:this.offsetParent[0].scrollTop)),this.reverting=!0,t(this.helper).animate(o,parseInt(this.options.revert,10)||500,function(){s._clear(e)})}else this._clear(e,i);return!1}},cancel:function(){if(this.dragging){this._mouseUp({target:null}),\"original\"===this.options.helper?this.currentItem.css(this._storedCSS).removeClass(\"ui-sortable-helper\"):this.currentItem.show();for(var e=this.containers.length-1;e>=0;e--)this.containers[e]._trigger(\"deactivate\",null,this._uiHash(this)),this.containers[e].containerCache.over&&(this.containers[e]._trigger(\"out\",null,this._uiHash(this)),this.containers[e].containerCache.over=0)}return this.placeholder&&(this.placeholder[0].parentNode&&this.placeholder[0].parentNode.removeChild(this.placeholder[0]),\"original\"!==this.options.helper&&this.helper&&this.helper[0].parentNode&&this.helper.remove(),t.extend(this,{helper:null,dragging:!1,reverting:!1,_noFinalSort:null}),this.domPosition.prev?t(this.domPosition.prev).after(this.currentItem):t(this.domPosition.parent).prepend(this.currentItem)),this},serialize:function(e){var i=this._getItemsAsjQuery(e&&e.connected),s=[];return e=e||{},t(i).each(function(){var i=(t(e.item||this).attr(e.attribute||\"id\")||\"\").match(e.expression||/(.+)[\\-=_](.+)/);i&&s.push((e.key||i[1]+\"[]\")+\"=\"+(e.key&&e.expression?i[1]:i[2]))}),!s.length&&e.key&&s.push(e.key+\"=\"),s.join(\"&\")},toArray:function(e){var i=this._getItemsAsjQuery(e&&e.connected),s=[];return e=e||{},i.each(function(){s.push(t(e.item||this).attr(e.attribute||\"id\")||\"\")}),s},_intersectsWith:function(t){var e=this.positionAbs.left,i=e+this.helperProportions.width,s=this.positionAbs.top,n=s+this.helperProportions.height,a=t.left,o=a+t.width,r=t.top,h=r+t.height,l=this.offset.click.top,u=this.offset.click.left,c=\"x\"===this.options.axis||s+l>r&&h>s+l,d=\"y\"===this.options.axis||e+u>a&&o>e+u,p=c&&d;return\"pointer\"===this.options.tolerance||this.options.forcePointerForContainers||\"pointer\"!==this.options.tolerance&&this.helperProportions[this.floating?\"width\":\"height\"]>t[this.floating?\"width\":\"height\"]?p:e+this.helperProportions.width/2>a&&o>i-this.helperProportions.width/2&&s+this.helperProportions.height/2>r&&h>n-this.helperProportions.height/2},_intersectsWithPointer:function(t){var e=\"x\"===this.options.axis||this._isOverAxis(this.positionAbs.top+this.offset.click.top,t.top,t.height),i=\"y\"===this.options.axis||this._isOverAxis(this.positionAbs.left+this.offset.click.left,t.left,t.width),s=e&&i,n=this._getDragVerticalDirection(),a=this._getDragHorizontalDirection();return s?this.floating?a&&\"right\"===a||\"down\"===n?2:1:n&&(\"down\"===n?2:1):!1},_intersectsWithSides:function(t){var e=this._isOverAxis(this.positionAbs.top+this.offset.click.top,t.top+t.height/2,t.height),i=this._isOverAxis(this.positionAbs.left+this.offset.click.left,t.left+t.width/2,t.width),s=this._getDragVerticalDirection(),n=this._getDragHorizontalDirection();return this.floating&&n?\"right\"===n&&i||\"left\"===n&&!i:s&&(\"down\"===s&&e||\"up\"===s&&!e)},_getDragVerticalDirection:function(){var t=this.positionAbs.top-this.lastPositionAbs.top;return 0!==t&&(t>0?\"down\":\"up\")},_getDragHorizontalDirection:function(){var t=this.positionAbs.left-this.lastPositionAbs.left;return 0!==t&&(t>0?\"right\":\"left\")},refresh:function(t){return this._refreshItems(t),this._setHandleClassName(),this.refreshPositions(),this},_connectWith:function(){var t=this.options;return t.connectWith.constructor===String?[t.connectWith]:t.connectWith},_getItemsAsjQuery:function(e){function i(){r.push(this)}var s,n,a,o,r=[],h=[],l=this._connectWith();if(l&&e)for(s=l.length-1;s>=0;s--)for(a=t(l[s],this.document[0]),n=a.length-1;n>=0;n--)o=t.data(a[n],this.widgetFullName),o&&o!==this&&!o.options.disabled&&h.push([t.isFunction(o.options.items)?o.options.items.call(o.element):t(o.options.items,o.element).not(\".ui-sortable-helper\").not(\".ui-sortable-placeholder\"),o]);for(h.push([t.isFunction(this.options.items)?this.options.items.call(this.element,null,{options:this.options,item:this.currentItem}):t(this.options.items,this.element).not(\".ui-sortable-helper\").not(\".ui-sortable-placeholder\"),this]),s=h.length-1;s>=0;s--)h[s][0].each(i);return t(r)},_removeCurrentsFromItems:function(){var e=this.currentItem.find(\":data(\"+this.widgetName+\"-item)\");this.items=t.grep(this.items,function(t){for(var i=0;e.length>i;i++)if(e[i]===t.item[0])return!1;return!0})},_refreshItems:function(e){this.items=[],this.containers=[this];var i,s,n,a,o,r,h,l,u=this.items,c=[[t.isFunction(this.options.items)?this.options.items.call(this.element[0],e,{item:this.currentItem}):t(this.options.items,this.element),this]],d=this._connectWith();if(d&&this.ready)for(i=d.length-1;i>=0;i--)for(n=t(d[i],this.document[0]),s=n.length-1;s>=0;s--)a=t.data(n[s],this.widgetFullName),a&&a!==this&&!a.options.disabled&&(c.push([t.isFunction(a.options.items)?a.options.items.call(a.element[0],e,{item:this.currentItem}):t(a.options.items,a.element),a]),this.containers.push(a));for(i=c.length-1;i>=0;i--)for(o=c[i][1],r=c[i][0],s=0,l=r.length;l>s;s++)h=t(r[s]),h.data(this.widgetName+\"-item\",o),u.push({item:h,instance:o,width:0,height:0,left:0,top:0})},refreshPositions:function(e){this.floating=this.items.length?\"x\"===this.options.axis||this._isFloating(this.items[0].item):!1,this.offsetParent&&this.helper&&(this.offset.parent=this._getParentOffset());var i,s,n,a;for(i=this.items.length-1;i>=0;i--)s=this.items[i],s.instance!==this.currentContainer&&this.currentContainer&&s.item[0]!==this.currentItem[0]||(n=this.options.toleranceElement?t(this.options.toleranceElement,s.item):s.item,e||(s.width=n.outerWidth(),s.height=n.outerHeight()),a=n.offset(),s.left=a.left,s.top=a.top);if(this.options.custom&&this.options.custom.refreshContainers)this.options.custom.refreshContainers.call(this);else for(i=this.containers.length-1;i>=0;i--)a=this.containers[i].element.offset(),this.containers[i].containerCache.left=a.left,this.containers[i].containerCache.top=a.top,this.containers[i].containerCache.width=this.containers[i].element.outerWidth(),this.containers[i].containerCache.height=this.containers[i].element.outerHeight();return this},_createPlaceholder:function(e){e=e||this;var i,s=e.options;s.placeholder&&s.placeholder.constructor!==String||(i=s.placeholder,s.placeholder={element:function(){var s=e.currentItem[0].nodeName.toLowerCase(),n=t(\"<\"+s+\">\",e.document[0]).addClass(i||e.currentItem[0].className+\" ui-sortable-placeholder\").removeClass(\"ui-sortable-helper\");return\"tbody\"===s?e._createTrPlaceholder(e.currentItem.find(\"tr\").eq(0),t(\"<tr>\",e.document[0]).appendTo(n)):\"tr\"===s?e._createTrPlaceholder(e.currentItem,n):\"img\"===s&&n.attr(\"src\",e.currentItem.attr(\"src\")),i||n.css(\"visibility\",\"hidden\"),n},update:function(t,n){(!i||s.forcePlaceholderSize)&&(n.height()||n.height(e.currentItem.innerHeight()-parseInt(e.currentItem.css(\"paddingTop\")||0,10)-parseInt(e.currentItem.css(\"paddingBottom\")||0,10)),n.width()||n.width(e.currentItem.innerWidth()-parseInt(e.currentItem.css(\"paddingLeft\")||0,10)-parseInt(e.currentItem.css(\"paddingRight\")||0,10)))}}),e.placeholder=t(s.placeholder.element.call(e.element,e.currentItem)),e.currentItem.after(e.placeholder),s.placeholder.update(e,e.placeholder)},_createTrPlaceholder:function(e,i){var s=this;e.children().each(function(){t(\"<td>&#160;</td>\",s.document[0]).attr(\"colspan\",t(this).attr(\"colspan\")||1).appendTo(i)})},_contactContainers:function(e){var i,s,n,a,o,r,h,l,u,c,d=null,p=null;for(i=this.containers.length-1;i>=0;i--)if(!t.contains(this.currentItem[0],this.containers[i].element[0]))if(this._intersectsWith(this.containers[i].containerCache)){if(d&&t.contains(this.containers[i].element[0],d.element[0]))continue;d=this.containers[i],p=i}else this.containers[i].containerCache.over&&(this.containers[i]._trigger(\"out\",e,this._uiHash(this)),this.containers[i].containerCache.over=0);if(d)if(1===this.containers.length)this.containers[p].containerCache.over||(this.containers[p]._trigger(\"over\",e,this._uiHash(this)),this.containers[p].containerCache.over=1);else{for(n=1e4,a=null,u=d.floating||this._isFloating(this.currentItem),o=u?\"left\":\"top\",r=u?\"width\":\"height\",c=u?\"clientX\":\"clientY\",s=this.items.length-1;s>=0;s--)t.contains(this.containers[p].element[0],this.items[s].item[0])&&this.items[s].item[0]!==this.currentItem[0]&&(h=this.items[s].item.offset()[o],l=!1,e[c]-h>this.items[s][r]/2&&(l=!0),n>Math.abs(e[c]-h)&&(n=Math.abs(e[c]-h),a=this.items[s],this.direction=l?\"up\":\"down\"));if(!a&&!this.options.dropOnEmpty)return;if(this.currentContainer===this.containers[p])return this.currentContainer.containerCache.over||(this.containers[p]._trigger(\"over\",e,this._uiHash()),this.currentContainer.containerCache.over=1),void 0;a?this._rearrange(e,a,null,!0):this._rearrange(e,null,this.containers[p].element,!0),this._trigger(\"change\",e,this._uiHash()),this.containers[p]._trigger(\"change\",e,this._uiHash(this)),this.currentContainer=this.containers[p],this.options.placeholder.update(this.currentContainer,this.placeholder),this.containers[p]._trigger(\"over\",e,this._uiHash(this)),this.containers[p].containerCache.over=1}},_createHelper:function(e){var i=this.options,s=t.isFunction(i.helper)?t(i.helper.apply(this.element[0],[e,this.currentItem])):\"clone\"===i.helper?this.currentItem.clone():this.currentItem;return s.parents(\"body\").length||t(\"parent\"!==i.appendTo?i.appendTo:this.currentItem[0].parentNode)[0].appendChild(s[0]),s[0]===this.currentItem[0]&&(this._storedCSS={width:this.currentItem[0].style.width,height:this.currentItem[0].style.height,position:this.currentItem.css(\"position\"),top:this.currentItem.css(\"top\"),left:this.currentItem.css(\"left\")}),(!s[0].style.width||i.forceHelperSize)&&s.width(this.currentItem.width()),(!s[0].style.height||i.forceHelperSize)&&s.height(this.currentItem.height()),s},_adjustOffsetFromHelper:function(e){\"string\"==typeof e&&(e=e.split(\" \")),t.isArray(e)&&(e={left:+e[0],top:+e[1]||0}),\"left\"in e&&(this.offset.click.left=e.left+this.margins.left),\"right\"in e&&(this.offset.click.left=this.helperProportions.width-e.right+this.margins.left),\"top\"in e&&(this.offset.click.top=e.top+this.margins.top),\"bottom\"in e&&(this.offset.click.top=this.helperProportions.height-e.bottom+this.margins.top)},_getParentOffset:function(){this.offsetParent=this.helper.offsetParent();var e=this.offsetParent.offset();return\"absolute\"===this.cssPosition&&this.scrollParent[0]!==this.document[0]&&t.contains(this.scrollParent[0],this.offsetParent[0])&&(e.left+=this.scrollParent.scrollLeft(),e.top+=this.scrollParent.scrollTop()),(this.offsetParent[0]===this.document[0].body||this.offsetParent[0].tagName&&\"html\"===this.offsetParent[0].tagName.toLowerCase()&&t.ui.ie)&&(e={top:0,left:0}),{top:e.top+(parseInt(this.offsetParent.css(\"borderTopWidth\"),10)||0),left:e.left+(parseInt(this.offsetParent.css(\"borderLeftWidth\"),10)||0)}},_getRelativeOffset:function(){if(\"relative\"===this.cssPosition){var t=this.currentItem.position();return{top:t.top-(parseInt(this.helper.css(\"top\"),10)||0)+this.scrollParent.scrollTop(),left:t.left-(parseInt(this.helper.css(\"left\"),10)||0)+this.scrollParent.scrollLeft()}}return{top:0,left:0}},_cacheMargins:function(){this.margins={left:parseInt(this.currentItem.css(\"marginLeft\"),10)||0,top:parseInt(this.currentItem.css(\"marginTop\"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var e,i,s,n=this.options;\"parent\"===n.containment&&(n.containment=this.helper[0].parentNode),(\"document\"===n.containment||\"window\"===n.containment)&&(this.containment=[0-this.offset.relative.left-this.offset.parent.left,0-this.offset.relative.top-this.offset.parent.top,\"document\"===n.containment?this.document.width():this.window.width()-this.helperProportions.width-this.margins.left,(\"document\"===n.containment?this.document.width():this.window.height()||this.document[0].body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top]),/^(document|window|parent)$/.test(n.containment)||(e=t(n.containment)[0],i=t(n.containment).offset(),s=\"hidden\"!==t(e).css(\"overflow\"),this.containment=[i.left+(parseInt(t(e).css(\"borderLeftWidth\"),10)||0)+(parseInt(t(e).css(\"paddingLeft\"),10)||0)-this.margins.left,i.top+(parseInt(t(e).css(\"borderTopWidth\"),10)||0)+(parseInt(t(e).css(\"paddingTop\"),10)||0)-this.margins.top,i.left+(s?Math.max(e.scrollWidth,e.offsetWidth):e.offsetWidth)-(parseInt(t(e).css(\"borderLeftWidth\"),10)||0)-(parseInt(t(e).css(\"paddingRight\"),10)||0)-this.helperProportions.width-this.margins.left,i.top+(s?Math.max(e.scrollHeight,e.offsetHeight):e.offsetHeight)-(parseInt(t(e).css(\"borderTopWidth\"),10)||0)-(parseInt(t(e).css(\"paddingBottom\"),10)||0)-this.helperProportions.height-this.margins.top])},_convertPositionTo:function(e,i){i||(i=this.position);var s=\"absolute\"===e?1:-1,n=\"absolute\"!==this.cssPosition||this.scrollParent[0]!==this.document[0]&&t.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent,a=/(html|body)/i.test(n[0].tagName);return{top:i.top+this.offset.relative.top*s+this.offset.parent.top*s-(\"fixed\"===this.cssPosition?-this.scrollParent.scrollTop():a?0:n.scrollTop())*s,left:i.left+this.offset.relative.left*s+this.offset.parent.left*s-(\"fixed\"===this.cssPosition?-this.scrollParent.scrollLeft():a?0:n.scrollLeft())*s}},_generatePosition:function(e){var i,s,n=this.options,a=e.pageX,o=e.pageY,r=\"absolute\"!==this.cssPosition||this.scrollParent[0]!==this.document[0]&&t.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent,h=/(html|body)/i.test(r[0].tagName);return\"relative\"!==this.cssPosition||this.scrollParent[0]!==this.document[0]&&this.scrollParent[0]!==this.offsetParent[0]||(this.offset.relative=this._getRelativeOffset()),this.originalPosition&&(this.containment&&(e.pageX-this.offset.click.left<this.containment[0]&&(a=this.containment[0]+this.offset.click.left),e.pageY-this.offset.click.top<this.containment[1]&&(o=this.containment[1]+this.offset.click.top),e.pageX-this.offset.click.left>this.containment[2]&&(a=this.containment[2]+this.offset.click.left),e.pageY-this.offset.click.top>this.containment[3]&&(o=this.containment[3]+this.offset.click.top)),n.grid&&(i=this.originalPageY+Math.round((o-this.originalPageY)/n.grid[1])*n.grid[1],o=this.containment?i-this.offset.click.top>=this.containment[1]&&i-this.offset.click.top<=this.containment[3]?i:i-this.offset.click.top>=this.containment[1]?i-n.grid[1]:i+n.grid[1]:i,s=this.originalPageX+Math.round((a-this.originalPageX)/n.grid[0])*n.grid[0],a=this.containment?s-this.offset.click.left>=this.containment[0]&&s-this.offset.click.left<=this.containment[2]?s:s-this.offset.click.left>=this.containment[0]?s-n.grid[0]:s+n.grid[0]:s)),{top:o-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+(\"fixed\"===this.cssPosition?-this.scrollParent.scrollTop():h?0:r.scrollTop()),left:a-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+(\"fixed\"===this.cssPosition?-this.scrollParent.scrollLeft():h?0:r.scrollLeft())}},_rearrange:function(t,e,i,s){i?i[0].appendChild(this.placeholder[0]):e.item[0].parentNode.insertBefore(this.placeholder[0],\"down\"===this.direction?e.item[0]:e.item[0].nextSibling),this.counter=this.counter?++this.counter:1;var n=this.counter;this._delay(function(){n===this.counter&&this.refreshPositions(!s)})},_clear:function(t,e){function i(t,e,i){return function(s){i._trigger(t,s,e._uiHash(e))}}this.reverting=!1;var s,n=[];if(!this._noFinalSort&&this.currentItem.parent().length&&this.placeholder.before(this.currentItem),this._noFinalSort=null,this.helper[0]===this.currentItem[0]){for(s in this._storedCSS)(\"auto\"===this._storedCSS[s]||\"static\"===this._storedCSS[s])&&(this._storedCSS[s]=\"\");this.currentItem.css(this._storedCSS).removeClass(\"ui-sortable-helper\")}else this.currentItem.show();for(this.fromOutside&&!e&&n.push(function(t){this._trigger(\"receive\",t,this._uiHash(this.fromOutside))}),!this.fromOutside&&this.domPosition.prev===this.currentItem.prev().not(\".ui-sortable-helper\")[0]&&this.domPosition.parent===this.currentItem.parent()[0]||e||n.push(function(t){this._trigger(\"update\",t,this._uiHash())}),this!==this.currentContainer&&(e||(n.push(function(t){this._trigger(\"remove\",t,this._uiHash())}),n.push(function(t){return function(e){t._trigger(\"receive\",e,this._uiHash(this))}}.call(this,this.currentContainer)),n.push(function(t){return function(e){t._trigger(\"update\",e,this._uiHash(this))}}.call(this,this.currentContainer)))),s=this.containers.length-1;s>=0;s--)e||n.push(i(\"deactivate\",this,this.containers[s])),this.containers[s].containerCache.over&&(n.push(i(\"out\",this,this.containers[s])),this.containers[s].containerCache.over=0);if(this.storedCursor&&(this.document.find(\"body\").css(\"cursor\",this.storedCursor),this.storedStylesheet.remove()),this._storedOpacity&&this.helper.css(\"opacity\",this._storedOpacity),this._storedZIndex&&this.helper.css(\"zIndex\",\"auto\"===this._storedZIndex?\"\":this._storedZIndex),this.dragging=!1,e||this._trigger(\"beforeStop\",t,this._uiHash()),this.placeholder[0].parentNode.removeChild(this.placeholder[0]),this.cancelHelperRemoval||(this.helper[0]!==this.currentItem[0]&&this.helper.remove(),this.helper=null),!e){for(s=0;n.length>s;s++)n[s].call(this,t);this._trigger(\"stop\",t,this._uiHash())}return this.fromOutside=!1,!this.cancelHelperRemoval},_trigger:function(){t.Widget.prototype._trigger.apply(this,arguments)===!1&&this.cancel()},_uiHash:function(e){var i=e||this;return{helper:i.helper,placeholder:i.placeholder||t([]),position:i.position,originalPosition:i.originalPosition,offset:i.positionAbs,item:i.currentItem,sender:e?e.element:null}}}),t.widget(\"ui.accordion\",{version:\"1.11.4\",options:{active:0,animate:{},collapsible:!1,event:\"click\",header:\"> li > :first-child,> :not(li):even\",heightStyle:\"auto\",icons:{activeHeader:\"ui-icon-triangle-1-s\",header:\"ui-icon-triangle-1-e\"},activate:null,beforeActivate:null},hideProps:{borderTopWidth:\"hide\",borderBottomWidth:\"hide\",paddingTop:\"hide\",paddingBottom:\"hide\",height:\"hide\"},showProps:{borderTopWidth:\"show\",borderBottomWidth:\"show\",paddingTop:\"show\",paddingBottom:\"show\",height:\"show\"},_create:function(){var e=this.options;this.prevShow=this.prevHide=t(),this.element.addClass(\"ui-accordion ui-widget ui-helper-reset\").attr(\"role\",\"tablist\"),e.collapsible||e.active!==!1&&null!=e.active||(e.active=0),this._processPanels(),0>e.active&&(e.active+=this.headers.length),this._refresh()},_getCreateEventData:function(){return{header:this.active,panel:this.active.length?this.active.next():t()}},_createIcons:function(){var e=this.options.icons;e&&(t(\"<span>\").addClass(\"ui-accordion-header-icon ui-icon \"+e.header).prependTo(this.headers),this.active.children(\".ui-accordion-header-icon\").removeClass(e.header).addClass(e.activeHeader),this.headers.addClass(\"ui-accordion-icons\"))},_destroyIcons:function(){this.headers.removeClass(\"ui-accordion-icons\").children(\".ui-accordion-header-icon\").remove()},_destroy:function(){var t;this.element.removeClass(\"ui-accordion ui-widget ui-helper-reset\").removeAttr(\"role\"),this.headers.removeClass(\"ui-accordion-header ui-accordion-header-active ui-state-default ui-corner-all ui-state-active ui-state-disabled ui-corner-top\").removeAttr(\"role\").removeAttr(\"aria-expanded\").removeAttr(\"aria-selected\").removeAttr(\"aria-controls\").removeAttr(\"tabIndex\").removeUniqueId(),this._destroyIcons(),t=this.headers.next().removeClass(\"ui-helper-reset ui-widget-content ui-corner-bottom ui-accordion-content ui-accordion-content-active ui-state-disabled\").css(\"display\",\"\").removeAttr(\"role\").removeAttr(\"aria-hidden\").removeAttr(\"aria-labelledby\").removeUniqueId(),\"content\"!==this.options.heightStyle&&t.css(\"height\",\"\")},_setOption:function(t,e){return\"active\"===t?(this._activate(e),void 0):(\"event\"===t&&(this.options.event&&this._off(this.headers,this.options.event),this._setupEvents(e)),this._super(t,e),\"collapsible\"!==t||e||this.options.active!==!1||this._activate(0),\"icons\"===t&&(this._destroyIcons(),e&&this._createIcons()),\"disabled\"===t&&(this.element.toggleClass(\"ui-state-disabled\",!!e).attr(\"aria-disabled\",e),this.headers.add(this.headers.next()).toggleClass(\"ui-state-disabled\",!!e)),void 0)},_keydown:function(e){if(!e.altKey&&!e.ctrlKey){var i=t.ui.keyCode,s=this.headers.length,n=this.headers.index(e.target),a=!1;switch(e.keyCode){case i.RIGHT:case i.DOWN:a=this.headers[(n+1)%s];break;case i.LEFT:case i.UP:a=this.headers[(n-1+s)%s];break;case i.SPACE:case i.ENTER:this._eventHandler(e);break;case i.HOME:a=this.headers[0];break;case i.END:a=this.headers[s-1]}a&&(t(e.target).attr(\"tabIndex\",-1),t(a).attr(\"tabIndex\",0),a.focus(),e.preventDefault())}},_panelKeyDown:function(e){e.keyCode===t.ui.keyCode.UP&&e.ctrlKey&&t(e.currentTarget).prev().focus()},refresh:function(){var e=this.options;this._processPanels(),e.active===!1&&e.collapsible===!0||!this.headers.length?(e.active=!1,this.active=t()):e.active===!1?this._activate(0):this.active.length&&!t.contains(this.element[0],this.active[0])?this.headers.length===this.headers.find(\".ui-state-disabled\").length?(e.active=!1,this.active=t()):this._activate(Math.max(0,e.active-1)):e.active=this.headers.index(this.active),this._destroyIcons(),this._refresh()},_processPanels:function(){var t=this.headers,e=this.panels;this.headers=this.element.find(this.options.header).addClass(\"ui-accordion-header ui-state-default ui-corner-all\"),this.panels=this.headers.next().addClass(\"ui-accordion-content ui-helper-reset ui-widget-content ui-corner-bottom\").filter(\":not(.ui-accordion-content-active)\").hide(),e&&(this._off(t.not(this.headers)),this._off(e.not(this.panels)))\n},_refresh:function(){var e,i=this.options,s=i.heightStyle,n=this.element.parent();this.active=this._findActive(i.active).addClass(\"ui-accordion-header-active ui-state-active ui-corner-top\").removeClass(\"ui-corner-all\"),this.active.next().addClass(\"ui-accordion-content-active\").show(),this.headers.attr(\"role\",\"tab\").each(function(){var e=t(this),i=e.uniqueId().attr(\"id\"),s=e.next(),n=s.uniqueId().attr(\"id\");e.attr(\"aria-controls\",n),s.attr(\"aria-labelledby\",i)}).next().attr(\"role\",\"tabpanel\"),this.headers.not(this.active).attr({\"aria-selected\":\"false\",\"aria-expanded\":\"false\",tabIndex:-1}).next().attr({\"aria-hidden\":\"true\"}).hide(),this.active.length?this.active.attr({\"aria-selected\":\"true\",\"aria-expanded\":\"true\",tabIndex:0}).next().attr({\"aria-hidden\":\"false\"}):this.headers.eq(0).attr(\"tabIndex\",0),this._createIcons(),this._setupEvents(i.event),\"fill\"===s?(e=n.height(),this.element.siblings(\":visible\").each(function(){var i=t(this),s=i.css(\"position\");\"absolute\"!==s&&\"fixed\"!==s&&(e-=i.outerHeight(!0))}),this.headers.each(function(){e-=t(this).outerHeight(!0)}),this.headers.next().each(function(){t(this).height(Math.max(0,e-t(this).innerHeight()+t(this).height()))}).css(\"overflow\",\"auto\")):\"auto\"===s&&(e=0,this.headers.next().each(function(){e=Math.max(e,t(this).css(\"height\",\"\").height())}).height(e))},_activate:function(e){var i=this._findActive(e)[0];i!==this.active[0]&&(i=i||this.active[0],this._eventHandler({target:i,currentTarget:i,preventDefault:t.noop}))},_findActive:function(e){return\"number\"==typeof e?this.headers.eq(e):t()},_setupEvents:function(e){var i={keydown:\"_keydown\"};e&&t.each(e.split(\" \"),function(t,e){i[e]=\"_eventHandler\"}),this._off(this.headers.add(this.headers.next())),this._on(this.headers,i),this._on(this.headers.next(),{keydown:\"_panelKeyDown\"}),this._hoverable(this.headers),this._focusable(this.headers)},_eventHandler:function(e){var i=this.options,s=this.active,n=t(e.currentTarget),a=n[0]===s[0],o=a&&i.collapsible,r=o?t():n.next(),h=s.next(),l={oldHeader:s,oldPanel:h,newHeader:o?t():n,newPanel:r};e.preventDefault(),a&&!i.collapsible||this._trigger(\"beforeActivate\",e,l)===!1||(i.active=o?!1:this.headers.index(n),this.active=a?t():n,this._toggle(l),s.removeClass(\"ui-accordion-header-active ui-state-active\"),i.icons&&s.children(\".ui-accordion-header-icon\").removeClass(i.icons.activeHeader).addClass(i.icons.header),a||(n.removeClass(\"ui-corner-all\").addClass(\"ui-accordion-header-active ui-state-active ui-corner-top\"),i.icons&&n.children(\".ui-accordion-header-icon\").removeClass(i.icons.header).addClass(i.icons.activeHeader),n.next().addClass(\"ui-accordion-content-active\")))},_toggle:function(e){var i=e.newPanel,s=this.prevShow.length?this.prevShow:e.oldPanel;this.prevShow.add(this.prevHide).stop(!0,!0),this.prevShow=i,this.prevHide=s,this.options.animate?this._animate(i,s,e):(s.hide(),i.show(),this._toggleComplete(e)),s.attr({\"aria-hidden\":\"true\"}),s.prev().attr({\"aria-selected\":\"false\",\"aria-expanded\":\"false\"}),i.length&&s.length?s.prev().attr({tabIndex:-1,\"aria-expanded\":\"false\"}):i.length&&this.headers.filter(function(){return 0===parseInt(t(this).attr(\"tabIndex\"),10)}).attr(\"tabIndex\",-1),i.attr(\"aria-hidden\",\"false\").prev().attr({\"aria-selected\":\"true\",\"aria-expanded\":\"true\",tabIndex:0})},_animate:function(t,e,i){var s,n,a,o=this,r=0,h=t.css(\"box-sizing\"),l=t.length&&(!e.length||t.index()<e.index()),u=this.options.animate||{},c=l&&u.down||u,d=function(){o._toggleComplete(i)};return\"number\"==typeof c&&(a=c),\"string\"==typeof c&&(n=c),n=n||c.easing||u.easing,a=a||c.duration||u.duration,e.length?t.length?(s=t.show().outerHeight(),e.animate(this.hideProps,{duration:a,easing:n,step:function(t,e){e.now=Math.round(t)}}),t.hide().animate(this.showProps,{duration:a,easing:n,complete:d,step:function(t,i){i.now=Math.round(t),\"height\"!==i.prop?\"content-box\"===h&&(r+=i.now):\"content\"!==o.options.heightStyle&&(i.now=Math.round(s-e.outerHeight()-r),r=0)}}),void 0):e.animate(this.hideProps,a,n,d):t.animate(this.showProps,a,n,d)},_toggleComplete:function(t){var e=t.oldPanel;e.removeClass(\"ui-accordion-content-active\").prev().removeClass(\"ui-corner-top\").addClass(\"ui-corner-all\"),e.length&&(e.parent()[0].className=e.parent()[0].className),this._trigger(\"activate\",null,t)}}),t.widget(\"ui.menu\",{version:\"1.11.4\",defaultElement:\"<ul>\",delay:300,options:{icons:{submenu:\"ui-icon-carat-1-e\"},items:\"> *\",menus:\"ul\",position:{my:\"left-1 top\",at:\"right top\"},role:\"menu\",blur:null,focus:null,select:null},_create:function(){this.activeMenu=this.element,this.mouseHandled=!1,this.element.uniqueId().addClass(\"ui-menu ui-widget ui-widget-content\").toggleClass(\"ui-menu-icons\",!!this.element.find(\".ui-icon\").length).attr({role:this.options.role,tabIndex:0}),this.options.disabled&&this.element.addClass(\"ui-state-disabled\").attr(\"aria-disabled\",\"true\"),this._on({\"mousedown .ui-menu-item\":function(t){t.preventDefault()},\"click .ui-menu-item\":function(e){var i=t(e.target);!this.mouseHandled&&i.not(\".ui-state-disabled\").length&&(this.select(e),e.isPropagationStopped()||(this.mouseHandled=!0),i.has(\".ui-menu\").length?this.expand(e):!this.element.is(\":focus\")&&t(this.document[0].activeElement).closest(\".ui-menu\").length&&(this.element.trigger(\"focus\",[!0]),this.active&&1===this.active.parents(\".ui-menu\").length&&clearTimeout(this.timer)))},\"mouseenter .ui-menu-item\":function(e){if(!this.previousFilter){var i=t(e.currentTarget);i.siblings(\".ui-state-active\").removeClass(\"ui-state-active\"),this.focus(e,i)}},mouseleave:\"collapseAll\",\"mouseleave .ui-menu\":\"collapseAll\",focus:function(t,e){var i=this.active||this.element.find(this.options.items).eq(0);e||this.focus(t,i)},blur:function(e){this._delay(function(){t.contains(this.element[0],this.document[0].activeElement)||this.collapseAll(e)})},keydown:\"_keydown\"}),this.refresh(),this._on(this.document,{click:function(t){this._closeOnDocumentClick(t)&&this.collapseAll(t),this.mouseHandled=!1}})},_destroy:function(){this.element.removeAttr(\"aria-activedescendant\").find(\".ui-menu\").addBack().removeClass(\"ui-menu ui-widget ui-widget-content ui-menu-icons ui-front\").removeAttr(\"role\").removeAttr(\"tabIndex\").removeAttr(\"aria-labelledby\").removeAttr(\"aria-expanded\").removeAttr(\"aria-hidden\").removeAttr(\"aria-disabled\").removeUniqueId().show(),this.element.find(\".ui-menu-item\").removeClass(\"ui-menu-item\").removeAttr(\"role\").removeAttr(\"aria-disabled\").removeUniqueId().removeClass(\"ui-state-hover\").removeAttr(\"tabIndex\").removeAttr(\"role\").removeAttr(\"aria-haspopup\").children().each(function(){var e=t(this);e.data(\"ui-menu-submenu-carat\")&&e.remove()}),this.element.find(\".ui-menu-divider\").removeClass(\"ui-menu-divider ui-widget-content\")},_keydown:function(e){var i,s,n,a,o=!0;switch(e.keyCode){case t.ui.keyCode.PAGE_UP:this.previousPage(e);break;case t.ui.keyCode.PAGE_DOWN:this.nextPage(e);break;case t.ui.keyCode.HOME:this._move(\"first\",\"first\",e);break;case t.ui.keyCode.END:this._move(\"last\",\"last\",e);break;case t.ui.keyCode.UP:this.previous(e);break;case t.ui.keyCode.DOWN:this.next(e);break;case t.ui.keyCode.LEFT:this.collapse(e);break;case t.ui.keyCode.RIGHT:this.active&&!this.active.is(\".ui-state-disabled\")&&this.expand(e);break;case t.ui.keyCode.ENTER:case t.ui.keyCode.SPACE:this._activate(e);break;case t.ui.keyCode.ESCAPE:this.collapse(e);break;default:o=!1,s=this.previousFilter||\"\",n=String.fromCharCode(e.keyCode),a=!1,clearTimeout(this.filterTimer),n===s?a=!0:n=s+n,i=this._filterMenuItems(n),i=a&&-1!==i.index(this.active.next())?this.active.nextAll(\".ui-menu-item\"):i,i.length||(n=String.fromCharCode(e.keyCode),i=this._filterMenuItems(n)),i.length?(this.focus(e,i),this.previousFilter=n,this.filterTimer=this._delay(function(){delete this.previousFilter},1e3)):delete this.previousFilter}o&&e.preventDefault()},_activate:function(t){this.active.is(\".ui-state-disabled\")||(this.active.is(\"[aria-haspopup='true']\")?this.expand(t):this.select(t))},refresh:function(){var e,i,s=this,n=this.options.icons.submenu,a=this.element.find(this.options.menus);this.element.toggleClass(\"ui-menu-icons\",!!this.element.find(\".ui-icon\").length),a.filter(\":not(.ui-menu)\").addClass(\"ui-menu ui-widget ui-widget-content ui-front\").hide().attr({role:this.options.role,\"aria-hidden\":\"true\",\"aria-expanded\":\"false\"}).each(function(){var e=t(this),i=e.parent(),s=t(\"<span>\").addClass(\"ui-menu-icon ui-icon \"+n).data(\"ui-menu-submenu-carat\",!0);i.attr(\"aria-haspopup\",\"true\").prepend(s),e.attr(\"aria-labelledby\",i.attr(\"id\"))}),e=a.add(this.element),i=e.find(this.options.items),i.not(\".ui-menu-item\").each(function(){var e=t(this);s._isDivider(e)&&e.addClass(\"ui-widget-content ui-menu-divider\")}),i.not(\".ui-menu-item, .ui-menu-divider\").addClass(\"ui-menu-item\").uniqueId().attr({tabIndex:-1,role:this._itemRole()}),i.filter(\".ui-state-disabled\").attr(\"aria-disabled\",\"true\"),this.active&&!t.contains(this.element[0],this.active[0])&&this.blur()},_itemRole:function(){return{menu:\"menuitem\",listbox:\"option\"}[this.options.role]},_setOption:function(t,e){\"icons\"===t&&this.element.find(\".ui-menu-icon\").removeClass(this.options.icons.submenu).addClass(e.submenu),\"disabled\"===t&&this.element.toggleClass(\"ui-state-disabled\",!!e).attr(\"aria-disabled\",e),this._super(t,e)},focus:function(t,e){var i,s;this.blur(t,t&&\"focus\"===t.type),this._scrollIntoView(e),this.active=e.first(),s=this.active.addClass(\"ui-state-focus\").removeClass(\"ui-state-active\"),this.options.role&&this.element.attr(\"aria-activedescendant\",s.attr(\"id\")),this.active.parent().closest(\".ui-menu-item\").addClass(\"ui-state-active\"),t&&\"keydown\"===t.type?this._close():this.timer=this._delay(function(){this._close()},this.delay),i=e.children(\".ui-menu\"),i.length&&t&&/^mouse/.test(t.type)&&this._startOpening(i),this.activeMenu=e.parent(),this._trigger(\"focus\",t,{item:e})},_scrollIntoView:function(e){var i,s,n,a,o,r;this._hasScroll()&&(i=parseFloat(t.css(this.activeMenu[0],\"borderTopWidth\"))||0,s=parseFloat(t.css(this.activeMenu[0],\"paddingTop\"))||0,n=e.offset().top-this.activeMenu.offset().top-i-s,a=this.activeMenu.scrollTop(),o=this.activeMenu.height(),r=e.outerHeight(),0>n?this.activeMenu.scrollTop(a+n):n+r>o&&this.activeMenu.scrollTop(a+n-o+r))},blur:function(t,e){e||clearTimeout(this.timer),this.active&&(this.active.removeClass(\"ui-state-focus\"),this.active=null,this._trigger(\"blur\",t,{item:this.active}))},_startOpening:function(t){clearTimeout(this.timer),\"true\"===t.attr(\"aria-hidden\")&&(this.timer=this._delay(function(){this._close(),this._open(t)},this.delay))},_open:function(e){var i=t.extend({of:this.active},this.options.position);clearTimeout(this.timer),this.element.find(\".ui-menu\").not(e.parents(\".ui-menu\")).hide().attr(\"aria-hidden\",\"true\"),e.show().removeAttr(\"aria-hidden\").attr(\"aria-expanded\",\"true\").position(i)},collapseAll:function(e,i){clearTimeout(this.timer),this.timer=this._delay(function(){var s=i?this.element:t(e&&e.target).closest(this.element.find(\".ui-menu\"));s.length||(s=this.element),this._close(s),this.blur(e),this.activeMenu=s},this.delay)},_close:function(t){t||(t=this.active?this.active.parent():this.element),t.find(\".ui-menu\").hide().attr(\"aria-hidden\",\"true\").attr(\"aria-expanded\",\"false\").end().find(\".ui-state-active\").not(\".ui-state-focus\").removeClass(\"ui-state-active\")},_closeOnDocumentClick:function(e){return!t(e.target).closest(\".ui-menu\").length},_isDivider:function(t){return!/[^\\-\\u2014\\u2013\\s]/.test(t.text())},collapse:function(t){var e=this.active&&this.active.parent().closest(\".ui-menu-item\",this.element);e&&e.length&&(this._close(),this.focus(t,e))},expand:function(t){var e=this.active&&this.active.children(\".ui-menu \").find(this.options.items).first();e&&e.length&&(this._open(e.parent()),this._delay(function(){this.focus(t,e)}))},next:function(t){this._move(\"next\",\"first\",t)},previous:function(t){this._move(\"prev\",\"last\",t)},isFirstItem:function(){return this.active&&!this.active.prevAll(\".ui-menu-item\").length},isLastItem:function(){return this.active&&!this.active.nextAll(\".ui-menu-item\").length},_move:function(t,e,i){var s;this.active&&(s=\"first\"===t||\"last\"===t?this.active[\"first\"===t?\"prevAll\":\"nextAll\"](\".ui-menu-item\").eq(-1):this.active[t+\"All\"](\".ui-menu-item\").eq(0)),s&&s.length&&this.active||(s=this.activeMenu.find(this.options.items)[e]()),this.focus(i,s)},nextPage:function(e){var i,s,n;return this.active?(this.isLastItem()||(this._hasScroll()?(s=this.active.offset().top,n=this.element.height(),this.active.nextAll(\".ui-menu-item\").each(function(){return i=t(this),0>i.offset().top-s-n}),this.focus(e,i)):this.focus(e,this.activeMenu.find(this.options.items)[this.active?\"last\":\"first\"]())),void 0):(this.next(e),void 0)},previousPage:function(e){var i,s,n;return this.active?(this.isFirstItem()||(this._hasScroll()?(s=this.active.offset().top,n=this.element.height(),this.active.prevAll(\".ui-menu-item\").each(function(){return i=t(this),i.offset().top-s+n>0}),this.focus(e,i)):this.focus(e,this.activeMenu.find(this.options.items).first())),void 0):(this.next(e),void 0)},_hasScroll:function(){return this.element.outerHeight()<this.element.prop(\"scrollHeight\")},select:function(e){this.active=this.active||t(e.target).closest(\".ui-menu-item\");var i={item:this.active};this.active.has(\".ui-menu\").length||this.collapseAll(e,!0),this._trigger(\"select\",e,i)},_filterMenuItems:function(e){var i=e.replace(/[\\-\\[\\]{}()*+?.,\\\\\\^$|#\\s]/g,\"\\\\$&\"),s=RegExp(\"^\"+i,\"i\");return this.activeMenu.find(this.options.items).filter(\".ui-menu-item\").filter(function(){return s.test(t.trim(t(this).text()))})}}),t.widget(\"ui.autocomplete\",{version:\"1.11.4\",defaultElement:\"<input>\",options:{appendTo:null,autoFocus:!1,delay:300,minLength:1,position:{my:\"left top\",at:\"left bottom\",collision:\"none\"},source:null,change:null,close:null,focus:null,open:null,response:null,search:null,select:null},requestIndex:0,pending:0,_create:function(){var e,i,s,n=this.element[0].nodeName.toLowerCase(),a=\"textarea\"===n,o=\"input\"===n;this.isMultiLine=a?!0:o?!1:this.element.prop(\"isContentEditable\"),this.valueMethod=this.element[a||o?\"val\":\"text\"],this.isNewMenu=!0,this.element.addClass(\"ui-autocomplete-input\").attr(\"autocomplete\",\"off\"),this._on(this.element,{keydown:function(n){if(this.element.prop(\"readOnly\"))return e=!0,s=!0,i=!0,void 0;e=!1,s=!1,i=!1;var a=t.ui.keyCode;switch(n.keyCode){case a.PAGE_UP:e=!0,this._move(\"previousPage\",n);break;case a.PAGE_DOWN:e=!0,this._move(\"nextPage\",n);break;case a.UP:e=!0,this._keyEvent(\"previous\",n);break;case a.DOWN:e=!0,this._keyEvent(\"next\",n);break;case a.ENTER:this.menu.active&&(e=!0,n.preventDefault(),this.menu.select(n));break;case a.TAB:this.menu.active&&this.menu.select(n);break;case a.ESCAPE:this.menu.element.is(\":visible\")&&(this.isMultiLine||this._value(this.term),this.close(n),n.preventDefault());break;default:i=!0,this._searchTimeout(n)}},keypress:function(s){if(e)return e=!1,(!this.isMultiLine||this.menu.element.is(\":visible\"))&&s.preventDefault(),void 0;if(!i){var n=t.ui.keyCode;switch(s.keyCode){case n.PAGE_UP:this._move(\"previousPage\",s);break;case n.PAGE_DOWN:this._move(\"nextPage\",s);break;case n.UP:this._keyEvent(\"previous\",s);break;case n.DOWN:this._keyEvent(\"next\",s)}}},input:function(t){return s?(s=!1,t.preventDefault(),void 0):(this._searchTimeout(t),void 0)},focus:function(){this.selectedItem=null,this.previous=this._value()},blur:function(t){return this.cancelBlur?(delete this.cancelBlur,void 0):(clearTimeout(this.searching),this.close(t),this._change(t),void 0)}}),this._initSource(),this.menu=t(\"<ul>\").addClass(\"ui-autocomplete ui-front\").appendTo(this._appendTo()).menu({role:null}).hide().menu(\"instance\"),this._on(this.menu.element,{mousedown:function(e){e.preventDefault(),this.cancelBlur=!0,this._delay(function(){delete this.cancelBlur});var i=this.menu.element[0];t(e.target).closest(\".ui-menu-item\").length||this._delay(function(){var e=this;this.document.one(\"mousedown\",function(s){s.target===e.element[0]||s.target===i||t.contains(i,s.target)||e.close()})})},menufocus:function(e,i){var s,n;return this.isNewMenu&&(this.isNewMenu=!1,e.originalEvent&&/^mouse/.test(e.originalEvent.type))?(this.menu.blur(),this.document.one(\"mousemove\",function(){t(e.target).trigger(e.originalEvent)}),void 0):(n=i.item.data(\"ui-autocomplete-item\"),!1!==this._trigger(\"focus\",e,{item:n})&&e.originalEvent&&/^key/.test(e.originalEvent.type)&&this._value(n.value),s=i.item.attr(\"aria-label\")||n.value,s&&t.trim(s).length&&(this.liveRegion.children().hide(),t(\"<div>\").text(s).appendTo(this.liveRegion)),void 0)},menuselect:function(t,e){var i=e.item.data(\"ui-autocomplete-item\"),s=this.previous;this.element[0]!==this.document[0].activeElement&&(this.element.focus(),this.previous=s,this._delay(function(){this.previous=s,this.selectedItem=i})),!1!==this._trigger(\"select\",t,{item:i})&&this._value(i.value),this.term=this._value(),this.close(t),this.selectedItem=i}}),this.liveRegion=t(\"<span>\",{role:\"status\",\"aria-live\":\"assertive\",\"aria-relevant\":\"additions\"}).addClass(\"ui-helper-hidden-accessible\").appendTo(this.document[0].body),this._on(this.window,{beforeunload:function(){this.element.removeAttr(\"autocomplete\")}})},_destroy:function(){clearTimeout(this.searching),this.element.removeClass(\"ui-autocomplete-input\").removeAttr(\"autocomplete\"),this.menu.element.remove(),this.liveRegion.remove()},_setOption:function(t,e){this._super(t,e),\"source\"===t&&this._initSource(),\"appendTo\"===t&&this.menu.element.appendTo(this._appendTo()),\"disabled\"===t&&e&&this.xhr&&this.xhr.abort()},_appendTo:function(){var e=this.options.appendTo;return e&&(e=e.jquery||e.nodeType?t(e):this.document.find(e).eq(0)),e&&e[0]||(e=this.element.closest(\".ui-front\")),e.length||(e=this.document[0].body),e},_initSource:function(){var e,i,s=this;t.isArray(this.options.source)?(e=this.options.source,this.source=function(i,s){s(t.ui.autocomplete.filter(e,i.term))}):\"string\"==typeof this.options.source?(i=this.options.source,this.source=function(e,n){s.xhr&&s.xhr.abort(),s.xhr=t.ajax({url:i,data:e,dataType:\"json\",success:function(t){n(t)},error:function(){n([])}})}):this.source=this.options.source},_searchTimeout:function(t){clearTimeout(this.searching),this.searching=this._delay(function(){var e=this.term===this._value(),i=this.menu.element.is(\":visible\"),s=t.altKey||t.ctrlKey||t.metaKey||t.shiftKey;(!e||e&&!i&&!s)&&(this.selectedItem=null,this.search(null,t))},this.options.delay)},search:function(t,e){return t=null!=t?t:this._value(),this.term=this._value(),t.length<this.options.minLength?this.close(e):this._trigger(\"search\",e)!==!1?this._search(t):void 0},_search:function(t){this.pending++,this.element.addClass(\"ui-autocomplete-loading\"),this.cancelSearch=!1,this.source({term:t},this._response())},_response:function(){var e=++this.requestIndex;return t.proxy(function(t){e===this.requestIndex&&this.__response(t),this.pending--,this.pending||this.element.removeClass(\"ui-autocomplete-loading\")},this)},__response:function(t){t&&(t=this._normalize(t)),this._trigger(\"response\",null,{content:t}),!this.options.disabled&&t&&t.length&&!this.cancelSearch?(this._suggest(t),this._trigger(\"open\")):this._close()},close:function(t){this.cancelSearch=!0,this._close(t)},_close:function(t){this.menu.element.is(\":visible\")&&(this.menu.element.hide(),this.menu.blur(),this.isNewMenu=!0,this._trigger(\"close\",t))},_change:function(t){this.previous!==this._value()&&this._trigger(\"change\",t,{item:this.selectedItem})},_normalize:function(e){return e.length&&e[0].label&&e[0].value?e:t.map(e,function(e){return\"string\"==typeof e?{label:e,value:e}:t.extend({},e,{label:e.label||e.value,value:e.value||e.label})})},_suggest:function(e){var i=this.menu.element.empty();this._renderMenu(i,e),this.isNewMenu=!0,this.menu.refresh(),i.show(),this._resizeMenu(),i.position(t.extend({of:this.element},this.options.position)),this.options.autoFocus&&this.menu.next()},_resizeMenu:function(){var t=this.menu.element;t.outerWidth(Math.max(t.width(\"\").outerWidth()+1,this.element.outerWidth()))},_renderMenu:function(e,i){var s=this;t.each(i,function(t,i){s._renderItemData(e,i)})},_renderItemData:function(t,e){return this._renderItem(t,e).data(\"ui-autocomplete-item\",e)},_renderItem:function(e,i){return t(\"<li>\").text(i.label).appendTo(e)},_move:function(t,e){return this.menu.element.is(\":visible\")?this.menu.isFirstItem()&&/^previous/.test(t)||this.menu.isLastItem()&&/^next/.test(t)?(this.isMultiLine||this._value(this.term),this.menu.blur(),void 0):(this.menu[t](e),void 0):(this.search(null,e),void 0)},widget:function(){return this.menu.element},_value:function(){return this.valueMethod.apply(this.element,arguments)},_keyEvent:function(t,e){(!this.isMultiLine||this.menu.element.is(\":visible\"))&&(this._move(t,e),e.preventDefault())}}),t.extend(t.ui.autocomplete,{escapeRegex:function(t){return t.replace(/[\\-\\[\\]{}()*+?.,\\\\\\^$|#\\s]/g,\"\\\\$&\")},filter:function(e,i){var s=RegExp(t.ui.autocomplete.escapeRegex(i),\"i\");return t.grep(e,function(t){return s.test(t.label||t.value||t)})}}),t.widget(\"ui.autocomplete\",t.ui.autocomplete,{options:{messages:{noResults:\"No search results.\",results:function(t){return t+(t>1?\" results are\":\" result is\")+\" available, use up and down arrow keys to navigate.\"}}},__response:function(e){var i;this._superApply(arguments),this.options.disabled||this.cancelSearch||(i=e&&e.length?this.options.messages.results(e.length):this.options.messages.noResults,this.liveRegion.children().hide(),t(\"<div>\").text(i).appendTo(this.liveRegion))}}),t.ui.autocomplete;var d,p=\"ui-button ui-widget ui-state-default ui-corner-all\",f=\"ui-button-icons-only ui-button-icon-only ui-button-text-icons ui-button-text-icon-primary ui-button-text-icon-secondary ui-button-text-only\",m=function(){var e=t(this);setTimeout(function(){e.find(\":ui-button\").button(\"refresh\")},1)},g=function(e){var i=e.name,s=e.form,n=t([]);return i&&(i=i.replace(/'/g,\"\\\\'\"),n=s?t(s).find(\"[name='\"+i+\"'][type=radio]\"):t(\"[name='\"+i+\"'][type=radio]\",e.ownerDocument).filter(function(){return!this.form})),n};t.widget(\"ui.button\",{version:\"1.11.4\",defaultElement:\"<button>\",options:{disabled:null,text:!0,label:null,icons:{primary:null,secondary:null}},_create:function(){this.element.closest(\"form\").unbind(\"reset\"+this.eventNamespace).bind(\"reset\"+this.eventNamespace,m),\"boolean\"!=typeof this.options.disabled?this.options.disabled=!!this.element.prop(\"disabled\"):this.element.prop(\"disabled\",this.options.disabled),this._determineButtonType(),this.hasTitle=!!this.buttonElement.attr(\"title\");var e=this,i=this.options,s=\"checkbox\"===this.type||\"radio\"===this.type,n=s?\"\":\"ui-state-active\";null===i.label&&(i.label=\"input\"===this.type?this.buttonElement.val():this.buttonElement.html()),this._hoverable(this.buttonElement),this.buttonElement.addClass(p).attr(\"role\",\"button\").bind(\"mouseenter\"+this.eventNamespace,function(){i.disabled||this===d&&t(this).addClass(\"ui-state-active\")}).bind(\"mouseleave\"+this.eventNamespace,function(){i.disabled||t(this).removeClass(n)}).bind(\"click\"+this.eventNamespace,function(t){i.disabled&&(t.preventDefault(),t.stopImmediatePropagation())}),this._on({focus:function(){this.buttonElement.addClass(\"ui-state-focus\")},blur:function(){this.buttonElement.removeClass(\"ui-state-focus\")}}),s&&this.element.bind(\"change\"+this.eventNamespace,function(){e.refresh()}),\"checkbox\"===this.type?this.buttonElement.bind(\"click\"+this.eventNamespace,function(){return i.disabled?!1:void 0}):\"radio\"===this.type?this.buttonElement.bind(\"click\"+this.eventNamespace,function(){if(i.disabled)return!1;t(this).addClass(\"ui-state-active\"),e.buttonElement.attr(\"aria-pressed\",\"true\");var s=e.element[0];g(s).not(s).map(function(){return t(this).button(\"widget\")[0]}).removeClass(\"ui-state-active\").attr(\"aria-pressed\",\"false\")}):(this.buttonElement.bind(\"mousedown\"+this.eventNamespace,function(){return i.disabled?!1:(t(this).addClass(\"ui-state-active\"),d=this,e.document.one(\"mouseup\",function(){d=null}),void 0)}).bind(\"mouseup\"+this.eventNamespace,function(){return i.disabled?!1:(t(this).removeClass(\"ui-state-active\"),void 0)}).bind(\"keydown\"+this.eventNamespace,function(e){return i.disabled?!1:((e.keyCode===t.ui.keyCode.SPACE||e.keyCode===t.ui.keyCode.ENTER)&&t(this).addClass(\"ui-state-active\"),void 0)}).bind(\"keyup\"+this.eventNamespace+\" blur\"+this.eventNamespace,function(){t(this).removeClass(\"ui-state-active\")}),this.buttonElement.is(\"a\")&&this.buttonElement.keyup(function(e){e.keyCode===t.ui.keyCode.SPACE&&t(this).click()})),this._setOption(\"disabled\",i.disabled),this._resetButton()},_determineButtonType:function(){var t,e,i;this.type=this.element.is(\"[type=checkbox]\")?\"checkbox\":this.element.is(\"[type=radio]\")?\"radio\":this.element.is(\"input\")?\"input\":\"button\",\"checkbox\"===this.type||\"radio\"===this.type?(t=this.element.parents().last(),e=\"label[for='\"+this.element.attr(\"id\")+\"']\",this.buttonElement=t.find(e),this.buttonElement.length||(t=t.length?t.siblings():this.element.siblings(),this.buttonElement=t.filter(e),this.buttonElement.length||(this.buttonElement=t.find(e))),this.element.addClass(\"ui-helper-hidden-accessible\"),i=this.element.is(\":checked\"),i&&this.buttonElement.addClass(\"ui-state-active\"),this.buttonElement.prop(\"aria-pressed\",i)):this.buttonElement=this.element},widget:function(){return this.buttonElement},_destroy:function(){this.element.removeClass(\"ui-helper-hidden-accessible\"),this.buttonElement.removeClass(p+\" ui-state-active \"+f).removeAttr(\"role\").removeAttr(\"aria-pressed\").html(this.buttonElement.find(\".ui-button-text\").html()),this.hasTitle||this.buttonElement.removeAttr(\"title\")},_setOption:function(t,e){return this._super(t,e),\"disabled\"===t?(this.widget().toggleClass(\"ui-state-disabled\",!!e),this.element.prop(\"disabled\",!!e),e&&(\"checkbox\"===this.type||\"radio\"===this.type?this.buttonElement.removeClass(\"ui-state-focus\"):this.buttonElement.removeClass(\"ui-state-focus ui-state-active\")),void 0):(this._resetButton(),void 0)},refresh:function(){var e=this.element.is(\"input, button\")?this.element.is(\":disabled\"):this.element.hasClass(\"ui-button-disabled\");e!==this.options.disabled&&this._setOption(\"disabled\",e),\"radio\"===this.type?g(this.element[0]).each(function(){t(this).is(\":checked\")?t(this).button(\"widget\").addClass(\"ui-state-active\").attr(\"aria-pressed\",\"true\"):t(this).button(\"widget\").removeClass(\"ui-state-active\").attr(\"aria-pressed\",\"false\")}):\"checkbox\"===this.type&&(this.element.is(\":checked\")?this.buttonElement.addClass(\"ui-state-active\").attr(\"aria-pressed\",\"true\"):this.buttonElement.removeClass(\"ui-state-active\").attr(\"aria-pressed\",\"false\"))},_resetButton:function(){if(\"input\"===this.type)return this.options.label&&this.element.val(this.options.label),void 0;var e=this.buttonElement.removeClass(f),i=t(\"<span></span>\",this.document[0]).addClass(\"ui-button-text\").html(this.options.label).appendTo(e.empty()).text(),s=this.options.icons,n=s.primary&&s.secondary,a=[];s.primary||s.secondary?(this.options.text&&a.push(\"ui-button-text-icon\"+(n?\"s\":s.primary?\"-primary\":\"-secondary\")),s.primary&&e.prepend(\"<span class='ui-button-icon-primary ui-icon \"+s.primary+\"'></span>\"),s.secondary&&e.append(\"<span class='ui-button-icon-secondary ui-icon \"+s.secondary+\"'></span>\"),this.options.text||(a.push(n?\"ui-button-icons-only\":\"ui-button-icon-only\"),this.hasTitle||e.attr(\"title\",t.trim(i)))):a.push(\"ui-button-text-only\"),e.addClass(a.join(\" \"))}}),t.widget(\"ui.buttonset\",{version:\"1.11.4\",options:{items:\"button, input[type=button], input[type=submit], input[type=reset], input[type=checkbox], input[type=radio], a, :data(ui-button)\"},_create:function(){this.element.addClass(\"ui-buttonset\")},_init:function(){this.refresh()},_setOption:function(t,e){\"disabled\"===t&&this.buttons.button(\"option\",t,e),this._super(t,e)},refresh:function(){var e=\"rtl\"===this.element.css(\"direction\"),i=this.element.find(this.options.items),s=i.filter(\":ui-button\");i.not(\":ui-button\").button(),s.button(\"refresh\"),this.buttons=i.map(function(){return t(this).button(\"widget\")[0]}).removeClass(\"ui-corner-all ui-corner-left ui-corner-right\").filter(\":first\").addClass(e?\"ui-corner-right\":\"ui-corner-left\").end().filter(\":last\").addClass(e?\"ui-corner-left\":\"ui-corner-right\").end().end()},_destroy:function(){this.element.removeClass(\"ui-buttonset\"),this.buttons.map(function(){return t(this).button(\"widget\")[0]}).removeClass(\"ui-corner-left ui-corner-right\").end().button(\"destroy\")}}),t.ui.button,t.extend(t.ui,{datepicker:{version:\"1.11.4\"}});var v;t.extend(n.prototype,{markerClassName:\"hasDatepicker\",maxRows:4,_widgetDatepicker:function(){return this.dpDiv},setDefaults:function(t){return r(this._defaults,t||{}),this},_attachDatepicker:function(e,i){var s,n,a;s=e.nodeName.toLowerCase(),n=\"div\"===s||\"span\"===s,e.id||(this.uuid+=1,e.id=\"dp\"+this.uuid),a=this._newInst(t(e),n),a.settings=t.extend({},i||{}),\"input\"===s?this._connectDatepicker(e,a):n&&this._inlineDatepicker(e,a)},_newInst:function(e,i){var s=e[0].id.replace(/([^A-Za-z0-9_\\-])/g,\"\\\\\\\\$1\");return{id:s,input:e,selectedDay:0,selectedMonth:0,selectedYear:0,drawMonth:0,drawYear:0,inline:i,dpDiv:i?a(t(\"<div class='\"+this._inlineClass+\" ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all'></div>\")):this.dpDiv}},_connectDatepicker:function(e,i){var s=t(e);i.append=t([]),i.trigger=t([]),s.hasClass(this.markerClassName)||(this._attachments(s,i),s.addClass(this.markerClassName).keydown(this._doKeyDown).keypress(this._doKeyPress).keyup(this._doKeyUp),this._autoSize(i),t.data(e,\"datepicker\",i),i.settings.disabled&&this._disableDatepicker(e))},_attachments:function(e,i){var s,n,a,o=this._get(i,\"appendText\"),r=this._get(i,\"isRTL\");i.append&&i.append.remove(),o&&(i.append=t(\"<span class='\"+this._appendClass+\"'>\"+o+\"</span>\"),e[r?\"before\":\"after\"](i.append)),e.unbind(\"focus\",this._showDatepicker),i.trigger&&i.trigger.remove(),s=this._get(i,\"showOn\"),(\"focus\"===s||\"both\"===s)&&e.focus(this._showDatepicker),(\"button\"===s||\"both\"===s)&&(n=this._get(i,\"buttonText\"),a=this._get(i,\"buttonImage\"),i.trigger=t(this._get(i,\"buttonImageOnly\")?t(\"<img/>\").addClass(this._triggerClass).attr({src:a,alt:n,title:n}):t(\"<button type='button'></button>\").addClass(this._triggerClass).html(a?t(\"<img/>\").attr({src:a,alt:n,title:n}):n)),e[r?\"before\":\"after\"](i.trigger),i.trigger.click(function(){return t.datepicker._datepickerShowing&&t.datepicker._lastInput===e[0]?t.datepicker._hideDatepicker():t.datepicker._datepickerShowing&&t.datepicker._lastInput!==e[0]?(t.datepicker._hideDatepicker(),t.datepicker._showDatepicker(e[0])):t.datepicker._showDatepicker(e[0]),!1}))},_autoSize:function(t){if(this._get(t,\"autoSize\")&&!t.inline){var e,i,s,n,a=new Date(2009,11,20),o=this._get(t,\"dateFormat\");o.match(/[DM]/)&&(e=function(t){for(i=0,s=0,n=0;t.length>n;n++)t[n].length>i&&(i=t[n].length,s=n);return s},a.setMonth(e(this._get(t,o.match(/MM/)?\"monthNames\":\"monthNamesShort\"))),a.setDate(e(this._get(t,o.match(/DD/)?\"dayNames\":\"dayNamesShort\"))+20-a.getDay())),t.input.attr(\"size\",this._formatDate(t,a).length)}},_inlineDatepicker:function(e,i){var s=t(e);s.hasClass(this.markerClassName)||(s.addClass(this.markerClassName).append(i.dpDiv),t.data(e,\"datepicker\",i),this._setDate(i,this._getDefaultDate(i),!0),this._updateDatepicker(i),this._updateAlternate(i),i.settings.disabled&&this._disableDatepicker(e),i.dpDiv.css(\"display\",\"block\"))},_dialogDatepicker:function(e,i,s,n,a){var o,h,l,u,c,d=this._dialogInst;return d||(this.uuid+=1,o=\"dp\"+this.uuid,this._dialogInput=t(\"<input type='text' id='\"+o+\"' style='position: absolute; top: -100px; width: 0px;'/>\"),this._dialogInput.keydown(this._doKeyDown),t(\"body\").append(this._dialogInput),d=this._dialogInst=this._newInst(this._dialogInput,!1),d.settings={},t.data(this._dialogInput[0],\"datepicker\",d)),r(d.settings,n||{}),i=i&&i.constructor===Date?this._formatDate(d,i):i,this._dialogInput.val(i),this._pos=a?a.length?a:[a.pageX,a.pageY]:null,this._pos||(h=document.documentElement.clientWidth,l=document.documentElement.clientHeight,u=document.documentElement.scrollLeft||document.body.scrollLeft,c=document.documentElement.scrollTop||document.body.scrollTop,this._pos=[h/2-100+u,l/2-150+c]),this._dialogInput.css(\"left\",this._pos[0]+20+\"px\").css(\"top\",this._pos[1]+\"px\"),d.settings.onSelect=s,this._inDialog=!0,this.dpDiv.addClass(this._dialogClass),this._showDatepicker(this._dialogInput[0]),t.blockUI&&t.blockUI(this.dpDiv),t.data(this._dialogInput[0],\"datepicker\",d),this\n},_destroyDatepicker:function(e){var i,s=t(e),n=t.data(e,\"datepicker\");s.hasClass(this.markerClassName)&&(i=e.nodeName.toLowerCase(),t.removeData(e,\"datepicker\"),\"input\"===i?(n.append.remove(),n.trigger.remove(),s.removeClass(this.markerClassName).unbind(\"focus\",this._showDatepicker).unbind(\"keydown\",this._doKeyDown).unbind(\"keypress\",this._doKeyPress).unbind(\"keyup\",this._doKeyUp)):(\"div\"===i||\"span\"===i)&&s.removeClass(this.markerClassName).empty(),v===n&&(v=null))},_enableDatepicker:function(e){var i,s,n=t(e),a=t.data(e,\"datepicker\");n.hasClass(this.markerClassName)&&(i=e.nodeName.toLowerCase(),\"input\"===i?(e.disabled=!1,a.trigger.filter(\"button\").each(function(){this.disabled=!1}).end().filter(\"img\").css({opacity:\"1.0\",cursor:\"\"})):(\"div\"===i||\"span\"===i)&&(s=n.children(\".\"+this._inlineClass),s.children().removeClass(\"ui-state-disabled\"),s.find(\"select.ui-datepicker-month, select.ui-datepicker-year\").prop(\"disabled\",!1)),this._disabledInputs=t.map(this._disabledInputs,function(t){return t===e?null:t}))},_disableDatepicker:function(e){var i,s,n=t(e),a=t.data(e,\"datepicker\");n.hasClass(this.markerClassName)&&(i=e.nodeName.toLowerCase(),\"input\"===i?(e.disabled=!0,a.trigger.filter(\"button\").each(function(){this.disabled=!0}).end().filter(\"img\").css({opacity:\"0.5\",cursor:\"default\"})):(\"div\"===i||\"span\"===i)&&(s=n.children(\".\"+this._inlineClass),s.children().addClass(\"ui-state-disabled\"),s.find(\"select.ui-datepicker-month, select.ui-datepicker-year\").prop(\"disabled\",!0)),this._disabledInputs=t.map(this._disabledInputs,function(t){return t===e?null:t}),this._disabledInputs[this._disabledInputs.length]=e)},_isDisabledDatepicker:function(t){if(!t)return!1;for(var e=0;this._disabledInputs.length>e;e++)if(this._disabledInputs[e]===t)return!0;return!1},_getInst:function(e){try{return t.data(e,\"datepicker\")}catch(i){throw\"Missing instance data for this datepicker\"}},_optionDatepicker:function(e,i,s){var n,a,o,h,l=this._getInst(e);return 2===arguments.length&&\"string\"==typeof i?\"defaults\"===i?t.extend({},t.datepicker._defaults):l?\"all\"===i?t.extend({},l.settings):this._get(l,i):null:(n=i||{},\"string\"==typeof i&&(n={},n[i]=s),l&&(this._curInst===l&&this._hideDatepicker(),a=this._getDateDatepicker(e,!0),o=this._getMinMaxDate(l,\"min\"),h=this._getMinMaxDate(l,\"max\"),r(l.settings,n),null!==o&&void 0!==n.dateFormat&&void 0===n.minDate&&(l.settings.minDate=this._formatDate(l,o)),null!==h&&void 0!==n.dateFormat&&void 0===n.maxDate&&(l.settings.maxDate=this._formatDate(l,h)),\"disabled\"in n&&(n.disabled?this._disableDatepicker(e):this._enableDatepicker(e)),this._attachments(t(e),l),this._autoSize(l),this._setDate(l,a),this._updateAlternate(l),this._updateDatepicker(l)),void 0)},_changeDatepicker:function(t,e,i){this._optionDatepicker(t,e,i)},_refreshDatepicker:function(t){var e=this._getInst(t);e&&this._updateDatepicker(e)},_setDateDatepicker:function(t,e){var i=this._getInst(t);i&&(this._setDate(i,e),this._updateDatepicker(i),this._updateAlternate(i))},_getDateDatepicker:function(t,e){var i=this._getInst(t);return i&&!i.inline&&this._setDateFromField(i,e),i?this._getDate(i):null},_doKeyDown:function(e){var i,s,n,a=t.datepicker._getInst(e.target),o=!0,r=a.dpDiv.is(\".ui-datepicker-rtl\");if(a._keyEvent=!0,t.datepicker._datepickerShowing)switch(e.keyCode){case 9:t.datepicker._hideDatepicker(),o=!1;break;case 13:return n=t(\"td.\"+t.datepicker._dayOverClass+\":not(.\"+t.datepicker._currentClass+\")\",a.dpDiv),n[0]&&t.datepicker._selectDay(e.target,a.selectedMonth,a.selectedYear,n[0]),i=t.datepicker._get(a,\"onSelect\"),i?(s=t.datepicker._formatDate(a),i.apply(a.input?a.input[0]:null,[s,a])):t.datepicker._hideDatepicker(),!1;case 27:t.datepicker._hideDatepicker();break;case 33:t.datepicker._adjustDate(e.target,e.ctrlKey?-t.datepicker._get(a,\"stepBigMonths\"):-t.datepicker._get(a,\"stepMonths\"),\"M\");break;case 34:t.datepicker._adjustDate(e.target,e.ctrlKey?+t.datepicker._get(a,\"stepBigMonths\"):+t.datepicker._get(a,\"stepMonths\"),\"M\");break;case 35:(e.ctrlKey||e.metaKey)&&t.datepicker._clearDate(e.target),o=e.ctrlKey||e.metaKey;break;case 36:(e.ctrlKey||e.metaKey)&&t.datepicker._gotoToday(e.target),o=e.ctrlKey||e.metaKey;break;case 37:(e.ctrlKey||e.metaKey)&&t.datepicker._adjustDate(e.target,r?1:-1,\"D\"),o=e.ctrlKey||e.metaKey,e.originalEvent.altKey&&t.datepicker._adjustDate(e.target,e.ctrlKey?-t.datepicker._get(a,\"stepBigMonths\"):-t.datepicker._get(a,\"stepMonths\"),\"M\");break;case 38:(e.ctrlKey||e.metaKey)&&t.datepicker._adjustDate(e.target,-7,\"D\"),o=e.ctrlKey||e.metaKey;break;case 39:(e.ctrlKey||e.metaKey)&&t.datepicker._adjustDate(e.target,r?-1:1,\"D\"),o=e.ctrlKey||e.metaKey,e.originalEvent.altKey&&t.datepicker._adjustDate(e.target,e.ctrlKey?+t.datepicker._get(a,\"stepBigMonths\"):+t.datepicker._get(a,\"stepMonths\"),\"M\");break;case 40:(e.ctrlKey||e.metaKey)&&t.datepicker._adjustDate(e.target,7,\"D\"),o=e.ctrlKey||e.metaKey;break;default:o=!1}else 36===e.keyCode&&e.ctrlKey?t.datepicker._showDatepicker(this):o=!1;o&&(e.preventDefault(),e.stopPropagation())},_doKeyPress:function(e){var i,s,n=t.datepicker._getInst(e.target);return t.datepicker._get(n,\"constrainInput\")?(i=t.datepicker._possibleChars(t.datepicker._get(n,\"dateFormat\")),s=String.fromCharCode(null==e.charCode?e.keyCode:e.charCode),e.ctrlKey||e.metaKey||\" \">s||!i||i.indexOf(s)>-1):void 0},_doKeyUp:function(e){var i,s=t.datepicker._getInst(e.target);if(s.input.val()!==s.lastVal)try{i=t.datepicker.parseDate(t.datepicker._get(s,\"dateFormat\"),s.input?s.input.val():null,t.datepicker._getFormatConfig(s)),i&&(t.datepicker._setDateFromField(s),t.datepicker._updateAlternate(s),t.datepicker._updateDatepicker(s))}catch(n){}return!0},_showDatepicker:function(e){if(e=e.target||e,\"input\"!==e.nodeName.toLowerCase()&&(e=t(\"input\",e.parentNode)[0]),!t.datepicker._isDisabledDatepicker(e)&&t.datepicker._lastInput!==e){var i,n,a,o,h,l,u;i=t.datepicker._getInst(e),t.datepicker._curInst&&t.datepicker._curInst!==i&&(t.datepicker._curInst.dpDiv.stop(!0,!0),i&&t.datepicker._datepickerShowing&&t.datepicker._hideDatepicker(t.datepicker._curInst.input[0])),n=t.datepicker._get(i,\"beforeShow\"),a=n?n.apply(e,[e,i]):{},a!==!1&&(r(i.settings,a),i.lastVal=null,t.datepicker._lastInput=e,t.datepicker._setDateFromField(i),t.datepicker._inDialog&&(e.value=\"\"),t.datepicker._pos||(t.datepicker._pos=t.datepicker._findPos(e),t.datepicker._pos[1]+=e.offsetHeight),o=!1,t(e).parents().each(function(){return o|=\"fixed\"===t(this).css(\"position\"),!o}),h={left:t.datepicker._pos[0],top:t.datepicker._pos[1]},t.datepicker._pos=null,i.dpDiv.empty(),i.dpDiv.css({position:\"absolute\",display:\"block\",top:\"-1000px\"}),t.datepicker._updateDatepicker(i),h=t.datepicker._checkOffset(i,h,o),i.dpDiv.css({position:t.datepicker._inDialog&&t.blockUI?\"static\":o?\"fixed\":\"absolute\",display:\"none\",left:h.left+\"px\",top:h.top+\"px\"}),i.inline||(l=t.datepicker._get(i,\"showAnim\"),u=t.datepicker._get(i,\"duration\"),i.dpDiv.css(\"z-index\",s(t(e))+1),t.datepicker._datepickerShowing=!0,t.effects&&t.effects.effect[l]?i.dpDiv.show(l,t.datepicker._get(i,\"showOptions\"),u):i.dpDiv[l||\"show\"](l?u:null),t.datepicker._shouldFocusInput(i)&&i.input.focus(),t.datepicker._curInst=i))}},_updateDatepicker:function(e){this.maxRows=4,v=e,e.dpDiv.empty().append(this._generateHTML(e)),this._attachHandlers(e);var i,s=this._getNumberOfMonths(e),n=s[1],a=17,r=e.dpDiv.find(\".\"+this._dayOverClass+\" a\");r.length>0&&o.apply(r.get(0)),e.dpDiv.removeClass(\"ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4\").width(\"\"),n>1&&e.dpDiv.addClass(\"ui-datepicker-multi-\"+n).css(\"width\",a*n+\"em\"),e.dpDiv[(1!==s[0]||1!==s[1]?\"add\":\"remove\")+\"Class\"](\"ui-datepicker-multi\"),e.dpDiv[(this._get(e,\"isRTL\")?\"add\":\"remove\")+\"Class\"](\"ui-datepicker-rtl\"),e===t.datepicker._curInst&&t.datepicker._datepickerShowing&&t.datepicker._shouldFocusInput(e)&&e.input.focus(),e.yearshtml&&(i=e.yearshtml,setTimeout(function(){i===e.yearshtml&&e.yearshtml&&e.dpDiv.find(\"select.ui-datepicker-year:first\").replaceWith(e.yearshtml),i=e.yearshtml=null},0))},_shouldFocusInput:function(t){return t.input&&t.input.is(\":visible\")&&!t.input.is(\":disabled\")&&!t.input.is(\":focus\")},_checkOffset:function(e,i,s){var n=e.dpDiv.outerWidth(),a=e.dpDiv.outerHeight(),o=e.input?e.input.outerWidth():0,r=e.input?e.input.outerHeight():0,h=document.documentElement.clientWidth+(s?0:t(document).scrollLeft()),l=document.documentElement.clientHeight+(s?0:t(document).scrollTop());return i.left-=this._get(e,\"isRTL\")?n-o:0,i.left-=s&&i.left===e.input.offset().left?t(document).scrollLeft():0,i.top-=s&&i.top===e.input.offset().top+r?t(document).scrollTop():0,i.left-=Math.min(i.left,i.left+n>h&&h>n?Math.abs(i.left+n-h):0),i.top-=Math.min(i.top,i.top+a>l&&l>a?Math.abs(a+r):0),i},_findPos:function(e){for(var i,s=this._getInst(e),n=this._get(s,\"isRTL\");e&&(\"hidden\"===e.type||1!==e.nodeType||t.expr.filters.hidden(e));)e=e[n?\"previousSibling\":\"nextSibling\"];return i=t(e).offset(),[i.left,i.top]},_hideDatepicker:function(e){var i,s,n,a,o=this._curInst;!o||e&&o!==t.data(e,\"datepicker\")||this._datepickerShowing&&(i=this._get(o,\"showAnim\"),s=this._get(o,\"duration\"),n=function(){t.datepicker._tidyDialog(o)},t.effects&&(t.effects.effect[i]||t.effects[i])?o.dpDiv.hide(i,t.datepicker._get(o,\"showOptions\"),s,n):o.dpDiv[\"slideDown\"===i?\"slideUp\":\"fadeIn\"===i?\"fadeOut\":\"hide\"](i?s:null,n),i||n(),this._datepickerShowing=!1,a=this._get(o,\"onClose\"),a&&a.apply(o.input?o.input[0]:null,[o.input?o.input.val():\"\",o]),this._lastInput=null,this._inDialog&&(this._dialogInput.css({position:\"absolute\",left:\"0\",top:\"-100px\"}),t.blockUI&&(t.unblockUI(),t(\"body\").append(this.dpDiv))),this._inDialog=!1)},_tidyDialog:function(t){t.dpDiv.removeClass(this._dialogClass).unbind(\".ui-datepicker-calendar\")},_checkExternalClick:function(e){if(t.datepicker._curInst){var i=t(e.target),s=t.datepicker._getInst(i[0]);(i[0].id!==t.datepicker._mainDivId&&0===i.parents(\"#\"+t.datepicker._mainDivId).length&&!i.hasClass(t.datepicker.markerClassName)&&!i.closest(\".\"+t.datepicker._triggerClass).length&&t.datepicker._datepickerShowing&&(!t.datepicker._inDialog||!t.blockUI)||i.hasClass(t.datepicker.markerClassName)&&t.datepicker._curInst!==s)&&t.datepicker._hideDatepicker()}},_adjustDate:function(e,i,s){var n=t(e),a=this._getInst(n[0]);this._isDisabledDatepicker(n[0])||(this._adjustInstDate(a,i+(\"M\"===s?this._get(a,\"showCurrentAtPos\"):0),s),this._updateDatepicker(a))},_gotoToday:function(e){var i,s=t(e),n=this._getInst(s[0]);this._get(n,\"gotoCurrent\")&&n.currentDay?(n.selectedDay=n.currentDay,n.drawMonth=n.selectedMonth=n.currentMonth,n.drawYear=n.selectedYear=n.currentYear):(i=new Date,n.selectedDay=i.getDate(),n.drawMonth=n.selectedMonth=i.getMonth(),n.drawYear=n.selectedYear=i.getFullYear()),this._notifyChange(n),this._adjustDate(s)},_selectMonthYear:function(e,i,s){var n=t(e),a=this._getInst(n[0]);a[\"selected\"+(\"M\"===s?\"Month\":\"Year\")]=a[\"draw\"+(\"M\"===s?\"Month\":\"Year\")]=parseInt(i.options[i.selectedIndex].value,10),this._notifyChange(a),this._adjustDate(n)},_selectDay:function(e,i,s,n){var a,o=t(e);t(n).hasClass(this._unselectableClass)||this._isDisabledDatepicker(o[0])||(a=this._getInst(o[0]),a.selectedDay=a.currentDay=t(\"a\",n).html(),a.selectedMonth=a.currentMonth=i,a.selectedYear=a.currentYear=s,this._selectDate(e,this._formatDate(a,a.currentDay,a.currentMonth,a.currentYear)))},_clearDate:function(e){var i=t(e);this._selectDate(i,\"\")},_selectDate:function(e,i){var s,n=t(e),a=this._getInst(n[0]);i=null!=i?i:this._formatDate(a),a.input&&a.input.val(i),this._updateAlternate(a),s=this._get(a,\"onSelect\"),s?s.apply(a.input?a.input[0]:null,[i,a]):a.input&&a.input.trigger(\"change\"),a.inline?this._updateDatepicker(a):(this._hideDatepicker(),this._lastInput=a.input[0],\"object\"!=typeof a.input[0]&&a.input.focus(),this._lastInput=null)},_updateAlternate:function(e){var i,s,n,a=this._get(e,\"altField\");a&&(i=this._get(e,\"altFormat\")||this._get(e,\"dateFormat\"),s=this._getDate(e),n=this.formatDate(i,s,this._getFormatConfig(e)),t(a).each(function(){t(this).val(n)}))},noWeekends:function(t){var e=t.getDay();return[e>0&&6>e,\"\"]},iso8601Week:function(t){var e,i=new Date(t.getTime());return i.setDate(i.getDate()+4-(i.getDay()||7)),e=i.getTime(),i.setMonth(0),i.setDate(1),Math.floor(Math.round((e-i)/864e5)/7)+1},parseDate:function(e,i,s){if(null==e||null==i)throw\"Invalid arguments\";if(i=\"object\"==typeof i?\"\"+i:i+\"\",\"\"===i)return null;var n,a,o,r,h=0,l=(s?s.shortYearCutoff:null)||this._defaults.shortYearCutoff,u=\"string\"!=typeof l?l:(new Date).getFullYear()%100+parseInt(l,10),c=(s?s.dayNamesShort:null)||this._defaults.dayNamesShort,d=(s?s.dayNames:null)||this._defaults.dayNames,p=(s?s.monthNamesShort:null)||this._defaults.monthNamesShort,f=(s?s.monthNames:null)||this._defaults.monthNames,m=-1,g=-1,v=-1,_=-1,b=!1,y=function(t){var i=e.length>n+1&&e.charAt(n+1)===t;return i&&n++,i},x=function(t){var e=y(t),s=\"@\"===t?14:\"!\"===t?20:\"y\"===t&&e?4:\"o\"===t?3:2,n=\"y\"===t?s:1,a=RegExp(\"^\\\\d{\"+n+\",\"+s+\"}\"),o=i.substring(h).match(a);if(!o)throw\"Missing number at position \"+h;return h+=o[0].length,parseInt(o[0],10)},w=function(e,s,n){var a=-1,o=t.map(y(e)?n:s,function(t,e){return[[e,t]]}).sort(function(t,e){return-(t[1].length-e[1].length)});if(t.each(o,function(t,e){var s=e[1];return i.substr(h,s.length).toLowerCase()===s.toLowerCase()?(a=e[0],h+=s.length,!1):void 0}),-1!==a)return a+1;throw\"Unknown name at position \"+h},k=function(){if(i.charAt(h)!==e.charAt(n))throw\"Unexpected literal at position \"+h;h++};for(n=0;e.length>n;n++)if(b)\"'\"!==e.charAt(n)||y(\"'\")?k():b=!1;else switch(e.charAt(n)){case\"d\":v=x(\"d\");break;case\"D\":w(\"D\",c,d);break;case\"o\":_=x(\"o\");break;case\"m\":g=x(\"m\");break;case\"M\":g=w(\"M\",p,f);break;case\"y\":m=x(\"y\");break;case\"@\":r=new Date(x(\"@\")),m=r.getFullYear(),g=r.getMonth()+1,v=r.getDate();break;case\"!\":r=new Date((x(\"!\")-this._ticksTo1970)/1e4),m=r.getFullYear(),g=r.getMonth()+1,v=r.getDate();break;case\"'\":y(\"'\")?k():b=!0;break;default:k()}if(i.length>h&&(o=i.substr(h),!/^\\s+/.test(o)))throw\"Extra/unparsed characters found in date: \"+o;if(-1===m?m=(new Date).getFullYear():100>m&&(m+=(new Date).getFullYear()-(new Date).getFullYear()%100+(u>=m?0:-100)),_>-1)for(g=1,v=_;;){if(a=this._getDaysInMonth(m,g-1),a>=v)break;g++,v-=a}if(r=this._daylightSavingAdjust(new Date(m,g-1,v)),r.getFullYear()!==m||r.getMonth()+1!==g||r.getDate()!==v)throw\"Invalid date\";return r},ATOM:\"yy-mm-dd\",COOKIE:\"D, dd M yy\",ISO_8601:\"yy-mm-dd\",RFC_822:\"D, d M y\",RFC_850:\"DD, dd-M-y\",RFC_1036:\"D, d M y\",RFC_1123:\"D, d M yy\",RFC_2822:\"D, d M yy\",RSS:\"D, d M y\",TICKS:\"!\",TIMESTAMP:\"@\",W3C:\"yy-mm-dd\",_ticksTo1970:1e7*60*60*24*(718685+Math.floor(492.5)-Math.floor(19.7)+Math.floor(4.925)),formatDate:function(t,e,i){if(!e)return\"\";var s,n=(i?i.dayNamesShort:null)||this._defaults.dayNamesShort,a=(i?i.dayNames:null)||this._defaults.dayNames,o=(i?i.monthNamesShort:null)||this._defaults.monthNamesShort,r=(i?i.monthNames:null)||this._defaults.monthNames,h=function(e){var i=t.length>s+1&&t.charAt(s+1)===e;return i&&s++,i},l=function(t,e,i){var s=\"\"+e;if(h(t))for(;i>s.length;)s=\"0\"+s;return s},u=function(t,e,i,s){return h(t)?s[e]:i[e]},c=\"\",d=!1;if(e)for(s=0;t.length>s;s++)if(d)\"'\"!==t.charAt(s)||h(\"'\")?c+=t.charAt(s):d=!1;else switch(t.charAt(s)){case\"d\":c+=l(\"d\",e.getDate(),2);break;case\"D\":c+=u(\"D\",e.getDay(),n,a);break;case\"o\":c+=l(\"o\",Math.round((new Date(e.getFullYear(),e.getMonth(),e.getDate()).getTime()-new Date(e.getFullYear(),0,0).getTime())/864e5),3);break;case\"m\":c+=l(\"m\",e.getMonth()+1,2);break;case\"M\":c+=u(\"M\",e.getMonth(),o,r);break;case\"y\":c+=h(\"y\")?e.getFullYear():(10>e.getYear()%100?\"0\":\"\")+e.getYear()%100;break;case\"@\":c+=e.getTime();break;case\"!\":c+=1e4*e.getTime()+this._ticksTo1970;break;case\"'\":h(\"'\")?c+=\"'\":d=!0;break;default:c+=t.charAt(s)}return c},_possibleChars:function(t){var e,i=\"\",s=!1,n=function(i){var s=t.length>e+1&&t.charAt(e+1)===i;return s&&e++,s};for(e=0;t.length>e;e++)if(s)\"'\"!==t.charAt(e)||n(\"'\")?i+=t.charAt(e):s=!1;else switch(t.charAt(e)){case\"d\":case\"m\":case\"y\":case\"@\":i+=\"0123456789\";break;case\"D\":case\"M\":return null;case\"'\":n(\"'\")?i+=\"'\":s=!0;break;default:i+=t.charAt(e)}return i},_get:function(t,e){return void 0!==t.settings[e]?t.settings[e]:this._defaults[e]},_setDateFromField:function(t,e){if(t.input.val()!==t.lastVal){var i=this._get(t,\"dateFormat\"),s=t.lastVal=t.input?t.input.val():null,n=this._getDefaultDate(t),a=n,o=this._getFormatConfig(t);try{a=this.parseDate(i,s,o)||n}catch(r){s=e?\"\":s}t.selectedDay=a.getDate(),t.drawMonth=t.selectedMonth=a.getMonth(),t.drawYear=t.selectedYear=a.getFullYear(),t.currentDay=s?a.getDate():0,t.currentMonth=s?a.getMonth():0,t.currentYear=s?a.getFullYear():0,this._adjustInstDate(t)}},_getDefaultDate:function(t){return this._restrictMinMax(t,this._determineDate(t,this._get(t,\"defaultDate\"),new Date))},_determineDate:function(e,i,s){var n=function(t){var e=new Date;return e.setDate(e.getDate()+t),e},a=function(i){try{return t.datepicker.parseDate(t.datepicker._get(e,\"dateFormat\"),i,t.datepicker._getFormatConfig(e))}catch(s){}for(var n=(i.toLowerCase().match(/^c/)?t.datepicker._getDate(e):null)||new Date,a=n.getFullYear(),o=n.getMonth(),r=n.getDate(),h=/([+\\-]?[0-9]+)\\s*(d|D|w|W|m|M|y|Y)?/g,l=h.exec(i);l;){switch(l[2]||\"d\"){case\"d\":case\"D\":r+=parseInt(l[1],10);break;case\"w\":case\"W\":r+=7*parseInt(l[1],10);break;case\"m\":case\"M\":o+=parseInt(l[1],10),r=Math.min(r,t.datepicker._getDaysInMonth(a,o));break;case\"y\":case\"Y\":a+=parseInt(l[1],10),r=Math.min(r,t.datepicker._getDaysInMonth(a,o))}l=h.exec(i)}return new Date(a,o,r)},o=null==i||\"\"===i?s:\"string\"==typeof i?a(i):\"number\"==typeof i?isNaN(i)?s:n(i):new Date(i.getTime());return o=o&&\"Invalid Date\"==\"\"+o?s:o,o&&(o.setHours(0),o.setMinutes(0),o.setSeconds(0),o.setMilliseconds(0)),this._daylightSavingAdjust(o)},_daylightSavingAdjust:function(t){return t?(t.setHours(t.getHours()>12?t.getHours()+2:0),t):null},_setDate:function(t,e,i){var s=!e,n=t.selectedMonth,a=t.selectedYear,o=this._restrictMinMax(t,this._determineDate(t,e,new Date));t.selectedDay=t.currentDay=o.getDate(),t.drawMonth=t.selectedMonth=t.currentMonth=o.getMonth(),t.drawYear=t.selectedYear=t.currentYear=o.getFullYear(),n===t.selectedMonth&&a===t.selectedYear||i||this._notifyChange(t),this._adjustInstDate(t),t.input&&t.input.val(s?\"\":this._formatDate(t))},_getDate:function(t){var e=!t.currentYear||t.input&&\"\"===t.input.val()?null:this._daylightSavingAdjust(new Date(t.currentYear,t.currentMonth,t.currentDay));return e},_attachHandlers:function(e){var i=this._get(e,\"stepMonths\"),s=\"#\"+e.id.replace(/\\\\\\\\/g,\"\\\\\");e.dpDiv.find(\"[data-handler]\").map(function(){var e={prev:function(){t.datepicker._adjustDate(s,-i,\"M\")},next:function(){t.datepicker._adjustDate(s,+i,\"M\")},hide:function(){t.datepicker._hideDatepicker()},today:function(){t.datepicker._gotoToday(s)},selectDay:function(){return t.datepicker._selectDay(s,+this.getAttribute(\"data-month\"),+this.getAttribute(\"data-year\"),this),!1},selectMonth:function(){return t.datepicker._selectMonthYear(s,this,\"M\"),!1},selectYear:function(){return t.datepicker._selectMonthYear(s,this,\"Y\"),!1}};t(this).bind(this.getAttribute(\"data-event\"),e[this.getAttribute(\"data-handler\")])})},_generateHTML:function(t){var e,i,s,n,a,o,r,h,l,u,c,d,p,f,m,g,v,_,b,y,x,w,k,D,T,S,M,C,N,P,I,A,H,z,F,E,O,W,L,R=new Date,j=this._daylightSavingAdjust(new Date(R.getFullYear(),R.getMonth(),R.getDate())),Y=this._get(t,\"isRTL\"),B=this._get(t,\"showButtonPanel\"),J=this._get(t,\"hideIfNoPrevNext\"),K=this._get(t,\"navigationAsDateFormat\"),U=this._getNumberOfMonths(t),q=this._get(t,\"showCurrentAtPos\"),V=this._get(t,\"stepMonths\"),G=1!==U[0]||1!==U[1],X=this._daylightSavingAdjust(t.currentDay?new Date(t.currentYear,t.currentMonth,t.currentDay):new Date(9999,9,9)),$=this._getMinMaxDate(t,\"min\"),Q=this._getMinMaxDate(t,\"max\"),Z=t.drawMonth-q,te=t.drawYear;if(0>Z&&(Z+=12,te--),Q)for(e=this._daylightSavingAdjust(new Date(Q.getFullYear(),Q.getMonth()-U[0]*U[1]+1,Q.getDate())),e=$&&$>e?$:e;this._daylightSavingAdjust(new Date(te,Z,1))>e;)Z--,0>Z&&(Z=11,te--);for(t.drawMonth=Z,t.drawYear=te,i=this._get(t,\"prevText\"),i=K?this.formatDate(i,this._daylightSavingAdjust(new Date(te,Z-V,1)),this._getFormatConfig(t)):i,s=this._canAdjustMonth(t,-1,te,Z)?\"<a class='ui-datepicker-prev ui-corner-all' data-handler='prev' data-event='click' title='\"+i+\"'><span class='ui-icon ui-icon-circle-triangle-\"+(Y?\"e\":\"w\")+\"'>\"+i+\"</span></a>\":J?\"\":\"<a class='ui-datepicker-prev ui-corner-all ui-state-disabled' title='\"+i+\"'><span class='ui-icon ui-icon-circle-triangle-\"+(Y?\"e\":\"w\")+\"'>\"+i+\"</span></a>\",n=this._get(t,\"nextText\"),n=K?this.formatDate(n,this._daylightSavingAdjust(new Date(te,Z+V,1)),this._getFormatConfig(t)):n,a=this._canAdjustMonth(t,1,te,Z)?\"<a class='ui-datepicker-next ui-corner-all' data-handler='next' data-event='click' title='\"+n+\"'><span class='ui-icon ui-icon-circle-triangle-\"+(Y?\"w\":\"e\")+\"'>\"+n+\"</span></a>\":J?\"\":\"<a class='ui-datepicker-next ui-corner-all ui-state-disabled' title='\"+n+\"'><span class='ui-icon ui-icon-circle-triangle-\"+(Y?\"w\":\"e\")+\"'>\"+n+\"</span></a>\",o=this._get(t,\"currentText\"),r=this._get(t,\"gotoCurrent\")&&t.currentDay?X:j,o=K?this.formatDate(o,r,this._getFormatConfig(t)):o,h=t.inline?\"\":\"<button type='button' class='ui-datepicker-close ui-state-default ui-priority-primary ui-corner-all' data-handler='hide' data-event='click'>\"+this._get(t,\"closeText\")+\"</button>\",l=B?\"<div class='ui-datepicker-buttonpane ui-widget-content'>\"+(Y?h:\"\")+(this._isInRange(t,r)?\"<button type='button' class='ui-datepicker-current ui-state-default ui-priority-secondary ui-corner-all' data-handler='today' data-event='click'>\"+o+\"</button>\":\"\")+(Y?\"\":h)+\"</div>\":\"\",u=parseInt(this._get(t,\"firstDay\"),10),u=isNaN(u)?0:u,c=this._get(t,\"showWeek\"),d=this._get(t,\"dayNames\"),p=this._get(t,\"dayNamesMin\"),f=this._get(t,\"monthNames\"),m=this._get(t,\"monthNamesShort\"),g=this._get(t,\"beforeShowDay\"),v=this._get(t,\"showOtherMonths\"),_=this._get(t,\"selectOtherMonths\"),b=this._getDefaultDate(t),y=\"\",w=0;U[0]>w;w++){for(k=\"\",this.maxRows=4,D=0;U[1]>D;D++){if(T=this._daylightSavingAdjust(new Date(te,Z,t.selectedDay)),S=\" ui-corner-all\",M=\"\",G){if(M+=\"<div class='ui-datepicker-group\",U[1]>1)switch(D){case 0:M+=\" ui-datepicker-group-first\",S=\" ui-corner-\"+(Y?\"right\":\"left\");break;case U[1]-1:M+=\" ui-datepicker-group-last\",S=\" ui-corner-\"+(Y?\"left\":\"right\");break;default:M+=\" ui-datepicker-group-middle\",S=\"\"}M+=\"'>\"}for(M+=\"<div class='ui-datepicker-header ui-widget-header ui-helper-clearfix\"+S+\"'>\"+(/all|left/.test(S)&&0===w?Y?a:s:\"\")+(/all|right/.test(S)&&0===w?Y?s:a:\"\")+this._generateMonthYearHeader(t,Z,te,$,Q,w>0||D>0,f,m)+\"</div><table class='ui-datepicker-calendar'><thead>\"+\"<tr>\",C=c?\"<th class='ui-datepicker-week-col'>\"+this._get(t,\"weekHeader\")+\"</th>\":\"\",x=0;7>x;x++)N=(x+u)%7,C+=\"<th scope='col'\"+((x+u+6)%7>=5?\" class='ui-datepicker-week-end'\":\"\")+\">\"+\"<span title='\"+d[N]+\"'>\"+p[N]+\"</span></th>\";for(M+=C+\"</tr></thead><tbody>\",P=this._getDaysInMonth(te,Z),te===t.selectedYear&&Z===t.selectedMonth&&(t.selectedDay=Math.min(t.selectedDay,P)),I=(this._getFirstDayOfMonth(te,Z)-u+7)%7,A=Math.ceil((I+P)/7),H=G?this.maxRows>A?this.maxRows:A:A,this.maxRows=H,z=this._daylightSavingAdjust(new Date(te,Z,1-I)),F=0;H>F;F++){for(M+=\"<tr>\",E=c?\"<td class='ui-datepicker-week-col'>\"+this._get(t,\"calculateWeek\")(z)+\"</td>\":\"\",x=0;7>x;x++)O=g?g.apply(t.input?t.input[0]:null,[z]):[!0,\"\"],W=z.getMonth()!==Z,L=W&&!_||!O[0]||$&&$>z||Q&&z>Q,E+=\"<td class='\"+((x+u+6)%7>=5?\" ui-datepicker-week-end\":\"\")+(W?\" ui-datepicker-other-month\":\"\")+(z.getTime()===T.getTime()&&Z===t.selectedMonth&&t._keyEvent||b.getTime()===z.getTime()&&b.getTime()===T.getTime()?\" \"+this._dayOverClass:\"\")+(L?\" \"+this._unselectableClass+\" ui-state-disabled\":\"\")+(W&&!v?\"\":\" \"+O[1]+(z.getTime()===X.getTime()?\" \"+this._currentClass:\"\")+(z.getTime()===j.getTime()?\" ui-datepicker-today\":\"\"))+\"'\"+(W&&!v||!O[2]?\"\":\" title='\"+O[2].replace(/'/g,\"&#39;\")+\"'\")+(L?\"\":\" data-handler='selectDay' data-event='click' data-month='\"+z.getMonth()+\"' data-year='\"+z.getFullYear()+\"'\")+\">\"+(W&&!v?\"&#xa0;\":L?\"<span class='ui-state-default'>\"+z.getDate()+\"</span>\":\"<a class='ui-state-default\"+(z.getTime()===j.getTime()?\" ui-state-highlight\":\"\")+(z.getTime()===X.getTime()?\" ui-state-active\":\"\")+(W?\" ui-priority-secondary\":\"\")+\"' href='#'>\"+z.getDate()+\"</a>\")+\"</td>\",z.setDate(z.getDate()+1),z=this._daylightSavingAdjust(z);M+=E+\"</tr>\"}Z++,Z>11&&(Z=0,te++),M+=\"</tbody></table>\"+(G?\"</div>\"+(U[0]>0&&D===U[1]-1?\"<div class='ui-datepicker-row-break'></div>\":\"\"):\"\"),k+=M}y+=k}return y+=l,t._keyEvent=!1,y},_generateMonthYearHeader:function(t,e,i,s,n,a,o,r){var h,l,u,c,d,p,f,m,g=this._get(t,\"changeMonth\"),v=this._get(t,\"changeYear\"),_=this._get(t,\"showMonthAfterYear\"),b=\"<div class='ui-datepicker-title'>\",y=\"\";if(a||!g)y+=\"<span class='ui-datepicker-month'>\"+o[e]+\"</span>\";else{for(h=s&&s.getFullYear()===i,l=n&&n.getFullYear()===i,y+=\"<select class='ui-datepicker-month' data-handler='selectMonth' data-event='change'>\",u=0;12>u;u++)(!h||u>=s.getMonth())&&(!l||n.getMonth()>=u)&&(y+=\"<option value='\"+u+\"'\"+(u===e?\" selected='selected'\":\"\")+\">\"+r[u]+\"</option>\");y+=\"</select>\"}if(_||(b+=y+(!a&&g&&v?\"\":\"&#xa0;\")),!t.yearshtml)if(t.yearshtml=\"\",a||!v)b+=\"<span class='ui-datepicker-year'>\"+i+\"</span>\";else{for(c=this._get(t,\"yearRange\").split(\":\"),d=(new Date).getFullYear(),p=function(t){var e=t.match(/c[+\\-].*/)?i+parseInt(t.substring(1),10):t.match(/[+\\-].*/)?d+parseInt(t,10):parseInt(t,10);return isNaN(e)?d:e},f=p(c[0]),m=Math.max(f,p(c[1]||\"\")),f=s?Math.max(f,s.getFullYear()):f,m=n?Math.min(m,n.getFullYear()):m,t.yearshtml+=\"<select class='ui-datepicker-year' data-handler='selectYear' data-event='change'>\";m>=f;f++)t.yearshtml+=\"<option value='\"+f+\"'\"+(f===i?\" selected='selected'\":\"\")+\">\"+f+\"</option>\";t.yearshtml+=\"</select>\",b+=t.yearshtml,t.yearshtml=null}return b+=this._get(t,\"yearSuffix\"),_&&(b+=(!a&&g&&v?\"\":\"&#xa0;\")+y),b+=\"</div>\"},_adjustInstDate:function(t,e,i){var s=t.drawYear+(\"Y\"===i?e:0),n=t.drawMonth+(\"M\"===i?e:0),a=Math.min(t.selectedDay,this._getDaysInMonth(s,n))+(\"D\"===i?e:0),o=this._restrictMinMax(t,this._daylightSavingAdjust(new Date(s,n,a)));t.selectedDay=o.getDate(),t.drawMonth=t.selectedMonth=o.getMonth(),t.drawYear=t.selectedYear=o.getFullYear(),(\"M\"===i||\"Y\"===i)&&this._notifyChange(t)},_restrictMinMax:function(t,e){var i=this._getMinMaxDate(t,\"min\"),s=this._getMinMaxDate(t,\"max\"),n=i&&i>e?i:e;return s&&n>s?s:n},_notifyChange:function(t){var e=this._get(t,\"onChangeMonthYear\");e&&e.apply(t.input?t.input[0]:null,[t.selectedYear,t.selectedMonth+1,t])},_getNumberOfMonths:function(t){var e=this._get(t,\"numberOfMonths\");return null==e?[1,1]:\"number\"==typeof e?[1,e]:e},_getMinMaxDate:function(t,e){return this._determineDate(t,this._get(t,e+\"Date\"),null)},_getDaysInMonth:function(t,e){return 32-this._daylightSavingAdjust(new Date(t,e,32)).getDate()},_getFirstDayOfMonth:function(t,e){return new Date(t,e,1).getDay()},_canAdjustMonth:function(t,e,i,s){var n=this._getNumberOfMonths(t),a=this._daylightSavingAdjust(new Date(i,s+(0>e?e:n[0]*n[1]),1));return 0>e&&a.setDate(this._getDaysInMonth(a.getFullYear(),a.getMonth())),this._isInRange(t,a)},_isInRange:function(t,e){var i,s,n=this._getMinMaxDate(t,\"min\"),a=this._getMinMaxDate(t,\"max\"),o=null,r=null,h=this._get(t,\"yearRange\");return h&&(i=h.split(\":\"),s=(new Date).getFullYear(),o=parseInt(i[0],10),r=parseInt(i[1],10),i[0].match(/[+\\-].*/)&&(o+=s),i[1].match(/[+\\-].*/)&&(r+=s)),(!n||e.getTime()>=n.getTime())&&(!a||e.getTime()<=a.getTime())&&(!o||e.getFullYear()>=o)&&(!r||r>=e.getFullYear())},_getFormatConfig:function(t){var e=this._get(t,\"shortYearCutoff\");return e=\"string\"!=typeof e?e:(new Date).getFullYear()%100+parseInt(e,10),{shortYearCutoff:e,dayNamesShort:this._get(t,\"dayNamesShort\"),dayNames:this._get(t,\"dayNames\"),monthNamesShort:this._get(t,\"monthNamesShort\"),monthNames:this._get(t,\"monthNames\")}},_formatDate:function(t,e,i,s){e||(t.currentDay=t.selectedDay,t.currentMonth=t.selectedMonth,t.currentYear=t.selectedYear);var n=e?\"object\"==typeof e?e:this._daylightSavingAdjust(new Date(s,i,e)):this._daylightSavingAdjust(new Date(t.currentYear,t.currentMonth,t.currentDay));return this.formatDate(this._get(t,\"dateFormat\"),n,this._getFormatConfig(t))}}),t.fn.datepicker=function(e){if(!this.length)return this;t.datepicker.initialized||(t(document).mousedown(t.datepicker._checkExternalClick),t.datepicker.initialized=!0),0===t(\"#\"+t.datepicker._mainDivId).length&&t(\"body\").append(t.datepicker.dpDiv);var i=Array.prototype.slice.call(arguments,1);return\"string\"!=typeof e||\"isDisabled\"!==e&&\"getDate\"!==e&&\"widget\"!==e?\"option\"===e&&2===arguments.length&&\"string\"==typeof arguments[1]?t.datepicker[\"_\"+e+\"Datepicker\"].apply(t.datepicker,[this[0]].concat(i)):this.each(function(){\"string\"==typeof e?t.datepicker[\"_\"+e+\"Datepicker\"].apply(t.datepicker,[this].concat(i)):t.datepicker._attachDatepicker(this,e)}):t.datepicker[\"_\"+e+\"Datepicker\"].apply(t.datepicker,[this[0]].concat(i))},t.datepicker=new n,t.datepicker.initialized=!1,t.datepicker.uuid=(new Date).getTime(),t.datepicker.version=\"1.11.4\",t.datepicker,t.widget(\"ui.dialog\",{version:\"1.11.4\",options:{appendTo:\"body\",autoOpen:!0,buttons:[],closeOnEscape:!0,closeText:\"Close\",dialogClass:\"\",draggable:!0,hide:null,height:\"auto\",maxHeight:null,maxWidth:null,minHeight:150,minWidth:150,modal:!1,position:{my:\"center\",at:\"center\",of:window,collision:\"fit\",using:function(e){var i=t(this).css(e).offset().top;0>i&&t(this).css(\"top\",e.top-i)}},resizable:!0,show:null,title:null,width:300,beforeClose:null,close:null,drag:null,dragStart:null,dragStop:null,focus:null,open:null,resize:null,resizeStart:null,resizeStop:null},sizeRelatedOptions:{buttons:!0,height:!0,maxHeight:!0,maxWidth:!0,minHeight:!0,minWidth:!0,width:!0},resizableRelatedOptions:{maxHeight:!0,maxWidth:!0,minHeight:!0,minWidth:!0},_create:function(){this.originalCss={display:this.element[0].style.display,width:this.element[0].style.width,minHeight:this.element[0].style.minHeight,maxHeight:this.element[0].style.maxHeight,height:this.element[0].style.height},this.originalPosition={parent:this.element.parent(),index:this.element.parent().children().index(this.element)},this.originalTitle=this.element.attr(\"title\"),this.options.title=this.options.title||this.originalTitle,this._createWrapper(),this.element.show().removeAttr(\"title\").addClass(\"ui-dialog-content ui-widget-content\").appendTo(this.uiDialog),this._createTitlebar(),this._createButtonPane(),this.options.draggable&&t.fn.draggable&&this._makeDraggable(),this.options.resizable&&t.fn.resizable&&this._makeResizable(),this._isOpen=!1,this._trackFocus()},_init:function(){this.options.autoOpen&&this.open()},_appendTo:function(){var e=this.options.appendTo;return e&&(e.jquery||e.nodeType)?t(e):this.document.find(e||\"body\").eq(0)},_destroy:function(){var t,e=this.originalPosition;this._untrackInstance(),this._destroyOverlay(),this.element.removeUniqueId().removeClass(\"ui-dialog-content ui-widget-content\").css(this.originalCss).detach(),this.uiDialog.stop(!0,!0).remove(),this.originalTitle&&this.element.attr(\"title\",this.originalTitle),t=e.parent.children().eq(e.index),t.length&&t[0]!==this.element[0]?t.before(this.element):e.parent.append(this.element)},widget:function(){return this.uiDialog},disable:t.noop,enable:t.noop,close:function(e){var i,s=this;if(this._isOpen&&this._trigger(\"beforeClose\",e)!==!1){if(this._isOpen=!1,this._focusedElement=null,this._destroyOverlay(),this._untrackInstance(),!this.opener.filter(\":focusable\").focus().length)try{i=this.document[0].activeElement,i&&\"body\"!==i.nodeName.toLowerCase()&&t(i).blur()}catch(n){}this._hide(this.uiDialog,this.options.hide,function(){s._trigger(\"close\",e)})}},isOpen:function(){return this._isOpen},moveToTop:function(){this._moveToTop()},_moveToTop:function(e,i){var s=!1,n=this.uiDialog.siblings(\".ui-front:visible\").map(function(){return+t(this).css(\"z-index\")}).get(),a=Math.max.apply(null,n);return a>=+this.uiDialog.css(\"z-index\")&&(this.uiDialog.css(\"z-index\",a+1),s=!0),s&&!i&&this._trigger(\"focus\",e),s},open:function(){var e=this;\nreturn this._isOpen?(this._moveToTop()&&this._focusTabbable(),void 0):(this._isOpen=!0,this.opener=t(this.document[0].activeElement),this._size(),this._position(),this._createOverlay(),this._moveToTop(null,!0),this.overlay&&this.overlay.css(\"z-index\",this.uiDialog.css(\"z-index\")-1),this._show(this.uiDialog,this.options.show,function(){e._focusTabbable(),e._trigger(\"focus\")}),this._makeFocusTarget(),this._trigger(\"open\"),void 0)},_focusTabbable:function(){var t=this._focusedElement;t||(t=this.element.find(\"[autofocus]\")),t.length||(t=this.element.find(\":tabbable\")),t.length||(t=this.uiDialogButtonPane.find(\":tabbable\")),t.length||(t=this.uiDialogTitlebarClose.filter(\":tabbable\")),t.length||(t=this.uiDialog),t.eq(0).focus()},_keepFocus:function(e){function i(){var e=this.document[0].activeElement,i=this.uiDialog[0]===e||t.contains(this.uiDialog[0],e);i||this._focusTabbable()}e.preventDefault(),i.call(this),this._delay(i)},_createWrapper:function(){this.uiDialog=t(\"<div>\").addClass(\"ui-dialog ui-widget ui-widget-content ui-corner-all ui-front \"+this.options.dialogClass).hide().attr({tabIndex:-1,role:\"dialog\"}).appendTo(this._appendTo()),this._on(this.uiDialog,{keydown:function(e){if(this.options.closeOnEscape&&!e.isDefaultPrevented()&&e.keyCode&&e.keyCode===t.ui.keyCode.ESCAPE)return e.preventDefault(),this.close(e),void 0;if(e.keyCode===t.ui.keyCode.TAB&&!e.isDefaultPrevented()){var i=this.uiDialog.find(\":tabbable\"),s=i.filter(\":first\"),n=i.filter(\":last\");e.target!==n[0]&&e.target!==this.uiDialog[0]||e.shiftKey?e.target!==s[0]&&e.target!==this.uiDialog[0]||!e.shiftKey||(this._delay(function(){n.focus()}),e.preventDefault()):(this._delay(function(){s.focus()}),e.preventDefault())}},mousedown:function(t){this._moveToTop(t)&&this._focusTabbable()}}),this.element.find(\"[aria-describedby]\").length||this.uiDialog.attr({\"aria-describedby\":this.element.uniqueId().attr(\"id\")})},_createTitlebar:function(){var e;this.uiDialogTitlebar=t(\"<div>\").addClass(\"ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix\").prependTo(this.uiDialog),this._on(this.uiDialogTitlebar,{mousedown:function(e){t(e.target).closest(\".ui-dialog-titlebar-close\")||this.uiDialog.focus()}}),this.uiDialogTitlebarClose=t(\"<button type='button'></button>\").button({label:this.options.closeText,icons:{primary:\"ui-icon-closethick\"},text:!1}).addClass(\"ui-dialog-titlebar-close\").appendTo(this.uiDialogTitlebar),this._on(this.uiDialogTitlebarClose,{click:function(t){t.preventDefault(),this.close(t)}}),e=t(\"<span>\").uniqueId().addClass(\"ui-dialog-title\").prependTo(this.uiDialogTitlebar),this._title(e),this.uiDialog.attr({\"aria-labelledby\":e.attr(\"id\")})},_title:function(t){this.options.title||t.html(\"&#160;\"),t.text(this.options.title)},_createButtonPane:function(){this.uiDialogButtonPane=t(\"<div>\").addClass(\"ui-dialog-buttonpane ui-widget-content ui-helper-clearfix\"),this.uiButtonSet=t(\"<div>\").addClass(\"ui-dialog-buttonset\").appendTo(this.uiDialogButtonPane),this._createButtons()},_createButtons:function(){var e=this,i=this.options.buttons;return this.uiDialogButtonPane.remove(),this.uiButtonSet.empty(),t.isEmptyObject(i)||t.isArray(i)&&!i.length?(this.uiDialog.removeClass(\"ui-dialog-buttons\"),void 0):(t.each(i,function(i,s){var n,a;s=t.isFunction(s)?{click:s,text:i}:s,s=t.extend({type:\"button\"},s),n=s.click,s.click=function(){n.apply(e.element[0],arguments)},a={icons:s.icons,text:s.showText},delete s.icons,delete s.showText,t(\"<button></button>\",s).button(a).appendTo(e.uiButtonSet)}),this.uiDialog.addClass(\"ui-dialog-buttons\"),this.uiDialogButtonPane.appendTo(this.uiDialog),void 0)},_makeDraggable:function(){function e(t){return{position:t.position,offset:t.offset}}var i=this,s=this.options;this.uiDialog.draggable({cancel:\".ui-dialog-content, .ui-dialog-titlebar-close\",handle:\".ui-dialog-titlebar\",containment:\"document\",start:function(s,n){t(this).addClass(\"ui-dialog-dragging\"),i._blockFrames(),i._trigger(\"dragStart\",s,e(n))},drag:function(t,s){i._trigger(\"drag\",t,e(s))},stop:function(n,a){var o=a.offset.left-i.document.scrollLeft(),r=a.offset.top-i.document.scrollTop();s.position={my:\"left top\",at:\"left\"+(o>=0?\"+\":\"\")+o+\" \"+\"top\"+(r>=0?\"+\":\"\")+r,of:i.window},t(this).removeClass(\"ui-dialog-dragging\"),i._unblockFrames(),i._trigger(\"dragStop\",n,e(a))}})},_makeResizable:function(){function e(t){return{originalPosition:t.originalPosition,originalSize:t.originalSize,position:t.position,size:t.size}}var i=this,s=this.options,n=s.resizable,a=this.uiDialog.css(\"position\"),o=\"string\"==typeof n?n:\"n,e,s,w,se,sw,ne,nw\";this.uiDialog.resizable({cancel:\".ui-dialog-content\",containment:\"document\",alsoResize:this.element,maxWidth:s.maxWidth,maxHeight:s.maxHeight,minWidth:s.minWidth,minHeight:this._minHeight(),handles:o,start:function(s,n){t(this).addClass(\"ui-dialog-resizing\"),i._blockFrames(),i._trigger(\"resizeStart\",s,e(n))},resize:function(t,s){i._trigger(\"resize\",t,e(s))},stop:function(n,a){var o=i.uiDialog.offset(),r=o.left-i.document.scrollLeft(),h=o.top-i.document.scrollTop();s.height=i.uiDialog.height(),s.width=i.uiDialog.width(),s.position={my:\"left top\",at:\"left\"+(r>=0?\"+\":\"\")+r+\" \"+\"top\"+(h>=0?\"+\":\"\")+h,of:i.window},t(this).removeClass(\"ui-dialog-resizing\"),i._unblockFrames(),i._trigger(\"resizeStop\",n,e(a))}}).css(\"position\",a)},_trackFocus:function(){this._on(this.widget(),{focusin:function(e){this._makeFocusTarget(),this._focusedElement=t(e.target)}})},_makeFocusTarget:function(){this._untrackInstance(),this._trackingInstances().unshift(this)},_untrackInstance:function(){var e=this._trackingInstances(),i=t.inArray(this,e);-1!==i&&e.splice(i,1)},_trackingInstances:function(){var t=this.document.data(\"ui-dialog-instances\");return t||(t=[],this.document.data(\"ui-dialog-instances\",t)),t},_minHeight:function(){var t=this.options;return\"auto\"===t.height?t.minHeight:Math.min(t.minHeight,t.height)},_position:function(){var t=this.uiDialog.is(\":visible\");t||this.uiDialog.show(),this.uiDialog.position(this.options.position),t||this.uiDialog.hide()},_setOptions:function(e){var i=this,s=!1,n={};t.each(e,function(t,e){i._setOption(t,e),t in i.sizeRelatedOptions&&(s=!0),t in i.resizableRelatedOptions&&(n[t]=e)}),s&&(this._size(),this._position()),this.uiDialog.is(\":data(ui-resizable)\")&&this.uiDialog.resizable(\"option\",n)},_setOption:function(t,e){var i,s,n=this.uiDialog;\"dialogClass\"===t&&n.removeClass(this.options.dialogClass).addClass(e),\"disabled\"!==t&&(this._super(t,e),\"appendTo\"===t&&this.uiDialog.appendTo(this._appendTo()),\"buttons\"===t&&this._createButtons(),\"closeText\"===t&&this.uiDialogTitlebarClose.button({label:\"\"+e}),\"draggable\"===t&&(i=n.is(\":data(ui-draggable)\"),i&&!e&&n.draggable(\"destroy\"),!i&&e&&this._makeDraggable()),\"position\"===t&&this._position(),\"resizable\"===t&&(s=n.is(\":data(ui-resizable)\"),s&&!e&&n.resizable(\"destroy\"),s&&\"string\"==typeof e&&n.resizable(\"option\",\"handles\",e),s||e===!1||this._makeResizable()),\"title\"===t&&this._title(this.uiDialogTitlebar.find(\".ui-dialog-title\")))},_size:function(){var t,e,i,s=this.options;this.element.show().css({width:\"auto\",minHeight:0,maxHeight:\"none\",height:0}),s.minWidth>s.width&&(s.width=s.minWidth),t=this.uiDialog.css({height:\"auto\",width:s.width}).outerHeight(),e=Math.max(0,s.minHeight-t),i=\"number\"==typeof s.maxHeight?Math.max(0,s.maxHeight-t):\"none\",\"auto\"===s.height?this.element.css({minHeight:e,maxHeight:i,height:\"auto\"}):this.element.height(Math.max(0,s.height-t)),this.uiDialog.is(\":data(ui-resizable)\")&&this.uiDialog.resizable(\"option\",\"minHeight\",this._minHeight())},_blockFrames:function(){this.iframeBlocks=this.document.find(\"iframe\").map(function(){var e=t(this);return t(\"<div>\").css({position:\"absolute\",width:e.outerWidth(),height:e.outerHeight()}).appendTo(e.parent()).offset(e.offset())[0]})},_unblockFrames:function(){this.iframeBlocks&&(this.iframeBlocks.remove(),delete this.iframeBlocks)},_allowInteraction:function(e){return t(e.target).closest(\".ui-dialog\").length?!0:!!t(e.target).closest(\".ui-datepicker\").length},_createOverlay:function(){if(this.options.modal){var e=!0;this._delay(function(){e=!1}),this.document.data(\"ui-dialog-overlays\")||this._on(this.document,{focusin:function(t){e||this._allowInteraction(t)||(t.preventDefault(),this._trackingInstances()[0]._focusTabbable())}}),this.overlay=t(\"<div>\").addClass(\"ui-widget-overlay ui-front\").appendTo(this._appendTo()),this._on(this.overlay,{mousedown:\"_keepFocus\"}),this.document.data(\"ui-dialog-overlays\",(this.document.data(\"ui-dialog-overlays\")||0)+1)}},_destroyOverlay:function(){if(this.options.modal&&this.overlay){var t=this.document.data(\"ui-dialog-overlays\")-1;t?this.document.data(\"ui-dialog-overlays\",t):this.document.unbind(\"focusin\").removeData(\"ui-dialog-overlays\"),this.overlay.remove(),this.overlay=null}}}),t.widget(\"ui.progressbar\",{version:\"1.11.4\",options:{max:100,value:0,change:null,complete:null},min:0,_create:function(){this.oldValue=this.options.value=this._constrainedValue(),this.element.addClass(\"ui-progressbar ui-widget ui-widget-content ui-corner-all\").attr({role:\"progressbar\",\"aria-valuemin\":this.min}),this.valueDiv=t(\"<div class='ui-progressbar-value ui-widget-header ui-corner-left'></div>\").appendTo(this.element),this._refreshValue()},_destroy:function(){this.element.removeClass(\"ui-progressbar ui-widget ui-widget-content ui-corner-all\").removeAttr(\"role\").removeAttr(\"aria-valuemin\").removeAttr(\"aria-valuemax\").removeAttr(\"aria-valuenow\"),this.valueDiv.remove()},value:function(t){return void 0===t?this.options.value:(this.options.value=this._constrainedValue(t),this._refreshValue(),void 0)},_constrainedValue:function(t){return void 0===t&&(t=this.options.value),this.indeterminate=t===!1,\"number\"!=typeof t&&(t=0),this.indeterminate?!1:Math.min(this.options.max,Math.max(this.min,t))},_setOptions:function(t){var e=t.value;delete t.value,this._super(t),this.options.value=this._constrainedValue(e),this._refreshValue()},_setOption:function(t,e){\"max\"===t&&(e=Math.max(this.min,e)),\"disabled\"===t&&this.element.toggleClass(\"ui-state-disabled\",!!e).attr(\"aria-disabled\",e),this._super(t,e)},_percentage:function(){return this.indeterminate?100:100*(this.options.value-this.min)/(this.options.max-this.min)},_refreshValue:function(){var e=this.options.value,i=this._percentage();this.valueDiv.toggle(this.indeterminate||e>this.min).toggleClass(\"ui-corner-right\",e===this.options.max).width(i.toFixed(0)+\"%\"),this.element.toggleClass(\"ui-progressbar-indeterminate\",this.indeterminate),this.indeterminate?(this.element.removeAttr(\"aria-valuenow\"),this.overlayDiv||(this.overlayDiv=t(\"<div class='ui-progressbar-overlay'></div>\").appendTo(this.valueDiv))):(this.element.attr({\"aria-valuemax\":this.options.max,\"aria-valuenow\":e}),this.overlayDiv&&(this.overlayDiv.remove(),this.overlayDiv=null)),this.oldValue!==e&&(this.oldValue=e,this._trigger(\"change\")),e===this.options.max&&this._trigger(\"complete\")}}),t.widget(\"ui.selectmenu\",{version:\"1.11.4\",defaultElement:\"<select>\",options:{appendTo:null,disabled:null,icons:{button:\"ui-icon-triangle-1-s\"},position:{my:\"left top\",at:\"left bottom\",collision:\"none\"},width:null,change:null,close:null,focus:null,open:null,select:null},_create:function(){var t=this.element.uniqueId().attr(\"id\");this.ids={element:t,button:t+\"-button\",menu:t+\"-menu\"},this._drawButton(),this._drawMenu(),this.options.disabled&&this.disable()},_drawButton:function(){var e=this;this.label=t(\"label[for='\"+this.ids.element+\"']\").attr(\"for\",this.ids.button),this._on(this.label,{click:function(t){this.button.focus(),t.preventDefault()}}),this.element.hide(),this.button=t(\"<span>\",{\"class\":\"ui-selectmenu-button ui-widget ui-state-default ui-corner-all\",tabindex:this.options.disabled?-1:0,id:this.ids.button,role:\"combobox\",\"aria-expanded\":\"false\",\"aria-autocomplete\":\"list\",\"aria-owns\":this.ids.menu,\"aria-haspopup\":\"true\"}).insertAfter(this.element),t(\"<span>\",{\"class\":\"ui-icon \"+this.options.icons.button}).prependTo(this.button),this.buttonText=t(\"<span>\",{\"class\":\"ui-selectmenu-text\"}).appendTo(this.button),this._setText(this.buttonText,this.element.find(\"option:selected\").text()),this._resizeButton(),this._on(this.button,this._buttonEvents),this.button.one(\"focusin\",function(){e.menuItems||e._refreshMenu()}),this._hoverable(this.button),this._focusable(this.button)},_drawMenu:function(){var e=this;this.menu=t(\"<ul>\",{\"aria-hidden\":\"true\",\"aria-labelledby\":this.ids.button,id:this.ids.menu}),this.menuWrap=t(\"<div>\",{\"class\":\"ui-selectmenu-menu ui-front\"}).append(this.menu).appendTo(this._appendTo()),this.menuInstance=this.menu.menu({role:\"listbox\",select:function(t,i){t.preventDefault(),e._setSelection(),e._select(i.item.data(\"ui-selectmenu-item\"),t)},focus:function(t,i){var s=i.item.data(\"ui-selectmenu-item\");null!=e.focusIndex&&s.index!==e.focusIndex&&(e._trigger(\"focus\",t,{item:s}),e.isOpen||e._select(s,t)),e.focusIndex=s.index,e.button.attr(\"aria-activedescendant\",e.menuItems.eq(s.index).attr(\"id\"))}}).menu(\"instance\"),this.menu.addClass(\"ui-corner-bottom\").removeClass(\"ui-corner-all\"),this.menuInstance._off(this.menu,\"mouseleave\"),this.menuInstance._closeOnDocumentClick=function(){return!1},this.menuInstance._isDivider=function(){return!1}},refresh:function(){this._refreshMenu(),this._setText(this.buttonText,this._getSelectedItem().text()),this.options.width||this._resizeButton()},_refreshMenu:function(){this.menu.empty();var t,e=this.element.find(\"option\");e.length&&(this._parseOptions(e),this._renderMenu(this.menu,this.items),this.menuInstance.refresh(),this.menuItems=this.menu.find(\"li\").not(\".ui-selectmenu-optgroup\"),t=this._getSelectedItem(),this.menuInstance.focus(null,t),this._setAria(t.data(\"ui-selectmenu-item\")),this._setOption(\"disabled\",this.element.prop(\"disabled\")))},open:function(t){this.options.disabled||(this.menuItems?(this.menu.find(\".ui-state-focus\").removeClass(\"ui-state-focus\"),this.menuInstance.focus(null,this._getSelectedItem())):this._refreshMenu(),this.isOpen=!0,this._toggleAttr(),this._resizeMenu(),this._position(),this._on(this.document,this._documentClick),this._trigger(\"open\",t))},_position:function(){this.menuWrap.position(t.extend({of:this.button},this.options.position))},close:function(t){this.isOpen&&(this.isOpen=!1,this._toggleAttr(),this.range=null,this._off(this.document),this._trigger(\"close\",t))},widget:function(){return this.button},menuWidget:function(){return this.menu},_renderMenu:function(e,i){var s=this,n=\"\";t.each(i,function(i,a){a.optgroup!==n&&(t(\"<li>\",{\"class\":\"ui-selectmenu-optgroup ui-menu-divider\"+(a.element.parent(\"optgroup\").prop(\"disabled\")?\" ui-state-disabled\":\"\"),text:a.optgroup}).appendTo(e),n=a.optgroup),s._renderItemData(e,a)})},_renderItemData:function(t,e){return this._renderItem(t,e).data(\"ui-selectmenu-item\",e)},_renderItem:function(e,i){var s=t(\"<li>\");return i.disabled&&s.addClass(\"ui-state-disabled\"),this._setText(s,i.label),s.appendTo(e)},_setText:function(t,e){e?t.text(e):t.html(\"&#160;\")},_move:function(t,e){var i,s,n=\".ui-menu-item\";this.isOpen?i=this.menuItems.eq(this.focusIndex):(i=this.menuItems.eq(this.element[0].selectedIndex),n+=\":not(.ui-state-disabled)\"),s=\"first\"===t||\"last\"===t?i[\"first\"===t?\"prevAll\":\"nextAll\"](n).eq(-1):i[t+\"All\"](n).eq(0),s.length&&this.menuInstance.focus(e,s)},_getSelectedItem:function(){return this.menuItems.eq(this.element[0].selectedIndex)},_toggle:function(t){this[this.isOpen?\"close\":\"open\"](t)},_setSelection:function(){var t;this.range&&(window.getSelection?(t=window.getSelection(),t.removeAllRanges(),t.addRange(this.range)):this.range.select(),this.button.focus())},_documentClick:{mousedown:function(e){this.isOpen&&(t(e.target).closest(\".ui-selectmenu-menu, #\"+this.ids.button).length||this.close(e))}},_buttonEvents:{mousedown:function(){var t;window.getSelection?(t=window.getSelection(),t.rangeCount&&(this.range=t.getRangeAt(0))):this.range=document.selection.createRange()},click:function(t){this._setSelection(),this._toggle(t)},keydown:function(e){var i=!0;switch(e.keyCode){case t.ui.keyCode.TAB:case t.ui.keyCode.ESCAPE:this.close(e),i=!1;break;case t.ui.keyCode.ENTER:this.isOpen&&this._selectFocusedItem(e);break;case t.ui.keyCode.UP:e.altKey?this._toggle(e):this._move(\"prev\",e);break;case t.ui.keyCode.DOWN:e.altKey?this._toggle(e):this._move(\"next\",e);break;case t.ui.keyCode.SPACE:this.isOpen?this._selectFocusedItem(e):this._toggle(e);break;case t.ui.keyCode.LEFT:this._move(\"prev\",e);break;case t.ui.keyCode.RIGHT:this._move(\"next\",e);break;case t.ui.keyCode.HOME:case t.ui.keyCode.PAGE_UP:this._move(\"first\",e);break;case t.ui.keyCode.END:case t.ui.keyCode.PAGE_DOWN:this._move(\"last\",e);break;default:this.menu.trigger(e),i=!1}i&&e.preventDefault()}},_selectFocusedItem:function(t){var e=this.menuItems.eq(this.focusIndex);e.hasClass(\"ui-state-disabled\")||this._select(e.data(\"ui-selectmenu-item\"),t)},_select:function(t,e){var i=this.element[0].selectedIndex;this.element[0].selectedIndex=t.index,this._setText(this.buttonText,t.label),this._setAria(t),this._trigger(\"select\",e,{item:t}),t.index!==i&&this._trigger(\"change\",e,{item:t}),this.close(e)},_setAria:function(t){var e=this.menuItems.eq(t.index).attr(\"id\");this.button.attr({\"aria-labelledby\":e,\"aria-activedescendant\":e}),this.menu.attr(\"aria-activedescendant\",e)},_setOption:function(t,e){\"icons\"===t&&this.button.find(\"span.ui-icon\").removeClass(this.options.icons.button).addClass(e.button),this._super(t,e),\"appendTo\"===t&&this.menuWrap.appendTo(this._appendTo()),\"disabled\"===t&&(this.menuInstance.option(\"disabled\",e),this.button.toggleClass(\"ui-state-disabled\",e).attr(\"aria-disabled\",e),this.element.prop(\"disabled\",e),e?(this.button.attr(\"tabindex\",-1),this.close()):this.button.attr(\"tabindex\",0)),\"width\"===t&&this._resizeButton()},_appendTo:function(){var e=this.options.appendTo;return e&&(e=e.jquery||e.nodeType?t(e):this.document.find(e).eq(0)),e&&e[0]||(e=this.element.closest(\".ui-front\")),e.length||(e=this.document[0].body),e},_toggleAttr:function(){this.button.toggleClass(\"ui-corner-top\",this.isOpen).toggleClass(\"ui-corner-all\",!this.isOpen).attr(\"aria-expanded\",this.isOpen),this.menuWrap.toggleClass(\"ui-selectmenu-open\",this.isOpen),this.menu.attr(\"aria-hidden\",!this.isOpen)},_resizeButton:function(){var t=this.options.width;t||(t=this.element.show().outerWidth(),this.element.hide()),this.button.outerWidth(t)},_resizeMenu:function(){this.menu.outerWidth(Math.max(this.button.outerWidth(),this.menu.width(\"\").outerWidth()+1))},_getCreateOptions:function(){return{disabled:this.element.prop(\"disabled\")}},_parseOptions:function(e){var i=[];e.each(function(e,s){var n=t(s),a=n.parent(\"optgroup\");i.push({element:n,index:e,value:n.val(),label:n.text(),optgroup:a.attr(\"label\")||\"\",disabled:a.prop(\"disabled\")||n.prop(\"disabled\")})}),this.items=i},_destroy:function(){this.menuWrap.remove(),this.button.remove(),this.element.show(),this.element.removeUniqueId(),this.label.attr(\"for\",this.ids.element)}}),t.widget(\"ui.slider\",t.ui.mouse,{version:\"1.11.4\",widgetEventPrefix:\"slide\",options:{animate:!1,distance:0,max:100,min:0,orientation:\"horizontal\",range:!1,step:1,value:0,values:null,change:null,slide:null,start:null,stop:null},numPages:5,_create:function(){this._keySliding=!1,this._mouseSliding=!1,this._animateOff=!0,this._handleIndex=null,this._detectOrientation(),this._mouseInit(),this._calculateNewMax(),this.element.addClass(\"ui-slider ui-slider-\"+this.orientation+\" ui-widget\"+\" ui-widget-content\"+\" ui-corner-all\"),this._refresh(),this._setOption(\"disabled\",this.options.disabled),this._animateOff=!1},_refresh:function(){this._createRange(),this._createHandles(),this._setupEvents(),this._refreshValue()},_createHandles:function(){var e,i,s=this.options,n=this.element.find(\".ui-slider-handle\").addClass(\"ui-state-default ui-corner-all\"),a=\"<span class='ui-slider-handle ui-state-default ui-corner-all' tabindex='0'></span>\",o=[];for(i=s.values&&s.values.length||1,n.length>i&&(n.slice(i).remove(),n=n.slice(0,i)),e=n.length;i>e;e++)o.push(a);this.handles=n.add(t(o.join(\"\")).appendTo(this.element)),this.handle=this.handles.eq(0),this.handles.each(function(e){t(this).data(\"ui-slider-handle-index\",e)})},_createRange:function(){var e=this.options,i=\"\";e.range?(e.range===!0&&(e.values?e.values.length&&2!==e.values.length?e.values=[e.values[0],e.values[0]]:t.isArray(e.values)&&(e.values=e.values.slice(0)):e.values=[this._valueMin(),this._valueMin()]),this.range&&this.range.length?this.range.removeClass(\"ui-slider-range-min ui-slider-range-max\").css({left:\"\",bottom:\"\"}):(this.range=t(\"<div></div>\").appendTo(this.element),i=\"ui-slider-range ui-widget-header ui-corner-all\"),this.range.addClass(i+(\"min\"===e.range||\"max\"===e.range?\" ui-slider-range-\"+e.range:\"\"))):(this.range&&this.range.remove(),this.range=null)},_setupEvents:function(){this._off(this.handles),this._on(this.handles,this._handleEvents),this._hoverable(this.handles),this._focusable(this.handles)},_destroy:function(){this.handles.remove(),this.range&&this.range.remove(),this.element.removeClass(\"ui-slider ui-slider-horizontal ui-slider-vertical ui-widget ui-widget-content ui-corner-all\"),this._mouseDestroy()},_mouseCapture:function(e){var i,s,n,a,o,r,h,l,u=this,c=this.options;return c.disabled?!1:(this.elementSize={width:this.element.outerWidth(),height:this.element.outerHeight()},this.elementOffset=this.element.offset(),i={x:e.pageX,y:e.pageY},s=this._normValueFromMouse(i),n=this._valueMax()-this._valueMin()+1,this.handles.each(function(e){var i=Math.abs(s-u.values(e));(n>i||n===i&&(e===u._lastChangedValue||u.values(e)===c.min))&&(n=i,a=t(this),o=e)}),r=this._start(e,o),r===!1?!1:(this._mouseSliding=!0,this._handleIndex=o,a.addClass(\"ui-state-active\").focus(),h=a.offset(),l=!t(e.target).parents().addBack().is(\".ui-slider-handle\"),this._clickOffset=l?{left:0,top:0}:{left:e.pageX-h.left-a.width()/2,top:e.pageY-h.top-a.height()/2-(parseInt(a.css(\"borderTopWidth\"),10)||0)-(parseInt(a.css(\"borderBottomWidth\"),10)||0)+(parseInt(a.css(\"marginTop\"),10)||0)},this.handles.hasClass(\"ui-state-hover\")||this._slide(e,o,s),this._animateOff=!0,!0))},_mouseStart:function(){return!0},_mouseDrag:function(t){var e={x:t.pageX,y:t.pageY},i=this._normValueFromMouse(e);return this._slide(t,this._handleIndex,i),!1},_mouseStop:function(t){return this.handles.removeClass(\"ui-state-active\"),this._mouseSliding=!1,this._stop(t,this._handleIndex),this._change(t,this._handleIndex),this._handleIndex=null,this._clickOffset=null,this._animateOff=!1,!1},_detectOrientation:function(){this.orientation=\"vertical\"===this.options.orientation?\"vertical\":\"horizontal\"},_normValueFromMouse:function(t){var e,i,s,n,a;return\"horizontal\"===this.orientation?(e=this.elementSize.width,i=t.x-this.elementOffset.left-(this._clickOffset?this._clickOffset.left:0)):(e=this.elementSize.height,i=t.y-this.elementOffset.top-(this._clickOffset?this._clickOffset.top:0)),s=i/e,s>1&&(s=1),0>s&&(s=0),\"vertical\"===this.orientation&&(s=1-s),n=this._valueMax()-this._valueMin(),a=this._valueMin()+s*n,this._trimAlignValue(a)},_start:function(t,e){var i={handle:this.handles[e],value:this.value()};return this.options.values&&this.options.values.length&&(i.value=this.values(e),i.values=this.values()),this._trigger(\"start\",t,i)},_slide:function(t,e,i){var s,n,a;this.options.values&&this.options.values.length?(s=this.values(e?0:1),2===this.options.values.length&&this.options.range===!0&&(0===e&&i>s||1===e&&s>i)&&(i=s),i!==this.values(e)&&(n=this.values(),n[e]=i,a=this._trigger(\"slide\",t,{handle:this.handles[e],value:i,values:n}),s=this.values(e?0:1),a!==!1&&this.values(e,i))):i!==this.value()&&(a=this._trigger(\"slide\",t,{handle:this.handles[e],value:i}),a!==!1&&this.value(i))},_stop:function(t,e){var i={handle:this.handles[e],value:this.value()};this.options.values&&this.options.values.length&&(i.value=this.values(e),i.values=this.values()),this._trigger(\"stop\",t,i)},_change:function(t,e){if(!this._keySliding&&!this._mouseSliding){var i={handle:this.handles[e],value:this.value()};this.options.values&&this.options.values.length&&(i.value=this.values(e),i.values=this.values()),this._lastChangedValue=e,this._trigger(\"change\",t,i)}},value:function(t){return arguments.length?(this.options.value=this._trimAlignValue(t),this._refreshValue(),this._change(null,0),void 0):this._value()},values:function(e,i){var s,n,a;if(arguments.length>1)return this.options.values[e]=this._trimAlignValue(i),this._refreshValue(),this._change(null,e),void 0;if(!arguments.length)return this._values();if(!t.isArray(arguments[0]))return this.options.values&&this.options.values.length?this._values(e):this.value();for(s=this.options.values,n=arguments[0],a=0;s.length>a;a+=1)s[a]=this._trimAlignValue(n[a]),this._change(null,a);this._refreshValue()},_setOption:function(e,i){var s,n=0;switch(\"range\"===e&&this.options.range===!0&&(\"min\"===i?(this.options.value=this._values(0),this.options.values=null):\"max\"===i&&(this.options.value=this._values(this.options.values.length-1),this.options.values=null)),t.isArray(this.options.values)&&(n=this.options.values.length),\"disabled\"===e&&this.element.toggleClass(\"ui-state-disabled\",!!i),this._super(e,i),e){case\"orientation\":this._detectOrientation(),this.element.removeClass(\"ui-slider-horizontal ui-slider-vertical\").addClass(\"ui-slider-\"+this.orientation),this._refreshValue(),this.handles.css(\"horizontal\"===i?\"bottom\":\"left\",\"\");break;case\"value\":this._animateOff=!0,this._refreshValue(),this._change(null,0),this._animateOff=!1;break;case\"values\":for(this._animateOff=!0,this._refreshValue(),s=0;n>s;s+=1)this._change(null,s);this._animateOff=!1;break;case\"step\":case\"min\":case\"max\":this._animateOff=!0,this._calculateNewMax(),this._refreshValue(),this._animateOff=!1;break;case\"range\":this._animateOff=!0,this._refresh(),this._animateOff=!1}},_value:function(){var t=this.options.value;return t=this._trimAlignValue(t)},_values:function(t){var e,i,s;if(arguments.length)return e=this.options.values[t],e=this._trimAlignValue(e);if(this.options.values&&this.options.values.length){for(i=this.options.values.slice(),s=0;i.length>s;s+=1)i[s]=this._trimAlignValue(i[s]);return i}return[]},_trimAlignValue:function(t){if(this._valueMin()>=t)return this._valueMin();if(t>=this._valueMax())return this._valueMax();var e=this.options.step>0?this.options.step:1,i=(t-this._valueMin())%e,s=t-i;return 2*Math.abs(i)>=e&&(s+=i>0?e:-e),parseFloat(s.toFixed(5))},_calculateNewMax:function(){var t=this.options.max,e=this._valueMin(),i=this.options.step,s=Math.floor(+(t-e).toFixed(this._precision())/i)*i;t=s+e,this.max=parseFloat(t.toFixed(this._precision()))},_precision:function(){var t=this._precisionOf(this.options.step);return null!==this.options.min&&(t=Math.max(t,this._precisionOf(this.options.min))),t},_precisionOf:function(t){var e=\"\"+t,i=e.indexOf(\".\");return-1===i?0:e.length-i-1},_valueMin:function(){return this.options.min},_valueMax:function(){return this.max},_refreshValue:function(){var e,i,s,n,a,o=this.options.range,r=this.options,h=this,l=this._animateOff?!1:r.animate,u={};this.options.values&&this.options.values.length?this.handles.each(function(s){i=100*((h.values(s)-h._valueMin())/(h._valueMax()-h._valueMin())),u[\"horizontal\"===h.orientation?\"left\":\"bottom\"]=i+\"%\",t(this).stop(1,1)[l?\"animate\":\"css\"](u,r.animate),h.options.range===!0&&(\"horizontal\"===h.orientation?(0===s&&h.range.stop(1,1)[l?\"animate\":\"css\"]({left:i+\"%\"},r.animate),1===s&&h.range[l?\"animate\":\"css\"]({width:i-e+\"%\"},{queue:!1,duration:r.animate})):(0===s&&h.range.stop(1,1)[l?\"animate\":\"css\"]({bottom:i+\"%\"},r.animate),1===s&&h.range[l?\"animate\":\"css\"]({height:i-e+\"%\"},{queue:!1,duration:r.animate}))),e=i}):(s=this.value(),n=this._valueMin(),a=this._valueMax(),i=a!==n?100*((s-n)/(a-n)):0,u[\"horizontal\"===this.orientation?\"left\":\"bottom\"]=i+\"%\",this.handle.stop(1,1)[l?\"animate\":\"css\"](u,r.animate),\"min\"===o&&\"horizontal\"===this.orientation&&this.range.stop(1,1)[l?\"animate\":\"css\"]({width:i+\"%\"},r.animate),\"max\"===o&&\"horizontal\"===this.orientation&&this.range[l?\"animate\":\"css\"]({width:100-i+\"%\"},{queue:!1,duration:r.animate}),\"min\"===o&&\"vertical\"===this.orientation&&this.range.stop(1,1)[l?\"animate\":\"css\"]({height:i+\"%\"},r.animate),\"max\"===o&&\"vertical\"===this.orientation&&this.range[l?\"animate\":\"css\"]({height:100-i+\"%\"},{queue:!1,duration:r.animate}))},_handleEvents:{keydown:function(e){var i,s,n,a,o=t(e.target).data(\"ui-slider-handle-index\");switch(e.keyCode){case t.ui.keyCode.HOME:case t.ui.keyCode.END:case t.ui.keyCode.PAGE_UP:case t.ui.keyCode.PAGE_DOWN:case t.ui.keyCode.UP:case t.ui.keyCode.RIGHT:case t.ui.keyCode.DOWN:case t.ui.keyCode.LEFT:if(e.preventDefault(),!this._keySliding&&(this._keySliding=!0,t(e.target).addClass(\"ui-state-active\"),i=this._start(e,o),i===!1))return}switch(a=this.options.step,s=n=this.options.values&&this.options.values.length?this.values(o):this.value(),e.keyCode){case t.ui.keyCode.HOME:n=this._valueMin();break;case t.ui.keyCode.END:n=this._valueMax();break;case t.ui.keyCode.PAGE_UP:n=this._trimAlignValue(s+(this._valueMax()-this._valueMin())/this.numPages);break;case t.ui.keyCode.PAGE_DOWN:n=this._trimAlignValue(s-(this._valueMax()-this._valueMin())/this.numPages);break;case t.ui.keyCode.UP:case t.ui.keyCode.RIGHT:if(s===this._valueMax())return;n=this._trimAlignValue(s+a);break;case t.ui.keyCode.DOWN:case t.ui.keyCode.LEFT:if(s===this._valueMin())return;n=this._trimAlignValue(s-a)}this._slide(e,o,n)},keyup:function(e){var i=t(e.target).data(\"ui-slider-handle-index\");this._keySliding&&(this._keySliding=!1,this._stop(e,i),this._change(e,i),t(e.target).removeClass(\"ui-state-active\"))}}}),t.widget(\"ui.spinner\",{version:\"1.11.4\",defaultElement:\"<input>\",widgetEventPrefix:\"spin\",options:{culture:null,icons:{down:\"ui-icon-triangle-1-s\",up:\"ui-icon-triangle-1-n\"},incremental:!0,max:null,min:null,numberFormat:null,page:10,step:1,change:null,spin:null,start:null,stop:null},_create:function(){this._setOption(\"max\",this.options.max),this._setOption(\"min\",this.options.min),this._setOption(\"step\",this.options.step),\"\"!==this.value()&&this._value(this.element.val(),!0),this._draw(),this._on(this._events),this._refresh(),this._on(this.window,{beforeunload:function(){this.element.removeAttr(\"autocomplete\")}})},_getCreateOptions:function(){var e={},i=this.element;return t.each([\"min\",\"max\",\"step\"],function(t,s){var n=i.attr(s);void 0!==n&&n.length&&(e[s]=n)}),e},_events:{keydown:function(t){this._start(t)&&this._keydown(t)&&t.preventDefault()},keyup:\"_stop\",focus:function(){this.previous=this.element.val()},blur:function(t){return this.cancelBlur?(delete this.cancelBlur,void 0):(this._stop(),this._refresh(),this.previous!==this.element.val()&&this._trigger(\"change\",t),void 0)},mousewheel:function(t,e){if(e){if(!this.spinning&&!this._start(t))return!1;this._spin((e>0?1:-1)*this.options.step,t),clearTimeout(this.mousewheelTimer),this.mousewheelTimer=this._delay(function(){this.spinning&&this._stop(t)},100),t.preventDefault()}},\"mousedown .ui-spinner-button\":function(e){function i(){var t=this.element[0]===this.document[0].activeElement;t||(this.element.focus(),this.previous=s,this._delay(function(){this.previous=s}))}var s;s=this.element[0]===this.document[0].activeElement?this.previous:this.element.val(),e.preventDefault(),i.call(this),this.cancelBlur=!0,this._delay(function(){delete this.cancelBlur,i.call(this)}),this._start(e)!==!1&&this._repeat(null,t(e.currentTarget).hasClass(\"ui-spinner-up\")?1:-1,e)},\"mouseup .ui-spinner-button\":\"_stop\",\"mouseenter .ui-spinner-button\":function(e){return t(e.currentTarget).hasClass(\"ui-state-active\")?this._start(e)===!1?!1:(this._repeat(null,t(e.currentTarget).hasClass(\"ui-spinner-up\")?1:-1,e),void 0):void 0},\"mouseleave .ui-spinner-button\":\"_stop\"},_draw:function(){var t=this.uiSpinner=this.element.addClass(\"ui-spinner-input\").attr(\"autocomplete\",\"off\").wrap(this._uiSpinnerHtml()).parent().append(this._buttonHtml());this.element.attr(\"role\",\"spinbutton\"),this.buttons=t.find(\".ui-spinner-button\").attr(\"tabIndex\",-1).button().removeClass(\"ui-corner-all\"),this.buttons.height()>Math.ceil(.5*t.height())&&t.height()>0&&t.height(t.height()),this.options.disabled&&this.disable()\n},_keydown:function(e){var i=this.options,s=t.ui.keyCode;switch(e.keyCode){case s.UP:return this._repeat(null,1,e),!0;case s.DOWN:return this._repeat(null,-1,e),!0;case s.PAGE_UP:return this._repeat(null,i.page,e),!0;case s.PAGE_DOWN:return this._repeat(null,-i.page,e),!0}return!1},_uiSpinnerHtml:function(){return\"<span class='ui-spinner ui-widget ui-widget-content ui-corner-all'></span>\"},_buttonHtml:function(){return\"<a class='ui-spinner-button ui-spinner-up ui-corner-tr'><span class='ui-icon \"+this.options.icons.up+\"'>&#9650;</span>\"+\"</a>\"+\"<a class='ui-spinner-button ui-spinner-down ui-corner-br'>\"+\"<span class='ui-icon \"+this.options.icons.down+\"'>&#9660;</span>\"+\"</a>\"},_start:function(t){return this.spinning||this._trigger(\"start\",t)!==!1?(this.counter||(this.counter=1),this.spinning=!0,!0):!1},_repeat:function(t,e,i){t=t||500,clearTimeout(this.timer),this.timer=this._delay(function(){this._repeat(40,e,i)},t),this._spin(e*this.options.step,i)},_spin:function(t,e){var i=this.value()||0;this.counter||(this.counter=1),i=this._adjustValue(i+t*this._increment(this.counter)),this.spinning&&this._trigger(\"spin\",e,{value:i})===!1||(this._value(i),this.counter++)},_increment:function(e){var i=this.options.incremental;return i?t.isFunction(i)?i(e):Math.floor(e*e*e/5e4-e*e/500+17*e/200+1):1},_precision:function(){var t=this._precisionOf(this.options.step);return null!==this.options.min&&(t=Math.max(t,this._precisionOf(this.options.min))),t},_precisionOf:function(t){var e=\"\"+t,i=e.indexOf(\".\");return-1===i?0:e.length-i-1},_adjustValue:function(t){var e,i,s=this.options;return e=null!==s.min?s.min:0,i=t-e,i=Math.round(i/s.step)*s.step,t=e+i,t=parseFloat(t.toFixed(this._precision())),null!==s.max&&t>s.max?s.max:null!==s.min&&s.min>t?s.min:t},_stop:function(t){this.spinning&&(clearTimeout(this.timer),clearTimeout(this.mousewheelTimer),this.counter=0,this.spinning=!1,this._trigger(\"stop\",t))},_setOption:function(t,e){if(\"culture\"===t||\"numberFormat\"===t){var i=this._parse(this.element.val());return this.options[t]=e,this.element.val(this._format(i)),void 0}(\"max\"===t||\"min\"===t||\"step\"===t)&&\"string\"==typeof e&&(e=this._parse(e)),\"icons\"===t&&(this.buttons.first().find(\".ui-icon\").removeClass(this.options.icons.up).addClass(e.up),this.buttons.last().find(\".ui-icon\").removeClass(this.options.icons.down).addClass(e.down)),this._super(t,e),\"disabled\"===t&&(this.widget().toggleClass(\"ui-state-disabled\",!!e),this.element.prop(\"disabled\",!!e),this.buttons.button(e?\"disable\":\"enable\"))},_setOptions:h(function(t){this._super(t)}),_parse:function(t){return\"string\"==typeof t&&\"\"!==t&&(t=window.Globalize&&this.options.numberFormat?Globalize.parseFloat(t,10,this.options.culture):+t),\"\"===t||isNaN(t)?null:t},_format:function(t){return\"\"===t?\"\":window.Globalize&&this.options.numberFormat?Globalize.format(t,this.options.numberFormat,this.options.culture):t},_refresh:function(){this.element.attr({\"aria-valuemin\":this.options.min,\"aria-valuemax\":this.options.max,\"aria-valuenow\":this._parse(this.element.val())})},isValid:function(){var t=this.value();return null===t?!1:t===this._adjustValue(t)},_value:function(t,e){var i;\"\"!==t&&(i=this._parse(t),null!==i&&(e||(i=this._adjustValue(i)),t=this._format(i))),this.element.val(t),this._refresh()},_destroy:function(){this.element.removeClass(\"ui-spinner-input\").prop(\"disabled\",!1).removeAttr(\"autocomplete\").removeAttr(\"role\").removeAttr(\"aria-valuemin\").removeAttr(\"aria-valuemax\").removeAttr(\"aria-valuenow\"),this.uiSpinner.replaceWith(this.element)},stepUp:h(function(t){this._stepUp(t)}),_stepUp:function(t){this._start()&&(this._spin((t||1)*this.options.step),this._stop())},stepDown:h(function(t){this._stepDown(t)}),_stepDown:function(t){this._start()&&(this._spin((t||1)*-this.options.step),this._stop())},pageUp:h(function(t){this._stepUp((t||1)*this.options.page)}),pageDown:h(function(t){this._stepDown((t||1)*this.options.page)}),value:function(t){return arguments.length?(h(this._value).call(this,t),void 0):this._parse(this.element.val())},widget:function(){return this.uiSpinner}}),t.widget(\"ui.tabs\",{version:\"1.11.4\",delay:300,options:{active:null,collapsible:!1,event:\"click\",heightStyle:\"content\",hide:null,show:null,activate:null,beforeActivate:null,beforeLoad:null,load:null},_isLocal:function(){var t=/#.*$/;return function(e){var i,s;e=e.cloneNode(!1),i=e.href.replace(t,\"\"),s=location.href.replace(t,\"\");try{i=decodeURIComponent(i)}catch(n){}try{s=decodeURIComponent(s)}catch(n){}return e.hash.length>1&&i===s}}(),_create:function(){var e=this,i=this.options;this.running=!1,this.element.addClass(\"ui-tabs ui-widget ui-widget-content ui-corner-all\").toggleClass(\"ui-tabs-collapsible\",i.collapsible),this._processTabs(),i.active=this._initialActive(),t.isArray(i.disabled)&&(i.disabled=t.unique(i.disabled.concat(t.map(this.tabs.filter(\".ui-state-disabled\"),function(t){return e.tabs.index(t)}))).sort()),this.active=this.options.active!==!1&&this.anchors.length?this._findActive(i.active):t(),this._refresh(),this.active.length&&this.load(i.active)},_initialActive:function(){var e=this.options.active,i=this.options.collapsible,s=location.hash.substring(1);return null===e&&(s&&this.tabs.each(function(i,n){return t(n).attr(\"aria-controls\")===s?(e=i,!1):void 0}),null===e&&(e=this.tabs.index(this.tabs.filter(\".ui-tabs-active\"))),(null===e||-1===e)&&(e=this.tabs.length?0:!1)),e!==!1&&(e=this.tabs.index(this.tabs.eq(e)),-1===e&&(e=i?!1:0)),!i&&e===!1&&this.anchors.length&&(e=0),e},_getCreateEventData:function(){return{tab:this.active,panel:this.active.length?this._getPanelForTab(this.active):t()}},_tabKeydown:function(e){var i=t(this.document[0].activeElement).closest(\"li\"),s=this.tabs.index(i),n=!0;if(!this._handlePageNav(e)){switch(e.keyCode){case t.ui.keyCode.RIGHT:case t.ui.keyCode.DOWN:s++;break;case t.ui.keyCode.UP:case t.ui.keyCode.LEFT:n=!1,s--;break;case t.ui.keyCode.END:s=this.anchors.length-1;break;case t.ui.keyCode.HOME:s=0;break;case t.ui.keyCode.SPACE:return e.preventDefault(),clearTimeout(this.activating),this._activate(s),void 0;case t.ui.keyCode.ENTER:return e.preventDefault(),clearTimeout(this.activating),this._activate(s===this.options.active?!1:s),void 0;default:return}e.preventDefault(),clearTimeout(this.activating),s=this._focusNextTab(s,n),e.ctrlKey||e.metaKey||(i.attr(\"aria-selected\",\"false\"),this.tabs.eq(s).attr(\"aria-selected\",\"true\"),this.activating=this._delay(function(){this.option(\"active\",s)},this.delay))}},_panelKeydown:function(e){this._handlePageNav(e)||e.ctrlKey&&e.keyCode===t.ui.keyCode.UP&&(e.preventDefault(),this.active.focus())},_handlePageNav:function(e){return e.altKey&&e.keyCode===t.ui.keyCode.PAGE_UP?(this._activate(this._focusNextTab(this.options.active-1,!1)),!0):e.altKey&&e.keyCode===t.ui.keyCode.PAGE_DOWN?(this._activate(this._focusNextTab(this.options.active+1,!0)),!0):void 0},_findNextTab:function(e,i){function s(){return e>n&&(e=0),0>e&&(e=n),e}for(var n=this.tabs.length-1;-1!==t.inArray(s(),this.options.disabled);)e=i?e+1:e-1;return e},_focusNextTab:function(t,e){return t=this._findNextTab(t,e),this.tabs.eq(t).focus(),t},_setOption:function(t,e){return\"active\"===t?(this._activate(e),void 0):\"disabled\"===t?(this._setupDisabled(e),void 0):(this._super(t,e),\"collapsible\"===t&&(this.element.toggleClass(\"ui-tabs-collapsible\",e),e||this.options.active!==!1||this._activate(0)),\"event\"===t&&this._setupEvents(e),\"heightStyle\"===t&&this._setupHeightStyle(e),void 0)},_sanitizeSelector:function(t){return t?t.replace(/[!\"$%&'()*+,.\\/:;<=>?@\\[\\]\\^`{|}~]/g,\"\\\\$&\"):\"\"},refresh:function(){var e=this.options,i=this.tablist.children(\":has(a[href])\");e.disabled=t.map(i.filter(\".ui-state-disabled\"),function(t){return i.index(t)}),this._processTabs(),e.active!==!1&&this.anchors.length?this.active.length&&!t.contains(this.tablist[0],this.active[0])?this.tabs.length===e.disabled.length?(e.active=!1,this.active=t()):this._activate(this._findNextTab(Math.max(0,e.active-1),!1)):e.active=this.tabs.index(this.active):(e.active=!1,this.active=t()),this._refresh()},_refresh:function(){this._setupDisabled(this.options.disabled),this._setupEvents(this.options.event),this._setupHeightStyle(this.options.heightStyle),this.tabs.not(this.active).attr({\"aria-selected\":\"false\",\"aria-expanded\":\"false\",tabIndex:-1}),this.panels.not(this._getPanelForTab(this.active)).hide().attr({\"aria-hidden\":\"true\"}),this.active.length?(this.active.addClass(\"ui-tabs-active ui-state-active\").attr({\"aria-selected\":\"true\",\"aria-expanded\":\"true\",tabIndex:0}),this._getPanelForTab(this.active).show().attr({\"aria-hidden\":\"false\"})):this.tabs.eq(0).attr(\"tabIndex\",0)},_processTabs:function(){var e=this,i=this.tabs,s=this.anchors,n=this.panels;this.tablist=this._getList().addClass(\"ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all\").attr(\"role\",\"tablist\").delegate(\"> li\",\"mousedown\"+this.eventNamespace,function(e){t(this).is(\".ui-state-disabled\")&&e.preventDefault()}).delegate(\".ui-tabs-anchor\",\"focus\"+this.eventNamespace,function(){t(this).closest(\"li\").is(\".ui-state-disabled\")&&this.blur()}),this.tabs=this.tablist.find(\"> li:has(a[href])\").addClass(\"ui-state-default ui-corner-top\").attr({role:\"tab\",tabIndex:-1}),this.anchors=this.tabs.map(function(){return t(\"a\",this)[0]}).addClass(\"ui-tabs-anchor\").attr({role:\"presentation\",tabIndex:-1}),this.panels=t(),this.anchors.each(function(i,s){var n,a,o,r=t(s).uniqueId().attr(\"id\"),h=t(s).closest(\"li\"),l=h.attr(\"aria-controls\");e._isLocal(s)?(n=s.hash,o=n.substring(1),a=e.element.find(e._sanitizeSelector(n))):(o=h.attr(\"aria-controls\")||t({}).uniqueId()[0].id,n=\"#\"+o,a=e.element.find(n),a.length||(a=e._createPanel(o),a.insertAfter(e.panels[i-1]||e.tablist)),a.attr(\"aria-live\",\"polite\")),a.length&&(e.panels=e.panels.add(a)),l&&h.data(\"ui-tabs-aria-controls\",l),h.attr({\"aria-controls\":o,\"aria-labelledby\":r}),a.attr(\"aria-labelledby\",r)}),this.panels.addClass(\"ui-tabs-panel ui-widget-content ui-corner-bottom\").attr(\"role\",\"tabpanel\"),i&&(this._off(i.not(this.tabs)),this._off(s.not(this.anchors)),this._off(n.not(this.panels)))},_getList:function(){return this.tablist||this.element.find(\"ol,ul\").eq(0)},_createPanel:function(e){return t(\"<div>\").attr(\"id\",e).addClass(\"ui-tabs-panel ui-widget-content ui-corner-bottom\").data(\"ui-tabs-destroy\",!0)},_setupDisabled:function(e){t.isArray(e)&&(e.length?e.length===this.anchors.length&&(e=!0):e=!1);for(var i,s=0;i=this.tabs[s];s++)e===!0||-1!==t.inArray(s,e)?t(i).addClass(\"ui-state-disabled\").attr(\"aria-disabled\",\"true\"):t(i).removeClass(\"ui-state-disabled\").removeAttr(\"aria-disabled\");this.options.disabled=e},_setupEvents:function(e){var i={};e&&t.each(e.split(\" \"),function(t,e){i[e]=\"_eventHandler\"}),this._off(this.anchors.add(this.tabs).add(this.panels)),this._on(!0,this.anchors,{click:function(t){t.preventDefault()}}),this._on(this.anchors,i),this._on(this.tabs,{keydown:\"_tabKeydown\"}),this._on(this.panels,{keydown:\"_panelKeydown\"}),this._focusable(this.tabs),this._hoverable(this.tabs)},_setupHeightStyle:function(e){var i,s=this.element.parent();\"fill\"===e?(i=s.height(),i-=this.element.outerHeight()-this.element.height(),this.element.siblings(\":visible\").each(function(){var e=t(this),s=e.css(\"position\");\"absolute\"!==s&&\"fixed\"!==s&&(i-=e.outerHeight(!0))}),this.element.children().not(this.panels).each(function(){i-=t(this).outerHeight(!0)}),this.panels.each(function(){t(this).height(Math.max(0,i-t(this).innerHeight()+t(this).height()))}).css(\"overflow\",\"auto\")):\"auto\"===e&&(i=0,this.panels.each(function(){i=Math.max(i,t(this).height(\"\").height())}).height(i))},_eventHandler:function(e){var i=this.options,s=this.active,n=t(e.currentTarget),a=n.closest(\"li\"),o=a[0]===s[0],r=o&&i.collapsible,h=r?t():this._getPanelForTab(a),l=s.length?this._getPanelForTab(s):t(),u={oldTab:s,oldPanel:l,newTab:r?t():a,newPanel:h};e.preventDefault(),a.hasClass(\"ui-state-disabled\")||a.hasClass(\"ui-tabs-loading\")||this.running||o&&!i.collapsible||this._trigger(\"beforeActivate\",e,u)===!1||(i.active=r?!1:this.tabs.index(a),this.active=o?t():a,this.xhr&&this.xhr.abort(),l.length||h.length||t.error(\"jQuery UI Tabs: Mismatching fragment identifier.\"),h.length&&this.load(this.tabs.index(a),e),this._toggle(e,u))},_toggle:function(e,i){function s(){a.running=!1,a._trigger(\"activate\",e,i)}function n(){i.newTab.closest(\"li\").addClass(\"ui-tabs-active ui-state-active\"),o.length&&a.options.show?a._show(o,a.options.show,s):(o.show(),s())}var a=this,o=i.newPanel,r=i.oldPanel;this.running=!0,r.length&&this.options.hide?this._hide(r,this.options.hide,function(){i.oldTab.closest(\"li\").removeClass(\"ui-tabs-active ui-state-active\"),n()}):(i.oldTab.closest(\"li\").removeClass(\"ui-tabs-active ui-state-active\"),r.hide(),n()),r.attr(\"aria-hidden\",\"true\"),i.oldTab.attr({\"aria-selected\":\"false\",\"aria-expanded\":\"false\"}),o.length&&r.length?i.oldTab.attr(\"tabIndex\",-1):o.length&&this.tabs.filter(function(){return 0===t(this).attr(\"tabIndex\")}).attr(\"tabIndex\",-1),o.attr(\"aria-hidden\",\"false\"),i.newTab.attr({\"aria-selected\":\"true\",\"aria-expanded\":\"true\",tabIndex:0})},_activate:function(e){var i,s=this._findActive(e);s[0]!==this.active[0]&&(s.length||(s=this.active),i=s.find(\".ui-tabs-anchor\")[0],this._eventHandler({target:i,currentTarget:i,preventDefault:t.noop}))},_findActive:function(e){return e===!1?t():this.tabs.eq(e)},_getIndex:function(t){return\"string\"==typeof t&&(t=this.anchors.index(this.anchors.filter(\"[href$='\"+t+\"']\"))),t},_destroy:function(){this.xhr&&this.xhr.abort(),this.element.removeClass(\"ui-tabs ui-widget ui-widget-content ui-corner-all ui-tabs-collapsible\"),this.tablist.removeClass(\"ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all\").removeAttr(\"role\"),this.anchors.removeClass(\"ui-tabs-anchor\").removeAttr(\"role\").removeAttr(\"tabIndex\").removeUniqueId(),this.tablist.unbind(this.eventNamespace),this.tabs.add(this.panels).each(function(){t.data(this,\"ui-tabs-destroy\")?t(this).remove():t(this).removeClass(\"ui-state-default ui-state-active ui-state-disabled ui-corner-top ui-corner-bottom ui-widget-content ui-tabs-active ui-tabs-panel\").removeAttr(\"tabIndex\").removeAttr(\"aria-live\").removeAttr(\"aria-busy\").removeAttr(\"aria-selected\").removeAttr(\"aria-labelledby\").removeAttr(\"aria-hidden\").removeAttr(\"aria-expanded\").removeAttr(\"role\")}),this.tabs.each(function(){var e=t(this),i=e.data(\"ui-tabs-aria-controls\");i?e.attr(\"aria-controls\",i).removeData(\"ui-tabs-aria-controls\"):e.removeAttr(\"aria-controls\")}),this.panels.show(),\"content\"!==this.options.heightStyle&&this.panels.css(\"height\",\"\")},enable:function(e){var i=this.options.disabled;i!==!1&&(void 0===e?i=!1:(e=this._getIndex(e),i=t.isArray(i)?t.map(i,function(t){return t!==e?t:null}):t.map(this.tabs,function(t,i){return i!==e?i:null})),this._setupDisabled(i))},disable:function(e){var i=this.options.disabled;if(i!==!0){if(void 0===e)i=!0;else{if(e=this._getIndex(e),-1!==t.inArray(e,i))return;i=t.isArray(i)?t.merge([e],i).sort():[e]}this._setupDisabled(i)}},load:function(e,i){e=this._getIndex(e);var s=this,n=this.tabs.eq(e),a=n.find(\".ui-tabs-anchor\"),o=this._getPanelForTab(n),r={tab:n,panel:o},h=function(t,e){\"abort\"===e&&s.panels.stop(!1,!0),n.removeClass(\"ui-tabs-loading\"),o.removeAttr(\"aria-busy\"),t===s.xhr&&delete s.xhr};this._isLocal(a[0])||(this.xhr=t.ajax(this._ajaxSettings(a,i,r)),this.xhr&&\"canceled\"!==this.xhr.statusText&&(n.addClass(\"ui-tabs-loading\"),o.attr(\"aria-busy\",\"true\"),this.xhr.done(function(t,e,n){setTimeout(function(){o.html(t),s._trigger(\"load\",i,r),h(n,e)},1)}).fail(function(t,e){setTimeout(function(){h(t,e)},1)})))},_ajaxSettings:function(e,i,s){var n=this;return{url:e.attr(\"href\"),beforeSend:function(e,a){return n._trigger(\"beforeLoad\",i,t.extend({jqXHR:e,ajaxSettings:a},s))}}},_getPanelForTab:function(e){var i=t(e).attr(\"aria-controls\");return this.element.find(this._sanitizeSelector(\"#\"+i))}}),t.widget(\"ui.tooltip\",{version:\"1.11.4\",options:{content:function(){var e=t(this).attr(\"title\")||\"\";return t(\"<a>\").text(e).html()},hide:!0,items:\"[title]:not([disabled])\",position:{my:\"left top+15\",at:\"left bottom\",collision:\"flipfit flip\"},show:!0,tooltipClass:null,track:!1,close:null,open:null},_addDescribedBy:function(e,i){var s=(e.attr(\"aria-describedby\")||\"\").split(/\\s+/);s.push(i),e.data(\"ui-tooltip-id\",i).attr(\"aria-describedby\",t.trim(s.join(\" \")))},_removeDescribedBy:function(e){var i=e.data(\"ui-tooltip-id\"),s=(e.attr(\"aria-describedby\")||\"\").split(/\\s+/),n=t.inArray(i,s);-1!==n&&s.splice(n,1),e.removeData(\"ui-tooltip-id\"),s=t.trim(s.join(\" \")),s?e.attr(\"aria-describedby\",s):e.removeAttr(\"aria-describedby\")},_create:function(){this._on({mouseover:\"open\",focusin:\"open\"}),this.tooltips={},this.parents={},this.options.disabled&&this._disable(),this.liveRegion=t(\"<div>\").attr({role:\"log\",\"aria-live\":\"assertive\",\"aria-relevant\":\"additions\"}).addClass(\"ui-helper-hidden-accessible\").appendTo(this.document[0].body)},_setOption:function(e,i){var s=this;return\"disabled\"===e?(this[i?\"_disable\":\"_enable\"](),this.options[e]=i,void 0):(this._super(e,i),\"content\"===e&&t.each(this.tooltips,function(t,e){s._updateContent(e.element)}),void 0)},_disable:function(){var e=this;t.each(this.tooltips,function(i,s){var n=t.Event(\"blur\");n.target=n.currentTarget=s.element[0],e.close(n,!0)}),this.element.find(this.options.items).addBack().each(function(){var e=t(this);e.is(\"[title]\")&&e.data(\"ui-tooltip-title\",e.attr(\"title\")).removeAttr(\"title\")})},_enable:function(){this.element.find(this.options.items).addBack().each(function(){var e=t(this);e.data(\"ui-tooltip-title\")&&e.attr(\"title\",e.data(\"ui-tooltip-title\"))})},open:function(e){var i=this,s=t(e?e.target:this.element).closest(this.options.items);s.length&&!s.data(\"ui-tooltip-id\")&&(s.attr(\"title\")&&s.data(\"ui-tooltip-title\",s.attr(\"title\")),s.data(\"ui-tooltip-open\",!0),e&&\"mouseover\"===e.type&&s.parents().each(function(){var e,s=t(this);s.data(\"ui-tooltip-open\")&&(e=t.Event(\"blur\"),e.target=e.currentTarget=this,i.close(e,!0)),s.attr(\"title\")&&(s.uniqueId(),i.parents[this.id]={element:this,title:s.attr(\"title\")},s.attr(\"title\",\"\"))}),this._registerCloseHandlers(e,s),this._updateContent(s,e))},_updateContent:function(t,e){var i,s=this.options.content,n=this,a=e?e.type:null;return\"string\"==typeof s?this._open(e,t,s):(i=s.call(t[0],function(i){n._delay(function(){t.data(\"ui-tooltip-open\")&&(e&&(e.type=a),this._open(e,t,i))})}),i&&this._open(e,t,i),void 0)},_open:function(e,i,s){function n(t){l.of=t,o.is(\":hidden\")||o.position(l)}var a,o,r,h,l=t.extend({},this.options.position);if(s){if(a=this._find(i))return a.tooltip.find(\".ui-tooltip-content\").html(s),void 0;i.is(\"[title]\")&&(e&&\"mouseover\"===e.type?i.attr(\"title\",\"\"):i.removeAttr(\"title\")),a=this._tooltip(i),o=a.tooltip,this._addDescribedBy(i,o.attr(\"id\")),o.find(\".ui-tooltip-content\").html(s),this.liveRegion.children().hide(),s.clone?(h=s.clone(),h.removeAttr(\"id\").find(\"[id]\").removeAttr(\"id\")):h=s,t(\"<div>\").html(h).appendTo(this.liveRegion),this.options.track&&e&&/^mouse/.test(e.type)?(this._on(this.document,{mousemove:n}),n(e)):o.position(t.extend({of:i},this.options.position)),o.hide(),this._show(o,this.options.show),this.options.show&&this.options.show.delay&&(r=this.delayedShow=setInterval(function(){o.is(\":visible\")&&(n(l.of),clearInterval(r))},t.fx.interval)),this._trigger(\"open\",e,{tooltip:o})}},_registerCloseHandlers:function(e,i){var s={keyup:function(e){if(e.keyCode===t.ui.keyCode.ESCAPE){var s=t.Event(e);s.currentTarget=i[0],this.close(s,!0)}}};i[0]!==this.element[0]&&(s.remove=function(){this._removeTooltip(this._find(i).tooltip)}),e&&\"mouseover\"!==e.type||(s.mouseleave=\"close\"),e&&\"focusin\"!==e.type||(s.focusout=\"close\"),this._on(!0,i,s)},close:function(e){var i,s=this,n=t(e?e.currentTarget:this.element),a=this._find(n);return a?(i=a.tooltip,a.closing||(clearInterval(this.delayedShow),n.data(\"ui-tooltip-title\")&&!n.attr(\"title\")&&n.attr(\"title\",n.data(\"ui-tooltip-title\")),this._removeDescribedBy(n),a.hiding=!0,i.stop(!0),this._hide(i,this.options.hide,function(){s._removeTooltip(t(this))}),n.removeData(\"ui-tooltip-open\"),this._off(n,\"mouseleave focusout keyup\"),n[0]!==this.element[0]&&this._off(n,\"remove\"),this._off(this.document,\"mousemove\"),e&&\"mouseleave\"===e.type&&t.each(this.parents,function(e,i){t(i.element).attr(\"title\",i.title),delete s.parents[e]}),a.closing=!0,this._trigger(\"close\",e,{tooltip:i}),a.hiding||(a.closing=!1)),void 0):(n.removeData(\"ui-tooltip-open\"),void 0)},_tooltip:function(e){var i=t(\"<div>\").attr(\"role\",\"tooltip\").addClass(\"ui-tooltip ui-widget ui-corner-all ui-widget-content \"+(this.options.tooltipClass||\"\")),s=i.uniqueId().attr(\"id\");return t(\"<div>\").addClass(\"ui-tooltip-content\").appendTo(i),i.appendTo(this.document[0].body),this.tooltips[s]={element:e,tooltip:i}},_find:function(t){var e=t.data(\"ui-tooltip-id\");return e?this.tooltips[e]:null},_removeTooltip:function(t){t.remove(),delete this.tooltips[t.attr(\"id\")]},_destroy:function(){var e=this;t.each(this.tooltips,function(i,s){var n=t.Event(\"blur\"),a=s.element;n.target=n.currentTarget=a[0],e.close(n,!0),t(\"#\"+i).remove(),a.data(\"ui-tooltip-title\")&&(a.attr(\"title\")||a.attr(\"title\",a.data(\"ui-tooltip-title\")),a.removeData(\"ui-tooltip-title\"))}),this.liveRegion.remove()}})});"]}
\ No newline at end of file
+{"version":3,"sources":["node_modules/socialcalc/dist/SocialCalc.js","third-party/class-js/lib/Class.js","third-party/wikiwyg/lib/Document/Emitter.js","third-party/wikiwyg/lib/Document/Emitter/HTML.js","third-party/wikiwyg/lib/Document/Parser.js","third-party/wikiwyg/lib/Document/Parser/Wikitext.js","static/jquery.js","static/vex.combined.min.js","static/jquery-ui.min.js"],"names":["root","factory","define","amd","bind","this","module","exports","call","SocialCalc","window","Constants","cellDataType","v","n","t","f","c","textdatadefaulttype","s_BrowserNotSupported","s_InternalError","s_pssUnknownColType","s_pssUnknownRowType","s_pssUnknownLineType","s_cfspUnknownCellType","doCanonicalizeSheet","s_escUnknownSheetCmd","s_escUnknownSetCoordCmd","s_escUnknownCmd","s_caccCircRef","defaultRowNameWidth","defaultAssumedRowHeight","defaultCellIDPrefix","defaultCellLayout","defaultCellFontStyle","defaultCellFontSize","defaultCellFontFamily","defaultPaneDividerWidth","defaultPaneDividerHeight","defaultGridCSS","defaultCommentClass","defaultCommentStyle","defaultCommentNoGridClass","defaultCommentNoGridStyle","defaultReadonlyClass","defaultReadonlyStyle","defaultReadonlyNoGridClass","defaultReadonlyNoGridStyle","defaultReadonlyComment","defaultColWidth","defaultMinimumColWidth","defaultHighlightTypeCursorClass","defaultHighlightTypeCursorStyle","defaultHighlightTypeRangeClass","defaultHighlightTypeRangeStyle","defaultColnameClass","defaultColnameStyle","defaultSelectedColnameClass","defaultSelectedColnameStyle","defaultRownameClass","defaultRownameStyle","defaultSelectedRownameClass","defaultSelectedRownameStyle","defaultUpperLeftClass","defaultUpperLeftStyle","defaultSkippedCellClass","defaultSkippedCellStyle","defaultPaneDividerClass","defaultPaneDividerStyle","defaultUnhideLeftClass","defaultUnhideLeftStyle","defaultUnhideRightClass","defaultUnhideRightStyle","defaultUnhideTopClass","defaultUnhideTopStyle","defaultUnhideBottomClass","defaultUnhideBottomStyle","defaultColResizeBarClass","defaultRowResizeBarClass","s_rcMissingSheet","defaultLinkFormatString","defaultPageLinkFormatString","defaultFormatp","defaultFormatc","defaultFormatdt","defaultFormatd","defaultFormatt","defaultDisplayTRUE","defaultDisplayFALSE","defaultImagePrefix","defaultTableEditorIDPrefix","defaultPageUpDnAmount","AllowCtrlS","defaultTableControlThickness","cteGriddivClass","s_statusline_executing","s_statusline_displaying","s_statusline_ordering","s_statusline_calculating","s_statusline_calculatingls","s_statusline_doingserverfunc","s_statusline_incell","s_statusline_calcstart","s_statusline_sum","s_statusline_recalcneeded","s_statusline_circref","s_statusline_sendemail","s_inputboxdisplaymultilinetext","defaultInputEchoClass","defaultInputEchoStyle","defaultInputEchoPromptClass","defaultInputEchoPromptStyle","defaultInputEchoHintClass","defaultInputEchoHintStyle","ietUnknownFunction","CH_radius1","CH_radius2","s_CHfillAllTooltip","s_CHfillContentsTooltip","s_CHmovePasteAllTooltip","s_CHmovePasteContentsTooltip","s_CHmoveInsertAllTooltip","s_CHmoveInsertContentsTooltip","s_CHindicatorOperationLookup","Fill","FillC","Move","MoveI","MoveC","MoveIC","s_CHindicatorDirectionLookup","Down","Right","Horizontal","Vertical","defaultTCSliderThickness","defaultTCButtonThickness","defaultTCThumbThickness","TCmainStyle","TCmainClass","TCendcapStyle","TCendcapClass","TCpanesliderClass","s_panesliderTooltiph","s_panesliderTooltipv","TClessbuttonStyle","TClessbuttonClass","TClessbuttonRepeatWait","TClessbuttonRepeatInterval","TCmorebuttonStyle","TCmorebuttonClass","TCmorebuttonRepeatWait","TCmorebuttonRepeatInterval","TCscrollareaStyle","TCscrollareaClass","TCscrollareaRepeatWait","TCscrollareaRepeatInterval","TCthumbClass","TCthumbStyle","TCPStrackinglineClass","TCPStrackinglineStyle","TCPStrackinglineThickness","TCTDFSthumbstatusvClass","TCTDFSthumbstatusvStyle","TCTDFSthumbstatushClass","TCTDFSthumbstatushStyle","TCTDFSthumbstatusrownumClass","TCTDFSthumbstatusrownumStyle","TCTDFStopOffsetv","TCTDFSleftOffsetv","s_TCTDFthumbstatusPrefixv","TCTDFStopOffseth","TCTDFSleftOffseth","s_TCTDFthumbstatusPrefixh","TooltipOffsetX","TooltipOffsetY","TDpopupElementClass","TDpopupElementStyle","SCToolbarbackground","SCTabbackground","SCTabselectedCSS","SCTabplainCSS","SCToolbartext","SCFormulabarheight","SCStatuslineheight","SCStatuslineCSS","SCFormatNumberFormats","SCFormatTextFormats","SCFormatPadsizes","SCFormatFontsizes","SCFormatFontfamilies","SCFormatFontlook","SCFormatTextAlignhoriz","SCFormatNumberAlignhoriz","SCFormatAlignVertical","SCFormatColwidth","SCFormatRecalc","SCFormatUserMaxCol","SCFormatUserMaxRow","ISCButtonNormalBackground","ISCButtonBorderNormal","ISCButtonBorderHover","ISCButtonBorderDown","ISCButtonDownBackground","s_PopupListCancel","s_PopupListCustom","s_loc_align_center","s_loc_align_left","s_loc_align_right","s_loc_alignment","s_loc_audit","s_loc_audit_trail_this_session","s_loc_auto","s_loc_auto_sum","s_loc_auto_wX_commas","s_loc_automatic","s_loc_background","s_loc_bold","s_loc_bold_XampX_italics","s_loc_bold_italic","s_loc_borders","s_loc_borders_off","s_loc_borders_on","s_loc_bottom","s_loc_bottom_border","s_loc_cell_settings","s_loc_csv_format","s_loc_cancel","s_loc_category","s_loc_center","s_loc_clear","s_loc_clear_socialcalc_clipboard","s_loc_clipboard","s_loc_color","s_loc_column_","s_loc_comment","s_loc_copy","s_loc_custom","s_loc_cut","s_loc_default","s_loc_default_alignment","s_loc_default_column_width","s_loc_default_font","s_loc_default_format","s_loc_default_padding","s_loc_delete","s_loc_delete_column","s_loc_delete_contents","s_loc_delete_row","s_loc_description","s_loc_display_clipboard_in","s_loc_down","s_loc_edit","s_loc_existing_names","s_loc_family","s_loc_fill_down","s_loc_fill_right","s_loc_font","s_loc_format","s_loc_formula","s_loc_function_list","s_loc_functions","s_loc_grid","s_loc_hidden","s_loc_hide_column","s_loc_hide_row","s_loc_horizontal","s_loc_insert_column","s_loc_insert_row","s_loc_italic","s_loc_last_sort","s_loc_left","s_loc_left_border","s_loc_link","s_loc_link_input_box","s_loc_list","s_loc_load_socialcalc_clipboard_with_this","s_loc_lock_cell","s_loc_major_sort","s_loc_manual","s_loc_merge_cells","s_loc_middle","s_loc_minor_sort","s_loc_move_insert","s_loc_move_paste","s_loc_multiXline_input_box","s_loc_name","s_loc_names","s_loc_no_padding","s_loc_normal","s_loc_number","s_loc_number_horizontal","s_loc_ok","s_loc_padding","s_loc_page_name","s_loc_paste","s_loc_paste_formats","s_loc_plain_text","s_loc_recalc","s_loc_recalculation","s_loc_redo","s_loc_right","s_loc_right_border","s_loc_sheet_settings","s_loc_save","s_loc_save_to","s_loc_set_cell_contents","s_loc_set_cells_to_sort","s_loc_set_value_to","s_loc_set_to_link_format","s_loc_setXclear_move_from","s_loc_show_cell_settings","s_loc_show_sheet_settings","s_loc_show_in_new_browser_window","s_loc_size","s_loc_socialcalcXsave_format","s_loc_sort","s_loc_sort_","s_loc_sort_cells","s_loc_swap_colors","s_loc_tabXdelimited_format","s_loc_text","s_loc_text_horizontal","s_loc_this_is_aXbrXsample","s_loc_top","s_loc_top_border","s_loc_undone_steps","s_loc_url","s_loc_undo","s_loc_unlock_cell","s_loc_unmerge_cells","s_loc_up","s_loc_value","s_loc_vertical","s_loc_wikitext","s_loc_workspace","s_loc_XnewX","s_loc_XnoneX","s_loc_Xselect_rangeX","SVStatuslineheight","SVStatuslineCSS","FormatNumber_separatorchar","FormatNumber_decimalchar","FormatNumber_defaultCurrency","s_FormatNumber_daynames","s_FormatNumber_daynames3","s_FormatNumber_monthnames","s_FormatNumber_monthnames3","s_FormatNumber_am","s_FormatNumber_am1","s_FormatNumber_pm","s_FormatNumber_pm1","s_parseerrexponent","s_parseerrchar","s_parseerrstring","s_parseerrspecialvalue","s_parseerrtwoops","s_parseerrmissingopenparen","s_parseerrcloseparennoopen","s_parseerrmissingcloseparen","s_parseerrmissingoperand","s_parseerrerrorinformula","s_calcerrerrorvalueinformula","s_parseerrerrorinformulabadval","s_formularangeresult","s_calcerrnumericnan","s_calcerrnumericoverflow","s_sheetunavailable","s_calcerrcellrefmissing","s_calcerrsheetnamemissing","s_circularnameref","s_calcerrunknownname","s_calcerrincorrectargstofunction","s_sheetfuncunknownfunction","s_sheetfunclnarg","s_sheetfunclog10arg","s_sheetfunclogsecondarg","s_sheetfunclogfirstarg","s_sheetfuncroundsecondarg","s_sheetfuncddblife","s_sheetfuncslnlife","s_fdef_ABS","s_fdef_ACOS","s_fdef_AND","s_fdef_ASIN","s_fdef_ATAN","s_fdef_ATAN2","s_fdef_AVERAGE","s_fdef_CHOOSE","s_fdef_COLUMNS","s_fdef_COS","s_fdef_CONCAT","s_fdef_CONCATENATE","s_fdef_COUNT","s_fdef_COUNTA","s_fdef_COUNTBLANK","s_fdef_COUNTIF","s_fdef_DATE","s_fdef_DAVERAGE","s_fdef_DAY","s_fdef_DCOUNT","s_fdef_DCOUNTA","s_fdef_DDB","s_fdef_DEGREES","s_fdef_DGET","s_fdef_DMAX","s_fdef_DMIN","s_fdef_DPRODUCT","s_fdef_DSTDEV","s_fdef_DSTDEVP","s_fdef_DSUM","s_fdef_DVAR","s_fdef_DVARP","s_fdef_EVEN","s_fdef_EXACT","s_fdef_EXP","s_fdef_FACT","s_fdef_FALSE","s_fdef_FIND","s_fdef_FV","s_fdef_HLOOKUP","s_fdef_HOUR","s_fdef_IF","s_fdef_INDEX","s_fdef_INT","s_fdef_IRR","s_fdef_ISBLANK","s_fdef_ISERR","s_fdef_ISERROR","s_fdef_ISLOGICAL","s_fdef_ISNA","s_fdef_ISNONTEXT","s_fdef_ISNUMBER","s_fdef_ISTEXT","s_fdef_LEFT","s_fdef_LEN","s_fdef_LN","s_fdef_LOG","s_fdef_LOG10","s_fdef_LOWER","s_fdef_MATCH","s_fdef_MAX","s_fdef_MID","s_fdef_MIN","s_fdef_MINUTE","s_fdef_MOD","s_fdef_MONTH","s_fdef_N","s_fdef_NA","s_fdef_NOT","s_fdef_NOW","s_fdef_NPER","s_fdef_NPV","s_fdef_ODD","s_fdef_OR","s_fdef_PI","s_fdef_PMT","s_fdef_POWER","s_fdef_PRODUCT","s_fdef_PROPER","s_fdef_PV","s_fdef_RADIANS","s_fdef_RATE","s_fdef_REPLACE","s_fdef_REPT","s_fdef_RIGHT","s_fdef_ROUND","s_fdef_ROWS","s_fdef_SECOND","s_fdef_SIN","s_fdef_SLN","s_fdef_SQRT","s_fdef_STDEV","s_fdef_STDEVP","s_fdef_SUBSTITUTE","s_fdef_SUM","s_fdef_SUMIF","s_fdef_SUMIFS","s_fdef_SYD","s_fdef_T","s_fdef_TAN","s_fdef_TIME","s_fdef_TODAY","s_fdef_TRIM","s_fdef_TRUE","s_fdef_TRUNC","s_fdef_UPPER","s_fdef_VALUE","s_fdef_VAR","s_fdef_VARP","s_fdef_VLOOKUP","s_fdef_WEEKDAY","s_fdef_YEAR","s_fdef_SUMPRODUCT","s_fdef_CEILING","s_fdef_FLOOR","s_farg_v","s_farg_vn","s_farg_xy","s_farg_choose","s_farg_range","s_farg_rangec","s_farg_date","s_farg_dfunc","s_farg_ddb","s_farg_find","s_farg_fv","s_farg_hlookup","s_farg_iffunc","s_farg_index","s_farg_irr","s_farg_tc","s_farg_log","s_farg_match","s_farg_mid","s_farg_nper","s_farg_npv","s_farg_pmt","s_farg_pv","s_farg_rate","s_farg_replace","s_farg_vp","s_farg_valpre","s_farg_csl","s_farg_cslp","s_farg_subs","s_farg_sumif","s_farg_hms","s_farg_txt","s_farg_vlookup","s_farg_weekday","s_farg_dt","s_farg_rangen","s_farg_vsig","function_classlist","s_fclass_all","s_fclass_stat","s_fclass_lookup","s_fclass_datetime","s_fclass_financial","s_fclass_test","s_fclass_math","s_fclass_text","s_fclass_action","s_fclass_gui","lastone","ConstantsDefaultClasses","defaultComment","defaultCommentNoGrid","defaultHighlightTypeCursor","defaultHighlightTypeRange","defaultColname","defaultSelectedColname","defaultRowname","defaultSelectedRowname","defaultUpperLeft","defaultSkippedCell","defaultPaneDivider","cteGriddiv","defaultInputEcho","classname","style","TCmain","TCendcap","TCpaneslider","TClessbutton","TCmorebutton","TCscrollarea","TCthumb","TCPStrackingline","TCTDFSthumbstatus","TDpopupElement","ConstantsSetClasses","prefix","item","defaults","scc","undefined","ConstantsSetImagePrefix","imagePrefix","replace","Callbacks","expand_wiki","expand_markup","displayvalue","sheetobj","linkstyle","default_expand_markup","MakePageLink","NormalizeSheetName","Cell","coord","datavalue","datatype","formula","valuetype","readonly","CellProperties","errors","comment","bt","br","bb","bl","layout","font","color","bgcolor","cellformat","nontextvalueformat","textvalueformat","colspan","rowspan","cssc","csss","mod","displaystring","parseinfo","hcolspan","hrowspan","CellPropertiesTable","Sheet","ResetSheet","statuscallback","statuscallbackparams","sheet","reload","cells","attribs","lastcol","lastrow","defaultlayout","usermaxcol","usermaxrow","rowattribs","hide","height","colattribs","width","names","layouts","layouthash","fonts","fonthash","colors","colorhash","borderstyles","borderstylehash","cellformats","cellformathash","valueformats","valueformathash","matched_cells","selected_search_cell","copiedfrom","changes","UndoStack","renderneeded","changedrendervalues","recalcchangedavalue","hiddencolrow","sci","SheetCommandInfo","ioEventTree","ioParameterList","prototype","AddCell","newcell","LastCol","cell_id","last_col","cr","coordToCr","col","LastRow","last_row","row","GetAssuredCell","ParseSheetSave","savedsheet","CellFromStringParts","cell","parts","j","CreateSheetSave","range","canonicalize","CellToString","CanonicalizeSheet","full","EncodeCellAttributes","EncodeSheetAttributes","DecodeCellAttributes","DecodeSheetAttributes","ScheduleSheetCommands","cmd","saveundo","SheetUndo","SheetRedo","CreateAuditString","GetStyleNum","atype","GetStyleString","num","RecalcSheet","name","lines","split","i","length","defaultcolwidth","defaultrowheight","defaulttextformat","defaultnontextformat","defaultfont","defaulttextvalueformat","defaultnontextvalueformat","defaultcolor","defaultbgcolor","circularreferencecell","recalc","needsrecalc","decodeFromSave","toUpperCase","desc","definition","match","alert","charAt","ro","toLowerCase","sheetfields","sheetfieldsshort","sheetfieldsxlat","sheetfieldsxlatshort","sheetfieldsxlatxlt","line","value","result","xlt","prange","ParseRange","cr1","cr2","maxrow","maxcol","push","crToCoord","rcColname","encodeForSave","newborderstyles","newcellformats","newcolors","newfonts","newlayouts","newvalueformats","namesorder","join","r","b","l","borderstylesxlat","layoutsxlat","fontsxlat","colorsxlat","cellformatsxlat","valueformatsxlat","filled","an","a","newa","newxlat","ahash","alist","sort","Array","colorsUsed","borderstylesUsed","fontsUsed","layoutsUsed","cellformatsUsed","valueformatsUsed","unshift","InitAttrib","def","val","InitAttribs","namelist","SetAttrib","SetAttribStar","rowheight","newattribs","CheckChanges","attribname","oldval","cmdname","DoCmd","str","cmdstr","changed","alignvert","padtop","padright","padbottom","padleft","fontlook","fontsize","fontfamily","timerobj","firsttimerdelay","timerdelay","maxtimeslice","CmdExtensionCallbacks","parseobj","Parse","PushChange","setTimeout","SheetCommandsTimerRoutine","errortext","starttime","Date","EOF","ExecuteSheetCommand","err","message","console","log","NextLine","what","cmd1","rest","attrib","pos","pos2","undostart","fillright","rowstart","colstart","rowoffset","coloffset","clipsheet","cliprange","numcols","numrows","attribtable","colend","rowend","newcolstart","newrowstart","newcolend","newrowend","rownext","colnext","colthis","rowbefore","colbefore","oldformula","oldcr","cols","dirs","lastsortcol","sortlist","sortcells","sortvalues","sorttypes","valtype","originalrow","sortedcr","v1","v2","editor","trackLine","inc","movingcells","dest","destcr","inserthoriz","insertvert","pushamount","movedto","cellProperties","cellChanged","RestOfStringNoMove","AddDo","NextToken","RestOfString","AddUndo","test","indexOf","substring","celldisplayneeded","_app","prevvaluetype","quashedCellCoord","quashedCell","Clipboard","clipboard","increment_amount","down","valid_datatype","type","startcell","endcell","GetSpreadsheetControlObject","range2","returnval","hasrange","bottom","top","left","right","Range2Remove","crbase","basecell","OffsetFormulaCoords","Math","max","currentClipCol","currentClipRow","sourceColname","colWidth","colHide","sourceRow","rowHide","slast","a1","b1","ta","cresult","tb","widgetsClean","AdjustFormulaCoords","tempRenderContext","RenderContext","CalculateCellSkipData","cellsToExpand","skipCell","cellskip","skipCellCR","mergerCellCoords","cellsToShrink","mergerCellCR","coordToCR","ReplaceFormulaCoords","recalconce","undoNum","parseInt","context","rowpanes","first","timeout","SetRowPaneFirstLast","griddiv","document","getElementById","removeChild","FitToEditTable","colpanes","SetColPaneFirstLast","cmdextension","func","data","tos","TOS","undo","Undo","Redo","command","stack","ttext","ttype","newcr","updatedformula","scf","Formula","tokentype","TokenType","token_op","op","token_string","string","token_coord","tokenOpExpansion","TokenOpExpansion","ParseFormulaIntoTokens","text","sheetref","RecalcInfo","currentState","state","idle","start_calc","order","calc","start_wait","done_wait","recalctimer","timeslicedelay","queue","LoadSheet","sheetname","RecalcData","inrecalc","celllist","celllistitem","calclist","calclistlength","firstcalc","lastcalc","nextcalc","count","checkinfo","RecalcCheckInfo","oldcoord","parsepos","inrange","inrangestart","c1","c2","r1","r2","scri","FreshnessInfoReset","RecalcClearTimeout","RecalcSetTimeout","RecalcTimerRoutine","clearTimeout","RecalcLoadedSheet","recalcneeded","live","AddSheetToCache","SheetCache","waitingForLoading","previousrecalcsheet","eresult","do_statuscallback","status","arg","recalcdata","RecalcCheckCell","total","evaluate_parsed_formula","firstRenderScheduled","ScheduleRender","RemoteFunctionInfo","waitingForServer","funcname","error","reRenderCellList","FreshnessInfo","recalc_completed","shift","startcoord","rangecoord","coordvals","token_name","mainloop","LookupName","delimiter","lineEnd","pos1","oldpos","maxRedo","maxUndo","pop","args","arguments","hideRowsCols","showGrid","showRCHeaders","rownamewidth","pixelsPerRow","colwidth","totalwidth","totalheight","colunhideleft","colunhideright","rowunhidetop","rowunhidebottom","highlights","cursorsuffix","highlightTypes","cursor","className","cursorinsertup","cursorinsertleft","cellIDprefix","defaultlinkstyle","defaultHTMLlinkstyle","defaultfontstyle","defaultfontsize","defaultfontfamily","defaultpanedividerwidth","defaultpanedividerheight","gridCSS","commentClassName","commentCSS","commentNoGridClassName","commentNoGridCSS","readonlyClassName","readonlyCSS","readonlyNoGridClassName","readonlyNoGridCSS","readonlyComment","classnames","colname","rowname","selectedcolname","selectedrowname","upperleft","skippedcell","panedivider","unhideleft","unhideright","unhidetop","unhidebottom","colresizebar","rowresizebar","explicitStyles","needcellskip","needprecompute","last","PrecomputeSheetFontsAndLayouts","CalculateColWidthData","CalculateRowHeightData","panenum","CoordInPane","rowpane","colpane","CellInPane","InitializeTable","tableobj","RenderSheet","oldtable","RenderColGroup","RenderColHeaders","RenderSizingRow","RenderRow","rownum","RenderSpacingRow","RenderCell","colnum","noElement","layoutre","dparts","sparts","weight","size","family","skiprow","skipcol","skipcoord","borderCollapse","cellSpacing","cellPadding","newrow","tbodyobj","parentnode","createElement","colgroupobj","appendChild","parentNode","replaceChild","newdiv","container","unhide","newcol","resizeBar","cssText","verticalAlign","innerHTML","position","fixPosition","overflow","w","span","sheetattribs","stylestr","CreatePseudoElement","id","colSpan","rowSpan","FormatValueForDisplay","title","classList","add","setStyles","panerowlimits","panecollimits","collow","colhigh","floor","String","fromCharCode","letters","coordToCol","coordToRow","ch","charCodeAt","s","decodeFromAjax","special_chars","Lookup","list","element","part","GetViewportInfo","innerWidth","innerHeight","horizontalScroll","pageXOffset","verticalScroll","pageYOffset","documentElement","clientWidth","clientHeight","scrollLeft","scrollTop","body","GetElementPosition","offsetLeft","offsetTop","GetComputedStyle","offsetParent","GetElementPositionWithScroll","rect","getBoundingClientRect","GetElementFixedParent","tagName","computedStyle","currentStyle","defaultView","getComputedStyle","LookupElement","array","AssignID","obj","idPrefix","GetCellContents","cellobj","valueformat","formula_name","valuesubtype","valueinputwidget","html_display_value","html_formated_value","format_text_for_display","format_number_for_display","parameters","formula_details","FunctionList","cell_html","index","parameterValue","paramRegExp","RegExp","html","htmlIndex","css","rawvalue","dvsc","dvue","textval","encodeURI","expand_text_link","u","FormatNumber","formatNumberWithFormat","DetermineValueType","second","denom","intgr","constr","tvalue","isNaN","slice","matches","year","navigator","convert_date_gregorian_to_julian","hour","minute","InputConstants","TRUE","FALSE","#N/A","#NULL!","#NUM!","#DIV/0!","#VALUE!","#REF!","#NAME?","url","ParseCellLinkText","pagename","newwin","workspacename","workspace","pageform","urlend","descstart","lastlt","lastIndexOf","lastbrkt","lastbrace","descend","wsend","ConvertSaveToOtherFormat","savestr","outputformat","dorecalc","clipextents","ele","div","ConvertOtherFormatToSave","inputstr","inputformat","maxc","SetConvertedCell","inquote","TableEditor","toplevel","fullgrid","noEdit","tablewidth","tableheight","inputBox","inputEcho","verticaltablecontrol","horizontaltablecontrol","logo","cellhandles","busy","ensureecell","deferredCommands","deferredEmailCommands","gridposition","headposition","firstscrollingrow","firstscrollingrowtop","lastnonscrollingrow","lastvisiblerow","firstscrollingcol","firstscrollingcolleft","lastnonscrollingcol","lastvisiblecol","rowpositions","colpositions","ecell","workingvalues","imageprefix","pageUpDnAmount","recalcFunction","EditorSheetStatusCallback","ctrlkeyFunction","charname","sel","cliptext","MoveECell","RangeAnchor","RangeExtend","pasteTextarea","GetEditorCellElement","ECellReadonly","EditorScheduleSheetCommands","display","focus","select","blur","KeyboardFocus","pastescclipboard","clipstr","ntvf","newntvf","prompt","CtrlSEditor","StatusCallback","MoveECellCallback","RangeChangeCallback","SettingsCallbacks","CreateTableEditor","ResizeTableEditor","SaveEditorSettings","LoadEditorSettings","flags","EditorRenderSheet","ignorebusy","EditorStepSet","GetStatuslineString","params","EditorGetStatuslineString","EditorMouseRegister","EditorMouseUnregister","EditorMouseRange","EditorProcessKey","e","EditorAddToInput","DisplayCellContents","EditorDisplayCellContents","EditorSaveEdit","EditorApplySetCommandsToRange","cmdline","MoveECellWithKey","ReplaceCell","UpdateCellCSS","SetECellHeaders","selected","EnsureECellVisible","RangeRemove","CalculateEditorPositions","renderwidgets","DoRenderStep","SchedulePositionCalculations","DoPositionCalculations","CalculateRowPositions","positions","sizes","CalculateColPositions","ScrollRelative","vertical","amount","ScrollRelativeBoth","vamount","hamount","PageRelative","direction","LimitLastPanes","ScrollTableUpOneRow","ScrollTableDownOneRow","ScrollTableLeftOneCol","ScrollTableRightOneCol","StopPropagation","SetMouseMoveUp","RemoveMouseMoveUp","TableControl","CreateTableControl","main","table","layouttable","tbody","tr","td","background","firstChild","InputEcho","CellHandles","userAgent","removeEventListener","SafariPasteFunction","addEventListener","MouseWheelRegister","WheelMove","EditorProcessMouseWheel","KeyboardSetFocus","preventDefault","setting","anchorcoord","save","anchorrow","anchorcol","load","cmdTokens","TriggerIoAction","Email","signalstatus","dcmd","emailcmd","sstr","circ","sum","progress","emailing","emailreponse","calculating","EditorMouseInfo","registeredElements","ignore","mousedowncoord","mouselastcoord","mouseresizecol","mouseresizeclientx","mouseresizedisplay","mouseinfo","ProcessEditorMouseDown","ProcessEditorDblClick","attachEvent","oldelement","detachEvent","splice","event","stopPropagation","cancelBubble","returnValue","move","up","setCapture","releaseCapture","mobj","target","srcElement","nodeType","clientX","clientY","GridMousePosition","rowheader","rowselect","ProcessEditorRowselectMouseDown","ProcessEditorRowsizeMouseDown","colheader","colselect","ProcessEditorColselectMouseDown","ProcessEditorColsizeMouseDown","shiftKey","CmdGotFocus","clickedCell","widget_id","cell_widget","ProcessEditorMouseMove","ProcessEditorMouseUp","inputtext","wval","GetText","partialexpr","SetText","Blur","ShowInputBox","ShowCellHandles","SetDragAutoRepeat","mouseresizecolnum","coltoresize","mousedownclientx","mousecoltounhide","coltounhide","sizedisplay","zIndex","lastChild","childNodes","ProcessEditorColsizeMouseMove","ProcessEditorColsizeMouseUp","newsize","FinishColRowSize","coord1","coord2","coord3","ProcessEditorRowselectMouseMove","ProcessEditorRowselectMouseUp","ProcessEditorColselectMouseMove","ProcessEditorColselectMouseUp","spreadsheetDiv","offsetHeight","mouseresizerownum","rowtoresize","mouseresizerow","mousedownclienty","mouserowtounhide","rowtounhide","ProcessEditorRowsizeMouseMove","ProcessEditorRowsizeMouseUp","AutoRepeatInfo","timer","repeatinterval","repeatcallback","callback","repeatinfo","rowfooter","colfooter","distance","DragAutoRepeat","EditorOpenCellEdit","disabled","Focus","Select","ecoord","erow","ecol","substr","skipOne","valueinfo","fch","EditedTriggerCell","actionFormulaCells","editedCellRef","actionCellId","function_name","delta","mousewheelinfo","wobj","functionobj","ceil","offsetWidth","controlborder","headerColOffset","headerRowOffset","rowindex","colindex","shifted","min","newelement","headercell","totalrows","needed","firstRow","lastRow","ComputeTableControlPositions","ignoreRender","PositionTableControlElements","toprow","offset","trowobj","leftcol","cellposition","dv","dh","vplen","vlimit","hplen","hlimit","newfirst","totalsize","panes","lastpane","lastvisible","sizearray","defaultsize","current","plen","oldrownum","oldchild","bottomrownum","rowneedsrefresh","newbottomrow","maxrowspan","newrownum","insertBefore","InputBox","onmousedown","InputBoxOnMouseDown","formulabar","InputBoxDisplayCellContents","show","ShowInputEcho","newtext","InputBoxFocus","selection","createRange","duplicate","moveToElementText","collapse","selectionStart","selectionEnd","inputbox","Keyboard","focusTable","interval","hint","functionbox","DragRegister","MouseDown","DragFunctionStart","MouseMove","DragFunctionPosition","MouseUp","Disabled","positionobj","SetInputEchoText","inputecho","clearInterval","setInterval","InputEchoHeartbeat","newstr","fname","fstr","FillFunctionInfo","FunctionArgString","InputEchoMouseDown","noCursorSuffix","movedmouse","draghandle","imagetype","dragpalette","dragtooltip","fillinghandle","CellHandlesMouseMoveOnHandle","CellHandlesMouseDown","moveshow","doshow","colinc","rowinc","mouseDown","SegmentDivHit","CellHandlesHoverTimeout","segtable","divWithMouseHit","x","y","len","sqrt","pow","quadrant","whichhandle","dragtype","filltype","startingcoord","startingX","startingY","CellHandlesMouseMove","CellHandlesMouseUp","crstart","crend","CellHandlesDragAutoRepeat","abs","newcoord","vscroll","hscroll","cmdtype2","sizec","sizer","deltac","deltar","cstr","endcap","paneslider","lessbutton","morebutton","scrollarea","thumb","endcapstart","panesliderstart","lessbuttonstart","morebuttonstart","scrollareastart","scrollareaend","scrollareasize","thumbpos","controlthickness","sliderthickness","buttonthickness","thumbthickness","minscrollingpanesize","control","vh","SCLoc","LocalizeString","backgroundImage","functions","TCPSDragFunctionStart","TCPSDragFunctionMove","TCPSDragFunctionStop","repeatwait","normalstyle","downstyle","hoverstyle","ButtonRegister","Repeat","ScrollAreaClick","TCTDragFunctionStart","TCTDragFunctionMove","TCTDragFunctionStop","buttoninfo","bobj","clickpos","border","realend","draginfo","dobj","trackingline","offsetY","offsetX","thumbstatus","rowmsgele","rowpreviewele","thumbcontext","pane","TCTDragFunctionRowSetStatus","msg","thumbrowshown","DragInfo","draggingElement","startX","startY","startZ","relativeOffset","horizontal","parent","DragMouseDown","DragUnregister","DragMouseMove","DragMouseUp","ButtonInfo","buttonElement","doingHover","buttonDown","paramobj","ButtonMouseDown","ButtonMouseOver","ButtonMouseOut","MouseOver","MouseOut","ButtonMouseUp","ButtonRepeat","MouseWheelInfo","ProcessMouseWheel","passThru","wheelDelta","detail","keyboardTables","specialKeysCommon","8","9","13","25","27","33","34","35","36","37","38","39","40","45","46","113","specialKeysIE","controlKeysIE","65","67","83","86","88","90","specialKeysOpera","controlKeysOpera","specialKeysSafari","63232","63233","63234","63235","63272","63273","63275","63276","63277","63237","controlKeysSafari","97","99","115","118","120","122","ignoreKeysSafari","63236","63238","63239","63240","63241","63242","63243","63244","63245","63246","63247","63289","specialKeysFirefox","controlKeysFirefox","ignoreKeysFirefox","16","17","18","20","19","44","91","92","112","114","116","117","119","121","123","144","145","224","areListener","didProcessKey","statusFromProcessKey","repeatingKeyPress","chForProcessKey","onkeydown","ProcessKeyDown","onkeypress","ProcessKeyPress","kt","which","keyCode","ctrlKey","ProcessKey","metaKey","charCode","ft","format_definitions","separatorchar","decimalchar","daynames","daynames3","monthnames3","monthnames","allowedcolors","BLACK","BLUE","CYAN","GREEN","MAGENTA","RED","WHITE","YELLOW","alloweddates","H","M","MM","S","SS","commands","copy","integer_placeholder","fraction_placeholder","decimal","currency","general","separator","date","comparison","section","datevalues","julian_offset","seconds_in_a_day","seconds_in_an_hour","format_string","currency_char","operandstr","fromend","cval","hrs","mins","secs","ehrs","emins","esecs","ampmstr","ymd","minOK","thisformat","gotcomparison","compop","compval","cpos","oppos","sectioninfo","decimalscale","strvalue","strparts","integervalue","fractionvalue","integerdigits2","integerpos","fractionpos","textcolor","textstyle","scfn","isFinite","formatTextWithFormat","negativevalue","zerovalue","FormatNumber_DefaultCurrency","parse_format_string","hascomparison","operators","operands","commas","percent","fractiondigits","scaledvalue","integerdigits","hasdate","startval","estartval","convert_date_julian_to_gregorian","mspos","sectionstart","thousandssep","factor","LOG10E","operandstrlc","day","month","format_defs","lastwasinteger","lastwasslash","lastwasasterisk","lastwasunderscore","quotestr","inbracket","bracketstr","ingeneral","indate","chpos","integerpart","bracketdata","parse_format_bracket","operator","operand","ampstr","juliandate","intFunc","I","J","K","L","N","ParseState","alpha","stringquote","numexp1","numexp2","alphanumeric","specialvalue","space","CharClass","numstart","eof","incoord","quote","specialstart","CharClassTable"," ","!","\"","'","#","$","%","&","(",")","*","+",",","-",".","/","0","1","2","3","4","5","6","7",":","<","=",">","A","B","C","D","E","F","G","O","P","Q","R","T","U","V","W","X","Y","Z","^","_","d","g","h","k","m","o","p","q","z","UpperCaseTable","SpecialConstants","TokenPrecedence","TypeLookupTable","unaryminus","n*","e*","t*","unaryplus","unarypercent","plus","n%","nd","nt","ndt","n$","nl","concat","th","tw","tl","oneargnumeric","twoargnumeric","propagateerror","cclass","last_token","last_token_type","last_token_text","twochrop","parsestate","charclass","charclasstable","uppercasetable","pushtoken","ParsePushToken","coordregex","haddecimal","topcode","opcode","allowrangereturn","revpolish","ConvertInfixToPolish","EvaluatePolish","pii","tprecedence","tstackprecedence","token_precedence","parsestack","debug_log","DebugLog","logObject","PushOperand","value1","value2","tostype","tostype2","cond","vmatch","smatch","lookup_result_type","LookupResultType","typelookup","operand_as_number","OperandAsNumber","operand_as_text","OperandAsText","operand_value_and_type","OperandValueAndType","operands_as_coord_on_sheet","OperandsAsCoordOnSheet","missingOperandError","parameterInfo","rii","prii","OperandsAsRangeOnSheet","CalculateFunction","type1","type2","table1","TopOfStackValueAndType","stacklen","operandinfo","cellvtype","StepThroughRangeDown","coordsheet","FindInSheetCache","PlainCoord","OperandAsCoord","OperandAsType","OperandAsRange","operandtype","OperandAsSheetName","othersheet","nvalue","isEnd","startedwalk","checknamecirc","specialc","rangevalue","sheet1","rp","sequence","OrderRangeParts","DecodeRangeParts","sheetdata","coordsheetdata","col1num","ncols","row1num","nrows","FunctionClasses","FunctionArgDefs","StoreIoEventFormula","operand_reverse","io_parameters","sheetCmd","valueCoord","Clone","reverse","ioTimeTriggerList","radioGroupList","PushTriggerTime","coordA1","sheetData","triggerTimeCellId","currentTriggerTimeList","rangeinfo","ArrayValuesEqual","timeZoneOffsetMins","getTimezoneOffset","triggerUTCTimeList","toString","PushTriggerCord","triggerCellId","cellcr","formDataViewer","CurrentSpreadsheetControlObject","CurrentSpreadsheetViewerObject","loaded","formFields","LoadFormFields","formFieldName","formFieldsLength","sheetCmdTwo","destination","source","property","A1","A2","foperand","ffunc","argnum","fobj","CopyFunctionArgs","FunctionArgsError","FunctionSpecificError","errortype","CheckForErrorValue","classes","cname","items","nargs","fdata","adef","SeriesFunctions","maxval","minval","mk","sk","mk1","sk1","typelookupplus","resulttypesum","counta","countblank","product","SumProductFunction","products","DSeriesFunctions","dbinfo","criteriainfo","targetcol","criteriafieldnums","testok","criteria","testcr","countmatches","dbrange","fieldname","criteriarange","fieldasnum","FieldToColnum","criterianum","CRITERIAROW","criteriacr","testcol","TestCriteria","fieldtype","LookupFunctions","rangelookup","offsetvalue","cincr","rincr","previousOK","csave","rsave","lookupvalue","IndexFunction","indexinfo","CountifSumifFunctions","sumrange","f2operand","SumifsFunction","ranges","criterias","all_good","IfFunction","op2","op1","DateFunction","resulttype","TimeFunction","hours","minutes","seconds","DMYFunctions","dtype","doffset","datevalue","HMSFunctions","fraction","datetime","ExactFunction","v1type","v2type","ArgList","FIND","LEFT","LEN","LOWER","MID","PROPER","REPLACE","REPT","RIGHT","SUBSTITUTE","TRIM","HEXCODE","UPPER","StringFunctions","numargs","argdef","operand_value","operand_type","start","word","fulltext","oldtext","next","code","IsFunctions","NTVFunctions","Math1Functions","acos","asin","atan","cos","PI","exp","sin","tan","Math2Functions","quotient","xval","yval","atan2","LogFunction","RoundFunction","round","CeilingFloorFunctions","sig","AndOrFunctions","NotFunction","ChooseFunction","cindex","ColumnsRowsFunctions","ZeroArgFunctions","tzoffset","nowdays","getTime","volatile","NOW","TODAY","random","RAND","DDBFunction","method","depreciation","accumulateddepreciation","cost","salvage","lifetime","period","SLNFunction","SYDFunction","sumperiods","InterestFunctions","dval","eval","fval","pv","fv","payment","paytype","part2","part3","olddelta","tries","rate","oldrate","aval","bval","part1","guess","epsilon","NPVFunction","resulttypenpv","IRRFunction","oldsum","rangeoperand","cashflows","IoFunctions","parameter","repeatIndex","wantedType","BUTTON","IMAGEBUTTON","EMAIL","EMAILIF","EMAILONEDIT","EMAILAT","EMAILONEDITIF","EMAILATIF","SUBMIT","TEXTBOX","AUTOCOMPLETE","SELECT","CHECKBOX","RADIOBUTTON","COPYVALUE","COPYFORMULA","INSERT","DELETEIF","COMMAND","COMMANDIF","PANEL","SPLASH","STYLE","repeatCount","parameterType","validParameterType","getStandardizedList","cssParameter","optionSource","options","optionRegExp","showindices","firstPanelIndex","splashdone","showrows","showcols","parameterIndex","showIndex","showPanelFound","panelCoordData","getStandardizedCoords","showGridDimension","lastIndex","sheetHideList","showList","getIndexOf","arrayIndex","sheetHideIndex","forceRender","lastShowDimension","spreadsheet","ss","AddAutocomplete","autocompleteSource","ui","autocomplete","filter","term","matcher","escapeRegex","grep","label","minLength","autoFocus","AutoComplete","change","Button","insertCommand","conditionsParameter","parameterdata","getStandardizedValues","sheetCommandList","CopyValueToRange","CopyFormulaToRange","colOffset","rowOffset","insertcellCoord","cellcoord","sourceDataIndex","copyCellRange","deleteCommand","criteriaParameter","testRangeParameter","criteriaValue","celldata","commandsParameter","trim","formulaData","cellValueType","cellDataValue","destCellCoord","cellFormula","sourceData","emailFormulaCellId","optionalTriggerCellId","parameterValues","parameterCellRefs","maxRangeSize","rangeSizeCounter","conditionIndex","toAddressParamOffset","subjectsRangeIndex","bodyRangeIndex","emailContents","setStatusBarMessage","emailContentsList","rangeIndex","conditionRangeIndex","toaddressRangeIndex","Submit","formDataValues","getFullYear","getMonth","getDate","getHours","getMinutes","getSeconds","colIndex","SelectList","selectListCellId","updateInputWidgetFormula","selectListWidget","autoCompleteCellId","autoCompleteWidget","TextBox","textBoxCellId","textBoxWidget","CheckBox","checkBoxCellId","checkBoxWidget","checked","RadioButton","radioButtonGroupName","getHTMLRadioButtonValue","radioButtonWidget","each","attr","widgetCellId","getHTMLWidgetCellValue","inputValue","sheetCommand","paramIndex","UpdateFormDataSheet","formCellId","parameterData","getStandardizedParameter","listParameter","listValues","includeCellCoord","includeCellData","constantDatatype","sourceCoord","sourcerangeinfo","sheets","constants","asloaded","recalcing","recalcdone","loadsheet","sfsc","nsheetname","newsheet","sfscc","newsheetname","recalcstate","scffi","scfsc","comparitor","basestring","basevalue","search","testvalue","Popup","Types","Controls","Current","Create","pt","SetValue","sp","spt","spc","spcdata","changedcallback","SetDisabled","Hide","GetValue","Initialize","Reset","CClick","Show","Close","Cancel","CreatePopupDiv","mainele","backgroundColor","moveable","dragregistered","EnsurePosition","GetLayoutValues","popup","popupele","DestroyPopupDiv","RGBToHex","rgbvals","ToHex","HexDigits","FromHex","HexToRGB","makeRGB","splitRGB","rgb","List","spcid","custom","skip","cancel","MakeCustom","customele","listdiv","MakeList","contentele","ensureWithin","SPLoc","ItemClicked","oele","nele","CustomToList","CustomOK","rowele","ColorChooser","spca","sampleWidth","sampleHeight","img","backgroundImageDefault","backgroundPosition","backgroundImageDisabled","oldvalue","CreateGrid","padding","grid","fontSize","borderRight","backgroundRepeat","marginTop","defaultbox","onclick","DefaultClicked","CustomClicked","CloseOK","GridMouseDown","DetermineColors","SetColors","gridToG","sptc","steps","commonrgb","mousedown","gpos","newrgb","oldrgb","ControlClicked","cid","CustomToGrid","SpreadsheetControl","requestedHeight","requestedWidth","requestedSpaceBelow","viewheight","tabs","tabnums","tabreplacements","currentTab","views","editorDiv","sortrange","moverange","multipartBoundary","toolbarbackground","tabbackground","tabselectedCSS","tabplainCSS","toolbartext","formulabarheight","statuslineheight","statuslineCSS","ExportCallback","statusline","SpreadsheetControlStatuslineCallback","statuslineid","recalcid1","recalcid2","movefrom","formulabuttons","formulafunctions","image","tooltip","DoFunctionList","multilineinput","DoMultiline","link","DoLink","DoSum","findbuttons","SearchUp","SearchDown","edit","oncreate","settings","view","SettingsControls","SettingControlReset","cellattribs","SettingsControlLoadPanel","values","sheetspanel","cellspanel","SpreadsheetControlSettingsSwitch","onclickFocus","viewobj","colorchooser","formatnumber","initialdata","formattext","textalignhoriz","numberalignhoriz","cformatnumber","cformattext","cfontfamily","cfontlook","cfontsize","calignhoriz","calignvert","ctextcolor","cbgcolor","cbt","cbr","cbb","cbl","cpadtop","cpadright","cpadbottom","cpadleft","SettingsControlInitializePanel","replacements","itemtitle","regex","replacement","sectiontitle","parttitle","itembody","bodypart","divStyle","SpreadsheetControlSortOnclick","SpreadsheetControlSortSave","SpreadsheetControlSortLoad","audit","ObjToSource","check","na","SpreadsheetControlCommentOnclick","onunclick","SpreadsheetControlCommentOnunclick","SpreadsheetControlNamesOnclick","SpreadsheetControlNamesOnunclick","SpreadsheetControlClipboardOnclick","InitializeSpreadsheetControl","node","spacebelow","DoOnResize","SizeSSDiv","ExecuteCommand","combostr","SpreadsheetControlExecuteCommand","CreateSheetHTML","SpreadsheetControlCreateSheetHTML","CreateSpreadsheetSave","otherparts","SpreadsheetControlCreateSpreadsheetSave","DecodeSpreadsheetSave","SpreadsheetControlDecodeSpreadsheetSave","CreateCellHTML","SpreadsheetControlCreateCellHTML","CreateCellHTMLSave","SpreadsheetControlCreateCellHTMLSave","child","vname","button","bele","SCLocSS","LocalizeSubstrings","Buttons","button_undo","button_redo","button_copy","button_cut","button_paste","button_pasteformats","button_lock","button_unlock","button_delete","button_filldown","button_fillright","button_movefrom","button_movepaste","button_moveinsert","button_alignleft","button_aligncenter","button_alignright","button_borderon","button_borderoff","button_swapcolors","button_merge","button_insertrow","button_insertcol","button_deleterow","button_deletecol","button_hiderow","button_hidecol","button_recalc","ISCButtonHoverBackground","DoButtonCmd","formulabarDiv","src","skipImagePrefix","marginLeft","input","searchBar","append","on","FindInSheet","keyup","CalculateSheetNonViewHeight","nonviewheight","appViewDiv","formDataDiv","SpreadsheetViewer","InitializeSpreadsheetViewer","statuslineDiv","paddingTop","paddingBottom","SetSpreadsheetControlObject","nodeIndex","LocalizeStringList","csco","newval","resized","nodestyle","marginBottom","marginRight","SetTab","tname","newtabnum","newview","menutabs","tools","newtab","needsresize","onresize","rele1","rele2","UpdateSortRangeProposal","LoadColumnChoosers","nrange","rparts","sele","oldindex","selectedIndex","Option","cl","clele","slist","slistele","SpreadsheetCmdTable","slists","lele","min_col","max_col","min_row","max_row","visibility","rele","SpreadsheetCmdLookup","SpreadsheetCmdSLookup","cut","paste","pasteformats","lock","unlock","delete","filldown","erase","borderon","borderoff","merge","unmerge","align-left","align-center","align-right","align-default","insertrow","insertcol","deleterow","deletecol","hiderow","hidecol","redo","eobj","cellHTML","fcl","idp","GetFunctionNamesStr","GetFunctionInfoStr","vp","FillFunctionNames","scsc","FunctionClassChosen","FunctionChosen","HideFunctions","DoFunctionPaste","mele","HideMultiline","DoMultilineClear","DoMultilinePaste","setformat","HideLink","DoLinkClear","DoLinkPaste","ltsym","gtsym","obsym","descele","urlele","pagenameele","workspaceele","formatele","cbsym","foundvalue","searchstatus","search_cells","cellvalue","SearchSheet","selected_cell","new_cell","textContent","n_options","SpreadsheetControlCommentMoveECell","SpreadsheetControlCommentDisplay","SpreadsheetControlCommentSet","SpreadsheetControlNamesRangeChange","SpreadsheetControlNamesFillNameList","SpreadsheetControlNamesChangedName","currentname","SpreadsheetControlNamesSetValue","SpreadsheetControlNamesSave","SpreadsheetControlNamesDelete","clipele","SpreadsheetControlClipboardFormat","SpreadsheetControlClipboardLoad","savetype","SpreadsheetControlClipboardClear","SpreadsheetControlClipboardExport","sheettable","celltable","sheettoolbar","celltoolbar","SettingsControlSetCurrentPanel","SettingsControlSave","panelobj","CurrentPanel","SettingsControlUnloadPanel","partname","extranl","otherpartsstr","otherpartsnames","mpregex","searchinfo","boundary","boundaryregex","blanklineregex","ending","partlist","exec","pnum","end","PopupChangeCallback","ctrlname","sc","ctrl","cv","fontFamily","paddingRight","paddingLeft","borderTop","borderBottom","borderLeft","BorderSideGetValue","textAlign","fontStyle","fontWeight","str1","str2","PopupListSetValue","PopupListGetValue","ctl","PopupListInitialize","otext","InitialData","optionvals","PopupListReset","PopupList","OnReset","ChangedCallback","ColorChooserSetValue","ColorChooserGetValue","ColorChooserInitialize","ColorChooserReset","BorderSideSetValue","idname","idstart","BorderSideInitialize","SettingsControlOnchangeBorder","nameparts","ctrlidsuffix","ctrltype","BorderSide","OnClick","ColorComboOnClick","thickness","OtherSaveParts","whichpart","strtoedit","editbox","ebta","CtrlSEditorDone","idprefix","_view","SpreadsheetViewerStatuslineCallback","hasStatusLine","statuslineHTML","statuslineFull","noRecalc","repeatingMacroTimer","repeatingMacroInterval","repeatingMacroCommands","LoadSave","SpreadsheetViewerLoadSave","SpreadsheetViewerDecodeSpreadsheetSave","spreadsheetobj","t2","startupmacro","repeatingmacro","rmstr","SpreadsheetViewerDoRepeatingMacro","GetSpreadsheetViewerObject","repeatmacro","SpreadsheetViewerRepeatMacroCommand","SpreadsheetViewerStopRepeatingMacro","SpreadsheetViewerDoButtonCmd","csvo","slstr","SpreadsheetViewerCreateSheetHTML","self","thread","cb","ms","nextTick","Class","classDefinition","classWrapper","$1","baseClassName","$2","incValues","$3","strict","option","klass","global","init","isa","baseName","superFunc","addGlobal","newGlobals","extend","pairs","ii","ll","eval_strict","apply","globals","last_key","globals_after","proto","instantiate","output","content","insert","receiver","begin_node","tag","_wafl","onload","_label","imageName","_href","end_node","text_node","parse","grammar","create_grammar","parse_blocks","container_type","types","blocks","matched","find_match","handle_match","JSON","stringify","subparse","matched_func","re","capture","lookbehind","parse_phrases","phrases","begin","filtered_text","parser","matched_block","matched_phrase","$4","re_huggy","brace1","brace2","all_phrases","key","all_blocks","im_types","yahoo","ymsgr","callto","callme","skype","aim","im_label","im_re","re_list","bullet","filter_out","exclusion","_all_blocks","_all_phrases","ol","ul","blockquote","subl","li","li2","_html","pre","hr","hx","empty","else","waflparagraph","waflphrase","asis","wikilink","wikilink2","file","href","im","mail","tt","del","Error","hasOwnProperty","fn","isWindow","jquery","constructor","selector","toArray","get","pushStack","prevObject","map","eq","isFunction","isPlainObject","isArray","expando","isReady","noop","isNumeric","parseFloat","isEmptyObject","ownLast","globalEval","execScript","camelCase","nodeName","makeArray","Object","inArray","guid","proxy","now","support","eb","ID","CLASS","TAG","ATTR","PSEUDO","CHILD","bool","needsContext","ab","db","ownerDocument","getElementsByTagName","getElementsByClassName","qsa","ob","getAttribute","setAttribute","pb","mb","querySelectorAll","removeAttribute","xb","getById","relative","find","cacheLength","fb","gb","hb","attrHandle","ib","sourceIndex","nextSibling","lb","isXML","setDocument","attributes","createComment","getElementsByName","getAttributeNode","matchesSelector","webkitMatchesSelector","mozMatchesSelector","oMatchesSelector","msMatchesSelector","disconnectedMatch","compareDocumentPosition","contains","sortDetached","specified","uniqueSort","detectDuplicates","sortStable","getText","nodeValue","selectors","createPseudo","dir","~","preFilter","pseudos","setFilters","not","has","innerText","lang","location","hash","activeElement","hasFocus","tabIndex","enabled","header","even","odd","lt","gt","nth","radio","checkbox","password","jb","submit","reset","kb","nb","qb","rb","sb","wb","vb","filters","compile","ub","defaultValue","expr","unique","isXMLDoc","is","ready","parseHTML","children","contents","prev","sibling","closest","prevAll","addBack","parents","parentsUntil","nextAll","nextUntil","prevUntil","siblings","contentDocument","contentWindow","readyState","memory","stopOnFalse","disable","once","remove","locked","fireWith","fire","fired","Deferred","always","done","fail","then","promise","resolve","reject","notify","pipe","when","notifyWith","resolveWith","readyWait","holdReady","trigger","off","frameElement","doScroll","inlineBlockNeedsLayout","zoom","deleteExpando","acceptData","noData","parseJSON","cache","toJSON","cleanData","applet ","embed ","object ","hasData","removeData","_data","_removeData","dequeue","_queueHooks","stop","clearQueue","access","createDocumentFragment","leadingWhitespace","htmlSerialize","html5Clone","cloneNode","outerHTML","appendChecked","noCloneChecked","checkClone","noCloneEvent","click","focusin","handler","events","handle","triggered","dispatch","elem","special","delegateType","bindType","origType","namespace","delegateCount","setup","teardown","removeEvent","Event","isTrigger","namespace_re","noBubble","parentWindow","isPropagationStopped","isDefaultPrevented","_default","fix","delegateTarget","preDispatch","handlers","currentTarget","isImmediatePropagationStopped","handleObj","postDispatch","fixHooks","mouseHooks","keyHooks","props","fromElement","pageX","clientLeft","pageY","clientTop","relatedTarget","toElement","beforeunload","originalEvent","simulate","isSimulated","defaultPrevented","getPreventDefault","timeStamp","stopImmediatePropagation","mouseenter","mouseleave","submitBubbles","form","_submit_bubble","changeBubbles","propertyName","_just_changed","focusinBubbles","one","triggerHandler","legend","area","param","thead","defaultChecked","yb","zb","Ab","Bb","optgroup","tfoot","colgroup","caption","clone","Cb","defaultSelected","buildFragment","createTextNode","domManip","prepend","before","after","replaceWith","detach","_evalUrl","appendTo","prependTo","insertAfter","replaceAll","Db","Eb","Fb","getDefaultComputedStyle","Gb","write","close","opacity","cssFloat","backgroundClip","clearCloneStyle","shrinkWrapBlocks","Jb","Kb","Hb","Ib","Lb","Mb","swap","getPropertyValue","minWidth","maxWidth","runtimeStyle","pixelLeft","reliableHiddenOffsets","boxSizing","boxSizingReliable","pixelPosition","reliableMarginRight","Nb","Ob","Pb","Qb","Rb","Sb","Tb","letterSpacing","Ub","Vb","Wb","Xb","Yb","Zb","$b","cssHooks","cssNumber","columnCount","fillOpacity","lineHeight","orphans","widows","cssProps","float","set","margin","expand","toggle","Tween","prop","easing","cur","unit","propHooks","run","duration","step","fx","linear","swing","_b","ac","bc","cc","dc","ec","unqueued","overflowX","overflowY","hidden","ic","fc","createTween","gc","hc","lc","startTime","tweens","opts","specialEasing","originalProperties","originalOptions","rejectWith","anim","complete","Animation","tweener","prefilter","speed","speeds","old","fadeTo","animate","finish","timers","slideDown","slideUp","slideToggle","fadeIn","fadeOut","fadeToggle","tick","slow","fast","delay","getSetAttribute","hrefNormalized","checkOn","optSelected","enctype","optDisabled","radioValue","mc","valHooks","scrollHeight","nc","oc","pc","qc","rc","tc","removeAttr","attrHooks","propFix","setAttributeNode","createAttribute","coords","contenteditable","uc","vc","removeProp","for","class","wc","addClass","removeClass","toggleClass","hasClass","hover","unbind","delegate","undelegate","xc","yc","Function","parseXML","DOMParser","parseFromString","ActiveXObject","async","loadXML","zc","Ac","Bc","Cc","Dc","Fc","Gc","Hc","Ic","Jc","Kc","Lc","Mc","Nc","dataTypes","Oc","ajaxSettings","flatOptions","active","lastModified","etag","isLocal","processData","contentType","accepts","xml","json","responseFields","converters","* text","text html","text json","text xml","ajaxSetup","ajaxPrefilter","ajaxTransport","ajax","statusCode","getResponseHeader","getAllResponseHeaders","setRequestHeader","overrideMimeType","mimeType","abort","success","dataType","crossDomain","traditional","hasContent","ifModified","headers","beforeSend","send","Pc","dataFilter","Qc","statusText","getJSON","getScript","throws","wrapAll","wrapInner","wrap","unwrap","visible","Rc","Sc","Tc","Uc","Vc","encodeURIComponent","Wc","serialize","serializeArray","xhr","$c","_c","Xc","Yc","Zc","XMLHttpRequest","cors","open","username","xhrFields","onreadystatechange","responseText","script","text script","head","scriptCharset","charset","ad","bd","cd","jsonp","jsonpCallback","dd","animated","ed","setOffset","using","scrollTo","Height","Width","","andSelf","fd","jQuery","gd","noConflict","animation","WebkitAnimation","MozAnimation","MsAnimation","OAnimation","closeByEscape","globalID","animationEndEvent","baseClassNames","vex","overlay","closing","defaultOptions","showCloseButton","escapeButtonCloses","overlayClosesOnClick","appendLocation","overlayClassName","overlayCSS","contentClassName","contentCSS","closeClassName","closeCSS","$vex","$vexOverlay","$vexContent","$closeButton","setupBodyClassName","afterOpen","getAllVexes","getVexByID","closeByID","closeAll","beforeClose","afterClose","hideLoading","showLoading","require","buttons","YES","NO","onSubmit","getFormValueOnSubmit","focusFirstInput","defaultAlertOptions","defaultConfirmOptions","buildDialogForm","confirm","placeholder","buttonsToDOM","dialog","_curInst","_keyEvent","_disabledInputs","_datepickerShowing","_inDialog","_mainDivId","_inlineClass","_appendClass","_triggerClass","_dialogClass","_disableClass","_unselectableClass","_currentClass","_dayOverClass","regional","closeText","prevText","nextText","currentText","monthNames","monthNamesShort","dayNames","dayNamesShort","dayNamesMin","weekHeader","dateFormat","firstDay","isRTL","showMonthAfterYear","yearSuffix","_defaults","showOn","showAnim","showOptions","defaultDate","appendText","buttonText","buttonImage","buttonImageOnly","hideIfNoPrevNext","navigationAsDateFormat","gotoCurrent","changeMonth","changeYear","yearRange","showOtherMonths","selectOtherMonths","showWeek","calculateWeek","iso8601Week","shortYearCutoff","minDate","maxDate","beforeShowDay","beforeShow","onSelect","onChangeMonthYear","onClose","numberOfMonths","showCurrentAtPos","stepMonths","stepBigMonths","altField","altFormat","constrainInput","showButtonPanel","autoSize","en","dpDiv","datepicker","_isDisabledDatepicker","inline","_refresh","_trigger","version","BACKSPACE","COMMA","DELETE","DOWN","END","ENTER","ESCAPE","HOME","PAGE_DOWN","PAGE_UP","PERIOD","SPACE","TAB","UP","scrollParent","uniqueId","removeUniqueId","focusable","tabbable","outerWidth","outerHeight","ie","disableSelection","enableSelection","plugin","plugins","widget","Widget","_createWidget","_proto","_childConstructors","_super","_superApply","widgetEventPrefix","widgetName","widgetFullName","bridge","_init","defaultElement","create","uuid","eventNamespace","bindings","hoverable","_on","destroy","_getCreateOptions","_create","_getCreateEventData","_destroy","_setOptions","_setOption","enable","_off","_delay","_hoverable","_focusable","focusout","effect","effects","mouseup","_mouseInit","_mouseDown","started","_mouseDestroy","_mouseMoveDelegate","_mouseUpDelegate","_mouseMoved","_mouseStarted","_mouseUp","_mouseDownEvent","_mouseCapture","mouseDelayMet","_mouseDelayTimer","_mouseDistanceMet","_mouseDelayMet","_mouseStart","_mouseMove","documentMode","_mouseDrag","_mouseStop","scrollbarWidth","getScrollInfo","isDocument","scrollWidth","getWithinInfo","of","within","collision","at","my","targetWidth","targetHeight","elemWidth","elemHeight","collisionPosition","collisionWidth","collisionHeight","important","fit","flip","flipfit","mouse","addClasses","axis","connectToSortable","containment","cursorAt","helper","iframeFix","refreshPositions","revert","revertDuration","scope","scroll","scrollSensitivity","scrollSpeed","snap","snapMode","snapTolerance","drag","_setPositionRelative","_setHandleClassName","_removeHandleClassName","destroyOnClear","_blurActiveElement","_getHandle","_blockFrames","iframeBlocks","_unblockFrames","handleElement","_createHelper","_cacheHelperProportions","ddmanager","_cacheMargins","cssPosition","hasFixedAncestor","positionAbs","_refreshOffsets","originalPosition","_generatePosition","originalPageX","originalPageY","_adjustOffsetFromHelper","_setContainment","_clear","dropBehaviour","prepareOffsets","_normalizeRightBottom","dragStart","margins","_getParentOffset","_getRelativeOffset","_convertPositionTo","_uiHash","drop","dropped","dragStop","helperProportions","_isRootNode","relativeContainer","cancelHelperRemoval","sortables","sortable","isOver","_storedCSS","_helper","_intersectsWith","containerCache","_parent","currentItem","fromOutside","_revert","_cursor","_opacity","scrollParentNotHidden","overflowOffset","snapElements","snapping","release","snapItem","_zIndex","draggable","accept","activeClass","greedy","hoverClass","tolerance","activate","deactivate","out","over","isover","isout","proportions","_addToManager","droppables","_splice","_activate","_deactivate","_over","_out","_drop","droppable","intersect","absolute","default","greedyChild","alsoResize","animateDuration","animateEasing","aspectRatio","autoHide","ghost","handles","maxHeight","minHeight","resize","_num","_isNumber","_hasScroll","_aspectRatio","originalElement","_proportionallyResizeElements","resizable","elementIsWrapper","originalResizeStyle","_proportionallyResize","se","sw","ne","nw","_handles","_renderAxis","mouseover","resizing","_renderProxy","originalSize","sizeDiff","originalMousePosition","_propagate","_change","_updatePrevProperties","_updateVirtualBoundaries","_updateRatio","_respectSize","_updateCache","_applyChanges","prevPosition","prevSize","_vBoundaries","_getPaddingPlusBorderDimensions","outerDimensions","elementOffset","containerElement","containerOffset","containerPosition","parentData","containerSize","autoRefresh","selecting","unselected","unselecting","dragged","refresh","$element","startselected","selectees","opos","connectWith","dropOnEmpty","forcePlaceholderSize","forceHelperSize","beforeStop","receive","update","_isOverAxis","_isFloating","instance","reverting","_refreshItems","_removeCurrentsFromItems","currentContainer","domPosition","_createPlaceholder","storedCursor","storedStylesheet","_storedOpacity","_storedZIndex","_preserveHelperProportions","containers","dragging","lastPositionAbs","_intersectsWithPointer","_intersectsWithSides","_rearrange","_contactContainers","_noFinalSort","_getItemsAsjQuery","connected","attribute","expression","forcePointerForContainers","floating","_getDragVerticalDirection","_getDragHorizontalDirection","_connectWith","toleranceElement","refreshContainers","_createTrPlaceholder","counter","sender","collapsible","heightStyle","icons","activeHeader","beforeActivate","hideProps","borderTopWidth","borderBottomWidth","showProps","prevShow","prevHide","_processPanels","panel","_createIcons","_destroyIcons","_setupEvents","_keydown","altKey","_eventHandler","_panelKeyDown","panels","_findActive","aria-selected","aria-expanded","aria-hidden","keydown","oldHeader","oldPanel","newHeader","newPanel","_toggle","_animate","_toggleComplete","submenu","menus","role","activeMenu","mouseHandled","mousedown .ui-menu-item","click .ui-menu-item","mouseenter .ui-menu-item","previousFilter","mouseleave .ui-menu","collapseAll","_closeOnDocumentClick","previousPage","nextPage","_move","previous","filterTimer","_filterMenuItems","_isDivider","_itemRole","menu","listbox","_scrollIntoView","_close","_startOpening","_open","isFirstItem","isLastItem","response","requestIndex","pending","isMultiLine","valueMethod","isNewMenu","_value","_searchTimeout","keypress","selectedItem","cancelBlur","searching","_initSource","_appendTo","menufocus","liveRegion","menuselect","aria-live","aria-relevant","_search","cancelSearch","_response","__response","_normalize","_suggest","_renderMenu","_resizeMenu","_renderItemData","_renderItem","messages","noResults","results","primary","secondary","_determineButtonType","hasTitle","_resetButton","markerClassName","maxRows","_widgetDatepicker","setDefaults","_attachDatepicker","_newInst","_connectDatepicker","_inlineDatepicker","selectedDay","selectedMonth","selectedYear","drawMonth","drawYear","_attachments","_doKeyDown","_doKeyPress","_doKeyUp","_autoSize","_disableDatepicker","_get","_showDatepicker","alt","_lastInput","_hideDatepicker","setMonth","setDate","getDay","_formatDate","_setDate","_getDefaultDate","_updateDatepicker","_updateAlternate","_dialogDatepicker","_dialogInst","_dialogInput","_pos","blockUI","_destroyDatepicker","_enableDatepicker","_getInst","_optionDatepicker","_getDateDatepicker","_getMinMaxDate","_changeDatepicker","_refreshDatepicker","_setDateDatepicker","_setDateFromField","_getDate","_selectDay","_adjustDate","_clearDate","_gotoToday","_possibleChars","lastVal","parseDate","_getFormatConfig","_findPos","_checkOffset","_shouldFocusInput","_generateHTML","_attachHandlers","_getNumberOfMonths","yearshtml","_tidyDialog","unblockUI","_checkExternalClick","_adjustInstDate","currentDay","currentMonth","currentYear","_notifyChange","_selectMonthYear","_selectDate","formatDate","noWeekends","_ticksTo1970","_getDaysInMonth","_daylightSavingAdjust","ATOM","COOKIE","ISO_8601","RFC_822","RFC_850","RFC_1036","RFC_1123","RFC_2822","RSS","TICKS","TIMESTAMP","W3C","getYear","_restrictMinMax","_determineDate","setHours","setMinutes","setSeconds","setMilliseconds","today","selectDay","selectMonth","selectYear","te","_canAdjustMonth","_isInRange","_generateMonthYearHeader","_getFirstDayOfMonth","initialized","autoOpen","closeOnEscape","dialogClass","modal","resizeStart","resizeStop","sizeRelatedOptions","resizableRelatedOptions","originalCss","originalTitle","_createWrapper","uiDialog","_createTitlebar","_createButtonPane","_makeDraggable","_makeResizable","_isOpen","_trackFocus","_untrackInstance","_destroyOverlay","_focusedElement","opener","_hide","isOpen","moveToTop","_moveToTop","_focusTabbable","_size","_position","_createOverlay","_show","_makeFocusTarget","uiDialogButtonPane","uiDialogTitlebarClose","_keepFocus","aria-describedby","uiDialogTitlebar","_title","aria-labelledby","uiButtonSet","_createButtons","showText","_minHeight","_trackingInstances","_allowInteraction","oldValue","_constrainedValue","aria-valuemin","valueDiv","_refreshValue","indeterminate","_percentage","toFixed","overlayDiv","aria-valuemax","aria-valuenow","ids","_drawButton","_drawMenu","tabindex","aria-autocomplete","aria-owns","aria-haspopup","_setText","_resizeButton","_buttonEvents","menuItems","_refreshMenu","menuWrap","menuInstance","_setSelection","_select","focusIndex","_getSelectedItem","_parseOptions","_setAria","_toggleAttr","_documentClick","menuWidget","getSelection","removeAllRanges","addRange","rangeCount","getRangeAt","_selectFocusedItem","aria-activedescendant","orientation","slide","numPages","_keySliding","_mouseSliding","_animateOff","_handleIndex","_detectOrientation","_calculateNewMax","_createRange","_createHandles","_valueMin","_handleEvents","elementSize","_normValueFromMouse","_valueMax","_lastChangedValue","_start","_clickOffset","_slide","_stop","_trimAlignValue","_values","_precision","_precisionOf","culture","incremental","numberFormat","page","spin","_draw","_events","mousewheel","spinning","_spin","mousewheelTimer","mousedown .ui-spinner-button","_repeat","mouseup .ui-spinner-button","mouseenter .ui-spinner-button","mouseleave .ui-spinner-button","uiSpinner","_uiSpinnerHtml","_buttonHtml","_adjustValue","_increment","_parse","_format","Globalize","format","isValid","stepUp","_stepUp","stepDown","_stepDown","pageUp","pageDown","beforeLoad","_isLocal","decodeURIComponent","running","_processTabs","_initialActive","anchors","tab","_getPanelForTab","_tabKeydown","_handlePageNav","activating","_focusNextTab","_panelKeydown","_findNextTab","_setupDisabled","_setupHeightStyle","_sanitizeSelector","tablist","_getList","_createPanel","aria-controls","oldTab","newTab","_getIndex","_ajaxSettings","jqXHR","tooltipClass","track","_addDescribedBy","_removeDescribedBy","tooltips","_disable","_updateContent","_enable","_registerCloseHandlers","_find","_tooltip","mousemove","delayedShow","_removeTooltip","hiding"],"mappings":"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"}
\ No newline at end of file
diff --git a/yarn.lock b/yarn.lock
index 26cec318..1685a914 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -2,2914 +2,3261 @@
 # yarn lockfile v1
 
 
-abbrev@1:
-  version "1.1.1"
-  resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8"
-
-accepts@~1.0.4, accepts@~1.0.7:
-  version "1.0.7"
-  resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.0.7.tgz#5b501fb4f0704309964ccdb048172541208dab1a"
-  dependencies:
-    mime-types "~1.0.0"
-    negotiator "0.4.7"
-
-accepts@~1.3.4, accepts@~1.3.5:
-  version "1.3.5"
-  resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.5.tgz#eb777df6011723a3b14e8a72c0805c8e86746bd2"
-  dependencies:
-    mime-types "~2.1.18"
-    negotiator "0.6.1"
-
-acorn@^3.0.0:
-  version "3.3.0"
-  resolved "https://registry.yarnpkg.com/acorn/-/acorn-3.3.0.tgz#45e37fb39e8da3f25baee3ff5369e2bb5f22017a"
-
-acorn@^5.2.1:
-  version "5.7.2"
-  resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.7.2.tgz#91fa871883485d06708800318404e72bfb26dcc5"
-
-adler-32@~1.2.0:
-  version "1.2.0"
-  resolved "https://registry.yarnpkg.com/adler-32/-/adler-32-1.2.0.tgz#6a3e6bf0a63900ba15652808cb15c6813d1a5f25"
-  dependencies:
-    exit-on-epipe "~1.0.1"
-    printj "~1.1.0"
-
-after@0.8.1:
-  version "0.8.1"
-  resolved "https://registry.yarnpkg.com/after/-/after-0.8.1.tgz#ab5d4fb883f596816d3515f8f791c0af486dd627"
-
-align-text@^0.1.1, align-text@^0.1.3:
-  version "0.1.4"
-  resolved "https://registry.yarnpkg.com/align-text/-/align-text-0.1.4.tgz#0cd90a561093f35d0a99256c22b7069433fad117"
-  dependencies:
-    kind-of "^3.0.2"
-    longest "^1.0.1"
-    repeat-string "^1.5.2"
-
-amdefine@>=0.0.4:
-  version "1.0.1"
-  resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5"
-
-ansi-regex@^2.0.0:
-  version "2.1.1"
-  resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df"
-
-ansi-regex@^3.0.0:
-  version "3.0.0"
-  resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998"
-
-any-promise@^1.0.0:
-  version "1.3.0"
-  resolved "https://registry.yarnpkg.com/any-promise/-/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f"
-
-anymatch@^1.3.0:
-  version "1.3.2"
-  resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-1.3.2.tgz#553dcb8f91e3c889845dfdba34c77721b90b9d7a"
-  dependencies:
-    micromatch "^2.1.5"
-    normalize-path "^2.0.0"
-
-aproba@^1.0.3:
-  version "1.2.0"
-  resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a"
-
-are-we-there-yet@~1.1.2:
-  version "1.1.5"
-  resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz#4b35c2944f062a8bfcda66410760350fe9ddfc21"
-  dependencies:
-    delegates "^1.0.0"
-    readable-stream "^2.0.6"
-
-arr-diff@^2.0.0:
-  version "2.0.0"
-  resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-2.0.0.tgz#8f3b827f955a8bd669697e4a4256ac3ceae356cf"
-  dependencies:
-    arr-flatten "^1.0.1"
-
-arr-flatten@^1.0.1:
-  version "1.1.0"
-  resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1"
-
-array-flatten@1.1.1:
-  version "1.1.1"
-  resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2"
-
-array-unique@^0.2.1:
-  version "0.2.1"
-  resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53"
-
-arraybuffer.slice@0.0.6:
-  version "0.0.6"
-  resolved "https://registry.yarnpkg.com/arraybuffer.slice/-/arraybuffer.slice-0.0.6.tgz#f33b2159f0532a3f3107a272c0ccfbd1ad2979ca"
-
-assert@^1.1.1:
-  version "1.4.1"
-  resolved "https://registry.yarnpkg.com/assert/-/assert-1.4.1.tgz#99912d591836b5a6f5b345c0f07eefc08fc65d91"
-  dependencies:
-    util "0.10.3"
-
-ast-types@0.9.6:
-  version "0.9.6"
-  resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.9.6.tgz#102c9e9e9005d3e7e3829bf0c4fa24ee862ee9b9"
-
-async-each@^1.0.0:
-  version "1.0.1"
-  resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d"
-
-async@^0.9.0, async@~0.9.0:
-  version "0.9.2"
-  resolved "https://registry.yarnpkg.com/async/-/async-0.9.2.tgz#aea74d5e61c1f899613bf64bda66d4c78f2fd17d"
-
-async@^1.3.0:
-  version "1.5.2"
-  resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a"
-
-async@~0.2.6:
-  version "0.2.10"
-  resolved "https://registry.yarnpkg.com/async/-/async-0.2.10.tgz#b6bbe0b0674b9d719708ca38de8c237cb526c3d1"
-
-balanced-match@^1.0.0:
-  version "1.0.0"
-  resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767"
-
-base62@^1.1.0:
-  version "1.2.8"
-  resolved "https://registry.yarnpkg.com/base62/-/base62-1.2.8.tgz#1264cb0fb848d875792877479dbe8bae6bae3428"
-
-base64-arraybuffer@0.1.2:
-  version "0.1.2"
-  resolved "https://registry.yarnpkg.com/base64-arraybuffer/-/base64-arraybuffer-0.1.2.tgz#474df4a9f2da24e05df3158c3b1db3c3cd46a154"
-
-base64-js@^1.0.2:
-  version "1.3.0"
-  resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.3.0.tgz#cab1e6118f051095e58b5281aea8c1cd22bfc0e3"
-
-base64-url@1:
-  version "1.3.3"
-  resolved "https://registry.yarnpkg.com/base64-url/-/base64-url-1.3.3.tgz#f8b6c537f09a4fc58c99cb86e0b0e9c61461a20f"
-
-base64-url@1.2.1:
-  version "1.2.1"
-  resolved "https://registry.yarnpkg.com/base64-url/-/base64-url-1.2.1.tgz#199fd661702a0e7b7dcae6e0698bb089c52f6d78"
-
-base64id@0.1.0:
-  version "0.1.0"
-  resolved "https://registry.yarnpkg.com/base64id/-/base64id-0.1.0.tgz#02ce0fdeee0cef4f40080e1e73e834f0b1bfce3f"
-
-basic-auth-connect@1.0.0:
-  version "1.0.0"
-  resolved "https://registry.yarnpkg.com/basic-auth-connect/-/basic-auth-connect-1.0.0.tgz#fdb0b43962ca7b40456a7c2bb48fe173da2d2122"
-
-basic-auth@1.0.0:
-  version "1.0.0"
-  resolved "https://registry.yarnpkg.com/basic-auth/-/basic-auth-1.0.0.tgz#111b2d9ff8e4e6d136b8c84ea5e096cb87351637"
-
-batch@0.5.1:
-  version "0.5.1"
-  resolved "https://registry.yarnpkg.com/batch/-/batch-0.5.1.tgz#36a4bab594c050fd7b507bca0db30c2d92af4ff2"
-
-batch@0.6.1:
-  version "0.6.1"
-  resolved "https://registry.yarnpkg.com/batch/-/batch-0.6.1.tgz#dc34314f4e679318093fc760272525f94bf25c16"
-
-better-assert@~1.0.0:
-  version "1.0.2"
-  resolved "https://registry.yarnpkg.com/better-assert/-/better-assert-1.0.2.tgz#40866b9e1b9e0b55b481894311e68faffaebc522"
-  dependencies:
-    callsite "1.0.0"
-
-big.js@^3.1.3:
-  version "3.2.0"
-  resolved "https://registry.yarnpkg.com/big.js/-/big.js-3.2.0.tgz#a5fc298b81b9e0dca2e458824784b65c52ba588e"
-
-binary-extensions@^1.0.0:
-  version "1.11.0"
-  resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.11.0.tgz#46aa1751fb6a2f93ee5e689bb1087d4b14c6c205"
-
-bindings@^1.3.0:
-  version "1.3.0"
-  resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.3.0.tgz#b346f6ecf6a95f5a815c5839fc7cdb22502f1ed7"
-
-blob@0.0.2:
-  version "0.0.2"
-  resolved "https://registry.yarnpkg.com/blob/-/blob-0.0.2.tgz#b89562bd6994af95ba1e812155536333aa23cf24"
-
-body-parser@1.18.2:
-  version "1.18.2"
-  resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.18.2.tgz#87678a19d84b47d859b83199bd59bce222b10454"
-  dependencies:
-    bytes "3.0.0"
-    content-type "~1.0.4"
-    debug "2.6.9"
-    depd "~1.1.1"
-    http-errors "~1.6.2"
-    iconv-lite "0.4.19"
-    on-finished "~2.3.0"
-    qs "6.5.1"
-    raw-body "2.3.2"
-    type-is "~1.6.15"
-
-body-parser@~1.6.7:
-  version "1.6.7"
-  resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.6.7.tgz#82306becadf44543e826b3907eae93f0237c4e5c"
-  dependencies:
-    bytes "1.0.0"
-    depd "0.4.4"
-    iconv-lite "0.4.4"
-    media-typer "0.2.0"
-    on-finished "2.1.0"
-    qs "2.2.2"
-    raw-body "1.3.0"
-    type-is "~1.3.2"
-
-brace-expansion@^1.1.7:
-  version "1.1.11"
-  resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd"
-  dependencies:
-    balanced-match "^1.0.0"
-    concat-map "0.0.1"
-
-braces@^1.8.2:
-  version "1.8.5"
-  resolved "https://registry.yarnpkg.com/braces/-/braces-1.8.5.tgz#ba77962e12dff969d6b76711e914b737857bf6a7"
-  dependencies:
-    expand-range "^1.8.1"
-    preserve "^0.2.0"
-    repeat-element "^1.1.2"
-
-browserify-aes@0.4.0:
-  version "0.4.0"
-  resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-0.4.0.tgz#067149b668df31c4b58533e02d01e806d8608e2c"
-  dependencies:
-    inherits "^2.0.1"
-
-browserify-zlib@^0.1.4:
-  version "0.1.4"
-  resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.1.4.tgz#bb35f8a519f600e0fa6b8485241c979d0141fb2d"
-  dependencies:
-    pako "~0.2.0"
-
-buffer-crc32@0.2.3:
-  version "0.2.3"
-  resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.3.tgz#bb54519e95d107cbd2400e76d0cab1467336d921"
-
-buffer-from@^1.0.0:
-  version "1.1.1"
-  resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef"
-
-buffer@^4.9.0:
-  version "4.9.1"
-  resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.1.tgz#6d1bb601b07a4efced97094132093027c95bc298"
-  dependencies:
-    base64-js "^1.0.2"
-    ieee754 "^1.1.4"
-    isarray "^1.0.0"
-
-builtin-status-codes@^3.0.0:
-  version "3.0.0"
-  resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8"
-
-bytes@1, bytes@1.0.0:
-  version "1.0.0"
-  resolved "https://registry.yarnpkg.com/bytes/-/bytes-1.0.0.tgz#3569ede8ba34315fab99c3e92cb04c7220de1fa8"
-
-bytes@3.0.0:
-  version "3.0.0"
-  resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048"
-
-callsite@1.0.0:
-  version "1.0.0"
-  resolved "https://registry.yarnpkg.com/callsite/-/callsite-1.0.0.tgz#280398e5d664bd74038b6f0905153e6e8af1bc20"
-
-camelcase@^1.0.2:
-  version "1.2.1"
-  resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-1.2.1.tgz#9bb5304d2e0b56698b2c758b08a3eaa9daa58a39"
-
-center-align@^0.1.1:
-  version "0.1.3"
-  resolved "https://registry.yarnpkg.com/center-align/-/center-align-0.1.3.tgz#aa0d32629b6ee972200411cbd4461c907bc2b7ad"
-  dependencies:
-    align-text "^0.1.3"
-    lazy-cache "^1.0.3"
-
-cfb@~1.0.8:
-  version "1.0.8"
-  resolved "https://registry.yarnpkg.com/cfb/-/cfb-1.0.8.tgz#77f213493d697d754fd9c0f5511eab5ad72d02cf"
-  dependencies:
-    commander "^2.14.1"
-    printj "~1.1.2"
-
-chokidar@^1.0.0:
-  version "1.7.0"
-  resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-1.7.0.tgz#798e689778151c8076b4b360e5edd28cda2bb468"
-  dependencies:
-    anymatch "^1.3.0"
-    async-each "^1.0.0"
-    glob-parent "^2.0.0"
-    inherits "^2.0.1"
-    is-binary-path "^1.0.0"
-    is-glob "^2.0.0"
-    path-is-absolute "^1.0.0"
-    readdirp "^2.0.0"
+"accepts@~1.0.4", "accepts@~1.0.7":
+  "integrity" "sha1-W1AftPBwQwmWTM2wSBclQSCNqxo="
+  "resolved" "https://registry.npmjs.org/accepts/-/accepts-1.0.7.tgz"
+  "version" "1.0.7"
+  dependencies:
+    "mime-types" "~1.0.0"
+    "negotiator" "0.4.7"
+
+"accepts@~1.3.4":
+  "integrity" "sha1-63d99gEXI6OxTopywIBcjoZ0a9I="
+  "resolved" "https://registry.npmjs.org/accepts/-/accepts-1.3.5.tgz"
+  "version" "1.3.5"
+  dependencies:
+    "mime-types" "~2.1.18"
+    "negotiator" "0.6.1"
+
+"accepts@~1.3.5":
+  "integrity" "sha1-63d99gEXI6OxTopywIBcjoZ0a9I="
+  "resolved" "https://registry.npmjs.org/accepts/-/accepts-1.3.5.tgz"
+  "version" "1.3.5"
+  dependencies:
+    "mime-types" "~2.1.18"
+    "negotiator" "0.6.1"
+
+"acorn@^3.0.0":
+  "integrity" "sha1-ReN/s56No/JbruP/U2niu18iAXo="
+  "resolved" "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz"
+  "version" "3.3.0"
+
+"acorn@^5.2.1":
+  "integrity" "sha512-1D++VG7BhrtvQpNbBzovKNc1FLGGEE/oGe7b9xJm/RFHMBeUaUGpluV9RLjZa47YFdPcDAenEYuq9pQPcMdLJg=="
+  "resolved" "https://registry.npmjs.org/acorn/-/acorn-5.7.4.tgz"
+  "version" "5.7.4"
+
+"adler-32@~1.0.0":
+  "integrity" "sha1-KHKKcXVvYpZm3RZTzYB5Op3xhlE="
+  "resolved" "https://registry.npmjs.org/adler-32/-/adler-32-1.0.0.tgz"
+  "version" "1.0.0"
+  dependencies:
+    "concat-stream" ""
+    "exit-on-epipe" ""
+    "printj" ""
+
+"adler-32@~1.2.0":
+  "integrity" "sha1-aj5r8KY5ALoVZSgIyxXGgT0aXyU="
+  "resolved" "https://registry.npmjs.org/adler-32/-/adler-32-1.2.0.tgz"
+  "version" "1.2.0"
+  dependencies:
+    "exit-on-epipe" "~1.0.1"
+    "printj" "~1.1.0"
+
+"after@0.8.1":
+  "integrity" "sha1-q11PuIP1loFtNRX495HAr0ht1ic="
+  "resolved" "https://registry.npmjs.org/after/-/after-0.8.1.tgz"
+  "version" "0.8.1"
+
+"align-text@^0.1.1", "align-text@^0.1.3":
+  "integrity" "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc="
+  "resolved" "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz"
+  "version" "0.1.4"
+  dependencies:
+    "kind-of" "^3.0.2"
+    "longest" "^1.0.1"
+    "repeat-string" "^1.5.2"
+
+"amdefine@>=0.0.4":
+  "integrity" "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU="
+  "resolved" "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz"
+  "version" "1.0.1"
+
+"ansi-regex@^2.0.0":
+  "integrity" "sha1-w7M6te42DYbg5ijwRorn7yfWVN8="
+  "resolved" "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz"
+  "version" "2.1.1"
+
+"any-promise@^1.0.0":
+  "integrity" "sha1-q8av7tzqUugJzcA3au0845Y10X8="
+  "resolved" "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz"
+  "version" "1.3.0"
+
+"anymatch@^1.3.0":
+  "integrity" "sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA=="
+  "resolved" "https://registry.npmjs.org/anymatch/-/anymatch-1.3.2.tgz"
+  "version" "1.3.2"
+  dependencies:
+    "micromatch" "^2.1.5"
+    "normalize-path" "^2.0.0"
+
+"arr-diff@^2.0.0":
+  "integrity" "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8="
+  "resolved" "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz"
+  "version" "2.0.0"
+  dependencies:
+    "arr-flatten" "^1.0.1"
+
+"arr-flatten@^1.0.1":
+  "integrity" "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg=="
+  "resolved" "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz"
+  "version" "1.1.0"
+
+"array-flatten@1.1.1":
+  "integrity" "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI="
+  "resolved" "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz"
+  "version" "1.1.1"
+
+"array-unique@^0.2.1":
+  "integrity" "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM="
+  "resolved" "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz"
+  "version" "0.2.1"
+
+"arraybuffer.slice@0.0.6":
+  "integrity" "sha1-8zshWfBTKj8xB6JywMz70a0peco="
+  "resolved" "https://registry.npmjs.org/arraybuffer.slice/-/arraybuffer.slice-0.0.6.tgz"
+  "version" "0.0.6"
+
+"assert@^1.1.1":
+  "integrity" "sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE="
+  "resolved" "https://registry.npmjs.org/assert/-/assert-1.4.1.tgz"
+  "version" "1.4.1"
+  dependencies:
+    "util" "0.10.3"
+
+"ast-types@0.9.6":
+  "integrity" "sha1-ECyenpAF0+fjgpvwxPok7oYu6bk="
+  "resolved" "https://registry.npmjs.org/ast-types/-/ast-types-0.9.6.tgz"
+  "version" "0.9.6"
+
+"async-each@^1.0.0":
+  "integrity" "sha1-GdOGodntxufByF04iu28xW0zYC0="
+  "resolved" "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz"
+  "version" "1.0.1"
+
+"async@^0.9.0":
+  "integrity" "sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0="
+  "resolved" "https://registry.npmjs.org/async/-/async-0.9.2.tgz"
+  "version" "0.9.2"
+
+"async@^1.3.0":
+  "integrity" "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo="
+  "resolved" "https://registry.npmjs.org/async/-/async-1.5.2.tgz"
+  "version" "1.5.2"
+
+"async@~0.2.6":
+  "integrity" "sha1-trvgsGdLnXGXCMo43owjfLUmw9E="
+  "resolved" "https://registry.npmjs.org/async/-/async-0.2.10.tgz"
+  "version" "0.2.10"
+
+"async@~0.9.0":
+  "integrity" "sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0="
+  "resolved" "https://registry.npmjs.org/async/-/async-0.9.2.tgz"
+  "version" "0.9.2"
+
+"babyparse@0.2.1":
+  "integrity" "sha1-Bp8DXfP9zm86RV3V2vx1F43PN2A="
+  "resolved" "https://registry.npmjs.org/babyparse/-/babyparse-0.2.1.tgz"
+  "version" "0.2.1"
+
+"balanced-match@^1.0.0":
+  "integrity" "sha1-ibTRmasr7kneFk6gK4nORi1xt2c="
+  "resolved" "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz"
+  "version" "1.0.0"
+
+"base62@^1.1.0":
+  "integrity" "sha512-V6YHUbjLxN1ymqNLb1DPHoU1CpfdL7d2YTIp5W3U4hhoG4hhxNmsFDs66M9EXxBiSEke5Bt5dwdfMwwZF70iLA=="
+  "resolved" "https://registry.npmjs.org/base62/-/base62-1.2.8.tgz"
+  "version" "1.2.8"
+
+"base64-arraybuffer@0.1.2":
+  "integrity" "sha1-R030qfLaJOBd8xWMOx2zw81GoVQ="
+  "resolved" "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.2.tgz"
+  "version" "0.1.2"
+
+"base64-js@^1.0.2":
+  "integrity" "sha512-ccav/yGvoa80BQDljCxsmmQ3Xvx60/UpBIij5QN21W3wBi/hhIC9OoO+KLpu9IJTS9j4DRVJ3aDDF9cMSoa2lw=="
+  "resolved" "https://registry.npmjs.org/base64-js/-/base64-js-1.3.0.tgz"
+  "version" "1.3.0"
+
+"base64-url@1", "base64-url@1.2.1":
+  "integrity" "sha1-GZ/WYXAqDnt9yubgaYuwicUvbXg="
+  "resolved" "https://registry.npmjs.org/base64-url/-/base64-url-1.2.1.tgz"
+  "version" "1.2.1"
+
+"base64id@0.1.0":
+  "integrity" "sha1-As4P3u4M709ACA4ec+g08LG/zj8="
+  "resolved" "https://registry.npmjs.org/base64id/-/base64id-0.1.0.tgz"
+  "version" "0.1.0"
+
+"basic-auth-connect@1.0.0":
+  "integrity" "sha1-/bC0OWLKe0BFanwrtI/hc9otISI="
+  "resolved" "https://registry.npmjs.org/basic-auth-connect/-/basic-auth-connect-1.0.0.tgz"
+  "version" "1.0.0"
+
+"basic-auth@1.0.0":
+  "integrity" "sha1-ERstn/jk5tE2uMhOpeCWy4c1Fjc="
+  "resolved" "https://registry.npmjs.org/basic-auth/-/basic-auth-1.0.0.tgz"
+  "version" "1.0.0"
+
+"batch@0.5.1":
+  "integrity" "sha1-NqS6tZTAUP17UHvKDbMMLZKvT/I="
+  "resolved" "https://registry.npmjs.org/batch/-/batch-0.5.1.tgz"
+  "version" "0.5.1"
+
+"batch@0.6.1":
+  "integrity" "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY="
+  "resolved" "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz"
+  "version" "0.6.1"
+
+"better-assert@~1.0.0":
+  "integrity" "sha1-QIZrnhueC1W0gYlDEeaPr/rrxSI="
+  "resolved" "https://registry.npmjs.org/better-assert/-/better-assert-1.0.2.tgz"
+  "version" "1.0.2"
+  dependencies:
+    "callsite" "1.0.0"
+
+"big.js@^3.1.3":
+  "integrity" "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q=="
+  "resolved" "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz"
+  "version" "3.2.0"
+
+"big.js@^5.2.2":
+  "integrity" "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ=="
+  "resolved" "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz"
+  "version" "5.2.2"
+
+"binary-extensions@^1.0.0":
+  "integrity" "sha1-RqoXUftqL5PuXmibsQh9SxTGwgU="
+  "resolved" "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.11.0.tgz"
+  "version" "1.11.0"
+
+"blob@0.0.2":
+  "integrity" "sha1-uJVivWmUr5W6HoEhVVNjM6ojzyQ="
+  "resolved" "https://registry.npmjs.org/blob/-/blob-0.0.2.tgz"
+  "version" "0.0.2"
+
+"body-parser@~1.6.7":
+  "integrity" "sha1-gjBr7K30RUPoJrOQfq6T8CN8Tlw="
+  "resolved" "https://registry.npmjs.org/body-parser/-/body-parser-1.6.7.tgz"
+  "version" "1.6.7"
+  dependencies:
+    "bytes" "1.0.0"
+    "depd" "0.4.4"
+    "iconv-lite" "0.4.4"
+    "media-typer" "0.2.0"
+    "on-finished" "2.1.0"
+    "qs" "2.2.2"
+    "raw-body" "1.3.0"
+    "type-is" "~1.3.2"
+
+"body-parser@1.18.2":
+  "integrity" "sha1-h2eKGdhLR9hZuDGZvVm84iKxBFQ="
+  "resolved" "https://registry.npmjs.org/body-parser/-/body-parser-1.18.2.tgz"
+  "version" "1.18.2"
+  dependencies:
+    "bytes" "3.0.0"
+    "content-type" "~1.0.4"
+    "debug" "2.6.9"
+    "depd" "~1.1.1"
+    "http-errors" "~1.6.2"
+    "iconv-lite" "0.4.19"
+    "on-finished" "~2.3.0"
+    "qs" "6.5.1"
+    "raw-body" "2.3.2"
+    "type-is" "~1.6.15"
+
+"brace-expansion@^1.1.7":
+  "integrity" "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA=="
+  "resolved" "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz"
+  "version" "1.1.11"
+  dependencies:
+    "balanced-match" "^1.0.0"
+    "concat-map" "0.0.1"
+
+"braces@^1.8.2":
+  "integrity" "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc="
+  "resolved" "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz"
+  "version" "1.8.5"
+  dependencies:
+    "expand-range" "^1.8.1"
+    "preserve" "^0.2.0"
+    "repeat-element" "^1.1.2"
+
+"browserify-aes@0.4.0":
+  "integrity" "sha1-BnFJtmjfMcS1hTPgLQHoBthgjiw="
+  "resolved" "https://registry.npmjs.org/browserify-aes/-/browserify-aes-0.4.0.tgz"
+  "version" "0.4.0"
+  dependencies:
+    "inherits" "^2.0.1"
+
+"browserify-zlib@^0.1.4":
+  "integrity" "sha1-uzX4pRn2AOD6a4SFJByXnQFB+y0="
+  "resolved" "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.1.4.tgz"
+  "version" "0.1.4"
+  dependencies:
+    "pako" "~0.2.0"
+
+"buffer-crc32@0.2.3":
+  "integrity" "sha1-u1RRnpXRB8vSQA520MqxRnM22SE="
+  "resolved" "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.3.tgz"
+  "version" "0.2.3"
+
+"buffer-from@^1.0.0":
+  "integrity" "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A=="
+  "resolved" "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz"
+  "version" "1.1.1"
+
+"buffer@^4.9.0":
+  "integrity" "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg="
+  "resolved" "https://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz"
+  "version" "4.9.1"
+  dependencies:
+    "base64-js" "^1.0.2"
+    "ieee754" "^1.1.4"
+    "isarray" "^1.0.0"
+
+"builtin-status-codes@^3.0.0":
+  "integrity" "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug="
+  "resolved" "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz"
+  "version" "3.0.0"
+
+"bytes@1", "bytes@1.0.0":
+  "integrity" "sha1-NWnt6Lo0MV+rmcPpLLBMciDeH6g="
+  "resolved" "https://registry.npmjs.org/bytes/-/bytes-1.0.0.tgz"
+  "version" "1.0.0"
+
+"bytes@3.0.0":
+  "integrity" "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg="
+  "resolved" "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz"
+  "version" "3.0.0"
+
+"callsite@1.0.0":
+  "integrity" "sha1-KAOY5dZkvXQDi28JBRU+borxvCA="
+  "resolved" "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz"
+  "version" "1.0.0"
+
+"camelcase@^1.0.2":
+  "integrity" "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk="
+  "resolved" "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz"
+  "version" "1.2.1"
+
+"center-align@^0.1.1":
+  "integrity" "sha1-qg0yYptu6XIgBBHL1EYckHvCt60="
+  "resolved" "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz"
+  "version" "0.1.3"
+  dependencies:
+    "align-text" "^0.1.3"
+    "lazy-cache" "^1.0.3"
+
+"cfb@^1.1.2":
+  "integrity" "sha512-joXBW0nMuwV9no7UTMiyVJnQL6XIU3ThXVjFUDHgl9MpILPOomyfaGqC290VELZ48bbQKZXnQ81UT5HouTxHsw=="
+  "resolved" "https://registry.npmjs.org/cfb/-/cfb-1.1.3.tgz"
+  "version" "1.1.3"
+  dependencies:
+    "adler-32" "~1.2.0"
+    "commander" "^2.16.0"
+    "crc-32" "~1.2.0"
+    "printj" "~1.1.2"
+
+"cfb@~0.11.0", "cfb@~0.11.1":
+  "integrity" "sha1-qW248nKmw/uZ27sj70EiP0i+Hqc="
+  "resolved" "https://registry.npmjs.org/cfb/-/cfb-0.11.1.tgz"
+  "version" "0.11.1"
+  dependencies:
+    "commander" ""
+
+"chokidar@^1.0.0":
+  "integrity" "sha1-eY5ol3gVHIB2tLNg5e3SjNortGg="
+  "resolved" "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz"
+  "version" "1.7.0"
+  dependencies:
+    "anymatch" "^1.3.0"
+    "async-each" "^1.0.0"
+    "glob-parent" "^2.0.0"
+    "inherits" "^2.0.1"
+    "is-binary-path" "^1.0.0"
+    "is-glob" "^2.0.0"
+    "path-is-absolute" "^1.0.0"
+    "readdirp" "^2.0.0"
   optionalDependencies:
-    fsevents "^1.0.0"
-
-chownr@^1.0.1:
-  version "1.0.1"
-  resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.0.1.tgz#e2a75042a9551908bebd25b8523d5f9769d79181"
-
-cliui@^2.1.0:
-  version "2.1.0"
-  resolved "https://registry.yarnpkg.com/cliui/-/cliui-2.1.0.tgz#4b475760ff80264c762c3a1719032e91c7fea0d1"
-  dependencies:
-    center-align "^0.1.1"
-    right-align "^0.1.1"
-    wordwrap "0.0.2"
-
-clone@^1.0.2:
-  version "1.0.4"
-  resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e"
-
-code-point-at@^1.0.0:
-  version "1.1.0"
-  resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77"
-
-codepage@~1.14.0:
-  version "1.14.0"
-  resolved "https://registry.yarnpkg.com/codepage/-/codepage-1.14.0.tgz#8cbe25481323559d7d307571b0fff91e7a1d2f99"
-  dependencies:
-    commander "~2.14.1"
-    exit-on-epipe "~1.0.1"
-
-coffee-css@0.0.5:
-  version "0.0.5"
-  resolved "https://registry.yarnpkg.com/coffee-css/-/coffee-css-0.0.5.tgz#589a822fba5ae0d4f1a0424b22ba7501683275a4"
-  dependencies:
-    coffee-script ">=1.0.0"
-    underscore ">=1.1.6"
-
-coffee-script@>=1.0.0, "coffee-script@>=1.3 <2":
-  version "1.12.7"
-  resolved "https://registry.yarnpkg.com/coffee-script/-/coffee-script-1.12.7.tgz#c05dae0cb79591d05b3070a8433a98c9a89ccc53"
-
-coffeecup@0.3.21:
-  version "0.3.21"
-  resolved "https://registry.yarnpkg.com/coffeecup/-/coffeecup-0.3.21.tgz#54e714175cb223ddd10568517196e0cd566d198a"
-  dependencies:
-    coffee-script ">=1.3 <2"
-    optparse "1.0.3"
-    stylus "0.27.2"
-    uglify-js "1.2.6"
-
-combined-stream@~0.0.4:
-  version "0.0.7"
-  resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-0.0.7.tgz#0137e657baa5a7541c57ac37ac5fc07d73b4dc1f"
-  dependencies:
-    delayed-stream "0.0.5"
-
-commander@, commander@^2.14.1, commander@^2.5.0:
-  version "2.17.1"
-  resolved "https://registry.yarnpkg.com/commander/-/commander-2.17.1.tgz#bd77ab7de6de94205ceacc72f1716d29f20a77bf"
-
-commander@1.3.2:
-  version "1.3.2"
-  resolved "https://registry.yarnpkg.com/commander/-/commander-1.3.2.tgz#8a8f30ec670a6fdd64af52f1914b907d79ead5b5"
-  dependencies:
-    keypress "0.1.x"
-
-commander@~0.6.1:
-  version "0.6.1"
-  resolved "https://registry.yarnpkg.com/commander/-/commander-0.6.1.tgz#fa68a14f6a945d54dbbe50d8cdb3320e9e3b1a06"
-
-commander@~2.14.1:
-  version "2.14.1"
-  resolved "https://registry.yarnpkg.com/commander/-/commander-2.14.1.tgz#2235123e37af8ca3c65df45b026dbd357b01b9aa"
-
-commander@~2.15.1:
-  version "2.15.1"
-  resolved "https://registry.yarnpkg.com/commander/-/commander-2.15.1.tgz#df46e867d0fc2aec66a34662b406a9ccafff5b0f"
-
-commoner@^0.10.1:
-  version "0.10.8"
-  resolved "https://registry.yarnpkg.com/commoner/-/commoner-0.10.8.tgz#34fc3672cd24393e8bb47e70caa0293811f4f2c5"
-  dependencies:
-    commander "^2.5.0"
-    detective "^4.3.1"
-    glob "^5.0.15"
-    graceful-fs "^4.1.2"
-    iconv-lite "^0.4.5"
-    mkdirp "^0.5.0"
-    private "^0.1.6"
-    q "^1.1.2"
-    recast "^0.11.17"
-
-component-bind@1.0.0:
-  version "1.0.0"
-  resolved "https://registry.yarnpkg.com/component-bind/-/component-bind-1.0.0.tgz#00c608ab7dcd93897c0009651b1d3a8e1e73bbd1"
-
-component-emitter@1.1.2:
-  version "1.1.2"
-  resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.1.2.tgz#296594f2753daa63996d2af08d15a95116c9aec3"
-
-component-inherit@0.0.3:
-  version "0.0.3"
-  resolved "https://registry.yarnpkg.com/component-inherit/-/component-inherit-0.0.3.tgz#645fc4adf58b72b649d5cae65135619db26ff143"
-
-compressible@~1.1.1:
-  version "1.1.1"
-  resolved "https://registry.yarnpkg.com/compressible/-/compressible-1.1.1.tgz#23b71ea90ea6c6a66289701a918182c24d0729ef"
-
-compressible@~2.0.14:
-  version "2.0.14"
-  resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.14.tgz#326c5f507fbb055f54116782b969a81b67a29da7"
-  dependencies:
-    mime-db ">= 1.34.0 < 2"
-
-compression@^1.5.2:
-  version "1.7.3"
-  resolved "https://registry.yarnpkg.com/compression/-/compression-1.7.3.tgz#27e0e176aaf260f7f2c2813c3e440adb9f1993db"
-  dependencies:
-    accepts "~1.3.5"
-    bytes "3.0.0"
-    compressible "~2.0.14"
-    debug "2.6.9"
-    on-headers "~1.0.1"
-    safe-buffer "5.1.2"
-    vary "~1.1.2"
-
-compression@~1.0.11:
-  version "1.0.11"
-  resolved "https://registry.yarnpkg.com/compression/-/compression-1.0.11.tgz#69700cf1ee8963454356ac192a6e5e91e232bffb"
-  dependencies:
-    accepts "~1.0.7"
-    bytes "1.0.0"
-    compressible "~1.1.1"
-    debug "1.0.4"
-    on-headers "~1.0.0"
-    vary "~1.0.0"
-
-concat-map@0.0.1:
-  version "0.0.1"
-  resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
-
-concat-stream@:
-  version "1.6.2"
-  resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34"
-  dependencies:
-    buffer-from "^1.0.0"
-    inherits "^2.0.3"
-    readable-stream "^2.2.2"
-    typedarray "^0.0.6"
-
-connect-history-api-fallback@^1.3.0:
-  version "1.5.0"
-  resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-1.5.0.tgz#b06873934bc5e344fef611a196a6faae0aee015a"
-
-connect-timeout@~1.2.2:
-  version "1.2.2"
-  resolved "https://registry.yarnpkg.com/connect-timeout/-/connect-timeout-1.2.2.tgz#5953602bb66abfd5fa21ae911a7221c5e825a1c0"
-  dependencies:
-    debug "1.0.4"
-    ms "0.6.2"
-    on-headers "~1.0.0"
-
-connect@2.25.9:
-  version "2.25.9"
-  resolved "https://registry.yarnpkg.com/connect/-/connect-2.25.9.tgz#9680d6f2fb200eadab3d272e419e78e5d87cf31f"
-  dependencies:
-    basic-auth-connect "1.0.0"
-    body-parser "~1.6.7"
-    bytes "1.0.0"
-    compression "~1.0.11"
-    connect-timeout "~1.2.2"
-    cookie "0.1.2"
-    cookie-parser "1.3.2"
-    cookie-signature "1.0.4"
-    csurf "~1.4.1"
-    debug "1.0.4"
-    depd "0.4.4"
-    errorhandler "1.1.1"
-    express-session "~1.7.6"
-    finalhandler "0.1.0"
-    fresh "0.2.2"
-    media-typer "0.2.0"
-    method-override "~2.1.3"
-    morgan "~1.2.3"
-    multiparty "3.3.2"
-    on-headers "~1.0.0"
-    parseurl "~1.3.0"
-    pause "0.0.1"
-    qs "2.2.2"
-    response-time "~2.0.1"
-    serve-favicon "2.0.1"
-    serve-index "~1.1.6"
-    serve-static "~1.5.3"
-    type-is "~1.3.2"
-    vhost "2.0.0"
-
-console-browserify@^1.1.0:
-  version "1.1.0"
-  resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.1.0.tgz#f0241c45730a9fc6323b206dbf38edc741d0bb10"
-  dependencies:
-    date-now "^0.1.4"
-
-console-control-strings@^1.0.0, console-control-strings@~1.1.0:
-  version "1.1.0"
-  resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e"
-
-constants-browserify@^1.0.0:
-  version "1.0.0"
-  resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75"
-
-content-disposition@0.5.2:
-  version "0.5.2"
-  resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.2.tgz#0cf68bb9ddf5f2be7961c3a85178cb85dba78cb4"
-
-content-type@~1.0.4:
-  version "1.0.4"
-  resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b"
-
-cookie-parser@1.3.2:
-  version "1.3.2"
-  resolved "https://registry.yarnpkg.com/cookie-parser/-/cookie-parser-1.3.2.tgz#52211cc82c955d79ff0c088954407724e19cf562"
-  dependencies:
-    cookie "0.1.2"
-    cookie-signature "1.0.4"
-
-cookie-signature@1.0.4:
-  version "1.0.4"
-  resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.4.tgz#0edd22286e3a111b9a2a70db363e925e867f6aca"
-
-cookie-signature@1.0.6:
-  version "1.0.6"
-  resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c"
-
-cookie@0.1.2:
-  version "0.1.2"
-  resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.1.2.tgz#72fec3d24e48a3432073d90c12642005061004b1"
-
-cookie@0.3.1:
-  version "0.3.1"
-  resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.3.1.tgz#e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb"
-
-cookiejar@2.0.1:
-  version "2.0.1"
-  resolved "https://registry.yarnpkg.com/cookiejar/-/cookiejar-2.0.1.tgz#3d12752f6adf68a892f332433492bd5812bb668f"
-
-copy-utils@^1.0.0:
-  version "1.0.0"
-  resolved "https://registry.yarnpkg.com/copy-utils/-/copy-utils-1.0.0.tgz#bdad0b9545799d787d5d0c4c0b082a2a94e369f7"
-
-core-util-is@~1.0.0:
-  version "1.0.2"
-  resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7"
-
-cors@*:
-  version "2.8.4"
-  resolved "https://registry.yarnpkg.com/cors/-/cors-2.8.4.tgz#2bd381f2eb201020105cd50ea59da63090694686"
-  dependencies:
-    object-assign "^4"
-    vary "^1"
-
-crc-32@~1.2.0:
-  version "1.2.0"
-  resolved "https://registry.yarnpkg.com/crc-32/-/crc-32-1.2.0.tgz#cb2db6e29b88508e32d9dd0ec1693e7b41a18208"
-  dependencies:
-    exit-on-epipe "~1.0.1"
-    printj "~1.1.0"
-
-crypto-browserify@3.3.0:
-  version "3.3.0"
-  resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.3.0.tgz#b9fc75bb4a0ed61dcf1cd5dae96eb30c9c3e506c"
-  dependencies:
-    browserify-aes "0.4.0"
-    pbkdf2-compat "2.0.1"
-    ripemd160 "0.2.0"
-    sha.js "2.2.6"
-
-csrf@~2.0.1:
-  version "2.0.7"
-  resolved "https://registry.yarnpkg.com/csrf/-/csrf-2.0.7.tgz#d04f52e0f6a28a7e2cfe1e01dd5ebc251b3d4201"
-  dependencies:
-    base64-url "1.2.1"
-    rndm "~1.1.0"
-    scmp "1.0.0"
-    uid-safe "~1.1.0"
-
-css-loader@^0.9.0:
-  version "0.9.1"
-  resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-0.9.1.tgz#2e1aa00ce7e30ef2c6a7a4b300a080a7c979e0dc"
-  dependencies:
-    csso "1.3.x"
-    loader-utils "~0.2.2"
-    source-map "~0.1.38"
-
-css-parse@1.7.x:
-  version "1.7.0"
-  resolved "https://registry.yarnpkg.com/css-parse/-/css-parse-1.7.0.tgz#321f6cf73782a6ff751111390fc05e2c657d8c9b"
-
-csso@1.3.x:
-  version "1.3.12"
-  resolved "https://registry.yarnpkg.com/csso/-/csso-1.3.12.tgz#fc628694a2d38938aaac4996753218fd311cdb9e"
-
-cssom@0.2.x:
-  version "0.2.5"
-  resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.2.5.tgz#2682709b5902e7212df529116ff788cd5b254894"
-
-csurf@~1.4.1:
-  version "1.4.1"
-  resolved "https://registry.yarnpkg.com/csurf/-/csurf-1.4.1.tgz#0ccaf026992b2d218771d6174f5c6c402a6289fd"
-  dependencies:
-    cookie "0.1.2"
-    cookie-signature "1.0.4"
-    csrf "~2.0.1"
-
-csv-parse@^0.0.6:
-  version "0.0.6"
-  resolved "https://registry.yarnpkg.com/csv-parse/-/csv-parse-0.0.6.tgz#94610722650feac81cf549c2c9298632d2b6037c"
-
-date-now@^0.1.4:
-  version "0.1.4"
-  resolved "https://registry.yarnpkg.com/date-now/-/date-now-0.1.4.tgz#eaf439fd4d4848ad74e5cc7dbef200672b9e345b"
-
-debug@*, debug@^3.1.0:
-  version "3.1.0"
-  resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261"
-  dependencies:
-    ms "2.0.0"
-
-debug@0.6.0:
-  version "0.6.0"
-  resolved "https://registry.yarnpkg.com/debug/-/debug-0.6.0.tgz#ce9d5d025d5294b3f0748a494bebaf3c9fd8734f"
-
-debug@0.7.4:
-  version "0.7.4"
-  resolved "https://registry.yarnpkg.com/debug/-/debug-0.7.4.tgz#06e1ea8082c2cb14e39806e22e2f6f757f92af39"
-
-debug@1.0.4:
-  version "1.0.4"
-  resolved "https://registry.yarnpkg.com/debug/-/debug-1.0.4.tgz#5b9c256bd54b6ec02283176fa8a0ede6d154cbf8"
-  dependencies:
-    ms "0.6.2"
-
-debug@2, debug@2.6.9, debug@^2.1.2, debug@^2.6.6:
-  version "2.6.9"
-  resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f"
-  dependencies:
-    ms "2.0.0"
-
-decamelize@^1.0.0:
-  version "1.2.0"
-  resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290"
-
-deep-extend@^0.6.0:
-  version "0.6.0"
-  resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac"
-
-deep-is@~0.1.3:
-  version "0.1.3"
-  resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34"
-
-defined@^1.0.0:
-  version "1.0.0"
-  resolved "https://registry.yarnpkg.com/defined/-/defined-1.0.0.tgz#c98d9bcef75674188e110969151199e39b1fa693"
-
-delayed-stream@0.0.5:
-  version "0.0.5"
-  resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-0.0.5.tgz#d4b1f43a93e8296dfe02694f4680bc37a313c73f"
-
-delegates@^1.0.0:
-  version "1.0.0"
-  resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a"
-
-depd@0.4.4:
-  version "0.4.4"
-  resolved "https://registry.yarnpkg.com/depd/-/depd-0.4.4.tgz#07091fae75f97828d89b4a02a2d4778f0e7c0662"
-
-depd@1.1.1:
-  version "1.1.1"
-  resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.1.tgz#5783b4e1c459f06fa5ca27f991f3d06e7a310359"
-
-depd@~1.1.1, depd@~1.1.2:
-  version "1.1.2"
-  resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9"
-
-destroy@1.0.3:
-  version "1.0.3"
-  resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.3.tgz#b433b4724e71fd8551d9885174851c5fc377e2c9"
-
-destroy@~1.0.4:
-  version "1.0.4"
-  resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80"
-
-detect-libc@^1.0.2:
-  version "1.0.3"
-  resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b"
-
-detective@^4.3.1:
-  version "4.7.1"
-  resolved "https://registry.yarnpkg.com/detective/-/detective-4.7.1.tgz#0eca7314338442febb6d65da54c10bb1c82b246e"
-  dependencies:
-    acorn "^5.2.1"
-    defined "^1.0.0"
-
-domain-browser@^1.1.1:
-  version "1.2.0"
-  resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda"
-
-ee-first@1.0.5:
-  version "1.0.5"
-  resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.0.5.tgz#8c9b212898d8cd9f1a9436650ce7be202c9e9ff0"
-
-ee-first@1.1.1:
-  version "1.1.1"
-  resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d"
+    "fsevents" "^1.0.0"
+
+"cliui@^2.1.0":
+  "integrity" "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE="
+  "resolved" "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz"
+  "version" "2.1.0"
+  dependencies:
+    "center-align" "^0.1.1"
+    "right-align" "^0.1.1"
+    "wordwrap" "0.0.2"
+
+"clone@^1.0.2":
+  "integrity" "sha1-2jCcwmPfFZlMaIypAheco8fNfH4="
+  "resolved" "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz"
+  "version" "1.0.4"
+
+"codepage@":
+  "integrity" "sha1-jL4lSBMjVZ19MHVxsP/5HnodL5k="
+  "resolved" "https://registry.npmjs.org/codepage/-/codepage-1.14.0.tgz"
+  "version" "1.14.0"
+  dependencies:
+    "commander" "~2.14.1"
+    "exit-on-epipe" "~1.0.1"
+
+"codepage@~1.14.0":
+  "integrity" "sha1-jL4lSBMjVZ19MHVxsP/5HnodL5k="
+  "resolved" "https://registry.npmjs.org/codepage/-/codepage-1.14.0.tgz"
+  "version" "1.14.0"
+  dependencies:
+    "commander" "~2.14.1"
+    "exit-on-epipe" "~1.0.1"
+
+"codepage@~1.8.0":
+  "integrity" "sha1-8aAJ1SYdwnVGKLrLb7vw5uKr/6o="
+  "resolved" "https://registry.npmjs.org/codepage/-/codepage-1.8.1.tgz"
+  "version" "1.8.1"
+  dependencies:
+    "commander" ""
+    "concat-stream" ""
+    "exit-on-epipe" ""
+    "voc" ""
+
+"coffee-css@0.0.5":
+  "integrity" "sha1-WJqCL7pa4NTxoEJLIrp1AWgydaQ="
+  "resolved" "https://registry.npmjs.org/coffee-css/-/coffee-css-0.0.5.tgz"
+  "version" "0.0.5"
+  dependencies:
+    "coffee-script" ">=1.0.0"
+    "underscore" ">=1.1.6"
+
+"coffee-script@>=1.0.0", "coffee-script@>=1.3 <2":
+  "integrity" "sha512-fLeEhqwymYat/MpTPUjSKHVYYl0ec2mOyALEMLmzr5i1isuG+6jfI2j2d5oBO3VIzgUXgBVIcOT9uH1TFxBckw=="
+  "resolved" "https://registry.npmjs.org/coffee-script/-/coffee-script-1.12.7.tgz"
+  "version" "1.12.7"
+
+"coffeecup@0.3.21":
+  "integrity" "sha1-VOcUF1yyI93RBWhRcZbgzVZtGYo="
+  "resolved" "https://registry.npmjs.org/coffeecup/-/coffeecup-0.3.21.tgz"
+  "version" "0.3.21"
+  dependencies:
+    "coffee-script" ">=1.3 <2"
+    "optparse" "1.0.3"
+    "stylus" "0.27.2"
+    "uglify-js" "1.2.6"
+
+"colors@0.6.2":
+  "integrity" "sha1-JCP+ZnisDF2uiFLl0OW+CMmXq8w="
+  "resolved" "https://registry.npmjs.org/colors/-/colors-0.6.2.tgz"
+  "version" "0.6.2"
+
+"combined-stream@~0.0.4":
+  "integrity" "sha1-ATfmV7qlp1QcV6w3rF/AfXO03B8="
+  "resolved" "https://registry.npmjs.org/combined-stream/-/combined-stream-0.0.7.tgz"
+  "version" "0.0.7"
+  dependencies:
+    "delayed-stream" "0.0.5"
+
+"commander@":
+  "integrity" "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA=="
+  "resolved" "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz"
+  "version" "6.2.1"
+
+"commander@^2.16.0", "commander@^2.5.0", "commander@~2.17.1":
+  "integrity" "sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg=="
+  "resolved" "https://registry.npmjs.org/commander/-/commander-2.17.1.tgz"
+  "version" "2.17.1"
+
+"commander@~0.6.1":
+  "integrity" "sha1-+mihT2qUXVTbvlDYzbMyDp47GgY="
+  "resolved" "https://registry.npmjs.org/commander/-/commander-0.6.1.tgz"
+  "version" "0.6.1"
+
+"commander@~2.14.1":
+  "integrity" "sha512-+YR16o3rK53SmWHU3rEM3tPAh2rwb1yPcQX5irVn7mb0gXbwuCCrnkbV5+PBfETdfg1vui07nM6PCG1zndcjQw=="
+  "resolved" "https://registry.npmjs.org/commander/-/commander-2.14.1.tgz"
+  "version" "2.14.1"
+
+"commander@~2.9.0":
+  "integrity" "sha1-nJkJQXbhIkDLItbFFGCYQA/g99Q="
+  "resolved" "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz"
+  "version" "2.9.0"
+  dependencies:
+    "graceful-readlink" ">= 1.0.0"
+
+"commander@1.3.2":
+  "integrity" "sha1-io8w7GcKb91kr1LxkUuQfXnq1bU="
+  "resolved" "https://registry.npmjs.org/commander/-/commander-1.3.2.tgz"
+  "version" "1.3.2"
+  dependencies:
+    "keypress" "0.1.x"
+
+"commoner@^0.10.1":
+  "integrity" "sha1-NPw2cs0kOT6LtH5wyqApOBH08sU="
+  "resolved" "https://registry.npmjs.org/commoner/-/commoner-0.10.8.tgz"
+  "version" "0.10.8"
+  dependencies:
+    "commander" "^2.5.0"
+    "detective" "^4.3.1"
+    "glob" "^5.0.15"
+    "graceful-fs" "^4.1.2"
+    "iconv-lite" "^0.4.5"
+    "mkdirp" "^0.5.0"
+    "private" "^0.1.6"
+    "q" "^1.1.2"
+    "recast" "^0.11.17"
+
+"component-bind@1.0.0":
+  "integrity" "sha1-AMYIq33Nk4l8AAllGx06jh5zu9E="
+  "resolved" "https://registry.npmjs.org/component-bind/-/component-bind-1.0.0.tgz"
+  "version" "1.0.0"
+
+"component-emitter@1.1.2":
+  "integrity" "sha1-KWWU8nU9qmOZbSrwjRWpURbJrsM="
+  "resolved" "https://registry.npmjs.org/component-emitter/-/component-emitter-1.1.2.tgz"
+  "version" "1.1.2"
+
+"component-inherit@0.0.3":
+  "integrity" "sha1-ZF/ErfWLcrZJ1crmUTVhnbJv8UM="
+  "resolved" "https://registry.npmjs.org/component-inherit/-/component-inherit-0.0.3.tgz"
+  "version" "0.0.3"
+
+"compressible@~1.1.1":
+  "integrity" "sha1-I7ceqQ6mxqZiiXAakYGCwk0HKe8="
+  "resolved" "https://registry.npmjs.org/compressible/-/compressible-1.1.1.tgz"
+  "version" "1.1.1"
+
+"compressible@~2.0.14":
+  "integrity" "sha1-MmxfUH+7BV9UEWeCuWmoG2einac="
+  "resolved" "https://registry.npmjs.org/compressible/-/compressible-2.0.14.tgz"
+  "version" "2.0.14"
+  dependencies:
+    "mime-db" ">= 1.34.0 < 2"
+
+"compression@^1.5.2":
+  "integrity" "sha512-HSjyBG5N1Nnz7tF2+O7A9XUhyjru71/fwgNb7oIsEVHR0WShfs2tIS/EySLgiTe98aOK18YDlMXpzjCXY/n9mg=="
+  "resolved" "https://registry.npmjs.org/compression/-/compression-1.7.3.tgz"
+  "version" "1.7.3"
+  dependencies:
+    "accepts" "~1.3.5"
+    "bytes" "3.0.0"
+    "compressible" "~2.0.14"
+    "debug" "2.6.9"
+    "on-headers" "~1.0.1"
+    "safe-buffer" "5.1.2"
+    "vary" "~1.1.2"
+
+"compression@~1.0.11":
+  "integrity" "sha1-aXAM8e6JY0VDVqwZKm5ekeIyv/s="
+  "resolved" "https://registry.npmjs.org/compression/-/compression-1.0.11.tgz"
+  "version" "1.0.11"
+  dependencies:
+    "accepts" "~1.0.7"
+    "bytes" "1.0.0"
+    "compressible" "~1.1.1"
+    "debug" "1.0.4"
+    "on-headers" "~1.0.0"
+    "vary" "~1.0.0"
+
+"concat-map@0.0.1":
+  "integrity" "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s="
+  "resolved" "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz"
+  "version" "0.0.1"
+
+"concat-stream@":
+  "integrity" "sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A=="
+  "resolved" "https://registry.npmjs.org/concat-stream/-/concat-stream-2.0.0.tgz"
+  "version" "2.0.0"
+  dependencies:
+    "buffer-from" "^1.0.0"
+    "inherits" "^2.0.3"
+    "readable-stream" "^3.0.2"
+    "typedarray" "^0.0.6"
+
+"connect-history-api-fallback@^1.3.0":
+  "integrity" "sha1-sGhzk0vF40T+9hGhlqb6rgruAVo="
+  "resolved" "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.5.0.tgz"
+  "version" "1.5.0"
+
+"connect-timeout@~1.2.2":
+  "integrity" "sha1-WVNgK7Zqv9X6Ia6RGnIhxeglocA="
+  "resolved" "https://registry.npmjs.org/connect-timeout/-/connect-timeout-1.2.2.tgz"
+  "version" "1.2.2"
+  dependencies:
+    "debug" "1.0.4"
+    "ms" "0.6.2"
+    "on-headers" "~1.0.0"
+
+"connect@2.25.9":
+  "integrity" "sha1-loDW8vsgDq2rPScuQZ545dh88x8="
+  "resolved" "https://registry.npmjs.org/connect/-/connect-2.25.9.tgz"
+  "version" "2.25.9"
+  dependencies:
+    "basic-auth-connect" "1.0.0"
+    "body-parser" "~1.6.7"
+    "bytes" "1.0.0"
+    "compression" "~1.0.11"
+    "connect-timeout" "~1.2.2"
+    "cookie" "0.1.2"
+    "cookie-parser" "1.3.2"
+    "cookie-signature" "1.0.4"
+    "csurf" "~1.4.1"
+    "debug" "1.0.4"
+    "depd" "0.4.4"
+    "errorhandler" "1.1.1"
+    "express-session" "~1.7.6"
+    "finalhandler" "0.1.0"
+    "fresh" "0.2.2"
+    "media-typer" "0.2.0"
+    "method-override" "~2.1.3"
+    "morgan" "~1.2.3"
+    "multiparty" "3.3.2"
+    "on-headers" "~1.0.0"
+    "parseurl" "~1.3.0"
+    "pause" "0.0.1"
+    "qs" "2.2.2"
+    "response-time" "~2.0.1"
+    "serve-favicon" "2.0.1"
+    "serve-index" "~1.1.6"
+    "serve-static" "~1.5.3"
+    "type-is" "~1.3.2"
+    "vhost" "2.0.0"
+
+"console-browserify@^1.1.0":
+  "integrity" "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA="
+  "resolved" "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz"
+  "version" "1.1.0"
+  dependencies:
+    "date-now" "^0.1.4"
+
+"constants-browserify@^1.0.0":
+  "integrity" "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U="
+  "resolved" "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz"
+  "version" "1.0.0"
+
+"content-disposition@0.5.2":
+  "integrity" "sha1-DPaLud318r55YcOoUXjLhdunjLQ="
+  "resolved" "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz"
+  "version" "0.5.2"
+
+"content-type@~1.0.4":
+  "integrity" "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA=="
+  "resolved" "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz"
+  "version" "1.0.4"
+
+"cookie-parser@1.3.2":
+  "integrity" "sha1-UiEcyCyVXXn/DAiJVEB3JOGc9WI="
+  "resolved" "https://registry.npmjs.org/cookie-parser/-/cookie-parser-1.3.2.tgz"
+  "version" "1.3.2"
+  dependencies:
+    "cookie" "0.1.2"
+    "cookie-signature" "1.0.4"
+
+"cookie-signature@1.0.4":
+  "integrity" "sha1-Dt0iKG46ERuaKnDbNj6SXoZ/aso="
+  "resolved" "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.4.tgz"
+  "version" "1.0.4"
+
+"cookie-signature@1.0.6":
+  "integrity" "sha1-4wOogrNCzD7oylE6eZmXNNqzriw="
+  "resolved" "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz"
+  "version" "1.0.6"
+
+"cookie@0.1.2":
+  "integrity" "sha1-cv7D0k5Io0Mgc9kMEmQgBQYQBLE="
+  "resolved" "https://registry.npmjs.org/cookie/-/cookie-0.1.2.tgz"
+  "version" "0.1.2"
+
+"cookie@0.3.1":
+  "integrity" "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s="
+  "resolved" "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz"
+  "version" "0.3.1"
+
+"cookiejar@2.0.1":
+  "integrity" "sha1-PRJ1L2rfaKiS8zJDNJK9WBK7Zo8="
+  "resolved" "https://registry.npmjs.org/cookiejar/-/cookiejar-2.0.1.tgz"
+  "version" "2.0.1"
+
+"copy-utils@^1.0.0":
+  "integrity" "sha1-va0LlUV5nXh9XQxMCwgqKpTjafc="
+  "resolved" "https://registry.npmjs.org/copy-utils/-/copy-utils-1.0.0.tgz"
+  "version" "1.0.0"
+
+"core-util-is@~1.0.0":
+  "integrity" "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac="
+  "resolved" "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz"
+  "version" "1.0.2"
+
+"cors@*":
+  "integrity" "sha1-K9OB8usgECAQXNUOpZ2mMJBpRoY="
+  "resolved" "https://registry.npmjs.org/cors/-/cors-2.8.4.tgz"
+  "version" "2.8.4"
+  dependencies:
+    "object-assign" "^4"
+    "vary" "^1"
+
+"crc-32@~1.0.2":
+  "integrity" "sha1-CVB5hO6bzOO9G4hh8N6KsQroGH0="
+  "resolved" "https://registry.npmjs.org/crc-32/-/crc-32-1.0.2.tgz"
+  "version" "1.0.2"
+  dependencies:
+    "exit-on-epipe" ""
+    "printj" ""
+
+"crc-32@~1.2.0":
+  "integrity" "sha512-1uBwHxF+Y/4yF5G48fwnKq6QsIXheor3ZLPT80yGBV1oEUwpPojlEhQbWKVw1VwcTQyMGHK1/XMmTjmlsmTTGA=="
+  "resolved" "https://registry.npmjs.org/crc-32/-/crc-32-1.2.0.tgz"
+  "version" "1.2.0"
+  dependencies:
+    "exit-on-epipe" "~1.0.1"
+    "printj" "~1.1.0"
+
+"crypto-browserify@3.3.0":
+  "integrity" "sha1-ufx1u0oO1h3PHNXa6W6zDJw+UGw="
+  "resolved" "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.3.0.tgz"
+  "version" "3.3.0"
+  dependencies:
+    "browserify-aes" "0.4.0"
+    "pbkdf2-compat" "2.0.1"
+    "ripemd160" "0.2.0"
+    "sha.js" "2.2.6"
+
+"csrf@~2.0.1":
+  "integrity" "sha1-0E9S4Paiin4s/h4B3V68JRs9QgE="
+  "resolved" "https://registry.npmjs.org/csrf/-/csrf-2.0.7.tgz"
+  "version" "2.0.7"
+  dependencies:
+    "base64-url" "1.2.1"
+    "rndm" "~1.1.0"
+    "scmp" "1.0.0"
+    "uid-safe" "~1.1.0"
+
+"css-loader@^0.9.0":
+  "integrity" "sha1-LhqgDOfjDvLGp6SzAKCAp8l54Nw="
+  "resolved" "https://registry.npmjs.org/css-loader/-/css-loader-0.9.1.tgz"
+  "version" "0.9.1"
+  dependencies:
+    "csso" "1.3.x"
+    "loader-utils" "~0.2.2"
+    "source-map" "~0.1.38"
+
+"csso@1.3.x":
+  "integrity" "sha1-/GKGlKLTiTiqrEmWdTIY/TEc254="
+  "resolved" "https://registry.npmjs.org/csso/-/csso-1.3.12.tgz"
+  "version" "1.3.12"
+
+"cssom@0.2.x":
+  "integrity" "sha1-JoJwm1kC5yEt9SkRb/eIzVslSJQ="
+  "resolved" "https://registry.npmjs.org/cssom/-/cssom-0.2.5.tgz"
+  "version" "0.2.5"
+
+"csurf@~1.4.1":
+  "integrity" "sha1-DMrwJpkrLSGHcdYXT1xsQCpiif0="
+  "resolved" "https://registry.npmjs.org/csurf/-/csurf-1.4.1.tgz"
+  "version" "1.4.1"
+  dependencies:
+    "cookie" "0.1.2"
+    "cookie-signature" "1.0.4"
+    "csrf" "~2.0.1"
+
+"csv-parse@^0.0.6":
+  "integrity" "sha1-lGEHImUP6sgc9UnCySmGMtK2A3w="
+  "resolved" "https://registry.npmjs.org/csv-parse/-/csv-parse-0.0.6.tgz"
+  "version" "0.0.6"
+
+"date-now@^0.1.4":
+  "integrity" "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs="
+  "resolved" "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz"
+  "version" "0.1.4"
+
+"debug@*":
+  "integrity" "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g=="
+  "resolved" "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz"
+  "version" "3.1.0"
+  dependencies:
+    "ms" "2.0.0"
+
+"debug@^2.6.6":
+  "integrity" "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA=="
+  "resolved" "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz"
+  "version" "2.6.9"
+  dependencies:
+    "ms" "2.0.0"
+
+"debug@0.6.0":
+  "integrity" "sha1-zp1dAl1SlLPwdIpJS+uvPJ/Yc08="
+  "resolved" "https://registry.npmjs.org/debug/-/debug-0.6.0.tgz"
+  "version" "0.6.0"
+
+"debug@0.7.4":
+  "integrity" "sha1-BuHqgILCyxTjmAbiLi9vdX+Srzk="
+  "resolved" "https://registry.npmjs.org/debug/-/debug-0.7.4.tgz"
+  "version" "0.7.4"
+
+"debug@1.0.4":
+  "integrity" "sha1-W5wla9VLbsAigxdvqKDt5tFUy/g="
+  "resolved" "https://registry.npmjs.org/debug/-/debug-1.0.4.tgz"
+  "version" "1.0.4"
+  dependencies:
+    "ms" "0.6.2"
+
+"debug@2.6.9":
+  "integrity" "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA=="
+  "resolved" "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz"
+  "version" "2.6.9"
+  dependencies:
+    "ms" "2.0.0"
+
+"debug@2":
+  "integrity" "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA=="
+  "resolved" "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz"
+  "version" "2.6.9"
+  dependencies:
+    "ms" "2.0.0"
+
+"decamelize@^1.0.0":
+  "integrity" "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA="
+  "resolved" "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz"
+  "version" "1.2.0"
+
+"deep-is@~0.1.3":
+  "integrity" "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ="
+  "resolved" "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz"
+  "version" "0.1.3"
+
+"defined@^1.0.0":
+  "integrity" "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM="
+  "resolved" "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz"
+  "version" "1.0.0"
+
+"delayed-stream@0.0.5":
+  "integrity" "sha1-1LH0OpPoKW3+AmlPRoC8N6MTxz8="
+  "resolved" "https://registry.npmjs.org/delayed-stream/-/delayed-stream-0.0.5.tgz"
+  "version" "0.0.5"
+
+"depd@~1.1.1":
+  "integrity" "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak="
+  "resolved" "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz"
+  "version" "1.1.2"
+
+"depd@~1.1.2":
+  "integrity" "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak="
+  "resolved" "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz"
+  "version" "1.1.2"
+
+"depd@0.4.4":
+  "integrity" "sha1-BwkfrnX5eCjYm0oCotR3jw58BmI="
+  "resolved" "https://registry.npmjs.org/depd/-/depd-0.4.4.tgz"
+  "version" "0.4.4"
+
+"depd@1.1.1":
+  "integrity" "sha1-V4O04cRZ8G+lyif5kfPQbnoxA1k="
+  "resolved" "https://registry.npmjs.org/depd/-/depd-1.1.1.tgz"
+  "version" "1.1.1"
+
+"destroy@~1.0.4":
+  "integrity" "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA="
+  "resolved" "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz"
+  "version" "1.0.4"
+
+"destroy@1.0.3":
+  "integrity" "sha1-tDO0ck5x/YVR2YhRdIUcX8N34sk="
+  "resolved" "https://registry.npmjs.org/destroy/-/destroy-1.0.3.tgz"
+  "version" "1.0.3"
+
+"detective@^4.3.1":
+  "integrity" "sha512-H6PmeeUcZloWtdt4DAkFyzFL94arpHr3NOwwmVILFiy+9Qd4JTxxXrzfyGk/lmct2qVGBwTSwSXagqu2BxmWig=="
+  "resolved" "https://registry.npmjs.org/detective/-/detective-4.7.1.tgz"
+  "version" "4.7.1"
+  dependencies:
+    "acorn" "^5.2.1"
+    "defined" "^1.0.0"
+
+"domain-browser@^1.1.1":
+  "integrity" "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA=="
+  "resolved" "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz"
+  "version" "1.2.0"
+
+"ee-first@1.0.5":
+  "integrity" "sha1-jJshKJjYzZ8alDZlDOe+ICyen/A="
+  "resolved" "https://registry.npmjs.org/ee-first/-/ee-first-1.0.5.tgz"
+  "version" "1.0.5"
+
+"ee-first@1.1.1":
+  "integrity" "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0="
+  "resolved" "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz"
+  "version" "1.1.1"
 
 "emitter@http://github.com/component/emitter/archive/1.0.1.tar.gz":
-  version "1.0.1"
-  resolved "http://github.com/component/emitter/archive/1.0.1.tar.gz#ecf2b3245322eefd38409ffb899e0d0003fa6fe9"
-  dependencies:
-    indexof "0.0.1"
-
-emojis-list@^2.0.0:
-  version "2.1.0"
-  resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389"
-
-encodeurl@~1.0.2:
-  version "1.0.2"
-  resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59"
-
-engine.io-client@1.3.1:
-  version "1.3.1"
-  resolved "https://registry.yarnpkg.com/engine.io-client/-/engine.io-client-1.3.1.tgz#1c5a65d5c5af6d04b44c22c3dbcd95c39ed1c989"
-  dependencies:
-    component-emitter "1.1.2"
-    component-inherit "0.0.3"
-    debug "0.7.4"
-    engine.io-parser "1.0.6"
-    has-cors "1.0.3"
-    indexof "0.0.1"
-    parsejson "0.0.1"
-    parseqs "0.0.2"
-    parseuri "0.0.2"
-    ws "0.4.31"
-    xmlhttprequest "https://github.com/LearnBoost/node-XMLHttpRequest/archive/0f36d0b5ebc03d85f860d42a64ae9791e1daa433.tar.gz"
-
-engine.io-parser@1.0.6:
-  version "1.0.6"
-  resolved "https://registry.yarnpkg.com/engine.io-parser/-/engine.io-parser-1.0.6.tgz#d38813143a411cb3b914132ab05bf99e6f7a248e"
-  dependencies:
-    after "0.8.1"
-    arraybuffer.slice "0.0.6"
-    base64-arraybuffer "0.1.2"
-    blob "0.0.2"
-    utf8 "2.0.0"
-
-engine.io@1.3.1:
-  version "1.3.1"
-  resolved "https://registry.yarnpkg.com/engine.io/-/engine.io-1.3.1.tgz#2d968308fffae5d17f5209b6775246e90d8a705e"
-  dependencies:
-    base64id "0.1.0"
-    debug "0.6.0"
-    engine.io-parser "1.0.6"
-    ws "0.4.31"
-
-enhanced-resolve@~0.9.0:
-  version "0.9.1"
-  resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-0.9.1.tgz#4d6e689b3725f86090927ccc86cd9f1635b89e2e"
-  dependencies:
-    graceful-fs "^4.1.2"
-    memory-fs "^0.2.0"
-    tapable "^0.1.8"
-
-envify@^3.0.0:
-  version "3.4.1"
-  resolved "https://registry.yarnpkg.com/envify/-/envify-3.4.1.tgz#d7122329e8df1688ba771b12501917c9ce5cbce8"
-  dependencies:
-    jstransform "^11.0.3"
-    through "~2.3.4"
-
-errno@^0.1.3:
-  version "0.1.7"
-  resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.7.tgz#4684d71779ad39af177e3f007996f7c67c852618"
-  dependencies:
-    prr "~1.0.1"
-
-errorhandler@1.1.1:
-  version "1.1.1"
-  resolved "https://registry.yarnpkg.com/errorhandler/-/errorhandler-1.1.1.tgz#18defd436d8ca2efe0a2d886c5c4d6ee6d76d691"
-  dependencies:
-    accepts "~1.0.4"
-    escape-html "1.0.1"
-
-escape-html@1.0.1:
-  version "1.0.1"
-  resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.1.tgz#181a286ead397a39a92857cfb1d43052e356bff0"
-
-escape-html@~1.0.3:
-  version "1.0.3"
-  resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988"
-
-esprima-fb@^15001.1.0-dev-harmony-fb:
-  version "15001.1.0-dev-harmony-fb"
-  resolved "https://registry.yarnpkg.com/esprima-fb/-/esprima-fb-15001.1.0-dev-harmony-fb.tgz#30a947303c6b8d5e955bee2b99b1d233206a6901"
-
-esprima@~3.1.0:
-  version "3.1.3"
-  resolved "https://registry.yarnpkg.com/esprima/-/esprima-3.1.3.tgz#fdca51cee6133895e3c88d535ce49dbff62a4633"
-
-etag@~1.8.1:
-  version "1.8.1"
-  resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887"
-
-eventemitter3@^3.0.0:
-  version "3.1.0"
-  resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-3.1.0.tgz#090b4d6cdbd645ed10bf750d4b5407942d7ba163"
-
-events@^1.0.0:
-  version "1.1.1"
-  resolved "https://registry.yarnpkg.com/events/-/events-1.1.1.tgz#9ebdb7635ad099c70dcc4c2a1f5004288e8bd924"
-
-eventsource@0.1.6:
-  version "0.1.6"
-  resolved "https://registry.yarnpkg.com/eventsource/-/eventsource-0.1.6.tgz#0acede849ed7dd1ccc32c811bb11b944d4f29232"
-  dependencies:
-    original ">=0.0.5"
-
-exit-on-epipe@, exit-on-epipe@~1.0.1:
-  version "1.0.1"
-  resolved "https://registry.yarnpkg.com/exit-on-epipe/-/exit-on-epipe-1.0.1.tgz#0bdd92e87d5285d267daa8171d0eb06159689692"
-
-expand-brackets@^0.1.4:
-  version "0.1.5"
-  resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b"
-  dependencies:
-    is-posix-bracket "^0.1.0"
-
-expand-range@^1.8.1:
-  version "1.8.2"
-  resolved "https://registry.yarnpkg.com/expand-range/-/expand-range-1.8.2.tgz#a299effd335fe2721ebae8e257ec79644fc85337"
-  dependencies:
-    fill-range "^2.1.0"
-
-express-session@~1.7.6:
-  version "1.7.6"
-  resolved "https://registry.yarnpkg.com/express-session/-/express-session-1.7.6.tgz#e1c369ba2176f7afdb79e77d65dcd8c7c46e48a5"
-  dependencies:
-    buffer-crc32 "0.2.3"
-    cookie "0.1.2"
-    cookie-signature "1.0.4"
-    debug "1.0.4"
-    depd "0.4.4"
-    on-headers "~1.0.0"
-    parseurl "~1.3.0"
-    uid-safe "1.0.1"
-    utils-merge "1.0.0"
-
-express@3.16.9:
-  version "3.16.9"
-  resolved "https://registry.yarnpkg.com/express/-/express-3.16.9.tgz#993747be5669700280d9682cb61ad138939847fc"
-  dependencies:
-    basic-auth "1.0.0"
-    buffer-crc32 "0.2.3"
-    commander "1.3.2"
-    connect "2.25.9"
-    cookie "0.1.2"
-    cookie-signature "1.0.4"
-    debug "1.0.4"
-    depd "0.4.4"
-    escape-html "1.0.1"
-    fresh "0.2.2"
-    media-typer "0.2.0"
-    merge-descriptors "0.0.2"
-    methods "1.1.0"
-    mkdirp "0.5.0"
-    parseurl "~1.3.0"
-    proxy-addr "1.0.1"
-    range-parser "1.0.0"
-    send "0.8.3"
-    vary "0.1.0"
-
-express@^4.13.3:
-  version "4.16.3"
-  resolved "https://registry.yarnpkg.com/express/-/express-4.16.3.tgz#6af8a502350db3246ecc4becf6b5a34d22f7ed53"
-  dependencies:
-    accepts "~1.3.5"
-    array-flatten "1.1.1"
-    body-parser "1.18.2"
-    content-disposition "0.5.2"
-    content-type "~1.0.4"
-    cookie "0.3.1"
-    cookie-signature "1.0.6"
-    debug "2.6.9"
-    depd "~1.1.2"
-    encodeurl "~1.0.2"
-    escape-html "~1.0.3"
-    etag "~1.8.1"
-    finalhandler "1.1.1"
-    fresh "0.5.2"
-    merge-descriptors "1.0.1"
-    methods "~1.1.2"
-    on-finished "~2.3.0"
-    parseurl "~1.3.2"
-    path-to-regexp "0.1.7"
-    proxy-addr "~2.0.3"
-    qs "6.5.1"
-    range-parser "~1.2.0"
-    safe-buffer "5.1.1"
-    send "0.16.2"
-    serve-static "1.13.2"
-    setprototypeof "1.1.0"
-    statuses "~1.4.0"
-    type-is "~1.6.16"
-    utils-merge "1.0.1"
-    vary "~1.1.2"
-
-extend@~1.2.1:
-  version "1.2.1"
-  resolved "https://registry.yarnpkg.com/extend/-/extend-1.2.1.tgz#a0f5fd6cfc83a5fe49ef698d60ec8a624dd4576c"
-
-extglob@^0.3.1:
-  version "0.3.2"
-  resolved "https://registry.yarnpkg.com/extglob/-/extglob-0.3.2.tgz#2e18ff3d2f49ab2765cec9023f011daa8d8349a1"
-  dependencies:
-    is-extglob "^1.0.0"
-
-fast-levenshtein@~2.0.4:
-  version "2.0.6"
-  resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917"
-
-faye-websocket@^0.10.0:
-  version "0.10.0"
-  resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.10.0.tgz#4e492f8d04dfb6f89003507f6edbf2d501e7c6f4"
-  dependencies:
-    websocket-driver ">=0.5.1"
-
-faye-websocket@~0.11.0:
-  version "0.11.1"
-  resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.1.tgz#f0efe18c4f56e4f40afc7e06c719fd5ee6188f38"
-  dependencies:
-    websocket-driver ">=0.5.1"
-
-filename-regex@^2.0.0:
-  version "2.0.1"
-  resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.1.tgz#c1c4b9bee3e09725ddb106b75c1e301fe2f18b26"
-
-fill-range@^2.1.0:
-  version "2.2.4"
-  resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-2.2.4.tgz#eb1e773abb056dcd8df2bfdf6af59b8b3a936565"
-  dependencies:
-    is-number "^2.1.0"
-    isobject "^2.0.0"
-    randomatic "^3.0.0"
-    repeat-element "^1.1.2"
-    repeat-string "^1.5.2"
-
-finalhandler@0.1.0:
-  version "0.1.0"
-  resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-0.1.0.tgz#da05bbc4f5f4a30c84ce1d91f3c154007c4e9daa"
-  dependencies:
-    debug "1.0.4"
-    escape-html "1.0.1"
-
-finalhandler@1.1.1:
-  version "1.1.1"
-  resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.1.tgz#eebf4ed840079c83f4249038c9d703008301b105"
-  dependencies:
-    debug "2.6.9"
-    encodeurl "~1.0.2"
-    escape-html "~1.0.3"
-    on-finished "~2.3.0"
-    parseurl "~1.3.2"
-    statuses "~1.4.0"
-    unpipe "~1.0.0"
-
-follow-redirects@^1.0.0:
-  version "1.5.7"
-  resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.5.7.tgz#a39e4804dacb90202bca76a9e2ac10433ca6a69a"
-  dependencies:
-    debug "^3.1.0"
-
-for-in@^1.0.1:
-  version "1.0.2"
-  resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80"
-
-for-own@^0.1.4:
-  version "0.1.5"
-  resolved "https://registry.yarnpkg.com/for-own/-/for-own-0.1.5.tgz#5265c681a4f294dabbf17c9509b6763aa84510ce"
-  dependencies:
-    for-in "^1.0.1"
-
-form-data@0.1.3:
-  version "0.1.3"
-  resolved "https://registry.yarnpkg.com/form-data/-/form-data-0.1.3.tgz#4ee4346e6eb5362e8344a02075bd8dbd8c7373ea"
-  dependencies:
-    async "~0.9.0"
-    combined-stream "~0.0.4"
-    mime "~1.2.11"
-
-formidable@1.0.14:
-  version "1.0.14"
-  resolved "https://registry.yarnpkg.com/formidable/-/formidable-1.0.14.tgz#2b3f4c411cbb5fdd695c44843e2a23514a43231a"
-
-forwarded@~0.1.2:
-  version "0.1.2"
-  resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.2.tgz#98c23dab1175657b8c0573e8ceccd91b0ff18c84"
-
-frac@~1.1.2:
-  version "1.1.2"
-  resolved "https://registry.yarnpkg.com/frac/-/frac-1.1.2.tgz#3d74f7f6478c88a1b5020306d747dc6313c74d0b"
-
-fresh@0.2.2:
-  version "0.2.2"
-  resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.2.2.tgz#9731dcf5678c7faeb44fb903c4f72df55187fa77"
-
-fresh@0.5.2:
-  version "0.5.2"
-  resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7"
-
-fs-minipass@^1.2.5:
-  version "1.2.5"
-  resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.5.tgz#06c277218454ec288df77ada54a03b8702aacb9d"
-  dependencies:
-    minipass "^2.2.1"
-
-fs.realpath@^1.0.0:
-  version "1.0.0"
-  resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
-
-fsevents@^1.0.0:
-  version "1.2.4"
-  resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.4.tgz#f41dcb1af2582af3692da36fc55cbd8e1041c426"
-  dependencies:
-    nan "^2.9.2"
-    node-pre-gyp "^0.10.0"
-
-functionally@^0.6.2:
-  version "0.6.2"
-  resolved "https://registry.yarnpkg.com/functionally/-/functionally-0.6.2.tgz#ba9b4ac4dec0807dec289c251b3f5651599d32d3"
-  dependencies:
-    newify "~1.1.9"
-
-gauge@~2.7.3:
-  version "2.7.4"
-  resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7"
-  dependencies:
-    aproba "^1.0.3"
-    console-control-strings "^1.0.0"
-    has-unicode "^2.0.0"
-    object-assign "^4.1.0"
-    signal-exit "^3.0.0"
-    string-width "^1.0.1"
-    strip-ansi "^3.0.1"
-    wide-align "^1.1.0"
-
-glob-base@^0.3.0:
-  version "0.3.0"
-  resolved "https://registry.yarnpkg.com/glob-base/-/glob-base-0.3.0.tgz#dbb164f6221b1c0b1ccf82aea328b497df0ea3c4"
-  dependencies:
-    glob-parent "^2.0.0"
-    is-glob "^2.0.0"
-
-glob-parent@^2.0.0:
-  version "2.0.0"
-  resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-2.0.0.tgz#81383d72db054fcccf5336daa902f182f6edbb28"
-  dependencies:
-    is-glob "^2.0.0"
-
-glob@3.2.x:
-  version "3.2.11"
-  resolved "https://registry.yarnpkg.com/glob/-/glob-3.2.11.tgz#4a973f635b9190f715d10987d5c00fd2815ebe3d"
-  dependencies:
-    inherits "2"
-    minimatch "0.3"
-
-glob@^5.0.15:
-  version "5.0.15"
-  resolved "https://registry.yarnpkg.com/glob/-/glob-5.0.15.tgz#1bc936b9e02f4a603fcc222ecf7633d30b8b93b1"
-  dependencies:
-    inflight "^1.0.4"
-    inherits "2"
-    minimatch "2 || 3"
-    once "^1.3.0"
-    path-is-absolute "^1.0.0"
-
-glob@^7.0.5:
-  version "7.1.2"
-  resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15"
-  dependencies:
-    fs.realpath "^1.0.0"
-    inflight "^1.0.4"
-    inherits "2"
-    minimatch "^3.0.4"
-    once "^1.3.0"
-    path-is-absolute "^1.0.0"
+  "integrity" "sha512-k3Da+QreMb9waaGCHNAHox5QqxnZEYlQmvIVYwQibrI6OpIRyIIyFGgDV5dXRLr1AJ32JLqEh0VxQEq20dFskw=="
+  "resolved" "http://github.com/component/emitter/archive/1.0.1.tar.gz"
+  "version" "1.0.1"
+  dependencies:
+    "indexof" "0.0.1"
+
+"emojis-list@^2.0.0":
+  "integrity" "sha1-TapNnbAPmBmIDHn6RXrlsJof04k="
+  "resolved" "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz"
+  "version" "2.1.0"
+
+"encodeurl@~1.0.2":
+  "integrity" "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k="
+  "resolved" "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz"
+  "version" "1.0.2"
+
+"engine.io-client@1.3.1":
+  "integrity" "sha1-HFpl1cWvbQS0TCLD282Vw57RyYk="
+  "resolved" "https://registry.npmjs.org/engine.io-client/-/engine.io-client-1.3.1.tgz"
+  "version" "1.3.1"
+  dependencies:
+    "component-emitter" "1.1.2"
+    "component-inherit" "0.0.3"
+    "debug" "0.7.4"
+    "engine.io-parser" "1.0.6"
+    "has-cors" "1.0.3"
+    "indexof" "0.0.1"
+    "parsejson" "0.0.1"
+    "parseqs" "0.0.2"
+    "parseuri" "0.0.2"
+    "ws" "0.4.31"
+    "xmlhttprequest" "https://github.com/LearnBoost/node-XMLHttpRequest/archive/0f36d0b5ebc03d85f860d42a64ae9791e1daa433.tar.gz"
+
+"engine.io-parser@1.0.6":
+  "integrity" "sha1-04gTFDpBHLO5FBMqsFv5nm96JI4="
+  "resolved" "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-1.0.6.tgz"
+  "version" "1.0.6"
+  dependencies:
+    "after" "0.8.1"
+    "arraybuffer.slice" "0.0.6"
+    "base64-arraybuffer" "0.1.2"
+    "blob" "0.0.2"
+    "utf8" "2.0.0"
+
+"engine.io@1.3.1":
+  "integrity" "sha1-LZaDCP/65dF/Ugm2d1JG6Q2KcF4="
+  "resolved" "https://registry.npmjs.org/engine.io/-/engine.io-1.3.1.tgz"
+  "version" "1.3.1"
+  dependencies:
+    "base64id" "0.1.0"
+    "debug" "0.6.0"
+    "engine.io-parser" "1.0.6"
+    "ws" "0.4.31"
+
+"enhanced-resolve@~0.9.0":
+  "integrity" "sha1-TW5omzcl+GCQknzMhs2fFjW4ni4="
+  "resolved" "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-0.9.1.tgz"
+  "version" "0.9.1"
+  dependencies:
+    "graceful-fs" "^4.1.2"
+    "memory-fs" "^0.2.0"
+    "tapable" "^0.1.8"
+
+"envify@^3.0.0":
+  "integrity" "sha1-1xIjKejfFoi6dxsSUBkXyc5cvOg="
+  "resolved" "https://registry.npmjs.org/envify/-/envify-3.4.1.tgz"
+  "version" "3.4.1"
+  dependencies:
+    "jstransform" "^11.0.3"
+    "through" "~2.3.4"
+
+"errno@^0.1.3":
+  "integrity" "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg=="
+  "resolved" "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz"
+  "version" "0.1.7"
+  dependencies:
+    "prr" "~1.0.1"
+
+"errorhandler@1.1.1":
+  "integrity" "sha1-GN79Q22Mou/gotiGxcTW7m121pE="
+  "resolved" "https://registry.npmjs.org/errorhandler/-/errorhandler-1.1.1.tgz"
+  "version" "1.1.1"
+  dependencies:
+    "accepts" "~1.0.4"
+    "escape-html" "1.0.1"
+
+"escape-html@~1.0.3":
+  "integrity" "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg="
+  "resolved" "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz"
+  "version" "1.0.3"
+
+"escape-html@1.0.1":
+  "integrity" "sha1-GBoobq05ejmpKFfPsdQwUuNWv/A="
+  "resolved" "https://registry.npmjs.org/escape-html/-/escape-html-1.0.1.tgz"
+  "version" "1.0.1"
+
+"esprima-fb@^15001.1.0-dev-harmony-fb":
+  "integrity" "sha1-MKlHMDxrjV6VW+4rmbHSMyBqaQE="
+  "resolved" "https://registry.npmjs.org/esprima-fb/-/esprima-fb-15001.1.0-dev-harmony-fb.tgz"
+  "version" "15001.1.0-dev-harmony-fb"
+
+"esprima@~3.1.0":
+  "integrity" "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM="
+  "resolved" "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz"
+  "version" "3.1.3"
+
+"etag@~1.8.1":
+  "integrity" "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc="
+  "resolved" "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz"
+  "version" "1.8.1"
+
+"eventemitter3@^4.0.0":
+  "integrity" "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw=="
+  "resolved" "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz"
+  "version" "4.0.7"
+
+"events@^1.0.0":
+  "integrity" "sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ="
+  "resolved" "https://registry.npmjs.org/events/-/events-1.1.1.tgz"
+  "version" "1.1.1"
+
+"eventsource@0.1.6":
+  "integrity" "sha1-Cs7ehJ7X3RzMMsgRuxG5RNTykjI="
+  "resolved" "https://registry.npmjs.org/eventsource/-/eventsource-0.1.6.tgz"
+  "version" "0.1.6"
+  dependencies:
+    "original" ">=0.0.5"
+
+"exit-on-epipe@", "exit-on-epipe@~1.0.0", "exit-on-epipe@~1.0.1":
+  "integrity" "sha512-h2z5mrROTxce56S+pnvAV890uu7ls7f1kEvVGJbw1OlFH3/mlJ5bkXu0KRyW94v37zzHPiUd55iLn3DA7TjWpw=="
+  "resolved" "https://registry.npmjs.org/exit-on-epipe/-/exit-on-epipe-1.0.1.tgz"
+  "version" "1.0.1"
+
+"expand-brackets@^0.1.4":
+  "integrity" "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s="
+  "resolved" "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz"
+  "version" "0.1.5"
+  dependencies:
+    "is-posix-bracket" "^0.1.0"
+
+"expand-range@^1.8.1":
+  "integrity" "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc="
+  "resolved" "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz"
+  "version" "1.8.2"
+  dependencies:
+    "fill-range" "^2.1.0"
+
+"express-session@~1.7.6":
+  "integrity" "sha1-4cNpuiF296/beed9ZdzYx8RuSKU="
+  "resolved" "https://registry.npmjs.org/express-session/-/express-session-1.7.6.tgz"
+  "version" "1.7.6"
+  dependencies:
+    "buffer-crc32" "0.2.3"
+    "cookie" "0.1.2"
+    "cookie-signature" "1.0.4"
+    "debug" "1.0.4"
+    "depd" "0.4.4"
+    "on-headers" "~1.0.0"
+    "parseurl" "~1.3.0"
+    "uid-safe" "1.0.1"
+    "utils-merge" "1.0.0"
+
+"express@^4.13.3":
+  "integrity" "sha1-avilAjUNsyRuzEvs9rWjTSL37VM="
+  "resolved" "https://registry.npmjs.org/express/-/express-4.16.3.tgz"
+  "version" "4.16.3"
+  dependencies:
+    "accepts" "~1.3.5"
+    "array-flatten" "1.1.1"
+    "body-parser" "1.18.2"
+    "content-disposition" "0.5.2"
+    "content-type" "~1.0.4"
+    "cookie" "0.3.1"
+    "cookie-signature" "1.0.6"
+    "debug" "2.6.9"
+    "depd" "~1.1.2"
+    "encodeurl" "~1.0.2"
+    "escape-html" "~1.0.3"
+    "etag" "~1.8.1"
+    "finalhandler" "1.1.1"
+    "fresh" "0.5.2"
+    "merge-descriptors" "1.0.1"
+    "methods" "~1.1.2"
+    "on-finished" "~2.3.0"
+    "parseurl" "~1.3.2"
+    "path-to-regexp" "0.1.7"
+    "proxy-addr" "~2.0.3"
+    "qs" "6.5.1"
+    "range-parser" "~1.2.0"
+    "safe-buffer" "5.1.1"
+    "send" "0.16.2"
+    "serve-static" "1.13.2"
+    "setprototypeof" "1.1.0"
+    "statuses" "~1.4.0"
+    "type-is" "~1.6.16"
+    "utils-merge" "1.0.1"
+    "vary" "~1.1.2"
+
+"express@3.16.9":
+  "integrity" "sha1-mTdHvlZpcAKA2WgsthrROJOYR/w="
+  "resolved" "https://registry.npmjs.org/express/-/express-3.16.9.tgz"
+  "version" "3.16.9"
+  dependencies:
+    "basic-auth" "1.0.0"
+    "buffer-crc32" "0.2.3"
+    "commander" "1.3.2"
+    "connect" "2.25.9"
+    "cookie" "0.1.2"
+    "cookie-signature" "1.0.4"
+    "debug" "1.0.4"
+    "depd" "0.4.4"
+    "escape-html" "1.0.1"
+    "fresh" "0.2.2"
+    "media-typer" "0.2.0"
+    "merge-descriptors" "0.0.2"
+    "methods" "1.1.0"
+    "mkdirp" "0.5.0"
+    "parseurl" "~1.3.0"
+    "proxy-addr" "1.0.1"
+    "range-parser" "1.0.0"
+    "send" "0.8.3"
+    "vary" "0.1.0"
+
+"extend@~1.2.1":
+  "integrity" "sha1-oPX9bPyDpf5J72mNYOyKYk3UV2w="
+  "resolved" "https://registry.npmjs.org/extend/-/extend-1.2.1.tgz"
+  "version" "1.2.1"
+
+"extglob@^0.3.1":
+  "integrity" "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE="
+  "resolved" "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz"
+  "version" "0.3.2"
+  dependencies:
+    "is-extglob" "^1.0.0"
+
+"fast-levenshtein@~2.0.4":
+  "integrity" "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc="
+  "resolved" "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz"
+  "version" "2.0.6"
+
+"faye-websocket@^0.10.0":
+  "integrity" "sha1-TkkvjQTftviQA1B/btvy1QHnxvQ="
+  "resolved" "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.10.0.tgz"
+  "version" "0.10.0"
+  dependencies:
+    "websocket-driver" ">=0.5.1"
+
+"faye-websocket@~0.11.0":
+  "integrity" "sha1-8O/hjE9W5PQK/H4Gxxn9XuYYjzg="
+  "resolved" "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.1.tgz"
+  "version" "0.11.1"
+  dependencies:
+    "websocket-driver" ">=0.5.1"
+
+"filename-regex@^2.0.0":
+  "integrity" "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY="
+  "resolved" "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz"
+  "version" "2.0.1"
+
+"fill-range@^2.1.0":
+  "integrity" "sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q=="
+  "resolved" "https://registry.npmjs.org/fill-range/-/fill-range-2.2.4.tgz"
+  "version" "2.2.4"
+  dependencies:
+    "is-number" "^2.1.0"
+    "isobject" "^2.0.0"
+    "randomatic" "^3.0.0"
+    "repeat-element" "^1.1.2"
+    "repeat-string" "^1.5.2"
+
+"finalhandler@0.1.0":
+  "integrity" "sha1-2gW7xPX0owyEzh2R88FUAHxOnao="
+  "resolved" "https://registry.npmjs.org/finalhandler/-/finalhandler-0.1.0.tgz"
+  "version" "0.1.0"
+  dependencies:
+    "debug" "1.0.4"
+    "escape-html" "1.0.1"
+
+"finalhandler@1.1.1":
+  "integrity" "sha512-Y1GUDo39ez4aHAw7MysnUD5JzYX+WaIj8I57kO3aEPT1fFRL4sr7mjei97FgnwhAyyzRYmQZaTHb2+9uZ1dPtg=="
+  "resolved" "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.1.tgz"
+  "version" "1.1.1"
+  dependencies:
+    "debug" "2.6.9"
+    "encodeurl" "~1.0.2"
+    "escape-html" "~1.0.3"
+    "on-finished" "~2.3.0"
+    "parseurl" "~1.3.2"
+    "statuses" "~1.4.0"
+    "unpipe" "~1.0.0"
+
+"follow-redirects@^1.0.0":
+  "integrity" "sha512-SSG5xmZh1mkPGyKzjZP8zLjltIfpW32Y5QpdNJyjcfGxK3qo3NDDkZOZSFiGn1A6SclQxY9GzEwAHQ3dmYRWpg=="
+  "resolved" "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.13.1.tgz"
+  "version" "1.13.1"
+
+"for-in@^1.0.1":
+  "integrity" "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA="
+  "resolved" "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz"
+  "version" "1.0.2"
+
+"for-own@^0.1.4":
+  "integrity" "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4="
+  "resolved" "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz"
+  "version" "0.1.5"
+  dependencies:
+    "for-in" "^1.0.1"
+
+"form-data@0.1.3":
+  "integrity" "sha1-TuQ0bm61Ni6DRKAgdb2NvYxzc+o="
+  "resolved" "https://registry.npmjs.org/form-data/-/form-data-0.1.3.tgz"
+  "version" "0.1.3"
+  dependencies:
+    "async" "~0.9.0"
+    "combined-stream" "~0.0.4"
+    "mime" "~1.2.11"
+
+"formidable@1.0.14":
+  "integrity" "sha1-Kz9MQRy7X91pXESEPiojUUpDIxo="
+  "resolved" "https://registry.npmjs.org/formidable/-/formidable-1.0.14.tgz"
+  "version" "1.0.14"
+
+"forwarded@~0.1.2":
+  "integrity" "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ="
+  "resolved" "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz"
+  "version" "0.1.2"
+
+"frac@~1.0.6":
+  "integrity" "sha1-mg38I5VoUqizIGI7688b6eoEgik="
+  "resolved" "https://registry.npmjs.org/frac/-/frac-1.0.6.tgz"
+  "version" "1.0.6"
+  dependencies:
+    "voc" ""
+
+"frac@~1.1.2":
+  "integrity" "sha512-w/XBfkibaTl3YDqASwfDUqkna4Z2p9cFSr1aHDt0WoMTECnRfBOv2WArlZILlqgWlmdIlALXGpM2AOhEk5W3IA=="
+  "resolved" "https://registry.npmjs.org/frac/-/frac-1.1.2.tgz"
+  "version" "1.1.2"
+
+"frac@0.3.1":
+  "integrity" "sha1-V3Z3t/3L5vr3xGHxgB00E3zaQ1Q="
+  "resolved" "https://registry.npmjs.org/frac/-/frac-0.3.1.tgz"
+  "version" "0.3.1"
+
+"fresh@0.2.2":
+  "integrity" "sha1-lzHc9WeMf660T7kDxPct9VGH+nc="
+  "resolved" "https://registry.npmjs.org/fresh/-/fresh-0.2.2.tgz"
+  "version" "0.2.2"
+
+"fresh@0.5.2":
+  "integrity" "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac="
+  "resolved" "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz"
+  "version" "0.5.2"
+
+"functionally@^0.6.2":
+  "integrity" "sha1-uptKxN7AgH3sKJwlGz9WUVmdMtM="
+  "resolved" "https://registry.npmjs.org/functionally/-/functionally-0.6.2.tgz"
+  "version" "0.6.2"
+  dependencies:
+    "newify" "~1.1.9"
+
+"glob-base@^0.3.0":
+  "integrity" "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q="
+  "resolved" "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz"
+  "version" "0.3.0"
+  dependencies:
+    "glob-parent" "^2.0.0"
+    "is-glob" "^2.0.0"
+
+"glob-parent@^2.0.0":
+  "integrity" "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg="
+  "resolved" "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz"
+  "version" "2.0.0"
+  dependencies:
+    "is-glob" "^2.0.0"
+
+"glob@^5.0.15":
+  "integrity" "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E="
+  "resolved" "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz"
+  "version" "5.0.15"
+  dependencies:
+    "inflight" "^1.0.4"
+    "inherits" "2"
+    "minimatch" "2 || 3"
+    "once" "^1.3.0"
+    "path-is-absolute" "^1.0.0"
 
 "global@https://github.com/component/global/archive/v2.0.1.tar.gz":
-  version "2.0.1"
-  resolved "https://github.com/component/global/archive/v2.0.1.tar.gz#3fb25343fb66d79991b0f4a429ce3b54480eec3c"
-
-graceful-fs@^4.1.2:
-  version "4.1.11"
-  resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658"
-
-has-binary-data@0.1.1:
-  version "0.1.1"
-  resolved "https://registry.yarnpkg.com/has-binary-data/-/has-binary-data-0.1.1.tgz#e10749fb87828a52df96f4086587eb4a03966439"
-  dependencies:
-    isarray "0.0.1"
-
-has-cors@1.0.3:
-  version "1.0.3"
-  resolved "https://registry.yarnpkg.com/has-cors/-/has-cors-1.0.3.tgz#502acb9b3104dac33dd2630eaf2f888b0baf4cb3"
-  dependencies:
-    global "https://github.com/component/global/archive/v2.0.1.tar.gz"
-
-has-flag@^1.0.0:
-  version "1.0.0"
-  resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa"
-
-has-unicode@^2.0.0:
-  version "2.0.1"
-  resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9"
-
-http-errors@1.6.2:
-  version "1.6.2"
-  resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.2.tgz#0a002cc85707192a7e7946ceedc11155f60ec736"
-  dependencies:
-    depd "1.1.1"
-    inherits "2.0.3"
-    setprototypeof "1.0.3"
-    statuses ">= 1.3.1 < 2"
-
-http-errors@~1.6.2:
-  version "1.6.3"
-  resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d"
-  dependencies:
-    depd "~1.1.2"
-    inherits "2.0.3"
-    setprototypeof "1.1.0"
-    statuses ">= 1.4.0 < 2"
-
-http-parser-js@>=0.4.0:
-  version "0.4.13"
-  resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.4.13.tgz#3bd6d6fde6e3172c9334c3b33b6c193d80fe1137"
-
-http-proxy-middleware@~0.17.1:
-  version "0.17.4"
-  resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-0.17.4.tgz#642e8848851d66f09d4f124912846dbaeb41b833"
-  dependencies:
-    http-proxy "^1.16.2"
-    is-glob "^3.1.0"
-    lodash "^4.17.2"
-    micromatch "^2.3.11"
-
-http-proxy@^1.16.2:
-  version "1.17.0"
-  resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.17.0.tgz#7ad38494658f84605e2f6db4436df410f4e5be9a"
-  dependencies:
-    eventemitter3 "^3.0.0"
-    follow-redirects "^1.0.0"
-    requires-port "^1.0.0"
-
-https-browserify@0.0.1:
-  version "0.0.1"
-  resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-0.0.1.tgz#3f91365cabe60b77ed0ebba24b454e3e09d95a82"
-
-iconv-lite@0.4.19:
-  version "0.4.19"
-  resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.19.tgz#f7468f60135f5e5dad3399c0a81be9a1603a082b"
-
-iconv-lite@0.4.4:
-  version "0.4.4"
-  resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.4.tgz#e95f2e41db0735fc21652f7827a5ee32e63c83a8"
-
-iconv-lite@^0.4.13, iconv-lite@^0.4.4, iconv-lite@^0.4.5:
-  version "0.4.24"
-  resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b"
-  dependencies:
-    safer-buffer ">= 2.1.2 < 3"
-
-ieee754@^1.1.4:
-  version "1.1.12"
-  resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.12.tgz#50bf24e5b9c8bb98af4964c941cdb0918da7b60b"
-
-ignore-walk@^3.0.1:
-  version "3.0.1"
-  resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.1.tgz#a83e62e7d272ac0e3b551aaa82831a19b69f82f8"
-  dependencies:
-    minimatch "^3.0.4"
-
-indexof@0.0.1:
-  version "0.0.1"
-  resolved "https://registry.yarnpkg.com/indexof/-/indexof-0.0.1.tgz#82dc336d232b9062179d05ab3293a66059fd435d"
-
-inflight@^1.0.4:
-  version "1.0.6"
-  resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
-  dependencies:
-    once "^1.3.0"
-    wrappy "1"
-
-inherits@2, inherits@2.0.3, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.1, inherits@~2.0.3:
-  version "2.0.3"
-  resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de"
-
-inherits@2.0.1:
-  version "2.0.1"
-  resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1"
-
-ini@~1.3.0:
-  version "1.3.5"
-  resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927"
-
-interpret@^0.6.4:
-  version "0.6.6"
-  resolved "https://registry.yarnpkg.com/interpret/-/interpret-0.6.6.tgz#fecd7a18e7ce5ca6abfb953e1f86213a49f1625b"
-
-ipaddr.js@0.1.2:
-  version "0.1.2"
-  resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-0.1.2.tgz#6a1fd3d854f5002965c34d7bbcd9b4a8d4b0467e"
-
-ipaddr.js@1.8.0:
-  version "1.8.0"
-  resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.8.0.tgz#eaa33d6ddd7ace8f7f6fe0c9ca0440e706738b1e"
-
-is-binary-path@^1.0.0:
-  version "1.0.1"
-  resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898"
-  dependencies:
-    binary-extensions "^1.0.0"
-
-is-buffer@^1.1.5:
-  version "1.1.6"
-  resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be"
-
-is-dotfile@^1.0.0:
-  version "1.0.3"
-  resolved "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.3.tgz#a6a2f32ffd2dfb04f5ca25ecd0f6b83cf798a1e1"
-
-is-equal-shallow@^0.1.3:
-  version "0.1.3"
-  resolved "https://registry.yarnpkg.com/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz#2238098fc221de0bcfa5d9eac4c45d638aa1c534"
-  dependencies:
-    is-primitive "^2.0.0"
-
-is-extendable@^0.1.1:
-  version "0.1.1"
-  resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89"
-
-is-extglob@^1.0.0:
-  version "1.0.0"
-  resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0"
-
-is-extglob@^2.1.0:
-  version "2.1.1"
-  resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2"
-
-is-fullwidth-code-point@^1.0.0:
-  version "1.0.0"
-  resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb"
-  dependencies:
-    number-is-nan "^1.0.0"
-
-is-fullwidth-code-point@^2.0.0:
-  version "2.0.0"
-  resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f"
-
-is-glob@^2.0.0, is-glob@^2.0.1:
-  version "2.0.1"
-  resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863"
-  dependencies:
-    is-extglob "^1.0.0"
-
-is-glob@^3.1.0:
-  version "3.1.0"
-  resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a"
-  dependencies:
-    is-extglob "^2.1.0"
-
-is-number@^2.1.0:
-  version "2.1.0"
-  resolved "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f"
-  dependencies:
-    kind-of "^3.0.2"
-
-is-number@^4.0.0:
-  version "4.0.0"
-  resolved "https://registry.yarnpkg.com/is-number/-/is-number-4.0.0.tgz#0026e37f5454d73e356dfe6564699867c6a7f0ff"
-
-is-posix-bracket@^0.1.0:
-  version "0.1.1"
-  resolved "https://registry.yarnpkg.com/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz#3334dc79774368e92f016e6fbc0a88f5cd6e6bc4"
-
-is-primitive@^2.0.0:
-  version "2.0.0"
-  resolved "https://registry.yarnpkg.com/is-primitive/-/is-primitive-2.0.0.tgz#207bab91638499c07b2adf240a41a87210034575"
-
-isarray@0.0.1:
-  version "0.0.1"
-  resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf"
-
-isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0:
-  version "1.0.0"
-  resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
-
-isobject@^2.0.0:
-  version "2.1.0"
-  resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89"
-  dependencies:
-    isarray "1.0.0"
-
-j@^1.0.0:
-  version "1.0.0"
-  resolved "https://registry.yarnpkg.com/j/-/j-1.0.0.tgz#d438893215d0d68abc6cd15bef36c13416c826bc"
-  dependencies:
-    commander ""
-    concat-stream ""
-    exit-on-epipe ""
-    xlsx ""
-
-json3@3.2.6:
-  version "3.2.6"
-  resolved "https://registry.yarnpkg.com/json3/-/json3-3.2.6.tgz#f6efc93c06a04de9aec53053df2559bb19e2038b"
-
-json3@^3.3.2:
-  version "3.3.2"
-  resolved "https://registry.yarnpkg.com/json3/-/json3-3.3.2.tgz#3c0434743df93e2f5c42aee7b19bcb483575f4e1"
-
-json5@^0.5.0:
-  version "0.5.1"
-  resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821"
-
-jstransform@^11.0.3:
-  version "11.0.3"
-  resolved "https://registry.yarnpkg.com/jstransform/-/jstransform-11.0.3.tgz#09a78993e0ae4d4ef4487f6155a91f6190cb4223"
-  dependencies:
-    base62 "^1.1.0"
-    commoner "^0.10.1"
-    esprima-fb "^15001.1.0-dev-harmony-fb"
-    object-assign "^2.0.0"
-    source-map "^0.4.2"
-
-keypress@0.1.x:
-  version "0.1.0"
-  resolved "https://registry.yarnpkg.com/keypress/-/keypress-0.1.0.tgz#4a3188d4291b66b4f65edb99f806aa9ae293592a"
-
-kind-of@^3.0.2:
-  version "3.2.2"
-  resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64"
-  dependencies:
-    is-buffer "^1.1.5"
-
-kind-of@^6.0.0:
-  version "6.0.2"
-  resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.2.tgz#01146b36a6218e64e58f3a8d66de5d7fc6f6d051"
-
-lazy-cache@^1.0.3:
-  version "1.0.4"
-  resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e"
-
-levn@~0.3.0:
-  version "0.3.0"
-  resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee"
-  dependencies:
-    prelude-ls "~1.1.2"
-    type-check "~0.3.2"
-
-livescript-loader@^0.1.5:
-  version "0.1.6"
-  resolved "https://registry.yarnpkg.com/livescript-loader/-/livescript-loader-0.1.6.tgz#ea80e6ab9a41f330d11000001999eec675cdf755"
-  dependencies:
-    livescript "^1.4.0"
-    loader-utils "0.2.x"
-
-livescript@1.5.x, livescript@^1.4.0:
-  version "1.5.0"
-  resolved "https://registry.yarnpkg.com/livescript/-/livescript-1.5.0.tgz#4fe7121c41217e4608e334eb9cbe1762e63e5566"
-  dependencies:
-    optionator "~0.8.1"
-    prelude-ls "~1.1.2"
-    source-map "^0.5.6"
-
-loader-utils@0.2.x, loader-utils@^0.2.11, loader-utils@^0.2.5, loader-utils@~0.2.2, loader-utils@~0.2.3:
-  version "0.2.17"
-  resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-0.2.17.tgz#f86e6374d43205a6e6c60e9196f17c0299bfb348"
-  dependencies:
-    big.js "^3.1.3"
-    emojis-list "^2.0.0"
-    json5 "^0.5.0"
-    object-assign "^4.0.1"
-
-lodash@^4.17.2:
-  version "4.17.10"
-  resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.10.tgz#1b7793cf7259ea38fb3661d4d38b3260af8ae4e7"
-
-longest@^1.0.1:
-  version "1.0.1"
-  resolved "https://registry.yarnpkg.com/longest/-/longest-1.0.1.tgz#30a0b2da38f73770e8294a0d22e6625ed77d0097"
-
-lru-cache@2:
-  version "2.7.3"
-  resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-2.7.3.tgz#6d4524e8b955f95d4f5b58851ce21dd72fb4e952"
-
-math-random@^1.0.1:
-  version "1.0.1"
-  resolved "https://registry.yarnpkg.com/math-random/-/math-random-1.0.1.tgz#8b3aac588b8a66e4975e3cdea67f7bb329601fac"
-
-media-typer@0.2.0:
-  version "0.2.0"
-  resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.2.0.tgz#d8a065213adfeaa2e76321a2b6dda36ff6335984"
-
-media-typer@0.3.0:
-  version "0.3.0"
-  resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748"
-
-memory-fs@^0.2.0:
-  version "0.2.0"
-  resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.2.0.tgz#f2bb25368bc121e391c2520de92969caee0a0290"
-
-memory-fs@~0.3.0:
-  version "0.3.0"
-  resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.3.0.tgz#7bcc6b629e3a43e871d7e29aca6ae8a7f15cbb20"
-  dependencies:
-    errno "^0.1.3"
-    readable-stream "^2.0.1"
-
-memory-fs@~0.4.1:
-  version "0.4.1"
-  resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552"
-  dependencies:
-    errno "^0.1.3"
-    readable-stream "^2.0.1"
-
-merge-descriptors@0.0.2:
-  version "0.0.2"
-  resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-0.0.2.tgz#c36a52a781437513c57275f39dd9d317514ac8c7"
-
-merge-descriptors@1.0.1:
-  version "1.0.1"
-  resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61"
-
-method-override@~2.1.3:
-  version "2.1.3"
-  resolved "https://registry.yarnpkg.com/method-override/-/method-override-2.1.3.tgz#511f41c4fb1dccdb6ab1844da5dc6ea81b7c1135"
-  dependencies:
-    debug "1.0.4"
-    methods "1.1.0"
-    parseurl "~1.3.0"
-    vary "~1.0.0"
-
-methods@1.0.1:
-  version "1.0.1"
-  resolved "https://registry.yarnpkg.com/methods/-/methods-1.0.1.tgz#75bc91943dffd7da037cf3eeb0ed73a0037cd14b"
-
-methods@1.1.0:
-  version "1.1.0"
-  resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.0.tgz#5dca4ee12df52ff3b056145986a8f01cbc86436f"
-
-methods@~1.1.2:
-  version "1.1.2"
-  resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee"
-
-micromatch@^2.1.5, micromatch@^2.3.11:
-  version "2.3.11"
-  resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565"
-  dependencies:
-    arr-diff "^2.0.0"
-    array-unique "^0.2.1"
-    braces "^1.8.2"
-    expand-brackets "^0.1.4"
-    extglob "^0.3.1"
-    filename-regex "^2.0.0"
-    is-extglob "^1.0.0"
-    is-glob "^2.0.1"
-    kind-of "^3.0.2"
-    normalize-path "^2.0.1"
-    object.omit "^2.0.0"
-    parse-glob "^3.0.4"
-    regex-cache "^0.4.2"
-
-"mime-db@>= 1.34.0 < 2":
-  version "1.36.0"
-  resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.36.0.tgz#5020478db3c7fe93aad7bbcc4dcf869c43363397"
-
-mime-db@~1.35.0:
-  version "1.35.0"
-  resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.35.0.tgz#0569d657466491283709663ad379a99b90d9ab47"
-
-mime-types@~1.0.0, mime-types@~1.0.1:
-  version "1.0.2"
-  resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-1.0.2.tgz#995ae1392ab8affcbfcb2641dd054e943c0d5dce"
-
-mime-types@~2.1.17, mime-types@~2.1.18:
-  version "2.1.19"
-  resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.19.tgz#71e464537a7ef81c15f2db9d97e913fc0ff606f0"
-  dependencies:
-    mime-db "~1.35.0"
-
-mime@1.2.11, mime@~1.2.11:
-  version "1.2.11"
-  resolved "https://registry.yarnpkg.com/mime/-/mime-1.2.11.tgz#58203eed86e3a5ef17aed2b7d9ebd47f0a60dd10"
-
-mime@1.4.1:
-  version "1.4.1"
-  resolved "https://registry.yarnpkg.com/mime/-/mime-1.4.1.tgz#121f9ebc49e3766f311a76e1fa1c8003c4b03aa6"
-
-mime@^1.5.0:
-  version "1.6.0"
-  resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1"
-
-minimatch@*, "minimatch@2 || 3", minimatch@^3.0.2, minimatch@^3.0.4:
-  version "3.0.4"
-  resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083"
-  dependencies:
-    brace-expansion "^1.1.7"
-
-minimatch@0.3:
-  version "0.3.0"
-  resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-0.3.0.tgz#275d8edaac4f1bb3326472089e7949c8394699dd"
-  dependencies:
-    lru-cache "2"
-    sigmund "~1.0.0"
-
-minimist@0.0.8:
-  version "0.0.8"
-  resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d"
-
-minimist@^1.2.0:
-  version "1.2.0"
-  resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284"
-
-minimist@~0.0.1:
-  version "0.0.10"
-  resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf"
-
-minipass@^2.2.1, minipass@^2.3.3:
-  version "2.3.4"
-  resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.3.4.tgz#4768d7605ed6194d6d576169b9e12ef71e9d9957"
-  dependencies:
-    safe-buffer "^5.1.2"
-    yallist "^3.0.0"
-
-minizlib@^1.1.0:
-  version "1.1.0"
-  resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.1.0.tgz#11e13658ce46bc3a70a267aac58359d1e0c29ceb"
-  dependencies:
-    minipass "^2.2.1"
-
-mkdirp@0.3.x:
-  version "0.3.5"
-  resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.3.5.tgz#de3e5f8961c88c787ee1368df849ac4413eca8d7"
-
-mkdirp@0.5.0:
-  version "0.5.0"
-  resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.0.tgz#1d73076a6df986cd9344e15e71fcc05a4c9abf12"
-  dependencies:
-    minimist "0.0.8"
-
-mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.0:
-  version "0.5.1"
-  resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903"
-  dependencies:
-    minimist "0.0.8"
-
-morgan@~1.2.3:
-  version "1.2.3"
-  resolved "https://registry.yarnpkg.com/morgan/-/morgan-1.2.3.tgz#3b0f1704df90255a542591abacd797891a8c40a1"
-  dependencies:
-    basic-auth "1.0.0"
-    bytes "1.0.0"
-    depd "0.4.4"
-    on-finished "2.1.0"
-
-ms@0.6.2:
-  version "0.6.2"
-  resolved "https://registry.yarnpkg.com/ms/-/ms-0.6.2.tgz#d89c2124c6fdc1353d65a8b77bf1aac4b193708c"
-
-ms@2.0.0:
-  version "2.0.0"
-  resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8"
-
-multiparty@3.3.2:
-  version "3.3.2"
-  resolved "https://registry.yarnpkg.com/multiparty/-/multiparty-3.3.2.tgz#35de6804dc19643e5249f3d3e3bdc6c8ce301d3f"
-  dependencies:
-    readable-stream "~1.1.9"
-    stream-counter "~0.2.0"
-
-mz@1:
-  version "1.3.0"
-  resolved "https://registry.yarnpkg.com/mz/-/mz-1.3.0.tgz#06f093fdd9956a06d37e1b1e81344e27478c42f0"
-  dependencies:
-    native-or-bluebird "1"
-    thenify "3"
-    thenify-all "1"
-
-nan@^2.8.0, nan@^2.9.2:
-  version "2.10.0"
-  resolved "https://registry.yarnpkg.com/nan/-/nan-2.10.0.tgz#96d0cd610ebd58d4b4de9cc0c6828cda99c7548f"
-
-nan@~0.3.0:
-  version "0.3.2"
-  resolved "https://registry.yarnpkg.com/nan/-/nan-0.3.2.tgz#0df1935cab15369075ef160ad2894107aa14dc2d"
-
-native-or-bluebird@1:
-  version "1.2.0"
-  resolved "https://registry.yarnpkg.com/native-or-bluebird/-/native-or-bluebird-1.2.0.tgz#39c47bfd7825d1fb9ffad32210ae25daadf101c9"
-
-native-or-bluebird@~1.1.2:
-  version "1.1.2"
-  resolved "https://registry.yarnpkg.com/native-or-bluebird/-/native-or-bluebird-1.1.2.tgz#3921e110232d1eb790f3dac61bb370531c7d356e"
-
-needle@^2.2.1:
-  version "2.2.2"
-  resolved "https://registry.yarnpkg.com/needle/-/needle-2.2.2.tgz#1120ca4c41f2fcc6976fd28a8968afe239929418"
-  dependencies:
-    debug "^2.1.2"
-    iconv-lite "^0.4.4"
-    sax "^1.2.4"
-
-negotiator@0.4.7:
-  version "0.4.7"
-  resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.4.7.tgz#a4160f7177ec806738631d0d3052325da42abdc8"
-
-negotiator@0.6.1:
-  version "0.6.1"
-  resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.1.tgz#2b327184e8992101177b28563fb5e7102acd0ca9"
-
-newify@~1.1.9:
-  version "1.1.9"
-  resolved "https://registry.yarnpkg.com/newify/-/newify-1.1.9.tgz#3f599bd1d44a4c38851a1bd25bbb6f7c4d72d8ff"
-
-next-tick@0.2.2:
-  version "0.2.2"
-  resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-0.2.2.tgz#75da4a927ee5887e39065880065b7336413b310d"
-
-nib@~1.0.2:
-  version "1.0.4"
-  resolved "https://registry.yarnpkg.com/nib/-/nib-1.0.4.tgz#03d397c27a231f3c9a5a190eaa68e5d79e2f0345"
-  dependencies:
-    stylus "0.45.x"
-
-node-libs-browser@^0.7.0:
-  version "0.7.0"
-  resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-0.7.0.tgz#3e272c0819e308935e26674408d7af0e1491b83b"
-  dependencies:
-    assert "^1.1.1"
-    browserify-zlib "^0.1.4"
-    buffer "^4.9.0"
-    console-browserify "^1.1.0"
-    constants-browserify "^1.0.0"
-    crypto-browserify "3.3.0"
-    domain-browser "^1.1.1"
-    events "^1.0.0"
-    https-browserify "0.0.1"
-    os-browserify "^0.2.0"
-    path-browserify "0.0.0"
-    process "^0.11.0"
-    punycode "^1.2.4"
-    querystring-es3 "^0.2.0"
-    readable-stream "^2.0.5"
-    stream-browserify "^2.0.1"
-    stream-http "^2.3.1"
-    string_decoder "^0.10.25"
-    timers-browserify "^2.0.2"
-    tty-browserify "0.0.0"
-    url "^0.11.0"
-    util "^0.10.3"
-    vm-browserify "0.0.4"
-
-node-pre-gyp@^0.10.0:
-  version "0.10.3"
-  resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.10.3.tgz#3070040716afdc778747b61b6887bf78880b80fc"
-  dependencies:
-    detect-libc "^1.0.2"
-    mkdirp "^0.5.1"
-    needle "^2.2.1"
-    nopt "^4.0.1"
-    npm-packlist "^1.1.6"
-    npmlog "^4.0.2"
-    rc "^1.2.7"
-    rimraf "^2.6.1"
-    semver "^5.3.0"
-    tar "^4"
-
-node-uuid@1.4.1:
-  version "1.4.1"
-  resolved "https://registry.yarnpkg.com/node-uuid/-/node-uuid-1.4.1.tgz#39aef510e5889a3dca9c895b506c73aae1bac048"
-
-nopt@^4.0.1:
-  version "4.0.1"
-  resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d"
-  dependencies:
-    abbrev "1"
-    osenv "^0.1.4"
-
-normalize-path@^2.0.0, normalize-path@^2.0.1:
-  version "2.1.1"
-  resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9"
-  dependencies:
-    remove-trailing-separator "^1.0.1"
-
-npm-bundled@^1.0.1:
-  version "1.0.5"
-  resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.0.5.tgz#3c1732b7ba936b3a10325aef616467c0ccbcc979"
-
-npm-packlist@^1.1.6:
-  version "1.1.11"
-  resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.1.11.tgz#84e8c683cbe7867d34b1d357d893ce29e28a02de"
-  dependencies:
-    ignore-walk "^3.0.1"
-    npm-bundled "^1.0.1"
-
-npmlog@^4.0.2:
-  version "4.1.2"
-  resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b"
-  dependencies:
-    are-we-there-yet "~1.1.2"
-    console-control-strings "~1.1.0"
-    gauge "~2.7.3"
-    set-blocking "~2.0.0"
-
-number-is-nan@^1.0.0:
-  version "1.0.1"
-  resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d"
-
-object-assign@^2.0.0:
-  version "2.1.1"
-  resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-2.1.1.tgz#43c36e5d569ff8e4816c4efa8be02d26967c18aa"
-
-object-assign@^4, object-assign@^4.0.1, object-assign@^4.1.0:
-  version "4.1.1"
-  resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
-
-object-component@0.0.3:
-  version "0.0.3"
-  resolved "https://registry.yarnpkg.com/object-component/-/object-component-0.0.3.tgz#f0c69aa50efc95b866c186f400a33769cb2f1291"
-
-object.omit@^2.0.0:
-  version "2.0.1"
-  resolved "https://registry.yarnpkg.com/object.omit/-/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa"
-  dependencies:
-    for-own "^0.1.4"
-    is-extendable "^0.1.1"
-
-on-finished@2.1.0:
-  version "2.1.0"
-  resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.1.0.tgz#0c539f09291e8ffadde0c8a25850fb2cedc7022d"
-  dependencies:
-    ee-first "1.0.5"
-
-on-finished@~2.3.0:
-  version "2.3.0"
-  resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947"
-  dependencies:
-    ee-first "1.1.1"
-
-on-headers@~1.0.0, on-headers@~1.0.1:
-  version "1.0.1"
-  resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.1.tgz#928f5d0f470d49342651ea6794b0857c100693f7"
-
-once@^1.3.0:
-  version "1.4.0"
-  resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
-  dependencies:
-    wrappy "1"
-
-open@0.0.5:
-  version "0.0.5"
-  resolved "https://registry.yarnpkg.com/open/-/open-0.0.5.tgz#42c3e18ec95466b6bf0dc42f3a2945c3f0cad8fc"
-
-optimist@*, optimist@~0.6.0, optimist@~0.6.1:
-  version "0.6.1"
-  resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.6.1.tgz#da3ea74686fa21a19a111c326e90eb15a0196686"
-  dependencies:
-    minimist "~0.0.1"
-    wordwrap "~0.0.2"
-
-optimist@~0.3.5:
-  version "0.3.7"
-  resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.3.7.tgz#c90941ad59e4273328923074d2cf2e7cbc6ec0d9"
-  dependencies:
-    wordwrap "~0.0.2"
-
-optionator@~0.8.1:
-  version "0.8.2"
-  resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.2.tgz#364c5e409d3f4d6301d6c0b4c05bba50180aeb64"
-  dependencies:
-    deep-is "~0.1.3"
-    fast-levenshtein "~2.0.4"
-    levn "~0.3.0"
-    prelude-ls "~1.1.2"
-    type-check "~0.3.2"
-    wordwrap "~1.0.0"
-
-options@>=0.0.5:
-  version "0.0.6"
-  resolved "https://registry.yarnpkg.com/options/-/options-0.0.6.tgz#ec22d312806bb53e731773e7cdaefcf1c643128f"
-
-optparse@1.0.3:
-  version "1.0.3"
-  resolved "https://registry.yarnpkg.com/optparse/-/optparse-1.0.3.tgz#2ff49a3d691b90b0b9a1be9117f292373eb1bd66"
-
-original@>=0.0.5:
-  version "1.0.2"
-  resolved "https://registry.yarnpkg.com/original/-/original-1.0.2.tgz#e442a61cffe1c5fd20a65f3261c26663b303f25f"
-  dependencies:
-    url-parse "^1.4.3"
-
-os-browserify@^0.2.0:
-  version "0.2.1"
-  resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.2.1.tgz#63fc4ccee5d2d7763d26bbf8601078e6c2e0044f"
-
-os-homedir@^1.0.0:
-  version "1.0.2"
-  resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3"
-
-os-tmpdir@^1.0.0:
-  version "1.0.2"
-  resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274"
-
-osenv@^0.1.4:
-  version "0.1.5"
-  resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410"
-  dependencies:
-    os-homedir "^1.0.0"
-    os-tmpdir "^1.0.0"
-
-pako@~0.2.0:
-  version "0.2.9"
-  resolved "https://registry.yarnpkg.com/pako/-/pako-0.2.9.tgz#f3f7522f4ef782348da8161bad9ecfd51bf83a75"
-
-parse-glob@^3.0.4:
-  version "3.0.4"
-  resolved "https://registry.yarnpkg.com/parse-glob/-/parse-glob-3.0.4.tgz#b2c376cfb11f35513badd173ef0bb6e3a388391c"
-  dependencies:
-    glob-base "^0.3.0"
-    is-dotfile "^1.0.0"
-    is-extglob "^1.0.0"
-    is-glob "^2.0.0"
-
-parsejson@0.0.1:
-  version "0.0.1"
-  resolved "https://registry.yarnpkg.com/parsejson/-/parsejson-0.0.1.tgz#9b10c6c0d825ab589e685153826de0a3ba278bcc"
-  dependencies:
-    better-assert "~1.0.0"
-
-parseqs@0.0.2:
-  version "0.0.2"
-  resolved "https://registry.yarnpkg.com/parseqs/-/parseqs-0.0.2.tgz#9dfe70b2cddac388bde4f35b1f240fa58adbe6c7"
-  dependencies:
-    better-assert "~1.0.0"
-
-parseuri@0.0.2:
-  version "0.0.2"
-  resolved "https://registry.yarnpkg.com/parseuri/-/parseuri-0.0.2.tgz#db41878f2d6964718be870b3140973d8093be156"
-  dependencies:
-    better-assert "~1.0.0"
-
-parseurl@~1.3.0, parseurl@~1.3.2:
-  version "1.3.2"
-  resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.2.tgz#fc289d4ed8993119460c156253262cdc8de65bf3"
-
-path-browserify@0.0.0:
-  version "0.0.0"
-  resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.0.tgz#a0b870729aae214005b7d5032ec2cbbb0fb4451a"
-
-path-is-absolute@^1.0.0:
-  version "1.0.1"
-  resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
-
-path-to-regexp@0.1.7:
-  version "0.1.7"
-  resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c"
-
-pause@0.0.1:
-  version "0.0.1"
-  resolved "https://registry.yarnpkg.com/pause/-/pause-0.0.1.tgz#1d408b3fdb76923b9543d96fb4c9dfd535d9cb5d"
-
-pbkdf2-compat@2.0.1:
-  version "2.0.1"
-  resolved "https://registry.yarnpkg.com/pbkdf2-compat/-/pbkdf2-compat-2.0.1.tgz#b6e0c8fa99494d94e0511575802a59a5c142f288"
-
-prelude-ls@~1.1.2:
-  version "1.1.2"
-  resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54"
-
-preserve@^0.2.0:
-  version "0.2.0"
-  resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b"
-
-printj@~1.1.0, printj@~1.1.2:
-  version "1.1.2"
-  resolved "https://registry.yarnpkg.com/printj/-/printj-1.1.2.tgz#d90deb2975a8b9f600fb3a1c94e3f4c53c78a222"
-
-private@^0.1.6, private@~0.1.5:
-  version "0.1.8"
-  resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff"
-
-process-nextick-args@~2.0.0:
-  version "2.0.0"
-  resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.0.tgz#a37d732f4271b4ab1ad070d35508e8290788ffaa"
-
-process@^0.11.0:
-  version "0.11.10"
-  resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182"
-
-proxy-addr@1.0.1:
-  version "1.0.1"
-  resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-1.0.1.tgz#c7c566d5eb4e3fad67eeb9c77c5558ccc39b88a8"
-  dependencies:
-    ipaddr.js "0.1.2"
-
-proxy-addr@~2.0.3:
-  version "2.0.4"
-  resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.4.tgz#ecfc733bf22ff8c6f407fa275327b9ab67e48b93"
-  dependencies:
-    forwarded "~0.1.2"
-    ipaddr.js "1.8.0"
-
-prr@~1.0.1:
-  version "1.0.1"
-  resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476"
-
-punycode@1.3.2:
-  version "1.3.2"
-  resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d"
-
-punycode@^1.2.4:
-  version "1.4.1"
-  resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e"
-
-q@^1.1.2:
-  version "1.5.1"
-  resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7"
-
-qs@1.2.0:
-  version "1.2.0"
-  resolved "https://registry.yarnpkg.com/qs/-/qs-1.2.0.tgz#ed079be28682147e6fd9a34cc2b0c1e0ec6453ee"
-
-qs@2.2.2:
-  version "2.2.2"
-  resolved "https://registry.yarnpkg.com/qs/-/qs-2.2.2.tgz#dfe783f1854b1ac2b3ade92775ad03e27e03218c"
-
-qs@6.5.1:
-  version "6.5.1"
-  resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.1.tgz#349cdf6eef89ec45c12d7d5eb3fc0c870343a6d8"
-
-querystring-es3@^0.2.0:
-  version "0.2.1"
-  resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73"
-
-querystring@0.2.0:
-  version "0.2.0"
-  resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620"
-
-querystringify@^2.0.0:
-  version "2.0.0"
-  resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.0.0.tgz#fa3ed6e68eb15159457c89b37bc6472833195755"
-
-randomatic@^3.0.0:
-  version "3.1.0"
-  resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-3.1.0.tgz#36f2ca708e9e567f5ed2ec01949026d50aa10116"
-  dependencies:
-    is-number "^4.0.0"
-    kind-of "^6.0.0"
-    math-random "^1.0.1"
-
-range-parser@1.0.0:
-  version "1.0.0"
-  resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.0.0.tgz#a4b264cfe0be5ce36abe3765ac9c2a248746dbc0"
-
-range-parser@^1.0.3, range-parser@~1.2.0:
-  version "1.2.0"
-  resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.0.tgz#f49be6b487894ddc40dcc94a322f611092e00d5e"
-
-range-parser@~1.0.0:
-  version "1.0.3"
-  resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.0.3.tgz#6872823535c692e2c2a0103826afd82c2e0ff175"
-
-raw-body@1.3.0:
-  version "1.3.0"
-  resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-1.3.0.tgz#978230a156a5548f42eef14de22d0f4f610083d1"
-  dependencies:
-    bytes "1"
-    iconv-lite "0.4.4"
-
-raw-body@2.3.2:
-  version "2.3.2"
-  resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.3.2.tgz#bcd60c77d3eb93cde0050295c3f379389bc88f89"
-  dependencies:
-    bytes "3.0.0"
-    http-errors "1.6.2"
-    iconv-lite "0.4.19"
-    unpipe "1.0.0"
-
-rc@^1.2.7:
-  version "1.2.8"
-  resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed"
-  dependencies:
-    deep-extend "^0.6.0"
-    ini "~1.3.0"
-    minimist "^1.2.0"
-    strip-json-comments "~2.0.1"
-
-react-basic-tabs@^1.0.3:
-  version "1.0.3"
-  resolved "https://registry.yarnpkg.com/react-basic-tabs/-/react-basic-tabs-1.0.3.tgz#b844fef48cf7c645cf6355f1cc07a3ae5d157190"
-  dependencies:
-    copy-utils "^1.0.0"
-    functionally "^0.6.2"
-    react "^0.12.0"
-
-react-hot-loader@^0.5.0:
-  version "0.5.0"
-  resolved "https://registry.yarnpkg.com/react-hot-loader/-/react-hot-loader-0.5.0.tgz#bd0378ede2e159dd17fcb27a1d9e7110b911b03f"
-  dependencies:
-    next-tick "0.2.2"
-    source-map "0.1.40"
-
-react@^0.12.0, react@^0.12.1:
-  version "0.12.2"
-  resolved "https://registry.yarnpkg.com/react/-/react-0.12.2.tgz#1c4f0b08818146eeab4f0ab39257e0aa52027e00"
-  dependencies:
-    envify "^3.0.0"
-
-readable-stream@1.0.27-1:
-  version "1.0.27-1"
-  resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.0.27-1.tgz#6b67983c20357cefd07f0165001a16d710d91078"
-  dependencies:
-    core-util-is "~1.0.0"
-    inherits "~2.0.1"
-    isarray "0.0.1"
-    string_decoder "~0.10.x"
-
-readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.5, readable-stream@^2.0.6, readable-stream@^2.2.2, readable-stream@^2.3.6:
-  version "2.3.6"
-  resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf"
-  dependencies:
-    core-util-is "~1.0.0"
-    inherits "~2.0.3"
-    isarray "~1.0.0"
-    process-nextick-args "~2.0.0"
-    safe-buffer "~5.1.1"
-    string_decoder "~1.1.1"
-    util-deprecate "~1.0.1"
-
-readable-stream@~1.1.8, readable-stream@~1.1.9:
-  version "1.1.14"
-  resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.14.tgz#7cf4c54ef648e3813084c636dd2079e166c081d9"
-  dependencies:
-    core-util-is "~1.0.0"
-    inherits "~2.0.1"
-    isarray "0.0.1"
-    string_decoder "~0.10.x"
-
-readdirp@^2.0.0:
-  version "2.1.0"
-  resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.1.0.tgz#4ed0ad060df3073300c48440373f72d1cc642d78"
-  dependencies:
-    graceful-fs "^4.1.2"
-    minimatch "^3.0.2"
-    readable-stream "^2.0.2"
-    set-immediate-shim "^1.0.1"
-
-recast@^0.11.17:
-  version "0.11.23"
-  resolved "https://registry.yarnpkg.com/recast/-/recast-0.11.23.tgz#451fd3004ab1e4df9b4e4b66376b2a21912462d3"
-  dependencies:
-    ast-types "0.9.6"
-    esprima "~3.1.0"
-    private "~0.1.5"
-    source-map "~0.5.0"
-
-redis@0.12.x:
-  version "0.12.1"
-  resolved "https://registry.yarnpkg.com/redis/-/redis-0.12.1.tgz#64df76ad0fc8acebaebd2a0645e8a48fac49185e"
-
-reduce-component@1.0.1:
-  version "1.0.1"
-  resolved "https://registry.yarnpkg.com/reduce-component/-/reduce-component-1.0.1.tgz#e0c93542c574521bea13df0f9488ed82ab77c5da"
-
-regex-cache@^0.4.2:
-  version "0.4.4"
-  resolved "https://registry.yarnpkg.com/regex-cache/-/regex-cache-0.4.4.tgz#75bdc58a2a1496cec48a12835bc54c8d562336dd"
-  dependencies:
-    is-equal-shallow "^0.1.3"
-
-remove-trailing-separator@^1.0.1:
-  version "1.1.0"
-  resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef"
-
-repeat-element@^1.1.2:
-  version "1.1.3"
-  resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.3.tgz#782e0d825c0c5a3bb39731f84efee6b742e6b1ce"
-
-repeat-string@^1.5.2:
-  version "1.6.1"
-  resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637"
-
-requires-port@^1.0.0:
-  version "1.0.0"
-  resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff"
-
-response-time@~2.0.1:
-  version "2.0.1"
-  resolved "https://registry.yarnpkg.com/response-time/-/response-time-2.0.1.tgz#c6d2cbadeac4cb251b21016fe182640c02aff343"
-  dependencies:
-    on-headers "~1.0.0"
-
-right-align@^0.1.1:
-  version "0.1.3"
-  resolved "https://registry.yarnpkg.com/right-align/-/right-align-0.1.3.tgz#61339b722fe6a3515689210d24e14c96148613ef"
-  dependencies:
-    align-text "^0.1.1"
-
-rimraf@^2.6.1:
-  version "2.6.2"
-  resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.2.tgz#2ed8150d24a16ea8651e6d6ef0f47c4158ce7a36"
-  dependencies:
-    glob "^7.0.5"
-
-ripemd160@0.2.0:
-  version "0.2.0"
-  resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-0.2.0.tgz#2bf198bde167cacfa51c0a928e84b68bbe171fce"
-
-rndm@~1.1.0:
-  version "1.1.1"
-  resolved "https://registry.yarnpkg.com/rndm/-/rndm-1.1.1.tgz#efcef4374021f78b63de6226b5985120269d64f1"
-
-safe-buffer@5.1.1:
-  version "5.1.1"
-  resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853"
-
-safe-buffer@5.1.2, safe-buffer@^5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1:
-  version "5.1.2"
-  resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d"
+  "integrity" "sha512-O91OcV/NbdmQJPHaRu2ekSP7bqFRLWgqSwaJvqHPZHUwmHBagQYTOra29+LnzzG3lZkXH1ANzHzfCxtAPM9HMA=="
+  "resolved" "https://github.com/component/global/archive/v2.0.1.tar.gz"
+  "version" "2.0.1"
+
+"graceful-fs@^4.1.2":
+  "integrity" "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg="
+  "resolved" "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz"
+  "version" "4.1.11"
+
+"graceful-readlink@>= 1.0.0":
+  "integrity" "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU="
+  "resolved" "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz"
+  "version" "1.0.1"
+
+"harb@~0.1.1":
+  "integrity" "sha1-uCObri8HJLZaqvLnTp6xWgTbUOs="
+  "resolved" "https://registry.npmjs.org/harb/-/harb-0.1.1.tgz"
+  "version" "0.1.1"
+  dependencies:
+    "babyparse" "0.2.1"
+    "codepage" ""
+    "commander" ""
+    "exit-on-epipe" ""
+    "ssf" "0.8.2"
+
+"has-binary-data@0.1.1":
+  "integrity" "sha1-4QdJ+4eCilLflvQIZYfrSgOWZDk="
+  "resolved" "https://registry.npmjs.org/has-binary-data/-/has-binary-data-0.1.1.tgz"
+  "version" "0.1.1"
+  dependencies:
+    "isarray" "0.0.1"
+
+"has-cors@1.0.3":
+  "integrity" "sha1-UCrLmzEE2sM90mMOry+IiwuvTLM="
+  "resolved" "https://registry.npmjs.org/has-cors/-/has-cors-1.0.3.tgz"
+  "version" "1.0.3"
+  dependencies:
+    "global" "https://github.com/component/global/archive/v2.0.1.tar.gz"
+
+"has-flag@^1.0.0":
+  "integrity" "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo="
+  "resolved" "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz"
+  "version" "1.0.0"
+
+"http-errors@~1.6.2":
+  "integrity" "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0="
+  "resolved" "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz"
+  "version" "1.6.3"
+  dependencies:
+    "depd" "~1.1.2"
+    "inherits" "2.0.3"
+    "setprototypeof" "1.1.0"
+    "statuses" ">= 1.4.0 < 2"
+
+"http-errors@1.6.2":
+  "integrity" "sha1-CgAsyFcHGSp+eUbO7cERVfYOxzY="
+  "resolved" "https://registry.npmjs.org/http-errors/-/http-errors-1.6.2.tgz"
+  "version" "1.6.2"
+  dependencies:
+    "depd" "1.1.1"
+    "inherits" "2.0.3"
+    "setprototypeof" "1.0.3"
+    "statuses" ">= 1.3.1 < 2"
+
+"http-parser-js@>=0.4.0":
+  "integrity" "sha1-O9bW/ebjFyyTNMOzO2wZPYD+ETc="
+  "resolved" "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.4.13.tgz"
+  "version" "0.4.13"
+
+"http-proxy-middleware@~0.17.1":
+  "integrity" "sha1-ZC6ISIUdZvCdTxJJEoRtuutBuDM="
+  "resolved" "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.17.4.tgz"
+  "version" "0.17.4"
+  dependencies:
+    "http-proxy" "^1.16.2"
+    "is-glob" "^3.1.0"
+    "lodash" "^4.17.2"
+    "micromatch" "^2.3.11"
+
+"http-proxy@^1.16.2":
+  "integrity" "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ=="
+  "resolved" "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz"
+  "version" "1.18.1"
+  dependencies:
+    "eventemitter3" "^4.0.0"
+    "follow-redirects" "^1.0.0"
+    "requires-port" "^1.0.0"
+
+"https-browserify@0.0.1":
+  "integrity" "sha1-P5E2XKvmC3ftDruiS0VOPgnZWoI="
+  "resolved" "https://registry.npmjs.org/https-browserify/-/https-browserify-0.0.1.tgz"
+  "version" "0.0.1"
+
+"iconv-lite@^0.4.13", "iconv-lite@^0.4.5":
+  "integrity" "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA=="
+  "resolved" "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz"
+  "version" "0.4.24"
+  dependencies:
+    "safer-buffer" ">= 2.1.2 < 3"
+
+"iconv-lite@0.4.19":
+  "integrity" "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ=="
+  "resolved" "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz"
+  "version" "0.4.19"
+
+"iconv-lite@0.4.4":
+  "integrity" "sha1-6V8uQdsHNfwhZS94J6XuMuY8g6g="
+  "resolved" "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.4.tgz"
+  "version" "0.4.4"
+
+"ieee754@^1.1.4":
+  "integrity" "sha512-GguP+DRY+pJ3soyIiGPTvdiVXjZ+DbXOxGpXn3eMvNW4x4irjqXm4wHKscC+TfxSJ0yw/S1F24tqdMNsMZTiLA=="
+  "resolved" "https://registry.npmjs.org/ieee754/-/ieee754-1.1.12.tgz"
+  "version" "1.1.12"
+
+"indexof@0.0.1":
+  "integrity" "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10="
+  "resolved" "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz"
+  "version" "0.0.1"
+
+"inflight@^1.0.4":
+  "integrity" "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk="
+  "resolved" "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz"
+  "version" "1.0.6"
+  dependencies:
+    "once" "^1.3.0"
+    "wrappy" "1"
+
+"inherits@^2.0.1", "inherits@^2.0.3", "inherits@~2.0.1", "inherits@~2.0.3", "inherits@2", "inherits@2.0.3":
+  "integrity" "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4="
+  "resolved" "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz"
+  "version" "2.0.3"
+
+"inherits@2.0.1":
+  "integrity" "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE="
+  "resolved" "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz"
+  "version" "2.0.1"
+
+"interpret@^0.6.4":
+  "integrity" "sha1-/s16GOfOXKar+5U+H4YhOknxYls="
+  "resolved" "https://registry.npmjs.org/interpret/-/interpret-0.6.6.tgz"
+  "version" "0.6.6"
+
+"ipaddr.js@0.1.2":
+  "integrity" "sha1-ah/T2FT1ACllw017vNm0qNSwRn4="
+  "resolved" "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-0.1.2.tgz"
+  "version" "0.1.2"
+
+"ipaddr.js@1.8.0":
+  "integrity" "sha1-6qM9bd16zo9/b+DJygRA5wZzix4="
+  "resolved" "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.8.0.tgz"
+  "version" "1.8.0"
+
+"is-binary-path@^1.0.0":
+  "integrity" "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg="
+  "resolved" "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz"
+  "version" "1.0.1"
+  dependencies:
+    "binary-extensions" "^1.0.0"
+
+"is-buffer@^1.1.5":
+  "integrity" "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w=="
+  "resolved" "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz"
+  "version" "1.1.6"
+
+"is-dotfile@^1.0.0":
+  "integrity" "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE="
+  "resolved" "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz"
+  "version" "1.0.3"
+
+"is-equal-shallow@^0.1.3":
+  "integrity" "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ="
+  "resolved" "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz"
+  "version" "0.1.3"
+  dependencies:
+    "is-primitive" "^2.0.0"
+
+"is-extendable@^0.1.1":
+  "integrity" "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik="
+  "resolved" "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz"
+  "version" "0.1.1"
+
+"is-extglob@^1.0.0":
+  "integrity" "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA="
+  "resolved" "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz"
+  "version" "1.0.0"
+
+"is-extglob@^2.1.0":
+  "integrity" "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI="
+  "resolved" "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz"
+  "version" "2.1.1"
+
+"is-glob@^2.0.0", "is-glob@^2.0.1":
+  "integrity" "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM="
+  "resolved" "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz"
+  "version" "2.0.1"
+  dependencies:
+    "is-extglob" "^1.0.0"
+
+"is-glob@^3.1.0":
+  "integrity" "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo="
+  "resolved" "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz"
+  "version" "3.1.0"
+  dependencies:
+    "is-extglob" "^2.1.0"
+
+"is-number@^2.1.0":
+  "integrity" "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8="
+  "resolved" "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz"
+  "version" "2.1.0"
+  dependencies:
+    "kind-of" "^3.0.2"
+
+"is-number@^4.0.0":
+  "integrity" "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ=="
+  "resolved" "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz"
+  "version" "4.0.0"
+
+"is-posix-bracket@^0.1.0":
+  "integrity" "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q="
+  "resolved" "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz"
+  "version" "0.1.1"
+
+"is-primitive@^2.0.0":
+  "integrity" "sha1-IHurkWOEmcB7Kt8kCkGochADRXU="
+  "resolved" "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz"
+  "version" "2.0.0"
+
+"isarray@^1.0.0":
+  "integrity" "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE="
+  "resolved" "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz"
+  "version" "1.0.0"
+
+"isarray@~1.0.0":
+  "integrity" "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE="
+  "resolved" "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz"
+  "version" "1.0.0"
+
+"isarray@0.0.1":
+  "integrity" "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8="
+  "resolved" "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz"
+  "version" "0.0.1"
+
+"isarray@1.0.0":
+  "integrity" "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE="
+  "resolved" "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz"
+  "version" "1.0.0"
+
+"isobject@^2.0.0":
+  "integrity" "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk="
+  "resolved" "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz"
+  "version" "2.1.0"
+  dependencies:
+    "isarray" "1.0.0"
+
+"j@0.4.5":
+  "integrity" "sha1-As8p8d2+VOUnJj0HVNbo0hemBk4="
+  "resolved" "https://registry.npmjs.org/j/-/j-0.4.5.tgz"
+  "version" "0.4.5"
+  dependencies:
+    "commander" ""
+    "concat-stream" ""
+    "exit-on-epipe" ""
+    "harb" "~0.1.1"
+    "xlsjs" "~0.7.6"
+    "xlsx" "~0.9.1"
+
+"json3@^3.3.2":
+  "integrity" "sha1-PAQ0dD35Pi9cQq7nsZvLSDV19OE="
+  "resolved" "https://registry.npmjs.org/json3/-/json3-3.3.2.tgz"
+  "version" "3.3.2"
+
+"json3@3.2.6":
+  "integrity" "sha1-9u/JPAagTemuxTBT3yVZuxniA4s="
+  "resolved" "https://registry.npmjs.org/json3/-/json3-3.2.6.tgz"
+  "version" "3.2.6"
+
+"json5@^0.5.0":
+  "integrity" "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE="
+  "resolved" "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz"
+  "version" "0.5.1"
+
+"json5@^1.0.1":
+  "integrity" "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow=="
+  "resolved" "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz"
+  "version" "1.0.1"
+  dependencies:
+    "minimist" "^1.2.0"
+
+"jstransform@^11.0.3":
+  "integrity" "sha1-CaeJk+CuTU70SH9hVakfYZDLQiM="
+  "resolved" "https://registry.npmjs.org/jstransform/-/jstransform-11.0.3.tgz"
+  "version" "11.0.3"
+  dependencies:
+    "base62" "^1.1.0"
+    "commoner" "^0.10.1"
+    "esprima-fb" "^15001.1.0-dev-harmony-fb"
+    "object-assign" "^2.0.0"
+    "source-map" "^0.4.2"
+
+"keypress@0.1.x":
+  "integrity" "sha1-SjGI1CkbZrT2XtuZ+AaqmuKTWSo="
+  "resolved" "https://registry.npmjs.org/keypress/-/keypress-0.1.0.tgz"
+  "version" "0.1.0"
+
+"kind-of@^3.0.2":
+  "integrity" "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ="
+  "resolved" "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz"
+  "version" "3.2.2"
+  dependencies:
+    "is-buffer" "^1.1.5"
+
+"kind-of@^6.0.0":
+  "integrity" "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw=="
+  "resolved" "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz"
+  "version" "6.0.3"
+
+"lazy-cache@^1.0.3":
+  "integrity" "sha1-odePw6UEdMuAhF07O24dpJpEbo4="
+  "resolved" "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz"
+  "version" "1.0.4"
+
+"levn@~0.3.0":
+  "integrity" "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4="
+  "resolved" "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz"
+  "version" "0.3.0"
+  dependencies:
+    "prelude-ls" "~1.1.2"
+    "type-check" "~0.3.2"
+
+"livescript-loader@^0.1.5":
+  "integrity" "sha1-6oDmq5pB8zDREAAAGZnuxnXN91U="
+  "resolved" "https://registry.npmjs.org/livescript-loader/-/livescript-loader-0.1.6.tgz"
+  "version" "0.1.6"
+  dependencies:
+    "livescript" "^1.4.0"
+    "loader-utils" "0.2.x"
+
+"livescript@^1.4.0", "livescript@1.5.x":
+  "integrity" "sha1-T+cSHEEhfkYI4zTrnL4XYuY+VWY="
+  "resolved" "https://registry.npmjs.org/livescript/-/livescript-1.5.0.tgz"
+  "version" "1.5.0"
+  dependencies:
+    "optionator" "~0.8.1"
+    "prelude-ls" "~1.1.2"
+    "source-map" "^0.5.6"
+
+"loader-utils@^0.2.11", "loader-utils@^0.2.5", "loader-utils@~0.2.2", "loader-utils@0.2.x":
+  "integrity" "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g="
+  "resolved" "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.17.tgz"
+  "version" "0.2.17"
+  dependencies:
+    "big.js" "^3.1.3"
+    "emojis-list" "^2.0.0"
+    "json5" "^0.5.0"
+    "object-assign" "^4.0.1"
+
+"loader-utils@^1.0.2":
+  "integrity" "sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA=="
+  "resolved" "https://registry.npmjs.org/loader-utils/-/loader-utils-1.2.3.tgz"
+  "version" "1.2.3"
+  dependencies:
+    "big.js" "^5.2.2"
+    "emojis-list" "^2.0.0"
+    "json5" "^1.0.1"
+
+"lodash.clonedeep@^4.5.0":
+  "integrity" "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8="
+  "resolved" "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz"
+  "version" "4.5.0"
+
+"lodash@^4.17.2":
+  "integrity" "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA=="
+  "resolved" "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz"
+  "version" "4.17.20"
+
+"longest@^1.0.1":
+  "integrity" "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc="
+  "resolved" "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz"
+  "version" "1.0.1"
+
+"math-random@^1.0.1":
+  "integrity" "sha1-izqsWIuKZuSXXjzepn97sylgH6w="
+  "resolved" "https://registry.npmjs.org/math-random/-/math-random-1.0.1.tgz"
+  "version" "1.0.1"
+
+"media-typer@0.2.0":
+  "integrity" "sha1-2KBlITrf6qLnYyGitt2jb/YzWYQ="
+  "resolved" "https://registry.npmjs.org/media-typer/-/media-typer-0.2.0.tgz"
+  "version" "0.2.0"
+
+"media-typer@0.3.0":
+  "integrity" "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g="
+  "resolved" "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz"
+  "version" "0.3.0"
+
+"memory-fs@^0.2.0":
+  "integrity" "sha1-8rslNovBIeORwlIN6Slpyu4KApA="
+  "resolved" "https://registry.npmjs.org/memory-fs/-/memory-fs-0.2.0.tgz"
+  "version" "0.2.0"
+
+"memory-fs@~0.3.0":
+  "integrity" "sha1-e8xrYp46Q+hx1+Kaymrop/FcuyA="
+  "resolved" "https://registry.npmjs.org/memory-fs/-/memory-fs-0.3.0.tgz"
+  "version" "0.3.0"
+  dependencies:
+    "errno" "^0.1.3"
+    "readable-stream" "^2.0.1"
+
+"memory-fs@~0.4.1":
+  "integrity" "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI="
+  "resolved" "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz"
+  "version" "0.4.1"
+  dependencies:
+    "errno" "^0.1.3"
+    "readable-stream" "^2.0.1"
+
+"merge-descriptors@0.0.2":
+  "integrity" "sha1-w2pSp4FDdRPFcnXzndnTF1FKyMc="
+  "resolved" "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-0.0.2.tgz"
+  "version" "0.0.2"
+
+"merge-descriptors@1.0.1":
+  "integrity" "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E="
+  "resolved" "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz"
+  "version" "1.0.1"
+
+"method-override@~2.1.3":
+  "integrity" "sha1-UR9BxPsdzNtqsYRNpdxuqBt8ETU="
+  "resolved" "https://registry.npmjs.org/method-override/-/method-override-2.1.3.tgz"
+  "version" "2.1.3"
+  dependencies:
+    "debug" "1.0.4"
+    "methods" "1.1.0"
+    "parseurl" "~1.3.0"
+    "vary" "~1.0.0"
+
+"methods@~1.1.2":
+  "integrity" "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4="
+  "resolved" "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz"
+  "version" "1.1.2"
+
+"methods@1.0.1":
+  "integrity" "sha1-dbyRlD3/19oDfPPusO1zoAN80Us="
+  "resolved" "https://registry.npmjs.org/methods/-/methods-1.0.1.tgz"
+  "version" "1.0.1"
+
+"methods@1.1.0":
+  "integrity" "sha1-XcpO4S31L/OwVhRZhqjwHLyGQ28="
+  "resolved" "https://registry.npmjs.org/methods/-/methods-1.1.0.tgz"
+  "version" "1.1.0"
+
+"micromatch@^2.1.5", "micromatch@^2.3.11":
+  "integrity" "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU="
+  "resolved" "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz"
+  "version" "2.3.11"
+  dependencies:
+    "arr-diff" "^2.0.0"
+    "array-unique" "^0.2.1"
+    "braces" "^1.8.2"
+    "expand-brackets" "^0.1.4"
+    "extglob" "^0.3.1"
+    "filename-regex" "^2.0.0"
+    "is-extglob" "^1.0.0"
+    "is-glob" "^2.0.1"
+    "kind-of" "^3.0.2"
+    "normalize-path" "^2.0.1"
+    "object.omit" "^2.0.0"
+    "parse-glob" "^3.0.4"
+    "regex-cache" "^0.4.2"
+
+"mime-db@>= 1.34.0 < 2", "mime-db@~1.35.0":
+  "integrity" "sha512-JWT/IcCTsB0Io3AhWUMjRqucrHSPsSf2xKLaRldJVULioggvkJvggZ3VXNNSRkCddE6D+BUI4HEIZIA2OjwIvg=="
+  "resolved" "https://registry.npmjs.org/mime-db/-/mime-db-1.35.0.tgz"
+  "version" "1.35.0"
+
+"mime-types@~1.0.0":
+  "integrity" "sha1-mVrhOSq4r/y/yyZB3QVOlDwNXc4="
+  "resolved" "https://registry.npmjs.org/mime-types/-/mime-types-1.0.2.tgz"
+  "version" "1.0.2"
+
+"mime-types@~1.0.1":
+  "integrity" "sha1-mVrhOSq4r/y/yyZB3QVOlDwNXc4="
+  "resolved" "https://registry.npmjs.org/mime-types/-/mime-types-1.0.2.tgz"
+  "version" "1.0.2"
+
+"mime-types@~2.1.17", "mime-types@~2.1.18":
+  "integrity" "sha512-P1tKYHVSZ6uFo26mtnve4HQFE3koh1UWVkp8YUC+ESBHe945xWSoXuHHiGarDqcEZ+whpCDnlNw5LON0kLo+sw=="
+  "resolved" "https://registry.npmjs.org/mime-types/-/mime-types-2.1.19.tgz"
+  "version" "2.1.19"
+  dependencies:
+    "mime-db" "~1.35.0"
+
+"mime@^1.5.0":
+  "integrity" "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg=="
+  "resolved" "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz"
+  "version" "1.6.0"
+
+"mime@~1.2.11", "mime@1.2.11":
+  "integrity" "sha1-WCA+7Ybjpe8XrtK32evUfwpg3RA="
+  "resolved" "https://registry.npmjs.org/mime/-/mime-1.2.11.tgz"
+  "version" "1.2.11"
+
+"mime@1.4.1":
+  "integrity" "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ=="
+  "resolved" "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz"
+  "version" "1.4.1"
+
+"minimatch@*", "minimatch@^3.0.2", "minimatch@2 || 3":
+  "integrity" "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA=="
+  "resolved" "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz"
+  "version" "3.0.4"
+  dependencies:
+    "brace-expansion" "^1.1.7"
+
+"minimist@^1.2.0":
+  "integrity" "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ="
+  "resolved" "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz"
+  "version" "1.2.0"
+
+"minimist@^1.2.5":
+  "integrity" "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw=="
+  "resolved" "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz"
+  "version" "1.2.5"
+
+"minimist@~0.0.1", "minimist@0.0.8":
+  "integrity" "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0="
+  "resolved" "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz"
+  "version" "0.0.8"
+
+"mkdirp@^0.5.0", "mkdirp@~0.5.0":
+  "integrity" "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ=="
+  "resolved" "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz"
+  "version" "0.5.5"
+  dependencies:
+    "minimist" "^1.2.5"
+
+"mkdirp@0.3.x":
+  "integrity" "sha1-3j5fiWHIjHh+4TaN+EmsRBPsqNc="
+  "resolved" "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.5.tgz"
+  "version" "0.3.5"
+
+"mkdirp@0.5.0":
+  "integrity" "sha1-HXMHam35hs2TROFecfzAWkyavxI="
+  "resolved" "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.0.tgz"
+  "version" "0.5.0"
+  dependencies:
+    "minimist" "0.0.8"
+
+"morgan@~1.2.3":
+  "integrity" "sha1-Ow8XBN+QJVpUJZGrrNeXiRqMQKE="
+  "resolved" "https://registry.npmjs.org/morgan/-/morgan-1.2.3.tgz"
+  "version" "1.2.3"
+  dependencies:
+    "basic-auth" "1.0.0"
+    "bytes" "1.0.0"
+    "depd" "0.4.4"
+    "on-finished" "2.1.0"
+
+"ms@0.6.2":
+  "integrity" "sha1-2JwhJMb9wTU9Zai3e/GqxLGTcIw="
+  "resolved" "https://registry.npmjs.org/ms/-/ms-0.6.2.tgz"
+  "version" "0.6.2"
+
+"ms@2.0.0":
+  "integrity" "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
+  "resolved" "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz"
+  "version" "2.0.0"
+
+"multiparty@3.3.2":
+  "integrity" "sha1-Nd5oBNwZZD5SSfPT473GyM4wHT8="
+  "resolved" "https://registry.npmjs.org/multiparty/-/multiparty-3.3.2.tgz"
+  "version" "3.3.2"
+  dependencies:
+    "readable-stream" "~1.1.9"
+    "stream-counter" "~0.2.0"
+
+"mz@1":
+  "integrity" "sha1-BvCT/dmVagbTfhsegTROJ0eMQvA="
+  "resolved" "https://registry.npmjs.org/mz/-/mz-1.3.0.tgz"
+  "version" "1.3.0"
+  dependencies:
+    "native-or-bluebird" "1"
+    "thenify" "3"
+    "thenify-all" "1"
+
+"nan@~0.3.0":
+  "integrity" "sha1-DfGTXKsVNpB17xYK0olBB6oU3C0="
+  "resolved" "https://registry.npmjs.org/nan/-/nan-0.3.2.tgz"
+  "version" "0.3.2"
+
+"native-or-bluebird@~1.1.2", "native-or-bluebird@1":
+  "integrity" "sha1-OSHhECMtHreQ89rGG7NwUxx9NW4="
+  "resolved" "https://registry.npmjs.org/native-or-bluebird/-/native-or-bluebird-1.1.2.tgz"
+  "version" "1.1.2"
+
+"negotiator@0.4.7":
+  "integrity" "sha1-pBYPcXfsgGc4Yx0NMFIyXaQqvcg="
+  "resolved" "https://registry.npmjs.org/negotiator/-/negotiator-0.4.7.tgz"
+  "version" "0.4.7"
+
+"negotiator@0.6.1":
+  "integrity" "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk="
+  "resolved" "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz"
+  "version" "0.6.1"
+
+"newify@~1.1.9":
+  "integrity" "sha1-P1mb0dRKTDiFGhvSW7tvfE1y2P8="
+  "resolved" "https://registry.npmjs.org/newify/-/newify-1.1.9.tgz"
+  "version" "1.1.9"
+
+"next-tick@0.2.2":
+  "integrity" "sha1-ddpKkn7liH45BliABltzNkE7MQ0="
+  "resolved" "https://registry.npmjs.org/next-tick/-/next-tick-0.2.2.tgz"
+  "version" "0.2.2"
+
+"node-libs-browser@^0.7.0":
+  "integrity" "sha1-PicsCBnjCJNeJmdECNevDhSRuDs="
+  "resolved" "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-0.7.0.tgz"
+  "version" "0.7.0"
+  dependencies:
+    "assert" "^1.1.1"
+    "browserify-zlib" "^0.1.4"
+    "buffer" "^4.9.0"
+    "console-browserify" "^1.1.0"
+    "constants-browserify" "^1.0.0"
+    "crypto-browserify" "3.3.0"
+    "domain-browser" "^1.1.1"
+    "events" "^1.0.0"
+    "https-browserify" "0.0.1"
+    "os-browserify" "^0.2.0"
+    "path-browserify" "0.0.0"
+    "process" "^0.11.0"
+    "punycode" "^1.2.4"
+    "querystring-es3" "^0.2.0"
+    "readable-stream" "^2.0.5"
+    "stream-browserify" "^2.0.1"
+    "stream-http" "^2.3.1"
+    "string_decoder" "^0.10.25"
+    "timers-browserify" "^2.0.2"
+    "tty-browserify" "0.0.0"
+    "url" "^0.11.0"
+    "util" "^0.10.3"
+    "vm-browserify" "0.0.4"
+
+"node-uuid@1.4.1":
+  "integrity" "sha1-Oa71EOWImj3KnIlbUGxzquG6wEg="
+  "resolved" "https://registry.npmjs.org/node-uuid/-/node-uuid-1.4.1.tgz"
+  "version" "1.4.1"
+
+"normalize-path@^2.0.0", "normalize-path@^2.0.1":
+  "integrity" "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk="
+  "resolved" "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz"
+  "version" "2.1.1"
+  dependencies:
+    "remove-trailing-separator" "^1.0.1"
+
+"object-assign@^2.0.0":
+  "integrity" "sha1-Q8NuXVaf+OSBbE76i+AtJpZ8GKo="
+  "resolved" "https://registry.npmjs.org/object-assign/-/object-assign-2.1.1.tgz"
+  "version" "2.1.1"
+
+"object-assign@^4", "object-assign@^4.0.1":
+  "integrity" "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM="
+  "resolved" "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz"
+  "version" "4.1.1"
+
+"object-component@0.0.3":
+  "integrity" "sha1-8MaapQ78lbhmwYb0AKM3acsvEpE="
+  "resolved" "https://registry.npmjs.org/object-component/-/object-component-0.0.3.tgz"
+  "version" "0.0.3"
+
+"object.omit@^2.0.0":
+  "integrity" "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo="
+  "resolved" "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz"
+  "version" "2.0.1"
+  dependencies:
+    "for-own" "^0.1.4"
+    "is-extendable" "^0.1.1"
+
+"on-finished@~2.3.0":
+  "integrity" "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc="
+  "resolved" "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz"
+  "version" "2.3.0"
+  dependencies:
+    "ee-first" "1.1.1"
+
+"on-finished@2.1.0":
+  "integrity" "sha1-DFOfCSkej/rd4MiiWFD7LO3HAi0="
+  "resolved" "https://registry.npmjs.org/on-finished/-/on-finished-2.1.0.tgz"
+  "version" "2.1.0"
+  dependencies:
+    "ee-first" "1.0.5"
+
+"on-headers@~1.0.0", "on-headers@~1.0.1":
+  "integrity" "sha1-ko9dD0cNSTQmUepnlLCFfBAGk/c="
+  "resolved" "https://registry.npmjs.org/on-headers/-/on-headers-1.0.1.tgz"
+  "version" "1.0.1"
+
+"once@^1.3.0":
+  "integrity" "sha1-WDsap3WWHUsROsF9nFC6753Xa9E="
+  "resolved" "https://registry.npmjs.org/once/-/once-1.4.0.tgz"
+  "version" "1.4.0"
+  dependencies:
+    "wrappy" "1"
+
+"open@0.0.5":
+  "integrity" "sha1-QsPhjslUZra/DcQvOilFw/DK2Pw="
+  "resolved" "https://registry.npmjs.org/open/-/open-0.0.5.tgz"
+  "version" "0.0.5"
+
+"optimist@*", "optimist@~0.6.0", "optimist@~0.6.1":
+  "integrity" "sha1-2j6nRob6IaGaERwybpDrFaAZZoY="
+  "resolved" "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz"
+  "version" "0.6.1"
+  dependencies:
+    "minimist" "~0.0.1"
+    "wordwrap" "~0.0.2"
+
+"optimist@~0.3.5":
+  "integrity" "sha1-yQlBrVnkJzMokjB00s8ufLxuwNk="
+  "resolved" "https://registry.npmjs.org/optimist/-/optimist-0.3.7.tgz"
+  "version" "0.3.7"
+  dependencies:
+    "wordwrap" "~0.0.2"
+
+"optionator@~0.8.1":
+  "integrity" "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q="
+  "resolved" "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz"
+  "version" "0.8.2"
+  dependencies:
+    "deep-is" "~0.1.3"
+    "fast-levenshtein" "~2.0.4"
+    "levn" "~0.3.0"
+    "prelude-ls" "~1.1.2"
+    "type-check" "~0.3.2"
+    "wordwrap" "~1.0.0"
+
+"options@>=0.0.5":
+  "integrity" "sha1-7CLTEoBrtT5zF3Pnza788cZDEo8="
+  "resolved" "https://registry.npmjs.org/options/-/options-0.0.6.tgz"
+  "version" "0.0.6"
+
+"optparse@1.0.3":
+  "integrity" "sha1-L/SaPWkbkLC5ob6RF/KSNz6xvWY="
+  "resolved" "https://registry.npmjs.org/optparse/-/optparse-1.0.3.tgz"
+  "version" "1.0.3"
+
+"original@>=0.0.5":
+  "integrity" "sha512-hyBVl6iqqUOJ8FqRe+l/gS8H+kKYjrEndd5Pm1MfBtsEKA038HkkdbAl/72EAXGyonD/PFsvmVG+EvcIpliMBg=="
+  "resolved" "https://registry.npmjs.org/original/-/original-1.0.2.tgz"
+  "version" "1.0.2"
+  dependencies:
+    "url-parse" "^1.4.3"
+
+"os-browserify@^0.2.0":
+  "integrity" "sha1-Y/xMzuXS13Y9Jrv4YBB45sLgBE8="
+  "resolved" "https://registry.npmjs.org/os-browserify/-/os-browserify-0.2.1.tgz"
+  "version" "0.2.1"
+
+"pako@~0.2.0":
+  "integrity" "sha1-8/dSL073gjSNqBYbrZ7P1Rv4OnU="
+  "resolved" "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz"
+  "version" "0.2.9"
+
+"parse-glob@^3.0.4":
+  "integrity" "sha1-ssN2z7EfNVE7rdFz7wu246OIORw="
+  "resolved" "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz"
+  "version" "3.0.4"
+  dependencies:
+    "glob-base" "^0.3.0"
+    "is-dotfile" "^1.0.0"
+    "is-extglob" "^1.0.0"
+    "is-glob" "^2.0.0"
+
+"parsejson@0.0.1":
+  "integrity" "sha1-mxDGwNglq1ieaFFTgm3go7oni8w="
+  "resolved" "https://registry.npmjs.org/parsejson/-/parsejson-0.0.1.tgz"
+  "version" "0.0.1"
+  dependencies:
+    "better-assert" "~1.0.0"
+
+"parseqs@0.0.2":
+  "integrity" "sha1-nf5wss3aw4i95PNbHyQPpYrb5sc="
+  "resolved" "https://registry.npmjs.org/parseqs/-/parseqs-0.0.2.tgz"
+  "version" "0.0.2"
+  dependencies:
+    "better-assert" "~1.0.0"
+
+"parseuri@0.0.2":
+  "integrity" "sha1-20GHjy1pZHGL6HCzFAlz2Ak74VY="
+  "resolved" "https://registry.npmjs.org/parseuri/-/parseuri-0.0.2.tgz"
+  "version" "0.0.2"
+  dependencies:
+    "better-assert" "~1.0.0"
+
+"parseurl@~1.3.0", "parseurl@~1.3.2":
+  "integrity" "sha1-/CidTtiZMRlGDBViUyYs3I3mW/M="
+  "resolved" "https://registry.npmjs.org/parseurl/-/parseurl-1.3.2.tgz"
+  "version" "1.3.2"
+
+"path-browserify@0.0.0":
+  "integrity" "sha1-oLhwcpquIUAFt9UDLsLLuw+0RRo="
+  "resolved" "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.0.tgz"
+  "version" "0.0.0"
+
+"path-is-absolute@^1.0.0":
+  "integrity" "sha1-F0uSaHNVNP+8es5r9TpanhtcX18="
+  "resolved" "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz"
+  "version" "1.0.1"
+
+"path-to-regexp@0.1.7":
+  "integrity" "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w="
+  "resolved" "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz"
+  "version" "0.1.7"
+
+"pause@0.0.1":
+  "integrity" "sha1-HUCLP9t2kjuVQ9lvtMnf1TXZy10="
+  "resolved" "https://registry.npmjs.org/pause/-/pause-0.0.1.tgz"
+  "version" "0.0.1"
+
+"pbkdf2-compat@2.0.1":
+  "integrity" "sha1-tuDI+plJTZTgURV1gCpZpcFC8og="
+  "resolved" "https://registry.npmjs.org/pbkdf2-compat/-/pbkdf2-compat-2.0.1.tgz"
+  "version" "2.0.1"
+
+"prelude-ls@~1.1.2":
+  "integrity" "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ="
+  "resolved" "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz"
+  "version" "1.1.2"
+
+"preserve@^0.2.0":
+  "integrity" "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks="
+  "resolved" "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz"
+  "version" "0.2.0"
+
+"printj@":
+  "integrity" "sha512-dx9nIry0Z12s5oebhenDCFQjj/IMVotLMbvFP6OJ+C3v+EV30mtYoj6QtaulFo+DbWCbpEeaqcLYMh6CRuVjsA=="
+  "resolved" "https://registry.npmjs.org/printj/-/printj-1.2.2.tgz"
+  "version" "1.2.2"
+
+"printj@~1.1.0", "printj@~1.1.2":
+  "integrity" "sha512-zA2SmoLaxZyArQTOPj5LXecR+RagfPSU5Kw1qP+jkWeNlrq+eJZyY2oS68SU1Z/7/myXM4lo9716laOFAVStCQ=="
+  "resolved" "https://registry.npmjs.org/printj/-/printj-1.1.2.tgz"
+  "version" "1.1.2"
+
+"private@^0.1.6", "private@~0.1.5":
+  "integrity" "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg=="
+  "resolved" "https://registry.npmjs.org/private/-/private-0.1.8.tgz"
+  "version" "0.1.8"
+
+"process-nextick-args@~2.0.0":
+  "integrity" "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw=="
+  "resolved" "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz"
+  "version" "2.0.0"
+
+"process@^0.11.0":
+  "integrity" "sha1-czIwDoQBYb2j5podHZGn1LwW8YI="
+  "resolved" "https://registry.npmjs.org/process/-/process-0.11.10.tgz"
+  "version" "0.11.10"
+
+"proxy-addr@~2.0.3":
+  "integrity" "sha512-5erio2h9jp5CHGwcybmxmVqHmnCBZeewlfJ0pex+UW7Qny7OOZXTtH56TGNyBizkgiOwhJtMKrVzDTeKcySZwA=="
+  "resolved" "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.4.tgz"
+  "version" "2.0.4"
+  dependencies:
+    "forwarded" "~0.1.2"
+    "ipaddr.js" "1.8.0"
+
+"proxy-addr@1.0.1":
+  "integrity" "sha1-x8Vm1etOP61n7rnHfFVYzMObiKg="
+  "resolved" "https://registry.npmjs.org/proxy-addr/-/proxy-addr-1.0.1.tgz"
+  "version" "1.0.1"
+  dependencies:
+    "ipaddr.js" "0.1.2"
+
+"prr@~1.0.1":
+  "integrity" "sha1-0/wRS6BplaRexok/SEzrHXj19HY="
+  "resolved" "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz"
+  "version" "1.0.1"
+
+"punycode@^1.2.4":
+  "integrity" "sha1-wNWmOycYgArY4esPpSachN1BhF4="
+  "resolved" "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz"
+  "version" "1.4.1"
+
+"punycode@1.3.2":
+  "integrity" "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0="
+  "resolved" "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz"
+  "version" "1.3.2"
+
+"q@^1.1.2":
+  "integrity" "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc="
+  "resolved" "https://registry.npmjs.org/q/-/q-1.5.1.tgz"
+  "version" "1.5.1"
+
+"qs@1.2.0":
+  "integrity" "sha1-7Qeb4oaCFH5v2aNMwrDB4OxkU+4="
+  "resolved" "https://registry.npmjs.org/qs/-/qs-1.2.0.tgz"
+  "version" "1.2.0"
+
+"qs@2.2.2":
+  "integrity" "sha1-3+eD8YVLGsKzreknda0D4n4DIYw="
+  "resolved" "https://registry.npmjs.org/qs/-/qs-2.2.2.tgz"
+  "version" "2.2.2"
+
+"qs@6.5.1":
+  "integrity" "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A=="
+  "resolved" "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz"
+  "version" "6.5.1"
+
+"querystring-es3@^0.2.0":
+  "integrity" "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM="
+  "resolved" "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz"
+  "version" "0.2.1"
+
+"querystring@0.2.0":
+  "integrity" "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA="
+  "resolved" "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz"
+  "version" "0.2.0"
+
+"querystringify@^2.0.0":
+  "integrity" "sha512-eTPo5t/4bgaMNZxyjWx6N2a6AuE0mq51KWvpc7nU/MAqixcI6v6KrGUKES0HaomdnolQBBXU/++X6/QQ9KL4tw=="
+  "resolved" "https://registry.npmjs.org/querystringify/-/querystringify-2.0.0.tgz"
+  "version" "2.0.0"
+
+"randomatic@^3.0.0":
+  "integrity" "sha512-KnGPVE0lo2WoXxIZ7cPR8YBpiol4gsSuOwDSg410oHh80ZMp5EiypNqL2K4Z77vJn6lB5rap7IkAmcUlalcnBQ=="
+  "resolved" "https://registry.npmjs.org/randomatic/-/randomatic-3.1.0.tgz"
+  "version" "3.1.0"
+  dependencies:
+    "is-number" "^4.0.0"
+    "kind-of" "^6.0.0"
+    "math-random" "^1.0.1"
+
+"range-parser@^1.0.3", "range-parser@~1.2.0":
+  "integrity" "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4="
+  "resolved" "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz"
+  "version" "1.2.0"
+
+"range-parser@~1.0.0":
+  "integrity" "sha1-aHKCNTXGkuLCoBA4Jq/YLC4P8XU="
+  "resolved" "https://registry.npmjs.org/range-parser/-/range-parser-1.0.3.tgz"
+  "version" "1.0.3"
+
+"range-parser@1.0.0":
+  "integrity" "sha1-pLJkz+C+XONqvjdlrJwqJIdG28A="
+  "resolved" "https://registry.npmjs.org/range-parser/-/range-parser-1.0.0.tgz"
+  "version" "1.0.0"
+
+"raw-body@1.3.0":
+  "integrity" "sha1-l4IwoValVI9C7vFN4i0PT2EAg9E="
+  "resolved" "https://registry.npmjs.org/raw-body/-/raw-body-1.3.0.tgz"
+  "version" "1.3.0"
+  dependencies:
+    "bytes" "1"
+    "iconv-lite" "0.4.4"
+
+"raw-body@2.3.2":
+  "integrity" "sha1-vNYMd9Prk83gBQKVw/N5OJvIj4k="
+  "resolved" "https://registry.npmjs.org/raw-body/-/raw-body-2.3.2.tgz"
+  "version" "2.3.2"
+  dependencies:
+    "bytes" "3.0.0"
+    "http-errors" "1.6.2"
+    "iconv-lite" "0.4.19"
+    "unpipe" "1.0.0"
+
+"react-basic-tabs@^1.0.3":
+  "integrity" "sha1-uET+9Iz3xkXPY1XxzAejrl0VcZA="
+  "resolved" "https://registry.npmjs.org/react-basic-tabs/-/react-basic-tabs-1.0.3.tgz"
+  "version" "1.0.3"
+  dependencies:
+    "copy-utils" "^1.0.0"
+    "functionally" "^0.6.2"
+    "react" "^0.12.0"
+
+"react-hot-loader@^0.5.0":
+  "integrity" "sha1-vQN47eLhWd0X/LJ6HZ5xELkRsD8="
+  "resolved" "https://registry.npmjs.org/react-hot-loader/-/react-hot-loader-0.5.0.tgz"
+  "version" "0.5.0"
+  dependencies:
+    "next-tick" "0.2.2"
+    "source-map" "0.1.40"
+
+"react@^0.12.0", "react@^0.12.1":
+  "integrity" "sha1-HE8LCIGBRu6rTwqzklfgqlICfgA="
+  "resolved" "https://registry.npmjs.org/react/-/react-0.12.2.tgz"
+  "version" "0.12.2"
+  dependencies:
+    "envify" "^3.0.0"
+
+"readable-stream@^2.0.1", "readable-stream@^2.0.2", "readable-stream@^2.0.5", "readable-stream@^2.3.6":
+  "integrity" "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw=="
+  "resolved" "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz"
+  "version" "2.3.6"
+  dependencies:
+    "core-util-is" "~1.0.0"
+    "inherits" "~2.0.3"
+    "isarray" "~1.0.0"
+    "process-nextick-args" "~2.0.0"
+    "safe-buffer" "~5.1.1"
+    "string_decoder" "~1.1.1"
+    "util-deprecate" "~1.0.1"
+
+"readable-stream@^3.0.2":
+  "integrity" "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA=="
+  "resolved" "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz"
+  "version" "3.6.0"
+  dependencies:
+    "inherits" "^2.0.3"
+    "string_decoder" "^1.1.1"
+    "util-deprecate" "^1.0.1"
+
+"readable-stream@~1.1.8":
+  "integrity" "sha1-fPTFTvZI44EwhMY23SB54WbAgdk="
+  "resolved" "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz"
+  "version" "1.1.14"
+  dependencies:
+    "core-util-is" "~1.0.0"
+    "inherits" "~2.0.1"
+    "isarray" "0.0.1"
+    "string_decoder" "~0.10.x"
+
+"readable-stream@~1.1.9":
+  "integrity" "sha1-fPTFTvZI44EwhMY23SB54WbAgdk="
+  "resolved" "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz"
+  "version" "1.1.14"
+  dependencies:
+    "core-util-is" "~1.0.0"
+    "inherits" "~2.0.1"
+    "isarray" "0.0.1"
+    "string_decoder" "~0.10.x"
+
+"readable-stream@1.0.27-1":
+  "integrity" "sha1-a2eYPCA1fO/QfwFlABoW1xDZEHg="
+  "resolved" "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.27-1.tgz"
+  "version" "1.0.27-1"
+  dependencies:
+    "core-util-is" "~1.0.0"
+    "inherits" "~2.0.1"
+    "isarray" "0.0.1"
+    "string_decoder" "~0.10.x"
+
+"readdirp@^2.0.0":
+  "integrity" "sha1-TtCtBg3zBzMAxIRANz9y0cxkLXg="
+  "resolved" "https://registry.npmjs.org/readdirp/-/readdirp-2.1.0.tgz"
+  "version" "2.1.0"
+  dependencies:
+    "graceful-fs" "^4.1.2"
+    "minimatch" "^3.0.2"
+    "readable-stream" "^2.0.2"
+    "set-immediate-shim" "^1.0.1"
+
+"recast@^0.11.17":
+  "integrity" "sha1-RR/TAEqx5N+bTktmN2sqIZEkYtM="
+  "resolved" "https://registry.npmjs.org/recast/-/recast-0.11.23.tgz"
+  "version" "0.11.23"
+  dependencies:
+    "ast-types" "0.9.6"
+    "esprima" "~3.1.0"
+    "private" "~0.1.5"
+    "source-map" "~0.5.0"
+
+"redis@0.12.x":
+  "integrity" "sha1-ZN92rQ/IrOuuvSoGReikj6xJGF4="
+  "resolved" "https://registry.npmjs.org/redis/-/redis-0.12.1.tgz"
+  "version" "0.12.1"
+
+"reduce-component@1.0.1":
+  "integrity" "sha1-4Mk1QsV0UhvqE98PlIjtgqt3xdo="
+  "resolved" "https://registry.npmjs.org/reduce-component/-/reduce-component-1.0.1.tgz"
+  "version" "1.0.1"
+
+"regex-cache@^0.4.2":
+  "integrity" "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ=="
+  "resolved" "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz"
+  "version" "0.4.4"
+  dependencies:
+    "is-equal-shallow" "^0.1.3"
+
+"remove-trailing-separator@^1.0.1":
+  "integrity" "sha1-wkvOKig62tW8P1jg1IJJuSN52O8="
+  "resolved" "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz"
+  "version" "1.1.0"
+
+"repeat-element@^1.1.2":
+  "integrity" "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g=="
+  "resolved" "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz"
+  "version" "1.1.3"
+
+"repeat-string@^1.5.2":
+  "integrity" "sha1-jcrkcOHIirwtYA//Sndihtp15jc="
+  "resolved" "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz"
+  "version" "1.6.1"
+
+"requires-port@^1.0.0":
+  "integrity" "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8="
+  "resolved" "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz"
+  "version" "1.0.0"
+
+"response-time@~2.0.1":
+  "integrity" "sha1-xtLLrerEyyUbIQFv4YJkDAKv80M="
+  "resolved" "https://registry.npmjs.org/response-time/-/response-time-2.0.1.tgz"
+  "version" "2.0.1"
+  dependencies:
+    "on-headers" "~1.0.0"
+
+"right-align@^0.1.1":
+  "integrity" "sha1-YTObci/mo1FWiSENJOFMlhSGE+8="
+  "resolved" "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz"
+  "version" "0.1.3"
+  dependencies:
+    "align-text" "^0.1.1"
+
+"ripemd160@0.2.0":
+  "integrity" "sha1-K/GYveFnys+lHAqSjoS2i74XH84="
+  "resolved" "https://registry.npmjs.org/ripemd160/-/ripemd160-0.2.0.tgz"
+  "version" "0.2.0"
+
+"rndm@~1.1.0":
+  "integrity" "sha1-7870N0Ah94tj3mImtZhRICadZPE="
+  "resolved" "https://registry.npmjs.org/rndm/-/rndm-1.1.1.tgz"
+  "version" "1.1.1"
+
+"safe-buffer@~5.1.0", "safe-buffer@~5.1.1", "safe-buffer@5.1.2":
+  "integrity" "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
+  "resolved" "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz"
+  "version" "5.1.2"
+
+"safe-buffer@~5.2.0":
+  "integrity" "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ=="
+  "resolved" "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz"
+  "version" "5.2.1"
+
+"safe-buffer@5.1.1":
+  "integrity" "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg=="
+  "resolved" "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz"
+  "version" "5.1.1"
 
 "safer-buffer@>= 2.1.2 < 3":
-  version "2.1.2"
-  resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
-
-sax@0.5.x:
-  version "0.5.8"
-  resolved "https://registry.yarnpkg.com/sax/-/sax-0.5.8.tgz#d472db228eb331c2506b0e8c15524adb939d12c1"
-
-sax@^1.2.4:
-  version "1.2.4"
-  resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9"
-
-scmp@1.0.0:
-  version "1.0.0"
-  resolved "https://registry.yarnpkg.com/scmp/-/scmp-1.0.0.tgz#a0b272c3fc7292f77115646f00618b0262514e04"
-
-semver@^5.3.0:
-  version "5.5.1"
-  resolved "https://registry.yarnpkg.com/semver/-/semver-5.5.1.tgz#7dfdd8814bdb7cabc7be0fb1d734cfb66c940477"
-
-send@0.16.2:
-  version "0.16.2"
-  resolved "https://registry.yarnpkg.com/send/-/send-0.16.2.tgz#6ecca1e0f8c156d141597559848df64730a6bbc1"
-  dependencies:
-    debug "2.6.9"
-    depd "~1.1.2"
-    destroy "~1.0.4"
-    encodeurl "~1.0.2"
-    escape-html "~1.0.3"
-    etag "~1.8.1"
-    fresh "0.5.2"
-    http-errors "~1.6.2"
-    mime "1.4.1"
-    ms "2.0.0"
-    on-finished "~2.3.0"
-    range-parser "~1.2.0"
-    statuses "~1.4.0"
-
-send@0.8.3:
-  version "0.8.3"
-  resolved "https://registry.yarnpkg.com/send/-/send-0.8.3.tgz#593886004fcb968a1b5727814a32b388b3b99083"
-  dependencies:
-    debug "1.0.4"
-    depd "0.4.4"
-    destroy "1.0.3"
-    escape-html "1.0.1"
-    fresh "0.2.2"
-    mime "1.2.11"
-    ms "0.6.2"
-    on-finished "2.1.0"
-    range-parser "~1.0.0"
-
-send@0.8.5:
-  version "0.8.5"
-  resolved "https://registry.yarnpkg.com/send/-/send-0.8.5.tgz#37f708216e6f50c175e74c69fec53484e2fd82c7"
-  dependencies:
-    debug "1.0.4"
-    depd "0.4.4"
-    destroy "1.0.3"
-    escape-html "1.0.1"
-    fresh "0.2.2"
-    mime "1.2.11"
-    ms "0.6.2"
-    on-finished "2.1.0"
-    range-parser "~1.0.0"
-
-serve-favicon@2.0.1:
-  version "2.0.1"
-  resolved "https://registry.yarnpkg.com/serve-favicon/-/serve-favicon-2.0.1.tgz#4826975d9f173ca3a4158e9698161f75dec7afec"
-  dependencies:
-    fresh "0.2.2"
-
-serve-index@^1.7.2:
-  version "1.9.1"
-  resolved "https://registry.yarnpkg.com/serve-index/-/serve-index-1.9.1.tgz#d3768d69b1e7d82e5ce050fff5b453bea12a9239"
-  dependencies:
-    accepts "~1.3.4"
-    batch "0.6.1"
-    debug "2.6.9"
-    escape-html "~1.0.3"
-    http-errors "~1.6.2"
-    mime-types "~2.1.17"
-    parseurl "~1.3.2"
-
-serve-index@~1.1.6:
-  version "1.1.6"
-  resolved "https://registry.yarnpkg.com/serve-index/-/serve-index-1.1.6.tgz#b758318fe781628383f66ac80dd447712ea7781f"
-  dependencies:
-    accepts "~1.0.7"
-    batch "0.5.1"
-    parseurl "~1.3.0"
-
-serve-static@1.13.2:
-  version "1.13.2"
-  resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.13.2.tgz#095e8472fd5b46237db50ce486a43f4b86c6cec1"
-  dependencies:
-    encodeurl "~1.0.2"
-    escape-html "~1.0.3"
-    parseurl "~1.3.2"
-    send "0.16.2"
-
-serve-static@~1.5.3:
-  version "1.5.4"
-  resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.5.4.tgz#819fb37ae46bd02dd520b77fcf7fd8f5112f9782"
-  dependencies:
-    escape-html "1.0.1"
-    parseurl "~1.3.0"
-    send "0.8.5"
-    utils-merge "1.0.0"
-
-set-blocking@~2.0.0:
-  version "2.0.0"
-  resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7"
-
-set-immediate-shim@^1.0.1:
-  version "1.0.1"
-  resolved "https://registry.yarnpkg.com/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz#4b2b1b27eb808a9f8dcc481a58e5e56f599f3f61"
-
-setimmediate@^1.0.4:
-  version "1.0.5"
-  resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285"
-
-setprototypeof@1.0.3:
-  version "1.0.3"
-  resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.0.3.tgz#66567e37043eeb4f04d91bd658c0cbefb55b8e04"
-
-setprototypeof@1.1.0:
-  version "1.1.0"
-  resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656"
-
-sha.js@2.2.6:
-  version "2.2.6"
-  resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.2.6.tgz#17ddeddc5f722fb66501658895461977867315ba"
-
-sigmund@~1.0.0:
-  version "1.0.1"
-  resolved "https://registry.yarnpkg.com/sigmund/-/sigmund-1.0.1.tgz#3ff21f198cad2175f9f3b781853fd94d0d19b590"
-
-signal-exit@^3.0.0:
-  version "3.0.2"
-  resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d"
-
-socialcalc@^2.3.0:
-  version "2.3.0"
-  resolved "https://registry.yarnpkg.com/socialcalc/-/socialcalc-2.3.0.tgz#f901df8584fd599775731b2a17e65b7e89908a5a"
-
-socket.io-adapter@0.2.0:
-  version "0.2.0"
-  resolved "https://registry.yarnpkg.com/socket.io-adapter/-/socket.io-adapter-0.2.0.tgz#bd39329b8961371787e24f345b074ec9cf000e33"
-  dependencies:
-    debug "0.7.4"
-    socket.io-parser "2.1.2"
-
-socket.io-client@1.0.6:
-  version "1.0.6"
-  resolved "https://registry.yarnpkg.com/socket.io-client/-/socket.io-client-1.0.6.tgz#c86cb3e507ab2f96da4500bd34fcf46a1e9dfe5e"
-  dependencies:
-    component-bind "1.0.0"
-    component-emitter "1.1.2"
-    debug "0.7.4"
-    engine.io-client "1.3.1"
-    has-binary-data "0.1.1"
-    indexof "0.0.1"
-    object-component "0.0.3"
-    parseuri "0.0.2"
-    socket.io-parser "2.2.0"
-    to-array "0.1.3"
-
-socket.io-parser@2.1.2:
-  version "2.1.2"
-  resolved "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-2.1.2.tgz#876655b9edd555c5bdf7301cedf30a436c67b8b0"
-  dependencies:
-    debug "0.7.4"
-    emitter "http://github.com/component/emitter/archive/1.0.1.tar.gz"
-    isarray "0.0.1"
-    json3 "3.2.6"
-
-socket.io-parser@2.2.0:
-  version "2.2.0"
-  resolved "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-2.2.0.tgz#2609601f59e6a7fab436a53be3d333fbbfcbd30a"
-  dependencies:
-    debug "0.7.4"
-    emitter "http://github.com/component/emitter/archive/1.0.1.tar.gz"
-    isarray "0.0.1"
-    json3 "3.2.6"
-
-socket.io@1.0.6:
-  version "1.0.6"
-  resolved "https://registry.yarnpkg.com/socket.io/-/socket.io-1.0.6.tgz#b566532888dae3ac9058a12f294015ebdfa8084a"
-  dependencies:
-    debug "0.7.4"
-    engine.io "1.3.1"
-    has-binary-data "0.1.1"
-    socket.io-adapter "0.2.0"
-    socket.io-client "1.0.6"
-    socket.io-parser "2.2.0"
-
-sockjs-client@^1.0.3:
-  version "1.1.5"
-  resolved "https://registry.yarnpkg.com/sockjs-client/-/sockjs-client-1.1.5.tgz#1bb7c0f7222c40f42adf14f4442cbd1269771a83"
-  dependencies:
-    debug "^2.6.6"
-    eventsource "0.1.6"
-    faye-websocket "~0.11.0"
-    inherits "^2.0.1"
-    json3 "^3.3.2"
-    url-parse "^1.1.8"
-
-sockjs@^0.3.15:
-  version "0.3.19"
-  resolved "https://registry.yarnpkg.com/sockjs/-/sockjs-0.3.19.tgz#d976bbe800af7bd20ae08598d582393508993c0d"
-  dependencies:
-    faye-websocket "^0.10.0"
-    uuid "^3.0.1"
-
-source-list-map@~0.1.7:
-  version "0.1.8"
-  resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-0.1.8.tgz#c550b2ab5427f6b3f21f5afead88c4f5587b2106"
-
-source-map@0.1.34:
-  version "0.1.34"
-  resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.1.34.tgz#a7cfe89aec7b1682c3b198d0acfb47d7d090566b"
-  dependencies:
-    amdefine ">=0.0.4"
-
-source-map@0.1.40:
-  version "0.1.40"
-  resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.1.40.tgz#7e0ee49ec0452aa9ac2b93ad5ae54ef33e82b37f"
-  dependencies:
-    amdefine ">=0.0.4"
-
-source-map@^0.4.2, source-map@~0.4.1:
-  version "0.4.4"
-  resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.4.4.tgz#eba4f5da9c0dc999de68032d8b4f76173652036b"
-  dependencies:
-    amdefine ">=0.0.4"
-
-source-map@^0.5.6, source-map@~0.5.0, source-map@~0.5.1:
-  version "0.5.7"
-  resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc"
-
-source-map@~0.1.38:
-  version "0.1.43"
-  resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.1.43.tgz#c24bc146ca517c1471f5dacbe2571b2b7f9e3346"
-  dependencies:
-    amdefine ">=0.0.4"
-
-ssf@~0.10.2:
-  version "0.10.2"
-  resolved "https://registry.yarnpkg.com/ssf/-/ssf-0.10.2.tgz#65b2b4fcdfd967bc8e8383a41349009893115976"
-  dependencies:
-    frac "~1.1.2"
-
-"statuses@>= 1.3.1 < 2", "statuses@>= 1.4.0 < 2":
-  version "1.5.0"
-  resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c"
-
-statuses@~1.4.0:
-  version "1.4.0"
-  resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.4.0.tgz#bb73d446da2796106efcc1b601a253d6c46bd087"
-
-stream-browserify@^2.0.1:
-  version "2.0.1"
-  resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.1.tgz#66266ee5f9bdb9940a4e4514cafb43bb71e5c9db"
-  dependencies:
-    inherits "~2.0.1"
-    readable-stream "^2.0.2"
-
-stream-cache@~0.0.1:
-  version "0.0.2"
-  resolved "https://registry.yarnpkg.com/stream-cache/-/stream-cache-0.0.2.tgz#1ac5ad6832428ca55667dbdee395dad4e6db118f"
-
-stream-counter@~0.2.0:
-  version "0.2.0"
-  resolved "https://registry.yarnpkg.com/stream-counter/-/stream-counter-0.2.0.tgz#ded266556319c8b0e222812b9cf3b26fa7d947de"
-  dependencies:
-    readable-stream "~1.1.8"
-
-stream-http@^2.3.1:
-  version "2.8.3"
-  resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.8.3.tgz#b2d242469288a5a27ec4fe8933acf623de6514fc"
-  dependencies:
-    builtin-status-codes "^3.0.0"
-    inherits "^2.0.1"
-    readable-stream "^2.3.6"
-    to-arraybuffer "^1.0.0"
-    xtend "^4.0.0"
-
-string-width@^1.0.1:
-  version "1.0.2"
-  resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3"
-  dependencies:
-    code-point-at "^1.0.0"
-    is-fullwidth-code-point "^1.0.0"
-    strip-ansi "^3.0.0"
-
-"string-width@^1.0.2 || 2":
-  version "2.1.1"
-  resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e"
-  dependencies:
-    is-fullwidth-code-point "^2.0.0"
-    strip-ansi "^4.0.0"
-
-string_decoder@^0.10.25, string_decoder@~0.10.x:
-  version "0.10.31"
-  resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94"
-
-string_decoder@~1.1.1:
-  version "1.1.1"
-  resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8"
-  dependencies:
-    safe-buffer "~5.1.0"
-
-strip-ansi@^3.0.0, strip-ansi@^3.0.1:
-  version "3.0.1"
-  resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf"
-  dependencies:
-    ansi-regex "^2.0.0"
-
-strip-ansi@^4.0.0:
-  version "4.0.0"
-  resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f"
-  dependencies:
-    ansi-regex "^3.0.0"
-
-strip-json-comments@~2.0.1:
-  version "2.0.1"
-  resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a"
-
-style-loader@^0.8.2:
-  version "0.8.3"
-  resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-0.8.3.tgz#f4f92eb7db63768748f15065cd6700f5a1c85357"
-  dependencies:
-    loader-utils "^0.2.5"
-
-stylus-loader@^0.4.0:
-  version "0.4.0"
-  resolved "https://registry.yarnpkg.com/stylus-loader/-/stylus-loader-0.4.0.tgz#440b7b5fa9afec95197b598ff41006eaf3c1404b"
-  dependencies:
-    loader-utils "~0.2.3"
-    nib "~1.0.2"
-    stylus "~0.47.2"
-    when "~3.2.x"
-
-stylus@0.27.2:
-  version "0.27.2"
-  resolved "https://registry.yarnpkg.com/stylus/-/stylus-0.27.2.tgz#1121f7f8cd152b0f8a4aa6a24a9adea10c825117"
-  dependencies:
-    cssom "0.2.x"
-    debug "*"
-    mkdirp "0.3.x"
-
-stylus@0.45.x:
-  version "0.45.1"
-  resolved "https://registry.yarnpkg.com/stylus/-/stylus-0.45.1.tgz#ef69f62c984a480adc0c9d4aaafb2382a389e453"
-  dependencies:
-    css-parse "1.7.x"
-    debug "*"
-    glob "3.2.x"
-    mkdirp "0.3.x"
-    sax "0.5.x"
-
-stylus@~0.47.2:
-  version "0.47.3"
-  resolved "https://registry.yarnpkg.com/stylus/-/stylus-0.47.3.tgz#1bd905c6701f80653be1fd15d14807cc462be9f5"
-  dependencies:
-    css-parse "1.7.x"
-    debug "*"
-    glob "3.2.x"
-    mkdirp "0.3.x"
-    sax "0.5.x"
-
-superagent@^0.21.0:
-  version "0.21.0"
-  resolved "https://registry.yarnpkg.com/superagent/-/superagent-0.21.0.tgz#fb15027984751ee7152200e6cd21cd6e19a5de87"
-  dependencies:
-    component-emitter "1.1.2"
-    cookiejar "2.0.1"
-    debug "2"
-    extend "~1.2.1"
-    form-data "0.1.3"
-    formidable "1.0.14"
-    methods "1.0.1"
-    mime "1.2.11"
-    qs "1.2.0"
-    readable-stream "1.0.27-1"
-    reduce-component "1.0.1"
-
-supports-color@^3.1.0, supports-color@^3.1.1:
-  version "3.2.3"
-  resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.2.3.tgz#65ac0504b3954171d8a64946b2ae3cbb8a5f54f6"
-  dependencies:
-    has-flag "^1.0.0"
-
-tapable@^0.1.8, tapable@~0.1.8:
-  version "0.1.10"
-  resolved "https://registry.yarnpkg.com/tapable/-/tapable-0.1.10.tgz#29c35707c2b70e50d07482b5d202e8ed446dafd4"
-
-tar@^4:
-  version "4.4.6"
-  resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.6.tgz#63110f09c00b4e60ac8bcfe1bf3c8660235fbc9b"
-  dependencies:
-    chownr "^1.0.1"
-    fs-minipass "^1.2.5"
-    minipass "^2.3.3"
-    minizlib "^1.1.0"
-    mkdirp "^0.5.0"
-    safe-buffer "^5.1.2"
-    yallist "^3.0.2"
-
-thenify-all@1:
-  version "1.6.0"
-  resolved "https://registry.yarnpkg.com/thenify-all/-/thenify-all-1.6.0.tgz#1a1918d402d8fc3f98fbf234db0bcc8cc10e9726"
-  dependencies:
-    thenify ">= 3.1.0 < 4"
-
-thenify@3, "thenify@>= 3.1.0 < 4":
-  version "3.3.0"
-  resolved "https://registry.yarnpkg.com/thenify/-/thenify-3.3.0.tgz#e69e38a1babe969b0108207978b9f62b88604839"
-  dependencies:
-    any-promise "^1.0.0"
-
-through@~2.3.4:
-  version "2.3.8"
-  resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5"
-
-time-stamp@^2.0.0:
-  version "2.1.0"
-  resolved "https://registry.yarnpkg.com/time-stamp/-/time-stamp-2.1.0.tgz#6c5c0b2bc835a244616abcfddf81ce13a1975c9f"
-
-timers-browserify@^2.0.2:
-  version "2.0.10"
-  resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.10.tgz#1d28e3d2aadf1d5a5996c4e9f95601cd053480ae"
-  dependencies:
-    setimmediate "^1.0.4"
-
-tinycolor@0.x:
-  version "0.0.1"
-  resolved "https://registry.yarnpkg.com/tinycolor/-/tinycolor-0.0.1.tgz#320b5a52d83abb5978d81a3e887d4aefb15a6164"
-
-to-array@0.1.3:
-  version "0.1.3"
-  resolved "https://registry.yarnpkg.com/to-array/-/to-array-0.1.3.tgz#d45dadc6363417f60f28474fea50ecddbb4f4991"
-
-to-arraybuffer@^1.0.0:
-  version "1.0.1"
-  resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43"
-
-tty-browserify@0.0.0:
-  version "0.0.0"
-  resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6"
-
-type-check@~0.3.2:
-  version "0.3.2"
-  resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72"
-  dependencies:
-    prelude-ls "~1.1.2"
-
-type-is@~1.3.2:
-  version "1.3.2"
-  resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.3.2.tgz#4f2a5dc58775ca1630250afc7186f8b36309d1bb"
-  dependencies:
-    media-typer "0.2.0"
-    mime-types "~1.0.1"
-
-type-is@~1.6.15, type-is@~1.6.16:
-  version "1.6.16"
-  resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.16.tgz#f89ce341541c672b25ee7ae3c73dee3b2be50194"
-  dependencies:
-    media-typer "0.3.0"
-    mime-types "~2.1.18"
-
-typedarray@^0.0.6:
-  version "0.0.6"
-  resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777"
-
-uglify-js@1.2.6:
-  version "1.2.6"
-  resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-1.2.6.tgz#d354b2d3c1cf10ebc18fa78c11a28bdd9ce1580d"
-
-uglify-js@2.4.15:
-  version "2.4.15"
-  resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.4.15.tgz#12bc6d84345fbc306e13f7075d6437a8bf64d7e3"
-  dependencies:
-    async "~0.2.6"
-    optimist "~0.3.5"
-    source-map "0.1.34"
-    uglify-to-browserify "~1.0.0"
-
-uglify-js@~2.7.3:
-  version "2.7.5"
-  resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.7.5.tgz#4612c0c7baaee2ba7c487de4904ae122079f2ca8"
-  dependencies:
-    async "~0.2.6"
-    source-map "~0.5.1"
-    uglify-to-browserify "~1.0.0"
-    yargs "~3.10.0"
-
-uglify-to-browserify@~1.0.0:
-  version "1.0.2"
-  resolved "https://registry.yarnpkg.com/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz#6e0924d6bda6b5afe349e39a6d632850a0f882b7"
-
-uid-safe@1.0.1:
-  version "1.0.1"
-  resolved "https://registry.yarnpkg.com/uid-safe/-/uid-safe-1.0.1.tgz#5bd148460a2e84f54f193fd20352c8c3d7de6ac8"
-  dependencies:
-    base64-url "1"
-    mz "1"
-
-uid-safe@~1.1.0:
-  version "1.1.0"
-  resolved "https://registry.yarnpkg.com/uid-safe/-/uid-safe-1.1.0.tgz#58d6c5dabf8dfbd8d52834839806c03fd6143232"
-  dependencies:
-    base64-url "1.2.1"
-    native-or-bluebird "~1.1.2"
-
-underscore@>=1.1.6:
-  version "1.9.1"
-  resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.9.1.tgz#06dce34a0e68a7babc29b365b8e74b8925203961"
-
-unpipe@1.0.0, unpipe@~1.0.0:
-  version "1.0.0"
-  resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec"
-
-url-parse@^1.1.8, url-parse@^1.4.3:
-  version "1.4.3"
-  resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.4.3.tgz#bfaee455c889023219d757e045fa6a684ec36c15"
-  dependencies:
-    querystringify "^2.0.0"
-    requires-port "^1.0.0"
-
-url@^0.11.0:
-  version "0.11.0"
-  resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1"
-  dependencies:
-    punycode "1.3.2"
-    querystring "0.2.0"
-
-utf8@2.0.0:
-  version "2.0.0"
-  resolved "https://registry.yarnpkg.com/utf8/-/utf8-2.0.0.tgz#79ce59eced874809cab9a71fc7102c7d45d4118d"
-
-util-deprecate@~1.0.1:
-  version "1.0.2"
-  resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
-
-util@0.10.3:
-  version "0.10.3"
-  resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9"
-  dependencies:
-    inherits "2.0.1"
-
-util@^0.10.3:
-  version "0.10.4"
-  resolved "https://registry.yarnpkg.com/util/-/util-0.10.4.tgz#3aa0125bfe668a4672de58857d3ace27ecb76901"
-  dependencies:
-    inherits "2.0.3"
-
-utils-merge@1.0.0:
-  version "1.0.0"
-  resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.0.tgz#0294fb922bb9375153541c4f7096231f287c8af8"
-
-utils-merge@1.0.1:
-  version "1.0.1"
-  resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713"
-
-uuid-pure@*:
-  version "1.0.10"
-  resolved "https://registry.yarnpkg.com/uuid-pure/-/uuid-pure-1.0.10.tgz#72f231b59cf6c3af5e9f6ba7b963a9186d109b5d"
-
-uuid@^3.0.1:
-  version "3.3.2"
-  resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.2.tgz#1b4af4955eb3077c501c23872fc6513811587131"
-
-vary@0.1.0:
-  version "0.1.0"
-  resolved "https://registry.yarnpkg.com/vary/-/vary-0.1.0.tgz#df0945899e93c0cc5bd18cc8321d9d21e74f6176"
-
-vary@^1, vary@~1.1.2:
-  version "1.1.2"
-  resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc"
-
-vary@~1.0.0:
-  version "1.0.1"
-  resolved "https://registry.yarnpkg.com/vary/-/vary-1.0.1.tgz#99e4981566a286118dfb2b817357df7993376d10"
-
-vhost@2.0.0:
-  version "2.0.0"
-  resolved "https://registry.yarnpkg.com/vhost/-/vhost-2.0.0.tgz#1e26770bd0fce86c40945591e6f284c6891791e2"
-
-vm-browserify@0.0.4:
-  version "0.0.4"
-  resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-0.0.4.tgz#5d7ea45bbef9e4a6ff65f95438e0a87c357d5a73"
-  dependencies:
-    indexof "0.0.1"
-
-watchpack@^0.2.1:
-  version "0.2.9"
-  resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-0.2.9.tgz#62eaa4ab5e5ba35fdfc018275626e3c0f5e3fb0b"
-  dependencies:
-    async "^0.9.0"
-    chokidar "^1.0.0"
-    graceful-fs "^4.1.2"
-
-webpack-core@~0.6.9:
-  version "0.6.9"
-  resolved "https://registry.yarnpkg.com/webpack-core/-/webpack-core-0.6.9.tgz#fc571588c8558da77be9efb6debdc5a3b172bdc2"
-  dependencies:
-    source-list-map "~0.1.7"
-    source-map "~0.4.1"
-
-webpack-dev-middleware@^1.10.2:
-  version "1.12.2"
-  resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-1.12.2.tgz#f8fc1120ce3b4fc5680ceecb43d777966b21105e"
-  dependencies:
-    memory-fs "~0.4.1"
-    mime "^1.5.0"
-    path-is-absolute "^1.0.0"
-    range-parser "^1.0.3"
-    time-stamp "^2.0.0"
-
-webpack-dev-server@^1.6.6:
-  version "1.16.5"
-  resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-1.16.5.tgz#0cbd5f2d2ac8d4e593aacd5c9702e7bbd5e59892"
-  dependencies:
-    compression "^1.5.2"
-    connect-history-api-fallback "^1.3.0"
-    express "^4.13.3"
-    http-proxy-middleware "~0.17.1"
-    open "0.0.5"
-    optimist "~0.6.1"
-    serve-index "^1.7.2"
-    sockjs "^0.3.15"
-    sockjs-client "^1.0.3"
-    stream-cache "~0.0.1"
-    strip-ansi "^3.0.0"
-    supports-color "^3.1.1"
-    webpack-dev-middleware "^1.10.2"
-
-webpack@^1.4.13:
-  version "1.15.0"
-  resolved "https://registry.yarnpkg.com/webpack/-/webpack-1.15.0.tgz#4ff31f53db03339e55164a9d468ee0324968fe98"
-  dependencies:
-    acorn "^3.0.0"
-    async "^1.3.0"
-    clone "^1.0.2"
-    enhanced-resolve "~0.9.0"
-    interpret "^0.6.4"
-    loader-utils "^0.2.11"
-    memory-fs "~0.3.0"
-    mkdirp "~0.5.0"
-    node-libs-browser "^0.7.0"
-    optimist "~0.6.0"
-    supports-color "^3.1.0"
-    tapable "~0.1.8"
-    uglify-js "~2.7.3"
-    watchpack "^0.2.1"
-    webpack-core "~0.6.9"
-
-websocket-driver@>=0.5.1:
-  version "0.7.0"
-  resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.0.tgz#0caf9d2d755d93aee049d4bdd0d3fe2cca2a24eb"
-  dependencies:
-    http-parser-js ">=0.4.0"
-    websocket-extensions ">=0.1.1"
-
-websocket-extensions@>=0.1.1:
-  version "0.1.3"
-  resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.3.tgz#5d2ff22977003ec687a4b87073dfbbac146ccf29"
-
-webworker-threads@^0.7.1:
-  version "0.7.16"
-  resolved "https://registry.yarnpkg.com/webworker-threads/-/webworker-threads-0.7.16.tgz#5282ddebde8b244b8677163f41e9a5ba0b8c82f6"
-  dependencies:
-    bindings "^1.3.0"
-    nan "^2.8.0"
-
-when@~3.2.x:
-  version "3.2.3"
-  resolved "https://registry.yarnpkg.com/when/-/when-3.2.3.tgz#b34a257a73cc5365d5346e6acd7f4b333fa73463"
-
-wide-align@^1.1.0:
-  version "1.1.3"
-  resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457"
-  dependencies:
-    string-width "^1.0.2 || 2"
-
-window-size@0.1.0:
-  version "0.1.0"
-  resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.0.tgz#5438cd2ea93b202efa3a19fe8887aee7c94f9c9d"
-
-wordwrap@0.0.2:
-  version "0.0.2"
-  resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.2.tgz#b79669bb42ecb409f83d583cad52ca17eaa1643f"
-
-wordwrap@~0.0.2:
-  version "0.0.3"
-  resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107"
-
-wordwrap@~1.0.0:
-  version "1.0.0"
-  resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb"
-
-wrappy@1:
-  version "1.0.2"
-  resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
-
-ws@0.4.31:
-  version "0.4.31"
-  resolved "https://registry.yarnpkg.com/ws/-/ws-0.4.31.tgz#5a4849e7a9ccd1ed5a81aeb4847c9fedf3122927"
-  dependencies:
-    commander "~0.6.1"
-    nan "~0.3.0"
-    options ">=0.0.5"
-    tinycolor "0.x"
-
-xlsx@:
-  version "0.13.4"
-  resolved "https://registry.yarnpkg.com/xlsx/-/xlsx-0.13.4.tgz#e7b482f72fd7c05373d0cba98d07dcc06a4a19ba"
-  dependencies:
-    adler-32 "~1.2.0"
-    cfb "~1.0.8"
-    codepage "~1.14.0"
-    commander "~2.15.1"
-    crc-32 "~1.2.0"
-    exit-on-epipe "~1.0.1"
-    ssf "~0.10.2"
+  "integrity" "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
+  "resolved" "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz"
+  "version" "2.1.2"
+
+"scmp@1.0.0":
+  "integrity" "sha1-oLJyw/xykvdxFWRvAGGLAmJRTgQ="
+  "resolved" "https://registry.npmjs.org/scmp/-/scmp-1.0.0.tgz"
+  "version" "1.0.0"
+
+"send@0.16.2":
+  "integrity" "sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw=="
+  "resolved" "https://registry.npmjs.org/send/-/send-0.16.2.tgz"
+  "version" "0.16.2"
+  dependencies:
+    "debug" "2.6.9"
+    "depd" "~1.1.2"
+    "destroy" "~1.0.4"
+    "encodeurl" "~1.0.2"
+    "escape-html" "~1.0.3"
+    "etag" "~1.8.1"
+    "fresh" "0.5.2"
+    "http-errors" "~1.6.2"
+    "mime" "1.4.1"
+    "ms" "2.0.0"
+    "on-finished" "~2.3.0"
+    "range-parser" "~1.2.0"
+    "statuses" "~1.4.0"
+
+"send@0.8.3":
+  "integrity" "sha1-WTiGAE/LloobVyeBSjKziLO5kIM="
+  "resolved" "https://registry.npmjs.org/send/-/send-0.8.3.tgz"
+  "version" "0.8.3"
+  dependencies:
+    "debug" "1.0.4"
+    "depd" "0.4.4"
+    "destroy" "1.0.3"
+    "escape-html" "1.0.1"
+    "fresh" "0.2.2"
+    "mime" "1.2.11"
+    "ms" "0.6.2"
+    "on-finished" "2.1.0"
+    "range-parser" "~1.0.0"
+
+"send@0.8.5":
+  "integrity" "sha1-N/cIIW5vUMF150xp/sU0hOL9gsc="
+  "resolved" "https://registry.npmjs.org/send/-/send-0.8.5.tgz"
+  "version" "0.8.5"
+  dependencies:
+    "debug" "1.0.4"
+    "depd" "0.4.4"
+    "destroy" "1.0.3"
+    "escape-html" "1.0.1"
+    "fresh" "0.2.2"
+    "mime" "1.2.11"
+    "ms" "0.6.2"
+    "on-finished" "2.1.0"
+    "range-parser" "~1.0.0"
+
+"serve-favicon@2.0.1":
+  "integrity" "sha1-SCaXXZ8XPKOkFY6WmBYfdd7Hr+w="
+  "resolved" "https://registry.npmjs.org/serve-favicon/-/serve-favicon-2.0.1.tgz"
+  "version" "2.0.1"
+  dependencies:
+    "fresh" "0.2.2"
+
+"serve-index@^1.7.2":
+  "integrity" "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk="
+  "resolved" "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz"
+  "version" "1.9.1"
+  dependencies:
+    "accepts" "~1.3.4"
+    "batch" "0.6.1"
+    "debug" "2.6.9"
+    "escape-html" "~1.0.3"
+    "http-errors" "~1.6.2"
+    "mime-types" "~2.1.17"
+    "parseurl" "~1.3.2"
+
+"serve-index@~1.1.6":
+  "integrity" "sha1-t1gxj+eBYoOD9mrIDdRHcS6neB8="
+  "resolved" "https://registry.npmjs.org/serve-index/-/serve-index-1.1.6.tgz"
+  "version" "1.1.6"
+  dependencies:
+    "accepts" "~1.0.7"
+    "batch" "0.5.1"
+    "parseurl" "~1.3.0"
+
+"serve-static@~1.5.3":
+  "integrity" "sha1-gZ+zeuRr0C3VILd/z3/Y9REvl4I="
+  "resolved" "https://registry.npmjs.org/serve-static/-/serve-static-1.5.4.tgz"
+  "version" "1.5.4"
+  dependencies:
+    "escape-html" "1.0.1"
+    "parseurl" "~1.3.0"
+    "send" "0.8.5"
+    "utils-merge" "1.0.0"
+
+"serve-static@1.13.2":
+  "integrity" "sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw=="
+  "resolved" "https://registry.npmjs.org/serve-static/-/serve-static-1.13.2.tgz"
+  "version" "1.13.2"
+  dependencies:
+    "encodeurl" "~1.0.2"
+    "escape-html" "~1.0.3"
+    "parseurl" "~1.3.2"
+    "send" "0.16.2"
+
+"set-immediate-shim@^1.0.1":
+  "integrity" "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E="
+  "resolved" "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz"
+  "version" "1.0.1"
+
+"setimmediate@^1.0.4":
+  "integrity" "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU="
+  "resolved" "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz"
+  "version" "1.0.5"
+
+"setprototypeof@1.0.3":
+  "integrity" "sha1-ZlZ+NwQ+608E2RvWWMDL77VbjgQ="
+  "resolved" "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.3.tgz"
+  "version" "1.0.3"
+
+"setprototypeof@1.1.0":
+  "integrity" "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ=="
+  "resolved" "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz"
+  "version" "1.1.0"
+
+"sha.js@2.2.6":
+  "integrity" "sha1-F93t3F9yL7ZlAWWIlUYZd4ZzFbo="
+  "resolved" "https://registry.npmjs.org/sha.js/-/sha.js-2.2.6.tgz"
+  "version" "2.2.6"
+
+"socialcalc@^2.3.0":
+  "integrity" "sha512-hkK5c7eRRGzOiRNPFCQ/kzv2wqOSFaD4AtYag962r0jV0mlyhTQ7xvs3r14MB3Xbo2hAWq5AKYddrtqvuWvDAA=="
+  "resolved" "https://registry.npmjs.org/socialcalc/-/socialcalc-2.3.0.tgz"
+  "version" "2.3.0"
+
+"socket.io-adapter@0.2.0":
+  "integrity" "sha1-vTkym4lhNxeH4k80WwdOyc8ADjM="
+  "resolved" "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-0.2.0.tgz"
+  "version" "0.2.0"
+  dependencies:
+    "debug" "0.7.4"
+    "socket.io-parser" "2.1.2"
+
+"socket.io-client@1.0.6":
+  "integrity" "sha1-yGyz5QerL5baRQC9NPz0ah6d/l4="
+  "resolved" "https://registry.npmjs.org/socket.io-client/-/socket.io-client-1.0.6.tgz"
+  "version" "1.0.6"
+  dependencies:
+    "component-bind" "1.0.0"
+    "component-emitter" "1.1.2"
+    "debug" "0.7.4"
+    "engine.io-client" "1.3.1"
+    "has-binary-data" "0.1.1"
+    "indexof" "0.0.1"
+    "object-component" "0.0.3"
+    "parseuri" "0.0.2"
+    "socket.io-parser" "2.2.0"
+    "to-array" "0.1.3"
+
+"socket.io-parser@2.1.2":
+  "integrity" "sha1-h2ZVue3VVcW99zAc7fMKQ2xnuLA="
+  "resolved" "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-2.1.2.tgz"
+  "version" "2.1.2"
+  dependencies:
+    "debug" "0.7.4"
+    "emitter" "http://github.com/component/emitter/archive/1.0.1.tar.gz"
+    "isarray" "0.0.1"
+    "json3" "3.2.6"
+
+"socket.io-parser@2.2.0":
+  "integrity" "sha1-JglgH1nmp/q0NqU749Mz+7/L0wo="
+  "resolved" "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-2.2.0.tgz"
+  "version" "2.2.0"
+  dependencies:
+    "debug" "0.7.4"
+    "emitter" "http://github.com/component/emitter/archive/1.0.1.tar.gz"
+    "isarray" "0.0.1"
+    "json3" "3.2.6"
+
+"socket.io@1.0.6":
+  "integrity" "sha1-tWZTKIja46yQWKEvKUAV69+oCEo="
+  "resolved" "https://registry.npmjs.org/socket.io/-/socket.io-1.0.6.tgz"
+  "version" "1.0.6"
+  dependencies:
+    "debug" "0.7.4"
+    "engine.io" "1.3.1"
+    "has-binary-data" "0.1.1"
+    "socket.io-adapter" "0.2.0"
+    "socket.io-client" "1.0.6"
+    "socket.io-parser" "2.2.0"
+
+"sockjs-client@^1.0.3":
+  "integrity" "sha1-G7fA9yIsQPQq3xT0RCy9Eml3GoM="
+  "resolved" "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.1.5.tgz"
+  "version" "1.1.5"
+  dependencies:
+    "debug" "^2.6.6"
+    "eventsource" "0.1.6"
+    "faye-websocket" "~0.11.0"
+    "inherits" "^2.0.1"
+    "json3" "^3.3.2"
+    "url-parse" "^1.1.8"
+
+"sockjs@^0.3.15":
+  "integrity" "sha512-V48klKZl8T6MzatbLlzzRNhMepEys9Y4oGFpypBFFn1gLI/QQ9HtLLyWJNbPlwGLelOVOEijUbTTJeLLI59jLw=="
+  "resolved" "https://registry.npmjs.org/sockjs/-/sockjs-0.3.19.tgz"
+  "version" "0.3.19"
+  dependencies:
+    "faye-websocket" "^0.10.0"
+    "uuid" "^3.0.1"
+
+"source-list-map@~0.1.7":
+  "integrity" "sha1-xVCyq1Qn9rPyH1r+rYjE9Vh7IQY="
+  "resolved" "https://registry.npmjs.org/source-list-map/-/source-list-map-0.1.8.tgz"
+  "version" "0.1.8"
+
+"source-map@^0.4.2":
+  "integrity" "sha1-66T12pwNyZneaAMti092FzZSA2s="
+  "resolved" "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz"
+  "version" "0.4.4"
+  dependencies:
+    "amdefine" ">=0.0.4"
+
+"source-map@^0.5.6", "source-map@~0.5.0", "source-map@~0.5.1":
+  "integrity" "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w="
+  "resolved" "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz"
+  "version" "0.5.7"
+
+"source-map@~0.1.38":
+  "integrity" "sha1-wkvBRspRfBRx9drL4lcbK3+eM0Y="
+  "resolved" "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz"
+  "version" "0.1.43"
+  dependencies:
+    "amdefine" ">=0.0.4"
+
+"source-map@~0.4.1":
+  "integrity" "sha1-66T12pwNyZneaAMti092FzZSA2s="
+  "resolved" "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz"
+  "version" "0.4.4"
+  dependencies:
+    "amdefine" ">=0.0.4"
+
+"source-map@0.1.34":
+  "integrity" "sha1-p8/omux7FoLDsZjQrPtH19CQVms="
+  "resolved" "https://registry.npmjs.org/source-map/-/source-map-0.1.34.tgz"
+  "version" "0.1.34"
+  dependencies:
+    "amdefine" ">=0.0.4"
+
+"source-map@0.1.40":
+  "integrity" "sha1-fg7knsBFKqmsK5OtWuVO8z6Cs38="
+  "resolved" "https://registry.npmjs.org/source-map/-/source-map-0.1.40.tgz"
+  "version" "0.1.40"
+  dependencies:
+    "amdefine" ">=0.0.4"
+
+"ssf@~0.10.2":
+  "integrity" "sha512-rDhAPm9WyIsY8eZEKyE8Qsotb3j/wBdvMWBUsOhJdfhKGLfQidRjiBUV0y/MkyCLiXQ38FG6LWW/VYUtqlIDZQ=="
+  "resolved" "https://registry.npmjs.org/ssf/-/ssf-0.10.2.tgz"
+  "version" "0.10.2"
+  dependencies:
+    "frac" "~1.1.2"
+
+"ssf@~0.8.1":
+  "integrity" "sha1-udTcahwbz3b4q/qW19dlb7Kr7NY="
+  "resolved" "https://registry.npmjs.org/ssf/-/ssf-0.8.2.tgz"
+  "version" "0.8.2"
+  dependencies:
+    "colors" "0.6.2"
+    "frac" "0.3.1"
+    "voc" ""
+
+"ssf@~0.9.1":
+  "integrity" "sha1-jlepjBnbvx7dU/D4yef9UksPbJw="
+  "resolved" "https://registry.npmjs.org/ssf/-/ssf-0.9.4.tgz"
+  "version" "0.9.4"
+  dependencies:
+    "colors" "0.6.2"
+    "frac" "~1.0.6"
+    "voc" ""
+
+"ssf@0.8.2":
+  "integrity" "sha1-udTcahwbz3b4q/qW19dlb7Kr7NY="
+  "resolved" "https://registry.npmjs.org/ssf/-/ssf-0.8.2.tgz"
+  "version" "0.8.2"
+  dependencies:
+    "colors" "0.6.2"
+    "frac" "0.3.1"
+    "voc" ""
+
+"statuses@>= 1.3.1 < 2", "statuses@>= 1.4.0 < 2", "statuses@~1.4.0":
+  "integrity" "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew=="
+  "resolved" "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz"
+  "version" "1.4.0"
+
+"stream-browserify@^2.0.1":
+  "integrity" "sha1-ZiZu5fm9uZQKTkUUyvtDu3Hlyds="
+  "resolved" "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.1.tgz"
+  "version" "2.0.1"
+  dependencies:
+    "inherits" "~2.0.1"
+    "readable-stream" "^2.0.2"
+
+"stream-cache@~0.0.1":
+  "integrity" "sha1-GsWtaDJCjKVWZ9ve45Xa1ObbEY8="
+  "resolved" "https://registry.npmjs.org/stream-cache/-/stream-cache-0.0.2.tgz"
+  "version" "0.0.2"
+
+"stream-counter@~0.2.0":
+  "integrity" "sha1-3tJmVWMZyLDiIoErnPOyb6fZR94="
+  "resolved" "https://registry.npmjs.org/stream-counter/-/stream-counter-0.2.0.tgz"
+  "version" "0.2.0"
+  dependencies:
+    "readable-stream" "~1.1.8"
+
+"stream-http@^2.3.1":
+  "integrity" "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw=="
+  "resolved" "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz"
+  "version" "2.8.3"
+  dependencies:
+    "builtin-status-codes" "^3.0.0"
+    "inherits" "^2.0.1"
+    "readable-stream" "^2.3.6"
+    "to-arraybuffer" "^1.0.0"
+    "xtend" "^4.0.0"
+
+"string_decoder@^0.10.25", "string_decoder@~0.10.x":
+  "integrity" "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ="
+  "resolved" "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz"
+  "version" "0.10.31"
+
+"string_decoder@^1.1.1":
+  "integrity" "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA=="
+  "resolved" "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz"
+  "version" "1.3.0"
+  dependencies:
+    "safe-buffer" "~5.2.0"
+
+"string_decoder@~1.1.1":
+  "integrity" "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg=="
+  "resolved" "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz"
+  "version" "1.1.1"
+  dependencies:
+    "safe-buffer" "~5.1.0"
+
+"strip-ansi@^3.0.0":
+  "integrity" "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8="
+  "resolved" "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz"
+  "version" "3.0.1"
+  dependencies:
+    "ansi-regex" "^2.0.0"
+
+"style-loader@^0.8.2":
+  "integrity" "sha1-9Pkut9tjdodI8VBlzWcA9aHIU1c="
+  "resolved" "https://registry.npmjs.org/style-loader/-/style-loader-0.8.3.tgz"
+  "version" "0.8.3"
+  dependencies:
+    "loader-utils" "^0.2.5"
+
+"stylus-loader@^3.0.2":
+  "integrity" "sha512-+VomPdZ6a0razP+zinir61yZgpw2NfljeSsdUF5kJuEzlo3khXhY19Fn6l8QQz1GRJGtMCo8nG5C04ePyV7SUA=="
+  "resolved" "https://registry.npmjs.org/stylus-loader/-/stylus-loader-3.0.2.tgz"
+  "version" "3.0.2"
+  dependencies:
+    "loader-utils" "^1.0.2"
+    "lodash.clonedeep" "^4.5.0"
+    "when" "~3.6.x"
+
+"stylus@0.27.2":
+  "integrity" "sha1-ESH3+M0VKw+KSqaiSpreoQyCURc="
+  "resolved" "https://registry.npmjs.org/stylus/-/stylus-0.27.2.tgz"
+  "version" "0.27.2"
+  dependencies:
+    "cssom" "0.2.x"
+    "debug" "*"
+    "mkdirp" "0.3.x"
+
+"superagent@^0.21.0":
+  "integrity" "sha1-+xUCeYR1HucVIgDmzSHNbhml3oc="
+  "resolved" "https://registry.npmjs.org/superagent/-/superagent-0.21.0.tgz"
+  "version" "0.21.0"
+  dependencies:
+    "component-emitter" "1.1.2"
+    "cookiejar" "2.0.1"
+    "debug" "2"
+    "extend" "~1.2.1"
+    "form-data" "0.1.3"
+    "formidable" "1.0.14"
+    "methods" "1.0.1"
+    "mime" "1.2.11"
+    "qs" "1.2.0"
+    "readable-stream" "1.0.27-1"
+    "reduce-component" "1.0.1"
+
+"supports-color@^3.1.0", "supports-color@^3.1.1":
+  "integrity" "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY="
+  "resolved" "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz"
+  "version" "3.2.3"
+  dependencies:
+    "has-flag" "^1.0.0"
+
+"tapable@^0.1.8", "tapable@~0.1.8":
+  "integrity" "sha1-KcNXB8K3DlDQdIK10gLo7URtr9Q="
+  "resolved" "https://registry.npmjs.org/tapable/-/tapable-0.1.10.tgz"
+  "version" "0.1.10"
+
+"thenify-all@1":
+  "integrity" "sha1-GhkY1ALY/D+Y+/I02wvMjMEOlyY="
+  "resolved" "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz"
+  "version" "1.6.0"
+  dependencies:
+    "thenify" ">= 3.1.0 < 4"
+
+"thenify@>= 3.1.0 < 4", "thenify@3":
+  "integrity" "sha1-5p44obq+lpsBCCB5eLn2K4hgSDk="
+  "resolved" "https://registry.npmjs.org/thenify/-/thenify-3.3.0.tgz"
+  "version" "3.3.0"
+  dependencies:
+    "any-promise" "^1.0.0"
+
+"through@~2.3.4":
+  "integrity" "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU="
+  "resolved" "https://registry.npmjs.org/through/-/through-2.3.8.tgz"
+  "version" "2.3.8"
+
+"time-stamp@^2.0.0":
+  "integrity" "sha512-lJbq6KsFhZJtN3fPUVje1tq/hHsJOKUUcUj/MGCiQR6qWBDcyi5kxL9J7/RnaEChCn0+L/DUN2WvemDrkk4i3Q=="
+  "resolved" "https://registry.npmjs.org/time-stamp/-/time-stamp-2.1.0.tgz"
+  "version" "2.1.0"
+
+"timers-browserify@^2.0.2":
+  "integrity" "sha512-YvC1SV1XdOUaL6gx5CoGroT3Gu49pK9+TZ38ErPldOWW4j49GI1HKs9DV+KGq/w6y+LZ72W1c8cKz2vzY+qpzg=="
+  "resolved" "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.10.tgz"
+  "version" "2.0.10"
+  dependencies:
+    "setimmediate" "^1.0.4"
+
+"tinycolor@0.x":
+  "integrity" "sha1-MgtaUtg6u1l42Bo+iH1K77FaYWQ="
+  "resolved" "https://registry.npmjs.org/tinycolor/-/tinycolor-0.0.1.tgz"
+  "version" "0.0.1"
+
+"to-array@0.1.3":
+  "integrity" "sha1-1F2txjY0F/YPKEdP6lDs3btPSZE="
+  "resolved" "https://registry.npmjs.org/to-array/-/to-array-0.1.3.tgz"
+  "version" "0.1.3"
+
+"to-arraybuffer@^1.0.0":
+  "integrity" "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M="
+  "resolved" "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz"
+  "version" "1.0.1"
+
+"tty-browserify@0.0.0":
+  "integrity" "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY="
+  "resolved" "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz"
+  "version" "0.0.0"
+
+"type-check@~0.3.2":
+  "integrity" "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I="
+  "resolved" "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz"
+  "version" "0.3.2"
+  dependencies:
+    "prelude-ls" "~1.1.2"
+
+"type-is@~1.3.2":
+  "integrity" "sha1-TypdxYd1yhYwJQr8cYb4s2MJ0bs="
+  "resolved" "https://registry.npmjs.org/type-is/-/type-is-1.3.2.tgz"
+  "version" "1.3.2"
+  dependencies:
+    "media-typer" "0.2.0"
+    "mime-types" "~1.0.1"
+
+"type-is@~1.6.15":
+  "integrity" "sha512-HRkVv/5qY2G6I8iab9cI7v1bOIdhm94dVjQCPFElW9W+3GeDOSHmy2EBYe4VTApuzolPcmgFTN3ftVJRKR2J9Q=="
+  "resolved" "https://registry.npmjs.org/type-is/-/type-is-1.6.16.tgz"
+  "version" "1.6.16"
+  dependencies:
+    "media-typer" "0.3.0"
+    "mime-types" "~2.1.18"
+
+"type-is@~1.6.16":
+  "integrity" "sha512-HRkVv/5qY2G6I8iab9cI7v1bOIdhm94dVjQCPFElW9W+3GeDOSHmy2EBYe4VTApuzolPcmgFTN3ftVJRKR2J9Q=="
+  "resolved" "https://registry.npmjs.org/type-is/-/type-is-1.6.16.tgz"
+  "version" "1.6.16"
+  dependencies:
+    "media-typer" "0.3.0"
+    "mime-types" "~2.1.18"
+
+"typedarray@^0.0.6":
+  "integrity" "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c="
+  "resolved" "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz"
+  "version" "0.0.6"
+
+"uglify-js@^3.15.3":
+  "integrity" "sha512-6iCVm2omGJbsu3JWac+p6kUiOpg3wFO2f8lIXjfEb8RrmLjzog1wTPMmwKB7swfzzqxj9YM+sGUM++u1qN4qJg=="
+  "resolved" "https://registry.npmjs.org/uglify-js/-/uglify-js-3.15.3.tgz"
+  "version" "3.15.3"
+
+"uglify-js@~2.7.3":
+  "integrity" "sha1-RhLAx7qu4rp8SH3kkErhIgefLKg="
+  "resolved" "https://registry.npmjs.org/uglify-js/-/uglify-js-2.7.5.tgz"
+  "version" "2.7.5"
+  dependencies:
+    "async" "~0.2.6"
+    "source-map" "~0.5.1"
+    "uglify-to-browserify" "~1.0.0"
+    "yargs" "~3.10.0"
+
+"uglify-js@1.2.6":
+  "integrity" "sha1-01Sy08HPEOvBj6eMEaKL3ZzhWA0="
+  "resolved" "https://registry.npmjs.org/uglify-js/-/uglify-js-1.2.6.tgz"
+  "version" "1.2.6"
+
+"uglify-js@2.4.15":
+  "integrity" "sha1-ErxthDRfvDBuE/cHXWQ3qL9k1+M="
+  "resolved" "https://registry.npmjs.org/uglify-js/-/uglify-js-2.4.15.tgz"
+  "version" "2.4.15"
+  dependencies:
+    "async" "~0.2.6"
+    "optimist" "~0.3.5"
+    "source-map" "0.1.34"
+    "uglify-to-browserify" "~1.0.0"
+
+"uglify-to-browserify@~1.0.0":
+  "integrity" "sha1-bgkk1r2mta/jSeOabWMoUKD4grc="
+  "resolved" "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz"
+  "version" "1.0.2"
+
+"uid-safe@~1.1.0":
+  "integrity" "sha1-WNbF2r+N+9jVKDSDmAbAP9YUMjI="
+  "resolved" "https://registry.npmjs.org/uid-safe/-/uid-safe-1.1.0.tgz"
+  "version" "1.1.0"
+  dependencies:
+    "base64-url" "1.2.1"
+    "native-or-bluebird" "~1.1.2"
+
+"uid-safe@1.0.1":
+  "integrity" "sha1-W9FIRgouhPVPGT/SA1LIw9feasg="
+  "resolved" "https://registry.npmjs.org/uid-safe/-/uid-safe-1.0.1.tgz"
+  "version" "1.0.1"
+  dependencies:
+    "base64-url" "1"
+    "mz" "1"
+
+"underscore@>=1.1.6":
+  "integrity" "sha512-5/4etnCkd9c8gwgowi5/om/mYO5ajCaOgdzj/oW+0eQV9WxKBDZw5+ycmKmeaTXjInS/W0BzpGLo2xR2aBwZdg=="
+  "resolved" "https://registry.npmjs.org/underscore/-/underscore-1.9.1.tgz"
+  "version" "1.9.1"
+
+"unpipe@~1.0.0", "unpipe@1.0.0":
+  "integrity" "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw="
+  "resolved" "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz"
+  "version" "1.0.0"
+
+"url-parse@^1.1.8", "url-parse@^1.4.3":
+  "integrity" "sha512-rh+KuAW36YKo0vClhQzLLveoj8FwPJNu65xLb7Mrt+eZht0IPT0IXgSv8gcMegZ6NvjJUALf6Mf25POlMwD1Fw=="
+  "resolved" "https://registry.npmjs.org/url-parse/-/url-parse-1.4.3.tgz"
+  "version" "1.4.3"
+  dependencies:
+    "querystringify" "^2.0.0"
+    "requires-port" "^1.0.0"
+
+"url@^0.11.0":
+  "integrity" "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE="
+  "resolved" "https://registry.npmjs.org/url/-/url-0.11.0.tgz"
+  "version" "0.11.0"
+  dependencies:
+    "punycode" "1.3.2"
+    "querystring" "0.2.0"
+
+"utf8@2.0.0":
+  "integrity" "sha1-ec5Z7O2HSAnKuacfxxAsfUXUEY0="
+  "resolved" "https://registry.npmjs.org/utf8/-/utf8-2.0.0.tgz"
+  "version" "2.0.0"
+
+"util-deprecate@^1.0.1", "util-deprecate@~1.0.1":
+  "integrity" "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8="
+  "resolved" "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz"
+  "version" "1.0.2"
+
+"util@^0.10.3":
+  "integrity" "sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A=="
+  "resolved" "https://registry.npmjs.org/util/-/util-0.10.4.tgz"
+  "version" "0.10.4"
+  dependencies:
+    "inherits" "2.0.3"
+
+"util@0.10.3":
+  "integrity" "sha1-evsa/lCAUkZInj23/g7TeTNqwPk="
+  "resolved" "https://registry.npmjs.org/util/-/util-0.10.3.tgz"
+  "version" "0.10.3"
+  dependencies:
+    "inherits" "2.0.1"
+
+"utils-merge@1.0.0":
+  "integrity" "sha1-ApT7kiu5N1FTVBxPcJYjHyh8ivg="
+  "resolved" "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.0.tgz"
+  "version" "1.0.0"
+
+"utils-merge@1.0.1":
+  "integrity" "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM="
+  "resolved" "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz"
+  "version" "1.0.1"
+
+"uuid-pure@*":
+  "integrity" "sha1-cvIxtZz2w69en2unuWOpGG0Qm10="
+  "resolved" "https://registry.npmjs.org/uuid-pure/-/uuid-pure-1.0.10.tgz"
+  "version" "1.0.10"
+
+"uuid@^3.0.1":
+  "integrity" "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA=="
+  "resolved" "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz"
+  "version" "3.3.2"
+
+"vary@^1", "vary@~1.1.2":
+  "integrity" "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw="
+  "resolved" "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz"
+  "version" "1.1.2"
+
+"vary@~1.0.0":
+  "integrity" "sha1-meSYFWaihhGN+yuBc1ffeZM3bRA="
+  "resolved" "https://registry.npmjs.org/vary/-/vary-1.0.1.tgz"
+  "version" "1.0.1"
+
+"vary@0.1.0":
+  "integrity" "sha1-3wlFiZ6TwMxb0YzIMh2dIedPYXY="
+  "resolved" "https://registry.npmjs.org/vary/-/vary-0.1.0.tgz"
+  "version" "0.1.0"
+
+"vhost@2.0.0":
+  "integrity" "sha1-HiZ3C9D86GxAlFWR5vKExokXkeI="
+  "resolved" "https://registry.npmjs.org/vhost/-/vhost-2.0.0.tgz"
+  "version" "2.0.0"
+
+"vm-browserify@0.0.4":
+  "integrity" "sha1-XX6kW7755Kb/ZflUOOCofDV9WnM="
+  "resolved" "https://registry.npmjs.org/vm-browserify/-/vm-browserify-0.0.4.tgz"
+  "version" "0.0.4"
+  dependencies:
+    "indexof" "0.0.1"
+
+"voc@":
+  "integrity" "sha512-BOuDjFFYvJdZO6e/N65AlaDItXo2TgyLjeyRYcqgAPkXpp5yTJcvkL2n+syO1r9Qc5g96tfBD2tuiMhYDmaGcA=="
+  "resolved" "https://registry.npmjs.org/voc/-/voc-1.2.0.tgz"
+  "version" "1.2.0"
+
+"watchpack@^0.2.1":
+  "integrity" "sha1-Yuqkq15bo1/fwBgnVibjwPXj+ws="
+  "resolved" "https://registry.npmjs.org/watchpack/-/watchpack-0.2.9.tgz"
+  "version" "0.2.9"
+  dependencies:
+    "async" "^0.9.0"
+    "chokidar" "^1.0.0"
+    "graceful-fs" "^4.1.2"
+
+"webpack-core@~0.6.9":
+  "integrity" "sha1-/FcViMhVjad76e+23r3Fo7FyvcI="
+  "resolved" "https://registry.npmjs.org/webpack-core/-/webpack-core-0.6.9.tgz"
+  "version" "0.6.9"
+  dependencies:
+    "source-list-map" "~0.1.7"
+    "source-map" "~0.4.1"
+
+"webpack-dev-middleware@^1.10.2":
+  "integrity" "sha512-FCrqPy1yy/sN6U/SaEZcHKRXGlqU0DUaEBL45jkUYoB8foVb6wCnbIJ1HKIx+qUFTW+3JpVcCJCxZ8VATL4e+A=="
+  "resolved" "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-1.12.2.tgz"
+  "version" "1.12.2"
+  dependencies:
+    "memory-fs" "~0.4.1"
+    "mime" "^1.5.0"
+    "path-is-absolute" "^1.0.0"
+    "range-parser" "^1.0.3"
+    "time-stamp" "^2.0.0"
+
+"webpack-dev-server@^1.6.6":
+  "integrity" "sha1-DL1fLSrI1OWTqs1clwLnu9XlmJI="
+  "resolved" "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-1.16.5.tgz"
+  "version" "1.16.5"
+  dependencies:
+    "compression" "^1.5.2"
+    "connect-history-api-fallback" "^1.3.0"
+    "express" "^4.13.3"
+    "http-proxy-middleware" "~0.17.1"
+    "open" "0.0.5"
+    "optimist" "~0.6.1"
+    "serve-index" "^1.7.2"
+    "sockjs" "^0.3.15"
+    "sockjs-client" "^1.0.3"
+    "stream-cache" "~0.0.1"
+    "strip-ansi" "^3.0.0"
+    "supports-color" "^3.1.1"
+    "webpack-dev-middleware" "^1.10.2"
+
+"webpack@^1.0.0 || ^2.0.0 || ^3.0.0", "webpack@^1.4.13", "webpack@>=1.3.0 <3":
+  "integrity" "sha1-T/MfU9sDM55VFkqdRo7gMklo/pg="
+  "resolved" "https://registry.npmjs.org/webpack/-/webpack-1.15.0.tgz"
+  "version" "1.15.0"
+  dependencies:
+    "acorn" "^3.0.0"
+    "async" "^1.3.0"
+    "clone" "^1.0.2"
+    "enhanced-resolve" "~0.9.0"
+    "interpret" "^0.6.4"
+    "loader-utils" "^0.2.11"
+    "memory-fs" "~0.3.0"
+    "mkdirp" "~0.5.0"
+    "node-libs-browser" "^0.7.0"
+    "optimist" "~0.6.0"
+    "supports-color" "^3.1.0"
+    "tapable" "~0.1.8"
+    "uglify-js" "~2.7.3"
+    "watchpack" "^0.2.1"
+    "webpack-core" "~0.6.9"
+
+"websocket-driver@>=0.5.1":
+  "integrity" "sha1-DK+dLXVdk67gSdS90NP+LMoqJOs="
+  "resolved" "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.0.tgz"
+  "version" "0.7.0"
+  dependencies:
+    "http-parser-js" ">=0.4.0"
+    "websocket-extensions" ">=0.1.1"
+
+"websocket-extensions@>=0.1.1":
+  "integrity" "sha512-nqHUnMXmBzT0w570r2JpJxfiSD1IzoI+HGVdd3aZ0yNi3ngvQ4jv1dtHt5VGxfI2yj5yqImPhOK4vmIh2xMbGg=="
+  "resolved" "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.3.tgz"
+  "version" "0.1.3"
+
+"when@~3.6.x":
+  "integrity" "sha1-RztRfsFZ4rhQBUl6E5g/CVQS404="
+  "resolved" "https://registry.npmjs.org/when/-/when-3.6.4.tgz"
+  "version" "3.6.4"
+
+"window-size@0.1.0":
+  "integrity" "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0="
+  "resolved" "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz"
+  "version" "0.1.0"
+
+"wordwrap@~0.0.2":
+  "integrity" "sha1-o9XabNXAvAAI03I0u68b7WMFkQc="
+  "resolved" "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz"
+  "version" "0.0.3"
+
+"wordwrap@~1.0.0":
+  "integrity" "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus="
+  "resolved" "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz"
+  "version" "1.0.0"
+
+"wordwrap@0.0.2":
+  "integrity" "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8="
+  "resolved" "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz"
+  "version" "0.0.2"
+
+"wrappy@1":
+  "integrity" "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8="
+  "resolved" "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz"
+  "version" "1.0.2"
+
+"ws@0.4.31":
+  "integrity" "sha1-WkhJ56nM0e1aga60hHyf7fMSKSc="
+  "resolved" "https://registry.npmjs.org/ws/-/ws-0.4.31.tgz"
+  "version" "0.4.31"
+  dependencies:
+    "commander" "~0.6.1"
+    "nan" "~0.3.0"
+    "options" ">=0.0.5"
+    "tinycolor" "0.x"
+
+"xlsjs@~0.7.6":
+  "integrity" "sha1-2IdUVpqrz47qcMwjlhtGJjSklWU="
+  "resolved" "https://registry.npmjs.org/xlsjs/-/xlsjs-0.7.6.tgz"
+  "version" "0.7.6"
+  dependencies:
+    "cfb" "~0.11.0"
+    "codepage" ""
+    "commander" ""
+    "exit-on-epipe" ""
+    "ssf" "~0.8.1"
+
+"xlsx@^0.14.5":
+  "integrity" "sha512-s/5f4/mjeWREmIWZ+HtDfh/rnz51ar+dZ4LWKZU3u9VBx2zLdSIWTdXgoa52/pnZ9Oe/Vu1W1qzcKzLVe+lq4w=="
+  "resolved" "https://registry.npmjs.org/xlsx/-/xlsx-0.14.5.tgz"
+  "version" "0.14.5"
+  dependencies:
+    "adler-32" "~1.2.0"
+    "cfb" "^1.1.2"
+    "codepage" "~1.14.0"
+    "commander" "~2.17.1"
+    "crc-32" "~1.2.0"
+    "exit-on-epipe" "~1.0.1"
+    "ssf" "~0.10.2"
+
+"xlsx@~0.9.1":
+  "integrity" "sha1-WGHRHhCh+ZtvK0keLRGad3fQZuc="
+  "resolved" "https://registry.npmjs.org/xlsx/-/xlsx-0.9.13.tgz"
+  "version" "0.9.13"
+  dependencies:
+    "adler-32" "~1.0.0"
+    "cfb" "~0.11.1"
+    "codepage" "~1.8.0"
+    "commander" "~2.9.0"
+    "crc-32" "~1.0.2"
+    "exit-on-epipe" "~1.0.0"
+    "ssf" "~0.9.1"
 
 "xmlhttprequest@https://github.com/LearnBoost/node-XMLHttpRequest/archive/0f36d0b5ebc03d85f860d42a64ae9791e1daa433.tar.gz":
-  version "1.5.0"
-  resolved "https://github.com/LearnBoost/node-XMLHttpRequest/archive/0f36d0b5ebc03d85f860d42a64ae9791e1daa433.tar.gz#0f5d53139bb6b763ef5ca92565262b9f9b2087b9"
-
-xoauth2@*:
-  version "1.2.0"
-  resolved "https://registry.yarnpkg.com/xoauth2/-/xoauth2-1.2.0.tgz#f2eefac11472c971ea3bc46e554eb4b1232146e5"
-
-xtend@^4.0.0:
-  version "4.0.1"
-  resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af"
-
-yallist@^3.0.0, yallist@^3.0.2:
-  version "3.0.2"
-  resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.0.2.tgz#8452b4bb7e83c7c188d8041c1a837c773d6d8bb9"
-
-yargs@~3.10.0:
-  version "3.10.0"
-  resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.10.0.tgz#f7ee7bd857dd7c1d2d38c0e74efbd681d1431fd1"
-  dependencies:
-    camelcase "^1.0.2"
-    cliui "^2.1.0"
-    decamelize "^1.0.0"
-    window-size "0.1.0"
-
-zappajs@0.5.x:
-  version "0.5.0"
-  resolved "https://registry.yarnpkg.com/zappajs/-/zappajs-0.5.0.tgz#1cc786d31c1559ba180f01ca3adf1e13ca02ca5c"
-  dependencies:
-    coffee-css "0.0.5"
-    coffeecup "0.3.21"
-    express "3.16.9"
-    methods "1.1.0"
-    node-uuid "1.4.1"
-    socket.io "1.0.6"
-    uglify-js "2.4.15"
+  "integrity" "sha512-TVSZwoeUQ7OKhb8jnQdSxGFz+lm4MGWmhG0deeYg85VQT74x5LcSrKeXHE0ZIzEycgqQ5mF8r8e1AykA7TpNAQ=="
+  "resolved" "https://github.com/LearnBoost/node-XMLHttpRequest/archive/0f36d0b5ebc03d85f860d42a64ae9791e1daa433.tar.gz"
+  "version" "1.5.0"
+
+"xoauth2@*":
+  "integrity" "sha1-8u76wRRyyXHqO8RuVU60sSMhRuU="
+  "resolved" "https://registry.npmjs.org/xoauth2/-/xoauth2-1.2.0.tgz"
+  "version" "1.2.0"
+
+"xtend@^4.0.0":
+  "integrity" "sha1-pcbVMr5lbiPbgg77lDofBJmNY68="
+  "resolved" "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz"
+  "version" "4.0.1"
+
+"yargs@~3.10.0":
+  "integrity" "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E="
+  "resolved" "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz"
+  "version" "3.10.0"
+  dependencies:
+    "camelcase" "^1.0.2"
+    "cliui" "^2.1.0"
+    "decamelize" "^1.0.0"
+    "window-size" "0.1.0"
+
+"zappajs@0.5.x":
+  "integrity" "sha1-HMeG0xwVWboYDwHKOt8eE8oCylw="
+  "resolved" "https://registry.npmjs.org/zappajs/-/zappajs-0.5.0.tgz"
+  "version" "0.5.0"
+  dependencies:
+    "coffee-css" "0.0.5"
+    "coffeecup" "0.3.21"
+    "express" "3.16.9"
+    "methods" "1.1.0"
+    "node-uuid" "1.4.1"
+    "socket.io" "1.0.6"
+    "uglify-js" "2.4.15"